源码现在只可以识别蓝牌和以提供的车牌图片(两张),其它图片识别不准确,具体演示请看b站演示结果,请考虑清楚在下单
MATLAB项目实战源码,通过下面链接购买:
https://nuyoahinuhz.blog.csdn.net/article/details/142495786
源码采用基础的“特征提取+分类器”的方法,对车牌字符图像进行Gabor特征提取并采用支持向量机分类器训练,最终得到识别模型
源码售出不做任何修改,有能力的同学可以训练更精确的识别模型嵌套进去,这个自行研究,我这里提供这个思路
有能力的同学可以考虑引入其他的目标检测及识别方法,例如基于YOLO的车牌检测、基于CNN的字符识别等,构建不同的智能化技术流程,拓展到其他的应用场景。
运行MainForm.m文件就可以,matlab版本2021以上,运行效果:
车牌入库时间存在txt文件:
前言
随着我国社会经济的持续发展,汽车保有量也保持了快速增长的态势,智能化停车管理已经成为提高城市交通管理效率及改善交通拥堵的重要手段。随着科学技术的进步,无人值守的智能化停车场已经广泛应用于各大小区、商场和办公区等场所,相比于传统的人工核验计时和缴费的过程,能够进一步改进停车效率,提高停车场的安全运营水平。车牌识别是智能化交通管理的基础技术模块之一,它利用车牌是车辆唯一性标识的原则,通过摄像机抓拍等方式获取车牌图像,采用视觉智能分析方法进行识别。车牌识别技术可在不影响车辆通行的前提下由计算机自动化完成,提升交通管理工作的效率。停车场车牌识别应用场景具有车速慢、拍摄范围固定和识别距离较短的特点,一般可抓拍到车头区域相对清晰的车牌图像,通过智能化识别技术获得车牌信息并按照设定的规则进行自动化分阶段计费,将车辆状态与自动门、栏杆设备等进行联动,实现车辆的自动化通行管理。本案例针对停车场车牌识别应用场景,采用基础的车牌定位、车牌字符分割和车牌字符识别方法,结合设定的计费规则进行计费,建立基于车牌识别的停车场出入库计费应用。
车牌检测
车牌检测是指对包含车牌的图像进行分析,定位出车牌的位置,分割出车牌区域图像,是车牌识别系统的重要组成部分。以我国车牌为例,车牌区域具有明显的形状、颜色和结构特征,主要包括如下特点。(1)形状特征:车牌一般呈现长方形的连续块状区域,且宽高比具有一定的范围,具有明显的形状特征。(2)颜色特征:根据车辆用途的不同,车牌也对应不同的颜色,例如小型汽车的蓝底白字车牌、新能源汽车的绿底黑字车牌和大型汽车的黄底黑字车牌等。(3)结构特征:车牌四周一般是连续的边框,内部包含固定格式的字符,例如常见的以省份简称、英文字母和数字构成的共七位字符的普通车牌。为了进行基础的车牌检测方法分析,本节选择两种经典方法进行车牌检测实验,分别是基于颜色的车牌检测方法和基于统计学习的车牌检测方法,从图像颜色分割和局部特征模板分类的角度出发进行车牌检测。
基于颜色的车牌检测方法
以停车场出入口摄像头抓拍的蓝底白字车牌为例,车牌区域的颜色总体上呈现明显的连续蓝色分布,直接采用RGB颜色范围分割的方法即可得到车牌的候选区域,主要技术流程如图9-1所示。对蓝底白字车牌采用颜色特征进行车牌区域定位,利用车牌区域的连续蓝色分布的区域特点进行分析,可分为预处理、阈值分割、投影定位三个步骤,下面我们模拟某停车场抓拍的图像并按此步骤进行实验。
基于颜色特征的蓝底车牌定位流程图
1.数据预处理
读取图像,并提取R、G、B三分量,分别计算R、G分量与B分量的比值图,关键代码如下。
运行此段代码,可得到R、G、B三分量以及RB、GB比值图,效果如图9-2所示。输入图像的车牌区域呈现明显的蓝色分布特征,分别计算红色分量与蓝色分量、绿色分量与蓝色分量的比值,可发现车牌区域呈现明显的偏暗特征,这也正对应了车牌区域内蓝色分量占主要成分的客观事实。因此,此处可采用基础的阈值分割方法,提取车牌候选区域。
2.阈值分割
从上图可以发现,RB比值图的车牌区域相对于GB比值图更加偏暗,为此可对RB比值图的分割选择相对较低的阈值进行分割,对GB比值图选择相对较高的阈值进行分割。此外,B分量图的车牌区域呈现出一定范围内的亮度分布特点,可以选择相对较低的阈值进行分割。对RB比值图、GB比值图和B分量图,分别选择阈值0.5、0.8和80进行阈值分割,并进行二值图合并,得到候选图。关键代码如下。
运行此段代码,可得到车牌区域候选图,效果如图9-3所示。通过设定的阈值范围进行分割与合并得到车牌区域候选图,进而能突出显示蓝底白字的车牌区域,便于进一步定位分割。
3.投影定位
从上图可以发现,车牌区域呈现明显的连续白色分布,但非车牌区域依然存在部分噪声干扰,如果对此图像按照水平、垂直方向做积分投影,则车牌区域会呈现明显的连续长波峰分布特点,因此可进行进一步的定位分割,关键代码如下所示。
运行此段代码,可对前面得到的候选图进行水平、垂直方向的积分投影。注意到这里采用归一化方法,结合图像的高度和宽度分别将水平、垂直方向的投影曲线的尺度对应到图像叠加显示,最终效果如图9-4所示。可以发现,水平方向的积分投影在车牌区域的上下边界位置呈现出明显的峰值;垂直方向的积分投影在车牌区域的左右边界位置呈现出明显的峰值。
下面使用简单的阈值判断技术提取车牌的具体位置,关键代码如下
运行后可得到车牌区域的矩形框位置信息,将其叠加到原图进行显示,得到效果如图所示。基于颜色的车牌检测方法通过预处理、阈值分割、投影定位三大步骤后可获得准确的车牌区域定位效果。但是,这种方法对图像的拍摄条件具有较高的要求,难以应对拍摄条件异常的情况,例如雨天、雾天等,虽然可通过闪光灯照射补光等方法进行优化,但难以避免出现较多的误定位问题,所以需要综合考虑不同拍摄条件下的车牌检测问题,在保证效率的前提下提高检测效果的鲁棒性。
基于统计学习的车牌检测方法
基于统计学习的车牌检测方法对车牌样本和非车牌样本进行模型训练,无须使用特定的先验知识和阈值范围,具有一定的通用性。Adaboost算法具有计算量小、运行速度快的优点,haar特征对车牌和非车牌具有良好的区分性,因此可利用Haar-like级联分类器进行车牌检测。基于Haar-like级联分类器进行目标检测是经典的检测方法,这里我们重点分析如何进行模型的加载和调用,在MATLAB中可方便地在函数CascadeObjectDetector中传入公开的车牌检测模型文件进行车牌检测,并对检测结果进行一定的延拓,关键代码如下。
运行此段代码,可利用已训练的haar级联分类器模型进行车牌检测,运行效果如图所示。运行此段代码,可利用已训练的haar级联分类器模型进行车牌检测,运行效果如图9-6所示。
基于级联分类器进行车牌区域定位可使用较少的步骤进行车牌区域的定位,无须预设阈值参数,具有一定的通用性。因此,将车牌提取的过程进行函数封装,融合颜色分割与级联分类器分割两种方法进行车牌定位,具体代码如下所示。
函数getcarplaterect首先通过颜色分割的方法进行车牌定位,如果发生异常则以调用级联分类器的方法进行车牌定位,这样可进一步提高车牌区域检测的鲁棒性。
车牌识别
通过车牌检测模块可获得包含车牌字符的区域图像,以蓝底白字车牌为例,一般由七个字符组成,且第一个字符为汉字、第二个字符为大写英文字母、其他的字符由大写英文字母和数字构成,具有字符类别有限、字体格式单一和排列规则固定的特点。因此,可对车牌区域图像先进行字符分割,得到字符序列并进行分类识别,最终得到对应的车牌信息。
字符分割
以蓝底白字车牌为例,字符分割的目标是对车牌区域的字符进行分割得到独立的七个字符,用于字符识别。考虑到车牌字符的分布特点,不同字符之间存在较为明显的间隔,因此可对车牌区域图像进行二值化和连通域分析步骤得到预处理后的区域图,然后对其进行垂直方向的积分投影得到字符分割位置,进而获得连续的车牌字符。
后面的内容写进文档了,可在文档中查看