Как исправить неравномерное освещение в изображениях с помощью MATLAB?
Я выполняю обнаружение функций в видео с помощью MATLAB. Условия освещения различаются в разных частях видео, что приводит к игнорированию некоторых частей при преобразовании изображений RGB в двоичные изображения.
состояние освещения в определенной части видео также изменяется в течение видео.
можете ли вы предложить лучший метод в MATLAB, чтобы сбалансировать освещение по кадру и видео?
3 ответов
У вас есть два варианта, в зависимости от того, какие функции вы хотите обнаружить и что вы хотите сделать с видео.
- игнорируйте освещение изображений, потому что (как вы заключили) это содержит бесполезную или даже вводящую в заблуждение информацию для вашего обнаружения функции.
- попробуйте восстановить неравномерность освещения (что вы просите).
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).
гистограмма выравнивание будет иметь аналогичный эффект "стандартизации" уровней интенсивности.
к сожалению, большие изменения сцены повлияют на этот процесс таким образом, что интенсивности фона не остаются постоянными, как вы ожидаете их.