基于HALCON的汽车牌照识别研究
2018-12-15高永勋任德均严扎杰陈儒侠
高永勋 任德均 严扎杰 陈儒侠
(四川大学 制造科学与工程学院 成都610065)
车牌识别系统 LPR(License Plate Recognition)作为城市智能交通系统不可或缺的一部分,在城市交通和停车场等项目的管理中占有极其重要的地位。它可以在不影响汽车行使状态的情况下,由计算机自动的完成车牌的识别,从而降低城市交通管理工作的困难程度。
HALCON 是一个用来开发机器视觉应用软件的工具箱。它拥有一个特别良好的交互式编程环境,在快速开发图像视觉处理技术的应用软件方面具有很好的优势。软件本身有很多个不仅使用简单而且功能强大的运算子,此外,这些运算子还可以组合使用,发挥出更强大的功能,让软件设计者抽身脱离繁琐的程序。本研究正是采用HALCON作为系统软件的核心处理模块,将机器视觉检测技术应用于车辆牌照的检测,实现车牌号码快速、高效的识别和检测。
1 车牌识别系统设计
基于Halcon的车牌识别流程如图1所示,在自然环境下使用工业相机采集到车牌信息图像之后,首先对原始图像进行预处理,主要是为了抑制或者衰减图像中的无关信息,恢复有用的真实信息,增强相关信息的检测性。之后运用Blob分析算法完成预处理图像的字符分割,之所以采用Blob工具,是因为Blob分析算法是对图像的“行”操作,可以加快图像的处理速度。完成字符分割之后,使用Halcon自带的OCR分类器完成字符识别并显示结果。
图1 基于Halcon的车牌识别系统
2 车牌图像的处理
2.1 图像采集
在HALCON软件中可使用算子read_image从本地硬盘加载已采集好的车牌图像,并且HALCON支持BMP、PNG、JPEG等多种格式图像。而在目前市场实际车牌识别系统中,是借助于工业相机,在工业光源的照明条件下,通过外触发工业相机,直接拍照采集获取彩色的车牌图像。在本次实验中,为了方便,采用了前者来获取原图像,如图2所示。
图2 原图像
2.2 预处理图像
在实际的车牌识别系统中,往往有很多因素影响采集到的图像质量,如光源强度的波动、环境空气中的颗粒、工业相机的拍摄延迟、系统机械结构的震动和传输信号的干扰等,通常获取到的原始数字图像质量不是非常高,夹杂着多种多样的噪声,严重的甚至遮挡目标信息造成缺陷,所以必须在字符区域的提取、字符分割和字符识别之前对原始图像进行一些列的图像预处理操作,以改善车牌图像的视觉效果,并且可以加大车牌区域和背景区域的区分度[1]。
图像的预处理方式有很多,需要结合我国小型汽车牌照的特点采取特定的预处理方式。其中,常见的有转换为灰度图像、RGB图像、HSV图像、灰度阈值和去噪声等。根据我国小型汽车车牌的特点:车牌为矩形;车牌内的7个字符水平排列;牌照为蓝底白字;字符颜色与牌照底色之间具有明显差别;车牌内存在丰富的边缘信息[2]。结合以上特征,应预先估算出车牌字符在图像中的检测区域,然后由算法在估算的区域中进行精确搜索,获得字符的准确位置[3]。先对彩色的工业相机拍摄采集的图像进行降维处理,因为彩色信息在之后的图像处理以及字符识别过程中是无用信息,因此图像处理第一步就需要对图像彩色信息进行剔除。结合RGB三原色以及牌照的颜色特征,将彩色图像直接转换为 RGB三通道图像,通过观察三通道的图像,选择R通道的图像作为后续算法处理的对象,如图3所示。因为其车牌字符与牌照底色的差别更为明显,区分度更大,可以凸显图像字符区域的特征信息,使后续算法的识别和判断效果更加稳定和精确。核心程序为:
decompose3 (Car, Red, Green, Blue)
threshold (Red, Regions, 64, 206)
图3 R通道图像
2.3 Blob分析
Blob分析是对图像中具有相同像素的连通域进行分析的一种算法。它不仅可以提供图像中斑点的形状、位置、数量和方向,在提供斑点间拓扑结构等方面也具有很大的优势。Blob分析的主要内容包括:图像分割、连通性分析、Blob工具。针对实时预处理的R通道灰度图像,运用固定阈值分割将其分割为目标像素和背景像素。典型的目标像素被赋值为1,背景像素被赋值为0。然后对其进行连通性分析,将其中的车牌字符图像区域聚合为目标像素或者斑点的连接体,形成Blob单元,再对Blob单元进行图像特征分析,选取合适的参数,除去不相干区域,将单纯的图像灰度信息快速的转化为图像的形状信息,比如图像的质心、面积、周长以及其他图像信息,通过Halcon算子的多级分类器的过滤,可得到初步的车牌区域。最后,运用Blob工具将字符区域从背景中分离出来。在这个过程中,因为Blob并不是分析图像的单个像素,而是对图像的“行”进行操作。图像的每一行都用游程长度编码来表示相邻的目标范围。因此,这种方法比传统的基于像素的算法的处理速度更快,操作性能更好,处理结果如图4所示。核心程序为:
connection (Regions, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions,['area','height'], 'and', [458.72,22.48], [15321.1,386.7])
fill_up_shape(SelectedRegions, RegionFillUp,'area', 1, 100)
图4 Blob分析结果图
2.4 字符识别
经过Blob分析算法完成字符的分割,提取出特征之后,即可进行字符的识别。无论是基于统计特征识别还是基于结构特征识别,都需要一个特征数据库或者比对数据库对车牌字符进行比对识别。数据库的内容应当包括所有想要识别的车牌字符字集。目前,车牌识别系统是将提取出的车牌特征丢给分类器,让分类器对其进行分类,告诉你这个特征该识别成哪个文字。分类器的设计方法一般有:模板匹配法、判别函数法、神经网络分类法、基于规则推理法等。在这里,就可以用到Halcon自身所带的强大的OCR分类器。Halcon软件本身提供了很多预训练的OCR分类器, 这些预训练的OCR分类器可以读取各种各样的字体,这也是用Halcon软件作为车牌识别系统核心处理模块的优势所在。首先需要将字符按照相对位置排序,方便识别[4],处理结果如图5所示。核心程序为:
sort_region(SelectedRegions, SortedRegions,'upper_left', 'true', 'column')
read_ocr_class_mlp
(' Industrial_0-9A-Z_Rej.omc', OCRHandle)
do_ocr_multi_class_mlp(SortedRegions,RedInve rt,OCRHandle,Class, Confidence)
图5 按相对位置排序好的字符
2.5 结果输出
对Blob分析之后的图像进行处理,识别车牌字符,包括数字和字母。在这里,尤其需要注意对分类器的分类结果进行优化,因为 OCR的识别准确率是无法达到百分之百的,因此 OCR模块中必须要有除错及更正功能。最终识别结果如图6所示,可以将结果输出为想要的格式保存,也可以将其输出到其他应用程序中。核心程序为:
area_center (SortedRegions, Area, Row, Column)
for i := 0 to 5 by 1
disp_message (3600, Class{i}, 'window', 140,Column[i], 'black', 'true')
endfor
clear_ocr_class_mlp (OCRHandle)
图6 车牌识别结果
3 结语
文章只是对于国内小型汽车牌照进行最简单的编程研究,从而证实 Blob 算法的实用性,以此来说明 HALCON 在车牌图像处理系统中的优势:处理速度快,简单,方便。
由于一些实验条件的限制,对于汽车牌照的识别研究还有很多后期的工作要完成,需要结合现实条件做进一步的完善:(1) 需要多采集车牌牌照样本图像进行测试;(2)需要识别牌照中的第一个汉字字符。