一般来说,一个完整的车牌识别系统的处理流程包括图像输入、车牌提取、字符分割、字符识别和结果输出这五部分。其中车牌提取、字符分割和字符识别是较重要的部分,而车牌提取尤为关键,采用哪种算法或算法组合决定了整个系统的性能。
本人从多年前就开始研究车牌识别的各种算法,以资源需求低、运行高效和鲁棒性强为目标,在嵌入式系统中以C/C++实现了车牌识别的整个流程。本系统能同时识别出车牌类型和车牌号,能适应阴雨雪雾等低照度条件,对于倾斜、脏污、损伤、变形等车牌的识别率也很高。当时为了验证和演示,用VS2005做了一个测试工具。今以这个测试工具的源码为基础,分步骤地将我设计的车牌识别系统软件的重要算法分享出来。源代码还含有不少调试的痕迹以及没有实际用到的算法在里面,待整理后会开放下载。欢迎技术探讨,WX:15380886180或Email:bhw98@sina.com。
为提高效率和准确率,在车牌识别流程的各个部分,要充分利用先验知识对算法的参数范围进行限制,例如车牌长宽比、车牌背景色、字符颜色、字符字体、字符行数、字符间隔分布特征、每个字符所属的字符集等。举个例子,车牌中的汉字个数很有限,做识别时只要在那么几十个字中搜索就行了,而没有必要在整个GB-2312字符集中进行搜索。
关于中国的车辆号牌种类的简明介绍,可参考百度百科:https://baike.baidu.com/item/%E8%BD%A6%E7%89%8C/8347320?fr=aladdin。更详细、更专业的资料请参照公安部发布的GA36-2018标准文件。
对于颜色来说,理论上红、绿、蓝、黄、黑、白等,其RGB或HSV值都有标准定义。但对于实际拍摄的图像,由于受环境光和拍摄手法的影响,颜色都会或多或少带有“污染”。例如,下图左边的车牌受强光刺激,底色变为青色(绿色分量较多