车牌识别学习

这篇博客介绍了车牌识别的主要流程,包括车牌定位、字符分割和字符识别。车牌定位通过颜色特征和数学形态学处理来实现,字符分割采用二值化图像处理,字符识别则使用简单的模板匹配。博主分享了实现代码并进行了测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前来说,车牌识别的技术已经相当成熟。在近一个月的学习时间里,将整个车牌识别的流程走了一遍,也有了一个比较清晰、全面的了解。

车牌识别主要分为三大部分:1.车牌的定位;2.车牌字符的分割;3.车牌字符的识别。

关于车牌定位,目前也有很多处理方式,在我学习的方法中,主要是运用到了目前车牌颜色(主要是蓝色和黄色车牌,而两种颜色又互为反色)的特征来进行候选车牌区域的定位(参考郑成勇师兄的论文)。其他的方法,1)基于数学形态学的定位方法,比如直接进行边缘检测,然后进行形态学处理,按照一定的规则去掉不符合车牌区域条件的无效干扰,以此得到车牌候选区域的定位;2)基于神经网络的车牌定位方法,利用已知的车牌区域和非车牌区进行反复训练得出一个比较满意的网络,在分割阶段,使用滑窗法遍历图像,滑动窗口内的图像送入训练网络进行判断。貌似还有基于纹理特征的车牌分割方法、基于小波变换的车牌分割方法等等。在我们的方法中,数学形态学处理,以及如何对候选车牌区域进行进一步的筛选需要花费点脑力。

关于车牌字符的分割,如果车牌存在一定程度的倾斜,还需要进行水平或者垂直角度的矫正。车牌区域已经给定,如何将区域中的字符准确的分隔开,比较通行的处理方式是先去掉上下边框,然后将车牌二值化图像进行垂直投影,去掉干扰,得到最大的投影间隔区,然后在最大间隔处向前分割两个字符,向后分割五个字符。在我的处理中,没有进行车牌的角度矫正,没有考虑第一个汉字(如川)需要字符合并的情形,当然,这些处理都非常简单了。

关于车牌字符的识别,这里的方法就有很多了,什么神经网络,SVM(支持向量机),还有我之前毕设做过的导出核(神经反应,深度学习)都可以用到这里了,并且效果可以非常的鲁邦。我这里使用了一种最粗糙的处理方法,简单的统计字符二值图像与模板二值图像之间不同像素点的个数,将差异最小的模板记号赋给待确定字符,效果也还比较好。当然不如前面的那几种方法厉害了,比如“8”和“B”有时候就会出现错分,复杂的汉字“粤”和“冀”也有时候会出现错分,这些当然也都不是问题啦。

在这段时间里,总算把整个过程都跑了一遍,也算是了解了如今应用如此广泛的车牌识别技术。

       下面就是程序以及测试的结果了:

function FinalPlate = LicenseLocate(CarImage,SaveImage)
% *****************************************************************************
% ** 函  数:  LicenseLocate  车牌定位
% ** 输  入:  CarImage       包含车牌的图像  输入格式 '01.jpg'
% **                 SaveImage      保存的图像名称  输入格式 '01_Plate.jpg'(可缺省)
% ** 输  出:  FinalPlate     定位的车牌图像
% ** 功  能:  输入一副包含车牌信息的图像,经过车牌定位之后得到车牌区域,并保存
% *****************************************************************************

function codeReg = LicenseRecognition(FinalPlate)
% *****************************************************************************
% ** 函  数:  LicenseRecognition  车牌字符识别
% ** 输  入:  FinalPlate          包含车牌的图像  输入格式 '01_Plate.jpg'
% ** 输  出:  codeReg             识别出来的字符
% ** 功  能:  输入一副已经定位好的车牌的图像,经过字符识别之后得到车牌信息输出
% *****************************************************************************

%主函数测试车牌识别程序
clc,clear,close all
lei = '*.jpg';
%车牌定位
InputPath = '.\CarImage\';
NewFolder = 'MyPlate';
if ~isdir(NewFolder)
    system(['mkdir ' NewFolder]);
end
ImageS=dir([InputPath lei]);
L = length(ImageS);
for i = 1:1:L
    name       = ImageS(i).name;
    CarImage   = [InputPath name]; ming = name(1:end - 4);  
    FinalPlate = LicenseLocate(CarImage);
    imwrite(FinalPlate,[NewFolder '\' ming '_Plate.jpg'])
end


%车牌识别
InputPath1 = ['.\' NewFolder '\'];
ImageS1=dir([InputPath1 lei]);
L = length(ImageS1);
for i = 1:1:L
    name       = ImageS1(i).name;
    FinalPlate = [InputPath1  name];
    ming       = name(1:end - 4);  
    codeReg    = LicenseRecognition(FinalPlate)
end




目标识别是计算机视觉一个重要的研究领域,由此延伸出的车辆型号识别具有重 要的实际应用价值,特别是在当今交通状况复杂的大城市,智能交通系统成为发展趋 势,这离不开对车辆型号进行识别和分类的工作,本文围绕如何利用计算机视觉的方 法进行车辆型号的识别和分类展开了一系列研究: 本文对当前的目标识别和分类的特征和算法做了总结和归纳。分析比较了作为图 像特征描述常见的特征算子,总结归纳了他们的提取方法、特征性能以及相互之间的 关联。另外,介绍了在目标识别工作中常用的分类方法,阐述了他们各自的原理和工作 方法。研究了深度神经网络的理论依据,分析比较了深度神经网络不同的特征学习方 法,以及卷积神经网络的训练方法。分析比较不同特征学习方法的特点选取 k-means 作为本文使用的特征学习方法,利用卷积神经网络结构搭建深度学习模型,进行车辆 车型识别工作。 本文为了测试基于深度学习的车辆型号分类算法的性能在 30 个不同型号共 7158 张图片上进行实验;并在相同数据上利用改进了的 SIFT 特征匹配的算法进行对比实验; 进过实验测试,深度学习方法在进行车型分类的实验中取得 94%的正确率,并在与 SIFT 匹配实验结果对比后进一步证实:深度学习的方法能够应用在车辆型号识别领域
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值