湖南大学脑与认知科学概论实验2实验报告.docx
《湖南大学脑与认知科学概论实验2实验报告.docx》由会员分享,可在线阅读,更多相关《湖南大学脑与认知科学概论实验2实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
湖南大学脑与认知科学概论实验2实验报告
课程名称
脑与认知科学概论
实验课时
4
实验项目名称
和编号
实验2图像去噪实验
CS0502502
同组者姓名
实验目的
1.通过实验掌握图像去噪的基本方法;
2.学会根据情况选用不同方法。
实验环境
硬件:
联想Y50计算机
软件:
WINDOWS7操作系统
应用软件:
MATLAB2014A
实验内容
和原理
1.实验内容
请在如下面方法中选择多个,完成图像去噪操作,并进行分析、比较。
(1)对静态场景的多幅图片取平均;
(2)空间域模板卷积(不同模板、不同尺寸);
(3)频域低通滤波器(不同滤波器模型、不同截止频率);
(4)中值滤波方法。
2.实验要求
(1)图片可根据需要选取;
(2)对不同方法和同一方法的不同参数的实验结果进行分析和比较,如空间域卷积模板可有高斯型模板、矩形模板、三角形模板和自己根据需求设计的模板等;模板大小可以是3×3,5×5,7×7或更大。
频域滤波可采用矩形或巴特沃斯等低通滤波器模型,截止频率也是可选的。
(3)分析比较不同方法的结果。
3实验原理:
(一)对静态场景的多幅图片取平均:
考虑待处理的同一幅图的不同样本较多,如本题中,给出了一幅图的8种不同噪音样本,我们选取取平均的做法,直接将灰度值转化为浮点数取平均,即可得到需要的去噪结果。
(二)空间域模板卷积(不同模板、不同尺寸):
考虑三种模板处理方式:
邻域模板、高斯模板、及加权模板
先看模板的使用方法:
fspecial函数用于创建预定义的滤波算子,其语法格式为:
h=fspecial(type)
h=fspecial(type,parameters)
参数type制定算子类型,parameters指定相应的参数,具体格式为:
type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。
type='gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为0.5。
type='laplacian',为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2。
type='log',为拉普拉斯高斯算子,参数有两个,n表示模版尺寸,默认值为[3,3],sigma为滤波器的标准差,单位为像素,默认值为0.5
type='prewitt',为prewitt算子,用于边缘增强,无参数。
type='sobel',为著名的sobel算子,用于边缘提取,无参数。
type='unsharp',为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2。
下面考虑三种滤波方式:
邻域模板:
最简单的平滑滤波是将原图中一个像素的灰度值和它周围邻近8个像素的灰度值相加,然后将求得的平均值(除以9)作为新图中该像素的灰度值。
它采用模板计算的思想,模板操作实现了一种邻域运算,即某个像素点的结果不仅与本像素灰度有关,而且与其邻域点的像素值有关。
邻域平均处理方法是以图像模糊为代价来减小噪声的,且模板尺寸越大,噪声减小的效果越显著。
如果是噪声点,其邻近像素灰度与之相差很大,采用邻域平均法就是用邻近像素的平均值来代替它,这样能明显消弱噪声点,使邻域中灰度接近均匀,起到平滑灰度的作用。
因此,邻域平均法具有良好的噪声平滑效果,是最简单的一种平滑方法。
高斯模板:
高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。
通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。
高斯滤波的具体操作是:
用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
加权模板:
类似于邻域模板滤波,将各部分的加权比进行调整,选择调整后最佳的加权比进行滤波。
(三)中值滤波
主要调用b=medfilt2(a,[m,n]);
其中b是中值滤波后的图象矩阵,a是原图矩阵,m和n是处理模版大小,默认大小为3×3。
(四)频域低通滤波器
实验步骤
方法
关键代码
(1)对静态场景的多幅图片取平均(shy2_1.m)
代码:
b1=double(imread('I1.jpg'))/255;%读取图片,将灰度转化为浮点数后除以255,下同
b2=double(imread('I2.jpg'))/255;
b3=double(imread('I3.jpg'))/255;
b4=double(imread('I4.jpg'))/255;
b5=double(imread('I5.jpg'))/255;
b6=double(imread('I6.jpg'))/255;
b7=double(imread('I7.jpg'))/255;
b8=double(imread('I8.jpg'))/255;
c=(b1+b2+b3+b4+b5+b6+b7+b8)/8;%对以上8幅图求平均
imshow(c)
(2)空间域模板卷积(不同模板、不同尺寸);
邻域模板:
i=double(imread('panda2.jpg'))/255;
subplot(221);imshow(i);title('原图像');%显示图像
h=1/4*[010;101;010];%定义4邻域平均模板
a=filter2(h,i);%进行滤波
subplot(222);imshow(a);title('4邻域平均模板');
h=1/8*[111;101;111];%定义8邻域平均模板
a=filter2(h,i);
subplot(223);imshow(a);title('8邻域平均模板');
h=1/12*[0110;1111;1111;0110];%定义12邻域平均模板
a=filter2(h,i);
subplot(224);imshow(a);title('12邻域平均模板');
高斯模板:
i=imread('Panda2.jpg');%读入图像
i=double(i)/255;%数值转换
subplot(231);imshow(i);title('原图像.高斯模板');
h=fspecial('gaussian',[3,3]);%产生预定义滤波器,%选用3*3的高斯模板
%格式为b=fspecial(A,[m,n]);这里[m,n]是邻域大小,默认值为[3,3]
a=filter2(h,i);%对图像进行卷积滤波的函数格式:
A=filter2(h,i)
%其函数返回图像i经算子h滤波后的图像给A
subplot(232);imshow(a);title('3*3的高斯模板');
h=fspecial('gaussian',[55]);%选用5*5的高斯模板
a=filter2(h,i);
subplot(233);imshow(a);title('5*5的高斯模板')
h=fspecial('gaussian',[77]);%选用7*7的高斯模板
a=filter2(h,i);
subplot(234);imshow(a);title('7*7的高斯模板')
h=fspecial('gaussian',[99])%选用9*9的高斯模板;
a=filter2(h,i);
subplot(235);imshow(a);title('9*9的高斯模板')
h=fspecial('gaussian',[1111]);%选用11*11的高斯模板
a=filter2(h,i);
subplot(236);imshow(a);title('11*11的高斯模板')
加权平均模板
i=imread('Panda2.jpg');%读入图像
i=double(i)/255;%数据类型转换
subplot(1,3,1);imshow(i);title('原图像');%显示图像
h=1/10*[111;121;111];%选用3*3的加权平均模板
a=filter2(h,i);
subplot(1,3,2);imshow(a);title('3*3的加权平均模板');
h=1/48*[01210;12421;24842;12421;01210];%选用5*5的加权平均模板
a=filter2(h,i);
subplot(1,3,3);imshow(a);title('5*5的加权平均模板');
(3)中值滤波方法
i=imread('Panda2.jpg');%读入图像
i=double(i)/255;%数值转换
subplot(221);imshow(i);title('原图像');%显示图像
a=medfilt2(i,[33]);%中值滤波函数medfilt2,m行n列的滤波器
subplot(222);imshow(a);title('3*3中值滤波');
a=medfilt2(i,[55]);%选用5*5
subplot(223);imshow(a);title('5*5中值滤波')
a=medfilt2(i,[77]);%选用7*7
subplot(224);imshow(a);title('7*7中值滤波');
(4)均值滤波
closeall;clearall;
I=imread('panda2.jpg');%读入预处理图像
I=double(I)/255;
subplot(231),imshow(I),title('原图像')%显示预处理图像
h=fspecial('average',[33]);%进行3*3均值滤波
K1=filter2(h,I);
subplot(232),imshow(K1),title('3*3均值滤波')
K2=filter2(fspecial('average',5),I);%进行5*5均值滤波
subplot(233),imshow(K2),title('5*5均值滤波')
K3=filter2(fspecial('average',7),I);%进行7*7均值滤波
subplot(234),imshow(K3),title('7*7均值滤波')
K4=filter2(fspecial('average',9),I);%进行9*9均值滤波
subplot(235),imshow(K4),title('9*9均值滤波')
K5=filter2(fspecial('average',11),I);%进行11*11均值滤波
subplot(236),imshow(K5),title('11*11均值滤波')
(5)频域低通滤波
clearall;
closeall;
i=imread('panda2.jpg');%读入图像
subplot(221);
imshow(i);
title('原图像');%显示图像
a=fft2(double(i));%进行傅里叶变换
fc=fftshift(a);%把频谱移中fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称。
[m,n]=size(fc);%获取频谱图大小
fori=1:
m%进行点运算
forj=1:
n
u=floor(i-m/2);%计算频率平面道远点的距离
v=floor(j-n/2);
d=(u^2+v^2)^0.5;
h(i,j)=1/(1+(d/30)^2);%定义巴特沃斯低通滤波器
fe(i,j)=h(i,j)*fc(i,j);%进行巴特沃斯低通滤波
end
end
FF=ifftshift(fe);%对经巴特沃斯处理的频谱进行逆移中
ff=real(ifft2(FF));%取傅里叶逆变换的实数部分
subplot(222);
imshow(uint8(ff));
title('截止频率30Hz');%显示图像
[m,n]=size(fc);%获取频谱图大小
fori=1:
m%进行点运算
forj=1:
n
u=floor(i-m/2);%计算频率平面道远点的距离
v=floor(j-n/2);
d=(u^2+v^2)^0.5;
h(i,j)=1/(1+(d/60)^2);%定义巴特沃斯低通滤波器
fe(i,j)=h(i,j)*fc(i,j);%进行巴特沃斯低通滤波
end
end
FF=ifftshift(fe);%对经巴特沃斯处理的频谱进行逆移中
ff=real(ifft2(FF));%取傅里叶逆变换的实数部分
subplot(223);
imshow(uint8(ff));
title('截止频率60Hz');%显示图像
[m,n]=size(fc);%获取频谱图大小
fori=1:
m%进行点运算
forj=1:
n
u=floor(i-m/2);%计算频率平面道远点的距离
v=floor(j-n/2);
d=(u^2+v^2)^0.5;
h(i,j)=1/(1+(d/80)^2);%定义巴特沃斯低通滤波器
fe(i,j)=h(i,j)*fc(i,j);%进行巴特沃斯低通滤波
end
end
FF=ifftshift(fe);%对经巴特沃斯处理的频谱进行逆移中
ff=real(ifft2(FF));%取傅里叶逆变换的实数部分
subplot(224);
imshow(uint8(ff));%显示图像
title('截止频率80Hz');
测试记录
分析
结论
(1)静态图片取平均
(2)邻域模板:
(3)高斯模板
(4)加权平均模板
(5)中值滤波
(6)均值滤波
(7)巴特沃斯低通滤波
结论分析:
1)对于给出样本在不同干扰下的图像个数较多时,可以考虑通过对多个样本取平均进行滤波以消除噪音。
2)对于三种空间域模板滤波(邻域、高斯、加权),相较来看,大尺寸的邻域滤波所得的滤波结果最优秀,当然代价也会更大。
但是不可避免的,这些滤波方式都会引入模糊因素,使原图变得模糊。
3)中值滤波对去除“椒盐”噪声可以起到很好的效果,因为椒盐噪声只在画面中的部分点上随机出现,所以根据中值滤波原理可知,通过数据排序的方法,将图像中未被噪声污染的点代替噪声点的值的概率比较大,因此噪声的抑制效果很好,同时画面的轮廓依然比较清晰。
由此看来,对于椒盐噪声密度较小时,尤其是孤立噪声点,用中值滤波的效果非常好的。
然而,后续我对中值滤波进行了其他几组测试,在处理线形密集的图形时,中值滤波也会得到很不理想的滤波结果。
4)均值滤波处理的高斯噪声图像很模糊,较之于中值滤波,不太理想。
究其原因,是因为均值滤波是类似于邻域滤波,进行邻域内平均。
5)巴特沃斯低通滤波可以针对不同频段进行滤波,自由度较强,可以针对个人需求进行调节,是一种很灵活的滤波方式。
小结
实验结论:
对于椒盐噪声图像,选取中值滤波可以得到最佳滤波效果。
对于高斯噪声图像,选取均值滤波可以得到最佳滤波效果。
对于给出样本较多的情况,可以采用多幅图取平均的滤波方式。
在使用模板时,一般情况下使用大尺寸的模板,滤波效果更佳,但是会有更大的代价。
所以,对于不同的图像,我们需要先分析,根据不同情况,选取不同滤波方式。
心得体会:
这次实验主要考察我们对于matlab多种图像操作,以及滤波方式的实现,总的来说,实验量很大,我也用了很多时间去做。
希望做完这次实验之后能记住这次实验的一些经验和教训,在以后的学习生活中灵活运用。
以下由实验教师填写
记事
评议
成绩评定
平时成绩_______实验报告成绩________综合成绩_________
指导教师签名: