实验五 图像复原
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五图像复原
实验目的
通过本次实验,实现以下几个目标:
1. 理解图像复原的含义;
2. 熟悉常见的噪声模型以及识别噪声的方法;
3. 掌握MATLAB中用各种滤波器去除噪声的方法。
实验内容
图像复原所使用的方法与图像增强相同,可以在空间域滤波和频域滤波中进行。针对不同的噪声,通过选择合适的滤波器进行滤波,能较好地复原图像。
1、熟悉相关的Matlab命令
在MATLAB中两种方法来实现空间滤波,一种是使用MATLAB
中提供的滤波函数,另一种是直接对数据进行操作。
除了第三章介绍的和空间滤波相关的MATLAB函数,这里再介绍几个。
1. 给图象加噪声: imnoise()
应用该函数可实现对噪声的模拟。
例1添加椒盐噪声
g1=imnoise(g0, 'salt & pepper', 0.02);
例2 添加高斯噪声
f1=imnoise (f0, 'gaussian', 0, 0.05);
2. 生成预定义的滤波器 fspecial()
命令格式 fspecial(type)
参数type 可能值为下列之一
average 均值滤波器
gaussian: 高斯低通滤波器
sobel: 水平边缘增强滤波器
prewitt: 水平边缘增强滤波器
laplacian 近似二维拉普拉斯运算滤波器
unsharp 反锐化增强滤波器
例3.生成高斯低通滤波器并滤波
h1=fspecial('gaussian', 4, 0.3); //4为mean,0.3为variance
g2=filter2(h1,g1, 'same');
3. 二维线性数字滤波器 filter2()
第三章已经见过,可以使用预定义滤波器或者自定义的滤波器滤波。
例5使用上例中预定义滤波器滤波
g2=filter2(h1,g1, 'same');
4. 二维中值滤波器 medfilt2()
第三章已经见过,可以使用预定义滤波器或者自定义的滤波器滤波。
例6二维中值滤波器的例子
m2=medfilt2(f2);
5. 二维顺序统计滤波器 ordfilt2()
例8二维顺序统计滤波器的例子
k=ordfilt2(A,9,ones(3,3));
6. 二维自适应除噪滤波器 wiener2()
例8二维自适应除噪滤波器的例子
k=wiener2(f,[5 5]);
2、噪声模型
掌握如何通过直方图和频谱分析来识别噪声。直方图可以识别加性噪声,而傅里叶变换可以识别周期噪声。
1、加性噪声
对课本180页中的图像Fig5.03加入不同噪声后得到的Fig5.04(a) (b) (c) (g) (h) (i),用实验二介绍的方法分别显示
Fig5.04各图的直方图,仔细观察并进行比较。
2、周期噪声
用实验四介绍的傅里叶变换方法对课本181页中的图像Fig5.05(a)进行频谱分析,仔细观察并与课本中的结果进行比
较。
f=imread('Fig5.05(a).jpg');
% 傅里叶变换,移位
F=fft2(double(f));
F=fftshift(F);
figure(1); imshow(f);
figure(2); imshow(abs(F).^0.25,[ ]); %用幂函数而不是对数降对比度
3、空间滤波复原
当仅有加性噪声时,可以用空间滤波方法对图像进行复原。
1、均值滤波器
用实验三介绍的空间滤波方法对课本184页中的图像Fig5.07(b)进行均值滤波,算术均值滤波可以使用filter2函数,几何均值滤波使用直接对数据操作的方法。仔细观察并与课本中的结果进行比较。
f=imread('Fig5.07(b).jpg');
% 算术均值滤波器
h=ones(3)/9.0;
g1=filter2(h,f);
% 几何均值滤波器
b=double(f);
g2=b;
[Height Width]=size(f);
x= Width;
y= Height;
for j=2:x-1, % 边界不处理
for i=2:y-1,
% 在3x3邻域内几何均值
g2 (i,j)=1.0;
for m=-1:1,
for n=-1:1,
g2 (i,j)= g2 (i,j) *b(i+m,j+n);
end
end
g2 (i,j)= g2 (i,j)^(1.0/9.0);
end
end
% 显示图像
figure(1); imshow(f,[]);
figure(2); imshow(g1,[]);
figure(3); imshow(g2,[]);
同样,对课本185页中的图像Fig5.08(a) (b)进行逆谐波均值滤波,仔细观察并与课本中的结果进行比较。
2、统计排序滤波器
使用Matlab提供的统计排序滤波器medfilt2和ordfilt2对课本188页中的图像Fig5.10(a),Fig5.08(a) (b)进行滤波,仔细观察
并与课本中的结果进行比较。
f=imread('Fig5.10(a).jpg');
% 中值滤波器
g1=medfilt2(f);
figure(1), imshow(f);
figure(2), imshow(g1);
f1=imread('Fig5.08(a).jpg');
f2=imread('Fig5.08(b).jpg');
% 最大值滤波器
g1=ordfilt2(f1,9,ones(3,3));
% 最小值滤波器
g2= ordfilt2(f2,1,ones(3,3));
figure(1), imshow(f1);
figure(2), imshow(f2);
figure(3), imshow(g1);
figure(4), imshow(g2);
3、自适用滤波器
使用Matlab提供的自适用滤波器函数wiener2对课本191页中的图像Fig5.13(a)进行滤波,仔细观察并与课本中的结果进行比较。
f=imread('Fig5.13(a).jpg');
% 算术均值滤波器
h=ones(7)/49.0;
g1=filter2(h,f);
% 几何均值滤波器
b=double(f);
c=b;
[Height Width]=size(f);
x= Width;
y= Height;
for j=4:x-3, % 边界不处理
for i=4:y-3,