【图像去雾】基于双边滤波算法实现图像去雾附Matlab源码_双边滤波图像增强算法matlab代码-程序员宅基地

技术标签: matlab  算法  图像处理  开发语言  

作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

个人主页:Matlab科研工作室

个人信条:格物致知。

更多Matlab仿真内容点击

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

内容介绍

基于双边滤波算法实现图像去雾是一种常用的方法,用于恢复由大气雾霾引起的图像模糊和低对比度问题。以下是一个基本的步骤框架:

  1. 雾图像预处理:首先对输入的雾图像进行预处理,例如校正伽马校正、直方图均衡化等操作,以增强图像的动态范围。

  2. 估计大气光:通过在雾图像中寻找最亮的像素点来估计全局大气光值。这些最亮像素通位于天空区域或具有很高亮度值的区域。

  3. 估计透射率:利用双边滤波算法估计图像中每个像素点的透射率。双边滤波是一种考虑空间距离和灰度相似性的滤波器,能够有效降低噪声同时保留边缘信息。

  4. 运用射率进行去雾:使用估计得到的透射率和大气光值,对雾图像进行去雾处理。其中,去雾公式为:I = (J - A) / t +I为去雾图像,J为输入雾图像,A为估计得的大气光,t为透射率。

  5. 去雾结果后处理:对去雾结果进行后处理,例如对比度增强、锐化或色彩校正等操作,以进一步提升图像的质量和视觉效果。

需要注意的是,双边滤波算法在去雾过程中能够保留边缘细节,但在复杂场景、低光照条件或存在运动模糊时可能产生其它问题。因此,在实际应用中,可以根据具体情况和需求,采用其他图像处理技术和算法来改进和优化图像去雾的效果。

部分代码

clcclear allclose all%imageRGB = imread('picture.bmp');%imageRGB = imread('shishi.jpg');imageRGB = imread('traffic.jpg');imageRGB = double(imageRGB);imageRGB=imageRGB./255;figure;%subplot(2,1,1);imshow(imageRGB), title('原始图像');% imwrite(imageRGB(2:516,2:689,:),'D:\所有去雾程序\新建文件夹\双边滤波去雾\双边椒盐7(1)去雾截.bmp');% subplot(2,1,2);imhist(rgb2gray(imageRGB));% imageRGB=imnoise(imageRGB,'gaussian',0.02);% figure;% imshow(imageRGB);title('加噪图');sz=size(imageRGB);w=sz(2);h=sz(1);dark=darkChannel(imageRGB);figure,imshow(dark);title('暗通道图像');% imwrite(dark,'traffic_1.jpg')[m,n,~] = size(imageRGB);%估计大气光值A,从暗通道中按亮度大小提取最亮的前0.1%像素。然后在原始有雾图像I中寻找对应位置上的具有最亮亮度的点的值,并以此作为A的值imsize = m * n;numpx = floor(imsize/1000);JDarkVec = reshape(dark,imsize,1);ImVec = reshape(imageRGB,imsize,3);    im(:,:,ind) = imageRGB(:,:,ind)./atmospheric(ind);enddark_2=darkChannel(im);%P15页对大气光归一化以后求取暗通道t = 1-omega*dark_2;%对透射率粗估计figure,imshow(t), title('原始透射图');% imwrite(t,'traffic_2.jpg')filter=0.9*bfltGray(t,1,3,0.1);t_d = filter;figure,imshow(t_d), title('双边滤波后透射图');A = min([minAtomsLight, max(max(dc2))]); %确定大气光强J = zeros(h,w,3);img_d = double(img);r = krnlsz*3;eps = 10^-6;filtered = guidedfilter(double(rgb2gray(img))/255, t_d, r, eps);%指导滤波t进行增强t_d = filtered;% figure,imshow(t_d,[]),title('滤波后 t');J(:,:,1) = (img_d(:,:,1) - (1-t_d)*A)./t_d;J(:,:,2) = (img_d(:,:,2) - (1-t_d)*A)./t_d;J(:,:,3) = (img_d(:,:,3) - (1-t_d)*A)./t_d;figure,imshow(uint8(J)), title('去雾图像');%}

运行结果

参考文献

[1] 胡薇,高银.基于边界限制的自适应双边滤波单幅图像去雾算法[J].  2020.DOI:10.3788/LOP57.241505.

[2] 王园园,黄丽琼.基于双边滤波器的雾霾天气交通标志图像去雾算法[J].舰船电子工程, 2019, 39(12):3.DOI:CNKI:SUN:JCGC.0.2019-12-031.

[3] 温立民,巨永锋,王会峰,等.基于双边滤波暗原色透射率细化的图像去雾算法[J].测控技术, 2020, 39(4):4.DOI:CNKI:SUN:IKJS.0.2020-04-013.

[4] 王一帆,尹传历,黄义明,等.基于双边滤波的图像去雾[J].中国图象图形学报, 2014, 19(3):7.DOI:10.11834/jig.20140307.

️ 代码获取关注我

️部分理论引用网络文献,若有侵权联系博主删除
️ 关注我领取海量matlab电子书和数学建模资料

仿真咨询

1.卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3.旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划
4.无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
5.传感器部署优化、通信协议优化、路由优化、目标定位
6.信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号
7.生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化
8.微电网优化、无功优化、配电网重构、储能配置
9.元胞自动机交通流 人群疏散 病毒扩散 晶体生长

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_60703264/article/details/131528880

智能推荐

Tensorflow用循环神经网络中的LSTM实现回归预测_lstm的做回归-程序员宅基地

文章浏览阅读4.8k次,点赞4次,收藏29次。 “微信公众号”一、回归预测要实现的问题这次我们会使用RNN来进行回归(Regression)的训练,使用自己创建的sin曲线预测一条cos曲线。如下图所示,我们用蓝色的sin曲线预测红色的cos曲线。二、回归预测要实现的效果经过RNN的回归训练,我们的网络预测结果和真实结果的一个比对图..._lstm的做回归

将pandas.DataFrame格式的数据,每一行转为元组tuple,所有数据以列表list输出_pandas to tuple-程序员宅基地

文章浏览阅读6.3k次,点赞6次,收藏13次。import pandas as pddf = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, 8], [1, 4, 5, 2]], columns=['a', 'b', 'c', 'd'])print(df)df = df.apply(lambda x: tuple(x), axis=1).values.tolist()print(df)输出结果: a b c d0 1 2 3 41 5 6 7 82 1 4 5 2[_pandas to tuple

ASP.NET2.0缓存(Cache)技术_"<%@ outputcache cacheprofile=\"productitemcachepr-程序员宅基地

文章浏览阅读685次。ASP.NET 2.0提供了一些新的用于提升程序性能的技术特性,其中,缓存技术是非常重要的一个特性,它提供了一种非常好的本地数据缓存机制,从而有效的提高数据访问的性能。 数据缓存(Data Caching)就是将数据暂存于内存缓存区中(有时也暂存于硬盘缓存区中)的一种技术.当数据本身改变得不怎么频繁,而被访问的频率又比较高时,采用这种技术将大大提高警惕数据访问的效率.1.网页输出缓存(_""

nvidia-361 : 依赖: lib32gcc1 但是它将不会被安装-程序员宅基地

文章浏览阅读4.4k次。安装GPU驱动时sudo apt install nvidia-361,出现问题:下列软件包有未满足的依赖关系:nvidia-361 : 依赖: lib32gcc1 但是它将不会被安装 依赖: libc6-i386 但是它将不会被安装E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。缺什么就安装什么sudo apt-g...

20个堪称神器的命令行软件-程序员宅基地

文章浏览阅读258次。点击上方"IT牧场",选择"设为星标"技术干货每日送达!1.ag:比grep、ack更快的递归搜索文件内容。2.tig:字符模式下交互查看git项目,可以..._命令行神奇

基于Webrtc和Janus的多人视频会议系统开发6 - 从Janus服务器订阅媒体流_springboot webrtc janus 视频会议-程序员宅基地

文章浏览阅读3.2k次。由于前段时间一直忙于开发,没有及时记录开发过程中遇到的问题,现在只能靠回忆来写一些印象深刻的坑了,本篇文章先把本系列的最后一篇补上,前面只是做到了把流推上去,现在还需要把流订阅下来。记得当时是遇到几个问题的,其中一个是订阅其他流后,自己发布的视频就没有声音了,其他问题已经记不清楚了,大家如果遇到什么问题说下说不定能帮助想起了。感接时有点疑惑,推流时已经建立了peerconnection,收..._springboot webrtc janus 视频会议

随便推点

基于C/C++实现 java项目工程加密安全防范_jar c++加密-程序员宅基地

文章浏览阅读4.5k次。工程加密场景介绍实现思路使用微信:13524503122场景介绍底层技术框架保密不被泄漏,项目不想被反编译泄漏内容,不想项目被拷走运行,需要做如下事:1.对编译后的JAR进行加密,未解密是启动不了的2.项目工程与机器绑定,未授权机器无法运行3.时间限定,授权时间到期自动停止总之:让公司的相关技术、相关业务项目不被泄漏实现思路1.对JAR进行加密,根据时间+MAC+密码生成授权文件2.使用c/c++ 解析授权文件解密、授权业务逻辑 生成动态连接库,支持跨平台3.编写java jni接口调_jar c++加密

家政服务系统小程序开发需要实现什么功能?_开源 小程序 家政服务 github-程序员宅基地

文章浏览阅读113次。随着家政服务行业的不断发展和普及,家政服务系统小程序已经成为了许多家政服务企业的首选。总之,家政服务系统小程序需要实现的功能包括用户注册和登录、服务项目展示、预约服务、支付功能、订单管理、评价服务和客服服务等方面。用户可以通过家政服务系统小程序对家政服务人员的服务进行评价,以便于家政服务企业及时改进和提高服务质量。用户可以通过家政服务系统小程序预约所需的服务项目和服务时间,以便于家政服务企业安排家政服务人员。用户可以通过家政服务系统小程序进行在线咨询和投诉,以便于家政服务企业及时解决用户的问题和需求。_开源 小程序 家政服务 github

ionic3中聚焦输入框时,内容被软键盘全部往上顶-程序员宅基地

文章浏览阅读109次。执行打包命令:ionic cordova build android --release然后会生成AndroidManifest.xml:image.png打开后,修改android:windowSoftInputMode="adjustPan|stateHidden"每次打包都需要记得修改这个属性,很麻烦,有没有直接修改编译前配置文件的办法?android:windowSo..._ionic3 聚焦输入框往下滚动

Docker镜像加速_国内可用的docker镜像加速-程序员宅基地

文章浏览阅读463次,点赞8次,收藏6次。确保安装好docker,_国内可用的docker镜像加速

Matlab:具有状态依赖时滞的延迟微分方程(DDE)_状态随着时滞变化的matlab代码-程序员宅基地

文章浏览阅读293次。在Matlab中,我们可以使用一些技巧来求解具有状态依赖时滞的DDE。ddeFunc是DDE的右侧函数,它定义了DDE的形式。在这个例子中,我们假设DDE的形式为dy(t)/dt = y(t) - y(t-τ)^2。为了使用Matlab求解这个DDE,我们需要将其转化为一个常微分方程(ODE)的问题。使用上述代码,我们可以求解具有状态依赖时滞的DDE,并得到数值解。其中,y(t)是未知函数,τ是一个给定的时滞,f是一个已知的函数。我们的目标是找到y(t)的解。最后,我们提取解的时间和数值,并绘制解的图像。_状态随着时滞变化的matlab代码

pytorch中的池化函数_pytorh global pooling-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏13次。PyTorch 提供了多种池化函数,用于对输入数据进行不同类型的池化操作。这些池化函数允许你对不同维度的输入数据进行平均池化或最大池化,并且有自适应版本,可以自动调整输入大小以满足指定的输出大小。选择适当的池化函数取决于你的应用和输入数据的维度。_pytorh global pooling

推荐文章

热门文章

相关标签