当前位置:文档之家› 数字图像处理实验报告--平滑滤波

数字图像处理实验报告--平滑滤波

数字图像处理实验报告
实验名称:线性平滑滤波器——领域平均与加权平均
姓名:
班级:
学号:
专业:电子信息工程(2+2)
指导教师:***
实验日期:2012年5月17日
一,图像的平滑
图像的平滑方法是一种实用的图像处理技术,能减弱或消除图像中的高频率分量,但不影响低频率分量。

因为高频率分量主要对应图像中的区域边缘等灰度值具有较大较快变化的部分,平滑滤波将这些分量滤去可减少局部灰度起伏,使图像变得比较平滑。

实际应用中,平滑滤波还可用于消除噪声,或者在提取较大目标前去除过小的细节或将目标内的小间断连接起来。

它的主要目的是消除图像采集过程中的图像噪声,在空间域中主要利用邻域平均法、中值滤波法和选择式掩模平滑法等来减少噪声;在频率域内,由于噪声主要存在于频谱的高频段,因此可以利用各种形式的低通滤波器来减少噪声。

二,领域平均
1.基础理论
最简单的平滑滤波是将原图中一个像素的灰度值和它周围邻近8个像素的灰度值相加,然后将求得的平均值(除以9)作为新图中该像素的灰度值。

它采用模板计算的思想,模板操作实现了一种邻域运算,即某个像素点的结果不仅与本像素灰度有关,而且与其邻域点的像素值有关。

模板运算在数学中的描述就是卷积运算,邻域平均法也可以用数学公式表达:
设为给定的含有噪声的图像,经过邻域平均处理后的图像为,则
,M是所取邻域中各邻近像素的坐标,是邻域中包含的邻
近像素的个数。

邻域平均法的模板为:,中间的黑点表示以该像素为中心元素,即该像素是要进行处理的像素。

在实际应用中,也可以根据不同的需要选择使用不同的模板尺寸,如3×3、5×5、7×7、9×9等。

邻域平均处理方法是以图像模糊为代价来减小噪声的,且模板尺寸越大,噪声减小的效果越显著。

如果是噪声点,其邻近像素灰度与之相差很大,采用邻域平均法就是用
邻近像素的平均值来代替它,这样能明显消弱噪声点,使邻域中灰度接近均匀,起到平滑灰度的作用。

因此,邻域平均法具有良好的噪声平滑效果,是最简单的一种平滑方法。

Matlab代码:
function average_filtering()
X=imread('cameraman.tif')
noise_x=imnoise(X,'salt & pepper');%加噪声方差为0.02的椒盐声
f=double(noise_x);%强制转换为双精度
X=im2double(X);%转换成双精度的数据图像
figure(1);
imshow(im2uint8(X));%显示灰度图像
title('原图');
figure(2);
imshow(im2uint8(noise_x));
title('加上了椒盐燥声');
[m,n]=size(X);
output_image=X;
w=[1 1 1;1 1 1;1 1 1];%3*3模板
w=1/9*w;
[p,q]=size(w);
[m,n]=size(f);
for x=1:m
for y=1:n
if(x==1|y==1|x==m|y==n)
%在矩阵边框上的灰度值不做领域平均
blur_f(x,y)=f(x,y);
else
%求领域平均
blur_f(x,y)=w(1,1)*f(x-1,y-1)+w(1,2)*f(x-1,y)+w(1,3)*f(x-1,y+1)+w(2,1)*f(x,y-1)+w(2,2)*f(x,y) +w(2,3)*f(x,y+1)+w(3,1)*f(x+1,y-1)+w(3,2)*f(x+1,y)+w(3,3)*f(x+1,y+1);
end
end
end
figure(4);
imshow(uint8(blur_f));
title('3*3领域平均后的图');
J=fspecial('average',5);
J1=filter2(J,noise_x)/255;
figure(5);
imshow(J1);
title('5*5领域平均');
K=fspecial('average',7);
K1=filter2(J,noise_x)/255;
figure(6);
imshow(K1);
title('7*7领域平均');
M=fspecial('average',9);
M1=filter2(J,noise_x)/255;
figure(7);
imshow(M1);
title('9*9领域平均');
实验结果:
原图
加上了椒盐燥声
3*3领域平均后的图
5*5领域平均
7*7领域平均
9*9领域平均
实验结果分析: 邻域平均时用的模板尺寸越大,对噪声的消除效果有所增强。

不过同时所得到的图像变得更为模糊,可视的细节逐步减少。

三、加权平均
1.基本理论
对于同一尺寸的模板,可对不同位置的系数采用不同的数值。

一般认为离对应模板中心像素近的像素应对滤波结果有较大贡献,所以接近模板中心的系数可较大,而模板边界附近的系数应较小。

在实际应用中,为保证各模板系数均为整数以减少计算量,常取模板周边最小的系数为1,而取内部的系数成比例增加,中心系数最大。

一种常用的加权平均方法是根据系数与模板中心的距离反比地确定
其他内部系数的值,常用的模板为、等;还有一种常用方
法是根据二维高斯分布来确定各系数值,常称为高斯模板,模板为:。

相对于邻域平均的卷积,加权平均也成为归一化卷积,表示两幅图像之间的卷积,
一是需要处理的图像,二是有加权值的图像,写成矩阵形式为:,
其中H是卷积模板,F是需要处理的图像,W是有加权值的图像,分母起归一化的作用。

用卷积模板H进行的归一化卷积将图像F和图像W变换为一幅新图像G。

在实际应用中,可以根据具体的局部图像结构来确定卷积模板,使加权值成为自由调节参数,应用比较灵活,但模板不能分解,计算效率不高。

代码:
function average_filtering()
X=imread('cameraman.tif')
noise_x=imnoise(X,'salt & pepper');%加噪声方差为0.02的椒盐声
f=double(noise_x);%强制转换为双精度
X=im2double(X);%转换成双精度的数据图像
figure(1);
imshow(im2uint8(X));%显示灰度图像
title('原图');
figure(2);
imshow(im2uint8(noise_x));
title('加上了椒盐燥声');
[m,n]=size(X);
output_image=X;
w=[1 2 1;2 4 2;1 2 1];%3*3模板
w=1/16*w;
[p,q]=size(w);
[m,n]=size(f);
for x=1:m
for y=1:n
if(x==1|y==1|x==m|y==n)
%在矩阵边框上的灰度值不做领域平均
blur_f(x,y)=f(x,y);
else
%求加权平均
blur_f(x,y)=w(1,1)*f(x-1,y-1)+w(1,2)*f(x-1,y)+w(1,3)*f(x-1,y+1)+w(2,1)*f(x,y-1)+w(2,2)*f(x,y) +w(2,3)*f(x,y+1)+w(3,1)*f(x+1,y-1)+w(3,2)*f(x+1,y)+w(3,3)*f(x+1,y+1);
end
end
end
figure(4);
imshow(uint8(blur_f));
title('加权平均后的图');
试验结果:
3*3加权平均后的图
实验分析:
从实验结果可以看出,与邻域平均法相比较,加权平均法使处于掩模中心位置的像素比其他像素的权值要大,使距离掩模中心较远位置的像素参与平滑的贡献降低,这样就减小了平滑带来的图像模糊效应,所以比邻域平均法平滑后的图像的边缘细节要相对清晰。

相关主题