MT9D111摄像头数字识别+结项
时间:10-02
整理:3721RD
点击:
1. 项目内容简介(本文主要简介下整个的过程,不会涉及细节,具体参考前面帖) 通过摄像头拍照(照片像素大约20K以上,太大不好存储,计算时间长切记),照片通过摄像头的并行口传输给FPGA, FPGA 调用图像识别算法,解析出里面数字值,将数字值显示在LCD上面。
2. 项目硬件/软件环境介绍
硬件设计主要分为3部分,LCD驱动和触摸部分,摄像头驱动设计,FPGA电路部分。
LCD采用市面上常见的TFT2.8寸的屏幕。如下图,一般有8位并口和16位并口,LCD驱动的代码可以参考之前的文档。此次LCD调试遇到的主要问题是图片和字体是斜的,后来发现是 换行少计算了1位。调试经验有3点,1是8和16位口别搞错,2是RGB的565格式(或者656),3是时序,时序可以用modelsim仿真检查。XPT2046相对简单。
摄像头驱动设计,采用MT9D111,这个模块有I2C接口用于配置内部寄存器和8位的并口用来传输数据。下图的板子是以前CC3200的配套摄像头模块,可以直接拿来用。之前也试用过特权的那个摄像头,区别不大,不过这个模块资料多一点,在TI官网可以下载到。
FPGA采用安富利的Artix-7 50T开发板,具有52160个逻辑单元、2.7Mbit BRAM以及120个DSP48 slice,还有4个速度为6.6Gbps的GTP SerDes收发器,不过此次最麻烦的问题在于IO口引出的数量有点少,算了一下大致48个IO引出,勉强够这次使用。USB口可以供电,据说还有串口,没试过,JTAG模块在板子的下面。
软件环境,vivado 2014.2版本,据说从xilinx 7系列为分水岭,vivado就只支持7系列了,但是我感觉还是ISE好用一些。
matlab 软件,此次的图像识别算法主要在matlab上调用现成的模块接口,然后转换成v语言才能使用的。
modelsim,前期用到的仿真时序软件,蛮好用的。下图是LCD的仿真时序
3. 测试环境/测试方法简介
(1)先测试LCD硬件,然后单独用例程测试显示字和图片,其中数字用像素点保存,图片用Mif或者coe文件,最好用仿真软件看时序,可以最快定位问题。
(2)摄像头接口,这个单独测试的话,只能去RAM查看数据了,可以借助vivado自带的工具。
(3)图像识别,这个借助matlab,因为很多算法上面有集成,水很深,需要研究很久。其中边缘检测图像去躁,图像二值化,字符分隔,字符识别这些算法,我觉得自己写出来可能性不大,主要还是参考前辈的理论,加以改进,正所谓站在巨人的肩膀上。
(4)本着先硬件,后单独模块,再综合测试的原则。遇到问题,最好办法是查时序,时序可以解决至少一半的问题。
4. 项目框图
项目框图还是比较好懂的。偏时序的,流程图是没法画了。
5.项目预期结果
目标可以识别0-9的数字,实际测试正确率在60%-70%,商用是不可能的了,希望后续随着技术水平的提高,可以把识别率提高,目前尚不支持识别字母,同时在后续的学习中打算研究下识别字母的部分。
顶起来,LZ
有必要学习一下,顶。
图像识别算法能分享一下吗?
小编,看到您做出来了很是兴奋啊,我的课题卡了好久,就是车牌识别,能不能分享下,或者交流下,实在不行有偿的也行