1
基于MATLAB的数字图像处理研究
1.4.1.4 2.1.4 图像平滑

2.1.4 图像平滑

图像在传输过程中,由于传输信道、采样系统质量较差,或受各种干扰的影响,而造成图像毛糙,此时就需对图像进行平滑处理。平滑滤波对图像的低频分量进行增强,同时可以削弱图像的高频分量,因此一般用于消除图像中的随机噪声,从而起到图像平滑的作用。

一幅图像也可能存在着各种寄生效应,这些寄生效应可能在传输中产生,也可能在量化等处理过程中产生。一个较好的平滑方法应该是既能消掉这些寄生效应又不使图像的边缘轮廓和线条变模糊。这就是研究图像平滑化处理要追求的主要目标。主要有邻域均值滤波法(线性的)和中值滤波法(非线性的)。

(1)邻域均值滤波法。邻域均值滤波法是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。

一幅图像往往受到各种噪声源的干扰(如电传感器和传输误差等)。这种噪声常常为一些孤立的像素点,它们像雪花使图像被污染,噪声往往是叠加在图像上的随机噪声,而图像灰度应该相对连续变化的,一般不会突然变大或变小,这种噪声可以用邻域均值滤波法使它得到抑制。邻域均值滤波法是用几个像素灰度的平均值来代替每个像素的灰度,通过卷积运算和相关性操作来完成的。

MATLAB图像处理工具箱提供了实现图像均值滤波函数imfilter()。图2-28是月球北极的原图像,含有随机噪声,图2-29、图2-30、图2-31是分别用3×3、5×5、7×7模板均值滤波后的图像。程序代码如下:

f=imread('moon.jpg');

imshow(f);

g1=ones(3,3)/25;

h1=imfilter(f,g1);

figure,imshow(h1);

g2=ones(5,5)/25;

h2=imfilter(f,g2);

figure,imshow(h2);

g3=ones(7,7)/25;

h3=imfilter(f,g3);

figure,imshow(h3)。

img33

图2-28

img34

图2-29

img35

图2-30

img36

图2-31

(2)中值滤波法。邻域均值滤波法虽然可以平滑图像,但在消除噪声的同时,会使图像中的一些细节变得模糊。中值滤波则在消除噪声的同时还能保持图像中的细节部分,防止边缘模糊。

中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。

MATLAB图像处理工具箱提供了中值滤波函数medfilt2(),图2-32是月球北极的原图像,图2-33是添加噪声后的图像,噪声为黑色或白色的随机像素组成,图2-34、图2-35、图2-36是分别用3×3、5×5、7×7模板中值滤波后的图像。程序代码如下:

f=imread('moon.jpg');

imshow(f);

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

figure,imshow(g1);

g2=medfilt2(g1,[3,3]);

figure,imshow(g2);

g3=medfilt2(g1,[5,5]);

figure,imshow(g3);

g4=medfilt2(g1,[7,7]);

figure,imshow(g4)。

img37

图2-32

img38

图2-33

img39

图2-34

img40

图2-35

img41

图2-36