开始选题时其实有三个方向,其一,为我们家做个进销存系统,其二,数字图像处理,其三,做个简易电子病历编辑器。一三由于种种原因被抛弃了,最后选择的是数字图像处理。
其实这个课题在之前有接过一个开放性实验项目,但是这个项目除了最后得到380的经费外,毫无收获,而且最后的车牌识别系统没有完成,只能退而交了个人脸识别系统。PS:还记得没完成是因为被内存泄露和内存一直报不足给吓的,当时真是啥都不懂。
说说这个项目吧,完整的课题名称是基于VC++的数字图像处理研究——车牌识别系统,核心算法参考了多本书和网上的一些算法,整体运用的技术如下图:
OPENCV主要用于图像的处理,之前的开放性项目用的是GDI对图像进行处理,不仅图像类需要自己封装
(虽然MFC提供的结构体很不错),但是非常麻烦,而且最重要的是只能处理BMP图像,硬伤啊,GDI PLUS可以做到处理任意图像,
但是实在麻烦,毕竟这个设计主要以算法为主,所以还是选择OPENCV,他可以很方便的对图像的数据部分进行处理,而且提供了一些辅助函数。
SQLite主要用于数据存储,这没什么好说的,优点是速度快,文件型数据库,方便。
XML解析器为辅助SQLite进行数据存储和传输数据库操作的返回值。
codejock,很漂亮的界面库,仅作研究使用。
一开始做的时候想当然,车是平的,所以车牌的样子也应该是正的,并没有考虑鲁棒性,
所以导致没有车牌校正这一步,车牌图像处理大概步骤如下图:
字符识别采用的是模板匹配,答辩的时候老师说有种叫向量机的,查了下,都是博士硕士论文,下不来,具体如下图:
