车牌自动识别 Automatic Number Plate Recognition(ANPR)-----第一话:原理介绍

来源:互联网 发布:淘宝店铺的钱在哪里看 编辑:程序博客网 时间:2024/05/19 06:48

近期学习了《实用计算机视觉项目解析》中第五章的ANPR,在这里做出一个总结,温故而知新。

电子版书下载地址http://download.csdn.NET/detail/muyuxingguang/8737107

项目代码下载地址:http://download.csdn.net/detail/niehanmin/8808741


本文按照原书上介绍顺序 分别介绍图像分割特征提取模式识别三个步骤。其中模式识别部分需要用到两个重要的算法:SVM 和 ANN,将逐一介绍。


图像分割:这一部分是重要步骤,图像分割的目的是提取车牌部分图像块。那么在一幅图像中如何提取属于车牌的部分或者说如何定义车牌部分的特点,将会需要一系列分析和相关算法的运用。(PS:这一部分在整个程序中占有很大一部分比例,之所以如此是因为这是建立现实世界与计算机技术之间必要的桥梁,往往在技术中这是基础点也是难点,做计算机视觉处理的工作免不了这一块;相反,特征提取和模式识别虽然在内容上占比例很大,但是程序并不是很多,原因是已经有相应库可以调用,可以偷懒不是?当然有心了解下相关底层算法自然再好不过。~~~扯远了,咱们继续~~~)


本章使用的数据是西班牙车牌,尺寸是520mm*110mm.两组字符间隔41mm,每个字符间距14mm。字符大小45mm*77mm。(介绍尺寸是为了在后续过程中验证所得到的车牌和字符的可靠性,会有一个verify的过程)。如果考虑中国车牌就要考虑一个中文的识别,相对而言比英文字符稍难。


注意观察车牌的特征,因为我们要提取车牌部分。注意到车牌上有很多字符,而且这些字符狭长,因此存在很多竖直边,也就是说有一个区域存在很多竖直边,这个区域很可能就是车牌部分。因此这里我们用sobel滤波器寻找水平导数,sobel操作之前的预处理包括图像灰度化以及去噪

sobel后的图像:


可以看到轮廓已经出来但是不明显,可以进一步二值化。原项目中是用的Ostu算法得到最优阈值。

二值化结果:


通过闭形态学算子,删除每个竖直边之间的空白区域,并连接大量边的所有区域。


如图可以看到,车牌区域被连接起来形成一个矩形块,通过对图中矩形框的检测就可能得到包含车牌的块。但是图中仍然有很多非车牌区域矩形块,先对矩形块进行分离,可以用findContours()函数。对每个提取的小矩形块进行之前所说的根据尺寸verify。


原项目中还采用了车牌背景为白色做出改进,采用了漫水填充算法获取旋转矩形。在分割完所有部分后,需要决定每部分是否为车牌,这里用到了SVM,开始分类之前,需要训练分类器,通过很多组车牌/非车牌区域数据训练。这里可以通过后续的代码展示。


获得车牌后还需要对车牌上的字符进行识别,这里采用的是OCR字符识别技术,OCR会进行特征提取以及分类,分类会用到ANN,具体OCR识别技术可以查找相关博文。

检测结果展示:


~~未完待续~~

1 0
原创粉丝点击