花了两个星期的时间,终于把一个简单的模式识别程序移植到开发板上了。程序是现成的,以前用VC实现的。在移植过程中,中间走了一些弯路,花费了不少时间。
程序很简单,用模板匹配法实现数字5和非5的识别,最终显示出来。关于特征值的选取,我一开始把图像分成了5*5个区域,用每个区域的像素值当做特征值。原来VC上,就是这么分的,连阈值我都是直接照搬原程序。实验的时候发现,即使同一个数字,每次从摄像头读取后的像素值差别比较大,毕竟不是读BMP图片。最后改用比值做特征值,分成3*4个区域,区域分的太多反而会受误差影响较大。重新训练选取阈值,最后的结果差强人意,可以大致区分出5和其他数字,但有时也会失败。
程序过程如下:
1. 初始化。从摄像头中读图并二值化存入对应数组。由于摄像头的数据直接放在DDR2中,所以从摄像头读数就是从DDR2对应的地址读数。
2. 把二值化的图像显示出来。就是把二值化的图像数据放到DDR2中。
3. 对图像进行边界扫描。这是为了下一步标准化做准备。上边界确定方法如下:
//从上往下扫描,找到上边界
tmp=(Uint8 *)sample;
for (i=10;i<height;i++) //边界有黑线,i不从0开始
{

本文介绍了如何将一个基于VC的模板匹配数字识别程序移植到DSP开发板上。程序采用3*4区域的比值作为特征值,实现5与其他数字的区分。移植过程中遇到的问题包括L2 Cache大小限制和VPFE设置导致的图像读取错误,最终通过调整和优化解决了这些问题。
最低0.47元/天 解锁文章
1263

被折叠的 条评论
为什么被折叠?



