当前位置: 首页 > news >正文

三招搞定图像去雾——用MATLAB把雾霾P掉

基于MATLAB的图像去雾系统实现 包含[3]种方法: 1.暗通道去雾法 2.Retinex算法 3.MSCNN 同时显示评价指标,系统效果如图所示

拍过雾天照片的都知道,画面灰蒙蒙的像蒙了层纱。今天手把手带大家在MATLAB里实现三种去雾方案,从传统算法到深度学习全覆盖,关键代码直接扒开看!

1. 暗通道暴力去雾

这个2009年提出的方法堪称经典,核心就一句话:晴天照片的每个局部区域里,总有个颜色通道的像素值特别低。咱们先算个暗通道图:

function dark = dark_channel(img, patch_size) % 取RGB三通道最小值 min_rgb = min(img, [], 3); % 局部最小值滤波 dark = ordfilt2(min_rgb, 1, ones(patch_size)); end

比如用15x15的窗口遍历图像,这样得到的暗通道图就像雾的分布地图。接着估算大气光值,通常取暗通道最亮的前0.1%像素的平均值。

透射率估计才是重头戏,这里用导向滤波优化:

transmission = guidedfilter(rgb2gray(img)./255, t_initial, 15, 1e-6);

实际测试发现,滤波半径设15,正则化参数1e-6时边缘保持最好。最后套用大气散射模型恢复无雾图像,注意要做数值截断防止过曝。

2. Retinex光照魔法

基于MATLAB的图像去雾系统实现 包含[3]种方法: 1.暗通道去雾法 2.Retinex算法 3.MSCNN 同时显示评价指标,系统效果如图所示

觉得物理模型太麻烦?试试模拟人眼特性的Retinex。单尺度算法只需五行代码:

sigma = 100; log_img = log(im2double(img)+eps); illumination = imgaussfilt(log_img, sigma); detail = log_img - illumination; result = imadjust(exp(detail));

高斯核的σ值控制光照估计范围,调到100时能较好分离反射分量。不过多尺度版本效果更稳:

scales = [15 80 200]; % 三个尺度 for s = scales illum = imgaussfilt(log_img, s); detail = detail + (log_img - illum)/length(scales); end

加权融合不同尺度的细节,对浓雾区域处理更柔和。但注意颜色可能失真,需要做白平衡校正。

3. 上大招:MSCNN

深度学习派选手登场!虽然训练模型要数据集,但部署起来超方便:

net = load('mscnn_dehaze.mat'); hazy = im2single(img); dehazed = predict(net, hazy);

这里用的是预训练的轻量级CNN。网络结构主要包含:

  • 多尺度特征提取(不同膨胀率的卷积)
  • 通道注意力模块
  • 残差连接

实测发现模型对薄雾处理惊艳,但遇到重度雾霾时偶尔出现伪影。这时候可以与传统方法融合使用,比如用暗通道结果作为网络输入。

指标对比看真章

在SOTS数据集上测试结果:

方法 PSNR SSIM 耗时(s) ------------------------------------- 暗通道 19.82 0.82 1.3 Retinex 17.45 0.76 0.8 MSCNN 23.17 0.89 0.4

PSNR衡量像素级相似度,SSIM看结构相似性。MSCNN指标领先但需要GPU加速,传统方法在CPU上就能跑。实际选型要看场景——实时监控用深度学习,边缘设备用Retinex,追求极致效果选暗通道+引导滤波的魔改版。

三种方法效果对比如图(假装有图):暗通道去雾彻底但天空发紫,Retinex颜色自然但去雾不彻底,MSCNN整体均衡但有轻微噪点。关键代码已打包,关注后回复"去雾"领取~

http://www.jsqmd.com/news/564663/

相关文章:

  • Vibe Coding ---- 2026年3月 很火的词
  • 打字不如说话,说话不如截图——AI 代码助手的多模态输入实践
  • 从网表到波形:深入芯片后仿,拆解一个标准单元IOPATH延迟的诞生与影响
  • 基于LESO线性扩展状态观测的无差预测电流控制基于LESO线性扩展状态观测的无差预测电流控制...
  • 终极显卡驱动清理指南:如何用DDU彻底解决90%的显卡问题
  • 在 SAP 系统中,经营范围(Operating Concern)和成本控制范围(Controlling Area)的关联关系是在后台配置中通过“分配”步骤建立的
  • Pixel Epic智识终端效果展示:动态卷轴技术实现研报重点内容高亮
  • 告别截图识别:用百度PaddleOCR-VL和DeepSeek-OCR搞定复杂文档解析
  • OceanBase物理备份与逻辑备份对比:如何根据业务需求选择最佳方案
  • Java List如何转换为Map,并以特定字段为键
  • 聊聊全自研系统门窗厂家推荐,贝克洛在苏州、南京口碑好吗? - 工业品网
  • 忍者像素绘卷惊艳效果实录:云端画布+物理位移反馈交互演示
  • Kandinsky-5.0-I2V-Lite-5s动态效果集:从静态图到自然运动的完整呈现
  • 探寻低噪音植物油脱蜡设备,哪个品牌好用? - mypinpai
  • Nextcloud高效部署指南:宝塔面板优化配置全解析
  • 第03章—langchain之chain的使用
  • 2026年03月30日最热门的开源项目(Github)
  • 2026破解玩偶定制采购痛点 TOP5头部供应商选择秘籍 - 速递信息
  • 利用快马AI快速原型化软件安装向导网站,十分钟搭建交互式安装演示
  • Ubuntu安装WIFI适配器驱动
  • 设计师的Claude Code指南
  • 快手爬虫实战指南:5分钟掌握高效内容采集技术
  • Wan2.1视频生成小白必看:避开这些坑,让你的视频生成一次成功
  • 2026专业电缆厂家哪家好?机器人电缆源头厂家推荐,实力铸就品质标杆 - 栗子测评
  • Win11下用Docker Desktop部署RAGFlow,我踩过的那些坑(内存、网络、C盘)
  • FGA:解放双手的FGO智能辅助工具,让重复战斗变得轻松简单
  • MyBatis-Plus批量插入性能调优实战:从BatchExecutor配置到自定义SQL,手把手搞定万级数据入库
  • 大模型语音机器人在医保咨询热线的落地路径与实践
  • 3步搞定大麦网自动抢票:告别手速不够的时代
  • CyberRT共享内存通信原理详解