基于qt的车牌识别系统设计与实现毕业论文(编辑修改稿)内容摘要:

图像处理 和计算机视觉方面的很多通用算法。 OpenCV主要分为四大模块,如图 31 所示。 OpenCV的 CV模块包含基本的图像处理函数和高级的计算机视觉算法。 ML 是机器学习库,包含一些基于统计和聚类工具。 HighGUI 包含图像和视频输入 /输出的函数。 CXCore 包含 OpenCV 的一些基本数据结构和相关函数。 图 31 系统流程图 配置 OpenCV 的 Qt 开发环境 (1)安装好 Qtcreator、 OpenCV以及 CMaker(默认安装 C 盘); (2)将 C:\Qt\\Tools\MinGW\bin 加入系统的 Path 环境变量; (3)使用 CMaker 编译 OpenCV并生成 makefile 文件; (4)打开 cmd,进入目标路径( C: \OpenCV) , 输入 mingw32make 命令开始编译。 (5)拷贝 安装目录下的 build/include 目录 , MinGW 编译后的 bin 目录 以及 CMake 目标路径下, MinGW 编译后的 lib 目录 到同一目录,并将 bin 目录添加到系统环境变量 path 中; (6)打开 Qt Creator,新建一个空工程,然后添加一个 cpp 文件,任意命名 , 在 pro 文件中添加如下OpenCV的依赖文件 INCLUDEPATH+=C:\OpenCV\include\opencv\ C:\OpenCV\include\opencv2\ C:\OpenCV\include LIBS+= C:\OpenCV\lib\\ CV 图像处理和视觉算法 MLL 统计分类器 HighGUI GUI 图像和视频输入 /输出 CXCORE 基本结构算法, XML 支持,绘图函数 7 C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\ 车牌识别系统的功能模块划分和实现 图片读取模块 读取用户选择含有车牌信息图片 (*.jpg *.bmp *.gif *.png) 的磁盘路径,根据路径载入图片,并将读取出来的图片提供给后续模块。 图片灰度化模块 通过获取像素 GBG,使用 cvCvtColor 函数 加权值法将图像进行灰度化处理,然后将绘制的灰度化图片用 cvSmooth 函数通过 高斯滤波( CV_GAUSSIAN)进行去噪,平滑处理。 并将绘制后的图片提供给后续模块。 图 32 图像原图 8 图 33 灰度化图片 图 34 平滑处理图片 图片二值化模块 使用 cvThreshold 函数的 Otsu 算法将原图分成前景,背景两个图像,通过衡量背景与前景的差别值,运用最大类间方差选取最佳阀值对图像进行二值化处理,并将绘制好图片传给下一模块。 9 图 35 二值化处理图片 车牌定位模块 首先对二值 化后的图像进行行扫描和列扫描,从而得到车牌区域。 接下来找出每行的非零像素值的个数统计出来存储在数组中,最后通过投影统计出所有的图像像素,并保存投影数值和最大的。 对保存的数值判断,如果满足要求这样就找出了车牌上水平线,同样的方法找出下水平线。 车牌左右边界寻找方法跟上段叙述的上下水平线方法相似,变成纵向扫描统计像素个数,然后进一步确定。 在此过程中统计列非零像素并找出最大连续统计,这值是车牌左边界,区域右边界同理可得。 然后使用 OpenCV的功能函数在此区域设置感兴趣的块,最后截取出车牌区域。 图 36 车牌 定位图片 10 字符分割模块 首先要对车牌字符进行定位,因为在车牌里第二个字符和第三个字符中间会有一个白色的小点,在切割过程中会对识别造成干扰,所以首先要对车牌进行第一次垂直投影,定位在第二个字符和第三个字符中间,确定第二个字符的边界位置和第三个字符的起点位置,这样就可以将车牌分成两个部分,然后再次进行垂直投影通过阀值来确定分割的大小和位置。 分割完成后,再对分割的图片进行角点处理,点角集中了图像上的重要形状信息,能够是提高图片特征和边缘化程度,从而提高字符识别的精度和准确度,处理完成后绘制好分割 的图像,传给下一模块。 图 37 车牌分割图片 字符识别模块 本系统使用 KNN 算法实现字符识别, KNN 算法的核心思想是如果一个样本在特征空间中的 k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。 KNN 算法实现步骤: ( 1) 初始化距离为最大值; ( 2) 计算位置样本和每个训练样本的距离 dist; ( 3) 得到目前 K 个最临近样本中的最大距离 maxdist; ( 4) 如果 dist 小于 maxdist,则将该训练样本作为 K 最近邻样本; ( 5) 重复上述 3 个步骤,直到未知样本和所有训练样本的距离都 算完; ( 6) 统计 K 个最邻近样本中每个类别出现的次数; ( 7) 选择出频率最大的类别作为未知样本的类别。 4 系统测试 ( 1) 训练样本 图 41 训练样本 11 图 42 训练样本 图 43 训练样本 ( 2)开启界面 图 44 开启界面 12 ( 3)程序主界面 图 45 程序主界面 ( 4)图片选取 图 46 图片选取 13 ( 5)图像识别 图 47 图像识别 5 系统结果分析与展望 通过几个月的学习与实践,顺利完成了 毕业设计,在刚开始接触到这个题目的时候脑海中并没有具体思路,车牌识别系统涉及到了非常多的图像方面有关的专业知识,这些都是我在之前并未接触过的,很多专业知识我必须从头开始一步步的去了解和深入,我通过上网 、 图书馆查阅资料以及吴老师的指导之下,分析和研究,解决了很多难题。 车牌识别系统是一个实际的工程系统,要求实时性高和一定的准确率,由于实际生活中采集到的图像受到到大量随机的环境干扰,以及拍摄角度的影响使得车牌区域会有各样的形状以及色差的无规则变化,同时每张图片的质量以及清晰度也不一样,给车牌识别带来了一定难度, 所以要求系统能够在这样的条件下也能够准确识别,设计的过程中使用了二值化,边缘检测,中值滤波等图像处理方法,而每一种处理方法又可以用不同的算法去实现,算法的选择对最后的识别结果是至关重要的,如对图像进行二值化,算法非常的多,有双峰法, P 参数法,迭代法和 OTSU 法等,所以就要对不同的算法进行测试,选择出最适合进行车牌识别的算法,这样就能提高识别的准确度,同时本系统最后一个字符识别的模块是一个难点,试用了多种方法准确率都非常的低,最后通过上网查阅资料,选择了 KNN 邻近算法进行字符识别,提高了识别的准确率及精度。 系统完成后因为各方面原因,所以系统还并不完善,还有待于从以下几个方面进一步去完善和提高。 (1)对于倾斜度较高的车牌校正有待进一步去研究。 (2)在识别过程中可以综合多种算法综合对图像进行处理,提高识别的抗干扰能力和识别的准确率。 (3)对图片的质量,车牌位置要求进一步降低,提高应用面。 14 参考文献 [1](加)布兰切特,(英)萨默菲尔德著,闫锋欣译,《 C++ GUI Qt 4 编程(第二版)》,电子工 业出版社, 202051 [2] 李彬 ,《 Linux Qt GUI 开发详解 基于 Nokia Qt SDK》,北京航空 航天大学出版社, 202011 [3] 韩少云,奚海蛟,谌利,《基于嵌入式 Linux的 Qt 图形程序实战开发》,北京航空航天大学出 版社, 2020101 [4] (美)李普曼,(美)拉乔伊 ,(美)默 著,王刚,杨巨峰 译,《 C++ Primer 中文版(第 5 版)》, 电子工业出版社, 202091 [5] 霍亚飞,《 Qt Creator 快速入门。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。