记毕设——车牌识别系统

毕设终于是结束了,这也意味着已经不用再回学校了,等着最后的毕业证了。其实还有个评优答辩,也就是大组答辩,大辨,无视了。

开始选题时其实有三个方向,其一,为我们家做个进销存系统,其二,数字图像处理,其三,做个简易电子病历编辑器。一三由于种种原因被抛弃了,最后选择的是数字图像处理。

其实这个课题在之前有接过一个开放性实验项目,但是这个项目除了最后得到380的经费外,毫无收获,而且最后的车牌识别系统没有完成,只能退而交了个人脸识别系统。PS:还记得没完成是因为被内存泄露和内存一直报不足给吓的,当时真是啥都不懂。

说说这个项目吧,完整的课题名称是基于VC++的数字图像处理研究——车牌识别系统,核心算法参考了多本书和网上的一些算法,整体运用的技术如下图:

OPENCV主要用于图像的处理,之前的开放性项目用的是GDI对图像进行处理,不仅图像类需要自己封装

(虽然MFC提供的结构体很不错),但是非常麻烦,而且最重要的是只能处理BMP图像,硬伤啊,GDI PLUS可以做到处理任意图像,

但是实在麻烦,毕竟这个设计主要以算法为主,所以还是选择OPENCV,他可以很方便的对图像的数据部分进行处理,而且提供了一些辅助函数。

SQLite主要用于数据存储,这没什么好说的,优点是速度快,文件型数据库,方便。

XML解析器为辅助SQLite进行数据存储和传输数据库操作的返回值。

codejock,很漂亮的界面库,仅作研究使用。

一开始做的时候想当然,车是平的,所以车牌的样子也应该是正的,并没有考虑鲁棒性,

所以导致没有车牌校正这一步,车牌图像处理大概步骤如下图:

字符识别采用的是模板匹配,答辩的时候老师说有种叫向量机的,查了下,都是博士硕士论文,下不来,具体如下图:

匹配算法原先考虑用豪斯多夫,但是图像的处理太大,效率会有问题,就没用。后来用XML存储字符特征值作为模板库字符。
最后附上张门口拍的车牌,拍的时候一直担心被打。。。
处理后得到车牌:
最后附上一句,资源虽然有上传,但是技术有限,识别的车牌量很少,资源里面包含能成功的8张车牌吧,好像,一方面没有进行大规模的测试,导致模板库很多字符都没有,一方面定位算法还有待改进。

你可能感兴趣的:(MFC,c++,c算法)