Как исправить неравномерное освещение в изображениях с помощью MATLAB?

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

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

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

3 ответов


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

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

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

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

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

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


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

основная идея заключается в том, что яркость (наблюдаемая интенсивность изображения) = освещенность (падающий свет) X отражение (процент отражения):

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

и вы заинтересованы в Р часть.

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

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


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

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

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

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