基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)

简介: 基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)

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

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

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

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

⛳️赠与读者

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

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

💥1 概述

基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究

摘要

针对雾天图像可见度退化问题,本文提出一种结合导向滤波的暗通道去雾算法,适用于灰度与彩色图像的复原。通过改进暗通道先验理论,结合双边滤波与导向滤波优化透射率估计,有效解决了传统暗通道算法在景深突变区域产生的块状效应。实验结果表明,该算法在PSNR(峰值信噪比)指标上较经典DCP算法提升1.5-3.2dB,在SSIM(结构相似性)指标上提升0.08-0.15,同时显著提升了图像边缘细节保留能力。研究为低照度与雾霾环境下的图像复原提供了理论支撑与技术方案。

关键词

暗通道先验;导向滤波;图像去雾;可见度复原;景深优化

1. 引言

1.1 研究背景

雾天图像因大气散射导致对比度下降、颜色失真,严重影响计算机视觉系统(如自动驾驶、遥感监测)的性能。传统去雾方法依赖多帧图像或硬件辅助,而单幅图像去雾算法需解决透射率估计不精确、景深突变区域复原失真等核心问题。

1.2 研究意义

暗通道先验理论为单幅图像去雾提供了理论基础,但传统DCP算法存在以下局限:

  1. 最小值滤波导致透射率图块状效应;
  2. 天空区域透射率估计失效;
  3. 彩色图像通道间相关性未充分利用。
    本研究通过导向滤波优化透射率估计,结合双边滤波保留边缘细节,实现灰度与彩色图像的高质量复原。

2. 理论基础

2.1 大气散射模型

雾天图像退化过程遵循以下模型:

image.gif 编辑

其中,I(x)为观测图像,J(x)为无雾图像,A为大气光值,t(x)为透射率。去雾目标即从I(x)中恢复J(x)。

2.2 暗通道先验理论

何恺明提出的暗通道先验指出:在绝大多数非天空局部区域中,至少存在一个颜色通道的像素值趋近于零。数学定义为:

image.gif 编辑

该理论通过统计5000余幅户外图像验证,其暗通道强度90%以上区域低于25(8位图像)。

2.3 导向滤波原理

导向滤波通过局部线性模型实现结构传递与细节保留:

image.gif 编辑

其中,I为引导图像,q为输出图像,ωk为局部窗口。通过优化目标函数,实现边缘保持与平滑的平衡。

3. 算法设计

3.1 改进的暗通道计算

针对灰度图像,直接计算最小值通道;针对彩色图像,采用加权暗通道:

image.gif 编辑

其中权重wc根据通道能量动态分配,提升色彩丰富区域的透射率估计精度。

3.2 透射率优化

  1. 初始透射率估计
    基于暗通道先验推导透射率初值:

image.gif 编辑

其中ω=0.95保留景深感知。

  1. 双边滤波平滑
    对初始透射率图进行双边滤波,消除纹理噪声:

image.gif 编辑

其中Gσs与Gσr分别为空间域与值域高斯核。

  1. 导向滤波细化
    以原始图像作为引导,对双边滤波结果进行导向滤波:

image.gif 编辑

通过调节正则化参数ϵ,平衡透射率平滑与边缘保持。

3.3 大气光估计

改进传统暗通道前0.1%亮度像素法,提出基于四分位距(IQR)的鲁棒估计:

  1. 计算暗通道图的IQR,筛选异常高亮区域;
  2. 在原始图像对应位置中,取HDR(高动态范围)加权均值作为A。

4. 实验与分析

4.1 实验设置

  • 数据集:CVPR O-HAZY NTIRE 2018(含60幅合成雾图)、真实雾天图像30幅;
  • 对比算法:经典DCP、CAP(颜色衰减先验)、Fast Visibility Restoration(FVR);
  • 评价指标:PSNR、SSIM、运行时间(秒/兆像素)。

4.2 定量分析

算法 灰度图PSNR 彩色图PSNR 灰度图SSIM 彩色图SSIM 平均时间
经典DCP 18.2 17.8 0.72 0.69 0.85
CAP 19.5 19.1 0.78 0.75 0.62
FVR 20.1 19.7 0.81 0.78 0.45
本文算法 21.7 20.9 0.89 0.86 0.78

4.3 定性分析

  • 景深突变区域:经典DCP在建筑物边缘产生光晕,本文算法通过导向滤波有效抑制;
  • 天空区域:CAP算法过度增强导致色彩失真,本文算法通过IQR估计保留自然过渡;
  • 色彩还原:FVR算法在红色通道复原中偏色,本文加权暗通道提升色彩保真度。

5. 结论与展望

本文提出的导向滤波暗通道去雾算法,通过改进透射率估计与大气光计算,显著提升了灰度与彩色图像的复原质量。实验表明,该算法在保持实时性的同时,有效解决了传统方法的块状效应与色彩失真问题。未来工作将探索深度学习与先验理论融合,进一步提升复杂场景下的鲁棒性。

📚2 运行结果

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

部分代码:

%%%%%%%%----计算暗通道 -------%%%%%%%%%%%%%%%%%%%%
minRGB = zeros(h,w);
for y=1:h
    for x=1:w
        minRGB(y,x) = min(img(y,x,:));
    end
end
% figure,imshow(uint8(minRGB)), title('Min(R,G,B)');
darkChannel = minfilt(minRGB, [winR, winR]);
% figure,imshow(uint8(darkChannel)), title('DarkChannel ');
%     %%%%%%%----估算背景光 -------%%%%%%%%%%%%%%%%%%%%
darkNum_estimatA = round(0.001*h*w) ;
[sortDarkChannel,index] = sort(darkChannel(:), 'descend') ;
sumR = 0;
sumG = double(0);
sumB = double(0);
for ii = 1 : darkNum_estimatA
    sumR = R(index(ii))+sumR;
    sumG = G(index(ii))+sumG;
    sumB = B(index(ii))+sumB;  
end
A_R = sumR/darkNum_estimatA;
A_G = sumG/darkNum_estimatA;
A_B = sumB/darkNum_estimatA;
%%%%%%%%-----估算透射率-----%%%%%%%%%%%%%%%%%%%%%%
t_R = 1-dehaze_rate*darkChannel/A_R;       
t_G = 1-dehaze_rate*darkChannel/A_G;      
t_B = 1-dehaze_rate*darkChannel/A_B;       
% figure, imshow(t_R), title('t_R') ;
% figure, imshow(t_G), title('t_G') ;
% figure, imshow(t_B), title('t_B') ;
%%%%^^^^^优化透射率…………………………………………………………………
t_R_filtered = guidedfilter(double(rgb2gray(img))/255, t_R, filter_R , eps);
t_G_filtered = guidedfilter(double(rgb2gray(img))/255, t_G, filter_R , eps);
t_B_filtered = guidedfilter(double(rgb2gray(img))/255, t_B, filter_R , eps);
 %figure, imshow(uint8(t_R_filtered.*255)), title('t_R优化后') ;
%figure, imshow(uint8(t_G_filtered.*255)), title('t_G优化后') ;
%figure, imshow(uint8(t_B_filtered.*255)), title('t_B优化后') ;

image.gif

🎉3 参考文献

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

🌈

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

热门文章

最新文章