开车的朋友都知道,我们无论去停车场还是上下高速,只要有摄像头和栏杆的地方,基本上都需要识别你的车牌号。我们普通人无需去了解车牌的识别过程,但还是有很多网友想了解自己的车牌是如何被识别的。
车牌识别及收费系统
在讲述车牌识别过程之前,笔者要先说一下高速路口的ETC是一套依赖RFID技术的电子识别装置。这种识别技术,是通过射频技术,去识别贴在汽车前挡风或者其他便于RFID读写端识别的位置上的电子标签来识别和收费的。因此ETC和车牌识别系统是两套系统,因为车牌识别系统不承担充值和消费功能,因此ETC就应运而生。
ETC电子车牌、缴费系统
这其中还有另外一个原因,就是车速较高时,车牌识别系统的摄像头拍到的照片会模糊影响识别。而如果安装高速摄像头(每秒可以拍摄的图片帧数远远大于24帧),这个成本会很高,不利于普及。
下面我们介绍一下车牌识别系统的工作过程,讲述过程中我们尽量不使用专业术语,以求让大家能够更容易理解。
1、车辆识别
在拍照之前,当然是要识别车辆确实是进入了摄像头的最佳焦距位置了,车牌识别系统才会采集车辆的图像。所以,识别车辆就是车牌识别的第一步。那么,如何识别车辆呢?
有很多办法,其中红外法是最常用的办法。因为摄像头和系统是被动采集数据的,所以它不知道什么时候该拍照。当车辆进入拍摄区域,红外射线会被车辆遮挡,这个时候摄像头和系统联动,就会拍下车辆的照片,以供后续车牌识别之用。当然了,这种简单的红外探测是否有车辆进入,人或者其他物体遮挡了红外线,也会诱发拍照。
带红外探测的摄像头
好在,为了检测到底是车辆进入范围还是其他异物进入,红外设备会按照车的宽度来设置,多个红外射线被遮挡,宽度与车辆吻合,才会诱发拍照。
第二种办法就是软件识别,摄像头不停地拍照,交给系统去判断。原理很简单,因为没有车辆时,拍的照片是固定的。撑死了也就白天一幅图、晚上一幅图、下雨一幅图、阴天一幅图等。有了基础地图,就可以区分是否有车辆进入地图了。
有人说这样的容错率也太低了,很容易出错。是的,这的确容易出错,所以软件端做了进一步的技术深入:车辆轮廓识别。车辆轮廓识别与车牌识别的轮廓识别原理是一样的,可以参考下面车牌轮廓识别部分。
2、拍照
对进入有效焦距范围的车辆拍摄照片,这一步很容易理解。车牌识别系统的软件端会根据车辆进入的视频来截取图片,或者直接拍摄图片。获取照片后,提供给识别系统备用。
3、图片初级处理——灰度化、二值化
大家都知道,灰色是介于白色和黑色之间的颜色,而且这个灰色深浅不一样,所以白色和黑色之间的灰色就有很多。这颜色一多,计算机就眼花缭乱了。所以呢,干脆把图片二值化。啥叫二值化呢?就是让图片只有黑色和白色,就是只有两个颜色值,顾名思义把图片搞成黑白二色的过程就是二值化。再形象地比喻一下,就是熊猫化!在计算机RGB颜色空间内,白色就是255,黑色就是0,其他颜色就是在这0-255之间了。
灰度化和二值化后的车辆图片
有人问了,红色是搞成白色还是黑色?黄色搞成白色还是黑色?您别问了,在二值化过程中,会对图片中每一个像素点进行判断,根据设定的值,例如160.大于160的全部白色,小于160的全部黑色。
4、图片降噪
什么叫降噪呢,就好比是你在说话,旁边一电锯一直在吱吱呀呀地响。这时候,你跟邻居说话,就要注意区分是电锯噪音还是邻居说的话了。
二值化图片降噪
同样的道理,图片二值化后,照片里可能红橙黄绿蓝靛紫七色俱全啊,这你一二值化,颜色深浅不一样的自然就会出现黑白斑斑点点的。所以,我们就要根据这些斑点的颜色偏差以及数量来决定是不是给它们反色一下。也就是白变黑,黑变白。
5、图形检索,定位车牌
图片处理到这一步,重点来了——车牌检索。动脑筋的朋友可能已经意识到了,车牌是规则的长方形,我们只要找二值化后图片里的长方形就好了。问题来了,你找长方形,问题是有些车辆的撒热窗就是长方形。爱动脑筋的小伙伴已经注意到了,车牌的长宽比与车身其他位置的形状长宽比不同。
掌握了上面的基本常识,那么我们距离找到车牌就更近了。计算机扫描整个二值化的图片,由左到右,由上到下,把颜色从黑到白或者由白到黑的像素全部记录下来。然后根据这些像素来计算哪个区域是长方形,并且符合车牌的比例。
从原图截取车牌
如何判断是不是车牌呢?很简单,对该区域再来一波扫描。因为是二值化图片,如果有车牌号,那就一定会有黑白变化,尤其是纵向方向。这样我们就缩小了范围,就能够很快找到车牌。
6、车牌字符切割
在上一步中,我们成功找到了车牌,并把它从原图(不是二值化的图)截取出来了。对截取的车牌图片进行上一步的灰度化、二值化、降噪处理,尤其是边缘降噪。如果降噪后,干扰的噪声还是比较大,可以采取腐蚀、膨胀算法来模糊噪声。
如果降噪后的车牌图片有倾斜现象,就需要对图片做错切变换(就是倾斜角度调整)。我们知道,有些车牌是上下结构的,这很容易通过对二值化的图片做像素扫描来检测上下两部分是否中间不粘连,如果不粘连,那就是上下结构车牌。如果不是上下结构,那就是单行结构的新车牌。
二值化后的车牌(省别模糊处理了)
接下来,我们根据扫描到的二值化的车牌根据每一个字符的宽度做纵向的切割。这很容易理解,因为车牌图像已二值化,所以车牌字符要么是白色字黑底,要么黑色字白底,很容易得到字符的高度和宽度。切割就是以此为依据,把车牌的所有字符都切割成单个字符。
车牌字符切割后,调整为与车牌字符模板库大小近似且宽度小于模板库字符大小的图片。
7、准备好车牌字符模板库
车牌字符模板库可以事先用PS或者其他软件AI、CorlDraw等制作好,网络上有车牌字体下载。
车牌字符库
也可以通过不断拍照车辆获取,这个过程就是机器学习的过程。目的就是获得车牌省别、军、警、学、使领馆等的汉字,26个英文大写字母,和0-9的10个数字。
8、车牌文字识别
接下来,将被切割的图片存入一个数组A内,将模板库的图片存入一个数组B。将两列数组逐个比对,找出相似度最高的模板图片,并把它们记录在一个新的数组C内。当然,我们有意地过滤了车牌中的圆点。
切割后的图片
最后,我们把获得的数组C做遍历,以最终获得车牌。笔者为了隐私考虑,故意模糊了切割后图片的文字和数字。得到的切割图片,就可以拿到车牌字符库做比对筛选了。根据筛选结果,就把你的车牌识别出来了。
如果您觉得这篇文章对您有用,请赞赏本篇文章!小编将更加努力为大家呈现更有价值的文章!