本文主要是介绍(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(1−t(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 R、G、B)至少有一个通道中的某些像素点的值很小甚至接近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 r、g、b三个通道; Ω ( x ) \Omega(x) Ω(x) 表示包含在x内的一块像素区域。
-
说人话就是,清晰图像在每个 r 、 g 、 b r、g、b r、g、b通道取最小值,并且每个像素块都取最小的 x x x,那么 x → 0 x \to 0 x→0
-
-
反之也就是说,如果是在没有天空的有雾图像中,三个通道( R 、 G 、 B R、G、B R、G、B)有些通道中的某些像素点的值会远离0。
- 在清晰图像中呈现的效果
- 在有雾图像中呈现的效果
- 作者对上述想法在随机挑选的5000张图像中进行了测试,结果基本符合上述暗通道先验
t ( x ) t(x) t(x) 的计算过程:
得到去雾图像
- 这么容易就完成去雾了(当然论文中还有一些优化操作,在此不多阐述)。
结语:
- 这篇论文真心推荐涉及图像的同学看一看。思路清晰,看着也舒服。
- 后续再把matlab和python代码写写也贴上来。
这篇关于(2020)Single Image Haze Removal Using Dark Channel Prior论文笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!