双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。之所以可以达到此去噪效果,是因为滤波器是由两个函数构成。
一个函数是由几何空间距离决定滤波器系数。另一个由像素差值决定滤波器系数。使用二维高斯函数生成距离模板,使用一维高斯函数生成像素差值模板。
对比两个filter:高斯低通滤波器和α-截尾均值滤波器(去掉百分率为α的最小值和最大之后剩下像素的均值作为滤波器), 双边滤波器同时考虑了空间域与值域的差别,而Gaussian Filter和α均值滤波分别只考虑了空间域和值域差别。
双边滤波器中,输出像素的值
g
(
i
,
j
)
g(i,j)
g(i,j)依赖于邻域像素的值的加权组合:
g
(
i
,
j
)
=
∑
k
,
l
f
(
k
,
l
)
w
(
i
,
j
,
k
,
l
)
∑
k
,
l
w
(
i
,
j
,
k
,
l
)
g(i,j)=\frac{\sum_{k,l}f(k,l)w(i,j,k,l)}{\sum_{k,l}w(i,j,k,l)}
g(i,j)=∑k,lw(i,j,k,l)∑k,lf(k,l)w(i,j,k,l)
距离模板
d
(
i
,
j
,
k
,
l
)
d(i,j,k,l)
d(i,j,k,l):
d
(
i
,
j
,
k
,
l
)
=
e
x
p
(
−
(
i
−
k
)
2
+
(
j
−
l
)
2
2
σ
d
2
)
d(i,j,k,l)=exp(-\frac{(i-k)^2+(j-l)^2}{2\sigma_d^2})
d(i,j,k,l)=exp(−2σd2(i−k)2+(j−l)2)
像素差值模板
r
(
i
,
j
,
k
,
l
)
r(i,j,k,l)
r(i,j,k,l):
r
(
i
,
j
,
k
,
l
)
=
e
x
p
(
−
∣
∣
f
(
i
,
j
)
−
f
(
k
,
l
)
∣
∣
2
2
σ
r
2
)
r(i,j,k,l)=exp(-\frac{||f(i,j)-f(k,l)||^2}{2\sigma_r^2})
r(i,j,k,l)=exp(−2σr2∣∣f(i,j)−f(k,l)∣∣2)
其中,函数
f
(
i
,
j
)
f(i,j)
f(i,j)表示要处理的图像,
f
(
i
,
j
)
f(i,j)
f(i,j)表示图像在点
(
i
,
j
)
(i,j)
(i,j)处的像素值;
(
k
,
l
)
(k,l)
(k,l)为模板窗口的其他系数的坐标;
(
i
,
j
)
(i,j)
(i,j)为模板窗口的中心坐标;
σ
d
\sigma_d
σd和
σ
r
\sigma_r
σr为高斯函数的标准差。
将上述两个模板相乘就得到了双边滤波器的模板:
w
(
i
,
j
,
k
,
l
)
=
d
(
i
,
j
,
k
,
l
)
×
r
(
i
,
j
,
k
,
l
)
=
e
x
p
(
−
(
i
−
k
)
2
+
(
j
−
l
)
2
2
σ
d
2
−
∣
∣
f
(
i
,
j
)
−
f
(
k
,
l
)
∣
∣
2
2
σ
r
2
)
w(i,j,k,l)= d(i,j,k,l)\times r(i,j,k,l)= exp(-\frac{(i-k)^2+(j-l)^2}{2\sigma_d^2}-\frac{||f(i,j)-f(k,l)||^2}{2\sigma_r^2})
w(i,j,k,l)=d(i,j,k,l)×r(i,j,k,l)=exp(−2σd2(i−k)2+(j−l)2−2σr2∣∣f(i,j)−f(k,l)∣∣2)