✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。
🍎 往期回顾关注个人主页:Matlab科研工作室
🍊个人信条:格物致知,完整Matlab代码及仿真咨询内容私信。
🔥 内容介绍
水下环境中,光线经水体传播时会因波长依赖性差分衰减(蓝绿光穿透性强、红光快速衰减)和悬浮颗粒散射,导致图像出现 “红通道缺失、对比度低迷、细节淹没” 三大核心问题。传统水下增强技术要么依赖多帧采集(如多曝光融合),难以适配动态场景;要么忽略衰减的波长差异性(如单一对比度拉伸),色彩恢复效果差。而基于差分衰减补偿的单次增强技术,通过精准建模水体对不同波长光的衰减规律,仅需单帧图像即可实现色彩校正与细节增强的协同优化,为水下机器人探测、海洋生物观测、水下工程检测等实时场景提供了全新解决方案。
一、水下图像退化的核心机理:差分衰减与散射的双重影响
要实现高效增强,首先需明确水下图像的退化模型。当光线从目标物体传播至相机时,会经历 “目标反射光的衰减” 与 “水体散射光的叠加”,其数学模型可表示为:
plaintext取消自动换行复制
I(λ, x, y) = J(λ, x, y) · exp(-c(λ)·d(x, y)) + A(λ) · [1 - exp(-c(λ)·d(x, y))]
其中:
- I(λ, x, y):相机接收的单帧图像在波长 λ、像素 (x,y) 处的灰度值;
- J(λ, x, y):目标物体的真实反射图像(即待恢复的理想图像);
- c(λ):水体的体积衰减系数,具有显著波长依赖性(如清水环境中,c (650nm 红光)≈2.5 m⁻¹,c (532nm 绿光)≈0.5 m⁻¹,c (450nm 蓝光)≈0.3 m⁻¹);
- d(x, y):目标物体到相机的距离;
- A(λ):环境光的散射强度,同样与波长相关。
从模型可见,水下图像退化的关键在于差分衰减(不同波长 c (λ) 差异导致色彩失衡)和距离相关衰减(远景区域 d (x,y) 大,信号弱、散射占比高,细节模糊)。这两大问题的耦合,正是传统单次增强技术难以突破的核心瓶颈。
二、差分衰减补偿的核心方法:从模型反演到单次增强实现
基于上述退化模型,单次增强的关键在于 “精准估计衰减参数 + 高效补偿退化效应”,其技术流程可分为三个核心步骤:
2.1 波长依赖性衰减系数的快速估计
无需额外硬件(如多光谱相机),仅从单帧 RGB 图像中提取衰减系数 c (λ)。核心思路是利用 “水下图像的局部对比度差异” 与 “衰减系数的波长关联性”:
- 区域划分:将单帧图像划分为 “近景区域”(d 小,衰减弱,J 与 I 差异小)和 “远景区域”(d 大,衰减强,散射占比高)。通过计算局部方差(近景区域方差大,远景区域方差小),自动筛选出近景中的 “高反射率参考区域”(如白色物体、明亮岩石);
- 衰减系数求解:假设参考区域的真实反射光 J_RGB 满足自然场景的灰度分布(如 J_R ≈ J_G ≈ J_B,无明显色彩偏差),结合退化模型反演 c (R)、c (G)、c (B)。例如,选取参考区域中像素点 (x0,y0),其 I_R、I_G、I_B 已知,可通过下式联立求解:
plaintext取消自动换行复制
I_R / I_G = [J_R · exp(-c_R·d) + A_R·(1 - exp(-c_R·d))] / [J_G · exp(-c_G·d) + A_G·(1 - exp(-c_G·d))]
因 J_R ≈ J_G、A_R ≈ A_G(参考区域环境光均匀),可简化为I_R / I_G ≈ exp(-(c_R - c_G)·d),结合多组参考像素的统计平均,最终得到可靠的 c (R)、c (G)、c (B) 估计值(实验表明,该方法估计误差可控制在 10% 以内,优于传统基于先验的固定参数法)。
2.2 距离相关衰减的自适应补偿
针对不同像素的 d (x,y) 差异,需实现 “近景少补偿、远景多补偿” 的自适应调整,避免过度增强导致噪声放大:
- 距离映射图生成:基于图像的灰度值与局部梯度,构建距离映射 d_est (x,y)。原理是:远景区域因衰减强,灰度值更接近 A (λ)(散射光占比高),且梯度小(细节模糊);通过将 “灰度接近 A (λ) 且梯度小” 的像素标记为远景(d_est 大),反之标记为近景(d_est 小),快速生成与真实距离趋势一致的映射图;
- 差分衰减补偿:将估计的 c (λ) 与 d_est (x,y) 代入退化模型,反演目标真实反射光 J (λ,x,y):
plaintext取消自动换行复制
J(λ, x, y) = [I(λ, x, y) - A(λ)] / exp(-c(λ)·d_est(x,y)) + A(λ)·[exp(-c(λ)·d_est(x,y)) - 1]/exp(-c(λ)·d_est(x,y))
简化后可得:
plaintext取消自动换行复制
J(λ, x, y) = (I(λ, x, y) - A(λ)) · exp(c(λ)·d_est(x,y)) + A(λ)
该式通过 “指数补偿项 exp (c (λ)・d_est)”,对不同波长、不同距离的像素实现差异化补偿 —— 红光(c (R) 大)的远景像素会获得更强的补偿,有效修复红通道缺失;近景像素因 d_est 小,补偿适度,避免过曝。
2.3 细节增强与噪声抑制的协同优化
补偿后的 J (λ,x,y) 可能存在细节不够突出、散射残留噪声的问题,需通过单次处理实现细节与噪声的平衡:
- 多尺度细节提取:采用高斯金字塔分解,将 J 图像分为 “低频基础层”(保留整体亮度与色彩)和 “高频细节层”(包含边缘、纹理);对高频层采用 “自适应增益调整”(梯度大的边缘区域增益高,梯度小的平滑区域增益低),避免噪声放大;
- 色彩一致性校正:因估计误差可能导致 RGB 三通道补偿不均衡,通过计算 “补偿后图像与自然场景色彩分布的偏差”(如利用灰度世界假设,调整 RGB 通道的增益,使图像整体灰度均值接近 128),确保色彩恢复的自然性。
⛳️ 运行结果



📣 部分代码
function [ A ] = estA( img, Jdark, isShowImg)
%ESTABYTRAN Summary of this function goes here
if nargin < 3
isShowImg = 1;
end
% Estimate Airlight of image I
[h,w,c] = size(img);
if isinteger(img)
img = double(img)/255;
end
% Compute number for 0.1% brightest pixels
n_bright = ceil(0.001*h*w);
% Loc contains the location of the sorted pixels
[Y,Loc] = sort(Jdark(:));
%column-stacked version of I
Ics = reshape(img, h*w, 1, 3);
ix = img;
dx = Jdark(:);
%init a matrix to store candidate airlight pixels
Acand = zeros(n_bright,1,3);
%init matrix to store largest norm airlight
Amag = zeros(n_bright,1);
% Compute magnitudes of RGB vectors of A
for i = 1:n_bright
x = Loc(h*w+1-i);
%ix(mod(x,h)+1, floor(x/w)+1, 1) = 1;
%ix(mod(x,h)+1, floor(x/w)+1, 2) = 0;
%ix(mod(x,h)+1, floor(x/w)+1, 3) = 0;
ix(mod(x,h)+1, floor(x/h)+1, 1) = 1;
ix(mod(x,h)+1, floor(x/h)+1, 2) = 0;
ix(mod(x,h)+1, floor(x/h)+1, 3) = 0;
%Jdark(mod(x,h), floor(x/w)+1);
%dx(x);
Acand(i,1,:) = Ics(Loc(h*w+1-i),1,:);
Amag(i) = norm(Acand(i,:));
end
% Sort A magnitudes
[Y2,Loc2] = sort(Amag(:));
% A now stores the best estimate of the airlight
if length(Y2) > 20
A = Acand(Loc2(n_bright-19:n_bright),:);
else
A = Acand(Loc2(n_bright-length(Y2)+1:n_bright),:);
end
% finds the max of the 20 brightest pixels in original image
if size(A,1)~=1
A = max(A);
end
if isShowImg == 1
figure;
imshow(ix);
title('position of the atmospheric light');
imwrite(ix, 'res/position_of_the_atmospheric_light.png');
end
end
🔗 参考文献
https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7128396
🎈 部分理论引用网络文献,若有侵权联系博主删除
👇 关注我领取海量matlab电子书和数学建模资料
🏆团队擅长辅导定制多种科研领域MATLAB仿真,助力科研梦:
🌟 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位、冷链、时间窗、多车场等、选址优化、港口岸桥调度优化、交通阻抗、重分配、停机位分配、机场航班调度、通信上传下载分配优化
🌟 机器学习和深度学习时序、回归、分类、聚类和降维
2.1 bp时序、回归预测和分类
2.2 ENS声神经网络时序、回归预测和分类
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类
2.4 CNN|TCN|GCN卷积神经网络系列时序、回归预测和分类
2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类
2.7 ELMAN递归神经网络时序、回归\预测和分类
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类
2.9 RBF径向基神经网络时序、回归预测和分类
2.10 DBN深度置信网络时序、回归预测和分类
2.11 FNN模糊神经网络时序、回归预测
2.12 RF随机森林时序、回归预测和分类
2.13 BLS宽度学习时序、回归预测和分类
2.14 PNN脉冲神经网络分类
2.15 模糊小波神经网络预测和分类
2.16 时序、回归预测和分类
2.17 时序、回归预测预测和分类
2.18 XGBOOST集成学习时序、回归预测预测和分类
2.19 Transform各类组合时序、回归预测预测和分类
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌟图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
🌟 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻、公交车时间调度、水库调度优化、多式联运优化
🌟 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划、
🌟 通信方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌟 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌟电力系统方面
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电、电/冷/热负荷预测、电力设备故障诊断、电池管理系统(BMS)SOC/SOH估算(粒子滤波/卡尔曼滤波)、 多目标优化在电力系统调度中的应用、光伏MPPT控制算法改进(扰动观察法/电导增量法)、电动汽车充放电优化、微电网日前日内优化、储能优化、家庭用电优化、供应链优化
🌟 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长 金属腐蚀
🌟 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合、SOC估计、阵列优化、NLOS识别
🌟 车间调度
零等待流水车间调度问题NWFSP 、 置换流水车间调度问题PFSP、 混合流水车间调度问题HFSP 、零空闲流水车间调度问题NIFSP、分布式置换流水车间调度问题 DPFSP、阻塞流水车间调度问题BFSP
👇
1256

被折叠的 条评论
为什么被折叠?



