【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)

简介: 【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)

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

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

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

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

⛳️赠与读者

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

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

💥1 概述

基于波长补偿与去雾的水下图像增强

在海洋工程中,获取清晰的水下图像是一个关键问题。水下图像的质量在监测海洋生物、种群普查以及评估地质或生物环境等科研任务中起着决定性作用。由于光线在水面反射后被水中微粒偏转和散射,产生雾效应,同时不同波长的光在水中的衰减程度不同,导致色彩变化,因此水下成像极具挑战性。光散射与色彩变化共同造成所获图像对比度下降和颜色失真。

引言  

在海洋工程中,获取清晰的水下图像是一个重要课题[1]、[2]。水下图像的质量在监测海洋生物、种群普查以及评估地质或生物环境等科研任务中起着关键作用。水下成像面临诸多挑战,主要源于两方面:一是光线在水面反射后被水中微粒偏转和散射,形成雾效应;二是不同波长的光在水中衰减程度不同,导致色彩变化[3]–[5]。光散射与色彩变化共同造成所获图像对比度下降和颜色失真。例如,在图1中,鲹鱼群、潜水员及后方礁石的雾感由光散射引起;而底部棕色珊瑚礁呈现蓝色调、右上角黄色鱼类变色,则归因于色彩变化。

image.gif 编辑

图1. 自然光从空气进入水下某场景点。被反射的光线传播距离 后到达相机。相机感知到的辐射亮度由两部分组成:多重散射形成的背景光,以及反射光的直接透射分量。

image.gif 编辑

图3. 不同波长的光在水中以不同速率衰减。蓝光因其波长最短,可在水中传播最远,因此水下图像往往以蓝色为主。

雾效应由湖泊、海洋和河流中悬浮的砂粒、矿物质和浮游生物等微粒引起。当物体反射的光线向相机传播时,部分光线会遇到这些悬浮颗粒,从而被吸收和散射,如图1所示。在没有黑体辐射的情况下[6],传播过程中的多重散射会将光束进一步分散成均匀的背景光。

传统的水下图像处理仅单独补偿光散射或色彩变化失真。针对光散射的去雾技术包括:利用偏振效应改善可见度[7]、采用图像去雾算法恢复水下图像清晰度[8],以及结合点扩散函数与调制传递函数减少模糊[9]。尽管上述方法可提升场景对比度和可见度,但由波长衰减差异引起的色彩变化失真仍未解决。

另一方面,色彩校正技术通过考虑光衰减进行颜色配准以估计水下环境参数[10]、在RGB和HSI色彩空间同时采用直方图均衡以平衡颜色亮度分布[11],或利用可控多色光源按距离动态混合照明来补偿色彩损失[12]。尽管颜色平衡有所改善,这些方法对光散射导致的图像模糊无能为力。因此,需要一种系统化方法,综合考虑光散射、色彩变化及可能存在的人工光源。

本文提出的波长补偿与图像去雾(WCID)算法,联合去除光散射和色彩变化引起的失真。首先采用现有场景深度推导方法——暗通道先验[13],估计场景物体到相机的距离。暗通道中的低强度主要源于:1)阴影,如海底生物、浮游生物、植物或岩石的阴影;2)彩色物体或表面,如绿色植物、红黄沙粒及彩色岩石/矿物,在某些颜色通道上缺失;3)深色物体或表面,如深色生物和石头[8]。基于所得深度图,将图像分割为前景与背景区域,通过比较二者亮度判断拍摄时是否使用人工光源。若检测到人工照明,则从前景区域剔除辅助照明引入的亮度,避免后续过度补偿。接着,利用去雾算法与波长补偿去除沿水下传播路径产生的雾效应与色彩变化。借助背景光中不同颜色通道的残余能量比,估计水下场景的水深,随后对各颜色通道进行能量补偿,将偏蓝色调调整为自然色彩。采用WCID后,无需昂贵光学设备或立体图像对,即可有效提升水下图像的可见度并恢复色彩平衡,获得高视觉清晰度与色彩保真度。

水下模型  

所提WCID算法沿与上述水下成像路径相反的方向处理,如图3所示。首先考虑可能存在的人工光源及其影响;其次去除从物体到相机传播过程中产生的光散射与色彩变化;最后补偿因穿越水深到达图像顶部而产生的波长衰减差异,并通过推导图像中每点的精确深度值来微调能量损失。

image.gif 编辑

结论:  

本文提出的WCID算法能够有效恢复图像色彩平衡并去除雾效应。据我们所知,现有技术尚无法同时处理水下图像所受的光散射与色彩变化失真。实验结果表明,WCID在去雾和色彩平衡方面优于传统去雾及直方图均衡方法。然而,海水的盐度与悬浮颗粒含量随时间、地点和季节变化,使得光能损耗率的精确测量变得困难。该损耗率的误差将影响水深及水下传播距离的计算精度。若能持续监测并长期记录不同时间、地点和季节下的光能损耗率,可获得较为合理的估计值。此外,潜水员可在拍摄前先行校准:在已知水深与传播距离处拍摄测试图像,以微调光能损耗率。

同时,本文假设人工光源为点光源,并在所有波长上均匀发射全向光束;而实际水下摄影中常见的却是具有强方向性和非均匀色彩特性的线光源或面光源,因此精确估计光源的亮度分布亦颇具挑战。若能预先获取拍摄地理位置及所用光源的特性,去雾与色彩平衡效果可进一步提升。另一误差来源为利用暗通道先验估算场景深度时,如单张图像深度估计常见的问题:前景中较大且光亮的白色区域可能被误判为远处景物。

📚2 运行结果

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

部分代码:

% Inputs that are derrived from the Hazy image
firstInput = whiteBalance( im );
figure;subplot(1,2,1);imshow(firstInput);title('First Input');
secondInput = enhanceContrast( im );
subplot(1,2,2);imshow(secondInput);title('Second Input');
%Weight maps of the First Input
luminanceWeightmap1 = luminanceWeightmap(firstInput);
figure;subplot(1,3,1);imshow(luminanceWeightmap1);title('luminanceWeightmap of First input');
chromaticWeightmap1 = chromaticWeightmap(firstInput);
subplot(1,3,2);imshow(chromaticWeightmap1);title('chromaticWeightmap of First input');
saliencyWeightmap1 = saliencyWeightmap(firstInput);
subplot(1,3,3);imshow(saliencyWeightmap1);title('saliencyWeightmap of First input');
%Resultant Weight map of the first input
resultedWeightmap1 = luminanceWeightmap1 .* chromaticWeightmap1 .* saliencyWeightmap1 ;
%Weightmaps of the Second Input
luminanceWeightmap2 = luminanceWeightmap(secondInput);
figure;subplot(1,3,1);imshow(luminanceWeightmap2);title('luminanceWeightmap of Second input');
chromaticWeightmap2 = chromaticWeightmap(secondInput);
subplot(1,3,2);imshow(chromaticWeightmap2);title('chromaticWeightmap of Second input');
saliencyWeightmap2 = saliencyWeightmap(secondInput);
subplot(1,3,3);imshow(saliencyWeightmap2);title('saliencyWeightmap of Second input');
%Resultant Weight map of the second input
resultedWeightmap2 = luminanceWeightmap2 .* chromaticWeightmap2 .* saliencyWeightmap2 ;
%Normalized Weight maps of the Inputs
normaizedWeightmap1 = resultedWeightmap1 ./ (resultedWeightmap1 + resultedWeightmap2);
normaizedWeightmap2 = resultedWeightmap2 ./ (resultedWeightmap1 + resultedWeightmap2);
%Generating Gaussian Pyramid for normalized weight maps
gaussianPyramid1 = genPyr(normaizedWeightmap1,'gauss',5);
gaussianPyramid2 = genPyr(normaizedWeightmap2,'gauss',5);

image.gif

🎉3 参考文献

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

相关文章
|
2月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
|
2月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
144 8
|
2月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
142 8
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
210 0
|
2月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
107 0
|
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代码实现)

热门文章

最新文章