该算法使用McCarney大气散射模型
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(1−t(x)),其中
I
(
x
)
I(x)
I(x)代表待去雾图片、
J
(
x
)
J(x)
J(x)代表去雾图片、
t
(
x
)
t(x)
t(x)代表大气折射率、
A
A
A代表大气光值,则可推断出去雾图片
J
(
x
)
=
(
I
(
x
)
−
A
)
/
t
(
x
)
+
A
J(x)=(I(x)-A)/t(x)+A
J(x)=(I(x)−A)/t(x)+A。要想推断出去雾图片,需要计算出大气折射率
t
(
x
)
t(x)
t(x)和大气光值
A
A
A,而他们均需要待去雾图片的暗通道。
该计算方法为
t
(
x
)
=
1
−
ω
×
(
d
a
r
k
M
a
t
A
)
t(x)=1 - \omega \space\times(\frac{darkMat}{A})
t(x)=1−ω×(AdarkMat),其中
ω
\omega
ω为控制去雾程度,因为图片中包含雾可以使图片拥有纵深,更真实。此时得到的大气折射示意图如下所示