滤波原理
空间滤波器有一个邻域和对该邻域包围的图像像素执行的预定义操作组成。滤波产生一个新像素,新像素的坐标等于邻域中心的坐标,像素的值是滤波操作的结果。滤波器的中心访问输入图像的每个像素,就生成了滤波后的图像。如果在图像像素上执行的是线性操作,则该滤波器称为线性滤波器。否则,滤波器就称为非线性滤波器。
下图说明了使用3*3邻域的线性空间滤波的机理。在图像中的任意一点(x,y),滤波器的输出g(x,y)是滤波器系数与该滤波器包围的图像像素的乘积之和:
g ( x , y ) = w ( − 1 , − 1 ) f ( x − 1 , y − 1 ) + . . . w ( 0 , 0 ) f ( x , y ) + . . . + w ( 1 , 1 ) f ( x + 1 , y + 1 ) g(x,y)=w(-1,-1)f(x-1,y-1)+...w(0,0)f(x,y)+...+w(1,1)f(x+1,y+1) g(x,y)=w(−1,−1)f(x−1,y−1)+...w(0,0)f(x,y)+...+w(1,1)f(x+1,y+1)
很明显,滤波器的中心系数w(0,0)对准位置(x,y)的像素。对于一个大小为m×n的模板,我们假设m=2a+1且n=2b+1,其中,a,b为正整数。这意味着在后续的讨论中,我们关注的是奇数尺寸的滤波器,其最小尺寸为3×3。一般来说,使用大小为m×n的滤波器对大小为M×N的图像进行线性空间滤波,可由下式表示:
g ( x , y ) = ∑ s = − a a ∑ t = − b b w ( s , t ) f ( x + s , y + t ) g(x,y)=\sum_{s=-a}^a\sum_{t=-b}^bw(s,t)f(x+s,y+t) g(x,y)=s=−a∑at=−b∑bw(s,t)f(x+s,y+t)
其中,x和y是可变的,以便w中的每个像素可访问f中的每个像素。
相关与卷积
在执行线性空间滤波时,相关和卷积是两个比较接近的概念。相关是滤波器模板移过图像并计算每个位置乘积之和的处理。卷积和相关类似,但滤波器首先要旋转180°。一个大小为m×n的滤波器w(x,y)与一幅图像f(x,y)做相关操作,可表示为:
w ∘ f = ∑ s = − a a ∑ t = − b b w ( s , t ) f ( x + s , y + t ) a = m − 1 2 , b =