Улучшение малосветного изображения

Изображения, захваченные в наружных сценах, могут сильно ухудшиться из-за плохих условий подсветки. Эти изображения могут иметь низкие динамические области значений с высокими уровнями шума, которые влияют на общую эффективность алгоритмов компьютерного зрения. Чтобы сделать алгоритмы компьютерного зрения устойчивыми в условиях низкого освещения, используйте улучшение малой освещенности изображения, чтобы улучшить видимость изображения. Гистограмма пиксельной инверсии малосветных изображений или HDR-изображений очень похожа на гистограмму туманных изображений. Таким образом, можно использовать методы удаления дымки для улучшения малосветных изображений.

Использование методов удаления дымки для улучшения малосветных изображений включает три этапа:

  • Шаг 1: Инвертируйте изображение с низким светом.

  • Шаг 2: Примените алгоритм удаления дымки к инвертированному малосветному изображению.

  • Шаг 3: Инвертировать улучшенное изображение.

Улучшите низкое освещение изображения с помощью алгоритма обезвреживания

Импорт изображения RGB, полученного при плохом освещении.

A = imread('lowlight_11.jpg');
figure, imshow(A);

Figure contains an axes. The axes contains an object of type image.

Инвертируйте изображение и заметьте, как слабые световые области в оригинальное изображение кажутся туманными.

AInv = imcomplement(A);
figure, imshow(AInv);

Figure contains an axes. The axes contains an object of type image.

Уменьшите дымку, используя imreducehaze функция.

BInv = imreducehaze(AInv);
figure, imshow(BInv);

Figure contains an axes. The axes contains an object of type image.

Инвертируйте результаты, чтобы получить улучшенное изображение.

B = imcomplement(BInv);

Отобразите оригинальное изображение и улучшенные изображения один за другим.

figure, montage({A, B});

Figure contains an axes. The axes contains an object of type image.

Улучшите результаты далее используя imreducehaze Необязательные параметры

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

BInv = imreducehaze(AInv, 'Method','approx','ContrastEnhancement','boost');
BImp = imcomplement(BInv);
figure, montage({A, BImp});

Figure contains an axes. The axes contains an object of type image.

Другой пример улучшения плохо освещенного изображения

Импорт изображения RGB, полученного при плохом освещении.

A = imread('lowlight_21.jpg');

Инвертируйте изображение.

AInv = imcomplement(A);

Примените алгоритм обезвреживания.

BInv = imreducehaze(AInv, 'ContrastEnhancement', 'none');

Инвертируйте результаты.

B = imcomplement(BInv);

Отобразите оригинальное изображение и улучшенные изображения один за другим.

figure, montage({A, B});

Figure contains an axes. The axes contains an object of type image.

Уменьшите искажение цвета при помощи другого цветового пространства

Преобразуйте входное изображение из пространства цветов RGB в пространство цветов L * a * b *.

Lab = rgb2lab(A);

Инвертируйте изображение L * a * b *.

LInv = imcomplement(Lab(:,:,1) ./ 100);

Обезвредите инвертированное изображение с помощью imreducehaze функция.

LEnh = imcomplement(imreducehaze(LInv,'ContrastEnhancement','none'));

Увеличьте насыщение.

LabEnh(:,:,1)   = LEnh .* 100;
LabEnh(:,:,2:3) = Lab(:,:,2:3) * 2; % Increase saturation

Преобразуйте изображение назад в изображение RGB и отобразите оригинальное и улучшенное изображение один за другим.

AEnh = lab2rgb(LabEnh);
figure, montage({A, AEnh});

Figure contains an axes. The axes contains an object of type image.

Улучшите результаты, используя шумоподавление

Световые изображения могут иметь высокий уровень шума. Улучшение малосветных изображений может увеличить этот уровень шума. Шумоподавление может быть полезным шагом после обработки.

Используйте imguidedfilter функция для удаления шума из улучшенного изображения.

B = imguidedfilter(BImp);
figure, montage({BImp, B});

Figure contains an axes. The axes contains an object of type image.

Расчетная карта освещения

Импорт изображения RGB, полученного при плохом освещении.

A = imread('lowlight_21.jpg');

Инвертируйте изображение.

AInv = imcomplement(A);

Примените алгоритм обезвреживания к изображению.

[BInv, TInv] = imreducehaze(AInv, 'Method', 'approxdcp', 'ContrastEnhancement', 'none');

Инвертируйте улучшенное изображение.

T = imcomplement(TInv);

Отобразите оригинальное изображение рядом с предполагаемой картой освещения в ложном цвете.

figure,
subplot(1,2,1);
imshow(A), title('Lowlight Image');
subplot(1,2,2);
imshow(T), title('Illumination Map');
colormap(gca, hot(256));

Figure contains 2 axes. Axes 1 with title Lowlight Image contains an object of type image. Axes 2 with title Illumination Map contains an object of type image.

Ограничения

Этот метод может потерять некоторые детали или получить чрезмерное улучшение из-за плохой адаптивности темного канала в условиях низкого освещения.

Ссылки

Dong, Xuan, et al. «Быстрый эффективный алгоритм улучшения видео с низкой подсветкой». Мультимедиа и Экспо (ICME), 2011 IEEE International Conference on. IEEE, 2011.

Ссылки

[1] Dong, X., G. Wang, Y. Pang, W. Li, J. Wen, W. Meng, and Y. Lu. «Быстрый эффективный алгоритм улучшения видео с низкой подсветкой». Материалы IEEE® Международная конференция по мультимедиа и экспо (ICME). 2011, стр 1–6.

См. также

| | | |

Для просмотра документации необходимо авторизоваться на сайте