基于MATLAB的运动模糊图像处理Word文档下载推荐.docx
《基于MATLAB的运动模糊图像处理Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的运动模糊图像处理Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
对图1(a)所示的原始图像‘车牌’图像做方向
=
,长度L=20像素的匀速直线运动模糊,得到退化图像如图1(b)
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);
PSF模糊图像'
图1(c)和1(d)分别为原图像和模糊图像的二次傅里叶变化
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);
傅里叶变换频谱'
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);
利用图1(d)粗略的计算模糊的方向,可以通过matlab自带的画线工具,选取如下图1(e)所示的三角形,计算a与c之间的夹角
Matlab命令窗口输:
ginput
选中三个顶角后回车,可得数据
ans=
136.6009
146.3977
137.4205
166.8895
145.2074
粗略取值后,经Matlab计算得:
atan(20/9)*180/pi
ans=
65.7723
则运动方向为90-ans≈25(误差为5)。
1(e)
模糊长度的估计
运动模糊图像中,在运动方向上大多数模糊图像的背景像素点具有很强的相关性,即沿着运动模糊的轨迹,背景像素点的灰度值逐渐变化或者不变。
通过文献的学习,先对模糊图像进行一阶微分,然后进行自相关运算,可得一条鉴别曲线,曲线上会出现对称的相关峰,峰值为负,两相关峰之间的距离等于运动模糊长度。
把模糊图像转换为灰度图像,采用Sobel算子对其进行一阶微分运算,Sobel算子
其自相关曲线如图2(a)所示。
利用matlab的DataCursor可以测得两负峰之间的距离为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);
自相关图'
%图像自相关函数
图像的复原
然后我们按本文中鉴别出的运动模糊图像的运动长度和运动角度后,构造出相应的匀速直线运动PSF,并对其进行图像复原,得到的效果如下图3所示。
theta=25;
wnr1=deconvwnr(j1,psf,0);
subplot(221),imshow(wnr1);
维纳滤波处理后图像'
np=0.002*prod(size(j));
er=deconvreg(j1,psf,np/3.0);
subplot(222),imshow(er);
最小二乘方复原'
)
lucy=deconvlucy(j1,psf);
subplot(223),imshow(lucy);
Lucyrichardson图像复原'
NITPSF=ones(size(psf));
[mang,psf]=deconvblind(j1,INITPSF,40);
subplot(224),imshow(mang);
盲去卷积复原'
由上图可知经过Lucyrichardson复原的图像效果最好,可多次修改运动模糊方向,再进行Lucyrichardson复原。
下图4为运动模糊方向为30的效果。
图像中可以比较清楚的看出此图中汽车的牌子‘本田’以及车牌‘闽C6R972’。
参考文献:
1.红外技术第32卷第5期2010年5月《毫米波辐射图像的运动模糊参数辨识》
胡泰洋、肖泽龙、许建中
2.《数字图像处理及MATLAB实现——学习与实验指导》