基于OpenCV的车牌识别在车位锁上的应用
2020-03-03陈征汪琳霞
陈征 汪琳霞
摘 要:在提倡发展智能交通系统的背景下,提出了使用共享车位的方法来解决停车过程中遇到的问题,这样就有了共享车位锁的诞生,然而现在的共享车位锁的性能和智能程度不是很高,所以本设计研究的目的就是要通过将基于OpenCV的车牌识别技术应用到共享车位锁上来提高车位锁的性能和智能程度。本设计使用Linux内核的嵌入式处理器作为采集和处理终端,利用适用Linux系统的V4L2框架来驱动摄像头采集图像,利用OpenCV开源库来做图像处理,利用字符模板匹配法来识别字符,利用识别返回的结果控制反馈模块进行反馈。经测试表明:识别车牌时可以较好的识别出字母和数字,汉字的识别还要优化,主要是字符模板匹配法的识别算法还要优化,数据采集和图像处理较稳定。
关键词:智能交通 共享车位 车牌识别
Application of License Plate Recognition Based on OpenCV in Parking Lock
Chen Zheng,Wang Linxia
Abstract:In the context of advocating the development of intelligent transportation systems, a method of using shared parking spaces was proposed to solve the problems encountered in the parking process, which led to the birth of shared parking locks, but the performance and intelligence of current shared parking locks is not very high. The purpose of this design research is to improve the performance and intelligence of parking locks by applying open CV-based license plate recognition technology to shared parking locks. This design makes full use of the embedded processor of the Linux kernel as the collection and processing terminal, which means the V4L2 framework of the Linux system to drive the camera to collect images, the open CV open source library for image processing, the character template matching method to identify characters, and the result of the control feedback module for feedback are adopted to. Tests show that letters and numbers can be better recognized when recognizing license plates. And the recognition of Chinese characters needs to be optimized, the recognition algorithm of the character template matching method should be optimized, and the data collection and image processing are more stable.
Key words:intelligent transportation, shared parking spaces, license plate recognition
1 研究背景简介
国内外的现状和发展趋势:
随着经济的不断发展,交通運输的需求不断增加,造成了全球汽车总量在短时间内呈指数上升的形势,导致世界各国都受到交通拥堵的困扰。在这种情况下,智能交通系统ITS(Intelligent Transportation Systems)应运而生。同时在国内外资源的利用方面,提出了共享经济的理念。共享车位锁就是在共享经济的理念下针对改善停车状况而产生的产品,这一产品在国内还是处在研究发展阶段,大多数的共享车位锁是通过识别二维码或者扫描车位锁上的二维码来实现开锁的,对于将车牌识别技术应用于共享车位锁上来实现更加智能地控制车位锁的研究还目前还没有。
目前,中国智慧停车行业整体格局相对分散,主要以智能停车设备商、智能停车解决方案提供商、互联网停车企业为主,在经过笔者的调研以后,发现很多的商场、医院等公共区域的停车位非常紧张,这给人们出行带来极大的不便,人们在出行的时候会因为停车难的问题选择公共交通甚至不出行,这样的现状会在以后变得越发突出。
2 研究意义
本课题通过对车位停车的充分调研,在车位共享方面使用互联网相关技术解决以下问题:(1)公共停车位紧缺而私人停车位大量空闲两个现象并存的问题;(2)改善违章停车问题;(3)地下车库扫码停车遇到的网络信号差、无法扫码等问题。现在的车位锁的性能和智能程度不是很高,所以本设计研究的意义就是通过将车牌识别技术应用到车位锁上来提高车位锁的性能和智能程度。
3 车牌识别在车位锁上的应用现状和发展
目前,将车牌识别应用在车位锁上的非常少,常见的都是在小区或者商场的停车场门口设置一个栏杆,识别到正确车牌后,栏杆升起,放车辆通行。还有一种就是扫码的车位锁,这种智能车位锁是开放式停车场场地车辆收费的专用设备,它可与道闸控制系统等配套使用,也可单独使用实现临时停车无人值守自助扫码缴费、预约车位停车等功能。
4 软硬件及框架设计
4.1 软件平台开发环境选取
软件平台选择Linux平台,效果稳定后后移植到ARM平台上,通过OpenCV和ARM交叉编译的OpenCV库来保证移植后的稳定性。
4.2 硬件需求
本设计选择了一块搭载了Cortex-A53内核的处理器。图像采集模块选择性能較好的USB高清摄像头。模拟的升降车位锁模块反应灵敏的继电器。
4.3 框架设计
本系统主要是由三个模块组成,分别是图像采集模块、图像识别和处理模块、结果模拟与反馈模块。其中图像采集模块是采集图像并保存图像为特定格式的图片作为下一个模块的输入,然后是图像识别和处理模块,处理图像并返回识别结果或错误,最后是结果的反馈,当识别出车牌后,识别的结果要与事先存在开发板里的车牌数据匹配从而得到车牌识别的结果。
5 图像识别与处理程序设计
本设计的图像识别与处理程序设计,主要有六个步骤,其中第一个步骤是图像的预处理,预处理包含两步,分别是载入图像和灰度化处理,处理完之后要进行第二个步骤,是将灰度化的图像二值化处理,然后第三步,进行边缘检测。第四步是将字符分割出来得到单个字符的图片,第五步是将得到的单个字符图片和字符模板匹配识别出字符,第六步返回结果。
6 图像预处理
6.1 图像载入
图像的预处理,一般包含图像的载入和图像的灰度化处理。
在OpenCV中,有可以给广大开发者直接调用的接口,用来载入图像,但是在即使知道是很简单的接口调用,也需要了解其中的原理,首先,要了解图像的本质是什么,图像是由一个一个的像素点组成的,对图像的操作,也是基于像素点的基础上来操作的,所以还要了解像素点的特点,像素点一般都至少有三个分量,叫做RGB分量。在载入图像的时候,要将该图像的每一个像素点的分量的值保存起来。
6.2 灰度化处理
图像的灰度化处理可以在图像载入之后立即处理,对于一些图片识别来说,使用灰度图来识别会比用彩色图来的容易,识别效果也更为准确,这也是为什么要将图片灰度化处理的一部分原因,在进行灰度化的处理的时候,本设计用OpenCV里的接口imread来处理,通过给imread函数的第二个参数给CV_LOAD_IMAGE_GRAYSCALE值来将载入的图像直接灰度化,这样就可以获得一张灰度化后的图片,一样可以用mat类定义的对象保存起来,方便后续对灰度图的处理。
在图像预处理之后,就要对灰度化后的图像进行二值化处理,二值化指的是将图像的灰度值变成0或者255,也就是要把图像变成黑和白两种颜色,这样就可以显现出很强的对比,没有中间过渡的颜色,这样的话有一些特征就容易被凸显出来,当然,在某些极端情况下,也会导致特征的丢失,本设计识别的车牌是需要提取一些特征的,所以需要用到二值化,让车牌的特征信息更加的明显。
6.3 二值化
6.3.1 OTSU二值化
OTSU二值化方法,这是一种自动计算阈值的二值化算法,由于发明的人叫Nobuyuki Otsu,所以被命名为OTSU二值化,这种方法是通过统计学的方法来计算阈值,步骤如下:
(1)初始化统计的参数,灰度级的确立。(2)统计灰度级中每个像素在整幅图中的个数。(3)计算每个灰度级占图形中的概率分布。(4)遍历灰度级[0,255],计算出最大类间方差下的阈值。(5)分别计算各类的平均灰度。(6)依次找到最大类间方差下的阈值。
6.3.2 threshold二值化
threshold二值化方法,这是不同于OTSU二值化用统计学的方法,它只是通过不同的5种阈值初始化来找到想要的阈值,在本设计中初始化阈值参数的时候,将阈值参数初始化为130左右,初始化阈值的二值化处理类型选择了二进制阈值,对应的值为0,还有其他四种类型,分别为:反二进制阈值,对应的值为1;截断阈值,对应的值为2;0阈值,对应的值为3;反0阈值,对应的值为4;调用threshold方法为threshold( srcGray, desImage, thres, maxVal, threshTpye);thres参数是指阈值参数初始化的值,本设计测试多次之后,给thres的值是130,maxVal一般是设置成255,threshType是二值化处理类型的参数,给的0,意思是二进制阈值。
6.4 边缘检测
边缘检测主要是检测车牌的边缘,常见的边缘检测方法有差分边缘检测,拉普拉斯边缘检测等。
本设计中检测出来的车牌要符合预设的宽高比,这样后面进行字符分割的时候才能准确一些,同时边缘检测后提取出来的车牌也要越清晰越好,所以使用差分边缘检测和拉普拉斯边缘检测会比较好。
差分边缘检测主要是要计算两种边缘,分别是水平边缘和垂直边缘,这样叠加出来的边缘才会更加清晰,而拉普拉斯边缘检测则类似于锐化的原理,对于边界点更加敏感,主要目的是突出图像的细节或者增强模糊图形的细节,可实现灰度反差增强,同时使图像更加清晰,对于图像中灰度变化剧烈的区域,拉普拉斯边缘检测法可以使他们变得更加对比强烈,而OpenCV中已经把拉普拉斯边缘检测的接口做好了,可以直接调用Laplacian()函数来突出图像的边缘。
6.5 字符分割
在做字符分割之前,要确定好很多的初始数值或数值区间,以确保分割出来的字符是想要的效果,比如一个字符它的长度大概占多少个像素点,宽大概要占多少像素点,这些都是要考虑的。主要要考虑到的有:
在将要确定的值都用宏定义确定之后,就可以开始做字符分割的步骤了,首先需要进行宽高比例检测,再进行面积比例检测,最后才是分割字符。
6.6 识别结果返回
在分割出每一个字符之后,本设计的识别方法是把该字符和车牌的字符模板特征值来匹配识别,然后返回结果。比如0字符的字符模板特征值是{16,19,10,12,10,10,15,18,110,3,2,2,3,3,3},而相对应的汉字也有对应的字符模板特征值,如字符“湘”对应的字符模板特征值是{19,27,20,34,19,36,24,37,216,4,4,7,13,28,3},匹配之后返回识别结果。
7 结语
在这里要感谢一下我的导师汪琳霞老师督促我完成这个研究,对我帮助良多,虽然目前这个研究还不够完善,但是只要我们一步一个脚印的走下去就可以得到我们想要的结果,共勉!
基金项目:湖南省大学生研究性学习和创新性实验计划项目《车牌识别技术在共享车位锁上的应用研究与实现》项目编号:2018XJXZ113。
参考文献:
[1]曾瑞韬.基于RFID智能停车位管理系统开发[D].南京:东南大学,2016.
[2]李彬.嵌入式车牌识别系统的设计与实现[D].西安:西安工业大学,2013.
[3]庄鑫博.BP神经网络_OpenCV_QT_车牌识别[D].成都:成都信息工程学院,2014.