【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)

简介: 【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文内容如下:🎁🎁🎁

⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

    或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

本文提出了一种替代性方法,用于增强水下视频和图像。该策略基于融合原理,仅需单张原始图像,无需任何额外信息。实验表明,本方法能够以高精度增强各类水下图像(涵盖不同相机、深度与光照条件),有效恢复重要但已褪色的特征与边缘。此外,我们首次证实了所提出的图像增强技术在多项具有挑战性的水下计算机视觉应用中的实用性与价值。

image.gif 编辑

摘要

我们提出了一种有效技术,用于增强因水体散射和吸收而退化的水下图像。该方法仅需单张图像,无需专用硬件或水下环境/场景结构先验知识。其核心思想是:将一张经过颜色补偿和白平衡处理的原始退化图像,生成两幅衍生图像并进行融合。融合输入及其对应权重图的设计,旨在最大程度地保留边缘和颜色对比度。为避免锐利权重图过渡在重建图像低频分量中产生伪影,我们进一步采用多尺度融合策略。大量定性与定量评估表明,增强后的图像与视频具有更优的暗区曝光、全局对比度及边缘锐度。验证实验还证实,本算法对相机设置具有良好鲁棒性,并能提升图像分割、关键点匹配等多种后续视觉任务的精度。

关键词——水下,图像融合,白平衡。

I. 引言与概述  

水下环境拥有诸多独特景观:海洋生物、绚丽地貌、神秘沉船……除水下摄影外,水下成像在技术与科研领域亦至关重要,如基础设施与线缆检测、人造物探测、水下机器人控制、海洋生物学及考古学等。

与普通图像不同,水下图像因光在水体中的吸收与散射而可见度极低:吸收显著削弱光能,散射改变光传播方向,导致图像雾蒙蒙、对比度下降,远处物体模糊不清。典型海水中,距离超过10 m的物体几乎不可辨,且颜色因不同波长被水层选择性吸收而褪色。

已有多项工作尝试恢复并增强此类退化图像。由于水下退化兼具乘性与加性过程,传统伽马校正、直方图均衡等方法效果有限。早期研究多借助多帧图像、专用硬件或偏振滤镜,虽取得一定成果,却受限于复杂采集条件,实用性不足。

本文提出一种基于单张常规相机拍摄图像的去雾新方法。如图1所示,我们对输入图像先做白平衡,再生成两幅对比度与锐度不同的版本,最后通过多尺度融合得到无伪影的增强结果。白平衡阶段旨在消除水下散射导致的色偏,使图像呈现自然外观。

下文首先回顾水下光学特性及现有去雾工作;第III节提出专为水下图像设计的新型白平衡算法;第IV节详述融合增强框架,包括输入图像与权重图的定义;最后通过定性与定量实验,验证本方法在图像分割、特征匹配等任务中的有效性。

详细文章第4部分下载。

📚2 运行结果

image.gif 编辑

image.gif 编辑

image.gif 编辑

自行切换自己图片,全部运行结果如下:

image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑

部分代码:
% blue channel recover
% In murky waters or high water levels or the presence of plankton in abundance that causes the blue channel to attenuate strongly,Supplement the blue channel
% im1 = blueCompensate(im1);
% subplot(2,3,3)
% imshow(im1);
% xlabel('blue channel compensate')
% white balance enhancement
im2 = simple_color_balance(im1);
subplot(2,2,2)
imshow(im2);
xlabel('white balance');
% gamma correction
input1 = gammaCorrection(im2,1,1.2);
subplot(2,2,3)
imshow(input1);
xlabel('gamma correction');
% sharpen
input2 = sharp(im2);
subplot(2,2,4)
imshow(input2);
xlabel('sharp');
%.................................................%
% calculate weight
%.................................................%
lab1 = rgb_to_lab(input1);
lab2 = rgb_to_lab(input2);
R1 = double(lab1(:, :, 1)/255);
R2 = double(lab2(:, :, 1)/255);
% 1. Laplacian contrast weight (Laplacian filiter on input luminance channel)
WL1 = abs(imfilter(R1, fspecial('Laplacian'), 'replicate', 'conv')); 
WL2 = abs(imfilter(R2, fspecial('Laplacian'), 'replicate', 'conv')); 
% 2. Saliency weight
WS1 = saliency_detection(input1);
WS2 = saliency_detection(input2);
% 3. Saturation weight
WSat1 = Saturation_weight(input1);
WSat2 = Saturation_weight(input2);
% normalized weight
[W1, W2] = norm_weight(WL1, WS1, WSat1, WL2 , WS2, WSat2);
%.................................................%
% image fusion
% R(x,y) = sum G{W} * L{I}
%.................................................%
level = 3;
% weight gaussian pyramid
Weight1 = gaussian_pyramid(W1, level);
Weight2 = gaussian_pyramid(W2, level);
% image laplacian pyramid
% input1
r1 = laplacian_pyramid(double(double(input1(:, :, 1))), level);
g1 = laplacian_pyramid(double(double(input1(:, :, 2))), level);
b1 = laplacian_pyramid(double(double(input1(:, :, 3))), level);
% input2
r2 = laplacian_pyramid(double(double(input2(:, :, 1))), level);
g2 = laplacian_pyramid(double(double(input2(:, :, 2))), level);
b2 = laplacian_pyramid(double(double(input2(:, :, 3))), level);
% fusion
for i = 1 : level
    R_r{i} = Weight1{i} .* r1{i} + Weight2{i} .* r2{i};
    G_g{i} = Weight1{i} .* g1{i} + Weight2{i} .* g2{i};
    B_b{i} = Weight1{i} .* b1{i} + Weight2{i} .* b2{i};
end
% pyramin reconstruct
R = pyramid_reconstruct(R_r);
G = pyramid_reconstruct(G_g);
B = pyramid_reconstruct(B_b);
fusion = cat(3, R,G,B);
uiqm = UIQM(fusion)
uciqe = UCIQE(fusion)
figure,imshow(fusion),title("fusion image");

image.gif

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准

相关文章
|
2月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
112 0
|
2月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
142 8
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
210 0
|
2月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
107 0
|
2月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
144 8
|
2月前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
|
2月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
156 8
|
2月前
|
编解码 运维 算法
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
154 12
|
2月前
|
人工智能 数据可视化 网络性能优化
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
106 9
|
2月前
|
机器学习/深度学习 供应链 算法
【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)
【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)

热门文章

最新文章