数字图像的退化与复原
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
一、实验目的
1.掌握数字图像的存取与显示方法。
2.理解数字图像运动模糊、高斯模糊以及其他噪声引起模糊(图像降质现象)的物理本质。 3.掌握matlab 的开发环境。
4.掌握降质图像的逆滤波复原和维纳滤波复原方法。
二、实验原理
此实验是对数字图像处理课程的一个高级操作。在深入理解与掌握数字图像退化的基础理论上,利用逆滤波与维纳滤波方法对数字图像进行复原。
图像的退化
数字图像在获取过程中,由于光学系统的像差、光学成像衍射、成像系统的非线性畸变、成像过程的相对运动、环境随机噪声等原因,图像会产生一定程度的退化。
图像的复原
图像复原是利用图像退化现象的某种先验知识,建立退化现象的数学模型,再根据模型进行反向的推演运算,以恢复原来的景物图像。因而图像复原可以理解为图像降质过程的反向过程。
图像降质的数学模型
图像复原处理的关键问题在于建立退化模型。输入图像f(x,y)经过某个退化系统后输出的是一幅退化的图像。为了讨论方便,把噪声引起的退化即噪声对图像的影响一般作为加性噪声考虑。
原始图像f(x,y)经过一个退化算子或退化系统H(x,y)的作用,再和噪声n(x,y)进行叠加,形成退化后的图像g(x,y)。图1表示退化过程的输入和输出关系,其中H(x,y)概括了退化系统的物理过程,就是要寻找的退化数学模型。
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
图1 图像的退化模型
数字图像的图像恢复问题可以看作是:根据退化图像g(x,y)和退化算子H(x,y)的形式,沿着反向过程去求解原始图像f(x,y)。图像退化的过程可以用数学表达式写成如下形式:
g(x,y)=H[f(x,y)]+n(x,y) (1)
在这里,n(x,y)是一种统计性质的信息。在实际应用中,往往假设噪声是白噪声,即它的频谱密度为常熟,并且与图像不相关。
在对退化系统进行了线性系统和空间不变系统的近似之后,连续函数的退化模型在空域中可以写成:
g(x,y)=f(x,y)*h(x,y)+n(x,y) (2) 在频域中可以写成:
G(u,v)=F(u,v)H(u,v)+N(u,v) (3)
其中,G(u,v)、F(u,v)、N(u,v)分别是退化图像g(x,y)、原图像f(x,y)、噪声信号n(x,y)的傅立叶变换;H(u,v)是系统的点冲击响应函数h(x,y)的傅立叶变换,称为系统在频率域上的传递函数。
可见,图像复原实际上就是已知g(x,y)求f(x,y)的问题或已知G(u,v)求F(u,v)的问题,它们的不同之处在于一个是空域,一个是频域。
逆滤波
逆滤波是非约束复原的一种。非约束复原是指在已知退化图像g 的情况下,根据对退化系
ˆ
统H 和n 的一些了解和假设,估计出原始图像f ,使得某种事先确定的误差准则为最小。
由于
g=Hf+n (4) 我们可得:
n=g-Hf (5)
ˆ
逆滤波法是指在对n 没有先验知识的情况下,可以依据这样的最有准则,即寻找一个f ,
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
ˆ
使得H f 在最小二乘方误差的意义下最接近g ,即要使n 的模或范数(norm )最小:
n
2
ˆ=n n =g -H f
T
2
ˆ) T (g -H f ˆ) =(g -H f
(6)
上式的极小值为:
ˆ) =g -H f ˆL (f
2
(7)
ˆ
如果我们在求最小值的过程中,不做任何约束,由极值条件可以解出f 为: ˆ=(H T H ) -1H T g =H -1g f (8)
对上式进行傅立叶变换得:
F (u , v ) =
G (u , v )
H (u , v ) (9)
可见,如果知道g(x,y)和h(x,y),也就知道了G(u,v)和H(u,v).根据上式,即可得出F(u,v),再经过反傅立叶变换就能求出f(x,y)。
逆滤波是最早应用于数字图像复原的一种方法,并用此方法处理过由漫游者、探索者等卫星探索发射得到的图像。
维纳滤波
维纳滤波是最小二乘类约束复原的一种。在最小二乘类约束复原中,要设法寻找一个最有
ˆ
估计f ,使得形式为
ˆf
2
=n
2
的函数最小化。求这类问题的最小化,常采用拉格朗日乘子算
ˆ
法。也就是说,要寻找一个f ,使得准则函数
ˆ) =Q f ˆJ (f 为最小。
2
ˆ+α(g -H f
2
-n )
2
(10)
ˆ
求解f 得到
ˆ=(H T H +γQ T Q ) -1H T g f (11)
式中,γ=1/α。如果用图像f 和噪声的相关矩阵Rf 和Rn 表示Q ,就可以得到维纳滤波复原方法。具体维纳滤波复原方法的原理请参考相关图书。
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
三、实验仪器和设备
1、PC 机1台
2、原始coins 图像文件 3、matlab 编程软件
四、实验内容及步骤
(1) 安装Matlab7.5
(2) 读取cameraman.tif 图像并显示。 I=imread('cameraman.tif'); imshow(I);
(3) 设计运动模糊滤波器、设计高斯模糊噪声滤波器。
运动模糊滤波器:
I=imread('cameraman.tif'); noise=0.1*randn(size(I)); psf=fspecial('motion',21,11); blurred=imfilter(I,psf,'circular');
subplot(1,2,2),imshow(blurred); title(‘运动模糊’) subplot(1,2,1),imshow(I);title(‘原图’)
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
显示运动模糊退化图像:
修改运动模糊参数及运动模糊图像显示: I=imread('cameraman.tif'); noise=0.1*randn(size(I)); psf=fspecial('motion',50,25); blurred=imfilter(I,psf,'circular');
subplot(1,2,2),imshow(blurred);title(‘运动模糊’) subplot(1,2,1),imshow(I);title(‘原图’)
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
高斯模糊噪声滤波器: I=imread('cameraman.tif'); noise=0.1*randn(size(I)); psf=fspecial('gaussian',21,11); blurred=imfilter(I,psf,'circular');
subplot(1,2,2),imshow(blurred); title(‘高斯模糊’) subplot(1,2,1),imshow(I); title(‘原图’)
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
显示高斯模糊退化图像:
高斯模糊噪声滤波器修改参数及显示图像: I=imread('cameraman.tif'); noise=0.1*randn(size(I)); psf=fspecial('gaussian',12,15); blurred=imfilter(I,psf,'circular');
subplot(1,2,2),imshow(blurred);title(‘高斯模糊图像’) subplot(1,2,1),imshow(I);title(‘原图’)
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
(4) 设计逆滤波器,并对降质图像进行复原,比较复原图像与原始图像。
对运动模糊图像进行复原:
I=imread('cameraman.tif'); len=10; theta=10;
PSF=fspecial('motion',len,theta);
Blurredmotion=imfilter(I,PSF,'circular','conv'); subplot(2,2,1),imshow(I);title(‘原图’)
subplot(2,2,2),imshow(Blurredmotion);title(‘运动模糊图像’) wnr1=deconvwnr(Blurredmotion,PSF); subplot(2,2,3),imshow(wnr1);title(‘复原图像’)
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
对高斯模糊噪声图像进行复原: I=imread('cameraman.tif'); len=10; theta=10;
PSF=fspecial('gaussian',len,theta);
Blurredgaussian =imfilter(I,PSF,'circular','conv'); subplot(2,2,1),imshow(I);title(‘原图’)
subplot(2,2,2),imshow(Blurredgaussian);title(‘高斯模糊图像’) wnr1=deconvwnr(Blurredgaussian,PSF); subplot(2,2,3),imshow(wnr1);title(‘复原图像’)
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
(7) 设计维纳滤波器,并对降质图像进行复原,比较复原图像与原始图像。
对运动模糊图像进行复原: I = imread('cameraman.tif'); subplot(2,2,1),imshow(I);title(‘原图’) len = 30; theta = 75;
PSF = fspecial('motion',len,theta); J = imfilter(I,PSF,'conv','circular');
subplot(2,2,2),imshow(J);title(‘运动模糊图像’) wiener_img = deconvwnr(J,PSF);
subplot(2,2,3),imshow(wiener_img); title(‘复原图像’)
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
对高斯模糊噪声图像进行复原:
I = imread('cameraman.tif');
subplot(2,2,1),imshow(I); title(‘原图’)
len = 30;
theta = 75;
PSF = fspecial('gaussian',len,theta);
J = imfilter(I,PSF,'conv','circular');
subplot(2,2,2),imshow(J); title(‘高斯模糊图像’)
wiener_img = deconvwnr(J,PSF);
subplot(2,2,3),imshow(wiener_img); title(‘复原图像’)
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
(8) 计算退化图像、不同方法复原后图像的信噪比。
I=imread('cameraman.tif');
subplot(2,3,1);imshow(I);title('原图');
h1 = fspecial('motion',50,50);
MotionBlur = imfilter(I,h1);
subplot(2,3,2);imshow(MotionBlur);title('运动模糊');
h2 = fspecial('motion',20,10);
MotionBlur2 = imfilter(I,h2);
subplot(2,3,3);imshow(MotionBlur2);title('运动模糊二');
B = deconvwnr(MotionBlur2,h2);
subplot(2,3,4);imshow(B);title('复原二');
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩: G=imnoise(I,'gaussian',0,0.02);
subplot(2,3,5);imshow(G);title('高斯模糊');
h1=fspecial('gaussian');
Q=imfilter(G,h1);
subplot(2,3,6);imshow(Q);title('高斯还原');
[M,N]=size(I);
Yu_I=double(I);
Yu_B=double(B);
ga=sum(sum(Yu_I.^2));
gb=sum(sum((Yu_I-Yu_B).^2));
SNR=10*log(ga/gb);
P=sqrt(sum((Yu_I-Yu_B).^2));
Q=sqrt(sum(Yu_I.^2));
V=P/Q;
Yu_cc=corrcoef(Yu_I,Yu_B);
学院: 信息与电气工程学院 班级姓名: 学号:
课程:数字图像的退化与复原 实验日期:年月日 成绩:
>> SNR;V ;Yu_cc
SNR = 19.8722
V = 0.3556
Yu_cc =
1.0000 0.7565
0.7565 1.0000
五、实验心得
通过本次实验,我掌握了matlab 的开发环境和数字图像的存取与显示方法。理解了数字图像运动模糊、高斯模糊以及其他噪声引起模糊(图像降质现象)的物理本质,掌握降质图像的逆滤波复原和维纳滤波复原方法。