图像去雾算法最近应该都是从何凯明博士的CVPR论文衍生出来,论文中基于一种假设:
没有雾的图像的dark_channel值都接近于0,而有雾的图像则不等于0.
将有雾图像的dark_channel值逆向归零,便可恢复出没有雾的图像,达到去雾的效果。
这里简单记录一下算法的过程:
src为有雾的图像。
dst为取出雾的图像。
Darkval是图像局部区域的最小值,w是一个调整系数。
A在论文中的意思是大气中的光成分,
在code中
minAtomsLight=240
dc() = min(img(:,:,:));
dc2 = minfilt2(dc, [krnlsz,krnlsz]);
A = min([minAtomsLight, max(max(dc2))])
dark_channel局部区域的最大值,听起来很拗口。
算法的核心就是这样了。
至于soft matting和guided filter是为了更进一步的提高视觉效果而对算法的完善。
算法中的大量的除法运算给实时性要求比较强的产品带来了不少麻烦,各路豪杰纷纷衍生出的适合自己产品的改进算法。