图像滤噪以及车牌识别Word文件下载.docx
《图像滤噪以及车牌识别Word文件下载.docx》由会员分享,可在线阅读,更多相关《图像滤噪以及车牌识别Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
飞机原始图片的灰度直方图如下所示
图2飞机原始图像灰度直方图
根据直方图得出原始图像灰度值主要分布在100-175之间,密集分布在120-140之间。
采用前者并归一化到0-1区间后处理得到的图像如下:
图3100-175区间对比度增强
处理后图像的灰度直方图如下所示;
图4处理后图像灰度直方图
可见均衡后图像对比度明显增强,纹理和边缘更加清晰。
原图灰度分布在很狭窄的区间约[100,175]内。
均衡化后灰度较为分散的分布在[50,200]区间内。
如果采用区间120-140进行对比度增强,得到的图像和灰度直方图分布如下所示,根据图像结果可知,图像的对比度更大,但在灰度值的分布上更加分散。
图5120-140区间对比度增强及灰度直方图
同理对细胞图像的处理图如下:
图6细胞图像处理结果
2.1.2同态滤波
图7同态滤波前后对比图
2.2图像消噪
2.2.1消除椒盐噪声
图8原始图像
椒盐噪声是一种在图像上出现很多白点或黑点的噪声,用线性滤波器滤除的结果不好,对于椒盐噪声采用中值滤波的方法进行消噪处理,利用MATLAB中的medfilt()函数。
处理结果如下:
图9中值滤噪后图像
2.2.2消除高斯噪声
图10原始图形
高斯噪声是指噪声服从高斯分布,即某个强度的噪声点个数最多,离这个强度越远噪声点个数越少,且这个规律服从高斯分布.高斯噪声是一种加性噪声,即噪声直接加到原图像上,因此可以用线性滤波器滤除.
采用高斯滤波器进行消噪,处理后的图像如下所示:
图11高斯滤波后图像
2.3运动模糊消除
PSF=fspecial('
motion'
len,theta);
Motion_Blur=imfilter(I,PSF,'
circular'
'
conv'
);
其中PSF为运动模糊算子,有两个参数,表示摄像物体逆时针方向以theta角度运动了len个像素,len的默认值为9,theta的默认值为0。
处理过程中分别采用维纳滤波,Lucy-Richardson滤波处理,但并没有达到想象中的效果,图像仍然存在模糊。
图12维纳和Lucy-Richardson处理后图像
2.4车牌号码识别
图13车牌号码识别算法流程
图14原始图像
首先将原始图像转化为灰度图像并提取其图像边界,处理结果如下图所示;
图15边界提取图像
利用腐蚀算子fushi=[1;
1;
1],将非车牌区域的噪声信息腐蚀掉,处理后如下图所示:
图16边界腐蚀后图形
选择方形闭环算子进行闭运算,处理后图像如下所示:
图17闭运算后图像
利用bwareaopen()函数将图像中的小于1800个像素点的区域去除,处理结果如下:
图18去除车牌号码以外区域
根据上图信息,确定号码的上下左右边界,分别得到上下左右的像素边界统计,分别如下所示:
图19车牌号码边界信息
最后在原图中提取车牌号码区域,处理结果如下图所示:
图20车牌号码提取
三、总结
在这次作业中学会了针对不同问题的图片采取相对应的方法,例如在椒盐噪声的消噪中利用中值滤波的效果比均值滤波要好的多,同时在车牌号的提取中体会到开运算,闭运算的效果,收获颇丰。
附录:
程序代码
yuantu1=imread('
C:
\Users\zhangkun\Desktop\4.bmp'
yuantu=rgb2gray(yuantu1);
figure
(1);
imhist(yuantu,256);
axis([025501e5]);
title('
原图直方图'
I=imadjust(yuantu,[0.390.7],[01.0]);
figure
(2);
imshow(I);
figure(3);
imhist(I,256);
直方图均衡化后的直方图'
clear;
clc;
I=imread('
\Users\zhangkun\Desktop\6.jpg'
subplot(1,2,1);
原图'
);
I=double(rgb2gray(I));
[M,N]=size(I);
rL=0.3;
rH=2.0;
c=2;
d0=10;
I1=log(I+1);
n1=floor(M/2);
n2=floor(N/2);
fori=1:
M
forj=1:
N
D(i,j)=((i-n1).^2+(j-n2).^2);
H(i,j)=(rH-rL).*(exp(c*(-D(i,j)./(d0^2))))+rL;
%¸
ß
Ë
¹
Í
¬
Ì
Â
²
¨
end
I2=ifft2(H.*FI);
I3=real(exp(I2));
subplot(122);
imshow(I3,[]);
同态滤波增强后'
)
2.2.1中值滤波
I=rgb2gray(I);
Y=medfilt2(I);
imshow(Y);
中值滤波'
2.2.2高斯滤波
\Users\zhangkun\Desktop\2.bmp'
n3=20;
k=[11];
A2=fspecial('
gaussian'
k,n3);
Y5=filter2(A2,I)/255;
figure
(2)
imshow(Y5),title('
高斯滤波'
2.3维纳滤波和Lucy-Richardson滤波
\Users\zhangkun\Desktop\7.tif'
len=8;
theta=pi;
len,theta);
imshow(Motion_Blur);
模糊图像'
J=deconvwnr(Motion_Blur,PSF);
imshow(J);
维纳滤波'
BlurredC=imfilter(I,PSF,'
symmetric'
V=0.002;
BlurredNoisy=imnoise(BlurredC,'
0,V);
Luc=deconvlucy(BlurredNoisy,PSF,5);
imshow(Luc);
Lucy-Richardson滤波'
2.4车牌识别
\Users\zhangkun\Desktop\1.jpg'
I2=edge(I,'
roberts'
imshow(I2);
fushi=[1;
1];
I3=imerode(I2,fushi);
imshow(I3);
se1=strel('
rectangle'
[24,24]);
I4=imclose(I3,se1);
figure,imshow(I4);
I6=bwareaopen(I4,1800);
figure,imshow(I6);
[y,x,z]=size(I6);
i6=double(I6);
Y1=zeros(y,1);
forii=1:
y
forjj=1:
x
if(i6(ii,jj,1)==1)
Y1(ii,1)=Y1(ii,1)+1;
end
[temp,MaxY]=max(Y1);
figure,plot(1:
y,Y1);
PY1=MaxY;
while((Y1(PY1,1)>
=50)&
&
(PY1>
1))
PY1=PY1-1;
PY2=MaxY;
while((Y1(PY2,1)>
(PY2<
y))
PY2=PY2+1;
X1=zeros(1,x);
forjj=1:
forii=PY1:
PY2
X1(1,jj)=X1(1,jj)+1;
x,X1);
PX1=1;
while((X1(1,PX1)<
15)&
(PX1<
x))
PX1=PX1+1;
PX2=x;
while((X1(1,PX2)<
(PX2>
PX1))
PX2=PX2-1;
PX1=PX1-1;
PX2=PX2+1;
dw=I(PY1:
PY2,PX1:
PX2,:
figure,imshow(dw);