(按模板)实验三 图像的平滑滤波比较实验目的及原理(2017年春).doc
文本预览下载声明
班级: 姓名: 学号:
实验三 图像的平滑滤波比较
目的
1、理解图像滤波的基本定义及目的;
2、掌握空域滤波的基本原理及方法;
3、掌握用MATLAB语言进行图像的空域滤波的方法。
原理
一、多次相加求平均降噪
1. 完成人为的往一幅图像中加入噪声,并通过多次相加求平均的方法消除所加入的噪声。
在MATLAB中提供了给图像加入噪声的函数imnoise
imnoise的语法格式为
J = imnoise(I,type)
J = imnoise(I,type,parameters)
其中J = imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。
参数type和parameters用于确定噪声的类型和相应的参数。
下面的命令是对图像eight.tif分别加入高斯噪声、椒盐噪声和乘性噪声,其结果如图所示:
例:
I=imread(eight.tif);
J1=imnoise(I,gaussian,0,0.02);
J2=imnoise(I,salt pepper,0.02);
J3=imnoise(I,speckle,0.02);
subplot(2,2,1),imshow(I),title(原图像);
subplot(2,2,2),imshow(J1),title(加高斯噪声);
subplot(2,2,3),imshow(J2),title(加椒盐噪声);
subplot(2,2,4),imshow(J3),title(加乘性噪声);
代数运算中需要有若干幅带有随机噪声的图像数据,在这里我们运用MATLAB中的FOR循环语句来完成产生多幅带有噪声的图像数据及将这些图像数据进行相加运算。MATLAB中FOR END循环的用法如下:
for end循环
这种循环允许一组命令以固定的和预定的次数重复,循环的一般形式为:
for variable = expression
statements
end
2、均值滤波
模块系数都是1,为保持灰度值范围(算得R后要将其除以系数总个数)
在MATLAB图像处理工具箱中,提供了medfilt2函数用于实现中值滤波。
Medfilt2函数的语法格式为:
B = medfilt2(A) 用3×3的滤波窗口对图像A进行中值滤波。
B = medfilt2(A,[m n]) 用指定大小为m×n的窗口对图像A进行中值滤波。
3、中值滤波
在一维的情况下,中值滤波器是一个含有奇数个像素的窗口。在处理之后,位于窗口正中的像素的灰度值,用窗口内各像素灰度值的中值代替。
中值滤波很容易推广到二维的情况。二维窗口的形式可以是正方形、近似圆形的或十字形的。
4、自适应滤波
能根据图像的局部方差调整滤波器的输出。局部方差越大,平滑作用越强。目标是使恢复图像与原始图像的均方误差最小
5、卷积与滤波的关系
MATLAB中提供了卷积运算的函数命令conv2,其语法格式为: C = conv2(A,B)
C = conv2(A,B)返回矩阵A和B的二维卷积C。若A为ma×na的矩阵,B为mb×nb的矩阵,则C的大小为(ma+mb+1)×(na+nb+1)。
MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为:
Y = filter2(h,X)
其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。例如:
Fspecial函数用于创建预定义的滤波算子,其语法格式为:
h = fspecial(type)
h = fspecial(type,parameters)
实验结果
实验分析
显示全部