DIY你的體感游戲:人體動(dòng)作識別系統的設計,提供軟硬件實(shí)現方案
一 項目設計摘要
人體特征和動(dòng)作識別是非常熱門(mén)的領(lǐng)域,相關(guān)的算法和實(shí)現方案也層出不窮。依賴(lài)于FPGA豐富的內部資源,可以實(shí)現高速的設計和數據處理。為了給人們的生活和娛樂(lè )帶來(lái)更多的樂(lè )趣,我們的設計靈感來(lái)源于一款PC游戲,將人體動(dòng)作識別和個(gè)人電腦游戲結合起來(lái),通過(guò)對人體動(dòng)作的判斷,控制游戲中相應物體的動(dòng)作,這類(lèi)似于無(wú)線(xiàn)控制,但是也不盡相同,這將是一個(gè)非常有趣并且吸引人的項目。本項目使用Virtex-5 OpenSPARC評估平臺,首先通過(guò)VGA解碼芯片,將PC機中的視頻流數據解碼出R、G、B信號值和場(chǎng)、行信號。然后使用OV7670數字攝像頭,攝取人體的手部動(dòng)作,運用一定的算法,對攝像頭數據進(jìn)行處理,判定此時(shí)的人體動(dòng)作,然后將其與RGB分量信號進(jìn)行疊加,通過(guò)配置DVI接口芯片,將疊加后的圖像送至顯示器顯示。在正確檢測出人體動(dòng)作的前提下,FPGA將向PC機發(fā)出相應的控制信號,用來(lái)控制PC機中游戲的動(dòng)作。
二 系統的原理
本設計項目為人體動(dòng)作識別,設計的重點(diǎn)在于攝像頭數據的獲取、人體動(dòng)作的正確識別、圖像的疊加、圖像的顯示以及控制信號的傳輸。本項目使用Digilent公司提供的Virtex-5 OpenSPARC評估板,板上含有Virtex-5 XC5VLX110T FPGA,2個(gè)Xilinx XCF32P Platform Flash PROMs(每個(gè)32 Mbyte),用于存儲大型設計的配置信息;64位寬256Mbyte DDR2小型DIMM(SODIMM),兼容EDK 附帶的IP及驅動(dòng)程序;板載32位ZBT同步SRAM 和Intel P30 StrataFlash;可編程系統時(shí)鐘發(fā)生器,RS-232接口和許多其他I/O設備與接口等。評估板上的眾多資源為本項目的設計和開(kāi)發(fā)帶來(lái)了極大的便利。整個(gè)系統的框圖如下圖1所示。
圖1 系統的整體框圖
下面簡(jiǎn)單介紹一下各部分的原理
- 數字視頻流的解碼
在Virtex-5 OpenSPARC評估板上,帶有視頻解碼芯片AD9980,該芯片是一個(gè)8bit,95MSPS,帶有模擬接口,專(zhuān)門(mén)用于捕捉YPBPR視頻和RGB圖像信號的視頻解碼芯片,它的圖像分辨率最高可到達1024x768,此時(shí)的刷新頻率為85Hz。本次設計視頻流的輸入格式為640x480,刷新頻率為60Hz。AD9980芯片采用IIC總線(xiàn),通過(guò)配置部分寄存器,設置輸入視頻的格式,可以從輸入的視頻流中分離出RGB 8bit分量和場(chǎng)行信號。
- 攝像頭數據的獲取
為了能準確的獲取圖像信號,本設計采用數字攝像頭OV7670,其帶有標準的SCCB接口,同時(shí)兼容IIC總線(xiàn)接口,因此可以在程序設計上,可以采用通用的IIC配置程序,簡(jiǎn)化設計,減少設計量。OV7670支持VGA、CIF和從CIF到40x30的圖像尺寸。OV7670輸出為8bit的圖像數據,通過(guò)選擇輸出圖像的格式,8bit的數據代表了不同的RGB分量。同時(shí)OV7670還能直接輸出場(chǎng)行信號,但與標準的VGA場(chǎng)行信號不盡相同。對于OV7670的使用,重點(diǎn)在于寄存器的設置和時(shí)鐘信號的選擇。
- 數據的緩存
OV7670輸出的數字圖像信號,在進(jìn)行處理之前,還必須進(jìn)行必要的緩沖,這是因為選擇不同的數據格式,8bit的數據代表了不同的RGB分量,不能直接同AD9980解碼后的RGB分量進(jìn)行疊加,另外OV7670輸出的場(chǎng)行信號也與標準的場(chǎng)行信號存在差異。在Virtex-5 XC5VLX110T FPGA中含有豐富的塊RAM,將其配置成FIFO,非常適合于大量高速數據的緩沖處理。
- 動(dòng)作的識別
人體動(dòng)作的識別是本次設計的重中之重,也是最為困難的地方。為了能夠準確的判斷出人體的動(dòng)作,需要非常精密的算法。本項目類(lèi)似于運動(dòng)物體檢測,有關(guān)的算法還正在研究之中。
- 圖像的疊加
圖像的疊加原理,類(lèi)似于字母的疊加,這部分的設計不是很難,只需要將AD9980和OV7670解碼出來(lái)的RGB顏色分量疊加在一起即可,但是要做到視頻圖像畫(huà)面的穩定,不出現畫(huà)面的跳動(dòng)、串幀,需要仔細研究VGA時(shí)序。
- 圖像的顯示
在Virtex-5 OpenSPARC評估板上,帶有DVI傳輸芯片CH7301,它的輸入為RGB分量、場(chǎng)行信號和時(shí)鐘信號。輸入圖像的格式可選,CH7301帶有IIC總線(xiàn)接口,最重要的也是相關(guān)寄存器的合理配置。如果要得到VGA信號,可以使用DVI轉VGA接頭,將DVI信號轉換成VGA信號輸出。
- 控制信號的傳輸
當已經(jīng)準確的判斷出了人體的動(dòng)作時(shí),FPGA將根據此時(shí)的動(dòng)作發(fā)出相應的控制信號,傳遞個(gè)PC機。對于控制信號的傳輸可以采用RS-232接口,模擬鍵盤(pán),此時(shí)需要編寫(xiě)串口模擬鍵盤(pán)程序。不同的控制信號對應于不同的動(dòng)作,PC機接收控制信號,控制游戲發(fā)生相應的動(dòng)作。
三 系統的軟件設計
系統在開(kāi)始時(shí),首先獲取PC機的視頻流數據,然后通過(guò)攝像頭得到人體動(dòng)作的圖像數據,在數據經(jīng)過(guò)緩沖處理、識別之后,將于解碼后的RGB分量相互疊加,最后通過(guò)DVI接口將視頻數據輸出至顯示器,同時(shí)FPGA將控制信號傳送給PC機,達到控制PC機中游戲的目的。系統的軟件流程如下圖2所示。
圖2 系統軟件流程圖
評論