发明内容
本发明实施例的目的在于提供一种基于单幅图像去雾的处理方法,旨在解决现有的暗通道优先方法在单幅图像去雾处理时,对图像中的灰白区域处理效果较差,而且整个处理过程需要消耗较多的计算时间和存储空间的问题。
本发明实施例是这样实现的,一种基于单幅图像去雾的处理方法,所述方法包括以下步骤:
A、将雾化图像划分为暗像素区域和暗像素失效区域,并获取所述暗像素失效区域的信息,所述信息包括所述暗像素失效区域的个数及其分布位置;
B、计算所述暗像素区域内的暗像素;
C、根据所述暗像素失效区域的个数及其分布位置,估算所述雾化图像的大气光值;具体的是C1、当所述暗像素失效区域个数为0时,则大气光值为所述雾化图像中雾浓度最大点的亮度值,所述雾浓度最大点对应为所述暗像素最大处;
C2、当至少存在一个暗像素失效区域在所述雾化图像顶部时,则大气光值为所述雾化图像顶部暗像素失效区域的最大亮度值;
C3、当所述暗像素失效区域都不在所述雾化图像顶部时,则大气光值为所述暗像素区域中暗像素最大处所对应的雾化图像位置的亮度值;
D、获取所述雾化图像的景物深度信息;
E、根据所述暗像素区域内的暗像素以及景物深度信息,估算所述暗像素失效区域内的暗像素;
F、获取所述雾化图像中景物深度变化最明显的边缘线;
G、重新计算所述边缘线两侧预设宽度区域内的暗像素;
H、根据上述步骤,计算所述雾化图像的透射率;
I、根据所述大气光值和透射率,通过公式
对所述雾化图像进行去雾操作,获取去雾后的清晰图像J(x);
其中,I(x)为雾化图像,t(x)为透射率,A为大气光值,t0为预设常数。
本发明实施例的另一目的在于提供一种基于单幅图像去雾的处理装置,所述装置包括:
第一信息获取单元,用于将雾化图像划分为暗像素区域和暗像素失效区域,并获取所述暗像素失效区域的信息,所述信息包括所述暗像素失效区域的个数及其分布位置;
第一计算单元,用于计算所述暗像素区域内的暗像素;
估算单元,用于根据所述暗像素失效区域的个数及其分布位置,估算所述雾化图像的大气光值;所述估算单元包括:
估算模块,用于当所述暗像素失效区域个数为0时,则大气光值为所述雾化图像中雾浓度最大点的亮度值,所述雾浓度最大点对应为所述暗像素最大处;
当至少存在一个暗像素失效区域在所述雾化图像顶部时,则大气光值为所述雾化图像顶部暗像素失效区域的最大亮度值;
当所述暗像素失效区域都不在所述雾化图像顶部时,则大气光值为所述暗像素区域中暗像素最大处所对应的雾化图像位置的亮度值;
第二信息获取单元,用于获取所述雾化图像的景物深度信息;
第二计算单元,用于根据第一计算单元计算得到的暗像素和第二信息获取单元获取的景物深度信息,估算所述暗像素失效区域内的暗像素;
第三信息获取单元,用于获取所述雾化图像中景物深度变化最明显的边缘线;
第三计算单元,用于重新计算所述边缘线两侧预设宽度区域内的暗像素;
第四计算单元,用于计算所述雾化图像的透射率;
去雾图像获取单元,用于根据所述大气光值和透射率,通过公式
对所述雾化图像进行去雾操作,获取去雾后的清晰图像J(x);
其中,I(x)为雾化图像,t(x)为透射率,A为大气光值,t0为预设常数。
本发明实施例的再一目的在于提供一种包括所述基于单幅图像去雾处理装置的***。
从上述技术方案可以看出,本发明通过获取的景物深度信息以及暗像素区域的暗像素来估算暗像素失效区域的暗像素,能够有效解决灰白区域的去雾处理问题。而且,可以针对不同的雾化图像,采用不同估算大气光值的方法,使得计算结果更加准确。另外,在保证图像去雾效果的前提下,省略了软抠图修复算法,有效的减少了计算量,节省了处理时间和存储空间。而且通过对边缘线两侧预设宽度区域内的像素重新计算暗像素时所用的局部小区域的修正,可进一步提高暗像素计算的准确率。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明通过将雾化图像划分为暗像素区域和暗像素失效区域,根据获取的景物深度信息以及暗像素区域的暗像素来估算暗像素失效区域的暗像素,能够有效解决灰白区域的去雾处理问题。而且,根据暗像素失效区域的个数及其分布位置来估算雾化图像的大气光值,灵活性更高、实用性更强、计算结果更加准确。另外,在保证图像去雾效果的前提下,省略了软抠图修复算法,有效的减少了计算量,节省了处理时间和存储空间。而且通过对边缘线两侧预设宽度区域内的像素重新计算暗像素时所用的局部小区域的修正,可进一步提高暗像素计算的准确率。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明实施例一提供的基于单幅图像去雾处理方法的实现流程,该方法过程详述如下:
在步骤S101中,将雾化图像划分为暗像素区域和暗像素失效区域,并获取所述暗像素失效区域的信息。
在本实施例中,所述信息包括但不局限于所述暗像素失效区域的个数及其分布位置。所述暗像素失效区域包括白色建筑物、水面、天空等灰白区域,由于这些区域的像素值较大,难以找到像素值接近为0的暗像素点。因此,在暗像素失效区域存在的情况下,如果直接计算雾化图像的暗像素,会造成雾化图像透射率的低估,影响图像的去雾效果。所以,在计算暗像素前,需要对雾化图像进行划分,将雾化图像中的暗像素失效区域提取或者划分出来,其具体过程如图2所示:
在步骤S201中,将获取的彩色雾化图像转换成灰度雾化图像。
在本实施例中,在拍摄到的图像为彩色雾化图像时,需要将所述彩色雾化图像转换成灰度雾化图像。其中,彩色雾化图像转换成灰度雾化图像可以采用现有技术实现,在此不再赘述。
在步骤S202中,二值化所述灰度雾化图像,将大于预设阈值的像素值设为1,小于或者等于预设阈值的像素值设为0。
在本实施例中,二值化所述灰度雾化图像,将大于预设阈值(例如:200)的像素值设为1,小于或者等于预设阈值的像素值设为0,得到二值图像。
在步骤S203中,以值为1的像素为中心,在预设宽度区域内,若像素值全为1,则该区域为暗像素失效区域,否则为暗像素区域。
在本实施例中,在得到的二值图像中,以值为1的像素为中心,在预设宽度(例如:blocksize=15)的区域内,如果像素值全为1,则该区域为暗像素失效区域,否则为暗像素区域。
在步骤S102中,计算所述暗像素区域内的暗像素。
在本实施例中,在暗像素区域(除天空等灰白区域以外的区域)内,存在这样一些像素,至少在一个色彩通道内的灰度值非常小,被称为暗像素。暗像素Jdark的计算如下:
其中,Jc是图片J的一个色彩通道(即R、G、B三种颜色的一种),Ω(x)是中心在x处的一个局部图像区域。
在步骤S103中,根据所述暗像素失效区域的个数及其分布位置,估算所述雾化图像的大气光值。
在本实施例中,大气光值A是无穷远处的大气光,一般将图像中最亮的像素点作为整体大气光值。例如:图像中的一辆白色的轿车或者是一栋白色的建筑等。本实施例可以根据不同图像暗像素失效区域的个数及其分布位置,来估算图像的大气光值,例如:
当图像中暗像素失效区域个数为0时,说明图像中不存在天空等灰白区域,雾化图像的暗像素亮度接近图像中雾的浓度,大气光值为所述图像中雾浓度最大点的亮度值。其中,所述雾浓度最大点对应为所述暗像素最大处;
当至少存在一个暗像素失效区域在图像顶部时,则大气光值为所述雾化图像顶部暗像素失效区域的最大亮度值;
当暗像素失效区域都不在图像顶部时,则大气光值为暗像素区域中暗像素最大处所对应的雾化图像位置的亮度值。
本实施例可以针对不同的图像,采用不同方法估算大气光值,更具实用性和灵活性,使得计算结果更加准确。
在步骤S104中,获取所述雾化图像的景物深度信息。
在本实施例中,在图像的越远处(即越靠近图像的上方),景物深度d(i,j)越大,如公式(2)所示:
式中:(i,j)为m×n维图像上的任一像素点的坐标,c1为深度修正系数,取值介于0和0.1之间。
由于一般景物都具有一定的高度,利用公式(2)来估算景物深度必然会带来景物细节的丢失,而景物的细节主要存在于图像的灰度梯度信息中。因此,将点(i,j)处的景物深度d(i,j)修正为:
式中:c2为梯度修正系数,取值介于0和1之间。M(i,j)为像素(i,j)的梯度,采用一种在像素8邻域内通过计算x、y、135°和45°四个方向的一阶偏导数有限差分来确定像素梯度,具体如下:
x方向的偏导数:Px[i,j]=f[i+1,j]-f[i-1,j]
y方向的偏导数:Py[i,j]=f[i,j+1]-f[i,j-1]
45°方向的偏导数:P45°[i,j]=f[i-1,j+1]-f[i+1,j-1]
135°方向的偏导数:P135°[i,j]=f[i+1,j+1]-f[i-1,j-1]
式中:f(i,j)为图像在(i,j)处的灰度值,则采用二阶范数得到像素的梯度为:
通过公式(4)得到M(i,j)后,即可求出修正后的景物深度d(i,j)。
在步骤S105中,根据所述暗像素区域内的暗像素以及景物深度信息,估算所述暗像素失效区域内的暗像素。
在本实施例中,除天空区域外,景物深度相同处,透射率相同,雾的浓度相同,暗像素也相同。因此,可以通过判断与暗像素无效区域中景物深度相同的位置是否为暗像素有效位置;若是,则将该暗像素作为暗像素失效区域内的暗像素;若不是,则将所述景物深度最近位置的暗像素作为暗像素失效区域内的暗像素。
在步骤S106中,获取所述雾化图像中景物深度变化最明显的边缘线。
在本实施例中,获取雾化图像中景物深度变化最明显的边缘线的具体步骤如图3所示:
在步骤S301中,通过边缘提取算法获取暗像素图中景物深度突变边缘线。
在本实施例中,通过边缘提取算法(不局限于该算法)获取暗像素图中梯度变化(突变)最明显的前N个边缘线。其中,N大于等于1。其中,该暗像图与所述雾化图像尺寸相同,表示的是整幅图。
在步骤S302中,对所述景物深度突变边缘线做预设宽度的膨胀处理,得到膨胀区域。
在本实施例中,所述预设宽度与划分雾化图像区域时的blocksize相同,例如,blocksize=15。
在步骤S303中,获取所述雾化图像中与该膨胀区域对应的区域内深度变化最明显的边缘线。
在本实施例中,将该膨胀区域对应到原雾化图像中,提取对应区域中梯度变化最明显的边缘线,该边缘线即为深度变化最明显的边缘线。
在步骤S107中,重新计算所述边缘线两侧预设宽度区域内的暗像素。
在本实施例中,梯度变化平缓的区域,根据暗像素可以准确的计算出对应的透射率。而对于梯度变化较大的区域,必须重新计算暗像素,对暗像素计算时使用的局部小区域Ω(x)进行修正,使得修正后的局部小区域Ω′(x)的边缘线控制在所述突变边缘线之内,修正后的区域Ω'(x)内梯度的变化是平缓的,再重新计算所述修正区域内的暗像素。根据重新计算得到的暗像素计算出的透射率,可直接用于雾化图像的去雾,还原或者恢复原始的清晰图像,而不需再对所述透射率做修复处理,在保证去雾效果的前提下,大大减少了计算量和存储空间。
在步骤S108中,计算所述雾化图像的透射率。
在本实施例中,雾化图像的去雾模型为:
I(x)=J(x)t(x)+A(1-t(x)) (5)
其中,I(x)为雾化图像,t(x)为透射率,A为大气光值,J(x)为去雾后的清晰图像。
对公式(5)使用最小运算符并进行简单的转换得到:
因为对于无雾图像J(x),局部区域Ω(x)内至少存在一个暗像素,其值趋向于0:
由于Ac恒为正,得:
将(8)式代入(6)式,得到t(x)的估计公式:
其中,为规格化的雾化图像Ic(y)的暗像素。因此,
可利用该暗像素直接对大气传输透射率进行估计。同时为使结果图像具有一定的透视深度感,在式(9)中加入一个参数ω(0<ω≤1),以保留少量的雾存在:
在步骤S109中,根据所述大气光值和透射率,通过公式
对所述雾化图像进行去雾操作,获取去雾后的清晰图像J(x)。
在本实施例中,将公式(5)转换为
通过计算得到的t(x)和A,获取去雾后的清晰图像J(x)。其中,当t(x)接近为0时,获取后的清晰图像J(x)会含有噪声,因此需要预先设置一个阈值t
0=0.1,以保证原图存在一定量的雾。
实施例二:
图4是本发明实施例二提供的基于单幅图像去雾处理装置的组成结构,为了便于说明,仅示出了与本发明实施例相关的部分。
该基于单幅图像去雾处理装置可以是运行于各应用***内的软件单元、硬件单元或者软硬件相结合的单元。
该基于单幅图像去雾处理装置包括第一信息获取单元41、第一计算单元42、估算单元43、第二信息获取单元44、第二计算单元45、第三信息获取单元46、第三计算单元47、第四计算单元48以及去雾图像获取单元49。其中,各单元的具体功能如下:
第一信息获取单元41,用于将雾化图像划分为暗像素区域和暗像素失效区域,并获取所述暗像素失效区域的信息,所述信息包括所述暗像素失效区域的个数及其分布位置。其中,所述第一信息获取单元41包括转换模块411、二值化模块412和区域获取模块413:
所述转换模块411用于将获取的彩色雾化图像转换成灰度雾化图像;
所述二值化模块412用于二值化所述灰度雾化图像,将大于预设阈值的像素值设为1,小于或者等于预设阈值的像素值设为0;
所述区域获取模块413用于以值为1的像素为中心,在预设宽度区域内,若像素值全为1,则该区域为暗像素失效区域,否则为暗像素区域。
第一计算单元42,用于计算所述暗像素区域内的暗像素。
估算单元43,用于根据所述暗像素失效区域的个数及其分布位置,估算所述雾化图像的大气光值。其中,所述估算单元43包括估算模块431:
所述估算模块431用于当所述暗像素失效区域个数为0时,则大气光值为所述雾化图像中雾浓度最大点的亮度值,所述雾浓度最大点对应为所述暗像素最大处;
当至少存在一个暗像素失效区域在所述雾化图像顶部时,则大气光值为所述雾化图像顶部暗像素失效区域的最大亮度值;
当所述暗像素失效区域都不在所述雾化图像顶部时,则大气光值为所述暗像素区域中暗像素最大处所对应的雾化图像位置的亮度值。
第二信息获取单元44,用于获取所述雾化图像的景物深度信息;
第二计算单元45,用于根据第一计算单元计算得到的暗像素和第二信息获取单元获取的景物深度信息,估算所述暗像素失效区域内的暗像素。所述第二计算单元45包括判断模块451、第一模块452以及第二模块453:
所述判断模块451用于判断与暗像素无效区域中景物深度相同的位置是否为暗像素有效位置;
所述第一模块452用于在所述位置为暗像素的有效位置时,则将该暗像素作为暗像素失效区域内的暗像素;
所述第二模块453用于在所述位置不是暗像素的有效位置时,则将所述景物深度最近位置的暗像素作为暗像素失效区域内的暗像素。
第三信息获取单元46,用于获取所述雾化图像中景物深度变化最明显的边缘线。所述第三信息获取单元46包括边缘线获取模块461、区域获取模块462以及信息获取模块463:
所述边缘线获取模块461用于通过边缘提取算法获取暗像素图中景物深度突变边缘线;
所述区域获取模块462用于对所述景物深度突变边缘线做预设宽度的膨胀处理,得到膨胀区域;
所述信息获取模块463用于获取所述雾化图像中与该膨胀区域对应的区域内深度变化最明显的边缘线。
第三计算单元47,用于重新计算所述边缘线两侧预设宽度区域内的暗像素。所述第三计算单元47包括修正模块471以及计算模块472:
所述修正模块471用于对边缘线两侧预设宽度区域内计算暗像素时所使用的局部小区域进行修正,使修正后区域的边缘线控制在所述深度突变边缘线之内;
所述计算模块472用于重新计算所述修正区域内的暗像素。
第四计算单元48,用于根据上述单元,计算所述雾化图像的透射率;
去雾图像获取单元49,用于根据所述大气光值和透射率,通过公式
对所述雾化图像进行去雾操作,获取去雾后的清晰图像J(x);
其中,I(x)为雾化图像,t(x)为透射率,A为大气光值,t0为预设常数(例如:t0=0.1)。
本实施例提供的基于单幅图像去雾处理装置可以使用在前述对应的基于单幅图像去雾处理方法,详情参见上述基于单幅图像去雾处理方法实施例一的相关描述,在此不再赘述。
本发明实施例通过将雾化图像划分为暗像素区域和暗像素失效区域,根据获取的景物深度信息以及暗像素区域的暗像素来估算暗像素失效区域的暗像素,能够有效解决灰白区域的去雾处理问题。而且,根据暗像素失效区域的个数及其分布位置来估算雾化图像的大气光值,灵活性更高、实用性更强、计算结果更加准确。另外,同时通过对边缘线两侧预设宽度区域内的像素重新计算暗像素时所用的局部小区域的修正,根据重新计算得到的暗像素计算出的透射率可直接用于雾化图像的去雾,还原或者恢复原始的清晰图像,而不需再对所述透射率做修复处理,在保证图像去雾效果的前提下,大大的减少了计算量,节省了处理时间和存储空间。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。