Single Image Haze Removal Using Dark Channel Prior

Single Image Haze Removal Using Dark Channel Prior

时间:2009

Intro

本文使用了一个简单高效的去雾算法,他的原理基于一个对无雾图片的统计结果,在大多数非天空局部区域中总有一个像素点的至少一个通道的值很低,由此我们可以进行去雾操作

背景

常用的雾的形成公式为
在这里插入图片描述
其中I是观测到的图像,J是原图,t是透射率,A是大气光成分,去雾就是要从I恢复J,A,t

Dark channel prior

在大多数非天空局部区域中,总有一个像素点的至少一个通道的值很低,这称为暗通道先验(dark channel prior),对于一张图片 J J J,定义
在这里插入图片描述
其中 c c c表示某个通道, Ω ( x ) \Omega(x) Ω(x)是以 x x x为中心的local patch,作者观察到,除了天空区域中, J d a r k J^{dark} Jdark很低,且接近0,称 J d a r k J^{dark} Jdark是图片 J J J的暗通道

暗通道的出现主要有以下原因:

  • 阴影
  • 有些物体在缺少在某个颜色通道的激活值
  • 暗的物体

在flickr.com的图片上做统计,根据如图的统计信息,75%的图片dark channel值为0,90%图片的dark channel小于25

在这里插入图片描述

因为多余的airlight,一副有雾的图片比它的无雾版本要更亮,所以它的暗通道值在雾越浓的地方越大,视觉上来看,dark channel的值就大约等于雾的浓度,如图所示
在这里插入图片描述

Haze Removal Using Dark Channel Prior

Estimating the Transmission

假定大气光A已知,假设transmission t t t Ω \Omega Ω中的一个patch是固定的,记一个patch的transmission为 t ~ ( x ) \tilde{t}(x) t~(x),则有
在这里插入图片描述
min操作是在三个通道上分别进行的,这个方程等价于
在这里插入图片描述
然后在三个通道上取最小值,有
在这里插入图片描述
根据暗通道先验,
在这里插入图片描述
且A是正值,则有
在这里插入图片描述
所以有
在这里插入图片描述
直接可以得到transmission的估计值。

如前所述,暗通道先验只是在非天空区域的,但由于带雾图片的天空区域通常和大气光A很接近:
在这里插入图片描述
因为天空在无限远且透射率为0,前一个方程就同时适用于两种情况

即便在看似无雾的场景中,雾也是少量存在的,它构成了人们视觉上的真实感并给人一种远近的感觉,将雾全部去除会导致我们失去这种感觉,所以我们保留一定程度的雾,通过引入常量 w w w

在这里插入图片描述
本文中 w = 0.95 w=0.95 w=0.95,如图所示,(b)是从(a)估计到的transmission map,使用patch size=15*15,估计结果还不错,但是出现了一些block effects,因为patch的t不总是固定的

在这里插入图片描述

Soft Matting

注意到雾的形成公式和抠图的公式很相似,因此我们使用soft matting 算法来精炼transmission,记精炼后的transmission map为 t ( x ) t(x) t(x),我们最小化以下函数
在这里插入图片描述
其中 L L L是Matting Laplacian matrix, λ \lambda λ是正则项,第一项是平滑项,第二项是数据项

L L L的第(i,j)个元素为

在这里插入图片描述
其中 I i , I j I_i,I_j Ii,Ij是输入图片在位置 i , j i,j i,j的颜色, δ i j \delta_{ij} δij是Kronecker delta, μ k \mu_k μk Σ k \Sigma_k Σk是窗口 w k w_k wk的平均值和方差矩阵, U ε U\varepsilon Uε是一个3×3的单位矩阵, ε \varepsilon ε是一个正则化项, ∣ w k ∣ |w_k| wk是窗口 w k w_k wk中的像素个数,最优的 t t t可以通过求解线性系统得到
在这里插入图片描述
其中 U U U是单位矩阵,这里我们设置 λ = 1 0 − 4 \lambda=10^{-4} λ=104,soft matting的结果如图所示,相比之前的结果它解决了边界不连续的问题
在这里插入图片描述

Recovering the Scene Radiance

有了t之后即可重建scene radiance,direct attenuation项J(x)t(x)在t(x)接近0的时候会很小,导致恢复的图像噪声很多,因此我们设定了一个 t ( x ) t(x) t(x)的下界 t 0 t_0 t0,这意味着少量的雾在雾非常深的情况下被保留了,最终的重建公式为
在这里插入图片描述
t 0 t_0 t0取0.1,因为scene radiance通常没有大气光亮,因此恢复的图片会很暗,因此我们提高了J(x)的亮度,结果如图所示
在这里插入图片描述

Estimating the Atmospheric Light

首先选择前0.1%的亮度的dark channel,这些像素代表了雾最大的区域,在这些像素中,对应原图位置最大intensity的位置就选择为大气光A,注意到这个位置不一定是原图中最大intensity的位置,相比取原图最大的位置,它的鲁棒性更强

实验

实验中对600*400的图像选择patch size=15*15,在soft matting中使用预条件共轭梯度算法,结果如图所示
在这里插入图片描述
其中深度图是用下式估计的
在这里插入图片描述

结论

本文提出了一个简单有效的去雾算法,核心思想是使用暗通道先验得到transmission,加上soft matting对结果加以精炼,算法在大多数图片上的效果都非常好,但不适用于物体和大气光相似且没有阴影的图片

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值