OpenCV图像处理专栏十七 | 清华大学《基于单幅图像的快速去雾》C++复现(有一定工程意义)

代码开源在 https://github.com/BBuf/Image-processing-algorithm,感兴趣给我来个星星呗。

1. 前言

这是OpenCV图像处理算法朴素实现专栏的第17篇文章。今天为大家带来一篇之前看到的用于单幅图像去雾的算法,作者来自清华大学,论文原文见附录。

2. 雾天退化模型

之前在介绍何凯明博士的暗通道去雾论文OpenCV图像处理专栏六 | 来自何凯明博士的暗通道去雾算法(CVPR 2009最佳论文)的时候已经讲到了这个雾天退化模型,我们这里再来回顾一下。在计算机视觉领域,通常使用雾天图像退化模型来描述雾霾等恶劣天气条件对图像造成的影响,该模型是McCartney首先提出。该模型包括衰减模型和环境光模型两部分。模型表达式为:

I ( x ) = J ( x ) e − r d ( x ) + A ( 1 − e − r d ( x ) ) . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 1 ) I(x)=J(x)e^{-rd(x)}+A(1-e^{-rd(x)})...........................(1) I(x)=J(x)erd(x)+A(1erd(x))...........................(1)

其中, x x x是图像像素的空间坐标, H H H是观察到的有雾图像, F F F是待恢复的无雾图像, r r r表示大气散射系数, d d d代表景物深度, A A A是全局大气光,通常情况下假设为全局常量,与空间坐标 x x x无关。

公式(1)中的 e − r ( d x ) e^{-r(dx)} er(dx)表示坐标空间 x x x处的透射率,我们使用 t ( x ) t(x) t(x)来表示透射率,于是得到公式(2):

I ( x ) = J ( x ) t ( x ) + A ( 1 − t ( x ) ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 2 ) I(x)=J(x)t(x)+A(1-t(x)).............................(2) I(x)=J(x)t(x)+A(1t(x)).............................(2)

由此可见,图像去雾过程就是根据 I ( x ) I(x) I(x)求解 J ( x ) J(x) J(x)的过程。要求解出 J ( x ) J(x) J(x),还需要根据 I ( x ) I(x) I(x)求解出透射率 t ( x ) t(x) t(x)和全局大气光 A A A实际上,所有基于雾天退化模型的去雾算法就是是根据已知的有雾图像 I ( x ) I(x) I(x)求解出透射率 t ( x ) t(x) t(x)和全局大气光 A A A

对于暗通道去雾算法来说,先从暗原色通道中选取最亮的0.1%比例的像素点,然后选取原输入图像中这些像素具有的最大灰度值作为全局大气光值 A A A。RGB三通道中每一个通道都有一个大气光值。

然后根据公式(2)可以得出:

t ( x ) = A − I ( x ) A − J ( x ) . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 3 ) t(x)=\frac{A-I(x)}{A-J(x)}...........................(3) t(x)=AJ(x)AI(x)...........................(3)

首先可以确定的是 t ( x ) t(x) t(x)的范围是 [ 0 , 1 ] [0, 1] [0,1] I ( x ) I(x) I(x)的范围是 [ 0 , 255 ] [0,255] [0,255] J ( x ) J(x) J(x)的范围是 [ 0 , 255 ] [0, 255] [0,255] A A A I ( x ) I(x) I(x)是已知的,可以根据 J ( x ) J(x) J(x)的范围从而确定 t ( x ) t(x) t(x)的范围。已知的条件有:

0 < = J ( x ) < = 255 , 0 < = I ( x ) < = A , 0 < = J ( x ) < = A , 0 < = t ( x ) < = 1............... ( 4 ) 0<=J(x)<=255, 0<=I(x)<=A,0<=J(x)<=A,0<=t(x)<=1...............(4) 0<=

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值