1. Method description
在计算机视觉和计算机图形中,下述方程所描述的雾图形成模型被广泛使用:
I(x)= J(x)t(x) + A(1 − t(x))
I是指观测到的图像的强度,J是景物光线的强度,A是全球大气光成分,t用来描述光线通过媒介透射到照相机过程中没有被散射的部分,去雾的目标就是从I中复原J,A,t。
Dark Channel是通过对户外无雾图像的观察得出的:在绝大多数非天空的局部区域里,某一些像素总会有至少一个颜色通道具有很低的值。换言之,该区域光强度的最小值是个很小的数。
1)估测透射率分布

(上边这个公式好像应改为:min(c)应与min(Omg)互换, 先求单个像素min(rgb)的值,然后再求min(Omg),即区域最小值)
2)软图像抠图

根据此公式得出Laplacian矩阵,继而使用PCG解出线性方程:

3)复原物体光线

4)估测大气光
首先选取暗原色中亮度最大的0.1%的像素,这些像素大都是不透明的。在以上像素当中,输入图像I中强度最大的像素点被选定为大气光。注意到它们并不一定是整幅图像里最亮的点。
2. Implementation details
实际中使用VC9.0+OpenCV2.1。
在计算Dark Channel时,使用了Marcel van Herk的《A fast algorithm for local minimum and maximum filters on rectangular and octagonal kernels》中的快速算法,具体如下:

使用两组数组来记录分组大小(实际中15为一组)后的每组最小值,然后每次比较区间内两数组最小值作为此区间的最小值。
在解大规模稀疏矩阵线性方程组中,使用Preconditioned Conjugate Gradient (PCG)算法,具体参照Jonathan Richard Shewchuk的《An Introduction to the Conjugate Gradient Method Without the Agonizing Pain》,具体伪代码如下:

3. Results






从左到右依次为: 去雾之后的图像,transmission map,原图像
在Intel E7200 2.53GHz + 2GB内存上,100 * 50的图像大概需要2秒左右,300 * 200的图像需要40秒左右,800 * 600的图像需要20min左右。
4. References
[1] Kaiming He, Jian Sun Xiaoou Tang. Single Image Haze Removal Using Dark Channel Prior. CVPR’09
[2] A. Levin, D. Lischinski, and Y. Weiss. A closed form solution to natural image matting. CVPR, 1:61–68, 2006.
[3] Jonathan Richard Shewchuk. An Introduction to the Conjugate Gradient Method Without the Agonizing Pain. 1994
Source Code Download Here! (VS2008+OpenCV)
5832

被折叠的 条评论
为什么被折叠?



