查看完整版本: DIY你的体感游戏:人体动作识别系统的设计,提供软硬件实现方案

admin 发表于 2015-4-27 16:25:15

DIY你的体感游戏:人体动作识别系统的设计,提供软硬件实现方案

一 项目设计摘要
        人体特征和动作识别是非常热门的领域,相关的算法和实现方案也层出不穷。依赖于FPGA丰富的内部资源,可以实现高速的设计和数据处理。为了给人们的生活和娱乐带来更多的乐趣,我们的设计灵感来源于一款PC游戏,将人体动作识别和个人电脑游戏结合起来,通过对人体动作的判断,控制游戏中相应物体的动作,这类似于无线控制,但是也不尽相同,这将是一个非常有趣并且吸引人的项目。本项目使用Virtex-5 OpenSPARC评估平台,首先通过VGA解码芯片,将PC机中的视频流数据解码出R、G、B信号值和场、行信号。然后使用OV7670数字摄像头,摄取人体的手部动作,运用一定的算法,对摄像头数据进行处理,判定此时的人体动作,然后将其与RGB分量信号进行叠加,通过配置DVI接口芯片,将叠加后的图像送至显示器显示。在正确检测出人体动作的前提下,FPGA将向PC机发出相应的控制信号,用来控制PC机中游戏的动作。
       
        二 系统的原理
        本设计项目为人体动作识别,设计的重点在于摄像头数据的获取、人体动作的正确识别、图像的叠加、图像的显示以及控制信号的传输。本项目使用Digilent公司提供的Virtex-5 OpenSPARC评估板,板上含有Virtex-5 XC5VLX110T FPGA,2个Xilinx XCF32P Platform Flash PROMs(每个32 Mbyte),用于存储大型设计的配置信息;64位宽256Mbyte DDR2小型DIMM(SODIMM),兼容EDK 附带的IP及驱动程序;板载32位ZBT同步SRAM 和Intel P30 StrataFlash;可编程系统时钟发生器,RS-232接口和许多其他I/O设备与接口等。评估板上的众多资源为本项目的设计和开发带来了极大的便利。整个系统的框图如下图1所示。
       
       
        图1 系统的整体框图
       
        下面简单介绍一下各部分的原理
       
       
[*]                 数字视频流的解码
        在Virtex-5 OpenSPARC评估板上,带有视频解码芯片AD9980,该芯片是一个8bit,95MSPS,带有模拟接口,专门用于捕捉YPBPR视频和RGB图像信号的视频解码芯片,它的图像分辨率最高可到达1024x768,此时的刷新频率为85Hz。本次设计视频流的输入格式为640x480,刷新频率为60Hz。AD9980芯片采用IIC总线,通过配置部分寄存器,设置输入视频的格式,可以从输入的视频流中分离出RGB 8bit分量和场行信号。
       
       
[*]                 摄像头数据的获取
        为了能准确的获取图像信号,本设计采用数字摄像头OV7670,其带有标准的SCCB接口,同时兼容IIC总线接口,因此可以在程序设计上,可以采用通用的IIC配置程序,简化设计,减少设计量。OV7670支持VGA、CIF和从CIF到40x30的图像尺寸。OV7670输出为8bit的图像数据,通过选择输出图像的格式,8bit的数据代表了不同的RGB分量。同时OV7670还能直接输出场行信号,但与标准的VGA场行信号不尽相同。对于OV7670的使用,重点在于寄存器的设置和时钟信号的选择。
       
       
[*]                 数据的缓存
        OV7670输出的数字图像信号,在进行处理之前,还必须进行必要的缓冲,这是因为选择不同的数据格式,8bit的数据代表了不同的RGB分量,不能直接同AD9980解码后的RGB分量进行叠加,另外OV7670输出的场行信号也与标准的场行信号存在差异。在Virtex-5 XC5VLX110T FPGA中含有丰富的块RAM,将其配置成FIFO,非常适合于大量高速数据的缓冲处理。
       
       
[*]                 动作的识别
        人体动作的识别是本次设计的重中之重,也是最为困难的地方。为了能够准确的判断出人体的动作,需要非常精密的算法。本项目类似于运动物体检测,有关的算法还正在研究之中。
       
       
[*]                 图像的叠加
        图像的叠加原理,类似于字母的叠加,这部分的设计不是很难,只需要将AD9980和OV7670解码出来的RGB颜色分量叠加在一起即可,但是要做到视频图像画面的稳定,不出现画面的跳动、串帧,需要仔细研究VGA时序。
       
       
[*]                 图像的显示
        在Virtex-5 OpenSPARC评估板上,带有DVI传输芯片CH7301,它的输入为RGB分量、场行信号和时钟信号。输入图像的格式可选,CH7301带有IIC总线接口,最重要的也是相关寄存器的合理配置。如果要得到VGA信号,可以使用DVI转VGA接头,将DVI信号转换成VGA信号输出。
       
       
[*]                 控制信号的传输
        当已经准确的判断出了人体的动作时,FPGA将根据此时的动作发出相应的控制信号,传递个PC机。对于控制信号的传输可以采用RS-232接口,模拟键盘,此时需要编写串口模拟键盘程序。不同的控制信号对应于不同的动作,PC机接收控制信号,控制游戏发生相应的动作。
       
        三 系统的软件设计
        系统在开始时,首先获取PC机的视频流数据,然后通过摄像头得到人体动作的图像数据,在数据经过缓冲处理、识别之后,将于解码后的RGB分量相互叠加,最后通过DVI接口将视频数据输出至显示器,同时FPGA将控制信号传送给PC机,达到控制PC机中游戏的目的。系统的软件流程如下图2所示。
       
       
       
        图2 系统软件流程图
页: [1]
查看完整版本: DIY你的体感游戏:人体动作识别系统的设计,提供软硬件实现方案