数字图像处理matlab上机实验 (六)

前言:作为一名图像算法攻城狮,那是在2014年大三下学期,一本深绿色的《数字图像处理》(冈萨雷斯的英文版)出现在自己课桌前。偶然间打开的一扇意外之门,就这样结下了一段不解之缘,那些日子不断上网搜代码的自己,那个刚上机不到二十分钟就把作业提交的自己,早已随往日的岁月飘扬而去。三年的烟酒僧,两年的酱油工,而今只觉脑子越来越不够用,这次决心回炉重造,希望能够通过固本培基,打开思路,话不多说,开始上课!
----2020-7-6


实验 6 图像复原

一、实验目的
通过本实验使学生掌握图像复原的基本概念。

二、实验原理
本实验是基于数字图像处理课程中的第五章图像复原理论来设计的。
本实验的准备知识:第五章图像复原。
重点如下:
1 、 空域滤波消噪
通过对图像叠加不同类型的噪声,并选择合适的滤波器进行滤波。
2、 退化函数建模

图像模糊建模PSF=fspecial(‘motion’,len,theta) 近似于由有着len个像素的摄像机的线性移动的效果。参数theta以度为单位,以顺时针方向对正水平轴度量。Len的默认值是9,theta的默认值是0。 G=imfilter(f,PSF,’circular’); 使用函数imfilter来创建一个已知PSF或用上述方法产生的PSF的退化图像。
3、 产生黑白块测试图像
使用checkerboard来产生测试图像。 语法为C=checkerboard(NP,M,N); 其中NP
是每个正方形一边的像素数,M是行数,N是列数。 (正方形的行数和列数)
例C=checkerboard(20);
Imshow(C)
结果如图

三、实验内容
(一)空域滤波消噪
1、产生如图所示的黑白块测试图像。

clc,clear,close all;
C=checkerboard(20);  
imshow(C)

在这里插入图片描述

2、叠加高斯噪声,并用均值滤波和中值滤波消噪,显示结果。

clc,clear,close all;
c=checkerboard(20);  
subplot(2,2,1)
imshow(c)
C=imnoise(c, 'gauss', 0.02);
subplot(2,2,2)
imshow(C)
C1=fspecial('average',3);
c2=imfilter(C,C1);
subplot(2,2,3)
imshow(c2)
C2=medfilt2(C,[7,7]);
subplot(2,2,4)
imshow(C2)

在这里插入图片描述

3、叠加椒盐噪声,并用均值滤波和中值滤波消噪,显示结果。

clc,clear,close all;
c=checkerboard(20);  
subplot(2,2,1)
imshow(c)
C=imnoise(c,'salt & pepper',0.02);
subplot(2,2,2)
imshow(C)
C1=fspecial('average',3);
c2=imfilter(C,C1);
subplot(2,2,3)
imshow(c2)
C2=medfilt2(C,[5,5]);
subplot(2,2,4)
imshow(C2)

在这里插入图片描述

4、叠加高斯噪声和椒盐噪声,选择合适的滤波方法滤波,显示结果。

clc,clear,close all;
c=checkerboard(20);  
subplot(2,2,1)
imshow(c)
c1=imnoise(c,'salt & pepper',0.02);
C=imnoise(c1,'gauss');
subplot(2,2,2)
imshow(C)
C1=fspecial('average',3);
c2=imfilter(C,C1);
subplot(2,2,3)
imshow(c2)
C2=medfilt2(C,[5,5]);
subplot(2,2,4)
imshow(C2)

在这里插入图片描述

(二 ) 退化图像
1、产生黑白块测试图像

clc,clear,close all;
C=checkerboard(20);  
imshow(C)

在这里插入图片描述

2、使用参数为len=7,theta=-45度的函数对其进行运动模糊。

clc,clear,close all;
c=checkerboard(20);  
subplot(1,2,1)
imshow(c)
C=fspecial('motion',7,-45);
subplot(1,2,2)
imshow(C)

在这里插入图片描述

3、产生高斯噪声,叠加在模糊图像上。

clc,clear,close all;
c=checkerboard(20);  
subplot(1,3,1)
imshow(c)
C=fspecial('motion',7,-45);
subplot(1,3,2)
imshow(C)
C1=imnoise(C, 'gauss', 0.02);
subplot(1,3,3)
imshow(C1)

在这里插入图片描述

(三 ) 复原图像
1、使用直接逆滤波方法复原。

C=checkerboard(20);
subplot(2,2,1),imshow(C)
 
PSF=fspecial('motion',7,-45);
G=imfilter(C,PSF,'circular') ;
subplot(2,2,2),imshow(G)
 
G1=imnoise(G,'gauss',0.02);
subplot(2,2,3),imshow(G1)
 
[N1 P]=deconvblind(G1,PSF,10);
subplot(2,2,4),imshow(N1)

在这里插入图片描述

2、使用维纳滤波方法将上述图像复原。

clc,clear,close all;
C=checkerboard(20);
subplot(2,2,1),imshow(C)
 
PSF=fspecial('motion',7,-45);
G=imfilter(C,PSF,'circular');
subplot(2,2,2),imshow(G)
 
G1=imnoise(G,'gauss',0.02);
subplot(2,2,3),imshow(G1)
 
 fr=deconvwnr(G1,PSF,0.9);
subplot(2,2,4),imshow(fr)

在这里插入图片描述

维纳滤波函数可用 deconvwnr 来实现。函数 deconvwnr 有三种可能的退化形式,g代表退化图像,fr是复原图像。
fr=deconvwnr(g,PSF) 假设信噪比为0;
fr=deconvwnr(g,PSF,NSPR) ,其中NSPR为噪信功率比。

四、实验方法与步骤
1、顺序完成上述实验内容
2、按照实验内容要求,分析编程,将程序和实验结果整理成word文档,分析结果,编写实验报告。

五、实验报告要求
1、本实验由学生单人独立完成。
2、每个实验均按统一格式编写实验报告。
实验报告内容包括:实验要求,实验项目,典型程序流程图,程序清单,数据结果和分析讨论。

本系列文章列表如下:
数字图像处理matlab上机实验 (一)
数字图像处理matlab上机实验 (二)
数字图像处理matlab上机实验 (三)
数字图像处理matlab上机实验 (四)
数字图像处理matlab上机实验 (五)
数字图像处理matlab上机实验 (六)
数字图像处理matlab上机实验 (七)
数字图像处理matlab上机实验 (八)
数字图像处理matlab上机实验 (九)

猜你喜欢

转载自blog.csdn.net/sinat_34897952/article/details/107116402
今日推荐