参考文献
《Single Image Haze Removal Using Dark Channel Prior》
要点
本文提出了一个简单而有效的图像暗通道先验,以去除单一输入图像中的雾霾。暗通道先验是室外无霾图像的一种统计。它是基于一个关键的观测结果,即在室外无霾图像中,大多数局部区域包含一些像素,这些像素在至少一个颜色通道中的强度非常低。利用该先验知识和雾霾成像模型,可以直接估计雾霾的厚度,恢复出高质量的无雾霾图像。
一、引言
本文中提出了一种新的暗通道先验去雾方法。暗通道先验是基于室外无霾图像的统计信息。我们发现,在大多数不覆盖天空的局部区域中,一些像素(称为暗像素)在至少一个颜色(RGB)通道中通常具有非常低的强度。在朦胧的图像中,通道中这些暗像素的强度主要由空气光影响。因此,这些暗像素可以直接提供雾霾传输的精确估计。结合无雾成像模型和软插值方法,可以恢复出高质量的无雾图像,并生成良好的深度图。
二、背景
在计算机视觉和计算机图形学中,广泛用于描述模糊图像形成的模型是:
其中I是观察到的强度,J是场景辐射度,A是全局大气光,t是描述未散射到相机的光的部分的介质透射。去雾的目标是从I中恢复J、A和t。
在(1)中,右侧的第一项J(x)t(x)称为直接衰减,第二项A(1-t(x))被称为空气光。直接衰减描述了场景的亮度及其在介质中的衰减,而空气光是由先前散射的光引起的,并导致场景颜色的变化。直接衰减是场景辐射的倍数失真,而空气光是加性失真。
当大气均匀时,透射比t可表示为:
β是大气的散射系数,d是场景深度。该方程表明,场景辐射度随深度呈指数衰减。如果我们能恢复透射,我们也能恢复到未知的深度。
几何上,方程(1)意味着在RGB颜色空间中,向量A、I(x)和J(x)共面并且它们的端点共线(见图)。投射t是两个线段的比率:
其中c∈{r,g,b}是颜色通道索引。
三、暗通道先验
暗通道先验是基于对室外无霾图像的以下观察:在大多数非天空斑块中,至少有一个颜色通道具有某些像素强度很低,接近于零。等价地,这种斑块的最小强度接近于零。
为了正式描述这种观察,我们首先定义了暗通道的概念。对于任意图像J,其暗通道Jdark由下式给出:
其中,Jc是J的一个颜色通道,Ω(x)是以x为中心的局部图。暗通道是两个最小运算符的结果:括号内的对每个像素执行,如图3b,括号外的是最小过滤器,如图3c。最小算子是可交换的。
利用暗通道的概念,我们的观察表明,如果J是室外无霾图像,除天空区域外,J的暗通道强度较低,趋于零:
我们称这种观测为暗通道先验。
暗通道中的低强度主要是由于三个因素造成的:a)阴影;b)彩色物体或表面;c)暗物体或表面
图4ab示出了几个室外无雾图像和相应的暗通道,c是雾图及其暗通道。
图5a是观测的所有5000个暗通道的强度直方图,图5b是相应的累积分布。我们可以看到暗通道中大约75%的像素有零值,90%的像素的强度低于25。这个统计数据给我们的暗通道提供了强有力的支持。我们还计算了每个暗通道的平均强度,并在图5c中绘制了相应的直方图。同样,大多数暗通道的平均强度非常低,表明只有一小部分室外无霾图像偏离了我们之前的图像。
由于附加的空气光,朦胧的图像比透射比低的无雾图像更亮。因此,朦胧图像的暗通道在具有更密集的霾的区域中将具有更高的强度(参见图4的右侧)。从视觉上看,暗通道的强度是雾霾厚度的粗略近似值。
四、暗通道先验去雾
4.1 估计透射
我们假设大气光A是给定的。(第4.3节提出了一种自动估计A的方法。)首先通过以下公式对雾度成像方程(1)进行归一化:
注意要独立地标准化每个颜色通道。
进一步假设透射在局部图Ω(x)中是常数。我们将这个传输表示为t~(x)。然后,我们计算了(7)两边的暗通道。等价地,我们把最小算子放在两边:
因为t~(x)是图片中的一个常数,所以它可以放在min算子的外侧。
由于场景辐射J是无雾图像,J的暗通道由于暗通道先验而接近于零:
由于Ac总是正的,这会导致:
将(10)代入(8)中,可以简单地消除乘法项,估计投射t~:
如前所述,对于天空区域,暗通道先验不是一个好的先验。在朦胧图像I中天空的颜色通常与大气光A非常相似。有:
实际上,即使在晴天,大气中也并非绝对没有任何粒子。所以当我们看远处的物体时,烟雾仍然存在。此外,烟雾的存在是人类感知深度的基本线索。这种现象称为空中透视。如果我们彻底去除雾霾,图像可能看起来不自然,我们可能会失去深度感。因此,我们可以选择通过引入一个常数参数来为远处的物体保留非常少量的雾。
这种修正的优点是自适应地为远处的物体保留更多的雾。对于本文的所有结果,我们将其修正为0.95。
在(11)的推导中,暗通道先验对于消除霾成像模型(1)中的乘性项(直接透射)至关重要,只剩下加性项(大气光)。这种策略与以前的单图像灰霾去除方法完全不同,后者严重依赖乘法项。相反,本文方法注意到加性项改变了局部暗像素的强度,在暗通道先验的帮助下,乘性项被丢弃,加性项足以估计透射。我们可以进一步概括(1):
其中t1和t2不一定相同。使用推导(11)的方法,我们可以估计t2,从而分离加法项。该问题被简化为乘法形式(J(x)t1),并且可以使用其他约束或先验来进一步解开该项。加性项称为面纱亮度,(13)可用于描述透过面纱或强光看到的场景。
图6b显示了使用(12)的估计传输映射。图6d示出了相应的恢复图像。可见,暗通道先验在恢复色彩鲜艳、揭示低对比度物体方面是有效的。透射图是合理的。主要的问题是有一些人工制造光环和块。这是因为在一个图中传输并不总是恒定的。下一节中,提出了一种软抠图方法来细化透射图。
4.2 软抠图插值
我们注意到,雾度成像方程(1)具有与图像消光方程相似的形式:
其中F和B分别是前景色和背景色,α是前景不透明度。雾霾成像方程中的透射图正好是阿尔法图。因此,我们可以应用matting的封闭式框架来细化透射。
用t(x)表示精细透射图。将t(x)和t’(x)的向量形式表示为t和t’,我们最小化以下代价函数:
其中,第一项是平滑项,第二项是带权重λ的数据项。矩阵L称为拉普拉斯抠图矩阵。其(i,j)元素定义为:
通过求解下列稀疏线性系统可获得最佳t:
其中U是一个与L大小相同的单位矩阵。我们设置一个小的λ使t受到t~的软约束。
在求解线性系统(17)之后,我们对t执行双边滤波,以平滑其小尺度纹理。图6c示出了使用图6b作为约束的细化结果。如我们所见,光晕和块伪影被抑制。经过改进的透射图能够捕捉到锐利的边缘不连续并勾勒出物体的轮廓。
4.3 估计大气光
模糊图像中最亮的像素被认为是最模糊的不透明像素。只有当天气阴沉,阳光可以忽略时。在这种情况下,大气光是场景的唯一照明源。因此,每个颜色通道的场景亮度由:
R是场景点的反射率,R<=1。雾度成像方程(1)可以写成:
当像素处于无限距离(t≈0)存在于图像中,最亮的I是最模糊的,它大约等于A。但在实践中我们很少能忽略阳光。考虑到太阳光S,我们修改(18)和(19)为:
在这种情况下,整个图像中最亮的像素可以比大气光更亮。它们可以在一辆白色的汽车或白色的建筑物上(图7d和7e)。
雾图像的暗通道近似于雾密度(见图7b)。因此,我们可以利用暗通道来探测雾霾最不透明的区域,提高对大气光的估计。我们首先选取暗通道中最亮的0.1%像素。这些像素通常是最不透明的(由图7b中的黄线限定)。在这些像素中,选择输入图像I中具有最高强度的像素作为大气光。这些像素位于图7a中的红色矩形中。请注意,这些像素可能不是整个输入图像中最亮的像素。
即使图像中不存在无限远处的像素,这种方法也能很好地工作。在图8b中,我们的方法设法检测出最混浊的不透明区域。然而,t在这里并不接近于零,因此这些区域的颜色可能不趋近A。幸运的是,t在这些最混浊的不透明区域很小,因此阳光的影响很弱。因此,这些区域仍然可以提供A的良好近似值。该图像的雾消除结果示于图8c中。
4.4 恢复场景亮度
利用大气光和透射图,可以根据(1)恢复场景亮度。但是当透射t(x)接近零时,直接衰减项J(x)t(x)可能非常接近零。直接恢复场景亮度J(x)容易产生噪声。因此,我们通过下限t0限制透射t(x),即我们在非常密集的霾区保留少量霾。最后的场景亮度J(x)由下式给出:
t0的经典值为0.1。由于场景亮度通常不如大气光明亮,因此去除雾霾后的图像看起来很暗淡。所以我们增加了J(x)的曝光量来显示。一些最终恢复的图像如图6e所示。
4.5 片大小
一方面,对于较大的尺寸,暗通道先验变得更好,因为包含暗像素的概率增加。我们可以在图9中看到:斑块越大,暗通道越暗。另一方面,假设在片中的透射是恒定的就不太合适了。如果斑块尺寸过大,深度边缘附近的光晕可能会变得更强(图10c)。