何凯明:Single Image Haze Removal Using Dark Channel Prior

参考: 19_基于暗通道先验的图像去雾算法(原理)_大磊FPGA图像处理_哔哩哔哩_bilibili

参考:走出寂静岭!何恺明经典去雾论文分析 - 古月居 (guyuehome.com)

在本文中,我们提出了一种简单但有效的图像先验-暗通道先验,用它可以从单个输入图像中去除雾。暗通道先验从无雾室外图像进行的统计所得。这是基于一个关键的观察:没有雾的室外图像中,大多数局部块包含一些像素,它们至少有一个颜色通道值非常低。使用此先验和雾成像模型,我们可以直接估计雾的厚度,并恢复成高质量的无雾的图像。对各种室外雾霾图像的结果证明了,我们提出的这个先验的威力。此外,去雾的同时还可以获得高质量深度图。

1. Introduction

室外场景的图像通常会因大气中的混浊介质(例如颗粒、水滴)而退化。雾、雾和烟雾是由于大气吸收和散射而产生的现象。摄像机从场景点接收的辐射沿视线衰减。此外,入射光会与空气光混合[6](大气颗粒反射到视线中的环境光)。退化图像会失去对比度和色彩,如图1(a)所示。由于散射量取决于场景点与摄像机的距离,因此退化的程度是随空间而变化的。有雾图像不好

消费者/计算摄影学和计算机视觉应用中都特别想要去雾。首先,去除雾霾可以显著提高场景的可见性,并纠正空气光引起的颜色偏移。通常,无雾的图像在视觉上更令人愉悦。其次,从低层次的图像分析到高层次的目标识别,大多数计算机视觉算法通常假设输入图像(在辐射标定后)是场景辐射亮度。视觉算法(如特征检测、滤波和光度分析)的性能在有偏、低对比度场景辐射的图像上降低。最后,去雾后可以产生深度信息,并有助于许多视觉算法和高级图像编辑。雾可以包含深度信息线索,会有助于场景理解的。不好的有雾图也可以有大用处。去雾对很多研究都有用,大家都想去雾

然而,去雾是一个具有挑战性的问题,因为雾依赖于未知的深度信息。如果输入仅为单个有雾图像,则该问题是欠约束的。因此,已经有许多方法通过使用多个图像或附加信息来解决。基于偏振的方法[14,15]通过以不同偏振度拍摄的两个或多个图像来消除雾效应。在[8、10、12]中,从不同天气条件下同一场景的多幅图像中获得了更多约束。基于深度的方法[5,11]需要来自用户输入或已知3D模型的粗略深度信息。 有些人利用多张图像输入来去雾

最近,单图像去雾[2,16]取得了重大进展。这些方法的成功在于使用更强的先验或假设。Tan[16]观察到,无雾图像与有雾图像相比,必须具有更高的对比度,他通过最大化恢复图像的局部对比度来消除雾,结果的视觉效果不错,但在物理上可能无效。Fattal[2]估计场景的反照率,然后在假设透射和表面阴影局部不相关的情况下推断介质透射。Fattal的方法是合理的,可以产生不错的结果。然而,这种方法不能很好地处理重雾图像,并且在假设被打破的情况下可能失败。 单图像去雾也有人研究,但方法都有些问题

在本文中,我们提出了一种新颖的先验——暗通道先验,用于单图像去雾。暗通道先验基于无雾的室外图像的统计。我们发现,在大多数局部区域(不包括天空)中,某些像素(称为“暗像素”)在至少一个颜色(rgb)通道中的强度值非常低。在雾霾图像中,该通道中这些暗像素的强度主要由大气光贡献。因此,这些暗像素可以直接提供雾度透射的精确估计。结合雾度成像模型和soft matting方法,我们可以恢复高质量的无雾图像,并生成良好的深度图。

我们的方法在物理上是有效的,即使在浓雾图像中也能处理远处的物体。我们不依赖输入图像中透射或表面着色的显著差异。我们的结果会包含少量光晕伪影。

与任何使用强假设的方法一样,我们的方法也有其自身的局限性。当场景对象本质上在大局部区域上与空气光类似并且没有阴影投射在对象上时,暗通道先验可能无效。虽然我们的方法适用于大多数有雾的室外图像,但在某些极端情况下可能会失败。我们相信,从不同的方向开发新的先验知识非常重要,将它们结合在一起将进一步提高技术水平。 作者提出了基于单幅图像的暗通道先验方法,去雾效果很好,也十分合理。

2. Background

此章节介绍了雾模型,有助于理解本文提出的暗通道先验

这一节主要还是对去雾这个问题做了一个定义。从算法实现的角度,我把三个最重要的点列一下:1. 定义了雾的模型,公式1将是算法实现的核心。2. 去雾,就是要估计出大气光,进而估算出透射率,最后复原出没有雾的图像。3. 透射率一定是小于1的

3. Dark Channel Prior

为了验证暗通道的性能,我们从flickr.com(由FLICKR用户注释的150个最流行的label)和几个图像搜索引擎中收集了一组室外图像。由于雾霾通常发生在室外景观和城市景观中,我们从下载的图像中手动选择无雾霾的景观和城市风景。其中,我们随机选择5000幅图像,并手动切出天空区域。调整其大小,使其最大宽度和高度为500像素,并使用15×15的补丁大小计算其暗通道。图3显示了几个室外图像和相应的暗通道。

 图4(a)是所有5000个暗通道的强度直方图(横坐标为像素值,纵坐标为该像素值图像个数占总个数的百分比),图4(b)是相应的累积直方图(这样看比例更清楚)。我们可以看到,暗通道中约75%的像素具有零值,90%的像素的强度低于25。这一统计数据为我们的暗通道先验提供了非常有力的支持。我们还计算每个暗通道的平均强度,并在图4(c)中绘制相应的直方图。同样,大多数暗通道的平均强度非常低,这意味着只有一小部分无雾室外图像偏离了我们之前的图像。用事实来证明,无雾的图像确实有暗通道先验这一特性,暗通道的提出是合理的。下文的暗通道指的就是每个原始图像的暗通道图像

由于附加空气光,在透射t较低的情况下,雾图像比其无雾版本更亮。因此,霾图像的暗通道在具有更密集霾的区域中将具有更高的强度。从视觉上看,暗通道的强度是雾度厚度的粗略近似值(见图3右侧)。在下一节中,我们将使用此属性来估计透射和大气光。观察图3有雾图片的暗通道,挺有意思的,你会发现它真的和雾很近似

注意,我们忽略了天空区域,因为无雾图像的暗通道在这里可能具有高强度。幸运的是,我们可以通过使用霾成像方程(1)和先验知识来优雅地处理天空区域。没有必要明确地切出天空区域。我们将在第4.1节中讨论这个问题。暗通道这个特性对天空是不适用的。这一点很重要,我们在后期的代码实现中会有所体现。

我们的暗通道先验部分受到广泛应用于多光谱遥感系统的众所周知的暗物体减法技术的启发。在文献[1]中,作者通过减去与场景中最暗的对象相对应的恒定值来去除空间均匀的雾。在这里,我们推广了这一思想,并提出了一种新的自然图像去模糊先验。参考文献1使用了减去最暗像素值的方法来去雾,对我们有一定的启发

4 Haze Removal Using Dark Channel Prior使用暗通道先验的去雾

4.1. Estimating the Transmission估计透射

 

根据之前的统计结果,我们神奇的将公式中的一项置成了0,就得出了透射图的表达公式。 

这种修改的好处在于,我们自适应地为远处的物体保留更多的雾。ω的值基于应用。本文采用的值为0.95。物理世界有雾是很正常的,作者加了一个0.95的参数。这个参数在天空部分会起到作用,保证了算出的透射值不为0。 

图5(b)是根据输入有雾图像(图5(a))估计的透射图,使用的patch大小为15×15。它相当不错,但包含一些光斑效应,是因为同一patch中的透射值一致,这个设定并不总是正确的。在下一小节中,我们使用Soft matting方法重新定义该地图。

Soft matting是作者的另一个贡献,有助于提升去雾效果。下一篇文章的代码实现,我们会看出soft matting对去雾结果的提升,有效解决了边缘出现的光斑。

4.2. Soft Matting

利用Soft Matting,优化原有的透射图。参考文献为2006年CVPR《A closed form solution to natural image matting.》后期何恺明在2010年ECCV上《Guided image filtering》提出了导向滤波的方法,可以用于替换Soft Matting,我后期再分析。

Levin的Soft Matting 方法也已被Hsu等人[4]应用于处理空间变化的白平衡问题。在Levin和Hsu的作品中,t̃仅在稀疏区域中已知,而matting主要用于将值外推到未知区域。在本文中,我们使用Soft Matting来重新定义已填充整个图像的较粗t̃。 

图5(c)是使用图5(b)作为数据项的软垫结果。正如我们所见,重新定义的透射图能够捕捉到尖锐边缘的不连续性,并勾勒出物体的轮廓。

根据这一节的公式,我们将上一节的透射图t̃,利用Soft Matting得到了新的更优的透射图t

4.3. Recovering the Scene Radiance

4.4. Estimating the Atmospheric Light估计大气光

之前几节一直假定大气光的值A我们已知,这节就要介绍大气光的值是如何得到的

在以前的大多数单图像方法中,大气光A是从雾度最大的不透明像素估计的。例如,具有最高强度的像素在[16]中用作大气光,并在[2]中进一步定义。但在真实图像中,最亮的像素可能在白色汽车或白色建筑上。

正如我们在第3节中所讨论的,雾度图像的暗通道非常接近雾度密度(见图6(b))。我们可以使用暗

通道来改进大气光估计。我们首先选择暗通道中最亮的0.1%像素。这些像素是最危险的(图6(b)中以黄线为界)。在这些像素中,选择输入图像I中具有最高强度的像素作为大气光。这些像素位于图6(a)中的红色矩形中。注意,这些像素在整个图像中可能不是最亮的。这种基于暗通道先验的简单方法比“最亮像素”方法更鲁棒。我们使用它来自动估计本文中显示的所有图像的大气光。

有些人使用原图中最白的像素作为大气,你就有可能选到图中的蓝框,就错了。而何恺明使用的是暗通道图像,找到暗通道图像中最亮的0.1%像素点,再从这些点中挑出在原图中最亮的点,效果会更好。

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 单图像去是一种常见的计算机视觉问题,它旨在从含有霾的图像中恢复出清晰的图像。"Dark Channel Prior"是一种常用的算法,在单图像去中有着广泛的应用。 Dark Channel Prior(暗通道先验)是通过观察自然景物在局部区域中深度最小像素的强度来估计霾浓度和传播距离的先验知识。Dark Channel可以简单地通过在输入图像的每个像素位置上采用最小值操作来计算得到。这样,我们可以仿佛窥视很多景物的背后,包括霾中那些没有的真实景物。 Dark Channel Prior算法分为三个步骤: 1. 估计暗通道:对输入图像的每个像素计算出最小通道值,得到每个像素位置的暗通道。由于霾导致图像亮度改变,这一步估计了景物中的最小透射率。 2. 估计大气光:通过在暗通道图像中找到最亮的像素值,得到估计的大气光。这是因为大气光对于霾图像中的亮度改变有关键作用。 3. 去恢复:基于估计的暗通道和大气光,我们可以在图像中进行退化模型的恢复,以消除霾效应。这可以通过以下公式实现:R = (I - A) / t + A,其中R是去后的图像,I是输入图像,A是估计的大气光,t是透射率。 代码实现上,我们可以通过使用基于块的方法来减小计算量,同时在去后对结果进行细化和增强,以获得更好的效果。在此基础上,还可以采用其他技术和方法来进一步改进去结果,例如引入图像边缘信息和增加颜色校正。 总之,单图像去是一项具有挑战性和广泛应用的任务。"Dark Channel Prior" 算法被证明是一种有效的方法,能够在一定程度上还原出清晰的图像,提升霾图像的质量。 ### 回答2: Single image haze removal using dark channel prior是一种用于去除图片中霾的算法。该算法通过分析图像的暗通道先验信息来估计图像中的霾程度,并进行相应的去操作。 暗通道先验是指图像中的某些区域在某个颜色通道上的像素值较低。这是因为霾会使得图像中的物体颜色变浅,而远处的物体通常更加受到霾的影响。基于此,算法通过寻找图像中的暗通道来估计霾强度。 具体实现方案如下: 1. 对于给定的输入图像,算法首先计算图像的暗通道。这可以通过对图像的每个像素点在RGB颜色空间中选择最小值来实现。 2. 通过暗通道估计得到的霾强度,算法可以计算出每个像素点在霾下的透射率。透射率越高,表示该像素受到的霾影响越小。 3. 基于透射率,算法可以计算出未被霾遮挡的场景亮度。这可以通过选择图像中的最大值来实现。 4. 最后,算法通过去除透射率和场景亮度对图像进行去操作。这可以通过对每个像素点应用去公式来实现。去公式将图像中的像素值重新映射,以减少霾的影响。 通过单一图像和暗通道先验的使用,该算法能够较好地去除图像中的霾,提高图像的可视性和质量。它在计算机视觉和图像处理领域有着广泛的应用,例如景观摄影和无人驾驶等。 ### 回答3: Single image haze removal using dark channel prior是一种用于去除图像霾的算法。这个算法的代码实现逻辑是基于一个称为“暗通道先验”的概念。 在这个算法中,我们首先计算图像的暗通道图像。暗通道图像是指在图像的每个局部区域内,选择像素值最小的通道作为该区域的暗通道像素值。通过计算暗通道图像,我们可以得到整个图像的暗通道图像。 接下来,通过观察我们发现,大部分的非天空区域的暗通道像素值都是接近于0的,而天空区域的暗通道像素值通常会高于0。而这些高于0的像素值正是由于霾所导致的。 因此,我们可以通过选取每个局部区域内暗通道像素值最小的像素点作为参考点,来估算出霾的浓度。进一步地,我们可以根据这个浓度值来消除图像的霾。 具体地,我们可以使用以下公式来计算去除霾后的像素值: t(x) = 1 - w * min(R/G, R/B) 其中,t(x)表示去除霾后的像素值,w表示霾浓度(衡量霾的程度),R/G和R/B分别表示图像红色通道和绿色通道以及蓝色通道的比值。这个公式可以将原始像素值转换为去除霾后的像素值。 最后,我们可以根据去除霾后的像素值和原始图像的亮度值来还原最终的去图像。 Single image haze removal using dark channel prior代码实现了上述算法的具体步骤和细节。通过使用这个代码,我们可以方便地对图像进行去处理,使得图像更加清晰和真实。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值