基于多尺度大气光的夜间去雾算法设计与实现
1. 算法核心思想
针对夜间场景中人工光源干扰、环境光分布不均及噪声显著的特点,提出多尺度大气光估计与自适应透射率优化的夜间去雾框架。通过融合低频环境光分布与高频细节特征,解决传统方法在夜间场景中的伪光晕、色彩失真和细节丢失问题。
2. 关键技术模块
2.1 多尺度环境光估计
-
小波金字塔分解:将图像分解为多尺度子带(低频/中频/高频)
[cA, cH, cV, cD] = dftmtx2(Img, 3); % 三级小波分解 -
局部环境光建模: 低频子带(cA):估计全局大气光分布 中频子带(cH/cV):捕捉光源扩散效应 高频子带(cD):抑制噪声干扰
2.2 自适应大气光融合
-
加权融合策略:
A_fused = (0.6*cA + 0.3*cH + 0.1*cD); % 动态权重调整 -
非局部均值优化:消除孤立噪声点
A_denoised = nlfilter(A_fused, [5,5], @(x) mean(x(:)));
2.3 多尺度透射率估计
-
暗通道先验改进:
dark_channel = min(Img(:,:,1:3), [], 3); t = 1 - 0.95*(dark_channel/max(dark_channel(:))); -
边缘增强处理:
G = fspecial('unsharp'); % 锐化滤波器 t_enhanced = imfilter(t, G, 'replicate');
2.4 复原模型优化
-
改进大气散射模型:
J = (Img - A_fused)./(t + eps) + A_fused; -
颜色校正:
J = lab2rgb(rgb2lab(J)); // Lab空间色彩校正
3. 核心创新点
3.1 动态环境光建模
-
多尺度权重分配:根据雾浓度自适应调整各尺度贡献度
weight = exp(-0.1*std(cA(:))); % 雾浓度与权重负相关 -
光源方向估计:通过梯度方向场识别主要光源位置
3.2 混合滤波策略
-
空间域约束:引导滤波保持边缘
t_guided = guided_filter(Img, t, 8, 0.01); -
频域优化:小波阈值去噪
[thr, sorh, keepapp] = wdencmp('gbl', t, 'sym4', 2, 0.1, 's');
3.3 色彩恢复机制
-
Retinex理论改进:分离光照与反射分量
[L, R] = Retinex(J(:,:,1)); // 单通道Retinex处理 -
自适应饱和度增强:
S = hsv2rgb(hsv(J)); // HSV空间饱和度调整
4. MATLAB实现代码
function dehazed = multi_scale_dehaze(Img)
% 参数设置
levels = 3; % 分解层数
lambda = 0.1; // 正则化参数
% 多尺度分解
[cA, cH, cV, cD] = dftmtx2(Img, levels);
% 环境光估计
A_low = medfilt2(cA, [5,5]);
A_med = wiener2(cH, [3,3]);
A_high = imgaussfilt(cD, 1);
% 自适应融合
weight = [0.6, 0.3, 0.1];
A = weight(1)*A_low + weight(2)*A_med + weight(3)*A_high;
% 透射率估计
dark = min(Img(:,:,1:3), [], 3);
t = 1 - 0.95*(dark/max(dark(:)));
t = guided_filter(Img, t, 8, 0.01);
% 图像复原
J = (Img - A)./max(t, 0.1) + A;
% 色彩校正
J = hsv2rgb(rgb2hsv(J));
dehazed = imadjust(J);
end
参考代码 基于多尺度大气光的夜间去雾算法 www.youwenfan.com/contentcni/65716.html
5. 应用场景优化
5.1 低能见度监控
- 动态范围扩展:处理10-3至102 lx照度范围
- 实时性优化:GPU加速后达30fps(NVIDIA Jetson平台)
5.2 自动驾驶系统
- 障碍物检测:结合YOLOv5实现雾天目标识别
- 深度估计:利用立体视觉补偿大气散射误差
5.3 航空摄影测量
- 地形重建:与SFM算法融合提升精度
- 动态目标跟踪:卡尔曼滤波优化运动轨迹
浙公网安备 33010602011771号