空间滤波概念
- 滤波:通过修改或者抑制给定图像的特定频率分量,常见有低通滤波器与高通滤波器。
- 空间滤波:将像素值使用该像素值及其邻域的值进行替换,替换方式有线性与非线性两种,即线性滤波器与非线性滤波器。
线性滤波器
一般方式为是使用一个矩阵(也成为核)与图像进行类似卷积运算,做乘积。
矩阵内部的数值决定了滤波器的功能。
(下图来自数字图像处理 第4版=DIGITAL IMAGE PROCESSING,FOURTH EDITION)
可分离滤波器核
将二维矩阵分解为两个一维向量的乘积。
G(X,Y)=G1(X)G2(Y)G(X,Y)=G_1(X)G_2(Y)G(X,Y)=G1(X)G2(Y)
如
w=[111111111]
w=\begin{equation}
\left[\begin{array}{ccc}
1 & 1 & 1 \\
1 & 1 & 1 \\
1 & 1 & 1
\end{array} \right]
\end{equation}
w=111111111
可表示为
w1=[111]w2=[111]
w_1=\begin{equation}
\left[\begin{array}{ccc}
1 \\
1 \\
1
\end{array} \right]
\end{equation}
\hspace{1.5cm}
w_2=\begin{equation}
\left[\begin{array}{ccc}
1 & 1 & 1\\
\end{array} \right]
\end{equation}
w1=111w2=[111]
两者乘积。
PS:判断一个核是否是可分离卷积核,即判断该卷积核是否是秩为1.若为1,即可分离,否则不可。
卷积可分离的好处:
假设图像大小为M∗NM*NM∗N,卷积核大小为m∗nm*nm∗n,直接做卷积的运算量包括MNmnMNmnMNmn次乘法和MNmnMNmnMNmn次加法。若使用可分离卷积,将www分为w1∗w2w_1*w_2w1∗w2,并且w1w_1w1为m∗1m*1m∗1,w2w_2w2为1∗n1*n1∗n,将图像矩阵与w1w_1w1和w2w_2w2分别做卷积得到运算量为MNm+MNnMNm+MNnMNm+MNn,即MN(m+n)MN(m+n)MN(m+n)。相比于之前的MNmnMNmnMNmn,大大减少了运算量。
可分离向量的确定:
根据矩阵的性质可知,秩为1的矩阵,每行之间只差常数倍,每列之间也只差常数倍,那么我们可以任意找一个行与列进行求解,当然需要保证该行与列都非零向量。
滤波器类型
线性滤波器
-
低通空间滤波器
\hspace{0.5cm}主要作用于变化缓慢的区域,如光滑地面等;桌子边缘等为高频区域。
1.1 盒式滤波器核
\hspace{0.5cm}该滤波器核的数值均为1,可使图片产生平滑效果。
1.2 低通高斯滤波器核
\hspace{0.5cm}高斯核w(s,t)=G(s,t)=Ke−s2+t22σ2w(s,t) = G(s,t)=Ke^{-\frac{s^2+t^2}{2\sigma^2}}w(s,t)=G(s,t)=Ke−2σ2s2+t2
\hspace{0.5cm}其中sss与ttt为到坐标(以核心为原点),(s2+t2)12(s^2+t^2)^{\frac{1}{2}}(s2+t2)21为到原心的距离。
特别地,高斯核也是可分离的。 -
高通滤波器
\hspace{0.5cm}通过边缘增强等方式作用于图像。
非线性滤波器
- 中值滤波
\hspace{0.3cm}将某像素及其邻域内的像素进行排序,中心像素的值由邻域内的像素排序的中间值确定,尤其对椒盐噪声有消除作用。 - 最大值滤波器和最小值滤波器
\hspace{0.3cm}最大值滤波器:将某像素及其邻域内的像素进行排序,中心像素的值由邻域内的像素排序最大值确定。
\hspace{0.3cm}最小值滤波器:将某像素及其邻域内的像素进行排序,中心像素的值由邻域内的像素排序最大值确定。 - 中点滤波器
\hspace{0.3cm}将某像素及其邻域内的像素进行排序,中心像素值由最大值与最小值的平均值确定,适用于处理随机分布的噪声,如高斯噪声或者均匀噪声。 - 修正AlphaAlphaAlpha均值滤波器
\hspace{0.3cm}对中值滤波器的改进,将某像素及其邻域内的像素删除部分最低灰度值与最高灰度值,剩下的像素值进行计算算术平均值,作为中心像素值,适用于处理混合噪声,如椒盐噪声与高斯噪声的混合。
自适应滤波器
自适应重在考虑图像的不同特征点变化。
- 自适应局部降噪滤波器
\hspace{0.3cm}该滤波器需要考虑的参数涉及带有噪声的图像像素值与噪声方差;滤波器中局部像素均值与局部方差。
带有噪声的图像像素值为f(x,y)f(x,y)f(x,y)、噪声方差为σf\sigma_fσf、局部均值为fxy^\hat{f_{xy}}fxy^、局部方差为σxy\sigma_{xy}σxy
四个参数的计算方式可由直方图得出频率与相关值乘积得到。
自适应的表达式为fˉ(x,y)=f(x,y)−σf2σxy2[f(x,y)−fxy^]\bar{f}(x,y)=f(x,y)-\frac{\sigma_f^2}{\sigma_{xy}^2}[f(x,y)-\hat{f_{xy}}]fˉ(x,y)=f(x,y)−σxy2σf2[f(x,y)−fxy^]
该式子的特点在于
\hspace{0.6cm}若噪声的方差为0,则滤波的结果为f(x,y)f(x,y)f(x,y);
\hspace{0.6cm}若噪声的方差与局部方差相等,则滤波的结果为图像局部像素值的均值; - 自适应中值滤波器
\hspace{0.3cm}对中值滤波的优化
在保留图像细节的同时平滑非冲激噪声(非变化剧烈)
与自适应局部降噪滤波器类似,在局部区域进行计算。
在局部区域中,zminz_{min}zmin表示最小灰度值,zmaxz_{max}zmax表示最大灰度值,zmedz_{med}zmed表示灰度值中值,zxyz_{xy}zxy为坐标(x,y)(x,y)(x,y)处的灰度值,SmaxS_{max}Smax表示局部区域的大小。
算法步骤:- 若zminz_{min}zmin <zmedz_{med}zmed<zmaxz_{max}zmax,则转到第二步;否则,增加局部区域大小,若局部区域大小小于SmaxS_{max}Smax,重复步骤1,否则输出zmedz_{med}zmed
- 若zminz_{min}zmin <zxyz_{xy}zxy<zmaxz_{max}zmax,则输出zxyz_{xy}zxy,否则输出zmedz_{med}zmed
算法的主要思想在于通过两层判断,旨在消除冲激噪声,如在第一步转到第二步,可以保证zmedz_{med}zmed为非冲激噪声;第二步中无论输出zmedz_{med}zmed还是zxyz_{xy}zxy都达到了消除冲激噪声的目的。但如果最终在第一步中进行了输出,那么不能保证zmedz_{med}zmed是否为冲激噪声。
PS:所以该算法旨在尽力消除,不保证全部消除。