本发明属于图像处理技术领域,尤其涉及一种包含大面积天空区域的图像去雾方法及系统。
背景技术:
对图像特征进行准确提取是计算机视觉正常工作的关键因素,然而在雾、霾、烟、水汽等场下,由于辐射光受到大气粒子的散射作用,导致场景的能见度降低,图像质量严重退化,不仅模糊不清,而且还会出现严重的颜色失真,极大的限制了系统效用的发挥,甚至导致计算机视觉系统无法正常工作。因此,为了改善图像质量并且丰富图像所包含的信息,使系统具备恶劣天气下工作的鲁棒性和可靠性,需要对雾天降质图像进行去雾处理。
近几年来,基于假设或先验知识的单幅包含大面积天空区域的图像去雾算法成为研究的热点,很多专家和学者在不断的研究和探索,但是这些方法均存在一定的缺陷,通过上述方法处理后的图像存在方块效应或色彩失真的现象。
技术实现要素:
本发明的目的在于提供一种包含大面积天空区域的图像去雾方法,旨在解决现有技术中采用基于假设或先验知识的单幅图像去雾算法造成图像存在方块效应或者色彩失真现象的问题。
本发明是这样实现的,一种包含大面积天空区域的图像去雾方法,所述方法包括下述步骤:
对拍摄到的有雾图像I(x)进行四叉树分割,将所述有雾图像分割为若干个图像区域,并在若干个所述图像区域中获得种子点;
以获取到的种子点为基础进行天空区域生长,获取包含天空区域和非天空区域的图像,同时,计算大气光值A;
计算所述非天空区域的介质透射率t1(x),同时将所述天空区域的介质透射率统一设置为tsky,其中,所述天空区域的介质透射率为常数值;
对包含天空区域和非天空区域的图像进行边界模糊,计算得到高斯加权参数I′seg(x),其中,I′seg(x)∈(0,1);
对图像中的天空区域和非天空区域进行透射率融合,其中,透射率融合的最终表达式为:t(x)=I′seg(x)×tsky+(1-I′seg(x))×t1(x);
根据有雾图像的大气散射模型,计算去雾后的图像J(x),其中,t0=0.1。
作为一种改进的方案,所述对拍摄到的有雾图像I(x)进行四叉树分割的步骤之后还包括下述步骤:
在对有雾图像进行n级分割后,判断若干个图像区域中参考标准参数最大值与第二大值之差是否小于预先设定的常数ST;
若若干个图像区域中参考标准参数最大值与第二大值之差小于预先设定的常数ST,则控制停止对所述有雾图像的四叉树分割;
否则继续进行四叉树分割。
作为一种改进的方案,所述在若干个所述图像区域中获得种子点的步骤具体包括下述步骤:
在若干个图像中,定义种子点区域D的大小为[m*n],且在种子点区域D内的任意一点(x,y)的灰度值记为R(x,y);
计算种子点区域D的平均灰度值Rave,
计算所述种子点区域内任意一点的灰度值R(x,y)与所述平均灰度值Rave之间的差值,Rdif(x,y)=|R(x,y)-Rave|;
当选取的点的灰度值与平均灰度值之间的差值的绝对值最小时,则选取该点为种子点。
作为一种改进的方案,所述对图像中的天空区域和非天空区域进行透射率融合的步骤之后,所述根据有雾图像的大气散射模型,计算去雾后的图像的步骤之前还包括下述步骤:
对融合后的透射率进行导向滤波。
作为一种改进的方案,所述根据有雾图像的大气散射模型,计算去雾后的图像的步骤之后还包括下述步骤:
对去雾处理后的图像进行亮度调整。
本发明的另一目的在于提供一种包含大面积天空区域的图像去雾系统,所述系统包括:
四叉树分割模块,用于对拍摄到的有雾图像I(x)进行四叉树分割,将所述有雾图像分割为若干个图像区域;
种子点获取模块,用于在若干个所述图像区域中获得种子点;
天空区域生长模块,用于以获取到的种子点为基础进行天空区域生长,获取包含天空区域和非天空区域的图像;
大气光值计算模块,用于计算大气光值A;
介质透射率计算模块,用于计算所述非天空区域的介质透射率t1(x),同时将所述天空区域的介质透射率统一设置为tsky,其中,所述天空区域的介质透射率为常数值;
边界模糊处理模块,用于对包含天空区域和非天空区域的图像进行边界模糊,计算得到高斯加权参数I′seg(x),其中,I′seg(x)∈(0,1);
透射率融合模块,用于对图像中的天空区域和非天空区域进行透射率融合,其中,透射率融合的最终表达式为:t(x)=I′seg(x)×tsky+(1-I′seg(x))×t1(x);
去雾处理模块,用于根据有雾图像的大气散射模型,计算去雾后的图像J(x),其中,t0=0.1。
作为一种改进的方案,所述系统还包括:
判断模块,用于在对有雾图像进行n级分割后,判断若干个图像区域中参考标准参数最大值与第二大值之差是否小于预先设定的常数ST;
控制模块,用于若若干个图像区域中参考标准参数最大值与第二大值之差小于预先设定的常数ST,则控制停止对所述有雾图像的四叉树分割,否则继续进行四叉树分割。
作为一种改进的方案,所述种子点获取模块具体包括:
种子点区域定义模块,用于在若干个图像中,定义种子点区域D的大小为[m*n],且在种子点区域D内的任意一点(x,y)的灰度值记为R(x,y);
平均灰度值计算模块,用于计算种子点区域D的平均灰度值Rave,
差值计算模块,用于计算所述种子点区域内任意一点的灰度值R(x,y)与所述平均灰度值Rave之间的差值,Rdif(x,y)=|R(x,y)-Rave|;
种子点选取模块,用于当选取的点的灰度值与平均灰度值之间的差值的绝对值最小时,则该选取的点为种子点。
作为一种改进的方案,所述系统还包括:
导向滤波模块,用于对融合后的透射率进行导向滤波。
作为一种改进的方案,所述系统还包括:
亮度调整模块,用于对去雾处理后的图像进行亮度调整。
在本发明实施例中,对拍摄到的有雾图像I(x)进行四叉树分割,将有雾图像分割为若干个图像区域,并在若干个图像区域中获得种子点;以获取到的种子点为基础进行天空区域生长,获取包含天空区域和非天空区域的图像,计算大气光值A;计算非天空区域的介质透射率t1(x),同时将天空区域的介质透射率统一设置为tsky;对包含天空区域和非天空区域的图像进行边界模糊,计算得到高斯加权参数;对图像中的天空区域和非天空区域进行透射率融合;根据有雾图像的大气散射模型,计算去雾后的图像J(x),从而得到清晰无雾图像,尤其是适用于包含大面积天空区域的雾霾图像的处理。
附图说明
图1是本发明提供的包含大面积天空区域的图像去雾方法的实现流程图;
图2是本发明提供的在若干个图像区域中获得种子点的实现流程图;
图3是本发明提供的包含大面积天空区域的图像去雾系统的结构框图;
图4是本发明提供的种子点获取模块的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1示出了本发明提供的包含大面积天空区域的图像去雾方法的实现流程图,其具体包括下述步骤:
在步骤S101中,对拍摄到的有雾图像I(x)进行四叉树分割,将所述有雾图像分割为若干个图像区域,并在若干个所述图像区域中获得种子点。
在该步骤中,为了在有雾图像中找出天空区域,采用四叉树分割的算法对有雾图像进行处理,即:
首先将有雾图像分割为四个大小相同的图像区域,然后再对每个小的图像区域进行分割,迭代继续,下述有详细说明,在此不再赘述。
当四叉树分割迭代过程结束时,在若干个小的图像区域中,找到种子点,其具体的查找方式下述给出,在此不再赘述。
在步骤S102中,以获取到的种子点为基础进行天空区域生长,获取包含天空区域和非天空区域的图像,同时,计算大气光值A。
在该步骤中,当获取到种子点P后,区域生长便从P点开始出发,向该点的8个方向的领域图像区域进行搜索;
当搜索到相邻图像区域内的像素点的灰度值与该种子点P的灰度差小于预设的阈值T时,则认为该搜索到的像素点与种子点P为同一目标点,并进行像素点标记,假设为L,然后继续上述方式进行搜索,直到找不到符合同样条件的像素点为止,这样若干个标记为L的像素点的组合记为天空区域。
即,天空区域生长完成后,原有的有雾图像根据像素点划分为两类,天空区域和非天空区域。
其中,当天空区域生长完成后,可以进行大气光值的计算,其具体的计算过程为:
(1)将上述天空区域的所有像素点提取出来;(2)对所有像素点的像素值进行降序排列;(3)选取天空区域中像素点的像素值在排序在前1%的像素点的平均灰度值为大气光值A;
上述仅为一种具体的实现方式,在此不再赘述。
在步骤S103中,计算非天空区域的介质透射率t1(x),同时将天空区域的介质透射率统一设置为tsky,其中,天空区域的介质透射率为常数值。
在步骤中,天空区域的介质透射率tsky为常数值,取值为0.35。
其中,对于非天空区域的介质透射率t1(x)的计算过程在下述内容有表达,在此不再赘述。
在步骤S104中,对包含天空区域和非天空区域的图像进行边界模糊,计算得到高斯加权参数I′seg(x),其中,I′seg(x)∈(0,1)。
对于图像分割获取天空区域和非天空区域后,图像中的任意一点完全属于天空区域或完全不属于天空区域,但是对其进行高斯模糊处理后,可以使天空区域和非天空区域的边界处的灰度过渡平缓,因此使用加权算法对边界进行高斯模糊处理,高斯模糊处理是将图像中每一个像素点的值转化为由该像素点邻域内所有像素点的值的加权平均,其具有各向同性和均匀特性,假设二维模板的大小为m*n,则模板上的像素点(x,y)所对应的高斯计算公式为:
其中,σ是正态分布的标准差,σ值越大,图像越模糊;
分布不为0的像素点组成的卷积矩阵与原始图像做变换,便可得到滤波后的分布图,如下述计算式:
I′seg(x)=Iseg*G,其中,*为卷积运算;
每个像素点的值都是周围相邻像素点的值加权平均。
在步骤S105中,对图像中的天空区域和非天空区域进行透射率融合,其中,透射率融合的最终表达式为:t(x)=I′seg(x)×tsky+(1-I′seg(x))×t1(x)。
其中,其中,天空区域被统一设置为固定值后,在天空区域和非天空区域的交界处存在较大的突变,因此,利用图像融合技术对天空区域的介质透射率tsky和非天空区域的介质透射率t1(x)进行加权融合,即:
t(x)=ω1×tsky+ω2×t1(x),其中,ω1和ω2为加权系数,且ω1+ω2=1;
根据上述高斯模糊处理,上述公式变换为:
t(x)=I′seg(x)×tsky+(1-I′seg(x))×t1(x)。
在步骤S106中,根据有雾图像的大气散射模型,计算去雾后的图像J(x),其中,t0=0.1。
其中,大气散射模型为:I(x)=J(x)t(x)+A(1-t(x)),因此,当已知大气光值A和介质透射率t(x)后,可以计算j(x);
其中,上述引入的常数t0为保证去雾效果引入的约束条件,即取值t(x)和t0的的最小值作为分母来计算去雾图像。
在本发明实施例中,如上述步骤S101所述,在四叉树分割的基础上,在有雾图像中,天空区域一般分布于图像的中部或上部,可以将位于图像下半部分乘以系数η,其中,系数η小于1,划分之后,有雾图像的表达式为:
M为有雾图像高度;
假设将有雾图像划分为四个部分i∈[1,2,3,4]分别代表分割后的左上角、右上角、左下角和右下角的图像区域,n表示分割级数,初次分割时n=1;
然后定义各个区域的参考标准参数其中,参考标准参数的表达式为:其中,mean表示平均灰度,gradient表示图像区域的平均梯度;
因此,上述步骤中,对有雾图像进行四叉树分割时,需要判断若干个图像区域中参考标准参数最大值与第二大值之差是否小于预先设定的常数ST,即:
其中,min为最小值运算,表示k以外的其他区域;
若若干个图像区域中参考标准参数最大值与第二大值之差小于预先设定的常数ST,则控制停止对所述有雾图像的四叉树分割;
否则继续进行四叉树分割。
当四叉树分割结束后,可以进行种子点(区域)的计算。
在本发明实施例中,如图2所示,在若干个所述图像区域中获得种子点的步骤具体包括:
在步骤S201中,在若干个图像中,定义种子点区域D的大小为[m*n],且在种子点区域D内的任意一点(x,y)的灰度值记为R(x,y)。
在步骤S202中,计算种子点区域D的平均灰度值Rave,
在步骤S203中,计算种子点区域内任意一点的灰度值R(x,y)与平均灰度值Rave之间的差值,Rdif(x,y)=|R(x,y)-Rave|。
在步骤S204中,当选取的点的灰度值与平均灰度值之间的差值的绝对值最小时,则选取该点为种子点,即:
在本发明实施例中,如上述步骤S103所述,非天空区域的介质透射率的计算方式为:
在非天空区域的局部区域里,存在至少一个颜色通道在某些像素上具有很低的强度值,并且趋近于0,其计算公式为:其中,Jc是J的一个颜色通道,Ω(x)是一个以x为中心的小图像块,Jdark(x)为暗通道图像;
由于上述已经计算出非天空区域的大气光值A,在局部区域Ω(x)内介质透射率t1(x)恒定不变,则:其中,ω为常数;
在本发明实施例中,在上述步骤S105中,当将介质透射率融合后,需要导向滤波的方式对融合后的介质透射率进行优化,以去除方块效应,具体为:
假设引导图像I与滤波器输出q之间存在局部线性关系,即:qi=akIi+bk,其中,
在该式中,ωk是一个半径为r的木板,ak和bk是窗口内恒定的系数,因此保证了输出图像q的边缘与引导图像I的边缘保持一致性,从而达到既可以保留半圆信息又能平滑图像的目的,在此不再赘述。
在本发明实施例中,在步骤S106之后,执行对去雾处理后的图像进行亮度调整的步骤,其具体为:
由于雾天呈现受环境和光照的不同影响,部分图像本身亮度偏低,基于上述处理后的去雾图像整体亮度和色调更暗,所以对图像进行亮度调整,其中该亮度调整方式可以采用简单拟合的方式,在此不再赘述。
图3示出了本发明实施例提供的包含大面积天空区域的图像去雾系统的结构框图,为了便于说明,图中仅给出了与本发明相关的部分。
四叉树分割模块20用于对拍摄到的有雾图像I(x)进行四叉树分割,将所述有雾图像分割为若干个图像区域;
种子点获取模块11用于在若干个所述图像区域中获得种子点;
天空区域生长模块12用于以获取到的种子点为基础进行天空区域生长,获取包含天空区域和非天空区域的图像;
大气光值计算模块13用于计算大气光值A;
介质透射率计算模块14用于计算所述非天空区域的介质透射率t1(x),同时将所述天空区域的介质透射率统一设置为tsky,其中,所述天空区域的介质透射率为常数值;
边界模糊处理模块15用于对包含天空区域和非天空区域的图像进行边界模糊,计算得到高斯加权参数I′seg(x),其中,I′seg(x)∈(0,1);
透射率融合模块16用于对图像中的天空区域和非天空区域进行透射率融合,其中,透射率融合的最终表达式为:t(x)=I′seg(x)×tsky+(1-I′seg(x))×t1(x);
去雾处理模块17用于根据有雾图像的大气散射模型,计算去雾后的图像J(x),其中,t0=0.1。
判断模块18用于在对有雾图像进行n级分割后,判断若干个图像区域中参考标准参数最大值与第二大值之差是否小于预先设定的常数ST;
控制模块19用于若若干个图像区域中参考标准参数最大值与第二大值之差小于预先设定的常数ST,则控制停止对所述有雾图像的四叉树分割,否则继续进行四叉树分割。
在该实施例中,如图4所示,种子点获取模块11具体包括:
种子点区域定义模块111,用于在若干个图像中,定义种子点区域D的大小为[m*n],且在种子点区域D内的任意一点(x,y)的灰度值记为R(x,y);
平均灰度值计算模块112,用于计算种子点区域D的平均灰度值Rave,
差值计算模块113,用于计算所述种子点区域内任意一点的灰度值R(x,y)与所述平均灰度值Rave之间的差值,Rdif(x,y)=|R(x,y)-Rave|;
种子点选取模块114,用于当选取的点的灰度值与平均灰度值之间的差值的绝对值最小时,则该选取的点为种子点。
在本发明实施例中,导向滤波模块21用于对融合后的透射率进行导向滤波;
亮度调整模块22用于对去雾处理后的图像进行亮度调整。
其中,上述各个模块的具体实现如上述方法实施例所记载,在此不再赘述,但不用以限制本发明。
在本发明实施例中,对拍摄到的有雾图像I(x)进行四叉树分割,将有雾图像分割为若干个图像区域,并在若干个图像区域中获得种子点;以获取到的种子点为基础进行天空区域生长,获取包含天空区域和非天空区域的图像,计算大气光值A;计算非天空区域的介质透射率t1(x),同时将天空区域的介质透射率统一设置为tsky;对包含天空区域和非天空区域的图像进行边界模糊,计算得到高斯加权参数;对图像中的天空区域和非天空区域进行透射率融合;根据有雾图像的大气散射模型,计算去雾后的图像J(x),从而得到清晰无雾图像,尤其是适用于包含大面积天空区域的雾霾图像的处理。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。