基于MATLAB的运动模糊图像处理

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

基于 MATLAB 的运动模糊图像处理

提醒:

我参考了文献里的书目和网上的一些代码而完成的,所以误差会比较大,目前对于从网上下载的模糊图片的处理效果很不好,这是我第一次上传自己完成的实验的文档,希望能帮到一些人吧。

研究目的

在交通系统、刑事取证中图像的关键信息至关重要,但是在交通、公安、银行、医学、工业监视、军事侦察和日常生活中常常由于摄像设备的光学系统的失真、

调焦不准或相对运动等造成图像的模糊,使得信息的提取变得困难。但是相对于散焦模糊,运动模糊图像的复原在日常生活中更为普遍,比如高速运动的违规车辆的车牌辨识,快速运动的人群中识别出嫌疑人、公安刑事影像资料中提

取证明或进行技术鉴定等等,这些日常生活中的重要应用都需要通过运动模糊

图像复原技术来尽可能地去除失真,恢复图像的原来面目。因此对于运动模糊图像的复原技术研究更具有重要的现实意义。

图像复原原理

本文探讨了在无噪声的情况下任意方向的匀速直线运动模糊图像的复原问题,

并在此基础上讨论了复原过程中对点扩散函数 (PSF)的参数估计从而依据自动鉴别

出的模糊方向和长度构造出最为近似的点扩散函数,构造相应的复原模

型,实现运动模糊图像的复原;在模糊图像自动复原的基础上,根据恢复效果图的纹理特征和自动鉴别出的模糊长度和角度,人工调整模糊方向和长度参

数,使得复原效果达到最佳。

实验过程

模糊方向的估计:

对图 1(a)所示的原始图像‘车牌’图像做方向= 30,长度 L=20像素的匀速直线运动模糊,得到退化图像如图1(b)

1(a)1(b)

j=imread('车牌 1.jpg');len=20; theta=30;

figure(1),imshow(j);psf=fspecial('motion',len,theta); title(' 原图像');j1=imfilter(j,psf,'circular','conv');

figure,imshow(j1);

title('PSF模糊图像');

图 1(c)和 1(d)分别为原图像和模糊图像的二次傅里叶变化

1(c)1(d)

J=rgb2gray(j);J1=rgb2gray(j1);

K=fft2(J);% 傅里叶变换K1=fft2(J1);% 傅里叶变换

M=fftshift(K);%直流分量移到频谱中心M1=fftshift(K1);%直流分量移到频谱中心

N=abs(M);%计算频谱幅值N1=abs(M1);%计算频谱幅值

P=(N-min(min(N)))⋯P1=(N1-min(min(N1)))/(max(max(N1))⋯/(max(max(N))-min(min(N)))*225;%-归min(min(N1)))*225;%一

归一化

figure,imshow(P);figure,imshow(P1);

title(' 傅里叶变换频谱');title(' 傅里叶变换频谱');

利用图 1(d)粗略的计算模糊的方向,可以通过matlab 自带的画线工具,

选取如下图1(e)所示的三角形,计算 a 与 c 之间的夹角

Matlab 命令窗口输: ginput

选中三个顶角后回车,可得数据

ans =

136.6009 146.3977

137.4205 166.8895

145.2074 166.8895

粗略取值后,经Matlab 计算得:

atan(20/9)*180/pi

ans =65.7723则运动方向为

90-ans≈ 25(误差为 5)。

1(e)

模糊长度的估计

运动模糊图像中,在运动方向上大多数模糊图像的背景像素点具有很强

的相关性,即沿着运动模糊的轨迹,背景像素点的灰度值逐渐变化或者

不变。通过文献的学习,先对模糊图像进行一阶微分,然后进行自相关

运算,可得一条鉴别曲线,曲线上会出现对称的相关峰,峰值为负,两

相关峰之间的距离等于运动模糊长度。

把模糊图像转换为灰度图像,采用Sobel 算子对其进行一阶微分运算,Sobel 算子

1 01

So b e l = 2 02

1 01

其自相关曲线如图2(a)所示。利用m atlab 的 Data Cursor 可以测得两

负峰之间的距离为20

个像素点,此为运动模

糊的长度,与理论值吻

合(比较精确)。由于

长度的测量计较精确,

可以根据长度对运动

模糊方向进行不同的

取值,达到最好效果。

f1=rgb2gray(j1);

f1=im2double(f1);

h = fspecial('Sobel');%Sobel算子

J = conv2(f1,h,'same'); %Sobel

算子微分

IP=abs(fft2(J));

%图像能量谱密度

S=fftshift(real(ifft2(IP)));

figure,plot(S);

title('自相关图');

%图像自相关函数

图像的复原

然后我们按本文中鉴别出的运动模糊图像的运动长度和运动角度后,

构造出相应的匀速直线运动PSF,并对其进行图像复原,得到的效果如下图 3 所示。

len=20;

theta=25;np=0.002*prod(size(j));

psf=fspecial('motion',len,theta);er=deconvreg(j1,psf,np/3.0);

wnr1=deconvwnr(j1,psf,0);subplot(222),imshow(er);

subplot(221),imshow(wnr1);title(' 最小二乘方复原')

title(' 维纳滤波处理后图像');

相关文档
最新文档