瞎搞系列-暗通道去雾

瞎搞系列-暗通道去雾

1. 算法背景

基于暗通道先验的去雾算法实际上是一种统计算法,发现了无雾图像中局部存在一些像素,这些像素至少有一个颜色通道的亮度值非常非常低

但是当图像区域白色的时候,这种算法则存在缺陷

2. 背景介绍

在计算机图形学中,存在一个比较重要的模型,这种模型的广泛应用于雾图中:

瞎搞系列-暗通道去雾

其中I(x)表示观测到的亮度,J(x)表示恢复后的图像,t(x)表示透射率,A表示大气中光的成分。通过这个公式我们可以从已经有的相片中计算得到原始无雾的图像,投射率及其估算全球大气光的成分。

瞎搞系列-暗通道去雾

这个图像描述了汇入手机成像的部分,分别是由直接传输并且部分散射得到的图像以及从全球大气光成分得到的光最后混合形成我们所看到的最终的图像,即 瞎搞系列-暗通道去雾 。

对于透射率的计算,有一个已有的公式,该公式用来表示当大气中物资是同质的时候,透射率t可以被表达成为,

瞎搞系列-暗通道去雾

其中 瞎搞系列-暗通道去雾 是大气散射的参数,d是景深。这个公式表达了scene radiance会随着距离的增大而呈现出指数型的衰减。因为如果我们得到了这个透射率,我们就可以根据这一规律得到景物的深度。

3. 暗通道先验

之前的部分已经说明了,暗通道先验(Dark Channel Prior)是基于统计意义上的观测得到的结果。观测结果表明,在大部分无雾图像的无天空区域,像素中至少存在一个颜色通道存在很低非常低的亮度值。这个最低的亮度值几乎等同于0。因此,对于一个观测图像 瞎搞系列-暗通道去雾 ,其暗通道瞎搞系列-暗通道去雾

这样的观测结果我们称之为暗通道先验。

这样的低亮度主要来源于三个原因:

  1. 阴影
  2. 彩色物体或者表面
  3. 黑色物体或者表面

4. 基于暗通道先验的去雾算法的步骤

4.1 得到透射率

根据已有的公式,等式两边同时除以 瞎搞系列-暗通道去雾 再进行转换即可。

瞎搞系列-暗通道去雾

4.2 获得恢复图像

根据透射率以及预估的大气光成分,我们可以得到恢复图像。

瞎搞系列-暗通道去雾

4.3 关于 瞎搞系列-暗通道去雾

参数 瞎搞系列-暗通道去雾 是一个调整参数,这个参数为0的时候表示不去雾,参数为1时表示全部去雾。这个在这里不作为参考,因为作者已经提出参数设置为0.95。然后在自己的项目中,我会设置为1,因为对于景物远近的考虑从而调整参数不是我应该纳入考虑的内容,因此此处,我会设置为1。

4.4 估计大气光成分 atmospheric light 瞎搞系列-暗通道去雾

在之前的步骤中,我们都是讲 瞎搞系列-暗通道去雾 作为已知量。已有的研究结果表明,这个airlight可以从有雾图像中获取得到。在Tan's的论文中提出,有雾图像的最亮的像素可以被考虑是haze-opaque。这个考虑的原因是当天气是阴天的时候,太阳光通常都是被忽略的,在这种情况下airlight是景观中唯一的可照亮来源。(关于这一段只是来源于对原文的翻译,自己只是听说过illumination source,但是并没有过多的了解)

如果有一个图像中,存在一个很远很远的无限远的距离的像素存在,(这个时候,此像素的透射率几乎为0)。这个图像中最亮最亮的值所在的像素可以被看做是雾遮盖的程度最大也是其值可以看做是几乎等同于 瞎搞系列-暗通道去雾 。