matlab模糊图像恢复数字图像处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六 模糊图像恢复

一、实验目的

本实验是一个综合性实验,要求学生巩固学习多个知识点和内容,主要有: 1、理解掌握运动图像的退化模型; 2、掌握维纳滤波法的原理和实现方法;

3、在不同的噪声和点扩散函数参数下进行恢复,并比较结果;

4、通过分析和实验得出相应的结论。 二、实验准备

1、运动模糊退化模型:运动模糊是图像退化的一种,可以用数学表达式刻画出来。对线性移(空)不变系统,退化模型可表示为:g(x,y)=h(x,y)*f(x,y)+n(x,y)。对匀速直线运动而言,退化图像为:

()()()[]⎰--=T

dt t y y t x x f y x g 000,,

其中x 0(t)和y 0(t)分别表示x 和y 方向的运动分量。并假设退化系统是线性移不变的,光学成像过程是完善的,快门开关是瞬间完成的。

对上式进行傅立叶变换,则得频域表达式为

()()()[]()()[]()[]()()()[]{})

,(),(2exp ,2exp ,2exp ,,000000v u H v u F dt t vy t ux j v u F dt

dxdy vy ux j t y y t x x f dxdy vy ux j y x g v u G T T

=+-=⎥⎥⎦⎤

⎢⎢⎣⎡+---=+-=⎰⎰⎰⎰⎰⎰+∞∞-+∞∞-+∞∞-+∞

∞-πππ 其中

()()()[]{}dt t vy t ux j v u H T

⎰+-=0002exp ,π

假设景物只在x 方向匀速运动,在T 时间内共移动距离是a ,即x 0(t)=at/T ,y 0(t)=0,则

()()[]ua j ua ua T dt T at u

j v u H T

ππππ-=⎥⎦

⎤⎢⎣⎡

-=⎰exp sin 2exp ,0 在Matlab 中可用滤波器卷积的方法仿真出运动模糊图像。

h=fspecial(‘motion ’,len,theta),表示在theta 方向移动len 长度,产生运动模糊的点扩散函数h 。

blurred=imfilter(I,h,'circular ’,’conv ’),产生运动模糊图像。 2、维纳滤波法恢复图像:

此方法也叫最小均方误差滤波法,是建立在图像和噪声都是随机过程,图像和噪声不相关,其中之一的均值为零,灰度估计值与退化图像中的灰度值成线性关系。其基本思想是

找到原图像f(x,y)的一个估计),(ˆy x f ,使得估计与原图像之间的均方误差在统计意义上最

小。

})],(ˆ),({[22y x f

y x f E e -=

其中E{.}表示数学期望,当上式取得最小值时,所得到的估计值),(ˆy x f

在频域的表达式为:

()()()()()()v u G v u S v u S v u H v u H v u F f n ,,/,,,,ˆ2

⎥⎥⎦

⎤⎢⎢⎣⎡+=*

其中H(u,v)是点扩散函数h (x ,y )的傅里叶变换,H*(u ,v )是退化函数H (u ,v )的复共轭,

S n (u ,v )=|N (u ,v )|2、S f (u ,v )=|S (u ,v )|2分别是噪声和原图像的功率谱。

而在实际当中,S n (u ,v )、S f (u ,v )未知,特别是S f (u ,v ),上式无法直接运用。解决的方法之一是令S n (u ,v )/ S f (u ,v )等于某个常数k 。上式就成了

()()()()v u G k v u H v u H v u F ,,,,ˆ2

⎥⎥⎦

⎢⎢⎣⎡+=* 在Matlab 中有专门的函数可以实现维纳滤波法恢复。wn1=deconvwnr(blurred,h),参数部分有多种选择的方法,这个表示用真实的点扩散函数进行恢复。

为了对比,可取不同的参数,以及加入噪声,再恢复,噪声可用imnoise 或randn 函数生成。细节可参阅matlab 相关资料。 三、实验内容与要求

参照以上知识点和过程仿真一幅运动模糊图像,用不同的参数,不同的噪声等情况下进行恢复,并探讨各量对恢复结果的影响。(可参照教材中插图的参数)

四、实验报告

1、提交经调试正确的程序源代码及相关文档。

2、总结调试程序时遇到的问题及解决方案。

实验程序:

%%%%%两幅图片相加可以使用函数 imadd

I = imread(''); I = imread('');

J = imread(''); Iplus50 = imadd(I,50);

K = imadd(I,J);

%%%%%%%%

%h=fspecial(‘motion’,len,theta),表示在theta方向移动len长度,而产生运动模糊的点扩散函数h

I = imread('I:\');

subplot(2,2,1);imshow(I);title('Original Image——原始图像');

H = fspecial('motion',20,45);%定义的运动模型

MotionBlur = imfilter(I,H,'replicate');

subplot(2,2,2);imshow(MotionBlur);title('Motion Blurred Image——运动模糊图像');

H = fspecial('disk',10);

%blurred=imfilter(I,h,'circular’,’conv’),产生运动模糊图像

blurred = imfilter(I,H,'replicate');

subplot(2,2,3);imshow(blurred);title('Blurred Image——模糊图像');

H = fspecial('unsharp');

sharpened = imfilter(I,H,'replicate');

subplot(2,2,4);imshow(sharpened);title('Sharpened Image——锐化图像');

%%%%%%%%

相关文档
最新文档