基于DSP的手势识别电视遥控器设计

  作者:angelazhang 时间:2015-03-27

由于传统电视机遥控器的按键操作比较机械且缺乏娱乐性,设计了一种以DSP2812为核心的手势识别算法。通过将用户手势运动的信息转换成相应的红外信号,从而实现手势遥控电视机更换频道和调节音量的目的。该系统主要由双端口RAM通信的双DSP并行处理器、CMOS数字摄像头、红外遥控模块、上位机调试软件和以太网通信模块组成。实验测试表明,该系统能够实现用户手势图像的采集、手势动作的识别、红外遥控及以太网通信功能。

传统电视机遥控器是一种按键操控方式,其操作比较机械且缺乏娱乐性。本文提出一种采用直接判断使用者手部动作的方法遥控电视机,使用者在摄像头拍摄范围内按照规定的摆放方式移动手部,就能够遥控电视机进行音量增减或频道变换等操作。设计使人们对电视机的遥控操作更加便捷、人性化,丰富大众的日常生活。

1系统设计方案

手势识别电视机遥控器是集合图像采集、手势识别和红外遥控三大主要功能的控制装置。依据要实现的采集图像能力和DSP处理视频流能力的功能要求,确定系统结构如图1所示。                                                                  

                                                                                                    图1手势识别电视遥控器系统结构


本系统采用了双DSP共同工作的方式,主要由六个模块组成。

1)摄像头模块:由摄像头OV7620及驱动电路组成,负责手势图像采集。

2) DSP1:核心是TMS320F2812,负责对图像采集及预处理,与上位机网络通信和用户按键信息的输入。

3)上位机:显示实时采集的图像,图像处理结果和调试参数等。

4)双端口RAM模块:实现两个DSP之间的高效数据通信。

5) DSP2:负责提取手势图像特征和向红外遥控模块发送指令。它从双端口RAM获取图像数据,从图像中提取有用的特征,并将判断结果转换成相应的遥控指令。

6)红外遥控模块:负责学习电视机配套遥控器的红外遥控指令,将其放入指定的存储空间中。在DSP2给出发射指令时,查询存储空间,获取对应的红外指令并发射。

2系统硬件设计

2. 1双DSP处理器及内存空间设计

本设计使用双TMS320F2812的DSP进行图像采集、图像处理并且实现红外遥控和网络通信等功能。这样可以满足并行图像处理能力和快速响应的速度要求,同时两个DSP扩展了512 K×16位的RAM空间,以满足图像处理的空间要求。

为了实现双DSP之间的通信,系统采用Cypress公司的一款64 K×16位的双端口RAM芯片CY7C028搭建一个数据通道。DSP1把采集到的图像通过时间控制有规律写入数据通道中,DSP2从数据通道中提取图像数据存放到自己的RAM中,然后进行相关的图像处理。在设计工作状态时,使用双端口中断判优方式,数据传递采用握手的通信模式。当DSP1向双端口RAM中写完数据之后,通过中断握手的方式,通知DSP2读取数据。DSP2要求数据时,也会以同样的方式通知DSP1,从而实现双DSP高速有规律地数据传递。双端口RAM与两个DSP之间的硬件连接如图2所示。



图2双端口RAM与双DSP的硬件连接图


2. 2图像采集电路设计

本系统直接使用DSP1通过外部中断NMI和INT2,分别同步摄像头OV7620的VSN和HREF信号,同时通过绑定DSP的8根I /O线同步读取图像到DSP内存中,从而实现了系统的图像采集工作。为了让DSP的时钟频率与OV7620的时钟频率匹配,必须要降低摄像头的输出时钟频率。对摄像头OV7620内部的寄存器进行设置,达到减慢数据传输速度的目的。OV7620模块与DSP1的硬件连接和OV7620的同步读取时序分别如图3和图4所示。



图3蓝牙发送模块接口电路

图4 OV7620同步读取时序图


通过时序图可知,DSP先捕获摄像头的场中断信号,准备好存储一帧图像的数组。然后,DSP等待HREF行中断信号。最后,在行中断中判断PCLK信号,当PCLK处于高电平时,DSP读取该像素值。为了在不丢失手势特征信息的前提下采集尽量小的图像,DSP采集视野中间隔行的100×100大小的图像,存放在100×100的数组中。通过修改读取程序可以改变采集图像的大小。

2. 3内存及DSP网络通信设计

本系统采用RTL8019AS与DSP1通过连接对应的地址数据总线,设置片选信号,实现DSP的以太网通信。RTL8019AS与DSP1的硬件连接如图5所示。

RTL8019AS内部有两块RAM区,一块16 K字节,地址为0×4000~0×7FFF;一块32个字节,地址为0×0000~0×001F.RAM按每256字节为一页存储。一般将RAM前12页(即0×4000~0×4BFF)存储区作为发送缓冲区;后52页(即0×4C00~0×7FFF)存储区作为接收缓冲区。第0页只有32字节(地址为0×0000~0×001F),用于存储以太网物理地址。要接收和发送数据包就必须通过DMA读写RTL8019AS内部的16KB RAM.


                                                图5 RTL8019AS与DSP1硬件连接图


2. 4红外遥控模块电路设计

红外遥控模块包括三个部分:接收部分、发送部分和数据处理部分。接收部分包括光电转换、解调、高速采样以及数据分析等模块,发送部分包括遥控发送和电光转换模块,数据处理部分包括中央处理以及存储模块。

3系统软件设计

3. 1手势图像预处理算法

手势图像提取算法选择帧间差分的方法实现手部图像分割。利用间隔短暂时间的两帧图像比较,获取两张图像运动方向的手部围成的一小段白色区域,然后采用阈值分割的方法对获取的图像二值化,消除噪声,最后根据此图像序列含有的白色像素点的多少来确定图像序列中有无物体存在。对手势图像预处理的算法描述如下:

1)从视频图像序列中选取相邻n帧的两帧图像,其中前一帧图像为Pk-1( x,y ),如图6( a)所示,后一帧图像为Pk( x,y),如图6( b)所示;



图6从视频图像序列中选取的图像


2)为了减少计算量,将480×640的图像隔4行6列提取像素点,左右各忽略20列,上下各忽略40行,获得两帧100×100的图像

,如图7( a)和7( b)所示;



图7缩小后的图像


3)计算后一帧与前一帧的差为Gk( x,y),得到目标的变化量,如图8所示;



图8两幅图像的目标变化量


4)对帧间差分法得到的图像按选定的阈值进行二值化,得到目标图像序列的二值化图像序列Fk( x,y),如图9所示。其中,

式( 1)中,T为阈值。对于给定视频序列的图像,假设像素点k处没有运动,其帧差dk服从均值为0,方差为σ2的Gauss分布N( 0,σ2) :

式( 2)中,H0表示无运动假设,σ2是帧差的统计方差,通常认为它等于摄像头噪声方差的两倍。根据概率统计假设检验“3σ”法则和“正确的阈值T应该能消除大部分噪声”的原则。经试验测试得阈值T选择在35~45之间比较合适。二值化后的图像如图9所示。观察Fk( x,y)的图像序列,可以看到图像中的噪声很少,这是因为①帧间差分法达到了加大目标信息的权重,同时抑制了静态背景的效果;②摄像头采集范围背景比较单一,光线均匀。

Fk( x,y)中主要存在两大类的噪声。一种是由于光线变化产生的噪声,这种噪声往往以孤立的黑色像素点的形式出现。第二种噪声是一些面积较小的背景块。为了尽可能消除这两种噪声,可以求每个N×M小块的灰度平均值,根据灰度平均值可估计出白色区域的大小。当灰度平均值小于某一阈值时,可以认为是噪声,把对应的N×M个点赋值为0.算法实现如下:

( 1)建立一个大小是Fk( x,y)的1 /25倍的矩阵来存20×20个5×5像素块的平均灰度值fk( x,y)。

( 2) fk( x,y)和Hk( x,y)满足如下关系:



图10噪声消除后的图像


通过这种处理方法,原图像中的小块噪声和椒盐噪声基本被消除,手部图像边缘的某些像素点也会被当作噪声消除,但是不影响后续处理。经过噪声消除后的图像如图10( a)所示。使用同样的处理算法,可以得到后一帧的图像处理结果如图10( b)所示。

3. 2特征提取及动作识别

获取只含手部运动区域的图像Hk( x,y)和Hk+1( x,y)后,扫描出手部图像边界,通过比较与计算判断手摆放位置和区域中心位置Pk( xk,yk)和Pk+1( xk+1,yk+1)。手部摆放位置可以判断手的上下或是左右运动。图像处理和特征提取流程图如图11所示。

( 1) Hk+1( x,y )和Hk( x,y )是相同的纵向摆放位置,手部在左右运动。

( 2)根据列坐标的大小来判断手左右方向的移动如下:

判断上下运动的算法与判断左右类似。若出现无法判断的情况,则重新采集图像,进行处理和判断,直到能够判断方向为止。


                                                                                                        54139f1428f02-thumb.jpg


图11图像处理算法流程图


3. 3红外遥控算法原理

本系统选择最常用的一种编码方式uPD6121进行学习、解码和发射。红外遥控器的红外信号一般都是通过38~40kHz的载波调制而成。先对接收到的红外信号进行解调,再记录遥控编码信号的脉冲宽度。学习子程序的流程图如图12所示。采用计数器对信号高低电平计数的方法采集数据并保存。

发射模块根据DSP2发送的指令找到对应的编码信号在外扩RAM的位置,将编码调入内存,然后通过编码发送子程序,将编码调制在38 kHz载波上发送出去。用定时中断0产生38 kHz的载波信号,用学习到的遥控编码信号的低电平去控制载波输出,此时定时器0定时长度由相应的遥控信号低电平宽度计数值确定。如果需发射的遥控信号为高电平,关定时中断0;如果为低电平,则开定时中断0,从而实现遥控信号的脉宽调制发射。发射子程序流程如图13所示。

                                                                                                     54139f10eb00f-thumb.jpg


                                                                                                                                      图12学习子程序流程图

                                                                                                                        54139f1755cae-thumb.jpg

                                                                                                                                图13发射子程序流程图


3. 4网卡驱动程序及上位机软件设计

3. 4. 1网卡驱动程序及UDP协议实现

RTL8019AS已经实现以太网通信物理层功能,只需初始化芯片相应的寄存器,编写DSP下驱动,便可启动RTL8019AS.本系统采用TCP /IP协议族中的UDP协议( user datagram protocol)进行通信,实现通过网络把DSP采集到的图像信息发送到上位机。

3. 4. 2上位机软件编写

上位机软件采用C#语言编写,实现UDP通信协议。上位机软件实现接收下位机的数据,还原图像数据并显示等功能。同时,上位机还可以向下位机发送命令,方便系统调试。

3. 4. 3图像数据发送及还原

下位机采用UDP发送数据,把数据的每一行作为一个UDP数据包,一幅图像分成100个数据包进行发送。为了让上位机完整接收一幅图像,在每幅图像开始发送之前,先发送一个规定的帧开头数据包,在每一幅图像发送完毕之后,也发送一个规定帧结尾数据包。上位机根据这些标定将100个数据包利用C#语言的相关函数,转换一定的图片格式,在上位机进行显示。

4系统测试

4. 1测试流程

创建手势样本库、手势图像预处理、特征提取、实时手势图像与库模型预测、识别结果、执行操作等。

4. 2测试结果

本设计自定义手势及编号如图14所示,其中手势1表示开机,手势2表示关机、手势3表示换台的递增,手势4表示换台的递减,手势5表示音量增加,手势6表示音量减小等功能。

对组装好硬件电路系统进行整体测试。测试者在摄像头的拍摄范围内进行上述6种手势各从左向右、从右向左、从上向下和从下向上10次缓慢运动,在每种手势40次的识别中识别率如表1所示。



表1识别率


测试结果表明,本算法识别手势的准确率在96%左右,遥控的有效范围在4 m左右,能够实现电视机的频道更换和音量调节功能。

5总结

本文设计的手势识别电视遥控器系统,利用摄像头使手势动作与电视机进行交互,采用红外信号遥控电视机,在红外传输有效距离内,可以根据个人喜好,任意改变手势识别样本库系统,使得电视遥控更加人性化,并为实现家庭数字设备操控一体化提供可能。



图14自定义手势及编号




关键词: 手势识别 TMS320F2812 UDP协议 DSP 电视

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关电路