新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA的手势识别系统研究

基于FPGA的手势识别系统研究

作者:陈虹玉,张福鼎(江苏第二师范学院物理与信息工程学院,江苏省基础教育大数据应用工程研究中心,南京 210013)时间:2023-06-23来源:电子产品世界收藏
编者按:相比于传统键盘鼠标人机交互模式,手势识别具有更大发展潜力,本文先搭建了一个有关手势识别的框架,然后再和FPGA的硬件技术相关联,将FPGA融入手势识别之中,并设计自己的手势识别算法,使得能够在平台上得以实现。


本文引用地址:http://www.eepw.com.cn/article/202306/447899.htm

*基金项目:江苏省高等学校大学生创新创业训练计划项目,项目编号:202110900004Y;

江苏省高校自然科学研究面上项目,项目编号:16KJB510007;

教育部产学合作协同育人项目,项目编号:201901163002、202002094006

作者简介:陈虹玉(2001—),女,2019级电子信息工程专业本科生

通信作者:张福鼎(1982—),男,讲师(Email:zfdc@qq.com)

0 引言

在当今社会很多地方都要用到,具有非常广阔的市场前景,通过不断研发已经成为一个成熟器件[1],作为一种可编程逻辑器件,具有半定制、电路灵活,门电路数多、实时性强、低成本等优点[2],在市场上有了立足之地,取得优异成绩,并朝着多元化发展方向发展[3] 最大特点是灵活可实现各种电路设计,因此渐渐取代其他电子设计,成为了众多厂商及个人的首选[4]

先前的人机交互是传统的键盘及鼠标模式,而现在的交互模式更加宽泛[5]。手势是最能表达人类动作的一种形式,反映出来的是最直观的感受,在这计算机流行的时代,能否将手势和机器语言联系在一起,呈现出人机互动的形式,特别是当今游戏盛行的时代,手语识别系统也可以应用到游戏中[6]。最常见的体感游戏便是最好的证明,人类通过穿戴体感设备,从而将人体运动传输到电脑中,经过处理并及时显现出来[7]

因此在生活中的运用十分广泛,所以越来越多的人致力于此项研究,类如数据手套的常见识别系统也是层出不穷,而手势系统这一新生事物还处于研发阶段,所以价格还很高,不适用于普及当今社会,人们着力于研究的发展技术,力图在方面获得更多的成功。手势识别系统的研究的重要性已经不言而喻,在未来的生活中,手势识别将会迅速发展[8]

手势识别是人类和仪器沟通的桥梁,能否完成手势识别这一任务,也关系到和电脑等机器的互动和沟通[9]。然而,现在手势识别技术还不成熟,基于计算机视觉的交互系统容易收到外界干扰,不能识别大量手势[10]。手势跟踪等[11]稳定性差,使得手势成为一种复杂可变形体,有时甚至不能准确识别出来[12]

本论文的主要内容是基于 的手势识别系统研究,先搭建了手势识别框架,并设计手势识别算法,外部硬件由数据收集模块、信号处理模块、结果显示模块和外部触摸板模块组成,再根据对应的算法来实现他们的功能。

1 基于FPGA的手势识别系统

1.1 硬件框架

基于FPGA 的硬件框架如图1 所示,分为数据采集模块,信号处理模块,结果显示模块,外部触摸板模块和摄像头模块。

1687497078543450.png

为了日常可以随身携带,也为了方便我们的穿戴,所以安装在人体身上的模块必须要小巧简单,因此选择了尺寸较小的采集模块,具体的数据为长30 mm,宽15mm,厚2mm。具体的由控制器和传感器组合而成,通过捕捉人体移动信号,将信号从控制器发向传感器,由传感器进行数据采样,最后再通过控制芯片传递给其他设备。经测定,sEMG 传感器工作时的信噪比保持在20dB 以上,ACC 芯片在运转之时有很多状态,尤其是在1.5 gn 时,会形成一个惊人的信号,分辨率超出很多科学家的想象。此时对信号传输的要求会非常高,需要不容易产生波动、大小合适,所以在此推荐CC2500 这个芯片。CC2500 之所以获得众多公司的青睐,除了以上的特长,还能够帮助公司节约能源损耗,为公司的利益也是谋取了福利。在数据采集模块中,这两个芯片不可或缺,起到了至关重要的作用,更加有利于对实时数据的采集。

信号处理模块首先配备了获得信号的设备,为了得到精准的信号,我们这里采用CC2500,可以连接在FPGA 上,但是他们两个却丝毫没有关系,分别处于不同的频道,不影响各自的工作。信号处理模块包含了多个硬件,而其中最关键的、最为核心的,便是FPGA 了。

FPGA 的硬件构成较为复杂,其中有上万逻辑单元等。收集模块已经收集到了sEMG 和ACC 信号,那么在处理模块中的主要目的就是识别这两个信号,在接下来的软件设计中,将会详细说明算法。FPGA 所对应的功能已经在上述中所详细介绍,对应的如图2 所示。

1687497191167882.png

结果显示模块的功能是显示识别的结果,要求在LCD屏上快速显现出来,对其处理速度有一定要求,所以我们在此模块配备了LCD屏及单片机,采用的单片机也具有超高的配置,和如今的USB 接口一样,传输速度使得我们立马就能在LCD 屏上看见结果。

触摸板结构图如图3 所示,核心处理器是STM32微处理器,为了方便具体使用,在处理器上外接一块控制板,触摸屏控制板的型号是TSC2046,触摸板在模块中的作用就是选择手势识别出来的结果,如果没有与之相匹配的,就通过触摸板,输入自己想表达的手势,另外,触摸板上还能显示其他信息,如显示电池容量,显示实时温度等。

1687497251211362.png

摄像头模块是作为整个系统的一个关键,如果不能实现这一模块,将会无法进行准确的识别,影响手势识别结果的处理。此模块的工作原理相当简单,首先摄像头锁定人手的具体方位,向处理模块实时运达手势的变化,同时,锁定了方位后,联合传感器,确定其他移动设备,具体应用见如图4 所示。

1687497325120172.png

1.2 软件框架

当信号发生在活动段的时候,屏幕上就会出现sEMG信号,此时意味着活动段算法开始执行。因为信号的差异性,所以要对收集到的数据进行整理,然后传递给下一模块,在下一模块中检测接收数据,根据传递的顺序,依次接收信号。在活动段中,传送的单位是帧,也就是说完成传递个1 信号,就意味着1 帧的结束。

活动段获取算法是数据采集模块所对应的软件算法,通过计算平均绝对值,再用它来设计算法,具体完成操作如图5 所示。由于不同的通道信号的数值是各不相同的,所以要计算出其总和,那么就需要采用以下方法,设置1个累加器1,用帧同步信号作为累加器1 的清零端,用位同步信号作为累加器1 时钟,数据取绝对值后流入累加器1,每个帧同步来到时累加器1 输出1次结果。32 点移动平均用移位寄存器的结构实现,帧同步信号为移位寄存器提供时钟,在每个时钟周期进行1次移位,累加器2 加入新进寄存器的值,减去移出寄存器的值,累加的结果与阈值比较。采用了这种简便的算法后,给活动段的检测带来了不少好处,既提升了检测效率,又没有过多的浪费资源。为了更好的检测两只手同时做出的手势,我们在此放置了两个检验模块。

1687497430274542.png

在这特征算法这一阶段,首要目标就是找到特征值,就是对收集到的信号,计算出它的绝对平均值。在外面的SRAM 充当了数据收集的作用,里面集合了完整的数据,此时的信号被传送到下一阶段之时,它所对应的在SRAM 中就有唯一的地址,然后对其做好记号,传送结束后,此时又有新的对应的地址,并做好新的标记。接下来,就可以通过整理出来的地址数据,先分别提取出来,再完成运算。

ACC 信号是本次实验中一个不可或缺的信号,其主要目的在于确定手势的具体地址,为了更好的确定其坐标,可以用公式AX i/N u=Σ|X i-A|/N,后者是为了了解手势的摆动幅度。经过严格的推理和证明,发现这两个公式可以简化,并合成为1 个新的公式,即F=Σ|X i-C|/N,这个公式可以同时计算出平均值和一阶矩,可以说是十分便利,只需满足条件C =0 和C =A,毫无疑问,这种计算方法有利的提高了计算的效率,也有效的解决了过多的占用FPGA 资源的问题,达到了省时省力的效果。

因为采用的是除法算法,所以内部占据了数量庞大的逻辑单元,从多次运算的实践中可以看到,通过反复的算法实现,ACC 的出现是固定的,局限在固定数值之内,一般认为这个数值是256,再根据乘法运算,把所有可能出现的N 的倒数1/N(0~255)乘以65 536(2的16 次方)得到65 536/N,按照一一对应的原则,依次传递给RAM,将生成的地址,再传递给ROM,最后能够计算出结果为65 536/N。接下来的步骤就是借助乘法器,在位数移动16 位的基础之上进行乘法运算,最终获取结果,最准确的数值可以达到万分之一,采用这种方法,既节约了计算的时间,又达到了精度高的要求,对于能够实时的进行大量的特征运算,达到了这一目的。

识别算法分为两个步骤:首先,为了更好地确定其坐标,根据之前算法得出的特征进行第1 次分类,然后结合sEMG 信号,对其第2 次分类。为了确定手势的具体位置,我们进行以下步骤:先完成特征算法,计算出对应的平均值,最后对均值进行分析判断得出。要实现对静态和动态的区分,用两者的一阶矩作为判定的依据,当大于其对应的阈值时是动态手势,与之相反,就是静态手势。在识别算法中的分类不是没有好处的,如果没有进行分类识别,会给这一算法带来巨大的计算量,影响识别效率。

完成分类后,把5 通道sEMG 的绝对均值组成特征向量,设计正态分布下的贝叶斯分类器对手势动作进行精确的分类识别。分类器的结构如图6 所示。

image.pngimage.png

图6 分类器结构

其中,X=(x1x2, …,xd-1xd),gi(X) 为类别wi的判别函数,N 为类别数。在这个手势识别算法中,分类器采用了对应的算法,对这个规则我们给予详细的介绍,存在一个密度函数P(X|wi) 符合给定条件,呈正态分布的形式,μi 和Σi 分别表示X 在类别wi 下的均值向量和协方差阵。经过化简,我们可以得到如下公式gi(X)=-ln|Σ|-(X-μi )Σ-1i(X-μi ),i=1,2,3,…,N

为了增加函数的准确性,采用不同的数据,代入分类器实践操作,这样就能够了解函数的组成部分。此时的算法还不能准确的对手势进行识别,仍需要借助在电脑上模拟完成。经过反复的训练,将生成的数据同函数融合在一起,便可以载入FPGA 的自生成ROM 中。最后对特征向量不断的运算,在电脑上就可以呈现结果。

在本文的手势系统中,对单手和双手的识别是兼容的,对其数据采集后,都可以运行特征算法,并实现分类,最后在屏幕上呈现出手势。识别结果用1 个字节表示,用bit 来显示所代表的含义。单片机通过解析这个字节便可得知所需信息,进一步做出反应。不论是单手手势的识别,还是双手手势的识别,都确保了时效性,立马就能识别出手势特征,对手势识别速度的发展做出贡献。触摸模块软件算法实现主要包括:

1)ucos 系统建立任务,包括主任务,用户界面任务,CAN 报文接收任务等;

2)ucGUI 图形用户界面程序,设计相关操作界面;

3)中断服务程序,执行CAN 总线接收的中断处理;

4)硬件平台初始化程序,包括时钟,CAN 模块,触摸屏等等的初始化;

5)LCD 的底层驱动函数。

摄像上传识别算法实现其主要思想是在摄像头固定的情况下,通过减去背景图像方法进行运动部分识别。在采集摄像头数据后,首先要对背景进行建模。本系统采用基于统计的背景模型提取方法,以一段时间内某像素点所在区域亮度的平均值作为该像素点的背景值。之后对实时图像进行高斯平滑,并与背景图像相减再二值化,将得到的差值图像通过膨胀、腐蚀等形态学滤波后,寻找最大连通区域,从而确定运动部位坐标。

参考文献:

[1] 罗娜.基于OpenCV的自然手势识别与交互系统研究[D]: 广州:广东工业大学, 2012.

[2] GUPTA A, V K SEHRAWAT, M KHOSLA. FPGA based real time human hand gesture recognition System[J]. Procedia Technology, 2012, (6)98-107.

[3] 周天彤等. 基于unity和kinect的交警手势识别仿真系统的设计和实现[J].计算机测量与控制, 2016, 24(5): 156-159.

[4] 龚陶波.基于计算机视觉的静态手势识别系统[D].武汉:华中师范大学, 2008.

[5] 谭同德,郭志敏.基于双目视觉的人手定位与手势识别系统研究[J].计算机工程与设计,2012,33(1): 259-264.

[6] 汤志彦,冯哲.适用于机器人视觉的手势识别系统[J].计算机工程与应用, 2005(16): 51-54.

[7] 曾维.手势识别系统中手指及指尖检测方法[J].国外电子测量技术, 2013, 32(4): 39-42.

[8] 杜钊君.基于体感传感器的手势识别及人机交互系统研究[D].武汉:武汉科技大学, 2013.

[9] 刘江华,陈佳品,程君实.用于人机交互的静态手势识别系统[D].红外与激光工程, 2002(6): 499-503.

[10] 王茂吉.基于视觉的静态手势识别系统[J].哈尔滨:哈尔滨工业大学, 2006.

[11] 鲁姗丹,周松斌,李昌.基于多光源红外传感技术的手势识别系统[J].自动化与信息工程, 2015, 36(2): 22-26.

[12] 徐成,马翌伦,刘彦.一种基于嵌入式系统实时交互的手势识别方法[J].计算机应用研究,2011,28(7): 2782-2785.

(本文来源于《电子产品世界》杂志2023年6月期)



关键词: 202306 FPGA 手势识别

评论


相关推荐

技术专区

关闭