1. 水下图像增强的技术背景与挑战
水下摄影与陆地摄影存在本质差异。由于水体对光线的吸收和散射效应,水下图像普遍存在颜色失真、对比度低和细节模糊三大问题。具体来说,水分子对不同波长光线的吸收程度不一,红光在5米水深时能量衰减约90%,而蓝绿光的穿透能力相对较强。这种选择性吸收导致水下图像呈现蓝绿色调。
另一方面,水中悬浮颗粒造成的散射效应类似于大气中的雾霾,会降低图像对比度。但与大气散射不同,水下散射具有更强的波长依赖性。传统去雾算法如暗通道先验(DCP)在水下环境中效果有限,因为它们没有考虑这种波长相关的散射特性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 波长补偿与物理模型构建
2.1 水下光学传输模型
完整的水下成像模型可表示为:
code复制I(x) = J(x)·t(x) + B·(1-t(x))
其中:
- I(x):观测到的图像强度
- J(x):理想的清晰图像
- t(x):透射率图
- B:背景光(常取图像中最亮的前0.1%像素的平均值)
透射率t(x)与波长λ的关系为:
code复制t(x,λ) = exp(-β(λ)·d(x))
β(λ)是波长相关的衰减系数,d(x)为场景深度。
2.2 基于RGB通道的补偿策略
我们采用分通道补偿方法:
- 对红通道(R)应用指数补偿:
code复制R_comp = R./(exp(-β_R·d_map)) - 对绿通道(G)进行线性补偿:
code复制G_comp = G./(1 + β_G·d_map) - 蓝通道(B)保持相对稳定,仅做小幅调整
注意:深度图d_map可通过暗通道先验或激光测距获得。实际应用中常使用统计方法估计。
3. 改进的去雾算法实现
3.1 透射率图优化
传统DCP算法在水下场景的不足:
- 水下场景常不符合"暗通道"假设
- 忽略波长对散射的影响
改进方案:
matlab复制function t = estimate_transmission(I, w_size, lambda)
% I: 输入图像
% w_size: 局部窗口大小
% lambda: 波长补偿因子
dark = min(I,[],3);
atmos = max(
