图像处理之图像去雾

雾图模型

I ( x ) = J ( x ) t ( x ) + A ( 1 − t ( x ) ) I(x)=J(x)t(x)+A(1-t(x)) I(x)=J(x)t(x)+A(1t(x))

I(x) ——待去雾的图像
J(x)——无雾图像
A——全球大气光成分
t——折射率(大气传递系数)

暗通道先验

在无雾图像中,每一个局部区域都很有可能会有阴影,或者是纯颜色的东西,又或者是黑色的东西。因此,每一个局部区域都很有可能有至少一个颜色通道会有很低的值。把这个统计规律叫做Dark Channel Prior。

首先求出每个像素RGB分量中的最小值,存入一副和原始图像大小相同的灰度图中,然后再对这幅灰度图进行最小值滤波(林宇中取最小值)

计算折射率
t ( x ) = 1 − w m i n ( m i n I ( y ) / A ) t(x)=1-wmin(minI(y)/A) t(x)=1wmin(minI(y)/A)

估计大气光

1.选取暗通道图像暗通道最亮的0.1%的像素(一般来说,这些像素表示雾浓度最大的地方)
2.取输入图像里面这些像素对应的像素里面最亮的作为大气光
(暗图像最亮的0.1%的像素对应的原图最亮的为大气光)

注:选中的像素未必是全图最亮的,而且要比选取全图最亮的方式鲁棒性更好。

去雾

J ( x ) = I ( x ) − A / m a x ( t ( x ) , t 0 ) + A J(x)=I(x)-A/max(t(x),t0) +A J(x)=I(x)A/max(t(x),t0)+A
t0=0.1

流程:
1.求图像暗通道

2.利用暗通道计算出折射率

3.利用暗通道估计大气光

4.代回雾图公式去雾

你可能感兴趣的:(matlab,图像处理,我的图像处理笔记记录)