Комментарии 11
всё-таки, для алгоритмов обработки изображений очень наглядно рисовать «тепловую карту» после предварительной обработки, чтобы визуально было видно о чем идёт речь
Какова роль оператора Собеля? Для чего он здесь? На бинаризацию он не влияет, для Канни он тем более не нужен.
И еще, почему бы не использовать адаптивную бинаризацию вместо древнего Оцу? Результат обычно намного лучше.
И еще, почему бы не использовать адаптивную бинаризацию вместо древнего Оцу? Результат обычно намного лучше.
А, я наконец-то понял. Вы реализуете Канни вручную, а внутри него применяется оператор Собела.
Просто в графичсеких библиотеках Канни обычно уже реализован, и применять Собела для него не нужно.
Просто в графичсеких библиотеках Канни обычно уже реализован, и применять Собела для него не нужно.
Да, всё верно…
Да, в OpenCV, к примеру, библиотека это проделывает в cvCanny с параметрами, всё верно =)
Да, в OpenCV, к примеру, библиотека это проделывает в cvCanny с параметрами, всё верно =)
Немного критики:
Во-первых. Методы на основе хааровских фильтров предназначены для полутонового изображения. Их применение к смешанным полутоново-контурным изображениям — не оправдано. Почему? Потому что они на самом деле более чувствительны, чем детектор Канни. Например — плавный градиент хорошо детектируется Хааром, но совсем не детектируется Канни. Значит, обнаружение плавных переходов будет только ухудшаться в вашем методе.
Далее. Что именно вы пытаетесь улучшить, введя границы в полутоновое изображение? Допустим, в некторой области изображения проходит граница. Детектор хаара ее обнаружит (допустим, даст отклик d=10). Обрабатывая изображение с вычтенным контуром, детектор ее тоже обнаружит (допустим будет d=20). Да, абсолютное значение детектора будет выше, но что это дает? Вы с успехом можете умножать d на два и результат будет точно такой как с полутоново-конутрным изображением. Я что пытаюсь сказать — если граница есть, хаар ее обнаружит в любом случае. То, что вы делаете просто увеличивает дисперсию отклика детектора. Но эту дисперсию можно увеличить просто увеличив контрастность изображения, к примеру. Результат будет тот же (только без артефактов, как в вашем методе, см ниже).
И еще, ваши манипуляции могут ухудшить работу фильтров:
Второе. Смешивание полутонового и наращенного контурного изображений порождает артефакты. Пример:
Да и еще, почему вы именно вычитаете Канни из полутоновго, а не прибавляете, к примеру? Получается эти контуры не будут видны на темном изображении. Из черного вы будете вычитать белое, и что? Получится все равно черное. А как же быть с неграми?
В-третьих — введение новых примитивов в метод Виолы-Джонса — не окажет особого влияния на его эффективность. Почему? Потому что фильтры Хаара берутся не с потолка. Фильтры Хаара образуют полный ортогональный базис (вейвлетный базис). Это значит что любые другие примитивы могут быть расписаны через базовые. А значит введение новых примитивов — ну может немного увеличит быстродействие, но на качество распознавания особого влияния не окажет.
Да и вообще, применение Хаара для распознавния микроэмоций — слишком грубый метод, как на мой взгляд. Вы же сами писали статью про рынок программ распознавания эмоций. Разве там применяется Виола-Джонс? Этот метод хорош только для поиска самого лица. Для микроэмоций — нет.
Ну и в-четвертых, статья лишком сумбурно написана. Я до сих пор не могу толком понять о чем она. То ли вы описываете как работает детектор Канни, то ли пытаетесь усовершенствовать Виолу-Джонса. Цели ваших действий нечетко описаны. В выводах вы пишете «С помощью таких апгрейдов возможно теоретическое улучшение метода.» Так где эта теория, подтверждающая, что ваш метод действительно лучше классического Виолы-Джонса? Теория как раз говорит об обратном. Если вы на практике докажете что этот метод лучше — ура, мы порадуемся вместе, если нет — ну отрицательный результат тоже результат :)
Не принимайте близко к сердцу, вы молодец что работаете в этом направлении, успехов :)
Во-первых. Методы на основе хааровских фильтров предназначены для полутонового изображения. Их применение к смешанным полутоново-контурным изображениям — не оправдано. Почему? Потому что они на самом деле более чувствительны, чем детектор Канни. Например — плавный градиент хорошо детектируется Хааром, но совсем не детектируется Канни. Значит, обнаружение плавных переходов будет только ухудшаться в вашем методе.
Далее. Что именно вы пытаетесь улучшить, введя границы в полутоновое изображение? Допустим, в некторой области изображения проходит граница. Детектор хаара ее обнаружит (допустим, даст отклик d=10). Обрабатывая изображение с вычтенным контуром, детектор ее тоже обнаружит (допустим будет d=20). Да, абсолютное значение детектора будет выше, но что это дает? Вы с успехом можете умножать d на два и результат будет точно такой как с полутоново-конутрным изображением. Я что пытаюсь сказать — если граница есть, хаар ее обнаружит в любом случае. То, что вы делаете просто увеличивает дисперсию отклика детектора. Но эту дисперсию можно увеличить просто увеличив контрастность изображения, к примеру. Результат будет тот же (только без артефактов, как в вашем методе, см ниже).
И еще, ваши манипуляции могут ухудшить работу фильтров:
Второе. Смешивание полутонового и наращенного контурного изображений порождает артефакты. Пример:
Да и еще, почему вы именно вычитаете Канни из полутоновго, а не прибавляете, к примеру? Получается эти контуры не будут видны на темном изображении. Из черного вы будете вычитать белое, и что? Получится все равно черное. А как же быть с неграми?
В-третьих — введение новых примитивов в метод Виолы-Джонса — не окажет особого влияния на его эффективность. Почему? Потому что фильтры Хаара берутся не с потолка. Фильтры Хаара образуют полный ортогональный базис (вейвлетный базис). Это значит что любые другие примитивы могут быть расписаны через базовые. А значит введение новых примитивов — ну может немного увеличит быстродействие, но на качество распознавания особого влияния не окажет.
Да и вообще, применение Хаара для распознавния микроэмоций — слишком грубый метод, как на мой взгляд. Вы же сами писали статью про рынок программ распознавания эмоций. Разве там применяется Виола-Джонс? Этот метод хорош только для поиска самого лица. Для микроэмоций — нет.
Ну и в-четвертых, статья лишком сумбурно написана. Я до сих пор не могу толком понять о чем она. То ли вы описываете как работает детектор Канни, то ли пытаетесь усовершенствовать Виолу-Джонса. Цели ваших действий нечетко описаны. В выводах вы пишете «С помощью таких апгрейдов возможно теоретическое улучшение метода.» Так где эта теория, подтверждающая, что ваш метод действительно лучше классического Виолы-Джонса? Теория как раз говорит об обратном. Если вы на практике докажете что этот метод лучше — ура, мы порадуемся вместе, если нет — ну отрицательный результат тоже результат :)
Не принимайте близко к сердцу, вы молодец что работаете в этом направлении, успехов :)
Сейчас спустя большое количество времени скажите, -удалось ли это реализовать? Мне очень интересна реализация определения градуса поворота лица по отношению к камере.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Upgrade Viola Jones