实验五 图像复原

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,

相关文档
最新文档