1
基于MATLAB的数字图像处理研究
1.4.1.3 2.1.3 空间滤波

2.1.3 空间滤波

空间滤波是基于阿贝成像原理的一种光学信息处理方法,它用空间频谱的语言分析物光场的结构信息,通过有意识地改变物频谱的手段来产生所期望的像。利用像素本身以及其邻域像素的灰度关系进行增强的方法常称为滤波。在数字图像处理中,常常会遇到图像中混杂有许多的噪声。因此,在进行图像处理过程中,有时需要先进行祛除噪声的工作。最直接的祛除噪声的方法是用滤波器进行滤波处理,对图像中的像素执行滤波运算时,若对邻域中像素的计算为线性,则对应的祛除噪声技术是线性空间滤波技术;否则,称此技术为非线性空间滤波技术。

(1)线性空间滤波。MATLAB图像处理工具箱提供了生成淹模函数fspecial()和实现线性空间滤波函数imfilter()。图2-20是月球北极的原图像,较模糊,图2-21是经过拉普拉斯滤波后的uint8类图像,保留了原图像的灰度色调。由于原图像也是uint8类图像,滤波后的输出图像与输入图像是同类图像,负值被截掉,所有像素都是正的。图2-22是在滤波前,先将原图像转换为double类图像,再用拉普拉斯滤波后的double类图像。图2-23是从原图像中减去图2-22所得到的结果,以还原失去的灰度色调,要比原图像更清晰。程序代码如下:

f1=imread('moon.jpg');

imshow(f1);

w=fspecial('laplacian',0);

g1=imfilter(f1,w,'replicate');

figure,imshow(g1,[]);

f2=im2double(f1);

g2=imfilter(f2,w,'replicate');

figure,imshow(g2,[]);

g3=im2double(g2);

g=f2-g3;

figure,imshow(g)。

img25

图2-20

img26

图2-21

img27

图2-22

img28

图2-23

(2)非线性空间滤波。MATLAB图像处理工具箱提供了噪声污染图像函数imnoise()和实现非线性空间二维中值滤波函数medfilt2()。图2-24是自动检测电路板时生成的数字X射线原图像,图2-25是被椒盐噪声污染后的图像,其中黑点和白点出现的概率为0.2,图2-26是用二维中值滤波处理后的图像,降低了噪声,由于使用滤波函数medfilt2()的默认设置,在电路板的边界处出现了黑色的斑点,是由围绕图像的黑点导致的,图2-27是配置滤波函数medfilt2()的参数后,减弱了边界出现的黑色斑点。程序代码如下:

f=imread('board.jpg');

imshow(f);

g1=imnoise(f,'salt&pepper',0.2);

figure,imshow(g1);

g2=medfilt2(g1);

figure,imshow(g2);

g3=medfilt2(g1,'symmetric');

figure,imshow(g3)。

img29

图2-24

img30

图2-25

img31

图2-26

img32

图2-27