Изолировать не размытую часть изображения


10

У меня есть изображение, снятое камерой мобильного телефона с фокусировкой на части, скажем, на лице или чем-то еще. Я хочу знать, примерно, где находится сфокусированная область. Например, ограничительная рамка вокруг сфокусированной области. пример : оригинал После обнаружения

Ответы:


7

В общем, это проблема сегментации изображения ( http://en.wikipedia.org/wiki/Image_segmentation ), в которой вы пытаетесь выделить сфокусированные и не сфокусированные области изображения.

Оптические линзы в любом случае эквивалентны фильтрам нижних частот, и эффект фильтра нижних частот на сигнале состоит в том, чтобы сгладить его, ограничивая высокочастотное содержимое.

В цифровой обработке изображений низкие частоты соответствуют большим объектам (общая форма), а более высокие частоты соответствуют маленьким объектам (детали).

Поэтому, чтобы изолировать сфокусированную область, вы могли бы искать области с более высоким стандартным отклонением по сравнению с размытыми областями, которые были бы с более низким стандартным отклонением из-за операции сглаживания не в фокусе объектива.

Чтобы отличить «размытые» от «не размытых» областей, вы можете установить «окно» измерений и навести его на изображение.M×N

В каждой позиции окна вычисляют дисперсию значений «заплат», как если бы они были одномерным вектором из значений. Это приведет к другому «изображению» (или, в более общем случае, двумерному массиву), изображающему изменение стандартного отклонения в каждом месте вашего изображения. Затем вы можете собрать все эти значения и получить их гистограмму. Гистограмма будет демонстрировать мультимодальное распределение (для получения дополнительной информации см. Http://en.wikipedia.org/wiki/Multimodal_distribution ).M×N

В случае изображения в вашем посте гистограмма, скорее всего, будет демонстрировать два режима. Один соответствует относительно высоким значениям стандартного отклонения (сфокусированная область), а другой соответствует относительно низким значениям стандартного отклонения (размытые области).

Затем вы можете расположить порог, например, только между двумя режимами, чтобы установить критерий между вашими сфокусированными и не сфокусированными областями, а затем выбрать все «участки» (или области окна MxN), стандартное отклонение которых выше, чем ваш порог. (Для получения дополнительной информации см .: http://en.wikipedia.org/wiki/Thresholding_%28image_processing%29 )

Это изолирует сфокусированные части изображения для вас.

Надеюсь это поможет.


Я собираюсь сделать глубокое чтение для вашего ответа и вернуться с обратной
— связью

Большое спасибо, отличный и подробный ответ, я собираюсь поделиться реализацией, если я получил хорошие результаты, используя opencv, еще раз спасибо
— Humam Helfawi

Кстати, достаточно ли серого представителя изображения или мне нужно обработать каждый канал?
— Хумам Хельфави,

Рад, что ты нашел это полезным. Работа в оттенках серого прекрасно подойдет для различия между размытыми и сфокусированными областями, но включение дополнительной информации о цвете может помочь вам назначить более сложные области (например, отследить область лица на портрете или выделить только цветок на рисунке в Ваше сообщение).
— A_A

Вопрос был отредактирован в первоначальном виде после обсуждения по адресу: meta.dsp.stackexchange.com/questions/1337/… @ vast-acadeian. Пожалуйста, добавьте свои комментарии в качестве отдельного ответа. Основная часть была сохранена по адресу: pastebin.com/kjCC1wM6
— A_A

5

Вот более простой подход, который не включает анализ скользящих окон.

  • Преобразуйте ваше изображение в оттенки серого (это не обязательно, но я предполагаю, что у вас есть только один канал для ясности)

  • Рассчитать градиент в обоих направлениях

  • Рассчитайте величину (или просто возведите в квадрат градиент)

  • Суммируйте оба градиентных изображения в обоих направлениях

Как уже было сказано, сфокусированная часть изображения будет иметь более высокие частоты, чем не сфокусированная область. В результате суммирования вы получите две проекции, в которых много вариаций (более высоких значений) в той части, где сфокусированный объект расположен вдоль этого направления. Теперь вы можете сделать следующее:

  • Определите начальную и конечную точку этих более высоких значений. Вы можете использовать простой порог (например, 0,7 * максимум_значения) или сгладить профили, взять вторую производную и проверить, есть ли там самые высокие значения.

  • Позиции Старт / Стоп с предыдущего шага дают вам позиции пикселей в обоих направлениях, где разместить прямоугольник, указывающий область острых углов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.