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

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

研究目的

在交通系统、刑事取证中图像的关键信息至关重要,但是在交通、公安、银行、医学、工业监视、军事侦察和日常生活中常常由于摄像设备的光学系统的失真、调焦不准或相对运动等造成图像的模糊,使得信息的提取变得困难。但是相对于散焦模糊,运动模糊图像的复原在日常生活中更为普遍,比如高速运动的违规车辆的车牌辨识,快速运动的人群中识别出嫌疑人、公安刑事影像资料中提取证明或进行技术鉴定等等,这些日常生活中的重要应用都需要通过运动模糊图像复原技术来尽可能地去除失真,恢复图像的原来面目。因此对于运动模糊图像的复原技术研究更具有重要的现实意义。

图像复原原理

本文探讨了在无噪声的情况下任意方向的匀速直线运动模糊图像的复原问题,并在此基础上讨论了复原过程中对点扩散函数(PSF)的参数估计从而依据自动鉴别出的模糊方向和长度构造出最为近似的点扩散函数,构造相应的复原模型,实现运动模糊图像的复原;在模糊图像自动复原的基础上,根据恢复效果图的纹理特征和自动鉴别出的模糊长度和角度,人工调整模糊方向和长度参数,使得复原效果达到最佳。

实验过程

v2-f9148065b88a59b16b0f08c3398f4c31_b.png


v2-7a97513e0130fb42226302b20090efd2_b.jpg

v2-dfe5de9120efac7fe41f99c141b14237_b.jpg


1(a) 1(b)


j=imread('车牌1.jpg');

figure(1),imshow(j);

title('原图像');

len=20; theta=30;

psf=fspecial('motion',len,theta);

j1=imfilter(j,psf,'circular','conv');

figure,imshow(j1);

title('PSF模糊图像');

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

v2-5da6794880c366c30caa6be5f53b8844_b.jpg

v2-06e294af0d6068eb769f9111ecf4b219_b.jpg


1(c) 1(d)


J=rgb2gray(j);

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

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

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

P=(N-min(min(N)))…

/(max(max(N))-min(min(N)))*225;%归一化

figure,imshow(P);

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


J1=rgb2gray(j1);

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

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

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

P1=(N1-min(min(N1)))/(max(max(N1))…

-min(min(N1)))*225;%归一化

figure,imshow(P1);

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


利用图1(d)粗略的计算模糊的方向,可以通过matlab自带的画线工具,选取如下图1(e)所示的三角形,计算a与c之间的夹角


v2-578539884b2674a2b71f557cebb729f3_b.jpg

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算子

v2-296645ebaca6859e5a9a40738157e53e_b.jpg


v2-50e27a439f7899851473ddd291aaf397_b.jpg

其自相关曲线如图2(a)所示。利用matlab的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所示。


v2-a8c1a85973be4a13d5455799812a7d7d_b.jpg

v2-b260bc384e67c3c42be859dcaeda151d_b.jpg

len=20;

theta=25;

psf=fspecial('motion',len,theta);

wnr1=deconvwnr(j1,psf,0);

subplot(221),imshow(wnr1);

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


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

er=deconvreg(j1,psf,np/3.0);

subplot(222),imshow(er);

title('最小二乘方复原')



v2-a53583e54bf6092d6e50a6d2bcd83322_b.jpg

v2-ff378e5e1594a76736342e51cf1b8adf_b.jpg


lucy=deconvlucy(j1,psf);

subplot(223),imshow(lucy);

title(' Lucy richardson图像复原');


NITPSF=ones(size(psf));

[mang,psf]=deconvblind(j1,INITPSF,40);

subplot(224),imshow(mang);

title('盲去卷积复原');

由上图可知经过Lucy richardson复原的图像效果最好,可多次修改运动模糊方向,再进行Lucy richardson复原。下图4为运动模糊方向为30的效果。


v2-4136db1d5f3aa3db334c8d1775402666_b.jpg

v2-ead43fd3efe19a03b4a49465a7228519_b.jpg

图像中可以比较清楚的看出此图中汽车的牌子‘本田’以及车牌‘闽C 6R972’。

  • 7
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值