图像去雾:基于暗通道的去雾算法 - 附代码

图像去雾:基于暗通道的去雾算法


摘要:本文主要介绍,经典的基于暗通道的去雾算法。

1.雾天图像退化模型

在图像处理和计算机视觉领域经常使用的雾天图像退化模型,图像退化模型主要由两部分构成:场景反射(发射)光衰减模型和大气光成像模型。用于描述以上过程的数学模型为:
I ( x ) = J ( x ) t ( x ) + A ( 1 − t ( x ) ) (1) I(x) = J(x)t(x)+A(1-t(x))\tag{1} I(x)=J(x)t(x)+A(1t(x))(1)
其中: I ( x ) I(x) I(x)为观测点接收到的光强, J ( x ) J(x) J(x)为场景点辐射出的光强,也就是待恢复的无雾图像, t ( x ) t(x) t(x)为光线传播图, t ( x ) = e − β d ( x ) t(x) = e^{-\beta d(x)} t(x)=eβd(x), d ( x ) d(x) d(x)为观测点距场景点的距离, β \beta β为大气光散射系数, β \beta β在可见光范围内视为常数, J ( x ) t ( x ) J(x)t(x) J(x)t(x)项即为场景反射(发射)光衰 减 模 型; A A A为 大 气 光 值, A ( 1 − t ( x ) ) A(1-t(x)) A(1t(x))项即为大气光成像模型。

2.基于暗通道先验的图像去雾原理

暗通道的定义:在一幅拥有RGB三个通道的彩色图像 J ( x ) J(x) J(x)中,对RGB三个通道和以 n ∗ n n*n nn大小的滤波器模板 Ω ( x ) \Omega (x) Ω(x)(一般n为15 )进行两次最小值滤波,即:
J d a r k ( x ) = m i n y ∈ Ω ( x ) ( m i n c ∈ r , g , b J c ( y ) ) (2) J^{dark}(x)=min_{y\in \Omega(x)}(min_{c\in {r,g,b}}J^c(y)) \tag{2} Jdark(x)=minyΩ(x)(mincr,g,bJc(y))(2)
经过对大量的室外无雾图像进行统计得出,室外无雾图像的暗通道具有性质,暗通值接近0.

以下为基于暗通道先验的去雾算法:

(1). 对 I ( x ) = J ( x ) t ( x ) + A ( 1 − t ( x ) ) I(x)=J(x)t(x)+A(1-t(x)) I(x)=J(x)t(x)+A(1t(x))等式两边的RGB三个通道同时除以大气光值 A ,得:
I c ( x ) A c = t ( x ) J c ( x ) A c + 1 − t ( x ) (3) \frac{I^c(x)}{A^c}=t(x)\frac{J^c(x)}{A^c}+1-t(x)\tag{3} AcIc(x)=t(x)AcJc(x)+1t(x)(3)

(2) 大气光值A的求取:在 I ( x ) I(x) I(x)的暗通道图中选取最亮的0.1%的像素点,这些点是雾最浓的地方,再将这些点对应到原图像 I ( x ) I(x) I(x)的相同位置像素点,在原图像 I ( x ) I(x) I(x)的这些点中分别选取3个通道中最大的值作为大气光值;

(3) )光线传播图 t ( x ) t(x) t(x)的求取:同时计算等式两边的暗通道:
m i n y ∈ Ω ( x ) ( m i n c ( I c ( y ) A c ) ) = t ′ ( x ) m i n y ∈ Ω ( x ) ( m i n c ( I c ( y ) A c ) ) + 1 − t ′ ( x ) (5) min_{y\in \Omega(x)}(min_c(\frac{I^c(y)}{A^c})) = t'(x)min_{y\in \Omega(x)}(min_c(\frac{I^c(y)}{A^c})) + 1 - t'(x)\tag{5} minyΩ(x)(minc(AcIc(y)))=t(x)minyΩ(x)(minc(AcIc(y)))+1t(x)(5)
根据暗通道先验理论 m i n y ∈ Ω ( x ) ( m i n c ( I c ( y ) A c ) ) min_{y\in \Omega(x)}(min_c(\frac{I^c(y)}{A^c})) minyΩ(x)(minc(AcIc(y)))接近于0.可以得出:
t ′ ( x ) = 1 − m i n y ∈ Ω ( x ) ( m i n c ( I c ( y ) A c ) ) (6) t'(x) = 1 - min_{y\in \Omega(x)}(min_c(\frac{I^c(y)}{A^c})) \tag{6} t(x)=1minyΩ(x)(minc(AcIc(y)))(6)
为了使图像看起来真实在求取光线传播图t‘(x)时要乘以一个系数 w w w,即
t ′ ( x ) = 1 − w ∗ m i n y ∈ Ω ( x ) ( m i n c ( I c ( y ) A c ) ) (6) t'(x) = 1 - w*min_{y\in \Omega(x)}(min_c(\frac{I^c(y)}{A^c})) \tag{6} t(x)=1wminyΩ(x)(minc(AcIc(y)))(6)
其中 w w w是控制去雾的参数,一般为0.95。 w w w越小,去雾能力越低。

(4) 为了去除光晕现象需要对光线传播图 t ( x ) t(x) t(x)进行软抠图(soft matting),一般情况下使用引导滤波。

(5) 还 原 出 无 雾 图 像:利 用 公 式:
J ( x ) = I ( x ) − A m a x ( t ( x ) , t 0 ) (7) J(x) = \frac{I(x)-A}{max(t(x),t_0)}\tag{7} J(x)=max(t(x),t0)I(x)A(7)
分别在3个通道还原出无雾图像。当投射图 t t t很小时,会导致 J J J的值偏大,会导致图片某些地方过爆,所以一般可以设置一个阈值 t 0 t_0 t0来限制,我们设置一个阈值:一般设置较小,0.1即可。

3.算法结果

在这里插入图片描述

4.参考文献

[1]He Kaiming,Sun Jian,Tang Xiaoou. Single Image Haze Removal Using Dark Channel Prior.[J]. IEEE transactions on pattern analysis and machine intelligence,2011,33(12).

5.Matlab代码

基于暗通道的去雾算法
文献复现:
[1]王凯,王延杰,樊博.基于暗通道先验的图像去雾算法改进[J].液晶与显示,2016,31(08):840-845.

个人资料介绍

  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值