ZYNQ图像处理项目——模板匹配数字识别(3)

一、ZYNQ数字识别框架

前面已经完成了matlab实现数字的识别,后因考虑到图像处理的实时性,将其移植到ZYNQ进行实现,前面已经介绍了ZYNQ上实现数字识别的基本框架,然后也实现了用投影算法实现边框的检测和定位。下图是整体的框架,和之间有略微区别就是我将边框检测和数字识别放到了一块,其实并无本质区别。先前已经实现了VIP模块、外围边框检测模块,接下来就是字符边框的定位以及字符的识别等内容了。
ZYNQ图像处理项目——模板匹配数字识别(3)_第1张图片

二、ZYNQ数字识别实现效果

先来看整体的演示效果,通过对摄像头采集到的图像进行预处理,之后投影算法得到外围边框,然后对边框内的数字做定位,得到每个数字的边框,之后分割每个数字提取矩阵模板,最后与标准的模板进行比对得到识别结果,最终的结果在HDMI屏左上角所示。
这个数字识别系统可以实现最多5个数字的定位和分割,以及最多3个数字的识别和显示。你问我为什么只可以识别3个?那原因就是资源不够用了!
ZYNQ图像处理项目——模板匹配数字识别(3)_第2张图片
ZYNQ图像处理项目——模板匹配数字识别(3)_第3张图片
ZYNQ图像处理项目——模板匹配数字识别(3)_第4张图片

三、ZYNQ数字识别总结

针对数字区域的投影算法verilog代码和之前的外围边框识别是相似的;字符分割和字符匹配,这边就不贴代码了,也比较简单。这边给出了整体的block design图。其主要就是下面这两个模块,一个是预处理模块,一个是数字定位识别模块。
ZYNQ图像处理项目——模板匹配数字识别(3)_第5张图片
这两个模块代码主要包含下图所示部分,滤波按键模块主要控制图片切换或者阈值改动,这个就DIY了,我这边没用到;数字识别主要包括了数字的分割以及特征矩阵的提取和模板的匹配;预处理模块主要实现了图片的滤波、二值化、腐蚀膨胀等操作;投影模块主要是做竖直和水平投影,完成外围边框和水平边框的定位;RGB转YUV模块主要是色彩空间转换。最后所有代码,通过仿真和上板的测试。
ZYNQ图像处理项目——模板匹配数字识别(3)_第6张图片
我这边开发环境是vivado2018.3,搭配ZYNQ7010、OV5640和1024*768显示屏,综合后,可以发现查找表资源已经快满了,是因为字符匹配需要用到大量查找表,如果想要进一步增加识别个数,可以换用7020或以上的芯片来实现。
ZYNQ图像处理项目——模板匹配数字识别(3)_第7张图片
忙活一个多礼拜,总算完成了模板匹配的数字识别,其优缺点也是很明显。优点是实现简单,效率高,准确度可靠;缺点是太占用LUT资源,并且只能识别标准字体,对手写数字则无能为力。因此后面会考虑用多元线性回归的算法或者神经网络来识别不标准的数字。

你可能感兴趣的:(图像处理,matlab,人工智能,ZYNQ)