1、引言
本文是基于暗通道先验的图像去雾方法,做了微小的改进。
2、正文
已知暗通道先验图像去雾方法步骤如下:
1)已知,图像退化模型为:
其中I(x)为物理设备获得图像,J(x)为真实的图像,A为天空光(airlight),t(x)为透射率,图像去雾的主要工作是计算透视率t(x),估计天空光A。为什么说是估计天空光,因为天空光,就是天空的光线,从太阳那里直射过来的(^_^)。
2)根据暗通道先验理论经过一系列的换算得到:
根据上面的公式计算得到透射率的估计值,然后用抠图方法,得到最后的透射率。
由于抠图需要进行迭代计算,一般不好估计开销,也就是时间开销可能很大,因此不适合作为工业技术。为此很多人尝试对估计的透射率进行滤波,如双边滤波,引导滤波,联合引导滤波等,这些都是锐化边缘、平滑细节的滤波。
经过一些实验,我发现,其实按照下面的公式,得到的透射率已经具有很好的效果:
我的方法得到的结果,见下图:
Figure:暗通道窗口大小3x3,天空光为暗通道图像最大的像素值
如果在估计透射率的时候,对输入图像(或对透射率)进行锐化边缘、平滑细节的滤波,去雾后图像更清晰,我实现了一种简单的滤波,得到如下效果:
请稍微用点心仔细观察,(^_^)!
3、总结
至于为什么会得到这样的效果,我研究的不是很透彻,未来有空会去弄明白。有人分析,当暗通道窗口达到14以上,不用抠图方法,原方法去雾的效果就已经很好了,不过相应的时间开销会很大,我这里只用了3x3的暗通道计算窗口,当然速度很快了。
总之,如果质疑我的方法的话,请查阅我的代码,在:https://github.com/huneng/Image-dehazing,附有测试图片。欢迎批评指正。
Figure 2:左:原图,中:图像为滤波,右:图像滤波