毕设总结一--传统去雾理论

本科毕设题目为《基于深度学习的图像去雾方法研究与实现》

毕设总结系列:

1. 前言

上一篇文章中,讲述了我整个毕设课题的时间线安排,从这篇开始就正式对我的毕设进行总结。这篇的主题是--”传统去雾理论“,我们将会从大气散射模型入手来。

为什么要介绍大气散射模型呢?

我们要对带雾图进行去雾操作,首先要知道雾图的形成过程是怎样的,从行成原理出发最后得到去雾的数学模型。而“大气散射模型”可以用来描述雾图的形成过程。

2. 大气散射模型

首先先贴上一张整体图:

注意在这张图中的箭头代表光线传播途径,这些箭头又分为了两种颜色(蓝色和绿色),两种颜色代表了两种不同的衰减。下面分别介绍这两种衰减。

下文中所提及的公式没有包含完全的推导,要了解完全的推导,可参考文献[1]。

2.1 入射光衰减模型

让我们来关注蓝色箭头的传播路径,把它更详细的展开:

入射光线在目标场景表面发生反射,反射的光线在传播到观测点位置处成像装置的过程中,与悬浮在空中的微粒碰撞发生散射,从图中可以直观的看到有相当一部分的反射光线在发生散射后没有传播到成像装置。这部分传播到其他位置的光线就是入射光的衰减。目标场景所反射光线的衰减程度与观测点位置处成像装置的空间距离有很大关系,空间距离越大,景深也就越深,传播过程中发生散射的机率也越大,相应的光线衰减程度也就越大,最后传播到成像装置的光线会变得很少,所捕获的的图像信息往往模糊不清。

这部分的数学模型可由下式表达:

$$ E_i(d,\lambda) = E_0(\lambda)e^{-\beta(\lambda)d} \quad\quad (1) $$

其中,

  • $E_i(d,\lambda))$表示的是在成像设备处的光束辐射强度;
  • $E_0(\lambda)$表示目标物体反射光处的辐射强度;
  • $\beta(\lambda)$ 是大气传播介质的散射系数;
  • $\lambda$光波长度;
  • $d$ 是景深距离,也即成像设备距离目标物体之间的距离。

2.2 大气光成像模型

除了成像反射光能够进入到成像设备外,大气中还有很多杂光因为各种散射而进入到成像设备中。也就是上图中的绿色箭头部分。

这部分的数学模型可由下式表达:

$$ E_A(d,\lambda) = E_\infty(\lambda)(1-e^{-\beta(\lambda)d}) \quad\quad (2) $$

其中,

  • $E_A(d,\lambda)$大气光在成像设备处的辐照强度;
  • $E_\infty(\lambda)$表示当目标场景与成像设备无穷远时,大气光在成像设备处的辐照强度。
  • 其余参数同上。

2.3 雾图形成模型及简化

有了2.1和2.2的介绍,总的光强也即雾图可由下式表达:

$$ E(d,\lambda) = E_i(d,\lambda) + E_A(d,\lambda) = E_0(\lambda)e^{-\beta(\lambda)d} + E_\infty(\lambda)(1-e^{-\beta(\lambda)d}) \quad\quad (3) $$

是不是感觉还是一头雾水?这些参数即使解释了也看不懂?没关系,因为在我的去雾过程中根本不会用这个公式,(当然结合参考文献[1]应该还是懂这个公式的意思的)。而是会用它的简化公式,令

$$ I(x) = E(d,\lambda),J(x) = E_0(\lambda),t(x) = e^{-\beta(\lambda)d,A=E_\infty(\lambda)} $$

可以得到简化后的公式

$$ E(d,\lambda)= E_0(\lambda)e^{-\beta(\lambda)d} + E_\infty(\lambda)(1-e^{-\beta(\lambda)d}) \\ I(x) = J(x)t(x) + A(1-t(x)) \quad\quad (4) $$

其中,

  • $x $表示图片中的索引位置
  • $I$ 表示最终的雾图
  • $J$表示无雾图
  • $t$表示透射图(这个翻译并不好,英文中为transmission map),每一个$t(x)$表示的是透射率,即光束经过各种散射杂质所未被散射掉的比率。所有$t(x)$组成了$t$。
  • $A$全局大气光

3. 去雾模型

2.3小结我们得到了简化后的大气散射模型公式,对它进行一个简单的变形就可以得到去雾公式:

$$ J(x) = \frac{I(x) - A}{t(x)} + A \quad\quad (5) $$

可以发现,去雾是一个病态问题(只给我一个雾图,我去哪儿找其他两个参数),重点需要估计的参数有两个:1)透射图t;2)全局大气光A。有大量论文集中在这两个参数的估计。

  • 传统方法是基于某种先验知识去雾,最出名的当属暗通道去雾(DCP)[2],基于暗通道先验。
  • 不少深度学习的方法也是用某种网络结构去估计透射图,然后再采用某种方法估计A,最后应用上述公式去雾。如MSCNN[3]。

仔细观察上式,我们发现t(x)作为了分母,如果$t(x)$估计过小,则估计出来的$J(x)$也就是无雾图将会过曝,所以实际上通常会对$t(x)$做一定阈值处理:限制一个最小值$t_0$,防止过曝。最终的去雾公式如下:

$$ J(x) = \frac{I(x)-A}{\max (t(x),t_0)} + A \quad\quad (6) $$

不管是传统方法还是深度学习方法,大多都是在估计透射率,那么A是怎么估计的呢?

观察公式(4),我们令$d->\infty$,则可得到

$$ A = I(x) , d(x) -> \infty \quad\quad (7) $$

然而现实生活中,景深距离不可能达到无穷大。但是足够大的景深距离仍能得到较低的透射率。于是一种常用的方法是这样的,从雾天图像中找到透射率低于$t_0$时所对应的最大光照强度作为大气光$A$的估算值

$$ A = \quad \max\limits_{y\in\{x|t(x) \le t_0\}} \quad I(y) \quad\quad (8) $$


上面所分析的都是分别单独估计两个参数,这样有一个弊端,单独估计两者会带来额外的误差,文献[4]对公式(5)进行了变形,将t和A融合成了一个参数来估计,避免额外误差。变形公式(9):

$$ \begin{equation} \begin{gathered} J(x) = K(x)I(x) - K(x) + b , where\\ K(x) = \frac{ \frac{1}{t(x)}(I(x) - A) + (A -b ) }{ I(x) -1 } \end{gathered} \end{equation} \quad\quad (9) $$

这样只用估计k就可以了。

4. 结语

在这篇文章中,我们从大气散射模型出发,分析了雾图的形成过程,进一步地对公式进行变形得到了去雾公式。但是理论公式会让人觉得落不到地,在下一篇文章中,我们会从代码层次实现DCP去雾算法,这样就会对这些公式有更深的理解。

参考

  1. 贾绪仲. 基于深度学习的图像去雾方法研究[D]. 湖南工业大学, 2018.
  2. HE K, SUN J, TANG X. Single image haze removal using dark channel prior[J]. IEEE transactions on pattern analysis and machine intelligence, 2011, 33(12): 2341–2353.
  3. REN W, LIU S, ZHANG H, 等. Single Image Dehazing via Multi-scale Convolutional Neural Networks[G]//LEIBE B, MATAS J, SEBE N, 等. Computer Vision – ECCV 2016. Cham: Springer International Publishing, 2016, 9906: 154–169.
  4. LI B, PENG X, WANG Z, 等. Aod-net: All-in-one dehazing network[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017, 1: 7.
Last modification:June 20th, 2019 at 12:10 am
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment