暗通道先验
暗通道先验
暗通道先验算法是一种简单但有效的图像去雾算法。暗通道先验是一种对无雾户外图像的统计。该算法基于一项观察-无雾户外图像中大多数局部块中包含一些像素点,这些像素至少在一个颜色通道中具有非常低的强度。将此先验与雾霾成像模型结合使用,我们可以直接估计雾霾的厚度并恢复高质量的无雾图像。
在计算机视觉和计算机图像学中,广泛用于描述雾霾图像形成的模型如下:
上式中I是观察到的强度,J是场景辐射,A是全球大气光,t是描述光为散射并达到相机的部分的介质传输。去雾的目标是从I中恢复J,A和t。
等式右侧的J(x)t(x)成为直接衰减,A(1-t(x))成为空气光。直接衰减描述了场景辐射及其在介质中的衰减,而空气光来自先前的散射光并导致场景颜色的变化。当大气光均匀时,透射率t可以表示为:
其中\beta是大气的散射系数。它表明场景辐射度随场景深度d成指数衰减
暗通道先验基于以下对无雾室外图像的观测:在大多数非天空图像块中,至少一个颜色通道在某些像素处具有非常低的强度。形式上,对于图像J,有如下定义:
上式中J^c是图像J所对应的颜色通道,其中c\in\{r,g,b\},\Omega(x)是以x为中心的局部补丁,也就是一个以x为中心的窗口。通过统计学角度的观察表明,如果J是无雾的室外图像,除了天空区域,J^{dark}的强度很低并且趋于零。我们称J^{dark}为J的暗通道,上述统计观察结果即为暗通道先验。
使用暗通道先验去雾
在通过暗通道先验进行图像去雾时,首先要对大气光值进行估计。
在大多数以前的单图像方法中,大气光A是从最不透明的像素中估计出来的。例如,将具有最高强度的像素用作大气光。但是在真实图像中,最亮的像素可能出现在白色汽车或白色建筑物上。在雾霾图像中,其实雾霾图像的暗通道很好地近似于雾霾密度。我们可以使用暗通道来改进大气光值的估计。首先选择暗通道中最亮的0.1\%像素。在这些像素中,选择输入图像I中强度最高的像素作为大气光值。
在大气光值确定完毕后,需要进一步假设在在局部窗口\Omega(x)中光线的传输是恒定的。此处将补丁的传输表示为\tilde{t}(x)。对雾霾成像模型的局部补丁进行最小值操作。
上述的最小值操作是在三个颜色通道上独立执行的。所以上式也等同于:
之后,对上式进行三个颜色通道间的最小化运算,得到下式:
此时,根据暗通道先验,暗通道J^{dark}的值趋于为零:
那么在最小值处理后的最暗通道的雾霾图像方程中:
那么透射率的估计值\tilde{t}(x)的计算方式如下:
实际上,即使是在晴天,大气中也并非完全没有任何粒子。所以当我们看远处的物体时,雾霾仍然存在。此外,雾霾的存在是人类感知深度的基本线索。这种现象称为空中透视。如果我们彻底去除雾霾,图像可能看起来不自然并且可能会失去深度感。因此,我们可以通过在等时中引入常数参数\omega,\quad(0<\omega<1)来选择性地为远处的物体保留非常少量的雾度:
在获取到透射率之后,则可以根据雾霾成像模型进行图像恢复。但是在这个过程中透射率接近于零时,会使得衰减项J(x)t(x)非常接近于零。因此,可以将透射率t(x)限制为下限t_0,这意味这在非常密集的雾霾区域保留了少量雾霾。最终原图像通过以下方式进行恢复: