暗通道最早是由He提出的,并且也发展得很快,具体的在这里不说,这篇文章,只是谈一下暗通道去雾的实现过程
1.该方法最原始的模型是I=Jt+A(1-t),这个模型在我的其他文章中有详细介绍,这里不详细讲解。
可以看出带有雾的图像的I是由没有散射的原图像J和大气光(air light)共同组成的。这里刚好看到t,1-t和为1,实则不然,只是凑巧这样,原作者有详细的推导,这个是推导而来并非为了凑和为1。
2.看了上面的模型进一步会想,要是我们把t变为1,不就I=J,完事了么……理论上是这样的,不过一般给你的图像都是拍好的,你要想t=1,那你得找没有雾的图,没有雾的图你去啥雾。在这里我们不是改变t的值,而是对t进行求解。
3.为了求t,He老大的暗通道出现了,他发现一个规律,在没有雾的图像中,图像的RGB通道,总会有一个通道的值偏低。该区域的最小值是一个很小的值。颜色鲜艳和阴影都会表现出暗通道极小的值。下图是选了三通道最小值后又做了个最小值滤波。该公式就可以表示暗通道的性质了。c为通道,Ω局部窗范围(最小滤波)。这里还有一点可以看出,天空那不是黑的。在He.2009年的论文中也说明了,在带有天空的图像中,暗通道方法并不是很适用,后期应该是他已经改进了,想要了解的可以去查一下。
4.J=0,你有没有看出点什么。我们未知参数就只有一个t了。
通过上面的公式我们的t就求出来了,t出来了我们真实的J就可以求解出来了。
5.这里说明几个问题
①求出的t咋用?这里说明一点,在图像中,不同点的t是不同的,因此每个区域都有一个t,把t的矩阵带入到最上面即可。
②大气光A怎么求?首先从暗通道图像中按照亮度的大小提取最亮的前0.1%像素。然后,在原始有雾图像II中寻找对应位置上的具有最高亮度的点的值,并以此作为AA的值。
③三个通道怎么处理呢?一个一个处理,t是一样的,只是不同的Ic和Ac……(c:R、G、B)
④网上提到了soft matting和导向图是用来干啥的?咱们用最小滤波出来的暗通道会是一块一块的,那么咱们的t估计也好不到哪去…………为了得到更好地t,我们就要优化我们的暗通道图。He最初用soft matting……网上的评论一致认为很慢,我没试,也就不说了。导向图是用来替代soft matting的,也是听他们说很快。