暗通道先验去雾《Single Image Haze Removal Using Dark Channel Prior》

 本文讲讲何恺明大神的论文里主要公式的推导,基于暗通道先验的单图像去雾算法:
 《Single Image Haze Removal Using Dark Channel Prior》–09年CVPR最佳论文
 论文下载地址:点击进入
去雾效果:
暗通道先验去雾《Single Image Haze Removal Using Dark Channel Prior》_第1张图片

首先作者是统计了五千多副图像的特征,验证了暗通道先验理论的普遍性。

暗通道先验:

在绝大多数的非天空图像区域中,一些像素总会有至少一个颜色通道具有很低的值。
 暗通道的数学定义如下:
在这里插入图片描述
 式中Jc表示彩色图像的每个通道 ,Ω(x)表示以像素X为中心的一个窗口。

 公式含义:对图像做最小值滤波,然后求出每个像素在RGB通道分量中的最小值,存入到一副和原始图像大小相同的的灰度图中。
 暗通道先验理论指出: Jdark趋于0

雾形成模型:

在计算机视觉和计算机图形领域,一个常用来描述有雾图像的公式表达为:
在这里插入图片描述
 其中, I 表示有雾图像, J 是要恢复的无雾的图像, A 是全球大气光成分,t(x)为透射率。
 对这个式子,本身的理解,大气光成分和图像中的景物本身就是真实存在的。晴天和雾天的区别只是大气光成分的多少,表达在这个式子里就是透射率。晴天的时候大气光成分少,物体反射光的透射率很高,几乎让人感受不到大气光成分的存在。雾天则相反。

使用暗通道先验的去雾算法推导:

假设A已知(后面会说怎么求)。进一步假设每个滤波窗口内的投射率t(x)为常数,记作t(x)(上面有个波浪线)。
对上式两边取最小值,(即最小值滤波):
在这里插入图片描述
两边同除A,得:
在这里插入图片描述
两边再对像素在RGB通道方向取最小值,得:
暗通道先验去雾《Single Image Haze Removal Using Dark Channel Prior》_第2张图片
暗通道先验理论指出:
在这里插入图片描述
因为A为正数:
在这里插入图片描述
将其代入上式得
在这里插入图片描述
 前面提及了,暗通道先验是对于非天空区域的,那么对于天空区域来说,这可能不是一个好的先验。幸运的是,天空的颜色和大气光成分A相似.
所以在天空区域我们有下式:
在这里插入图片描述
 所以,上面推导出的t(x)(上面有波浪线),能够处理非天空区域和天空区域。
 同时,即使是晴天,大气光成分还是存在的,尤其是在看远处的物体时给人的感觉更强。这种大气光成分会给人一种景深的层次感,去雾要有所保留不要去地太彻底。
因此,引入一个常量参数 ω (0<ω<1)用来控制去雾的程度:
在这里插入图片描述
 作者文中用的w=0.95。
 前面我们假设 A 是已知,那么这里讲下具体A如何求得。我们可以借助于暗通道图来从有雾图像中获取该值。

具体步骤如下:

  1. 从暗通道图中按照亮度的大小取前0.1%的像素。
  2. 在这些位置中,在原始有雾图像I中寻找对应的具有最高亮度的点的值,作为A值。

 至此,透射率 t(x),大气光成分 A ,雾图 I,都是已知了,就可以求解出去雾图:
最后的公式
在这里插入图片描述
 其中,t0为透射率下界,由于在计算时,若透射率趋近于0,那么由上面第二个公式可知:J(x)t(x)也趋近于0。这时不就丢失了原图J(x)的信息,容易引入噪声。所以设置一个下界。在雾密度很大的地方,保留一定数量的雾,t0的典型值为0.1。
同时在去雾后,图像看起来会比较暗淡,可以适当增加曝光度以得到更好的效果。



各参数对去雾结果的影响:

1. 窗口的大小。这个对结果来说是个关键的参数,窗口越大,其包含暗通道的概率越大,暗通道也就越黑。建议是窗口大小在11-51之间,即半径在5-25之间。
2. ω也有着明显的意义,其值越小,即透射率t越大(即雾越多)。去雾效果越不明显。

你可能感兴趣的:(图像处理,图像处理,人工智能)