张道华
在雾天条件下获得的图像由于光受到空气中介质(如浮质、灰尘、雾和烟)的影响发生散射,出现图像发生退化、信息模糊等现象,这一现象会大大降低图像的利用价值.例如,高速公路上的监控器在雾天情况下无法清楚地监控路况和获取来往车辆的信息;在涉及国家安全的行动中,图像的退化会导致信息的不准确,增加了决策不确定性;在遥感探测、卫星成像中,带雾图像会引起信息处理与识别的偏差,不能较好地对图像数据进行研究分析.因此,研究图像去雾算法有非常重要的意义.鉴于此,基于Matlab构建图像去雾系统,分析比较三种经典去雾算法,以期为其他去雾算法的研究提供技术参考.
Matlab是矩阵实验室(Matrix Laboratory)的简称[1].Matlab作为面向对象的科学计算语言,它的符号计算与数值计算能力非常健壮、自然、简明.Matlab因其卓越的数值计算能力而成为科研领域进行仿真与计算的首选平台.它包括Matlab和Simulink两大部分,为用户提供了各种丰富的控件和组件,用以制作图形用户界面.
本去雾系统的构建与开发是在Matlab 2011a下完成的,因此,运行模块程序需在计算机上安装Matlab 2011a或更高版本.打开Matlab,在“文件”(File)菜单栏中选择“打开…”(Open…)在文件选择对话框中选择“.fig”文件,均可进入相应界面的编辑窗口.
本图像去雾系统集成了暗通道优先、直方图均衡化、Retinex三种去雾算法,不仅能够获取每种算法的中间结果和处理结果,还能够对三种算法进行评价系数比较[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].在对比模式下,处理展示三种算法的处理结果,并在表格中显示三种算法的运算速度,以及三种算法结果和原图的亮度、对比度、峰值信噪比.
如果已知I是雾化图像的颜色值(Observed Intensity),J是场景无雾情况下的颜色值(Scence Radiance),A是大气光颜色值(Global Atmosphere Light),而t则是场景色彩在各个区域通过程度的描述(Transmission Map,透射图).去雾方法的本质就是从I获取J,A和t.则:
在大气光均匀的条件下,t可以描述为
其中,β是大气散射系数,d是场景深度.
其中Jc是J的颜色通道,Ω(x)是以x,为中心的一小块区域.暗通道图是两个最小值运算的结果在每个像素上作的运算是最小值过滤器.我们称以下这个观察结果为暗通道优先理论,
由于阴影、彩色物体的表面、暗色的物体或物体的阴面三种因素会导致暗通道中像素亮度较低,因此需要估算t.
假设大气光A是已知的.
这里,每个颜色通道是独立的.
由于Ac恒为正,因此
根据上式得˜t(x)→0,所以引入一个常量参数ω(0<ω≤1),
在本文中将ω的值定为
接下来是软抠图(Soft Matting)的计算,图像抠图等式为
改进的t可以通过解下面的稀疏线性系统求得
估算大气光A的等式如下
其中R≤1,是场景中各点的反射比,得
并将式修改为
这种基于暗通道优先的方法比探测最亮点的方式更加有效,本文中对所有图像的大气光的估测均使用这种方法.
最后是恢复场景色彩,最终的场景恢复式为
t0的值可以设为0.1,本文中 Ω(x)选用15×15.
算法实现流程如图3.
图3 暗通道优先处理算法流程图
暗通道优先运行结果如图4,核心代码设计如下:
图4 暗通道优先运行效果图处理结果
从信息的角度看,当数据的分布接近均匀分布的时候,数据所承载的信息量(熵)为最大.为了增强图像,达到使其更加清晰的目的,直方图均衡化的基本思想是利用线性或非线性的方法,展宽图像中像素个数多的灰度级,压缩像素个数少的灰度级,从而调整灰度色调,提高图像的对比度.直方图均衡化的步骤如下.
则原图的灰度分布概率pf为[4]
其中,Nf=M×N(M,N分别为图像的长和宽)为图像的总像素的个数;
pa(i)为图像中第i个灰度值的累计分布概率[5],则有
其中,令pa(0)=0.
进行直方图均衡化计算,得到处理后图像的像素值g(i,j)为[6]
算法实现流程如图5.
直方图均衡化运行效果如图6,核心代码设计如下.
图5 直方图均衡化算法流程
图6 直方图均衡化运行效果图
Retinex理论中,成像过程可以用下式表示:
这种理论从心理物理实验研究色彩恒常性的行为,Land研究了人类视觉彩色感知和亮度的心理物理,提出了一个已使机器视觉有类似性能的理论.在上式中S是已知的,然后通过求解得到反射部分R(即反射图像),也就得到了增强后的图像.其可以表示为
其中k为归一化因子,c是高斯函数的尺度参数,为了便于计算,对其作对数处理.
由以上分析
可以得到增强模型,
再作线性变换,就可以得到增强后的图像.Retinex算法用数学公式可以概括为
Si(x,y)为原图的第i个色带,*是卷积运算,F(x,y)是环绕函数,一般选取高斯环绕函数,所以才会有上面出现的G(x,y),有很多文章上也用G(x,y).下文是对Retinex几个关键问题进行的分析.
首先是环绕函数的选取.事实上,在Retinex理论发展的早期,曾经有几种形式的函数被用作环绕函数.比如,Land曾建议用平方反比函数
作为环绕函数.后来被修改成
Moore提出了带绝对值的指数形式:
因为该形式类似于超大规模集成电路阻抗网络的响应.
Hurlbert提出了这种类型的高斯:
因为该公式在自然和机器视觉中广泛应用.
其次是尺度参数的选择,直接决定着SSR的性能,因此它被称为尺度参数[7].
其中RM是MSR在第i个彩色空间的输出,
i N为尺度个数,ωn为对应一个尺度的权值,且
在实际使用的时候,我们选择卷积函数的尺度参数应尽量包含各个范围的尺度,比如选择一个较小尺度,一个中间尺度,一个较大尺度.
算法流程如图7所示:
图7 Retinex算法流程图
Retinex算法处理结果如图8所示,核心代码如下:
图8 Retinex算法运行效果图
通过对三种经典的去雾算法进行讨论和分析,并基于算法进行代码设计与实现,为了综合比较三种算法的性能,针对同一幅带雾图像,分别使用三种算法处理,并计算对应算法的亮度、对比度及峰值信噪比[8],对比效果如图9所示.
图9 三种算法对比
随着图像处理技术在众多科学和工程领域的广泛应用,户外监视系统、智能交通系统以及军用的探测系统等计算机视觉系统的应用受到了越来越高的重视.然而雾霾天气下,道路可视性变差,获取的图像严重退化,对比度降低,颜色严重偏移与失真,场景模糊,给户外图像采集带来了严重不便,严重影响了交通系统和户外视觉系统的正常工作.因此,为了实现计算机视觉系统的全天候工作,图像去雾成为亟需解决的课题.针对雾天图像增强处理的研究已经成为计算机视觉和图像处理领域的研究热点,吸引了国内外大量研究者,提出了大量算法,文中三种算法都能在一定程度上完成对带雾图像的清晰化处理,但是在处理效果和处理速度上仍然各有差别,各有优缺点,暗通道优先算法的去雾效果最好,但运算时间要远高于其他两种算法.为了实现雾天路况监控视频的即时去雾,更加快速、有效的算法的设计仍在不断发展和完善之中.