微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SPCA563B实现图像识别系统

SPCA563B实现图像识别系统

时间:09-27 来源:互联网 点击:

方向变量A[n].dir,记录新的边界点的坐标(A[n].x,A[n].y)。

  ③如果边界点A[n]等于第一个边界点A[0],即(A[n].x==A[O].xA[n].y==A[0].y)。停止搜索。结束跟踪。否则重复步骤②。

  由边界点A[O]、A[1]、A[2]、…、A[n]构成的边界便为要跟踪的边界。算法中步骤①的作用足找出第一个边界点,步骤③的作用是找出所有的边界点。如图9所示,左边为原始图像,右边是用该算法仿真的结果。

  

  2.2 手势识别算法实现

  我们的主要目的是找出伸出手指的个数。开始用行扫描的方法通过行内从O→1或1→O黑白像素变化的次数来确定伸出手指的个数,但这种算法对于倾斜一定角度的手指数目判断存在一定问题,因此转而采用“提取指尖点算法”。

  提取指尖点的方法着眼于从手势轮廓中搜索出指尖点,一个指尖点对应于一根手指,最后根据得到指尖点的个数来判定手指数目。判断是不是指尖:分析手的形状,手指的两边基本上是平行的。一直按逆时针方向前进,每经过一次指尖,手形轮廓的走向发生反向的变化。由于手形轮廓的边缘存在一定的毛刺,因此可以用多点方向的平均来减小毛刺的影响。这里取36点方向的平均,表示为Average_dix[i]。是否经过指尖的判断条件1:126=|Average_dir[i-1]一Average_dir[i+1]|=162。(说明:两点方向相反,其方向值差4,3.5×36=126,4.5×36=162。)

  再分析手的形状,两手指之间边缘轮廓的走向也满足判断条件l,故必须添加判断条件。如图10所示,当沿着一个方向搜索手的边缘轮廓时,经过指尖走向一定与手指间缺口走向相反。因此,必须假设判定条件2:

  

  Is_FingerVertex(dir0,dirl,dir2);

  这个函数是用来通过连续3点的方向来判断这3点是否为逆时针走向。由于是沿着逆时针方向搜索边缘轮廓的,故在判定条件1成立的前提下加上Is_FingerVertex(Average_dir[i-1],Average_dir[i],Average_dir[i+1])就可以判断是否为指尖,从而判定手指的数目。顺序3点是否为逆时针走向,具体在程序中可以构造一个循环队列来实现。测试结果表明这种算法非常稳定。

  结语

  该系统具有语音输出提示功能,操作更加人性化,并且可以通过USBl.1接口与PC进行通信;配合PC端的调试工具,还可以大大缩短图像识别功能开发的周期。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top