杨德明,吴青娥,陈 虎
(郑州轻工业大学 电气信息工程学院,河南 郑州450002)
随着社会及科学技术的发展,机器视觉系统在各领域得到广泛应用。但是,在有雾天气下所采集的图像退化严重,使基于光学仪器的智能系统无法正常工作。因此,有雾图像去雾算法的研究有着理论和现实意义。目前,图像去雾方法[1-5]分为2类:基于图像增强的算法和基于物理模型的算法。
基于图像增强的去雾方法最为流行的是Retinex算法,例如王小霞等人[6]提出基于Retinex的快速去雾方法,然而Retinex算法具有复杂度高、计算量大及光晕现象等固有缺陷。
基于物理模型的去雾方法是研究大气悬浮颗粒对光线的散射作用,建立有雾图像退化模型,反演还原出无雾图像,去雾效果逼真,更贴近降质前的景物原景。基于物理模型的去雾图像复原算法可分为基于偏微分方程、深度关系和先验信息等去雾图像复原算法。该去雾方法最早由O-akley等人[7]提出了一种在已知场景深度几何信息情况下的去雾方法,但此去雾方法需要昂贵的雷达等装置来取得场景深度信息。Narasimhan 等人[8-9]依据降质图像退化模型,提出了根据不同大气条件引起场景色彩变化的几何约束来获取场景深度信息的去雾方法。依据先验信息的单幅降质图像去雾方法,早期工作由Tan等人[10]完成,但去雾图像颜色往往趋于饱和。
He等人[11]在前人基础上提出利用暗通道先验算法,但是该算法存在光晕颜色失真现象。为了解决软抠图算法耗时问题,He等人[12]提出了一种新颖的引导滤波算法,用于去雾和制导羽化等应用。崔倩男等人[13]在文献[11-12]的基础上提出了改进暗通道先验的引导滤波去雾算法,但该算法存在光晕颜色失真的问题。天空区域分割优化[14-15]去雾算法最近被提出,取得不错的效果。邢晓敏等人[16]提出最大类间差法的改进去雾算法,然而该算法存在区域误分割的不足,造成还原出的无雾图像颜色失真现象,因此,该去雾算法有待改进。
针对上述问题,本文提出基于颜色特征的K均值区域分割优化的改进暗通道先验去雾算法。本文的改进算法对粗略透射率图进行区域优化处理,纠正暗通道先验算法对天空区域透射率图的估计偏差。将有雾图像、优化的透射率图和大气光值带入雾天图像退化模型,还原出无雾图像。
依据雾天图像退化模型,利用暗通道先验理论求出雾霾图像的粗略透射率t1(x)。将t1(x)等参数直接代入雾天图像退化模型对图像反演去雾,还原的无雾图像会出现块效应。以有雾图像的灰度图为引导图对t1(x)进行引导滤波优化得到细化透射率t2(x),把有雾图像I(x),t2(x)以及全局大气光值A,代入雾天图像退化模型,恢复出无图雾像J(x),消除了块效应。相比软抠图算法,引导滤波去雾算法具有耗时少的优点。基于引导滤波优化的暗通道先验去雾算法如图1所示。
图1 基于引导滤波优化的暗通道先验去雾算法
在文献[8-9]中,Narasimhan等人通过研究不同天气条件下的大气粒子特性,提出了雾霾天气的大气散射模型,其模型如式(1)所示:
I(x)=J(x)t(x)+A(1-t(x))。
(1)
该模型包括物体反射光衰减模型和大气环境光模型两部分,其中x表示像素二维坐标值,I(x)表示有雾图像,J(x) 表示无雾图像,A表示大气光强度值,大气透射率t(x)定义为:
t(x)=e-βd(x),
(2)
式中,β表示大气散射系数,d(x)表示景深。文献[10]中,Tan等人提出了景深特性具有局部平滑性,即在边缘处会有大的突变,非边缘的大部分区域是平滑的。根据式(2),透射率也应具备景深特性,边缘处会有大的突变,非边缘的大部分区域是平滑的。
文献[11]中,He 等人提出了暗通道先验理论。He 等人研究并统计无雾图像特征,发现在无雾图像的非天空局部区域内总是存在一些RGB颜色像素点,在至少一个颜色通道内的颜色分量值接近于零,定义为暗通道,暗通道的公式为:
(3)
式中,Jdark(x)表示无雾图像J(x)的暗通道,Ω(x)表示以x为中心的局部区域,Jc代表一个颜色通道,c表示R,G,B三颜色通道。对于户外的无雾图像J(x),统计发现其暗通道趋向于零。
假定大气光值A给定,对式(1)使用最小值滤波得到:
(4)
根据Jdark(x)暗通道的值趋于零这一先验规律,将式(3)带入式(4),即可求出t1(x):
。(5)
在实际无雾场景图像和景深较远的场景中依然会有一些雾气,因此引入ω(0<ω<1)来降低去雾程度。此时粗略透射率t1(x)缺乏边缘跳变特性,出现块状效应,t1(x)有待优化。
相比以彩色有雾图像作为引导图,简单有效的是以有雾图像的灰度图为引导图,对粗透射率进行引导滤波的细化处理,引导图表示为式(6)。
Iguide(x)=H(x)=RGBtoGRAY(I(x)),
(6)
式中,RGBtoGRAY(·)表示对彩色图像灰度化,H(x)表示I(x)的灰度图,Iguide(x)代表引导图。
用Iguide(x)作为引导图,利用引导滤波对t1(x)进行优化,得到t2(x)。文献[12]详述了引导滤波算法,引导滤波简约定义为式(7)。
t2(x)=Guide(t1(x),Iguide(x)),
(7)
式中,Guide(·)表示对图像进行引导滤波优化处理,式(7)是以引导图Iguide(x)对t1(x)进行引导滤波优化得到细化透射率t2(x)。粗略透射率t1(x)经引导滤波优化后,得到细化透射率t2(x),消除块状效应。
文献[11]中,He等人将全局大气光值A选取为暗通道图中0.1%最亮的像素,它们所在的区域是雾最浓的区域;在有雾图像中选取同位置区域的像素,求取亮度平均值,作为全局大气光值A。这样可以避免输入有雾图像中的白色物体对选取大气光值的干扰。将有雾图I(x)、A和细化透射率t2(x)带入雾天图像退化模型恢复出J(x)。
(8)
式中,t0表示透射率设定的下限值,当t2(x)趋近于零时,会使J(x)引入噪声,t0一般取0.1。
针对天空区域缺乏暗原色,不符合暗通道先验规则,暗通道先验算法存在误估天空区域透射率的不足,造成天空区域去雾产生光晕失真现象。由此涌现出各种基于天空区域分割优化的去雾算法。不同大气光值环境下,固定分割阈值天空区域分割存在区域误分割的缺点,邢晓敏[16]等人提出利用大津算法进行自适应图像区域分割优化去雾算法,取得不错的效果。大津算法,又称作最大类间差法(OTSU),是一种基于图像灰度空间的自适应阈值区域分割算法。然而大津算法误将前景区域灰度较高的物体错误分割为天空区域,因此文献[16]算法去雾存在图像失真现象。针对上述问题,本文提出了一种K均值区域分割优化的改进暗通道先验去雾算法,如图2所示。
本文算法提出K均值区域分割算法,基于图像颜色特征能够将有雾图像的天空区域和前景区域准确分割开。对粗略透射图进行区域优化,将有雾图像I(x)、大气光值A和区域优化的透射图代入去雾模型进行有雾图像去雾。
图2 区域分割优化的改进暗通道先验去雾算法
1967年MacQueen等人[17]提出了 K均值算法。K均值算法是基于距离的一种聚类算法,K均值聚类算法原理是对于给定的数据总数为N的待测集合X,依据集合X的某种特征属性,将待分集合分为k个类别,表示为集合S={S1,S2,…,Sk},其中k≤n。随机选取k个数据点μ1,μ2,…,μk作为类别Si的初始聚类中心,求出待分对象到初始聚类中心的距离,将待分对象分配给距离最近的类别,最后重新算出划分k个集合的聚类中心,不断迭代计算出新的聚类中心,直到所有的观测值类别不再改变,或者迭代次数达到最大的预设值。最终以群内的方差作为聚类准则函数,方差越小聚类效果越好。
K均值算法的聚类分类原则是给定μ1,μ2,…,μk初始聚类中心,计算出待测集合X中的数据点Xm到聚类中心μj的欧氏距离d(Xm,μj) ,即求其2-范数,将Xm归为最小欧氏距离Sj的所属类别,聚类分类原则定义为式(9)。
(9)
式中,j表示类别号,j∈[1,k];t表示聚类算法迭代次数;m表示集合X的数据点,m∈[1,N];N为待测集合X的数据总数;argmin(·)表示求解数据集的最小值。
聚类中心是指每个类别Sj的质心μj,迭代计算聚类中心定义为式(10)。
(10)
K均值区域分割算法简约定义为式(11)。
Gk(x)=KMEANS(I(x),k),
(11)
式中,KMEANS(·)表示对彩色图像进行K均值聚类区域分割,I(x)表示有雾图像,k表示分割图像的区域数量,根据分割实验,k取经验值为5,Gk(x)为聚类分割后的类别标签图。基于K均值聚类算法的区域分割效果图如图3所示。
图3 K均值聚类算法的区域分割效果图
以选取大气光值A的局部区域为掩膜(大气光值A选取区域如图4(a)所示),统计出Gk(x)类别标签图对应掩膜区域位置的类别标签值作为天空区域的类别标签值Aj。获取二值图定义为式(12)。其中Gk(i)为类别标签图像Gk(x)的一点,Aj为天空区域的类别标签值,B(x)为天空区域分割二值图。
(12)
当Gk(i) 的类别标签Sj=Aj时,i处于天空区域,B(i)值置为0,当Gk(i) 的类别标签Sj≠Aj时,i处于前景区域,B(i)值置为255。经二值化得到天空和前景区域分割二值图B(x),对B(x)形态闭运算,消除瑕疵空隙。获取区域分割二值图B(x)如图4所示。其中图4(a)中矩形区域为大气光值A选取区域,图4(b)为天空与前景区域分割二值B(x)。
图4 区域分割二值图和区域优化透射率
以二值图B(x)为掩膜,对粗略透射率t1(x)进行区域优化处理。当二值图中B(i)为0时,i坐标点位于天空区域,增大对应粗略透射率图i坐标点的粗略透射率数值,衰弱其去雾强度,消除天空区域去雾时产生的光晕颜色失真现象;当二值图中B(i)为255时,i坐标点位于非天空的前景区域,减小对应粗略透射率图i坐标点的粗略透射率数值,增强其去雾强度,消除去雾不彻底现象。区域优化粗略透射率t1(x)算法定义为式(13)。
(13)
(14)
将有雾图I(x)、t2(x)和大气光值A带入雾天图像退化模型,还原出无雾图像J(x)。本文提出多空间阈值自适应区域分割优化的改进暗通道先验去雾算法,天空区域分割准确,还原出的无雾图像细节丰富真实,颜色逼真,消除了基于暗通道先验去雾算法天空区域去雾产生光晕颜色失真的现象。去雾效果图如图5所示。
图5 去雾效果图
为验证本文提出去雾算法的正确性和可行性,从网络百度图片中采集有雾图像进行去雾实验。实验平台采用 CPU i5-7500 处理器、显卡采用 GTX 1050Ti、内存为16 G及操作系统为Windows10的台式计算机,运用Visual Studio 2013及Opencv3.1.0对本文所提去雾算法进行编程实验验证。
文献[16]提出基于大津算法的区域分割算法,取得不错的去雾效果。然而其采用的基于图像灰度图的区域分割算法,存在将灰度值较高的前景区域图像错误分割为天空区域的不足,造成还原出的无雾图像失真。
本文提出K均值区域分割优化的改进暗通道先验去雾算法,能够满足不同大气光值环境下,依据颜色特征将有雾图像天空区域准确分割开,弥补了文献[16]分割算法存在误分割天空区域的不足。对粗略透射图进行区域优化处理,将有雾图像I(x)、大气光值A及区域优化的透射图代入去雾模型进行有雾图像去雾,去雾图像颜色保真度高,图像细节得到增强。
图6为文献[16]算法和本文算法的去雾比较。比较图6(b)和图6(d),图6(g)和图6(i),本文算法的区域分割二值图能够较好地将天空区域分割出来,而文献[16]算法的区域分割二值图存在将灰度值较高的前景物体误分割为天空区域的现象。主观比较分析图6(c)和图6(e)、图6(h)和图6(j),文献[16]算法的去雾图存在颜色失真现象,本文算法去雾图清晰真实。
图6 文献[16]去雾算法和本文去雾算法比较
图7为文献[16]算法及本文算法去雾结果比较分析。H分量直方图横坐标归一化为0~180°色调角,纵坐标为0~180°各色调统计数值。其中0°表示红色,30°表示黄色,60°表示绿色,90°表示青色,120°表示蓝色,150°表示品红色。
对文献[16]算法去雾结果进行比较分析。对比文献[16]算法去雾图O1的图7(f)和图7(b),可知图7(f)的轮廓线基本拟合图7(b)的曲线。同样对比图7(h)和图7(d),可知图7(h)的轮廓线与图7(d)的曲线不相吻合,且图7(h)的图形面积相较急剧变小。上述说明,文献[16]算法存在去雾图失真现象。
对本文算法去雾结果进行客观比较分析。对比图7(j)和图7(b),可知图7(j)的轮廓线和图7(b)的轮廓线变化趋势和幅度相吻合,图7(j)的图形面积有所增大,色调角150°附近像素数量较图7(f)的相应区域丰富,印证了文献[16]去雾图O1存在建筑物切顶失真。对比7(l)和图7(d),可知图7(j)的轮廓线和图7(d)的轮廓线变化趋势和幅度基本一致,二者图形面积相较基本不变。上述说明本文算法去雾图像颜色真实。
实验结果表明,文献[16]算法因存在区域误分割的不足,使去雾图出现颜色失真现象。本文算法能够满足不同环境天空区域准确分割,还原出的无雾图像细节丰富,颜色逼真。
图7 文献[16]去雾算法和本文去雾算法去雾结果客观比较分析
有雾图像分别采用文献[6 ]的基于Retinex的MSRCR带有彩色恢复的多尺度图像增强算法和文献[11]He的算法,以及本文去雾算法进行去雾结果比较与分析。
图8为本文算法与常见算法去雾效果。主观比较分析不同去雾算法效果如下:对比文献[6]算法去雾图8(e)和图8(g)与对应有雾图8(a)和图8(c),图8(e)和图8(g)图像整体偏暗,但对比度有所提升。对比文献[11]He的算法去雾图8(i)和图8(k)与对应有雾图8(a)和图8(c),图8(i)和图8(k)图像天空区域存在颜色失真现象,前景区域图像细节丰富颜色逼真。对比本文算法去雾图8(m)和图8(o)与对应有雾图8(a)和图8(c),图8(m)和图8(o)图像细节丰富颜色逼真,天空区域颜色无失真。
客观比较分析不同去雾算法效果。对文献[6]算法去雾结果进行客观比较分析。对比图8(f)和图8(b),可知图8(f)的轮廓线背离了图8(b)的曲线,且图8(f)的图形面积相较减小殆尽。同样对比图8(h)和图8(d),可知图8(h)的轮廓线与图8(d)的曲线不相一致,且图8(h)的图形面积相较严重衰减。上述说明,文献[6]算法存在去雾图颜色失真现象。
对文献[11]He的算法去雾结果进行客观比较分析。对比图8(j)和图8(b),可知图8(j)的轮廓线基本契合了8(b)的曲线变化趋势,但色调角120°附近略有凸起,这也印证了天空区域存在蓝色碎片状颜色失真。对比图8(l)和图8(d),可知图8(l)的轮廓线与图8(d)的曲线基本一致,且图8(l)的图形面积相较变化不大,但色调角180°附近的紫色像素点数量相较增大,反映出天空区域去雾图像颜色偏紫色。上述说明,文献[11] He的算法去雾图像的天空区域存在颜色失真现象。
对本文算法去雾结果进行客观比较分析。对比8(n)和图8(b),可知图8(n)的轮廓线基本契合了图8(b)的曲线变化趋势,色调角0°附近红色像素有明显增多,说明去雾后红色前景部分得到增强。对比图8(p)和图8(d),可知图8(p)的轮廓线与图8(d)的曲线基本一致,对应色调角120°的蓝色附近像素点数量相较增大。且图8(p)的图形面积相较变化不大。上述说明,本文算法去雾图颜色保真度高。
图8 本文算法与常见算法去雾效果比较分析
本文提出的K均值区域分割优化的改进暗通道先验去雾算法和其他流行去雾算法实验结果比较,实验结果表明,本文算法能够满足不同大气光值环境下的天空区域准确分割,弥补了基于灰度空间的分割算法存在天空区域误分割而引起去雾失真的不足,使还原出的无雾图像细节丰富真实,颜色保真度高,消除了天空区域去雾时产生光晕颜色失真现象。实验结果验证了本文算法的正确性和可行性。
然而,本文去雾算法仍存在前景含有颜色类似天空的区域误分割的不足,本文区域分割算法仍有改进空间。近年来,基于深度学习的图像语义分割算法日臻成熟,相较传统的图像分割算法,区域分割精确率更高,算法鲁棒性更强。今后,将进行基于深度学习图像语义区域分割优化的去雾算法研究工作,期待获得更好的去雾效果,满足社会雾天安全生产生活的需要。