DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2070|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-27 16:25:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一 项目设计摘要
          人体特征和动作识别是非常热门的领域,相关的算法和实现方案也层出不穷。依赖于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 系统软件流程图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-30 03:25 , 耗时 0.084791 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表