Li-Chongyi/MMLE_code: MMLE_Code_TIP2022
引言
文章提出了一种基于最小颜色损失及局部自适应对比度增强(MLLE)实现水下图像增强的方法,单幅图像的处理过程根据下图可以分为局部自适应颜色校正及局部自适应对比度增强两个过程,下面是对这两个过程的一些理解。
局部自适应颜色校正
水下图片呈现蓝色或绿色,是由于水介质对光的吸收造成的,为获得高能见度的水下图片(为了实现水下图片的复原),应该对水下图片进行颜色校正。这篇文章提出了一种局部自适应颜色校正(LACC)的方法,主要包括两部分,其一是根据最小颜色损失原则获得颜色转移图像,其二是通过最大衰减图像(映射)引导融合得到颜色校正图像,实现对颜色和细节的局部调整。
最小颜色损失原则
- 首先是对r、g、b三个通道根据其平均像素值的大小重新定义为L、M、S通道。根据水下颜色失真图像的特性,必有一个通道颜色衰减较另外两个颜色通道严重,因此,重新定义三个颜色通道,构建衰减强弱通道之间的颜色损失,构建颜色补偿。
image = imread("underwater.png");
image = double(image)/255;
image_r = image(:, :, 1);
image_g = image(:, :, 2);
image_b = image(:, :, 3);
% figure('Name','原通道的三个通道')
% subplot(1,3,1), imshow(image_r), title("red channel");
% subplot(1,3,2), imshow(image_g), title("green channel");
% subplot(1,3,3), imshow(image_b), title("blue channel");
%% 根据三个通道平均值的大小重新定义
% 计算每个通道的平均灰度值
red_mean = mean(image(:,:,1), 'all');
green_mean = mean(image(:,:,2), 'all');
blue_mean = mean(image(:,:,3), 'all');
% 使用平均灰度值升序排序通道并定义新通道
sorted_means = sort([red_mean, green_mean, blue_mean]);
if red_mean == sorted_means(1)
S_Channel = image(:,:,1);
fprintf('S 通道对应原始图像的 Red 通道\n');
elseif red_mean == sorted_means(2)
M_Channel = image(:,:,1);
fprintf('M 通道对应原始图像的 Red 通道\n');
else
L_Channel = image(:,:,1);
fprintf('L 通道对应原始图像的 Red 通道\n');
end
if green_mean == sorted_means(1)
S_Channel = image(:,:,2);
fprintf('S 通道对应原始图像的 Green 通道\n');
elseif green_mean == sorted_means(2)
M_Channel = image(:,:,2);
fprintf('M 通道对应原始图像的 Green 通道\n');
else
L_Channel = image(:,:,2);
fprintf('L 通道对应原始图像的 Green 通道\n');
end
if blue_mean == sorted_means(1)
S_Channel = image(:,:,3);
fprintf('S 通道对应原始图像的 Blue 通道\n');
elseif blue_mean == sorted_means(2)
M_Channel = image(:,:,3);
fprintf('M 通道对应原始图像的 Blue 通道\n');
else
L_Channel = image(:,:,3);
fprintf('L 通道对应原始图像的 Blue 通道\n');
end
figure('Name','重新定义的三个通道')
subplot(131), imshow(L_Channel), title('L Channel');
subplot(132), imshow(M_Channel), title('M Channel');
subplot(133), imshow(S_Channel), title('S Channel');
- 灰色世界假说:三通道在衰减之前具有相同的像素均值,且颜色补偿应与衰减通道及参考通道之间正相关。
- 根据灰色世界假说,重新定义的L、M、S三个颜色通道之间的总颜色损失为:
即总颜色损失由三个通道的平均像素值决定。
- 颜色损失也限制了自适应颜色补偿。使用一个简单的线性传输来增加大均值通道的动态范围(L Channel),L通道的颜色校正如以下公式所示。对于这段话,我认为是将
及
分别设置为255和0,
、
及
分别表示L通道、L通道像素的最小值、L通道像素的最大值。然而原文提到
及
表示输入图像像素值的最大值和最小值(是L、M、S三个通道最大值和最小值?我的结果也是0和255),所以这里不是很理解。我是按照L通道的最大值和最小值来操作的。
- 由于另外两个颜色通道的衰减较L通道更为严重,因此这两个通道的颜色补偿通过以下两个公式来实现:
- 为满足灰色世界每个颜色通道的均值和直方图分布相似的原来,让颜色校正后的图像更为自然,对公式5、6进行迭代,直到三个通道满足最小颜色衰减。
- 结合公式4、5、6、7,得到颜色补偿的颜色转移图像。