APP下载

基于OpenCV与OCR的车牌识别系统

2021-07-08吴晓华付相祥杨思怡

数码影像时代 2021年7期
关键词:字符识别车牌字符

吴晓华 付相祥 杨思怡

编者按:针对人工检查记录车辆费时费力等问题,文章提出了基于OpenCV与OCR的车牌识别系统。首先采用了图像预处理的方法对图像进行灰度处理以及边缘检测;再通过形态学的开运算闭运算、膨胀腐蚀提高车牌定位的效率;最后利用字符的统一性,用垂直投影区域来对车牌进行分割并识别。

引言

针对越来越多人不遵守交通规则,交通事故不断增加这一现象,单纯通过人工检查记录通过车辆费时费力,因此建立了车牌识别系统。车牌识别系统(LPR)是交通智能系统中的核心技术之一,在停车场、高速公路、城市交通等领域起着重要作用,通过对监控视频图像进行逐帧获取车牌图像后再进行识别。车牌识别系统主要包括了图像输入、车牌定位、文字提取、文字分割以及文字输出。

图像预处理

图像预处理的目的是为了将车辆图像中的一些无关信息处理掉方便后期进行分析。基本步骤分为图像灰度处理、图像滤波、阈值分割、边缘检测五个部分。

图像灰度处理

由于在视频图像获取的过程中,可能受到天气、光线等因素,对车牌图像产生一定的影响,图像的明暗程度不同,会造成二值化阈值设定困难,所以要将图像进行预处理。预处理主要包括了图像去噪、灰度处理以及平滑处理。

彩色图像转换为灰度图像一般采用加权的方法转换,R、G、B的比一般为3:6:1。任何颜色都是由红、绿、蓝三个基本颜色组成,假设原来某点的颜色为RGB(R,G,B),那么,我们可以通过平均值法将其转换为灰度:Gray=(R+G+B)/3

本文通过平均值法求得Gray后,将原来的RGB(R,G,B)中的R,G,B都用Gray替换,形成新的RGB(Gray,Gray,Gray),用它替换掉原来的RGB(R,G,B)就是灰度处理过后的图像。

除了平均值法还有浮点算法、整数方法可以将原始图像转换为灰度图像。代码如下:

carplate_extract_img_gray_blur = cv2.medianBlur(carplate_extract_img_gray,3)

plt.axis(‘off’)

plt.imshow(carplate_extract_img_gray_blur,cmap = ‘gray’);

Sobel边缘检测

边缘检测是指图像周围像素灰度快速变化的像素的集合,它是图像最基本的特征。边缘存在与区域、背景、和图像之间,所以,它成为了图像分割需要依赖的最重要依据。

本文主要采取的是Sobel边缘检测算法,它是一个离散微分算子,结合了微分求导和高斯平滑,主要的作用是对噪声的产生起到了平滑抑制的作用,并且在灰度渐变噪声的图像中也起到了很大的作用,主要用来计算图像亮度函数。除此之外,Sobel的算子有两个,一个是检测水平边缘,另一个是检测垂直边缘。

车牌定位

车牌定位是指把车辆图像中的车牌区域部分提取出来,方便后续对车牌进行分割、识别。车牌定位的原理使用的是统计像素点的方法分割出车牌可能出现的区域,车牌底色进行二值化处理后对其区域进行图像的预处理,包括了灰度处理、平滑处理、降噪处理以及通过形态学的开运算闭运算、膨胀腐蚀[4]进行处理来进一步消除边缘区域的大部分噪声点,从而达到了提高车牌定位效率的目的(见图1、图2)。

粗略定位

在车辆图像中,车牌的边缘区域会出现丰富的特征:①车牌区域为矩形,物体的面积固定一个范围值;②车牌上有固定的字符,呈水平排列;③车牌矩形在长宽比上有固定的范围值,存在一个最大值和最小值。

根据车牌区域的特征信息,对车牌提取的像素边缘检测先做一个初步定位,图3为车牌可能出现的区域范围。

准确定位

在对车牌图像进行粗略定位后,可进一步地进行精确定位。我国车牌的颜色是固定的,包括了:黄色、绿色、蓝色、黑色和白色,在这特征上可以在粗略定位中找到车牌准确的位置。

图像校正

车牌进行了准确定位后,将会得到一个车牌图像,但如果遇到不良的拍摄角度抓取到图像,得到的车牌图像可能存在不是矩形,不利于后续对车牌识别的字符提取和分割识别。主要利用轮廓提取技术、霍夫变换知识和ROI感兴趣区域知识进行图像转正,方便后续的字符识别,图4利用的是感兴趣区域提取。代码如下:

def carplate_extract(image):

carplate_rects

=carplate_haar_casscade.detectMultiScale(image,scaleFactor=1.1,minNeighbors=5)

for x,y,w,h in carplate_rects:

carplate_img = image[y+15:y+h-10,x+15:x+w-20]

return carplate_img

车牌字符分割、识别

字符分割

中国车牌号一共有固定的七位字符,第一位是代表车户口所在的省级行政区;第二位是英文字母代表户口所在的地级行政区的字母代码。车牌编号字符位数是5位,由英文字母和阿拉伯数字组成。

这里将得到的车牌图像区域进行二值化处理后再进行了形态学处理,方便字符识别。本文主要运用的是垂直投影区域来对车牌进行分割识别,根据字符的统一性,可确定车牌的7个字符宽度的阈值范围。

字符识别

整个车牌识别系统中字符识别是最后一步,主要的工作是将分割好的字符图像进行匹配识别转化成文字字符。车牌识别算法一共有三种:(1)支持向量机(SVM),这个方法所涉及的数学知识和原理比较复杂,有一定的难度,所以一般可以直接调用现有的工具箱进行匹配。(2)神经网络,可分为两种:一个是生物神經网络,它是一种模仿动物的神经网络作为特征,进行信息处理的一种算法模型,通过了内部节点的相互连接,达到了处理信息的目的。第二个则是人工神经网络。(3)模块匹配:这是一种比较基础的匹配方法,这个方法的原理是在含有标准字符模板块里进行匹配,这个算法对车牌字符图像要求比较高,需要清晰干净校正的车牌才能够识别。识别效果如图5、图6所示。

OCR文字识别

OCR这个技术主要分为六个步骤:(1)图像采集:捕获和存储图像;(2)预处理:将图像经过预处理产生更好的图像识别效果;(3)分割:将图像内的文字符号进行分割;(4)特征提取:输入的数据具有可识别的基本特征,将每个字符归类;(5)训练神经网络:提取了特征后,就可以将它们提取到神经网络训练识别字符;(6)后处理:进行细化,修正。利用OCR文字识别技术将车牌图像中的文字符号提取出来可以进行复制粘贴,方便人们查询车牌,识别出来的字符串将出现在Pycharm里。

相比于4.2的字符识别,OCR文字识别技术识别出来的文字可自动写入数据库保存数据(如图7所示)。

总结

针对一些交通现象,结合了“OpenCV图像处理和OCR文字识别技术”完成了一个车牌识别系统,这个系统减轻了人工的压力。其中主要包括将图像进行预处理、车牌定位、字符提取识别、文字输出,同时加入了OCR文字识别技术,方便识别后对数据进行保存。经过了大量的实验,证明了此技术具有较高的正确识别率,一些交通的秩序和城市的环境都能够受益,避免一些不必要的事故发生。

参考文献:

[1]袁程,曹爱青.基于自适应卷积神经网络的普通场景车牌识别[J].信息与电脑(理论版),2021,33(02):156-158.

[2]杨人豪,任斌.基于颜色特征和边缘检测的车牌识别算法[J].工业控制计算机,2021,34(04):100-103.

[3]聂文都,蔡锦凡.基于OpenCV与SVM的车牌识别方法[J].计算机与数字工程,2021,49(06):1244-1247,1268.

[4]杨新年,苏畅,高冠福,等.一种车牌检测与识别系统的设计与实现[J].物联网技术,2021,11(04):15-16,19.

[5]张延年,米洪.车牌识别中人工智能技术的应用[J].福建电脑,2021,37(03):65-66.

[6]陶星珍,李康顺,刘玥.基于深度学习模型LeNet-5-L的车牌识别算法[J].计算机测量与控制,2021,29(06):181-187.

[7]刘超,宋丹丹,苗瑾超.基于MATLAB的车牌识别系统设计[J].电脑知识与技术,2019,15(01):198-199.

[8]王阳,李振东,杨观赐.基于深度学习的OCR文字识别在银行业的应用研究[J].计算机应用研究,2020,37(S2):375-379.

本文受到深圳技师学院校级创客基金项目“基于物联网NB-iot的墨水屏项目”支持。

作者简介:吴晓华(2003—),女,广东揭阳,学生,本科在读生,主要研究方向为通信网络应用;付相祥(1999—),男,四川达州,学生,本科在读生,主要研究方向为电子信息工程;杨思怡(2003—),女,廣东揭阳,学生,本科在读生,主要研究方向为通信网络应用;夏清(1978—),女,教师,研究生,高级工程师。研究方向:物联网、人工智能,为本文的通讯作者。

猜你喜欢

字符识别车牌字符
字符代表几
一种USB接口字符液晶控制器设计
数字图像处理技术在车牌识别系统中的应用
消失的殖民村庄和神秘字符
一种改进深度学习网络结构的英文字符识别
基于MATLAB 的车牌识别系统研究
仪表字符识别中的图像处理算法研究
基于CUDA和深度置信网络的手写字符识别
机加工件点阵字符识别研究
“他的车牌是……”