1 简介
车牌识别系统是计算机视觉与模式识别技术在智能交通里的重要研究课题之一.其功能是将运动中的汽车牌照从复杂背景中提取出来,并识别出车牌号码.车牌识别技术广泛应用于高速公路上的电子收费,日常的停车场管理以及交通违章监控等场景.它的出现对于维护交通安全和日常治安,防止交通拥塞,实现交通管理自动化有着很现实的意义.车牌识别技术一般由车牌定位,定位图像中的车牌位置;牌照字符分割,把车牌中的每个字符分割出来;字符识别,对分割出来的字符进行识别,最终给出识别结果组成.本文在研究了一系列车牌识别的算法的基础上,通过彩色图像灰度化,再进行边缘检测,形态学的膨胀腐蚀操作成功实现对背景的过滤,并通过水平和垂直投影法实现了对车牌的定位;在字符分割的实现上,本文通过先对车牌区域的彩色图像进行灰度化以及阀值处理,将图像转换为黑白图像,再进行中值滤波,最终结合字符水平和垂直投影的特性,成功完成对车牌字符的分割;在字符识别方面,首先将字符归一化,然后和建立好的模板字符库进行逐一比对,通过找差值绝对值的最小值来实现字符的匹配.本文的算法在MATLAB上进行了仿真和测试,可以较好的识别出车牌号码.
2 部分代码
function [ word, result ] = getword( img )
%UNTITLED 此处显示有关此函数的摘要
% 此处显示详细说明
word = [];
flag = 0;
y1 = 8;
y2 = 0.5;
while flag == 0
[m, n] = size(img);
width = 0;
while sum(img(:, width+1)) ~= 0 && width <= n-2
width = width + 1;
end
temp = my_imsplit(imcrop(img, [1,1,width,m]));
[m1, n1] = size(temp);
if width < y1 && n1/m1>y2
img(:, [1, width]) = 0;
if sum(sum(img)) ~= 0
img = my_imsplit(img);
else
word = [];
flag = 1;
end
else
word = my_imsplit(imcrop(img, [1, 1, width, m]));
img(:, [1: width]) = 0;
if sum(sum(img)) ~= 0
img = my_imsplit(img);
flag = 1;
else
img = [];
end
end
end
result = img;
end
% function [word,result]=getword(d)
% word=[];flag=0;y1=8;y2=0.5;
%while flag==0
% [m,n]=size(d);
% wide=0;
% while sum(d(:,wide+1))~=0 && wide<=n-2
% wide=wide+1;
% end
% temp=my_imsplit(imcrop(d,[1 1 wide m]));
% [m1,n1]=size(temp);
% if wide<y1 && n1/m1>y2
% d(:,[1:wide])=0;
% if sum(sum(d))~=0
% d=qiege(d); % 切割出最小范围
% else word=[];flag=1;
% end
% else
% word=my_imsplit(imcrop(d,[1 1 wide m]));
% d(:,[1:wide])=0;
% if sum(sum(d))~=0;
% d=my_imsplit(d);flag=1;
% else d=[];
% end
% end
%end
% %end
% result=d;
3 仿真结果
4 参考文献
[1]尹肖波. 基于MATLAB实现的车牌识别系统[D]. 浙江工业大学.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。