Как исправить неравномерное освещение на изображениях с помощью MATLAB? - PullRequest
6 голосов
/ 15 февраля 2012

Я выполняю определение функции в видео с помощью MATLAB.Условия освещения варьируются в разных частях видео, что приводит к тому, что некоторые части игнорируются при преобразовании изображений RGB в двоичные изображения.

Состояние освещения в определенной части видео также изменяется в течение видео.

Можете ли вы предложить лучший метод в MATLAB, чтобы сбалансировать освещение по кадру и видео?

Ответы [ 3 ]

7 голосов
/ 16 февраля 2012

У вас есть два варианта, в зависимости от того, какие функции вы хотите обнаружить и что вы хотите сделать с видео.

  1. Игнорировать освещение изображений, потому что (как вы пришли к выводу) это содержитбесполезная или даже вводящая в заблуждение информация для обнаружения вашей функции.
  2. Попробуйте исправить неравномерность освещения (именно это вы и просите).

1) Это довольно легко сделать: преобразоватьизображение в цветовом пространстве , которое выделяет освещение в отдельном канале, например: HSV (игнорировать канал V) Lab (игнорировать L) YUV (игнорируйте Y) и выполните обнаружение функции на двух оставшихся каналах.Из них HSV является лучшим (как отметил Ив Дауст в комментариях), YUV и Lab оставляют некоторую информацию о освещении в каналах UV / ab.По моему опыту последние два также работают в зависимости от вашей ситуации, но HSV лучше.

2) Сложнее.Я бы начал с преобразования изображения в HSV.Затем вы делаете репарацию только для V-канала:

  • Примените Гауссово размытие к изображению V-канала с очень большим значением сигма.Это дает вам местное среднее значение для освещения.Вычислить среднее значение V для этого изображения (это одно число).Затем вычтите локальное среднее значение из фактического значения V для каждого пикселя и добавьте глобальное среднее.Вы сейчас сделали очень грубое выравнивание освещения.Вы можете немного поиграться со значением для sigma, чтобы найти значение, которое работает лучше всего.
  • Если это не удастся, посмотрите параметры , которые дает zenopy в своем ответе.

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

5 голосов
/ 16 февраля 2012

Помимо неравномерности освещения на отдельных изображениях, которая решается с помощью Retinex или высокочастотной фильтрации, вы можете подумать об автоматической коррекции усиления по видео.

Идея состоит в том, чтобы нормализовать интенсивность изображения, применяя линейное преобразование к цветовым компонентам таким образом, чтобы среднее и стандартное отклонения всех трех каналов объединялись в предопределенные значения (среднее -> 128, стандартное отклонение -> 64). ).

Уравнивание гистограммы будет иметь аналогичный эффект "стандартизации" уровней интенсивности.

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

5 голосов
/ 15 февраля 2012

Это не тривиальная задача , но есть много способов ее преодолеть.Я могу порекомендовать вам начать с реализации алгоритма retinex или использовать реализацию других: http://www.cs.sfu.ca/~colour/publications/IST-2000/.

Основная идея заключается в том, что яркость (наблюдаемая интенсивность изображения) = освещенность (падающий свет)свет) x Коэффициент отражения (в процентах отраженного):

L(x,y) = I(x,y) x R(x,y) 

И вас интересует часть R.

Для работы с цветными изображениями для каждого кадра сначала перейдите в цветовое пространство hsv и используйтеretinex в части v (значение).

Надеюсь, что это имеет смысл.

...