Fast Visibility Restoration from a Single Color or Gray Level Image

2009年Tarel提出的去雾算法,该算法最重要的特点就是快速。下面是在本人看过论文之后的简单总结。

首先是雾天图像的物理模型,这是现在使用最为广泛的模型。该模型包含两部分,前半部分我们称之为衰减模型,后半部分可以称之为大气光模型


作者的思路是要首先求出大气光部分,也就是物理模型中的后半部分,称之为atmospheric veil,记为V(x,y)。那么该物理模型可以这样写:


其中I(x,y)是现实场景中摄像机观察到的图像,R(x,y)是我们要求的图像,Is=Ls是大气光,这里我们假设Is是已知的,所以只要求出V(x,y)就可以。

1、白平衡(white balance)

首先需要对输人图像进行白平衡操作以还原雾本来的颜色,对在特定光源下拍摄时出现的偏色现象,通过加强对应的补色来进行补偿.白平衡以后雾是纯白色的,如果把输入图像的像素值都规格化到0~1的范围,那么Is就可以设置为向量(1,1,1)。

2、Atmospheric Veil Inference即推测V(x,y)

我们假设大气光Is是已知的,那么V(x,y)只与景深有关,也就是说在相同的景深下Atmospheric Veil 是相同的,而随着景深的增加,Atmospheric Veil 对图像的影响增加。首先用图像中最小亮度值对Atmospheric Veil 做粗略的估计。可以得到,该公式的物理意义是W(x,y)是图像中每个像素在所有通道的最小值。

                                                           W(x, y) = min(I(x, y))

Atmospheric Veil 有两个约束条件:

1)0 ≤ V (x, y),该条件的物理意义是所有的像素点肯定都会受到大气光的影响。

2)V (x, y) ≤ W(x, y).,这个条件可以从公式中看出,其物理意义是这样的图像中的每个像素点的亮度值是包含两部分的,除了大气光之外还有景物本身反射的光,所以V(x,y)肯定是小于或者等于像素值在所有通道最小值的。

      由于在近似的景深部分,V(x,y)的值是近似相等的,所以对粗略得到的W(x,y)应该进行平滑,但是在景深变化较大的部分V(x,y)的值是会出现剧烈变化的,所以要尽量保留边缘。一般的边缘滤波器如高斯滤波只能平滑,而双边滤波器(Bilateral Filter)可以很好的保留边缘的同时消除噪声。双边滤波器能做到这些原因在于它不像普通的高斯/卷积低通滤波,只考虑了位置对中心像素的影响,它还考虑了卷积核中像素与中心像素之间相似程度的影响,根据位置影响与像素值之间的相似程度生成两个不同的权重表(WeightTable),在计算中心像素的时候加以考虑这两个权重,从而实现双边低通滤波。

1)中值滤波器是特殊的双边滤波器,作者采用中值滤波器对W(x,y)进行滤波。

                                 A(x, y) = mediansv (W)(x, y)


2)同时由于滤波之后的图像中仍然会存在一些纹理,而这些纹理肯定是不属于雾的,所以:

                                B(x, y) = A(x, y) − mediansv (|W − A|)(x, y)   

,这样就可以消除纹理,确定留下来的都是属于雾的成分。

3)由于B(x,y)是我们细化之后的Atmospheric Veil,所以仍然要遵守Atmospheric Veil的两个约束条件:

                                V (x, y) = max(min(pB(x, y),W(x, y)), 0)

公式中的sv是中值滤波器的尺寸大小,p是考虑天空光比例的大小一般的取值是在0.9~0.95之间。现实中,空气中总会不可避免地包含一些杂质分子.如果彻底地移除雾的存在,图像会看起来不真实,并且深度感会丢失.所以可以通过引进1个常数p,有针对性地保留一部分覆盖
遥远景物的雾。

这样我们最终就得到Atmospheric Veil。

3、Image Visibility Restoration复原图像

根据该公式就可复原图像。

4、Dedicated Tone Mapping色调的映射

       本文所做的每一步操作都是在图像为浮点数据的基础上对图像进行复原的,而复原图像通常会比原图像具有更高的动态范围.因此,为了使恢复图像具有良好的视觉对比度,而且与原图像的对比度相差不致太大,需要对恢复图像和原图像进行色度调和操作。具体的步骤论文中相似的阐述。


根据1,2,3,4使用matlab编程可以很简单的实现该算法.






你可能感兴趣的:(Tarel,dehazing)