2008年12月5日星期五

车牌模糊识别技术

转自:http://www.chinahtp.com/ProductHtml/Product20091070.htm

随 着计算机和视频技术的发展,车牌自动识别系统己成为智能交通系统的重要组成部分,并已广泛应用于车辆追查和跟踪、车辆出入控制、公路收费监控等领域。完整 的车牌自动识别系统由图像釆集、图像处理、模糊识别等模块组成,其中对一幅已知车辆数字图像进行预处理、车牌定位、二值转换、车牌分类、车牌分割、字符识 别、结果优化的过程简称车牌模糊识别。目前国内已有众多单位开展了车牌识别技术研发,虽然各家都取得一定的成功,但车牌识别技术本身毕竟要符合实战要求, 为此笔者综观各家实际车牌识别系统后提出了车牌识别系统的几点不足之处和改进方法,供该领域的专业人士和领导参考。

一、图像预处理
根 据三基色原理,世界上任何色彩都可以由红绿蓝(RGB)三色不同比例的混合来表示,如果红绿蓝(RGB)三个信号分别由一个字节表示,则该图像颜色位数就 达到二十四位真彩,也就是说在二十四位真彩的数字图像中每个像素点由三个字节来表示,根据数字图像水平和垂直方向像素点数(即图像分辨率)可计算出一幅图 像实际位图大小。事实上,在车牌自动识别系统中车辆图像是通过图像采集卡将运动的车辆图像抓拍下来,并以位图的格式存放在系统内存中。这时的车辆数字图像 虽然没有被人为损伤过,但在实际道路上行驶的车辆常会因为各种各样的原因使得所拍摄的车辆图像效果不理想,如外界光线对车牌的不均匀反射、极强阳光形成的 车牌处阴影、摄像机快门值设置过大而引起的车辆图像拖影、摄像头聚焦或后背焦没有调整到位而形成的车辆图像不清晰、由于视频传输线而引起的图像质量下降、 所拍摄图像中存在的噪声干扰、所安装的车牌不规范或车辆行驶变形等等。这些都给车牌的模糊识别增加了难度,在现有的技术条件下任何优秀、先进的车牌识别软 件也是无法达到百分之百车牌正确识别率。但我们可以对车辆图像根据不同应用特点进行识别前的预处理,尽最大可能提高车牌正确识别率,这些图像预处理包括图 像平滑、倾斜校正、灰度修正等。

其中图像平滑的目的是为了减少图像中的噪声,一般情况下在空间域内采用领域平均法来减少噪声,在频率域内 由于噪声频谱多在高频段,因此釆用各种形式的低通滤波方法来减少噪声。空间域是指对图像像素灰度值直接运算后取代,频率域是对图像的像素值进行变换运算后 反变换取代,如傅立叶变换等。实际常用的方法是通过一个像素点和周围像素点的平均运算来去除突然变化的像素点,从而滤掉一定的噪声,当然如果釆用不合适的 图像平滑算法,则会带来图像模糊。

在道路实际行驶的车辆中,车牌在图像中往往存在不水平情况,如摄像机不在车道正中央、挂放的车牌不水平 或车辆突然变道行驶等都会使采集的车牌图像需要进行车牌倾斜校正。由于车牌的上下沿是两条明显的平行线,所以一般釆用HOUGH变换,检测出这两条直线的 倾斜角,或者利用特征投影法来检测车牌的倾斜角,然后对车牌图像进行水平校正。

灰度修正也是图像增强行之有效的方法,通常采用直方图修正 法使图像具有期望的灰度分布.水平方向为像素灰度值,垂直方向为该像素值出现的数量,根据灰色图像直方图调整图像像素值的分布范围,确保图像亮度值均匀和 平滑,同时如果直方图中存在多个峰值,则按直方图峰值计算出限定阀值,然后进行分段图像处理,由此分离出背景和噪声。当然,这种车辆图像预处理过程需要有 一定的运算时间,而对于实时车牌识别系统来说,图像预处理的时间不可能太长,否则会加重内存负担,并可能丢失其它车辆图像数据。

二、 车牌定位
我 们知道车牌定位对车牌识别系统来说至关重要,在车辆图像中往往存在许多类似车牌的区域,如养路费牌、广告牌、车灯区等都容易干扰车牌的定位。常用的车牌定 位算法有(1)自适应边界搜索法利用倒L型、水平直线、垂直直线这些结构元素搜索、定位字符,然后找出符合一定格式的字符群,即认为是车牌;(2)区域生 长法是对边缘图像进行均匀性区域生长,以获得潜在的车牌区域,然后利用车牌的几何特征以及车牌区域内的边缘灰度直方图统计特征删除伪车牌,即得真实车牌; (3)灰度图像数学形态学运算法则利用车牌形状特征、字符排列格式特征,对预处理后的灰度图像进行一系列的形态学运算,得到直线与一定数目的字符相邻的区 域即认为是车牌;(4)基于字符串特征增强的分割方法釆用一种线性滤波器突出牌照区域的纹理,再釆用取阈值的方法来分割牌照区域;(5)模糊聚类法则利用 模糊逻辑系统,根据一些分类参量判别由粗分割得到的图像中不确定部分是隶属于背景还是目标,从而分割出车牌;(6)基于灰度图的车牌定位和分割法首先选取 适当的阈值用迭代法得到二值图,再根据车牌中文字笔画的垂直边缘特征做车牌定位;(7)DFT变换法是先对图像逐行做DFT变换,然后把频率系数逐行累加 平均并根据这些平均值做出频谱曲线,根据频谱曲线中的“峰”的起始点位置确定车牌水平位置,对这一水平区域逐行做DFT变换可确定车牌竖直位置。虽然上述 车牌定位算法已在实践中取得成功,但对于车辆实时监控系统来说上述方法所需的时间仍然偏长,为此我们经过大量实践后找到了基于图像差分投影法,从而将车牌 识别时间缩短到一百毫秒以内。其原理是将车辆灰色图像按水平方向求差分图,然后按垂直方向求差分,最后对差分后的车辆图像分别在水平和垂直方向投影,按照 给定的车牌尺寸范围找出可似车牌区域。

然后按照水平和垂直方向投影得出有可能的车牌区域有三个,包括两个车灯区,由于车灯区在尺寸和字符数上不符合常规车牌特征,所以即可排除,从而仅剩下唯一的车牌区域,再从灰色图像中切出真正的车牌区图像。

三、 二值转换
实 际上,在车牌定位时已经将二十四位真彩图像转换成八位灰色图像,即用一个字节表示一个像素点,而一个字节能表示256种灰度,这对提取字符特征来说仍是困 难的,需要进一步将灰色图像转化为黑白二色图像,这个转换过程就称作二值转换。常用的车牌图像二值化方法是将各个像素灰度值与一个经验值(常称阈值)相比 较,如果该值少于阈值,则灰度值取“0”(即黑色),否则为“255”(即白色).

通常根据该车牌灰色图像的直方图得到最小和最大灰度值,然后设定阈值为最小和最大灰度值的平均值,再通过这二个区域的灰度迭代出最佳阈值,该方法的具体程序见参考文献[2]P466-469页。但实际二值化需要分区进行,否则会形成字符笔画断裂和加粗等。

四、 车牌分类和字符分割
众所周知,我国车牌种类繁多,常见的车牌有民用车牌、警用车牌、军用车牌、武警车牌和个性化车牌等,按照中华人民共和国机动车号牌标准(GA36-92)规定。
从 汽车牌照的结构特点看,民用车牌最少也有八个字符,若以7×9点阵表示一个字符为例,水平方向需要7个像素点、垂直方向需要9个像素点,加上字符水平之间 必须有一定的间距,以及车牌左右和上下都有边框存在,因此车牌水平宽度在图像中所占的大小应不低于100个像素点为宜,考虑到诸如灰尘、雾、油漆剥落或颜 色变淡等缺陷对车牌的影响,用于车牌识别的最佳尺寸为水平方向不少于110个像素点、重直方向不少于15个像素点,否则容易产生车牌定位出错,即使定位出 车牌,也容易产生字符识别错误。

字符在竖直方向上的投影必然在字符间或字符内的间隙处取得局部最小值,因此字符的正确分割位置应该在上述 局部最小值的附近,并且这个位置应满足车牌字符的标准数目、字符尺寸等条件,这样就排除了在复杂环境下车牌定位错误。在水平方向上从左至右检测各坐标的投 影数值,当检测到第一个投影值不为零的坐标可视为首字符的左边界,从该坐标向右检测到的第一个投影值为零的坐标可视为首字符的右边界,其余字符的边界坐标 同理可得。通过字符的平均字宽和两字符左边界之间的平均距离去除可能存在的错误切分。对于字宽小于平均字宽一定比例(如0.2)的字符可视为无效字符;前 后两字符距离小于平均距离且此距离与字宽之和不大于平均距离,则合并之为一个字符;对于字宽大于平均字宽一定比例(如2.4)则视为两字符出现粘连,当字 符数量多于或少于车牌可能的字符数时则认为所定位的车牌无效,这就是车牌垂直分割法。

五、 字符和车牌颜色识别
1、 字符优化
按 照上述车牌定位和切割方法很方便取得单个字符图像,不过此时的字符图像也可能存在字符与边框相连、字符变形和字符断裂等情况,为此在真正识别之前需要对字 符位图作进一步的技术处理,如下图车牌二值图经水平方向腐蚀后明显有利于图像分割和识别,但对于黑底和蓝底的车牌则适得其反。常用的方法是将用于识别的字 符位图按新的点阵大小重新采样,然后搜索字符位图的精确上下左右边界值,依照字符位图的宽高值和新的边界值重新确定字符像素点,并排除非字符情况,如左右 边界值之差过小、上下边界差过小等情况即认为非字符,用“?”取代。

2、 字符类型
设定类型0为民用车汉字,包含“京、津、晋、 冀、蒙、辽、吉、黑、沪、苏、浙、皖、闽、赣、鲁、豫、鄂、湘、粤、桂、琼、川、贵、云、藏、陕、甘、青、宁、新,渝” ;类型1为英文字母,包括除“I”外的“A—Z”其他字母;类型2为数字,包括“0—9”;类型3为数字和字母,包括类型1和类型2;类型4为武警英文字 母,包括“WJ”;类型5为武警数字,包括“0—9”;类型6为警车尾字“警”字;类型7为军用车汉字,包含“甲、乙、丙、丁、戊、己、庚、辛、壬、癸、 子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥”;类型8为民用车尾字,包括“0—9、学、试、领、港”等字。按照上述字符类型设定,我们可以得到车牌 字符类型表为民用汽车{0,l,3,3,2,2,8}、武警汽车{4,5,5,5,5,5,5,5}、军用汽车{7,l,2,2,2,2,2}、警用汽车 {0,3,3,2,2,2,6}等。

3、 标准特征库
将切分下来的字符图像变换到40×40的点阵空间上,按照水平和垂直方向提 取二值特征、按照字符结构在水平、垂直、左、右四个方向的几何投影图像特征建立多维特征库,其中标准汉字从宋体字库中选取,字母及数字从OCR-A字库中 选取。对标准字符分别进行归一化、轮廓化和特征抽取,标准模板就是从中抽取特征得到的特征向量。

4、 字符匹配
字符识别方法目前 主要有基于模板匹配算法和基于人工神经网络算法。基于模板匹配算法首先把待识别字符二值化并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板 进行匹配,最后选最佳匹配作为结果。由于这种匹配算法稳定性较差、时间花费也较大,因此在此基础上提出了基于关键点的匹配算法。此算法先对待识别字符进行 关键点提取,然后对关键点去噪,最后再确定字符的分类。这种匹配算法只利用了字符的关键点进行匹配,因此提高了识别速度又具有较高的识别率。基于人工神经 网络的算法主要有两种:一种是先对待识别字符进行特征提取,然后用所获得的特征来训练神经网络分类器;另一种方法是直接把待处理图像输入网络,由网络自动 实现特征提取直至识别出结果。前一种方法识别结果与特征提取有关,而特征提取比较耗时,因此特征提取是关键。
笔者认为,目前依据我国车牌特点采用 模板匹配算法识别速度更快。具体做法是将待识别的字符位图提取字符特征加权值,然后逐一与该类型相关的已知字符的标准特征库加权值比较,从中选取最理想的 字符作识别结果,当该理想字符相关的特征加权值小于给定的最小经验值,则认为该字符匹配成功,当该理想字符相关的特征加权值大于给定的最大经验值,则认为 该字符匹配错误,如采用“?”取代。对于容易相混的字符需要作进一步细节区分,如“0-8、5-8、0-D、0-Q、S-5、S-8、B-8、B-0、 B-D、D-Q、7-T、1-7、4-A”等。

5、 颜色识别
对于二值转换后的车牌图像依据我国车辆牌照特点十分容易分辨出黄色 和白色的车牌底色,但对于蓝底白字和黑底白字需要进—步从原灰度车牌中提取特征,如可以提取车牌分隔符区域,即截取第二个字符右边界和第三个字符的左边界 的车牌区,通过分析该区域灰色度就能区分出蓝色和黑色车牌底色,因为黑色和蓝色灰度存在明显差别。

六、 结果优化
按 照模板匹配算法,可以得到若干个车牌识别结果,从中我们选取字符匹配成功数最多者。如果全部字符匹配成功,则输出结果肯定准确,而在实际运行的车牌识别系 统中即使对字符作了优化处理,但仍有部分字符受车牌色差和环境的影响有识别出错可能,为此在识别结果中不妨设定最小出现数,如规定整个车牌中有四位识别正 确就给出车牌结果,这样有利于车牌模糊识别技术的应用。同时,依据我国车牌结构特点还需要进行车牌语法校验,如民用车牌尾字不存在“警”字、军牌格式中不 会出现“领、港、挂、学”字、警牌尾字不能出现“学、港、领、挂”字、警牌首位不能出现军牌汉字、武警车牌中不能出现民用和军用车牌汉字等等,这样可以大 大提高车牌正确识别率。

七、 字符训练
由于车牌安装角度、车牌制作工艺不同和外界污渍都会对字符识别产生影响,因此完整的车牌模糊识别系统应能提供字符自学习功能,即根据已知字符的二值图像重新生成特征库或改变部分特征库加权值,只有具备字符训练的车牌模糊识别软件才会有很高的车牌识别正确率、很强的适应性。

八、结束语
按照我国公安部门规定,车牌号码由省市区简称、车辆注册机关、注册编号、分类号码组成,现行的车牌种类繁多,这就给车牌模糊识别增加了难度,笔者通过分析现有车牌结构特点后认为有如下几点值得相关专家和领导关注:
(1)车牌编码规则应统一,如摩托车、农用运用车、拖拉机、使馆车辆应参照大小型汽车编码规则,尾部可相应改为“摩、农、拖、使”字:
(2)军队和武警大小车牌也应参照上述编码原则;
(3)针对车牌生产厂家众多的特点,应将车牌材料统一配给,确保车牌一致性;
(4)规范车牌安装区域,避免车牌中的字符被紧固螺钉和装饰物阻挡。
总之,通过上述分析我们知道车牌模糊识别的关键是车牌区域定位和字符识别,这两方面技术虽然已日趋成熟,但识别算法本身始终是人编的,追求更高的车牌模糊识别正确率永远是业内专业人士共同努力的目标。

1 条评论:

  1. 确实不错,是图像识别技术的学习好材料。

    回复删除

欢迎访问、交流!对本博客有何建议,请
来信告知!
本博内容来源于网络,如有不当或侵犯权益,请来信告知,将及时撤除!
如引用博客内容、论文,请注明原作者!

Google一下本博客

  • 《Getting Things Done》读书笔记 - 本文来自 inertial 原创投稿。 我第一次听说《Getting Things Done》这本书的时候误以为它和世面上的那些成功学书籍没什么区别,后来在不少书中看到了这个名字,也看见了很多人的推荐,由此产生了很大的兴趣。上个月正好有不少空闲,就抽时间把这本书读完了。 本来打算读英文原版,但是原版的生...
    5 年前
  • [原]Linux下编译使用boost库 - Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与...
    6 年前
  • [原]猎头、培训与咨询的价值(2)【补1】——北漂18年(93) - 【上期用手机写的,同时用语音输入转化成文字,错字较多,经好友霍师傅提醒本期重写,并增加一部分新内容】 简单谈下我对猎头、培训与咨询的看法。三样都干过,算是有些浅见。 猎头 简单的说就是人才中介。虽然在公司看来是可以直接解决现有企业问题的一个直接方法,但很多时候都不太管用。 猎头费一般是人才的一个月月...
    6 年前
  • OpenCV統計應用-Mahalanobis距離 - Mahalanobis距離是一個可以準確找出資料分布上面極端值(Outliers)的統計方法,使用線性迴歸的概念,也就是說他使用的是共變數矩陣以及該資料分布的平均數來找尋極端值的產生,而可以讓一群資料系統具有穩健性(Robust),去除不必要的雜訊訊息,這邊拿前面共變數矩陣的資料為例,並且新增了兩個點座標向量來做...
    15 年前
  • 努力推进模式识别实际产品的开发与应用 - Salu 无论是手写体识别、文档处理、人脸识别、基于内容的图片搜索、嵌入人工智能的搜索技术、虚拟网络社区、还是其它相关新科技下的信息整合领域,现在都在努力实用化。 前两年、即使现在还有很多人在抱怨说人脸的方法都不能用,但是就今年出现的和正在做的有关人脸识别实际应用的各种形式的产品可以说如雨后春笋。这是一个趋...
    16 年前