基于暗通道先验的单幅图像去雾算法实现

本文介绍了基于暗通道先验的单幅图像去雾算法,详细阐述了算法原理和实现步骤。通过计算暗通道、透射率和全球大气光成分,进而恢复无雾图像。实验结果显示,尽管存在边缘模糊问题,但通过调整参数和使用双边滤波,可以显著改善图像去雾效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近闲来无事尝试了一下去雾算法的效果,从随便搜集到的资料来看多数算法是用于白天带雾图像去雾的,少部分是研究夜间带雾图像去雾的。而白天的去雾算法有很多都衍生自何博士的《Single Image Haze Removal Using Dark Channel Prior》,可见何博士算法之经典。我也只是把别人整理过的算法看懂,并写代码验证效果,并无创新,权当记录。

         该算法用到了一个暗通道先验“Dark Channel Prior”,它的含义是:对于图片中绝大对数的非天空区域,总有在某些色彩通道具有很小的值,原作者测试了好多图片都证明该先验是正确的,暗通道的表达式如下:

https://i-blog.csdnimg.cn/blog_migrate/5d39147cdf33ca5f3029656d2e7a35ba.png

式中Jc表示彩色图像的每个通道的值,Ω(x)表示以像素x为中心的一个窗口。可以看出获取暗通道就是获取一个窗口内所有像素的各个通道的最小值。

 式(5)的意义用代码表达也很简单,首先求出每个像素RGB分量中的最小值,存入一副和原始图像大小相同的灰度图中,然后再对这幅灰度图按窗口进行最小值滤波,窗口大小与滤波半径的关系为WindowSize = 2*Radius + 1;

暗通道的先验理论指出暗通道的值是趋近于0的,即:

https://i-blog.csdnimg.cn/blog_migrate/f3d3875f9bf11b62f7118cbacf16f446.png

实际生活中造成暗原色中低通道值主要有三个因素:a)汽车、建筑物和城市中玻璃窗户的阴影,或者是树叶、树与岩石等自然景观的投影;b)色彩鲜艳的物体或表面,在RGB的三个通道中有些通道的值很低(比如绿色的草地/树/植物,红色或黄色的花朵/叶子,或者蓝色的水面);c)颜色较暗的物体或者表面,例如灰暗色的树干和石头。总之,我们白天看到的清晰的图像中总是有阴影或者彩色的物体,这些景物的暗通道值是很小的。

业界广为使用的雾图形成模型用表达式表示如下:

I(x)=J(x)t(x)+A(1-t(x))                 (1)

假设在一个窗口内的透射率是固定值,用\dot{t\tilde{}}表示,则对(7)在一个窗口求最小值

其中,I(x)就是已有的带雾图像,J(x)是期望的无雾图像,A是全球大气光成分, t(x)为透射率。现在的已知条件就是I(x),要求目标值J(x)。如果知道A和t(x)就能求出J(x),还好我们有暗通道先验。

由(1)得到

考虑到一个像素点由RGB三个通道组成,各个通道都需要恢复,用c表示RGB各通道,

假设在一个窗口内的透射率是固定值,用\tilde{t}(x)表示,则对(7)在一个窗口求最小值

上式中,J(y)是待求的无雾的图像,根据前述的暗原色先验理论有:

因此

由(8)和(10)得到

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值