当前位置: 代码迷 >> 综合 >> 《Single Image Dehazing Based on the Physical Model and MSRCR Algorithm》 阅读笔记与代码复现
  详细解决方案

《Single Image Dehazing Based on the Physical Model and MSRCR Algorithm》 阅读笔记与代码复现

热度:19   发布时间:2023-12-01 10:34:52.0

《Single Image Dehazing Based on the Physical Model and MSRCR Algorithm》

阅读笔记 author:Owen718

Jinbao Wang, Ke Lu, Member , IEEE, J i a n X u e , Member , IEEE, Ning He, and Ling Shao, Senior Member , IEEE

摘要——针对雾霾天气图像退化问题,提出了一种基于物理模型和图像亮度分量的单幅图像去雾方法,该方法采用多尺度视网膜颜色恢复算法。整个去雾过程包括三个部分,包括大气光值计算、透射图估计和模糊图像场景辐射的恢复。我们的贡献是,我们提出了一种新的算法,通过计算大气光值和计算透射图,同时考虑图像的动态范围,对单个图像进行去雾。实验结果表明,该算法能有效改善雾天图像质量下降的问题,并保留足够的图像细节。索引项—去雾、单幅图像、物理模型、MSRCR算法。

算法过程:

  • 大气光值计算
  • 先验过程中通过MSRCR学习透射图,并使用最优化算法作为后验过程。
  • 模糊图像场景辐射的恢复
  • 物理模型获得去雾图像

算法特点

  • 联合使用了大气光散射物理模型和多尺度视网膜颜色恢复(MSRCR)方法。
  • 通过计算大气光值、计算透射图,同时考虑图像的动态范围进行去雾。
  • 有效改善雾天图像质量下降的问题,同时保留足够的图像细节

技术路线

  • 基于物理模型的去雾方法中,有两种不同的方法。第一种使用多个图像或深度信息。例如,Narasimhan and Nayar[[8]–[[12]提出了一个从RGB颜色空间推导出的基于物理学的二元散射模型,但其处理类似于二元散射模型中天空区域的模糊区域不能保证更好的结果。
  • Schechner等人[13]和Shwartz等人[14]注意到大气粒子散射的光是部分偏振的。在这种现象下,他们提出了一种快速去除雾霾的方法,通过偏振器以不同的角度捕捉两幅图像。然而,这种方法不能符合真实的物理模型。Kopf等人[15]提出了一种使用地理参考数字地形和城市模型以及场景深度信息恢复模糊图像的方法。但这种方法在实际应用中受到限制,因为它需要用户去交互,不同角度拍摄或利用已知的地理参考信息。
  • Tan [16]通过最大化局部对比度来增强模糊图像。尽管这种方法在具有非常密集的模糊或自然的区域中获得了良好的结果,但去雾图像的颜色经常是过饱和的,并且在深度不一致处可以观察到光晕。算法产生的错误信息?)。
  • Kratz和Nishino [17]和Nishino等人[18]使用重尾分布模拟场景深度和辐射函数的梯度分布,并通过进一步假设统计独立性来恢复这些函数
  • He kaiming 等[19],[20]使用暗通道先验结合soft matting方法来恢复无霾图像。这种方法实现了最先进的性能。然而,当场景对象固有地靠近空中时,暗通道先验可能无效。
  • Tarel等人[21],[22]通过假设空间变化和深度过渡都是平滑的,从单个图像引入了可见度恢复的变量。Gibson和Nguyen[23]–[25]在这个框架内提出了一个新的图像去雾的暗先验。与假定最小值为零的暗通道先验不同,新先验采用最小体积椭球近似。这种假设在对应于明亮物体的像素上也可能是不准确的。
  • Fattal [26]提出了一个描述物体表面阴影和场景反照率的图像去雾数学模型。这种方法在物理上是可靠的,并且通过使用颜色线方法[27]和自动大气光学矢量计算[28]进一步改进了它们的方法。该方法表明大气光值在去雾模型中起着重要作用。
  • 朱等人[29]提出了一种用于去雾的衰减先验,它是通过机器学习获得的一种颜色深度信息来构造透视图(transmission map)。
  • 另:例如直方图均衡化、曲波变换、同态滤波器、小波方法、压缩感知[30]、[31]和视网膜方法[32]、[33]。特别是NASA的实施受到好评(笔者对这个不熟悉,求解惑)

QUESTION

在[22]中提出的多尺度视网膜(MSR)算法不是一种针对具有不同物体深度的场景的可见性增强算法。这里,场景中雾霾不均时去雾效果不会很理想。这是因为MSR增加了一些对应于雾而不是场景的对比度。

成像模型就不再多说了,本篇论文采用的也还是经典的成像模型。

算法简述

本文的亮点在于

  • 作者提出了一个Decision Image,用于大气光值A的确定。
  • 基于MSRCR的idea,使用亮度分量来构建透射图。

Retinex简述

I(x,y)=L(x,y)?R(x,y)I(x,y) = L(x,y) \cdot R(x,y)I(x,y)=L(x,y)?R(x,y)

  • L(x,y):L(x,y):L(x,y): 亮度分量,与场景物体无关,决定图像的动态范围(dynamic range of the image)。
  • R(x,y):R(x,y):R(x,y): 反射分量,与光照无关,对应于高频信息,即图像纹理细节,并决定了图像的固有性质。

基于同态滤波方法的SSR Jobson[36]

  • 改进:
    MSR克服了同时解决动态范围和色调对比度的问题。但MSR会导致更大程度的颜色失真问题。因此Garg[38]提出了MSRCR,解决了颜色失真问题。

  • MSRCR:
    RMSRi(x,y)=∑n=1NWn(LnIi(x,y)?Ln(G(x,y)?Ii(x,y)R_{MSRi}(x,y)=\sum^N_{n=1}W_n(LnI_i(x,y) - Ln(G(x,y)*I_i(x,y)RMSRi?(x,y)=n=1N?Wn?(LnIi?(x,y)?Ln(G(x,y)?Ii?(x,y)

其中,G(x,y)=12πσ2e?(x2+y2)2σ2G(x,y) = \frac{1}{2\pi\sigma^2}e^{\frac{-(x^2 +y^2)}{2\sigma^2}}G(x,y)=2πσ21?e2σ2?(x2+y2)?
∑n=1NWn=1\sum^N_{n=1}W_n = 1n=1N?Wn?=1
W1=W2=...=WnW_1 = W_2 = ... = W_nW1?=W2?=...=Wn?
实际应用中:

  • σ1:σ<50\sigma1: \sigma < 50σ1:σ<50
  • σ2:50<σ<100\sigma2: 50 < \sigma < 100σ2:50<σ<100
  • $\sigma3: \sigma > 100 $

注意:MSR会导致图像失真(严重!),因此提出MSRCR(Multiple Single Retinex Color Restoration):

RMSRCRi(x,y)=Ci(x,y)?RMSRi(x,y)R_{MSRCR_i}(x,y) = C_i(x,y)\cdot R_{MSRi}(x,y)RMSRCRi??(x,y)=Ci?(x,y)?RMSRi?(x,y)

其中,CiC_iCi?为颜色修复函数,用于调节图像的RGB三通道分布情况

Ci:C_i:Ci?

Ci=Ln(Ii(x,y)1m∑(x,y)∈ΩIi(x,y))C_i = Ln(\frac{I_i(x,y)}{\frac{1}{m}\sum_{(x,y)\in \Omega}I_i(x,y)})Ci?=Ln(m1?(x,y)Ω?Ii?(x,y)Ii?(x,y)?)
对RGB三通道分别使用上式即可,其中M是输入图像的像素总数

其实每个图像的动态范围都是不一样的(雾霾等影响),作者在透射估计中考虑雾霾图像的动态范围,因为其可表示雾霾的部分浓度,并有助于透射估计,同时,这避免了当透射图和模糊图像过于接近时在恢复图像中的过饱和问题。

Decision Image

decision image f(x)f(x)f(x) is calculated as follows:
f(x)=[(b2+g2+r2)?(b+g+r)2/3]1/2f(x) = [(b^2+g^2+r^2) - (b+g+r)^2/3]^{1/2}f(x)=[(b2+g2+r2)?(b+g+r)2/3]1/2

Atmospheric Light Value

  • JdarkJ_{dark}Jdark?即暗通道图中挑选出最亮的、排前0.1%像素。(这一步和其他基于DCP的水下图像增强方法一致)
  • 从1中选出决策图f(x)>δf(x)> \deltaf(x)>δ的像素点的值,作为A值

Transmission map

1.提取出粗糙的透射图,即Rough Transmission map
2.做优化,提高精度。

1.Rough Transmission map

第一步,从RGB色彩空间转至YCrCb色彩空间,以提取亮度分量l(x,y)l(x,y)l(x,y)
RGB?>YCrCb?>l(x,y)RGB->YCrCb->l(x,y)RGB?>YCrCb?>l(x,y)
第二步,由MSRCR方法的变形式,得L′L'L:

LMSRCRi′(x,y)=Ln(li(x,y)1M∑(x,y)∈Ωli(x,y))∑n=1NWn(LnIi(x,y)?Ln(G(x,y)?Ii(x,y)L'_{MSRCRi}(x,y)=Ln(\frac{l_i(x,y)}{\frac{1}{M}\sum_{(x,y)\in \Omega}l_i(x,y)})\sum^N_{n=1}W_n(LnI_i(x,y) - Ln(G(x,y)*I_i(x,y)LMSRCRi?(x,y)=Ln(M1?(x,y)Ω?li?(x,y)li?(x,y)?)n=1N?Wn?(LnIi?(x,y)?Ln(G(x,y)?Ii?(x,y)

第三步,调节值到可见光范围:
LMSRCR(x,y)=δLMSRCR′(x,y)+kL_{MSRCR}(x,y) = \delta L'_{MSRCR}(x,y) + kLMSRCR?(x,y)=δLMSRCR?(x,y)+k

  • δ\deltaδ:将值变换到人眼可见光范围
  • kkk:增加图像的动态范围

2.Optimization for Transmission map

粗糙的透射图(Rough transmission map)无法很好的满足去雾的需要,需要继续优化:
T(x)=μ?LMSRCR(x)T(x) = \mu \cdot L_{MSRCR}(x)T(x)=μ?LMSRCR?(x)
这里的 μ\muμ为增益因子。

纯变换比例的输出不会产生令人满意的透射图。如图5所示,王等人[39]指出,如果我们上面步骤得到的透射图如图中绿色曲线,那么黑色曲线就是类似于原图的透射图,红色曲线就是原图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ICYB4dgk-1612283083562)(img\1612108853663.png)]

输入的模糊图像由黑色连续曲线表示。透射图显示为绿色连续曲线。恢复的无霾结果显示为红线。
因此:
T′(x)=T(x)?I(x)T'(x) = T(x) - I(x)T(x)=T(x)?I(x)

此步骤可以防止去雾图像变模糊。
为提高透射图的精度,对于去雾图像中雾度还没有完全去除或者图像已经变得过饱和的部分:
T′′(x)=Maxfilter(T′(x)),Ω=15T''(x) = Maxfilter(T'(x)),\Omega=15T(x)=Maxfilter(T(x)),Ω=15
t(x)=Blurfilter(T′′(x)),Ω=20t(x) = Blurfilter(T''(x)),\Omega=20t(x)=Blurfilter(T(x)),Ω=20

最后我们得到优化后的透射图 t(x)t(x)t(x)

复原公式

本篇论文采用的复原公式和传统的dcp方法类似,只有一点不同,在于ttt值的限制,限制为>0.1>0.1>0.1
J(x)=I(x)?Amax(t(x),t0)+AJ(x) = \frac{I(x) - A }{max(t(x),t0)} + AJ(x)=max(t(x),t0)I(x)?A?+A

即透射图的值必须大于或等于0.1,这么做的原因:

以天空区域为例,对比去雾前后的三个通道上天空区域的像素值差异,天空区域总体上是白色的,三通道差值很小,也就是说天空区域的颜色值总是非常接近于大气光值A,而当透射图里天空部分接近于0时,恢复的图像就会出现噪声(伪影),因此对透射图的值做一个限制。

复现代码待更新

欢迎关注本人的专栏和github:Owen718

  相关解决方案