% 低光图像增强
% 室外场景中拍摄的图像可能由于照明条件差而严重退化
% 这些图像影响计算机视觉算法的整体性能
% 为了使计算机视觉算法在低光照条件下具有鲁棒性
% 可以使用低光图像增强来提高图像的可见性
% 低光图像或HDR图像的逐像素反转直方图与模糊图像的直方图非常相似
% 因此可以使用薄雾消除技术来增强低光图像
% 使用薄雾消除技术增强低光图像包括三个步骤:
% 步骤1:取反低光图像
% 步骤2:对取反的低光图像应用去雾算法
% 步骤3:取反增强图像
% 用薄雾消除算法增强低光图像
% 导入在低光下捕获的RGB图像。
A = imread('lowlight_11.jpg');
figure, imshow(A);
% 取反图像并注意原始图像中的低光区域是如何模糊的
AInv = imcomplement(A);
figure, imshow(AInv);
% 使用imreduceHaze功能减少雾度
BInv = imreducehaze(AInv);
figure, imshow(BInv);
% 取反结果以获得增强图像
B = imcomplement(BInv);
% 对比
figure, montage({A B}, 'Size', [2 1]);
% 使用IMreduceHaze进一步改进结果
% 要获得更好的结果
% 再次调用反转图像上的IMreduceHaze
% 这次指定一些可选参数。
BInv = imreducehaze(AInv, 'Method','approx','ContrastEnhancement','boost');
BImp = imcomplement(BInv);
figure, montage({A, BImp}, 'Size', [2 1]);
% 改善弱光图像的另一个例子
% 导入在弱光下捕获的RGB图像。
A = imread('lowlight_21.jpg');
% 取反
AInv = imcomplement(A);
% 使用imreduceHaze功能减少雾度
BInv = imreducehaze(AInv, 'ContrastEnhancement', 'none');
% 取反
B = imcomplement(BInv);
% 对比
figure, montage({A, B}, 'Size', [2 1]);
% 通过使用不同的颜色空间减少颜色失真
% 将图像从RGB颜色空间转换为LAB颜色空间。
Lab = rgb2lab(A);
% 取反
LInv = imcomplement(Lab(:,:,1) ./ 100);
% 使用imreduceHaze函数对取反图像进行去雾处理
LEnh = imcomplement(imreducehaze(LInv,'ContrastEnhancement','none'));
% 增加饱和度
LabEnh(:,:,1) = LEnh .* 100;
LabEnh(:,:,2:3) = Lab(:,:,2:3) * 2;
% 将图像转换回RGB图像
AEnh = lab2rgb(LabEnh);
% 并排显示原始图像和增强图像
figure, montage({A, AEnh}, 'Size', [2 1]);
% 使用去噪改善结果
% 低光图像可能具有高噪声级
% 增强低光图像可以提高此噪声级别
% 去噪是一个有用的后处理步骤
% 使用imguidedfilter功能从增强图像中去除噪声
B = imguidedfilter(BImp);
figure, montage({BImp, B}, 'Size', [2 1]);
相关图像文件为matlab自带实例文件