基于暗通道与非局部先验的图像去雾方法及系统与流程

文档序号:12126206阅读:831来源:国知局
基于暗通道与非局部先验的图像去雾方法及系统与流程

本发明属于图像信息处理技术领域,特别是涉及基于暗通道与非局部先验的图像去雾方法及系统。



背景技术:

目前,用于安全监控的摄像机等户外视觉系统的应用越来越广泛。而且,近年来智能视觉监控系统、智能车辆视觉导航系统、智能机器人视觉系统等智能视觉系统发展十分迅速。视觉系统所采集的图像的质量直接影响了系统工作的稳定性。在雾霾等恶劣天气状况下,由于大气中微小粒子散射作用的影响,导致获取的图像产生对比度降低、饱和度下降和色调偏移等问题,干扰了图像特征的提取,直接影响视觉系统效用的发挥。因此,采用合适的方法对图像进行处理,使雾化图像清晰化,具有重要的现实意义。

现有的针对图像去雾的方法主要分为三类:图像增强的方法,图像复原方法以及图像融合的方法。图像增强的方法未考虑雾霾天气下图像质量下降的原因,通过常见的图像增强的方法来提高图像亮度和对比度,从而改善图像的质量,此类方法以Retinex算法为代表,Retinex理论是基于色彩恒常性,该理论假设图像是由入射分量和反射分量组成的,入射分量反映的是图像的照度信息,通常情况下变化缓慢,对应于图像的低频部分,反射分量反映的是图像的本质信息。基于Retinex理论的图像增强的目的就是通过滤波器滤除图像的入射分量,消除光照不均的影响,得到的反射分量即为图像增强结果,该方法需要恰当的选取滤波器的相关参数,否则无法改善图像质量。

图像复原的方法通过研究雾天图像降质的原因,建立雾天图像退化的物理模型,通过合理估计模型当中的参数,即可得到无雾图像或无雾图像的最优估计值,例如:图像去雾当中,广泛采用的基于大气散射模型的图像复原方法需要估计图像的大气光值和图像的透射率,最后将合理估计得到的参数代入模型进行去雾。图像复原的方法从图像退化的本质出发进行去雾,因此最终得到的结果真实自然。

近年来,基于图像融合的去雾方法得到广泛关注,此类方法通过采用合适的融合策略,将从输入图像得到的多幅增强后的图像进行融合来改善输入图像的质量。这类方法在合理地选择融合图像和融合策略的情况下可以有效去除图像当中的雾。

论文名:Single image haze removal using dark channel prior,期刊:IEEE transactions on pattern analysis and machine intelligence,年份:2011年。He Kaiming等人提出了一种基于暗通道先验的去雾算法,算法首先基于有雾图像的暗通道图像估计图像的大气光值,其次基于暗通道先验估计图像的透射率,然后利用软抠图算法对估算的透射率图像进行优化,最后基于大气散射模型恢复无雾图像。该算法能够取得较好的去雾效果,但算法当中的抠图处理过程具有极高的时空复杂度,因而该算法不具备实时性。

论文名:Investigating haze-relevant features in a learning framework for image dehazing,会议:IEEE Conference on Computer Vision and Pattern Recognition,年份:2014年。Tang K等人首次利用基于学习的方法进行图像去雾。算法当中首先提取输入图像与透射率相关的多尺度的特征,然后采用随机森林的方法学习得到图像的特征与图像的透射率之间的关系。基于学习的方法需要大量的训练数据,现实生活中很难采集到有雾图像及其对应的无雾图像,文章当中作者基于场景深度与图像内容不相关的假设合成有雾图像作为训练数据,该假设只在少数情况下成立,因而会导致训练数据不准确,训练后得到的去雾模型不具备普适性。同时采用上述的基于学习的去雾算法只提取了有雾图像的颜色特征,没有提取纹理结构特征,致使透射率的估计精度受到限制,导致去雾不完全等问题。

论文名:Non-Local Image Dehazing,会议:IEEE Conference on Computer Vision and Pattern Recognition.,年份:2016。Berman D等人提出了一种基于非局部先验的去雾方法,当前的去雾算法大都是基于块先验的方法,基于块先验的去雾方法估计的透射率比较粗糙,容易导致去雾后图像的块效应。基于非局部先验的方法是基于像素点的操作因而不会产生块效应,而且算法的运行速度快,能够满足实时性的要求,但是基于非局部先验的算法存在去雾不彻底、天空区域失真等问题。

针对上述背景内容,基于非局部先验的方法速度较快,估计的透射率较准确,具有较高的实际应用价值,因此在本文中对非局部先验去雾算法进行改进,以便更好地应用于图像去雾。



技术实现要素:

本发明的目的是为了克服现有去雾算法的不足,提供一种基于暗通道与非局部先验的单幅图像去雾方法及系统,能够去除图像当中的雾,还原场景内容,改善图像的视觉效果,而且要求算法运行速度快,具有较高的实际应用价值。

本发明的技术方案:

一种基于暗通道与非局部先验的图像去雾方法,步骤如下:

(1)求取有雾图像的暗通道图像

首先求取有雾图像每个像素点的R,G,B三个通道值的最小值,然后进行最小值滤波即得到有雾图像的暗通道图像,具体表达式如下:

其中,I表示有雾图像;Ic表示I的R,G,B三个颜色通道之一;Ic(y)表示图像当中单个像素点的某一个颜色通道的值;Ω(x)是以像素点x为中心的一个滤波区域;Jdark即为I的暗通道图;

(2)根据暗通道图像估计有雾图像的大气光强

计算暗通道图像中像素值前0.1%的像素点的位置,然后求取有雾图像中对应位置的像素值的平均值作为有雾图像的大气光值A;

(3)基于非局部先验估计有雾图像的透射率

1)首先将有雾图像I(x)与大气光值A做差,将得到的图像记为IA(x),则大气散射模型表示成:

IA(x)=t(x)·[J(x)-A](1-2)

其中,J(x)表示复原的清晰图像,t(x)是透射率,描述物体反射光线能够经过衰减到达观测点的比例,将IA(x)表示成球坐标形式为:

IA(x)=[r(x),θ(x),φ(x)](1-3)

其中,半径r(x)的计算表达式为:

r(x)=t(x)||J(x)-A||,0≤t(x)≤1(1-4)

此时球坐标系的原点对应图像的大气光值A;

2)依据变换后像素点的[θ(x),φ(x)]值的大小,对有雾图像当中的像素点采用KD-Tree的方法进行聚类,根据非局部先验,位于同一类当中的像素点大致呈线状分布,因此聚类后得到多条haze-line,假设图像整体的大气光值是一致的,每条haze-line都经过球坐标系的原点,依据非局部先验位于同一条haze-line的像素点在无雾图像J(x)中的对应点的像素值是相同的,根据公式(1-4),得知位于同一条haze-line上的点的半径的差异是与透射率的差异成正比的;假设每条haze-line上最大半径对应的点为清晰无雾的点,即半径最大的像素点所对应的透射率为1;最大半径的定义式如下:

根据上述求得的最大半径得到同一条haze-line上其他像素点对应的透射率为:

(4)对透射率图像进行修正

1)采用上述的方法估计得到的透射率会存在误差,接下来分析误差产生的原因并进行修正。

2)每条haze-line上半径最大的点不一定是清晰无雾的点,当半径最大的点受雾影响时,最大半径小于理想的清晰无雾的点的半径,采用公式估计的透射率的值偏大;针对以上问题提出如下改进:

设定透射率的取值空间为[0.1,1],对透射率进行剪切处理,得到图像记为由于估计得到的透射率较实际偏大,加入参数p进行修正:根据恢复的无雾图像的像素值大于0得到每个像素点对应的透射率的下限值为:其中,Ic(x)表示有雾图像的像素点的RGB三个颜色通道值之一,Ac表示大气光值的三个颜色通道值之一;采用下限值约束后的透射率的表达式为:

3)基于非局部先验估计得到的透射率是以像素点为单位进行估计的,没有加入图像的空间限制。通常情况下,图像当中的点与其邻近的点的透射率差异很小,当像素点受到噪声影响导致最终估计的透射率不准确时,通过加入空间限制项可以减少透射率估计的误差。实验中通过最小化如下的关于的目标方程,实现对透射率的进一步优化:

其中,是经式(1-7)处理得到的透射率图像,σ(x)是位于同一条haze-line上的点的透射率的标准差,λ是用来控制数据项和平滑项的参数,Nx是像素点的四邻接的像素集合,I(x)和I(y)表示的是引导图像当中像素点的像素值。通常情况下采用图像的强度图像作为引导图像,即I(x)表示的是原始图像的强度通道。在这里我们采用透射率的下限值tLB作为引导图像,因为在tLB当中包含了较多的纹理细节和边缘特征,因而采用tLB得到的透射率图像更加精细准确。

4)将上述得到的透射率与大气光值代入大气散射模型,即可恢复无雾图像,通过实验观察到,恢复的图像在场景深度小的部分去雾不完全。因此对透射率图像进行进一步的修正,具体的过程如下:因为图像当中场景深度较小的部分通常位于图像的底部,因此首先计算透射率图像下半部分的平均值m,设定阈值T=m-a,a为常数,用于控制阈值,将透射率图像当中大于阈值的部分缩小为原来的η倍。

(5)利用大气散射模型恢复无雾图像

对透射率进行上述修正后,可以取得较好的去雾效果,但是当有雾图像中含有大面积天空时,去雾后的图像会出现噪声放大与颜色失真现象。这是由于天空区域的透射率的值比较小,采用如下表达式:

进行去雾时,由于图像天空区域的像素值I(x)与大气光值A接近,与较小的t(x)相除后会将差异扩大,这与天空区域平坦光滑的特性是相反的,此会造成去雾后图像的天空区域产生失真。

针对上述问题,采用设定自适应透射率下限阈值t0的方法进行改进,阈值的表达式为:

其中,α和β为可调系数,用于控制天空区域的弱化程度,n为透射率图像当中像素值小于α的像素点的个数,N为透射率图像的像素总数。

通过设置透射率下限阈值可以增大天空区域的透射率,进而能够改善去雾后天空区域的颜色失真与噪声放大现象,同时采用自适应阈值的方法,根据天空区域的面积自适应调节阈值,增强了算法的鲁棒性。

将修正后的透射率t(x)与估计得到的大气光值A代入以下公式:

即可恢复清晰的图像。其中设置透射率的下限值t0可以减少图像的失真,这是因为在场景的透射率过小的情况下,恢复的图像受噪声影响严重,此外实验中将t0设置为自适应参数,可以改进图像当中天空区域颜色失真的现象。实验中将ω设置为大于1的数,这样可以为图像的远景部分保留一定量的雾,使得去雾后的图像看起来更加真实自然。

为了改善去雾后图像的视觉效果,对恢复的清晰图像进行自动色阶处理。自动色阶算法将每个颜色通道中位于上下限阈值之外的像素映射到纯白或纯黑,同时将中间像素按比例重新分配以提高图像的对比度。

其中阈值设置的方法具体如下:首先统计有雾图像R,G,B三个颜色通道的直方图,然后设定剪切比例,根据剪切比例,计算剪切的上下限阈值。

相应的,本发明提供一种基于暗通道与非局部先验的图像去雾系统,包括:

(1)暗通道计算模块,用于求取有雾图像的暗通道图像;

(2)大气光计算模块,用于计算暗通道图像中像素值前0.1%的像素点的位置,然后求取有雾图像中对应位置的像素值的平均值作为图像的大气光值A;

(3)透射率计算模块,用于基于非局部先验,求取有雾图像的透射率:

(4)透射率修正模块,用于对透射率图像进行修正:

(5)去雾计算模块,用于恢复无雾图像:

所述暗通道计算模块,具体用于:

求取雾化图像的暗通道图像,首先求取有雾图像每个像素点的R,G,B三个通道值的最小值,然后进行最小值滤波即可得到有雾图像的暗通道图像。此步骤的具体表达式如下:

其中,I表示有雾图像;Ic表示I的R,G,B三个颜色通道之一;Ic(y)表示图像当中单个像素点的某一个颜色通道的值;Ω(x)是以像素点x为中心的一个滤波区域;Jdark即为I的暗通道图。

所述大气光计算模块,具体用于:

计算暗通道图像中像素值前0.1%的像素点的位置,然后求取有雾图像中对应位置的像素值的平均值作为有雾图像的大气光值A。

所述透射率计算模块,具体用于:

1)首先将有雾图像I(x)与大气光值A做差,将得到的图像记为IA(x),则大气散射模型可以表示成:

IA(x)=t(x)·[J(x)-A](2-2)

其中J(x)表示复原的清晰图像,t(x)是透射率,描述物体反射光线能够经过衰减到达观测点的比例,将IA(x)表示成球坐标形式为:

IA(x)=[r(x),θ(x),φ(x)](2-3)

其中,半径r(x)的计算表达式为:

r(x)=t(x)||J(x)-A||,0≤t(x)≤1(2-4)

此时球坐标系的原点对应图像的大气光值A。

2)依据变换后像素点的[θ(x),φ(x)]值的大小,对有雾图像当中的像素点采用KD-Tree的方法进行聚类,根据非局部先验,位于同一类当中的像素点大致呈线状分布,因此聚类后会得到多条haze-line,假设图像整体的大气光值是一致的,因此每条haze-line都会经过球坐标系的原点,依据非局部先验位于同一条haze-line的像素点在无雾图像J(x)中的对应点的像素值大致是相同的,根据像素点的半径的计算公式(2-4),可以得知位于同一条haze-line上的点的半径的差异是与透射率的差异成正比的。假设每条haze-line上最大半径对应的点为清晰无雾的点,即半径最大的像素点所对应的透射率为1。最大半径的定义式如下:

根据上述求得的最大半径可以得到同一条haze-line上其他像素点对应的透射率为:

所述透射率修正模块,具体用于:

1)采用上述的方法估计得到的透射率会存在误差,接下来分析误差产生的原因并进行修正。

2)每条haze-line上半径最大的点不一定是清晰无雾的点。当半径最大的点受雾影响时,最大半径小于理想的清晰无雾的点的半径,因此最终采用公式估计的透射率的值偏大。针对以上问题提出如下改进:

设定透射率的取值空间为[0.1,1],对透射率进行剪切处理,得到图像记为由于估计得到的透射率较实际偏大,加入参数p进行修正:根据恢复的无雾图像的像素值大于0可以得到每个像素点对应的透射率的下限值:其中,Ic(x)表示有雾图像的像素点的RGB三个颜色通道值之一,Ac表示大气光值的三个颜色通道值之一。采用下限值约束后得到的透射率表达式为:

3)基于非局部先验估计得到的透射率是以像素点为单位进行估计的,没有加入图像的空间限制。通常情况下,图像当中的点与其邻近的点的透射率差异很小,当像素点受到噪声影响导致最终估计的透射率不准确时,通过加入空间限制项可以减少透射率估计的误差。实验中通过最小化如下的关于的目标方程,实现对透射率的进一步优化:

其中,是经式(2-7)处理得到的透射率图像,σ(x)是位于同一条haze-line上的点的透射率的标准差,λ是用来控制数据项和平滑项的参数,Nx是像素点的四邻接的像素集合,I(x)和I(y)表示的是引导图像当中像素点的像素值。通常情况下采用图像的强度图像作为引导图像,即I(x)表示的是原始图像的强度通道。在这里我们采用透射率的下限值tLB作为引导图像,因为在tLB当中包含了较多的纹理细节和边缘特征,因而采用tLB得到的透射率图像更加精细准确。

4)将上述得到的透射率与大气光值代入大气散射模型,即可恢复无雾图像,通过实验观察到,恢复的图像在场景深度小的部分去雾不完全。因此对透射率图像进行进一步的修正,具体的过程如下:因为图像当中场景深度较小的部分通常位于图像的底部,因此首先计算透射率图像下半部分的平均值m,设定阈值T=m-a,a为常数,用于控制阈值,将透射率图像当中大于阈值的部分缩小为原来的η倍。

所述去雾计算模块,具体用于:

对透射率进行上述修正后,可以取得较好的去雾效果,但是当有雾图像中含有大面积天空时,去雾后的图像会产生噪声放大与颜色失真。这是由于天空区域的透射率的值比较小,采用如下表达式:

进行去雾时,由于图像天空区域的像素值I(x)与大气光值A接近,与较小的t(x)相除后会将差异扩大,这与天空区域平坦光滑的特性是相反的,因此会导致去雾后图像天空区域的颜色失真与噪声放大。

针对上述问题,采用设定自适应透射率下限阈值t0的方法进行改进,阈值的表达式为:

其中,α和β为可调系数,用于控制天空区域的弱化程度,n为透射率图像当中像素值小于α的像素点的个数,N为透射率图像的像素总数。

通过设置透射率下限阈值可以增大天空区域的透射率,进而能够减少去雾后天空区域的颜色失真与噪声放大现象,同时采用自适应阈值的方法,根据天空区域的面积自适应调节阈值,增强了算法的鲁棒性。

将修正后的透射率t(x)与估计得到的大气光值A代入以下公式:

即可恢复清晰的图像。其中设置透射率的下限值t0可以减少图像的失真,这是因为在场景的透射率过小的情况下,恢复的图像受噪声影响严重,此外实验中将t0设置为自适应参数,可以改进图像当中天空区域颜色失真的现象。实验中将ω设置为大于1的数,这样可以为图像的远景部分保留一定量的雾,使得去雾后的图像看起来更加真实自然。

为了改善去雾后图像的视觉效果,对恢复的清晰图像进行自动色阶处理。自动色阶算法将每个颜色通道中位于上下限阈值之外的像素映射到纯白或纯黑,同时将中间像素按比例重新分配以提高图像的对比度。

其中阈值设置的方法具体如下:首先统计有雾图像R,G,B三个颜色通道的直方图,然后设定剪切比例,根据剪切比例,计算剪切的上下限阈值。

本发明的有益效果:

(1)利用非局部先验估计图像的透射率,可以减轻采用块假设进行估计时,透射率图像的块效应问题,与He Kaiming的算法相比,本发明估计的透射率图像更加精细准确,去雾效果更好。

(2)改善了采用Berman D的方法透射率估计粗糙,近处去雾效果不好以及天空区域失真的问题。

(3)本发明的复杂度是图像像素数量的线性函数,在同等实验条件下,运行速度远优于He Kaiming的算法,在实时性系统中具有较高的实际应用价值。

附图说明

图1为基于暗通道与非局部先验的单幅图像去雾方法的流程示意图。

图2为透射率图像计算流程示意图。

图3为有雾图像及采用两种算法进行去雾的结果:

其中,(a)为原始有雾图像;(b)为采用Berman D的非局部先验的方法进行去雾的结果;(c)为采用本方明的方法的去雾结果。

图4为有雾图像及采用三种算法进行去雾的结果:

其中,(a)为原始有雾图像;(b)为采用He Kaiming的暗通道的方法得到的去雾结果;(c)为采用暗通道的方法得到的透射率图像;(d)为采用Berman D的非局部先验的方法进行去雾的结果;(e)为采用非局部先验的方法得到的透射率图像;(f)为本发明的去雾结果;(g)为本发明得到的透射率图像。

图5为本发明暗通道与非局部先验的图像去雾系统的模块示意图。

具体实施方式

下面结合具体实施实例和附图详细阐述本发明。

图1为本发明去雾方法的流程示意图,包括:

(1)求出有雾图像(见附图4(a)所示)的暗通道图,按照公式(1-1)求取雾化图像的暗通道图像,滤波模板大小为15×15。

(2)求取图像的大气光强,求得暗通道图像当中像素值大小为前0.1%的像素点的位置,求取有雾图像中对应位置的像素点的平均值作为图像的大气光值A。

(3)利用非局部先验计算透射率图像。

(4)对透射率图像进行修正:

1)设定透射率的取值空间为[0.1,1],对透射率图像进行剪切处理,得到图像记为由于估计得到的透射率较实际偏大,加入参数p进行修正:具体实施中将其设置为0.1。根据恢复的无雾图像的像素值大于0可以得到每个像素点对应的透射率的下限值:采用公式(1-7)计算下限约束后的透射率。

2)通过加入空间限制项可以减少透射率估计的误差。实验中通过最小化目标方程(1-8),减少误差,具体实施中λ设置为0.1。

3)对透射率图像进行进一步的修正,首先计算透射率图像下半部分的平均值m,图4(a)所对应的平均值为0.5976,将a设置为0.1,则阈值T为0.4976,同时设置η为0.95,即将透射率图像当中大于阈值的部分缩小为原来的0.95倍。

(5)利用大气散射模型恢复出无雾图像:

针对去雾后图像天空区域的颜色失真与噪声放大问题。采用设定自适应透射率下限阈值t0的方法进行改进,设置α和β分别为0.15和0.3。根据表达式(1-10)计算得到图像3(a)的阈值为0.2496,图像4(a)的阈值为0.15,图像3(a)的天空区域的面积大于图像4(a)的天空区域的面积,因此阈值也相应的增大,可以得知采用自适应阈值的方法,算法的鲁棒性得到增强。

将修正后的透射率t(x)与估计得到的大气光值A代入公式(1-11)即可得到清晰的图像。具体实施中将ω的值设置为1.06,这样可以保留一部分雾,使得去雾后的图像看起来更加真实自然。同时,对恢复的清晰图像进行自动色阶处理,改善去雾后图像的视觉效果,实验中设置剪切比例为5%。

图5为本发明去雾系统的组成示意图,包括:

(1)暗通道计算模块,用于求出有雾图像(见附图4(a)所示)的暗通道图,按照公式(2-1)求取雾化图像的暗通道图像,滤波模板大小为15×15。

(2)大气光计算模块,用于求取经过暗通道计算模块得到的输入图像的暗通道图像当中像素值前0.1%的像素点的位置,然后求取有雾图像中对应位置的像素值的平均值作为图像的大气光值A;

(3)透射率计算模块,用于基于非局部先验,求取图像的透射率:

(4)透射率修正模块,用于对透射率图像进行修正:

1)设定透射率的取值空间为[0.1,1],对透射率图像进行剪切处理,得到图像记为由于估计得到的透射率较实际偏大,加入参数p进行修正:具体实施中将其设置为0.1。根据恢复的无雾图像的像素值大于0可以得到每个像素点对应的透射率的下限值:采用公式(2-7)计算下限约束后的透射率。

2)通过加入空间限制项可以减少透射率估计的误差。实验中通过最小化目标方程(2-8),减少误差。具体实施中λ设置为0.1。

3)对透射率图像进行进一步的修正,首先计算透射率图像下半部分的平均值m,图4(a)所对应的平均值为0.5976,将a设置为0.1,则阈值T为0.4976,同时设置η为0.95,即将透射率图像当中大于阈值的部分缩小为原来的0.95倍。

(5)去雾计算模块,用于恢复无雾图像:

针对去雾后图像天空区域的颜色失真与噪声放大现象。采用设定自适应透射率下限阈值t0的方法进行改进,设置α和β分别为0.15和0.3。根据表达式(2-10)计算得到图像3(a)的阈值为0.2496,图像4(a)的阈值为0.15,图像3(a)的天空区域的面积大于图像4(a)的天空区域的面积,因此阈值也相应的增大,可以得知采用自适应阈值的方法,算法的鲁棒性得到增强。

将修正后的透射率t(x)与估计得到的大气光值A代入公式(2-11)即可得到清晰的图像。具体实施中将ω的值设置为1.06,这样可以保留一部分雾,使得去雾后的图像看起来更加真实自然。同时,对恢复的清晰图像进行自动色阶处理,改善去雾后图像的视觉效果,实验中设置剪切比例为5%。

经过上述步骤,图4(g)为本发明对雾化图像4(a)的去雾结果。

上述实例的实施平台为Windows 7操作系统、处理器主频为3.40GHz、系统内存16G的PC上,MATLAB R2014a软件。图4(b)和图4(d)分别为He Kaiming与Berman D的两种方法对图4(a)的去雾结果。

对于图像大小为1024×768的图4(a),本发明的处理时间为5.79s,而He的处理时间为61.84s。

本发明若移植于FPGA硬件平台,采取并行运算,则可进一步加速。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1