ImageDahazed
I(x)=J(x)*t(x)+A(1-t(x))
1.求图像暗通道;dark(x)=min (k,k) (min (R,G,B) ( J(x) ))
2.利用暗通道估计大气光(A);
(1)选取暗通道图像暗通道最亮的0.1%的像素(一般来说,这些像素表示雾浓度最大的地方);
(2)取输入图像里面这些像素对应的像素里面最亮的作为大气光;
注:这里的大气光对每一个通道分别求一个大气光值效果更佳,有些程序只求第一个通道的大气光也可;
3.利用暗通道计算出折射率;t(x)=255 - w*( min( min(I(x)/A) ) )
注:三通道分别计算折射率;
4.代回雾图公式去雾;
J(x)= ( I(x)-A )/max(t(x),t0) + A; t0 = 0.1;
在vs2013下正确配置opencv2.4.11可运行。
tool文件夹使用方法:在release文件夹下打开dos窗口,输入ImageDehazed.exe+ space +图像所在路径,如ImageDehazed.exe ../Org_images,程序将遍历文件夹下的所有有雾图片并去雾操作
提示:debug下不能直接运行exe,需要vs2013环境配置.
参考资料:
《streaming maximum - minimum filter using no more than three comparisons per element》
《A fast algorithm for local minimum and maximum filters on rectangular and octagonal kernels》