(2020)Single Image Haze Removal Using Dark Channel Prior论文笔记

本文2009年CVPR最佳论文,作者何凯明,是国内第一个在计算机视觉与模式识别会议上获得该奖项Doctor

如果是涉及到图像去雾领域这篇论文可以说是无人不晓。论文在的引用量已达到4000+。

论文读起来十分易懂,而读完只想说 :何凯明 🐮 🍺(怪我我才学浅薄,找不到更好的词形容)​

整体思路

描述雾图像的等式(这个是前人已经提出的)

在这里插入图片描述

  • 上述公式: I ( x ) = J ( x ) t ( x ) + A ( 1 − t ( x ) ) \mathbf{I}(\mathbf{x})=\mathbf{J}(\mathbf{x}) t(\mathbf{x})+\mathbf{A}(1-t(\mathbf{x})) I(x)=J(x)t(x)+A(1t(x))

  • I ( x ) I(x) I(x) 是有雾图像(或者说是我们想要去雾的图像)【已知

  • J ( x ) J(x) J(x) 是希望得到的已去雾图像 【未知

  • A A A 是大气光照(可以通过挑选图像中的较亮的像素点作为大气光照)【已知

  • t ( x ) t(x) t(x) 是透射率 (其中 t ( x ) = e − β d ( x ) t(x) = e^{-\beta d(x)} t(x)=eβd(x) )【未知

  • 【到此上述公式:总计四个参数,两个未知,无法得到已去雾图像 J ( x ) J(x) J(x)

⭐️暗通道先验⭐️

何doctor提出暗通道先验就可以得到透射率 t ( x ) t(x) t(x)啦,下面是具体思想和计算过程:

暗通道先验思想:

  • 作者发现如果是在没有天空的清晰图像中,三个通道( R 、 G 、 B R、G、B RGB)至少有一个通道中的某些像素点的值很小甚至接近0(像素点大小越接近0,颜色越接近是黑色)。

    • 暗通道定义 J dark  ( x ) = min ⁡ y ∈ Ω ( x ) ( min ⁡ c ∈ { r , g , b } J c ( y ) ) J^{\text {dark }}(\mathbf{x})=\min _{\mathbf{y} \in \Omega(\mathbf{x})}\left(\min _{c \in\{r, g, b\}} J^{c}(\mathbf{y})\right) Jdark (x)=minyΩ(x)(minc{r,g,b}Jc(y))

      暗通道先验 J dark  → 0 J^{\text {dark }} \rightarrow 0 Jdark 0

    • 上述公式中: c c c为通道集合,包含 r 、 g 、 b r、g、b rgb三个通道; Ω ( x ) \Omega(x) Ω(x) 表示包含在x内的一块像素区域。

    • 说人话就是,清晰图像在每个 r 、 g 、 b r、g、b rgb通道取最小值,并且每个像素块都取最小的 x x x,那么 x → 0 x \to 0 x0

  • 反之也就是说,如果是在没有天空的有雾图像中,三个通道( R 、 G 、 B R、G、B RGB)有些通道中的某些像素点的值会远离0。

    • 在清晰图像中呈现的效果

    在这里插入图片描述

    在这里插入图片描述

    • 在有雾图像中呈现的效果

    在这里插入图片描述

    • 作者对上述想法在随机挑选的5000张图像中进行了测试,结果基本符合上述暗通道先验

t ( x ) t(x) t(x) 的计算过程:

在这里插入图片描述

得到去雾图像

  • 这么容易就完成去雾了(当然论文中还有一些优化操作,在此不多阐述)。
    在这里插入图片描述

结语:

  • 这篇论文真心推荐涉及图像的同学看一看。思路清晰,看着也舒服。
  • 后续再把matlab和python代码写写也贴上来。