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