Tan基于最大化对比度的去雾方法

Visibility in Bad Weather from a Single Image

刘海山,2021年7月8日

文献引文信息: Tan, R. T. Visibility in bad weather from a single image. 2008 Ieee Conference on Computer Vision and Pattern Recognition, Vols 1-12, 2347-2354, doi:DOI 10.1109/cvpr.2008.4587643 (2008).

文献来源:https://ieeexplore.ieee.org/document/4587643

从暗通道的文章中知道这篇极大化对比度的文章,所以想专门学习一下这篇文献的方法。

一、摘要

In this paper, we introduce an automated method to removal fog. Based on two priors: first, images with enhanced visibility(or clear-day images) have more contrast than images plagued by bad weather; second, airlight whose variation mainly depends on the distance of objects to viewer, tends to be smooth. Relying on these two priors, we develop a cost function in the framework of Markov random fields, which can be significantly optimized by various techniques, such as graph-cuts or belief propagation.

本文介绍了一种只需要一张图片的自动去雾算法。存在两个基本的先验:首先,高能见度(或清晰场景)图片相比于受恶劣天气干扰的图片具有更高的对比度;其次,天空光的变化主要依赖于场景到观察者的距离,并趋向于平滑图像。基于这些先验,本文提出了一个基于马尔科夫场的损失函数。该损失函数可以由多种技术进行优化,比如graph-cuts或者简单传播等。
像雾、霾等恶劣天气会极大地降低场景的能见度。光学上来说,这是由于大气中存在大量的吸收和散射光的粒子。在计算机视觉中,这些吸收和散射过程通常由直接衰减和大气光的线性组合所描述。

二、基本原理

1. 光学模型:

I ( x ) = L ∞ ρ ( x ) e − β d ( x ) + L ∞ ( 1 − e − β d ( x ) ) … … ( 1 ) I(x) = {L_\infty }\rho (x){e^{ - \beta d(x)}} + {L_\infty }(1 - {e^{ - \beta d(x)}}) ……(1) I(x)=Lρ(x)eβd(x)+L(1eβd(x))(1)其中第一项是衰减项,第二项是大气光干扰项。 L ∞ {L_\infty } L表示无穷远处的大气光值。 ρ ( x ) \rho (x) ρ(x)表示场景反射率。

定义色度
σ c = I c I r + I g + I b … … ( 2 ) {\sigma _c} = \frac{{{I_c}}}{{{I_r} + {I_g} + {I_b}}}……(2) σc=Ir+Ig+IbIc(2)c表示某一色彩通道。
因此,位于无穷远的场景,其色度为:
α c = L ∞ c L ∞ r + L ∞ g + L ∞ b … … ( 3 ) {\alpha _c} = \frac{{{L_{\infty c}}}}{{{L_{\infty r}} + {L_{\infty g}} + {L_{\infty b}}}}……(3) αc=Lr+Lg+LbLc(3)若场景中不存在散射,则有
γ c = L ∞ c ρ c L ∞ r ρ r + L ∞ g ρ g + L ∞ b ρ b … … ( 4 ) {\gamma _c} = \frac{{{L_{\infty c}}{\rho _c}}}{{{L_{\infty r}}{\rho _r} + {L_{\infty g}}{\rho _g} + {L_{\infty b}}{\rho _b}}}……(4) γc=Lrρr+Lgρg+LbρbLcρc(4)故而,由上面(3)(4)式可以将(1)转换为:
I ( x ) = D ( x ) e − β d ( x ) γ ( x ) + A ( x ) α … … ( 5 ) {\bf{I}}(x) = D(x){e^{ - \beta d(x)}}\gamma (x) + A(x){\bf{\alpha }}……(5) I(x)=D(x)eβd(x)γ(x)+A(x)α(5)其中:
D ( x ) = L ∞ r ρ r + L ∞ g ρ g + L ∞ b ρ b … … ( 6 ) D(x) = {L_{\infty r}}{\rho _r} + {L_{\infty g}}{\rho _g} + {L_{\infty b}}{\rho _b}……(6) D(x)=Lrρr+Lgρg+Lbρb(6) A ( x ) = ( L ∞ r + L ∞ g + L ∞ b ) ( 1 − e − β d ( x ) ) … … ( 7 ) A(x) = ({L_{\infty r}} + {L_{\infty g}} + {L_{\infty b}})(1 - {e^{ - \beta d(x)}})……(7) A(x)=(Lr+Lg+Lb)(1eβd(x))(7)D和A都是标量, γ \gamma γ α \alpha α是归一化彩色向量。

根据色度的定义可知: ∑ σ c = σ r + σ g + σ b = 1 {\sum {{\sigma _c} = } {\sigma _r} + {\sigma _g} + {\sigma _b} = 1} σc=σr+σg+σb=1 ∑ γ c = γ r + γ g + γ b = 1 {\sum {{\gamma _c} = } {\gamma _r} + {\gamma _g} + {\gamma _b} = 1} γc=γr+γg+γb=1 ∑ α c = α r + α g + α b = 1 {\sum {{\alpha _c} = } {\alpha _r} + {\alpha _g} + {\alpha _b} = 1} αc=αr+αg+αb=1

白大气光:
利用光色 ( α ) (\alpha) (α),我们可以转换大气光值为白色,通过简单的归一化即可实现:
I ′ c ( x ) = I c ( x ) / α c … … ( 8 ) → {{I'}_c}(x) = {I_c}(x)/{\alpha _c} ……(8)→ Ic(x)=Ic(x)/αc(8) I ′ c ( x ) = D ( x ) e − β d ( x ) γ c α c + A ( x ) = D ( x ) e − β d ( x ) γ ′ c + A ( x ) … … ( 10 ) {{I'}_c}(x) = D(x){e^{ - \beta d(x)}}\frac{{{\gamma _c}}}{{{\alpha _c}}} + A(x) = D(x){e^{ - \beta d(x)}}{{\gamma '}_c} + A(x)……(10) Ic(x)=D(x)eβd(x)αcγc+A(x)=D(x)eβd(x)γc+A(x)(10)其中 γ ′ c {{\gamma '}_c} γc表示归一化的目标色度。 I ′ c {{I'}_c} Ic即是我们转化大气光点为白点的结果。

最终方程可以写成彩色向量的形式:
I ′ ( x ) = D ( x ) γ ′ ( x ) e − β d ( x ) + A ( x ) [ 1   1   1 ] T … … ( 11 ) I'(x) = D(x)\gamma '(x){e^{ - \beta d(x)}} + A(x){\left[ {1{\text{ }}1{\text{ }}1} \right]^{\text{T}}}……(11) I(x)=D(x)γ(x)eβd(x)+A(x)[1 1 1]T(11)其中 I ′ I' I γ ′ \gamma' γ是归一化彩色向量,其余变量都是标量。

2. 问题描述

参考方程(11)并假设我们有 I ′ ( x ) I'(x) I(x) L ∞ L_\infty L的值,故而本文的目标是估计整个图像的 D ( x ) γ ′ ( x ) D(x)\gamma'(x) D(x)γ(x)。这幅图像表示场景辐照度(未被散射和吸收)。
估计 D ( x ) γ ′ ( x ) D(x)\gamma'(x) D(x)γ(x)实际上相当于估计A。我们可以根据以下流程进行计算:首先,基于方程(7),我们有
e − β d ( x ) = ∑ c L ∞ c − A ( x ) ∑ c L ∞ c … … ( 12 ) {e^{ - \beta d(x)}} = \frac{{\sum\nolimits_c {{L_{\infty c}}} - A(x)}}{{\sum\nolimits_c {{L_{\infty c}}} }}……(12) eβd(x)=cLccLcA(x)(12)其中 ∑ c L ∞ c = L ∞ r + L ∞ g + L ∞ b {\sum\nolimits_cL_{\infty c}}={{L_{\infty r}} + {L_{\infty g}} + {L_{\infty b}}} cLc=Lr+Lg+Lb.其次,基于方程(11)有
在这里插入图片描述
因此,我们首先估计A值,而不是直接估计 D γ ′ D\gamma' Dγ,这大大简化了计算过程。因为A独立物体的反射率,而仅仅依赖于成像深度d,这里我们已经假设 β \beta β L ∞ L_\infin L是全局常数。

3. 使用单帧图像进行求解

在第一小节中描述问题是一个完全病态的问题:方程(11)已知的变量数少于未知的变量数。然而,这里有一些线索或者先验可以被考虑进来:

  • ①输出图像 D γ ′ D\gamma' Dγ相比于输入图像必须有更大的对比度;
  • ②A值的变化只依赖于场景深度,即相同成像距离具有相同的A值,无需考虑反射率。因此A的邻域趋向于有相同的值。再者,在很多情况下A在很小的区域是平滑变化的。只有在场景中depth断层的地方例外,但这些像素总体较少。
  • ③除了以上两个主要的先验外,我们同样可以考虑:被恶劣天气干扰的图像通常情况下都是采集户外自然场景。因此准确的 D γ ′ D\gamma' Dγ必须符合清晰自然图像的特点。

3.1 最大化对比度

针对第一条线索,我们定量地定义与边缘数量相关的图像对比度,它可以表示为:
C e d g e s ( I ) = ∑ x , c ∣ ∇ I c ( x ) ∣ … … ( 14 ) {C_{edges}}(I) = \sum\limits_{x,c} {\left| {\nabla {I_c}(x)} \right|}……(14) Cedges(I)=x,cIc(x)(14)其中 ∇ \nabla 是沿着x轴与y轴的差分操作。这个方程表明了对比度更大的图像具有更多的边缘。换而言之,清晰图像相比于雾图具有更多的边缘,也即 C e d g e s ( D γ ′ ) > C e d g e s ( I ′ ) {C_{edges}}(D\gamma')>{C_{edges}}(I') Cedges(Dγ)>Cedges(I)

从第一小节我们已经知道 D γ ′ D\gamma' Dγ可以根据方程(7)从A中获得: 0 ⩽ A ( x ) ⩽ ∑ c L ∞ c ( x ) 0 \leqslant A(x) \leqslant \sum\limits_c {{L_{\infty c}}(x)} 0A(x)cLc(x)

因此,我们准备一小图像块(假设块中depth和 β \beta β是常数),那么存在一个标量A,它可以给出正确的 D γ ′ D\gamma' Dγ,其中 D γ ′ D\gamma' Dγ必须满足: C e d g e s ( D γ ′ ) > C e d g e s ( p ) {C_{edges}}(D\gamma')>{C_{edges}}(p) Cedges(Dγ)>Cedges(p) 0 ⩽ D γ ′ ⩽ L ∞ c 0 \leqslant D\gamma' \leqslant {{L_{\infty c}}} 0DγLc

进一步表示 D γ ′ D\gamma' Dγ为:
C e d g e s ( D γ ′ ) = ∑ c L ∞ c ∑ c L ∞ c − A ∑ x , c ∣ ( I ′ x , c − I ′ x − 1 , c ) ∣ {C_{edges}}(D\gamma ') = \frac{{\sum\nolimits_c {{L_{\infty c}}} }}{{\sum\nolimits_c {{L_{\infty c}}} - A}}\sum\limits_{x,c} {\left| {\left( {{{I'}_{x,c}} - {{I'}_{x - 1,c}}} \right)} \right|} Cedges(Dγ)=cLcAcLcx,c(Ix,cIx1,c)

在一小块区域中,通过设置不同的A找到对比度最大时的情况;
在这里插入图片描述
通过设置不同的A,我们绘制出对比度的变化曲线:
在这里插入图片描述
本文中提到,当对比度取得最大值时,不一定是物体真实的辐照度情况,但它极大地增强了图像的对比度;

3.2 大气光的平滑约束

根据第二个线索,A在大部分像素上是平滑的。由此启发我们使用马尔科夫场来对A建模。我们建立了潜在的马尔科夫场函数:
E ( { A x } ∣ p x ) = ∑ ϕ ( p x ∣ A x ) + η ∑ x , y ∈ N x ψ ( A x , A y ) … … ( 17 ) E\left( {\left\{ {{A_x}} \right\}|{p_x}} \right) = \sum\limits_{} {\phi \left( {{p_x}|{A_x}} \right) + \eta \sum\limits_{x,y \in {N_x}} {\psi \left( {{A_x},{A_y}} \right)} } ……(17) E({Ax}px)=ϕ(pxAx)+ηx,yNxψ(Ax,Ay)(17)其中 p x p_x px是以x为中心的小块,并假设 A x ≡ A ( x ) {A_x} \equiv A(x) AxA(x) η \eta η是平滑项的强度, N x N_x Nx表示x的邻域。我们定义第一项为:
ϕ ( p x ∣ A x ) = C e d g e s ( [ D γ ′ ] x ∗ ) m … … ( 18 ) \phi \left( {{p_x}|{A_x}} \right) = \frac{{{C_{edges}}([D\gamma ']_x^*)}}{m}……(18) ϕ(pxAx)=mCedges([Dγ]x)(18)m用于归一化对比度,使得概率小于1大于0。m的值依赖于块的尺寸。第二项(平滑项)定义为:
ψ ( A x , A y ) = 1 − ∣ A x − A y ∣ ∑ c L ∞ c \psi \left( {{A_x},{A_y}} \right) = 1 - \frac{{\left| {{A_x} - {A_y}} \right|}}{{\sum\nolimits_c {{L_{\infty c}}} }} ψ(Ax,Ay)=1cLcAxAy这个方程激励A_x的邻域变得平滑。
为了找到所有{A_x}的值,我们必须最大化p{A_x}的概率分布。可以使用现存的推理技术,如图形切割或置信传播。

三. 计算方法

在这里插入图片描述
根据对本文算法的理解,自行实现相应的代码。

四、实验结果与分析

1. 薄雾的情况

在这里插入图片描述
从结果上看,本文的方法在求解模型的基础上给出了最大对比度的结果,相比于直方图均衡化,具有更真实的辐照情况。在计算过程中,其对比度变化曲线如下:
在这里插入图片描述

2. 较浓雾的情况

在这里插入图片描述
当雾比较浓时,从分辩场景的角度来看,直方图均衡化具有更明显的效果。对应的对比度变化曲线:
在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山颠海涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值