暗通道去雾技术和聚类算法的优化研究
2019-07-25
(1.大连海事大学 信息科学技术学院,大连 116026; 2.大连海事大学 轮机工程学院, 大连 116026;3.大连海事大学 船舶电气工程学院,大连 116026; 4.大连海事大学 航运经济与管理学院,大连 116026)
0 引言
在雾天中,因为悬浮在空气中的大部分粒子对光线有散射等作用,使太阳光透过雾的强度值变低,观察的景色能见度过低,对比度降低,细节信息缺失,视觉效果较差。对于交通、导航、遥感等有很大的影响,人们的生产和生活带来了极大的。因此,计算机视觉系统在实践中发挥着重要作用,雾天图像的去雾是计算机视觉领域中的一个很有意义的问题,具有广阔的应用前景和价值。
随着人工智能技术的发展,去雾算法的研究的取得了不错的发展。He等提出了暗原色先验等方法,目前图像去雾算法大抵可以分为两类:一则基于图像增强的图像去雾方法,二则是基于物理模型的图像去雾方法[1-2]。同态滤波、直方图均衡化、Retinex加强、小波变换算法等都是基于非物理模型的去雾算法。直方图均衡化算法缺乏对局部场景信息的思量,对比度过低或过高,视觉效果不理想[6]。同态滤波算法应用了对数变换和傅氏变换,对图像削弱低频加强高频。小波变换对亮度超亮和超暗的情形不适用。基于物理模型的图像去雾算法主要涵盖了基于偏微分方程的修复方法、采取景深关系的图像去雾方法等。这种方法利用了景深信息,意图最大程度的将图像恢复到原来的状态。但是他在大气模型的基础之上增加了一些假设条件,具有一定得局限性。基于暗通道去雾算法是目前国内最先进的去雾方法效果明显,发展迅捷。
本论文创新点是使用暗原色先验去雾算法拟合和K均值聚类算法对原来的去雾算法采取了优化,在暗原色先验去雾算法的条件上获得暗原色图,并且对应估算出透射率;再利用线性数学拟合获得最后的透射率。但是大气光强度值的计算是应用K均值聚类算法把有雾图像进行聚类处理,并且在得到的天空面积和雾最多的面积中获取原来有雾图的最大像素的值为大气光强值,用去雾算法恢复出无雾图像。
1 暗通道图像去雾
1.1 大气散射模型
在雾天时,由于空气中含有部分杂质,一些悬浮粒子存在散射和吸收作用,使得光学成像对比度降低,颜色偏灰白色,视觉效果也不是很好。即使在大多数不是雾天部分区域的天空中,总存在有像素至少有一个颜色通道具备很低的值。也就是说,此区域的光强度值得最小值是一个很小的数值。清华大学何恺明曾经发表过一篇很著名的论文《Single Image Haze Removal Using Dark Channel Prior》,暗原色先验去雾算法是由他首先提出的。
在雾天中,由于一些杂质混杂在大气中,使得大气发生了散射作用。不少人对大气的散射进行了一定的研究,其中McCarney等人的研究成果较为显著,他提出了一种模型被广泛应用,具体如下:
C(x)=t(x)J(x)+(1-t(x))A
(1)
C为所得到的输入图像的光强;T为光线透射率;A为大气光成分;J为无雾时景物的光强。
图像去雾通过C求未知参数J,A,t。当前方程的个数少于未知量的个数,从某种角度来说,暗原色先验相当于其中我们加入的一个约束条件。
1.2 暗原色先验
Dr.He是微软亚洲研究院研究计算机视觉方面的领军人物,He等对于暗原色先验的理论做了许多的观察实验,并得出结论:是通过大量实验来总结得到的一条规律:在大部分阳光照射丰富,户外不含有雾的图像中,在一些局部区域存在某个颜色通道(R、G、B)的强度值很低的情况。对户外无的雾图像J进行分块,对每一个像素块定义暗原色如下[3]:
(2)
式中,Ω(x)是以x为中心的,以正方形邻域的窗口,Jc为J三原色的一个通道,Jdark(x)即为图像J在这个邻域的暗原色。观察统计表明Jdark趋于零。即:
(3)
在带雾图像中这些暗原色值升高。
1.3 K—means聚类算法
前面已经说过,数年前何凯明博士已提出了暗原色先验去雾算法,经由这个算法能够很好的恢复图像,从有雾图像中还原出无雾图像。可是,何凯明博士的算法仍有一些可优化之处。2013年,虽然何凯明博士又提出了引导滤波的算法,此时能够解决第一个问题,使计算复杂度降低,但透射率的估计效率仍然很低。并且,当图像中存在亮度很高的面积时,此时会造成大气光强A的估计值失真以及图像失真问题,去雾效果受到影响。
为了能够很好的解决这问题,我们利用当下比较热门的人工智能技术—机器学习之K—means算法来解决这个问题。本文将采取由MacQueen所提出的K均值算法与暗原色先验去雾算法结合进行优化,力求得到更好的去雾效果。它的主要思路是:
1)首先把各个聚类子集中的全部数据个体的平均值作为此聚类的中心店;
2)再通过一次又一次的迭代计算把数据集归为不一样的类别;
3)使得判断聚类能力的评价方法达到最佳效果,聚类后相同的类聚集效果明显,独立的类间有较好的区分效果。
这种算法主要用来处理连续数据时,离散的数据是不适用的。K均值算法的算法流程如下:K均值算法是一个重复的迭代计算,其最终要求是使聚类样本中所有的数据到聚类中心路程的平方和J(C)最小,它有4个步骤,流程图如图1所示。
图1 K均值聚类算法流程图
2 模型算法求解
2.1 结合K—means去雾概述
若仅仅使用暗原色去雾算法,存在两个问题:
1)暗原色先验去雾算法在恢复有雾图像时运算复杂度高;
2)当天空中有高亮度值面积有局限性而造成有雾图像容易产生图像失真;
本论文从暗原色模型开始,在暗原色先验去雾算法的条件上获得暗原色图,并使用暗原色先验算法拟合来估计透射率,再使用K均值聚类算法给有雾图像进行区域划分以后,再对天空区域估算出大气的光强度值。K均值算法加强了图像的细节特征,而且很好地减小了算法的复杂计算度,还加强了大气光强度测算值的正确性,很好减小了亮度值高区域的失真。针对大气光强的计算是先通过K—means聚类算法把图像进行处理,继而把获得到的有雾图像最大像素值作为大气光强值,最后用暗原色先验算法得到无雾图像。
这个算法至关重要的部分便是对大气光强A的估算。何凯明博士采用有无图像的暗原色通道的0.1%的亮度像素点,将此点的原图的最大像素值定义为大气光强度值,当有雾图像中的白色景物的面积较小时,可以获得比较精确的估算[4]。然而,当图像中存在大面积的高亮度值时,这是会造成大气光强度值估算不精确,并且会使图像颜色失真,这会大大降低去雾质量。
2.2 暗原色去雾
我们设t(x)代表局部透射率,并假定每一个像素块的光线透射率是相同的,通过其像素块的大小来影响透射率。假定大气光强A是已知量,则有:
(4)
根据1.2节当中我们已经阐述了暗原色先验原理可知,
(5)
由于世间的大部分物质都不可能100%纯净没有杂质的,即使在光强很高的晴天中,也含有微粒冗杂在大气中,所以为了真实性,我们设置了一个w参数用来模拟表示,w的值一般介于0~1之间,公式如下:
(6)
2.3 大气光强估计
(7)
计算出透射率之后,最后可得到J的求解公式为:
(8)
3 实验结果分析
3.1 暗原色去雾
暗通道先验去雾算法是何凯明博士经过大量统计实验数据研宄验证发现的。基本去雾流程如图2所示。
图2 原理图
基于彩色图像三原色的暗通道特性,何惜明假设在晴天条件下,无雾的户外图像除了大面积蓝色水域,还有明亮的天空区域,剩余场景的局部区域至少在的一个原色通道上存在一些亮度值很低的像素点,将这些亮度值接近于的像素点看作黑暗的点,那么这个通道即称作暗原色通道[9]。对图像每一像元,暗通道表达为:
(9)
其中:表示的三原色中的任意一个颜色通道(R、G、B),表示以点为中心暗通道的形成有以下几个原因:
1)天气晴朗时,在颜色鲜亮的景物的表面,其亮度值至少在一个基原色通道的强度较小,通常显性色彩的三基色组合成分最多的波段,其通道值比较大,其它谱段值比较小,几乎为0;
2)场景中物体由于光线入射量少或本身不够鲜亮,如郁葱的林间,黒色的物体表面,灰暗色的树干和石头等;
3)景物被其它物体遮挡住光线或自身形成的投影区,形成的阴影区域亮度值也都很低,如汽车、建筑物、树叶以及其它各种自然景观在光照下的阴影和投影等。在含雾天气条件下,含雾影像的暗通道的像素亮度值远大于无大气粒子散射干扰情况时的亮度,因而根据暗通道这一性质,可以估算出含雾影像中雾气的浓度和实际景物的深度。图为雾天时拍摄的户外图片及其暗通道。
图3 晴天无雾及其暗通道图
图4 雾化图像及其暗通道图
由图3和图4的暗通道图可知,无论在何种天气条件下,至少在一个颜色通道上,总存在一些亮度值接近于的像素点,使得每一个局部区域颜色很暗。
3.2 图像去雾处理系统的测试
1)可执行程序,放入含有雾霾的图片进行图像去雾功能测试。
2)我们分别从几个方面来搜集图片,卫星、生活等各个领域,验证的效果图象如下。算法改进的效果十分明显。在Matlab上运行之后,我们继续把Matlab与VS2012相结合生成DLL文件,方便以后在网络网页中应用。
图5 实验结果1
图6 实验结果2
3.3 不同算法情况对比图
通过图7的对比可以看出,本文的算法在实验后效果有了明显的改进与提升,清晰度更高,retinex算法去雾之后从效果图上看还是残留雾的影响,暗通道去雾算法图像的色泽变暗,对于一些色泽暗淡的图像效果并不是很好,而本文的算法运用K均值聚类算法先进行处理,效果较为明显。
图7 对比情况图
4 结束语
本文提出了暗通道图像去雾与机器学习中的K-means聚类分析算法相结合的去雾算法,用暗原色先验算法拟合估计透射率,进而用K—means聚类分析算法进行分类,估算出大气光强,更好的还原了图像颜色与能见度,对于图像的去雾产生了良好的实验效果,得到的结论如下:经过大量的实验观察:在无雾图像中,每个局部区域都极有可能会产生阴影,无论是纯色目标还是黑色目标。利用本文提到的算法对透射率优化时,会使时间复杂度变小,算法的运算效率更高。当非天空区域有大量的白色物体时,此时,天空区域便与这些白色物体难以区分,会造成大气光强度改变,使图像失真。在本文经过聚类分析算法处理后可以避免这种情况的发生,得到更好的去雾效果[5-9]。