您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 基于Matlab的图像去雾系统的设计研究
收稿日期:2018-04-25基金项目:安徽高校自然科学研究项目(KJ2017A703);安徽省质量工程项目(2016ckjh124);安徽省教学研究重大项目(2016jyxm067);安徽省质量工程项目(2014msgzs170).作者简介:张道华,女,安徽六安人,亳州学院电子与信息工程系副教授(安徽亳州236800).张道华基于Matlab的图像去雾系统的设计研究科技开发与应用基于Matlab的图像去雾系统的设计研究张道华摘要:为了实现雾天图像的增强,采用Matlab对集成直方图均衡化、Retinex、暗通道优先三种雾天图像清晰化处理算法的去雾系统进行软件实现,不仅能够对这三种算法的最终结果和中间产物进行输出,还能够对这三种算法的算法效率和算法结果进行直观数字的对比.实验表明,三种算法各有优缺点,实际应用中可根据需要选取适当的算法.该系统的设计可为其他去雾算法的研究提供技术参考.关键词:Matlab;图像增强;去雾系统;三种算法中图分类号:TP311文献标识码:A文章编号:1008-7974(2019)02-0001-06DOI:10.13877/j.cnki.cn22-1284.2019.04.001在雾天条件下获得的图像由于光受到空气中介质(如浮质、灰尘、雾和烟)的影响发生散射,出现图像发生退化、信息模糊等现象,这一现象会大大降低图像的利用价值.例如,高速公路上的监控器在雾天情况下无法清楚地监控路况和获取来往车辆的信息;在涉及国家安全的行动中,图像的退化会导致信息的不准确,增加了决策不确定性;在遥感探测、卫星成像中,带雾图像会引起信息处理与识别的偏差,不能较好地对图像数据进行研究分析.因此,研究图像去雾算法有非常重要的意义.鉴于此,基于Matlab构建图像去雾系统,分析比较三种经典去雾算法,以期为其他去雾算法的研究提供技术参考.1Matlab基础知识介绍Matlab是矩阵实验室(MatrixLaboratory)的简称[1].Matlab作为面向对象的科学计算语言,它的符号计算与数值计算能力非常健壮、自然、简明.Matlab因其卓越的数值计算能力而成为科研领域进行仿真与计算的首选平台.它包括Matlab和Simulink两大部分,为用户提供了各种丰富的控件和组件,用以制作图形用户界面.本去雾系统的构建与开发是在Matlab2011a下完成的,因此,运行模块程序需在计算机上安装Matlab2011a或更高版本.打开Matlab,在“文件”(File)菜单栏中选择“打开…”(Open…)在文件选择对话框中选择“.fig”文件,均可进入相应界面的编辑窗口.2基于Matlab的图像去雾系统的结构设计本图像去雾系统集成了暗通道优先、直方图均衡化、Retinex三种去雾算法,不仅能够获取每2019年第2期第40卷总第289期(自然科学)学报··12019年第2期(自然科学)学报种算法的中间结果和处理结果,还能够对三种算法进行评价系数比较[2].该系统可根据需要进行迭代更新,增加新的去雾算法.系统的结构设计如图1.图1去雾系统的结构通过对各个模块进行算法设计与代码实现,得到的去雾系统的主界面如图2.代码中“Dehaze⁃Sysm.fig”为主菜单界面配置文件,“DehazeSysm.m”为主菜单后台程序;“darkchannel.fig”为暗通道优先算法模式界面配置文件,“darkchannel.m”为暗通道优先算法模式后台程序;“Histo.fig”为直方图均衡化算法模式界面配置文件,“Histo.m”为直方图均衡化算法模式后台程序;“Retinex.fig”为Retinex算法模式界面配置文件,“Retinex.m”为Retinex算法模式后台程序;“Contrast.fig”为三种算法对比模式界面配置文件,“Contrast.m”为三种算法对比模式后台程序.在主菜单下可进入暗通道优先算法模式、直方图均衡化算法模式、Retinex算法模式和对比模式四种模式,点击“生成”或“对比”则可以生成处理结果,点击“清除”按钮可以将界面中的图像和按钮置为初始状态.图2去雾系统主界面在三种算法模式下,除了可以在右上角显示去雾后的增强图像,还可以在下方显示算法产生的对应中间结果,包括:暗通道优先处理算法的暗通道图和透射图;直方图均衡化算法中能够显示去雾前后RGB通道的灰度直方图;Retinex算法中处理前后的通道分量图[3].在对比模式下,处理展示三种算法的处理结果,并在表格中显示三种算法的运算速度,以及三种算法结果和原图的亮度、对比度、峰值信噪比.3主要功能模块设计3.1暗通道优先算法如果已知I是雾化图像的颜色值(ObservedIntensity),J是场景无雾情况下的颜色值(ScenceRadiance),A是大气光颜色值(GlobalAtmosphereLight),而t则是场景色彩在各个区域通过程度的描述(TransmissionMap,透射图).去雾方法的本质就是从I获取J,A和t.则:I()x=J()xt()x+A(1-t(x)).在大气光均匀的条件下,t可以描述为t()x=e-βd()x,其中,β是大气散射系数,d是场景深度.Jdark()x=miny∈Ω()xæèçöø÷minc∈{}r,g,bJc()y,其中Jc是J的颜色通道,Ω()x是以x,y∈Ω()x为中心的一小块区域.暗通道图是两个最小值运算的结果:minc∈{}r,g,b在每个像素上作的运算;miny∈Ω()x是最小值过滤器.我们称以下这个观察结果为暗通道优先理论,Jdark→0.由于阴影、彩色物体的表面、暗色的物体或物体的阴面三种因素会导致暗通道中像素亮度较低,因此需要估算t.假设大气光A是已知的.Ic()xAc=t()xJc()xAc+1-t()x,这里,每个颜色通道是独立的.miny∈Ω()xæèççöø÷÷mincIc()yAc=t͂()xminy∈Ω()xæèççöø÷÷mincJc()yAc+1-t͂()x,Jdark()x=miny∈Ω()x()mincJc()y=0.··2张道华基于Matlab的图像去雾系统的设计研究由于Ac恒为正,因此miny∈Ω()xæèççöø÷÷mincJc()yAc=0,t͂()x=1-miny∈Ω()xæèççöø÷÷mincIc()yAc.实际上,miny∈Ω()xæèççöø÷÷mincIc()yAc是规范化的雾天图像IcAc的暗通道,对于天空部分可得miny∈Ω()xæèççöø÷÷mincIc()yAc→1;根据上式得t͂()x→0,所以引入一个常量参数ω(0ω≤1),t͂()x=1-ωminy∈Ω()xæèççöø÷÷mincIc()yAc,在本文中将ω的值定为0.95.接下来是软抠图(SoftMatting)的计算,图像抠图等式为I=Fα+B()1-α,E()t=tTLt+λ()t-t͂T()t-t͂,∑k|()i,j∈ωkæèççöø÷÷δij-1||ωkæèççöø÷÷1+()Ii-μkTæèççöø÷÷Σk+ε||ωkU3-1()Ij-μk.改进的t可以通过解下面的稀疏线性系统求得()L+λUt=λt͂.估算大气光A的等式如下J()x=R()xA,其中R≤1,是场景中各点的反射比,得I()x=R()xAt()x+()1-t()xA≤A,J()x=R()x()S+A;并将式修改为I()x=R()xSt()x+R()xAt()x+()1-t()xA.这种基于暗通道优先的方法比探测最亮点的方式更加有效,本文中对所有图像的大气光的估测均使用这种方法.最后是恢复场景色彩,最终的场景恢复式为J()x=I()x-Amax()t()x,t0+A,t0的值可以设为0.1,本文中Ω()x选用15×15.算法实现流程如图3.图3暗通道优先处理算法流程图暗通道优先运行结果如图4,核心代码设计如下:dehaze=zeros(img_size*c,1);dehaze=reshape(dehaze,h,w,c);win_dark=zeros(img_size,1);win_dark(cc)=1;win_dark=reshape(win_dark,h,w);win_dark(m,n)=m_pos_min;win_dark(cc)=1-win_dark(cc);A=sparse(row_inds,col_inds,vals,img_size,img_size);sumA=sum(A,2);A=spdiags(sumA(:),0,img_size,img_size)-A;D=spdiags(win_b(:),0,img_size,img_size);x=(A+lambda*D)\(lambda*win_b(:).*win_b(:));alpha=max(min(reshape(x,h,w),1),0);A=220/255;dehaze(j,l,i)=(I(j,l,i)-A)/alpha(j,l)+A;··32019年第2期(自然科学)学报图4暗通道优先运行效果图处理结果3.2直方图均衡化算法从信息的角度看,当数据的分布接近均匀分布的时候,数据所承载的信息量(熵)为最大.为了增强图像,达到使其更加清晰的目的,直方图均衡化的基本思想是利用线性或非线性的方法,展宽图像中像素个数多的灰度级,压缩像素个数少的灰度级,从而调整灰度色调,提高图像的对比度.直方图均衡化的步骤如下.设f()i,j,g()i,j,(i=1,2,⋯,M;j=1,2,⋯,N),则原图的灰度分布概率pf为[4]pf()i=1Nf⋅hf()i,i=0,1,2,⋯,255,其中,Nf=M×N(M,N分别为图像的长和宽)为图像的总像素的个数;pa(i)为图像中第i个灰度值的累计分布概率[5],则有pa()i=∑k=0ipf()k,i=1,2,⋯,255,其中,令pa(0)=0.进行直方图均衡化计算,得到处理后图像的像素值g(i,j)为[6]g()i,j=255⋅pa(k).算法实现流程如图5.直方图均衡化运行效果如图6,核心代码设计如下.ir=img1(:,:,1);ig=img1(:,:,2);ib=img1(:,:,3);Ir=histeq(ir);Ig=histeq(ig);Ib=histeq(ib);I=cat(3,Ir,Ig,Ib);图5直方图均衡化算法流程图6直方图均衡化运行效果图3.3Retinex算法Retinex理论中,成像过程可以用下式表示:S()x,y=R(x,y)⋅L(x,y).这种理论从心理物理实验研究色彩恒常性的行为,Land研究了人类视觉彩色感知和亮度的心理物理,提出了一个已使机器视觉有类似性能的理论.在上式中S是已知的,然后通过求解得到反射部分R(即反射图像),也就得到了增强后的图像.其可以表示为G()x,y=k⋅ex2+y2c2.其中k为归一化因子,c是高斯函数的尺度参数,为了便于计算,对其作对数处理.··4张道华基于Matlab的图像去雾系统的设计研究r()x,y=s()x,y-l()x,y,其中r()x,y=log[]R()x,y,s()x,y=log[]S()x,y,l()x,y=log[]L()x,y.由以上分析可以得到增强模型,r()x,y=log[]R()x,y=logS()x,yL()x,y=log[]S()x,y-log[]S[]x,y-G()x,y再作线性变换,就可以得到增强后的图像.Retinex算法用数学公式可以概括为Ri()x,y=logSi()x,y-log[]F()x,y*Si()x,y.Si()x,y为原图的第i个色带,*是卷积运算,F()x,y是环绕函数,一般选取高斯环绕函数,所以才会有上面出现的G()x,y,有很多文章上也用G()x,y.下文是对Retinex几个关键问题进行的分析.首先是环绕函数的选取.事实上,在Retinex理论发展的早期,曾经有几种形式的函数被用作环绕函数.比如,Land曾建议用平方反比函数F()x',y'=1r2,r=x'2+y'2,作为环绕函数.后来被修改成F()x',y'
本文标题:基于Matlab的图像去雾系统的设计研究
链接地址:https://www.777doc.com/doc-6053598 .html