采用快速导向滤波的暗通道先验去雾算法的研究与实现

进修社 人气:1.07W

摘要:本文首先阐述了暗通道先验去雾的理论基础及其适用范围,其次对于基于暗通道优先理论的雾天图像清晰化处理的基础算法及可能进行优化的步骤进行了分析,最后在此基础之上采用了导向滤波与最新的快速导向滤波算法代替软抠图实现了算法的进一步优化。在上述理论研究基础之上,本文使用Matlab对多种雾天图像清晰化处理算法进行了逐一实现,并设计了综合比较系统,实现了直方图均衡化去雾算法、自适应直方图去雾算法以及SSR、MSR去雾算法等与暗通道优先算法在效果与效率上的对比分析。本系统不仅能够对这各种算法的最终结果和中间产物进行输出保存,还能够对各种算法进行算法效率和算法结果进行直观数字的对比。

采用快速导向滤波的暗通道先验去雾算法的研究与实现

关键词:雾天图像清晰化 暗通道先验 快速导向滤波 数字图像处理

一、基于暗通道先验的去雾算法的理论基础

在描述恶劣天气条件对图像造成的影响时,McCarneg 散射理论得到的米氏散射物理模型是最为常用的,该物理模型表达式为:

(1.1)

其中β是大气散射系数,d是场景深度。(x,y)是图像像素的空间坐标;I是雾化图像的颜色值,J是场景无雾情况下的颜色值,A是大气光颜色值,而t则是场景色彩在各个区域通过程度的描述。去雾方法的本质就是从I获取J,A和t。

称为场景直接衰减值,表示景场景直接衰减值描述描述场景颜色值,以及它在介质中的衰减程度;被称为空气光。在光路上由于大气粒子的散射作用,杂散光会融入到成像光路中,与目标物体的反射光一起参与成像,即图像复原中的“噪声”。空气光描述由于光线散射导致场景颜色值偏移的大气光。

我们可以用传输透射率t(x,y)来表示指数衰减项,则可以得到:

I(x,y)=J(x,y)t(x,y)+A(1-t(x,y)) (1.2)

对于上式,如果已知透射率t(x,y),大气光A和有雾图像I,方可求得无雾图像J:

(1.3)

在大多数的不包含天空的局部区域中至少有一个颜色通道中存在亮度很小甚至接近于零的像素。也就是说,在这样的一个区域中的最小亮度接近零。

为了更好地描述这个概念,对于任意图像J,其暗通道由下式给出:

(1.4)

二、透射率t的计算

根据式J(x)是要恢复的无雾的图像,A是全球大气光数值, t(x)为透射率。现在的已知条件就是I(X),要求目标值J(x),显然,这是个有无数解的方程,因此,就需要一些先验了。

左右同除以A可得:

(2.1)

上标c是表示RGB三个通道的意思。

首先假设每一个窗口内透射率t(x)为常数,定义为,并且A已经给定,然后对上式进行两次求最小值运算:

(2.2)

在上式中,J是待求的无雾图像,根据暗通道先验理论有:

(2.3)

因此,可以推导出:

(2.4)

(2.5)

这就是透射率的预估值。

即使在晴天,空气中也存在着一些颗粒,使得看远处的物体还是能感觉到雾的影响,另外,雾的存在让人类感到景深的存在,因此,有必要在去雾的时候保留一定程度的雾,这可以通过在上式中引入一个在[0,1] 之间的因子,修正为:

(2.6)

三、透射率的优化

3.1基于导向滤波的透射率分布优化(Guided Filtering)

为了去除暗通道和透射率分布的块效应,传统方法使用软抠图来进行,但是由于计算过程中构建抠图拉普拉斯矩,计算量极其庞大,该算法的大部分时间都耗在了软抠图优化透射率上了。为了提高透射率优化的速度,我们尝试用导向滤波的透射率分布优化。导向滤波本质上其实就是一种双边带滤波,需要一个引导图像作为引导目标。经过试验,我们发现导向滤波的效果与软抠图的效果类似,但是计算速度比软抠图提高了不止一个数量级。该方法的计算速度与滤波窗口尺寸没有关系,这是因为滤波过程中利用了积分图像。我们定义滤波模型如下:

(3.1)

其中 i,j 表示的是处理像素的像平面坐标(i 横坐标,j 纵坐标);I 表示引导影像,可以理解为目标效果;p 表示原始影像;q 表示输出结果影像;是与引导影像 I 相关的一个函数,该函数与待处理影像 p 没有关系。当引导影像 I 和原始影像 p 是完全一样的时候,式(3.1)则演变成联合双边滤波。在利用导向滤波的时候,我们定义其核函数为:

(3.2)

其中 i 表示像素的平面坐标,I 表示引导影像,q 表示结果影像,此处对应的就是经过优化后的透射率分布图,a 和 b 是在窗口内恒定的系数。定义价值函数如下:

(3.3)

(3.3)中的是一个正则化参数,其目的是为了是防止过大。用线性回归的方法就求解得到:

(3.4)

(3.5)

表示影像I的当前处理窗口,窗口内的系数为和,其中和对应影像I的当前处理窗口内像素强度值的均值和方差,用表示当前处理窗口内像素的总个数,表示当前处理窗口内每个像素对应的p值的均值。

由于不止一个包含像素i的窗口存在,所以系数和取所有窗口内的均值:

(3.5)

导向滤波是其本质就是基于窗口内的求和运算,所以在积分图像已知的条件下,可以较快的实现。导向滤波算法效率高、复杂度低。

3.2基于快速导向滤波的透射率分布优化

3.2.1 快速导向滤波理论基础

尽管导向滤波有着较高的知名度和并且得到了种类繁多的应用,但对其计算过程中存在一种更为简单有效的加速方法。这种加速方法首先对滤波图和导向图进行二次采样,计算局部线性系数,之后对所得系数进行过采样。并在原始导向图上采用该过采样的系数来产生输出图像。这种方法将时间复杂度从O(N)降低到O(N/S2),其中S是采样率。在实际实现过程中,可以观察到超过十倍的加速效果。

此方法对于超大像素图像的处理有着很好的效果。对于此类图像,由于滤波尺寸是正比于原始图像的尺寸,因此采样后图像的局部窗口仍能够为计算局部数值提供足够的.像素。在本文的实际实现中,采用快速导向滤波这种加速方法,几乎没有观察到明显的图像质量退化。快速导向滤波作为一种速度快、处理效果好的算法,必然会在今后的图像处理领域获得更多的关注和应用。

3.2.2 快速导向滤波具体实现过程

对于式(3.5)我们可以变换为:

(3.5)

首先对输入的图像进行二次采样,同时所有的框过滤器处理的对象是低分辨率的图,这是也是引导过滤的主要进行计算步骤之一。通过使用两个系数图和来双线性过采样到原来的大小,其它步骤于导向滤波基本相同。

算法3-2 快速导向滤波

在(3.5)式中,和是两个经过平滑处理的图,并且在q中的边缘和结构主要通过调节图像I得出。但是导向滤波的主要的计算过程为计算和的平滑图像部分,这个过程并不需要在全分辨率下进行。算法3-2描述了二次采样版本的快速导向滤波。其需要根据采样率s对输入图像p和导向图I进行二次采样。之后所有的框过滤器(box filter)都是在低分辨率图的基础上进行计算,这一步也正是导向滤波的主要步骤之一。然后对两个系数图和双线性采样到初始的大小,最后的输出图像q仍然通过计算。在最后一步中,图像I是全分辨率且没有降低采样率的导向图,并且它会保持对输出图像的引导作用。

所有框过滤器的计算复杂度从O(N)降低到O(N/)。最后的双线性过采样和输出步骤的复杂度为O(N),但只占据了整个计算过程的较小部分。

四、大气光值A的估算

上述推论中都是假设全球达气光A值时已知的,在实际中,我们可以借助于暗通道图来从有雾图像中获取该值。具体步骤如下: