2.4空间滤波
邻域处理有以下几个步骤:(1)选取中心点(x,y);(2)仅对预先定义的关于点(x,y)的邻域内的像素执行操作;(3)令运算结果为该点处的响应;(4)对图像中的每一点重复该处理。
中心点移动的过程会产生新的邻域,每个邻域对应输入图像上的一个像素。用来标识该处理的两个主要术语是邻域处理和空间滤波,其中后者更为通用。若对邻域中像素执行的计算为线性的,则称该操作为线性空间滤波(也用术语空间卷积);否则称为非线性空间滤波。
2.4.1 线性空间滤波
本章,直接对图像中的像素执行滤波运算,我们使用术语线性空间滤波来区分这种类型的处理与频域滤波。
本章感兴趣的线性操作包括邻域中的每个像素乘以相应的系数,将结果求和,从而得到点(x,y)处的响应。若领域的大小为m*n,则需要mn个系数。这些系数被排列为一个矩阵,称为滤波器、模板、滤波模板、核、掩模或窗口,也用卷积滤波、卷积模板或卷积核等术语。
imfilter的最常见语法是:
g=imfilter(f,w,’replicate’)
当在工具箱中实现标准的线性空间滤波时,使用这一语法。
使用一个旋转后的滤波器执行相关操作与使用该原始滤波器执行卷积操作是相同的。如果该滤波器关于其中心对称,则两种操作产生相同的结果。
例2.8 函数imfilter的应用。
f=imread(‘Fig0216(a).tif’);
imshow(f)
w=ones(31);
gd=imfilter(f,w);
imshow(gd,[ ])
gr=imfilter(f,w,’replicate’);
figure,imshow(gr,[ ])
gs=imfilter(f,w,’symmetric’);
figure,imshow(gs,[ ])
gc=imfilter(f,w,’circular’);
figure,imshow(gc,[ ])
f8=im2uint8(f);
g8r=imfilter(f8,w,’replicate’);
figure,imshow(g8r,[ ])