基于QT的车牌识别系统设计与实现毕业论.docx
- 文档编号:27097175
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:32
- 大小:966.25KB
基于QT的车牌识别系统设计与实现毕业论.docx
《基于QT的车牌识别系统设计与实现毕业论.docx》由会员分享,可在线阅读,更多相关《基于QT的车牌识别系统设计与实现毕业论.docx(32页珍藏版)》请在冰豆网上搜索。
基于QT的车牌识别系统设计与实现毕业论
摘要
车牌识别系统作为智能交通系统的重要组成部分,在交通监视和控制中占有很重要的地位,已成为现代交通工程领域中研究的重点和热点之一。
车牌识别技术综合了图形处理、计算机视觉、模式识别的技术以及人工智能等多科学知识,目的在于无需为车辆加装其他特殊装置的情况下对车辆进行自动监控,从而给交通系统的自动化管理提供便捷。
本论文首先阐述了车牌识别系统的发展、现状以及整体构建,然后介绍了Qt平台以及OpenCV跨平台视觉库的发展状况,并对如何在Win7下配置OpenCV的Qt开发环境做出了介绍。
本文重点讨论了图像的定位、字符分割和字符识别的原理与实现,最后对系统进行了整体的测试,并提出进一步开发设想。
关键词
图像定位;字符分割;字符识别;
Abstract
License Plate Recognition System plays an important role in traffic surveillance and control as an important part of the intelligent transportation system, has become the focus and hotspot of research in the field of modern traffic engineering. License Plate Recognition technology combines scientific technologies such as image processing, computer vision, pattern recognition and artificial intelligence, the aim is to automatically control the vehicle without the need to install other special equipments, and thus to provide automated traffic management system convenience.
This thesis describes the development of license plate recognition system, the present situation and the overall build in the first, then introduces the development of Qt platform and cross-platform visual OpenCV library, and makes a presentation of how to configure the OpenCV under Win7 Qt development environment. This article focuses on the principles and implementation of image positioning, character segmentation and character recognition. Finally, this thesis tests the whole system, and proposes ideas of further development.
Keywords
ImagePositioning;CharacterSegmentation;CharacterRecognition;
前言
随着现在经济的发展和城市进程加快,汽车数量迅速增长,交通拥挤,交通事故等问题已经成为世界各国面临的共同难题,每个国家都毫无例外地承受着不断加剧的交通问题的困扰。
全球对交通运输提出了更大更高的要求,智能交通系统是世界各国解决交通拥挤的问题的关键措施,是规范智能交通系统发展的重要手段,其使人、车、路密切地配合,和谐地统一,极大提高交通运输效率、保障交通安全、改善环境质量和提高能源利用率。
汽车车牌识别技术是计算机视觉和模式识别技术在现代智能交通系统中的一项重要研究课题,是实现交通管理智能化的重要环节。
车牌识别系统是以数字图像处理、模式识别、计算机视觉等技术为基础的智能识别系统,它利用每一个汽车都有唯一的车牌号码,通过摄像机所拍摄的车辆图像进行车牌号码识别。
在不影响汽车运行的状态下,计算机自动完成车牌的识别,可降低交通管理工作的复杂程度。
1课题概述
1.1课题研究的意义与背景
近几年来,随着车辆在普通民众生活中的普及,城市交通的压力越来越成为影响人们出行方便的一大障碍,同时越来越重的城市交通压力也使越有的交通管理系统不再满足需求,于是人们利用各种先进的科学技术研制出各种交通道路,车辆的管理系统,逐步发展到如今较为全面的,包括交通管理多个方面的智能交通系统(IntelligentTransportationSystem,ITS)。
而在整个智能交通系统中,车牌识别(LicensePlateRecognition,LPR)更是其中的一项关键所在。
车牌识别技术是融合了图像处理、计算机视觉、模式识别技术和人工智能等多科学知识在内的在交通领域的重要研究课题之一,是实现交通管理能够智能化的重要环节和手段,其任务是分析、处理汽车图像,自动识别车牌号,并进行相关智能化数据库管理。
车牌识别系统可以广泛应用于电子收费、出入控制、公路流量监控、失窃车辆查询和停车场车辆管理等需要车牌认证的场合;特别是在高速公路收费系统中,实现不停车收费提高公路系统的运行效率,车牌识别系统更具有不可替代的作用。
因而从事车牌识别技术的研究具有极其重要的现实意义和巨大的经济价值。
在现代社会,随着计算机技术、通信技术和计算机网络技术的发展,自动化的信息处理能力和水平不断提高,并在人们社会活动和生活的各个领域得到广泛的应用,人们正在逐步进入信息时代。
在此情况下,作为信息来源的自动检测、图像识别技术越来越受到人们的重视。
作为现代社会的主要交通工具之一的汽车,在人们的生产、生活的各个领域得到大量的使用,对它的信息自动采集和管理在交通车辆管理、园区车辆管理、停车场管理等方面有十分重要的意义,成为信息处理技术的一项重要课题。
1.2国内车牌特征与规格
我国机动车辆使用的号牌是按照GA36-2007《中华人民共和国机动车号牌》标准设计,按照标准GA36-2007规定,机动车前面牌照的长度是44cm,宽度是14cm,共有7个字符,车牌上的字符的高度是90mm,宽度是45mm,分隔符“.”的直径是10mm,字符与字符之间、字符与分隔符“.”之间的标准距离是12mm,但是,由于字符的形状是不一样的,有些字符没有占据整个矩形空间的宽度,这就导致车牌上部分字符之间的距离大于12mm。
其中,民用汽车牌照上有省、直辖市、自治区的简称和发证照及监督机关的代号,代号是英文大写字母。
后面是一个五位数的汽车牌号,从00001~99999。
当编号超过10万时,就由A、B、C等英文字母代替。
机动车辆牌照的颜色特征是:
(1)大型民用汽车使用的是黄底黑字车牌
(2)小型民用汽车使用的是蓝底白字车牌
(3)试车和临时牌使用的是白底红字车牌
(4)军队或武警专用汽车使用的是白底红字、黑字车牌
(5)领使馆外籍汽车使用的是黑底白字车牌
我国车牌规格如图1-1所示:
图1-1车牌规格图
我国车牌实例如图1-2所示:
图1-2车牌规格图
1.3国内外研究现状
车牌自动识别技术的研究国外起步地较早。
早在20世纪80年代,便有一些零零散散的图像处理方法用于车牌自动识别的某些具体应用。
在这个阶段,车牌自动识别技术的研究还没有形成完整的系统体系,一般采用简单的图像处理方法来解决某些具体问题,并且最终结果通常需要人工干预。
进入20世纪90年代后,车牌自动识别的系统化研究开始起步。
典型的如A.S.Johnson等提出车辆牌照的自动识别系统分图像分割(Image Segment)、特征提取(Feature Extraction)和模板构造(Template Formation)、字符识别(CharacterRecognition)等三个部分,完成车牌的自动识别。
R.A.Lotufo使用视觉字符识别技术(Optical Character Recognition Technology)分析所获得的图像,首先在二值化图像中找到车牌,然后用边界跟踪技术提取字符特征,再利用统计最邻近分类器(Statistical Nearest Neighbor Classifying System)与字符库中的字符比较,得出一个或几个车牌候选号码,再对这些号码进行核实检查,确定是否为该车牌号码,最终确定车牌号码。
这个时期的应用在识别正确率方面有所突破,但还没有考虑识别实时性的要求,识别速度有待进一步提高。
由于我国的车牌格式和国外有较大的差异,所以对于国外的车牌识别系统的研究技术,我们只能进行参考,不能进行直接应用。
虽然我国车牌的识别需要识别汉字,但是对于英文字母和数字的识别,我们可以借鉴国外的研究技术。
从80年代中期开始,ARGUS英国Alphatech公司就开始了名为RAUS的车牌自动识别系统的研制。
ARGUS的车牌识别系统的识别时间约为100毫秒,通过ARGUS的车速可高达每小时100英里。
还有Hi-Tech公司的See/Car system,新加坡Optasia公司的VLPRS等。
另外日本、加拿大、德国等发达国家都有适用于本国的车牌识别系统。
国内在90年代也开始了自己的车牌识别系统的研究。
目前比较成熟的产品有中科院自动化研究所汉王公司的汉王眼,香港亚洲视觉科技有限公司的慧光车牌号码识别系统等等。
另外西安交通大学的图像处理和识别实验室、上海交通大学的计算机科学和工程系、清华大学人工智能国家重点实验室、浙江大学自动化系等都做过类似的研究。
虽然这些车牌识别系统的识别率大多都比较高,如95%,甚至97%、98%,但是这些车牌识别系统的识别检测结果大多数是在简单受限制的场景下取得的,在实际的交通场合以及更加复杂的背景环境的情况下,这些车牌识别系统的识别率一般都达不到90%,甚至更低。
1.4车牌识别系统的简述
指能够检测到受监控路面的车辆并自动提取车辆牌照信息(含汉字字符、英文字母、阿拉伯数字及号牌颜色)进行处理的技术。
车牌识别是现代智能交通系统中的重要组成部分之一,应用十分广泛。
它以数字图像处理、模式识别、计算机视觉等技术为基础,对摄像机所拍摄的车辆图像或者视频序列进行分析,得到每一辆汽车唯一的车牌号码,从而完成识别过程。
1.5课题主要研究的内容
通过识别静态的含有车牌的图片,完成车牌数字自动识别的功能。
功能中主要包括图像预处理、车牌定位、字符分割、字符识别等过程。
利用模板匹配的方法实现自动识别数字字符的功能。
主要研究内容如下:
(1)图像预处理的研究。
对图像进行灰度化,二值化以及边缘化处理。
(2)车牌定位的研究。
车牌定位采用水平和垂直直方图统计的方法,将车牌从图像中定位出来。
(3)字符分割的研究。
先对定位好的车牌进行预处理,根据垂直方向的直方图统计方法,定位出字符的左右边界,按左右边界将字符切割出来;再根据切割出的字符定位上下界。
(4)字符识别的研究。
对切割出来的字符进行细化、去噪处理,再对其进行特征提取,模板也做相应操作。
利用待识别字符和模板的特征进行模板匹配,从而识别出字符。
图1-3处理流程图
2系统的分析设计与实现
2.1系统图像处理技术概述
汽车车牌作为车辆的唯一标识,其特征也就成为车牌识别的重要参考依据。
因为车牌图像都是在室外拍摄的,所以不可避免地会受到光照、气候等因素的影响,而且拍摄者的手部抖动与车辆的移动会造成图像的模糊。
要去除这些干扰就得先对车牌图像进行预处理。
由于当前数码相机的像素较高,原始图像的数据一般比较大,输入的彩色图像包含大量颜色信息,会占用较多的存储空间,且处理时也会降低系统的执行速度。
因此对图像进行识别等处理时,常将彩色图像转换为灰度图像,以加快处理速度。
对图像进行灰度化处理后常用的方法是图像二值化、去除背景图像、增强处理、边缘检测、滤波等处理等。
(1)图像灰度化
拍摄到的彩色车辆图像包含大量的颜色信息,不仅仅在存储上严重占用资源,并且在运算处理上也会大大降低系统工作效率,所以在对图像进行识别中首先要做的就是将彩色图像转变为灰度图像,RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值由于灰度图像每个像素只需一个字节存放灰度值,从而降低存储资源的占用,提高系统的运算效率。
灰度化处理方法主要有以下三种:
最大值法:
使R,G,B的值等于三值中最大的一个
R=G=B=max(R,G,B)
平均值法:
求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。
R=G=B=(R+G+B)/3
加权值法:
根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应,以这个亮度值表达图像的灰度值。
Y=0.3R+0.59G+0.11B
(2)图像边缘化检测
不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以更加准确得检测到车牌轮廓从而对车牌进行定位,本系统采用Canny算子实现,Canny算子是一个具有滤波,增强,检测的多阶段的优化算子,在进行处理前,Canny算子先利用高斯平滑滤波器来平滑图像以除去噪声,Canny分割算法采用一阶偏导的有限差分来计算梯度幅值和方向,在处理过程中,Canny算子还将经过一个非极大值抑制的过程,最后Canny算子还采用两个阈值来连接边缘。
Canny边缘检测算法:
用高斯滤波器平滑图象;
用一阶偏导的有限差分来计算梯度的幅值和方向;
对梯度幅值进行非极大值抑制;
用双阈值算法检测和连接边缘。
(3)图像的二值化
为了进一步使图像变得简单,减小容量,更加明显地显示出车牌的轮廓,就需要对原先灰度化的图像进行二值化处理,二值化就是将图像上的点的灰度设置为0或255,使整个图像呈现出黑白效果,即将图像上的将256个亮度等级的灰度图像通过适当的阀值选取而获得可以反映图像整体和局部特征的二值化图像。
为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。
所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。
如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。
如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。
动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。
在二值化过程中,阀值的选取是最为重要的问题,本系统运用的是全局阀值法Ostu。
Otsu法即最大类间方差法,该方法由Otsu于1979年提出,所以又称Otsu二值化方法,是一种经典的全局阈值法。
这种二值化阈值选取算法比较简单,所以得到广泛的应用。
Otsu方法的基本思想是对像素进行划分,使划分得到的各类之间的距离达到最大来确定最合适的阈值。
该方法对于目标和背景明显分离、直方图分布呈双峰的图像效果良好,适用于车牌识别系统中的图像预处理。
2.2系统的流程图
该流程图为系统流程图,主要是描述系统整个运行过程,包括系统的主要模块,这样用户就能够通过流程图查看系统的执行过程,对系统也能够进一步的了解。
图2-1系统流程图
3系统的软件设计
2
3.1Qt平台的介绍
Qt是一个跨平台C++图形用户界面应用程序开发框架。
它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。
Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(MetaObjectCompiler,moc))以及一些宏,易于扩展,允许组件编程。
本系统是在Qtcreator下进行开发的,QtCreator包括项目生成向导、高级的C++代码编辑器、浏览文件及类的工具、集成了QtDesigner、QtAssistant、QtLinguist、图形化的GDB调试前端,集成qmake构建工具等。
3.2OpenCV的介绍
系统采用的是OpenCV视觉库,OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上。
它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV主要分为四大模块,如图3-1所示。
OpenCV的CV模块包含基本的图像处理函数和高级的计算机视觉算法。
ML是机器学习库,包含一些基于统计和聚类工具。
HighGUI包含图像和视频输入/输出的函数。
CXCore包含OpenCV的一些基本数据结构和相关函数。
图3-1系统流程图
3.3配置OpenCV的Qt开发环境
(1)安装好Qtcreator、OpenCV以及CMaker(默认安装C盘);
(2)将C:
\Qt\Qt5.0.1\Tools\MinGW\bin加入系统的Path环境变量;
(3)使用CMaker编译OpenCV并生成makefile文件;
(4)打开cmd,进入目标路径(C:
\OpenCV),输入mingw32-make命令开始编译。
(5)拷贝OpenCV-2.4.4安装目录下的build/include目录,MinGW编译后的bin目录以及CMake目标路径下,MinGW编译后的lib目录到同一目录,并将bin目录添加到系统环境变量path中;
(6)打开QtCreator,新建一个空工程,然后添加一个cpp文件,任意命名,在pro文件中添加如下OpenCV的依赖文件
INCLUDEPATH+=C:
\OpenCV\include\opencv\
C:
\OpenCV\include\opencv2\
C:
\OpenCV\include
LIBS+=C:
\OpenCV\lib\libopencv_calib3d244.dll.a\
C:
\OpenCV\lib\libopencv_contrib244.dll.a\
C:
\OpenCV\lib\libopencv_core244.dll.a\
C:
\OpenCV\lib\libopencv_features2d244.dll.a\
C:
\OpenCV\lib\libopencv_flann244.dll.a\
C:
\OpenCV\lib\libopencv_gpu244.dll.a\
C:
\OpenCV\lib\libopencv_highgui244.dll.a\
C:
\OpenCV\lib\libopencv_imgproc244.dll.a\
C:
\OpenCV\lib\libopencv_legacy244.dll.a\
C:
\OpenCV\lib\libopencv_ml244.dll.a\
C:
\OpenCV\lib\libopencv_objdetect244.dll.a\
C:
\OpenCV\lib\libopencv_video244.dll.a
3.4车牌识别系统的功能模块划分和实现
3.4.1图片读取模块
读取用户选择含有车牌信息图片(*.jpg*.bmp*.gif*.png)的磁盘路径,根据路径载入图片,并将读取出来的图片提供给后续模块。
3.4.2图片灰度化模块
通过获取像素GBG,使用cvCvtColor函数加权值法将图像进行灰度化处理,然后将绘制的灰度化图片用cvSmooth函数通过高斯滤波(CV_GAUSSIAN)进行去噪,平滑处理。
并将绘制后的图片提供给后续模块。
图3-2图像原图
图3-3灰度化图片
图3-4平滑处理图片
3.4.3图片二值化模块
使用cvThreshold函数的Otsu算法将原图分成前景,背景两个图像,通过衡量背景与前景的差别值,运用最大类间方差选取最佳阀值对图像进行二值化处理,并将绘制好图片传给下一模块。
图3-5二值化处理图片
3.4.4车牌定位模块
首先对二值化后的图像进行行扫描和列扫描,从而得到车牌区域。
接下来找出每行的非零像素值的个数统计出来存储在数组中,最后通过投影统计出所有的图像像素,并保存投影数值和最大的。
对保存的数值判断,如果满足要求这样就找出了车牌上水平线,同样的方法找出下水平线。
车牌左右边界寻找方法跟上段叙述的上下水平线方法相似,变成纵向扫描统计像素个数,然后进一步确定。
在此过程中统计列非零像素并找出最大连续统计,这值是车牌左边界,区域右边界同理可得。
然后使用OpenCV的功能函数在此区域设置感兴趣的块,最后截取出车牌区域。
图3-6车牌定位图片
3.4.5字符分割模块
首先要对车牌字符进行定位,因为在车牌里第二个字符和第三个字符中间会有一个白色的小点,在切割过程中会对识别造成干扰,所以首先要对车牌进行第一次垂直投影,定位在第二个字符和第三个字符中间,确定第二个字符的边界位置和第三个字符的起点位置,这样就可以将车牌分成两个部分,然后再次进行垂直投影通过阀值来确定分割的大小和位置。
分割完成后,再对分割的图片进行角点处理,点角集中了图像上的重要形状信息,能够是提高图片特征和边缘化程度,从而提高字符识别的精度和准确度,处理完成后绘制好分割的图像,传给下一模块。
图3-7车牌分割图片
3.4.6字符识别模块
本系统使用KNN算法实现字符识别,KNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。
KNN算法实现步骤:
(1)初始化距离为最大值;
(2)计算位置样本和每个训练样本的距离dist;
(3)得到目前K个最临近样本中的最大距离maxdist;
(4)如果dist小于maxdist,则将该训练样本作为K最近邻样本;
(5)重复上述3个步骤,直到未知样本和所有训练样本的距离都算完;
(6)统计K个最邻近样本中每个类别出现的次数;
(7)选择出频率最大的类别作为未知样本的类别。
4系统测试
(1)训练样本
图4-1训练样本
图4-2训练样本
图4-3训练样本
(2)开启界面
图4-4开启界面
(3)程序主界面
图4-5程序主界面
(4)图片选取
图4-6图片选取
(5)图像识别
图4-7图像识别
5系统结果分析与展望
通过几个月的学习与实践,顺利完成了毕业设计,在刚开始接触到这个题目的时候脑海中并没有具体思路,车牌识别系统涉及到了非常多的图像方面有关的专业知识,这些都是我在之前并未接触过的,很多专业知识我必须从头开始一步步的去
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 QT 车牌 识别 系统 设计 实现 毕业
![提示](https://static.bdocx.com/images/bang_tan.gif)