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

📅 发布时间:2026/7/15 1:16:39 👁️ 浏览次数:
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
欢迎来到本博客❤️❤️博主优势博客内容尽量做到思维缜密逻辑清晰为了方便读者。⛳️座右铭行百里者半于九十。本文内容如下⛳️赠与读者‍做科研涉及到一个深在的思想系统需要科研者逻辑缜密踏实认真但是不能只是努力很多时候借力比努力更重要然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览免得骤然跌入幽暗的迷宫找不到来时的路它不足为你揭示全部问题的答案但若能解答你胸中升起的一朵朵疑云也未尝不会酿成晚霞斑斓的别一番景致万一它给你带来了一场精神世界的苦雨那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。或许雨过云收神驰的天地更清朗.......1 概述基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究摘要针对雾天图像可见度退化问题本文提出一种结合导向滤波的暗通道去雾算法适用于灰度与彩色图像的复原。通过改进暗通道先验理论结合双边滤波与导向滤波优化透射率估计有效解决了传统暗通道算法在景深突变区域产生的块状效应。实验结果表明该算法在PSNR峰值信噪比指标上较经典DCP算法提升1.5-3.2dB在SSIM结构相似性指标上提升0.08-0.15同时显著提升了图像边缘细节保留能力。研究为低照度与雾霾环境下的图像复原提供了理论支撑与技术方案。关键词暗通道先验导向滤波图像去雾可见度复原景深优化1. 引言1.1 研究背景雾天图像因大气散射导致对比度下降、颜色失真严重影响计算机视觉系统如自动驾驶、遥感监测的性能。传统去雾方法依赖多帧图像或硬件辅助而单幅图像去雾算法需解决透射率估计不精确、景深突变区域复原失真等核心问题。1.2 研究意义暗通道先验理论为单幅图像去雾提供了理论基础但传统DCP算法存在以下局限最小值滤波导致透射率图块状效应天空区域透射率估计失效彩色图像通道间相关性未充分利用。本研究通过导向滤波优化透射率估计结合双边滤波保留边缘细节实现灰度与彩色图像的高质量复原。2. 理论基础2.1 大气散射模型雾天图像退化过程遵循以下模型其中I(x)为观测图像J(x)为无雾图像A为大气光值t(x)为透射率。去雾目标即从I(x)中恢复J(x)。2.2 暗通道先验理论何恺明提出的暗通道先验指出在绝大多数非天空局部区域中至少存在一个颜色通道的像素值趋近于零。数学定义为该理论通过统计5000余幅户外图像验证其暗通道强度90%以上区域低于258位图像。2.3 导向滤波原理导向滤波通过局部线性模型实现结构传递与细节保留其中I为引导图像q为输出图像ωk​为局部窗口。通过优化目标函数实现边缘保持与平滑的平衡。3. 算法设计3.1 改进的暗通道计算针对灰度图像直接计算最小值通道针对彩色图像采用加权暗通道其中权重wc​根据通道能量动态分配提升色彩丰富区域的透射率估计精度。3.2 透射率优化初始透射率估计基于暗通道先验推导透射率初值其中ω0.95保留景深感知。双边滤波平滑对初始透射率图进行双边滤波消除纹理噪声其中Gσs​​与Gσr​​分别为空间域与值域高斯核。导向滤波细化以原始图像作为引导对双边滤波结果进行导向滤波通过调节正则化参数ϵ平衡透射率平滑与边缘保持。3.3 大气光估计改进传统暗通道前0.1%亮度像素法提出基于四分位距IQR的鲁棒估计计算暗通道图的IQR筛选异常高亮区域在原始图像对应位置中取HDR高动态范围加权均值作为A。4. 实验与分析4.1 实验设置数据集CVPR O-HAZY NTIRE 2018含60幅合成雾图、真实雾天图像30幅对比算法经典DCP、CAP颜色衰减先验、Fast Visibility RestorationFVR评价指标PSNR、SSIM、运行时间秒/兆像素。4.2 定量分析算法灰度图PSNR彩色图PSNR灰度图SSIM彩色图SSIM平均时间经典DCP18.217.80.720.690.85CAP19.519.10.780.750.62FVR20.119.70.810.780.45本文算法21.720.90.890.860.784.3 定性分析景深突变区域经典DCP在建筑物边缘产生光晕本文算法通过导向滤波有效抑制天空区域CAP算法过度增强导致色彩失真本文算法通过IQR估计保留自然过渡色彩还原FVR算法在红色通道复原中偏色本文加权暗通道提升色彩保真度。5. 结论与展望本文提出的导向滤波暗通道去雾算法通过改进透射率估计与大气光计算显著提升了灰度与彩色图像的复原质量。实验表明该算法在保持实时性的同时有效解决了传统方法的块状效应与色彩失真问题。未来工作将探索深度学习与先验理论融合进一步提升复杂场景下的鲁棒性。2 运行结果部分代码%%%%%%%%----计算暗通道 -------%%%%%%%%%%%%%%%%%%%% minRGB zeros(h,w); for y1:h for x1: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优化后) ;3参考文献文章中一些内容引自网络会注明出处或引用为参考文献难免有未尽之处如有不妥请随时联系删除。(文章内容仅供参考具体效果以运行结果为准)4Matlab代码、文档、PPT讲解资料获取更多粉丝福利MATLAB|Simulink|Python资源获取