<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 基于Zynq平臺硬件加速的體感游戲

基于Zynq平臺硬件加速的體感游戲

作者:韋笠 陳銳 毛穎 王曰海 時(shí)間:2016-10-27 來(lái)源:電子產(chǎn)品世界 收藏
編者按:隨著(zhù)嵌入式系統的發(fā)展,我們已經(jīng)越來(lái)越離不開(kāi)它們。本文設計了一個(gè)基于Xilinx ZYNQ平臺硬件加速的體感游戲。首先,我們完成了手勢方向控制貪食蛇游戲,該游戲通過(guò)進(jìn)行膚色檢測、手勢跟蹤并分析軌跡,來(lái)控制貪食蛇的位置。然后,我們實(shí)現了用verilog語(yǔ)言編寫(xiě)的運行在FPGA上的膚色學(xué)習和識別算法。最后,軟件游戲調用基于A(yíng)XI總線(xiàn)的協(xié)議與硬件加速單元通信,膚色識別算法運行時(shí)間減少了43.2713%,達到了加速的效果。

作者/ 韋笠 陳銳 毛穎 王曰海 浙江大學(xué) 信息與電子工程學(xué)院(浙江 杭州 310027)

本文引用地址:http://dyxdggzs.com/article/201610/311930.htm

摘要:隨著(zhù)嵌入式系統的發(fā)展,我們已經(jīng)越來(lái)越離不開(kāi)它們。本文設計了一個(gè)基于Xilinx ZYNQ平臺硬件加速的體感游戲。首先,我們完成了手勢方向控制貪食蛇游戲,該游戲通過(guò)進(jìn)行膚色檢測、手勢跟蹤并分析軌跡,來(lái)控制貪食蛇的位置。然后,我們實(shí)現了用verilog語(yǔ)言編寫(xiě)的運行在上的膚色學(xué)習和識別算法。最后,軟件游戲調用基于A(yíng)XI總線(xiàn)的協(xié)議與硬件加速單元通信,膚色識別算法運行時(shí)間減少了43.2713%,達到了加速的效果。

前言

  嵌入式系統發(fā)展至今,已被廣泛應用在手機、手環(huán)、平板電腦等設備上。然而,由于其中央處理器處理性能有限,異構處理越來(lái)越受到關(guān)注。異構處理是將通用處理器(如ARM芯片)與數字信號處理器(DSP,Digital Signal Process)、現場(chǎng)可編程門(mén)陣列(,Field Programmable Gate Array)協(xié)同處理。有觀(guān)點(diǎn)認為,隨著(zhù)應用的變化、需求的增長(cháng)以及技術(shù)的發(fā)展,異構多核必將成為未來(lái)多核的發(fā)展主流[1]。

  Xillinx公司推出的Zynq-7000系列全可編程片上系統(SoC, System on Chip)即是這樣的異構芯片。它集成ARM Cortex A9雙核和芯片,為兩者協(xié)同處理提供了可能。以為例,使用FPGA+ARM協(xié)同處理比單純使用ARM處理器進(jìn)行直方圖均衡化、Sobel邊緣檢測和3×3中值濾波分別提高了5.5倍、2.4倍和10.9倍[2]??梢?jiàn),ARM+FPGA的處理架構在上有很大的潛力。本文以Zynq系列的Zybo開(kāi)發(fā)板為平臺,設計了一個(gè)手勢控制的貪食蛇游戲。

1 硬件部分

  1.1 硬件架構

  本項目的目標在于硬件加速,即讓FPGA承擔一部分的任務(wù)。為了讓整個(gè)系統協(xié)同工作起來(lái),就需要在Cortex-A9核和FPGA邏輯資源之間建立通信的通道,這條通道就是AXI總線(xiàn)。最終我們選擇了Xillybus公司的Xillybus Lite總線(xiàn)[3]。在架構上,它是位于A(yíng)XI總線(xiàn)[4]之下的一個(gè)通信協(xié)議。系統架構如圖1所示,硬件部分整體框架如圖2所示。

  從Linux系統到FPGA部分的整體框架圖如圖2,在Linux系統中分別編寫(xiě)了兩個(gè)設備的驅動(dòng)文件:xillybus_write_32 和xillybuf_read_32,用于與xillybus_lite總線(xiàn)進(jìn)行通信。Linux系統向xillybus_write_32設備中傳入數據流,數據流位寬為32bit,通過(guò)AXI總線(xiàn)和xillybus_lite總線(xiàn)傳入FIFO1,到達膚色識別IP核模塊,由膚色識別產(chǎn)生膚色判別結果,并將結果傳入FIFO2,然后經(jīng)過(guò)xillybus_lite總線(xiàn)協(xié)議和AXI總線(xiàn)協(xié)議,到達xillybus_read_32設備文件,在Linux系統中可以從xillybus_read_32設備文件中讀出。

  1.2 膚色識別算法

  皮膚模型中有單高斯、混合高斯[5]、貝葉斯模型和橢圓模型等。經(jīng)過(guò)前人學(xué)者大量的皮膚統計信息可以知道,如果將皮膚信息映射到YCrCb空間,這些皮膚像素點(diǎn)近似成一個(gè)橢圓分布[6]。因此,如果我們得到了一個(gè)CrCb的橢圓,下次來(lái)一個(gè)坐標(Cr, Cb)我們只需判斷它是否在橢圓內(包括邊界),如果是,則可以判斷其為皮膚,否則就是非皮膚像素點(diǎn)[7-8]。

  因此,我們采集了膚色的樣本點(diǎn),將其投影到此平面,投影后,進(jìn)行了相應的非線(xiàn)性變換K-L[9]變換,進(jìn)而形成統計橢圓模型如圖3(a)所示。

  由于在FPGA中實(shí)現乘除法器比較麻煩,且會(huì )引入較大的時(shí)延,因此,我們用一幅圖像來(lái)存儲這個(gè)橢圓,而不是直接采用橢圓數學(xué)方程。該圖像是二值圖像,即橢圓區域內部為白色,其它地方為黑色。當其需要判斷其它像素點(diǎn)時(shí),只需將該像素點(diǎn)轉換成Cr、Cb兩個(gè)坐標,然后在上面的橢圓中找到該坐標的值,如果非0,則為皮膚,反之亦然。橢圓模型的二值圖像如圖3(a)所示。在FPGA中,我們使用了一個(gè)位寬為1bit,深度為65536bit,地址線(xiàn)寬為16bit的ROM核來(lái)存儲這張圖片。如圖4所示。

  1.3 膚色識別算法的實(shí)現

  由于膚色識別算法在YCrCb空間中可近似用橢圓模型進(jìn)行模擬,因此,要先將RGB空間的像素點(diǎn)轉化到YCrCb空間。 轉換公式如下:

  Y =(0.257 * R) + (0.504 * G) + (0.098 * B) + 16

  Cr=(0.439 * R) - (0.368 * G) - (0.071 * B) + 128

  Cb=-(0.148 * R) - (0.291 * G) + (0.439 * B) + 128

  由于涉及到了浮點(diǎn)數的乘法,現將系數整形化。即在上述公式中左右各乘以1024,即左移10位。

  Y << 10 = (12’d263 * R) + (12’d516 * G) + (12’d100 * B) + 24’d16384

  Cr << 10 = (12’d450 * R) - (12’d377 * G) - ( 12’d73 * B) + 24’d131072

  Cb << 10 = -(12’d152 * R) - (12’d298 * G) + (12’d450 * B) + 24’d131072

  因為這里用到了9次12bit和8bit的乘法,所以就用了9個(gè)12bit和8bit的乘法器。

  圖5是RGB轉YUV部分的仿真圖,可以看到,轉換基本是正確的,但是從RGB轉到YUV有三個(gè)時(shí)鐘的時(shí)延。從RGB轉到YUV有三個(gè)時(shí)鐘的時(shí)延,由YUV從ROM核中得到膚色判決結果有2個(gè)時(shí)鐘的時(shí)延,所以從RGB值傳入膚色判決IP核到得到膚色判決結果有5個(gè)時(shí)鐘的時(shí)延。

  圖6是膚色檢測模塊實(shí)測的效果,除了背后的柜子由于比較接近膚色,有一定的誤判,可以認為效果還不錯。

2 軟件部分

  我們先在Zybo上配置從SD卡啟動(dòng)的嵌入式Xilinux系統,并編譯了OpenCV2.4.10的源碼,這樣就可以使用OpenCV的視覺(jué)庫函數了。

  在軟件代碼部分,主要利用膚色模型分割手部,并追蹤手部運動(dòng)軌跡,根據手部頂點(diǎn)運動(dòng)軌跡判斷出手勢運動(dòng)方向。步驟如下:

  1)對于每一幀輸入的圖像,首先進(jìn)行中值濾波等預處理,然后利用膚色模型分割出手勢部分。膚色模型主要是先將圖像轉換到YCrCb空間,然后根據膚色在YCrCb空間的橢圓分布來(lái)判別屬于膚色的像素點(diǎn),并形成膚色二值化圖像。

  2)經(jīng)過(guò)一些圖像去噪和形態(tài)學(xué)腐蝕膨脹操作去掉一些較大的噪點(diǎn)。假設圖像區域沒(méi)有頭部的干擾,那么面積最大的輪廓即為手部,確定手部輪廓后,找到中心點(diǎn)和頂點(diǎn)(即輪廓中縱坐標最小的點(diǎn),即最靠上方的點(diǎn))。

  3)確定軌跡和判斷方向,將方向參數傳遞給游戲部分即可。方向參數的確定主要依據相鄰兩幀的頂點(diǎn)坐標值。判斷邏輯如圖7所示。

  游戲部分,如圖8(a)所示,每次接收到判斷出的手勢方向后改變蛇的方向即可。貪食蛇的前進(jìn)是使用rectangle函數一楨一幀畫(huà)出來(lái)的,畫(huà)果實(shí)使用了circle函數,隨機生成果實(shí)使用了cvRandInt函數,充分利用了OpenCV的繪圖功能。

3 實(shí)驗結果

  我們使用C語(yǔ)言的time函數庫來(lái)計算運行膚色識別代碼段的時(shí)間。以處理480*640的彩色視頻流為例,計算運算50幀的平均耗時(shí),并計算了10組,求最終平均數。純軟件膚色識別代碼運行的平均耗時(shí)為223982.611μs,有硬件加速的膚色識別算法運行時(shí)間是127062.454μs,耗時(shí)減少了43.2713%,達到了硬件加速的效果。

  有研究者在Zynq平臺上設計了一個(gè)基于膚色識別的人臉檢測算法,使用了硬件加速。仿真結果表明,使用硬件加速可提高80%的效率[10]??梢?jiàn),設計達到了硬件加速的效果,也還有值得改進(jìn)的空間。

4 結束語(yǔ)

  本文設計了一個(gè)基于Zynq平臺硬件加速的體感游戲,內容包括軟件程序編寫(xiě)、硬件算法設計和系統硬件加速。我們對膚色識別算法的硬件加速,使這部分運行時(shí)間減少了43.2713%,提升了系統效率,達到了加速的目的。

  基于FPGA的異構計算仍有很大的潛力,包括算法在硬件平臺上的移植、硬件軟件部分的交互、系統性能的提升等。對于嵌入式系統的發(fā)展,異構計算有著(zhù)長(cháng)遠而重要的意義。

參考文獻:

  [1]陳芳園,張冬松,王志英.異構多核處理器體系結構設計研究[J].計算機工程與科學(xué),2011,12:27-36.

  [2]劉宏,符意德.基于的圖像處理系統平臺設計[J].計算機與現代化,2015,08:43-47.

  [3]Lin Z, Chow P. Zcluster: A zynq-based hadoop cluster[C]//Field-Programmable Technology (FPT), 2013 International Conference on. IEEE, 2013: 450-453.

  [4]高偉林,曹峰,佟川,等.基于Zynq的圖形生成電路設計與實(shí)現[J].液晶與顯示, 2014, 29(6): 944-949.

  [5]Vezhnevets V, Sazonov V, and Andreeva A. A survey on pixel-based skin color detection techniques. In Graphicon, Moscow, Russia, 2003: 85–92.

  [6]Bojic N and Pang K K. Adaptive skin segmentation for head and shoulder video sequences. Visual communications and Image Processing, SPIE, 2000, 4067: 704-711.

  [7]Huynh-Thu Q, Meguro M, Kaneko M. Skin-color extraction in images with complex background and varying illumination[C]//Applications of Computer Vision, 2002.(WACV 2002). Proceedings. Sixth IEEE Workshop on. IEEE, 2002: 280-285.

  [8]學(xué)習OpenCV——膚色檢測:橢圓模型 (&最大連通區域). http://blog.csdn.net/yangtrees/article/details/8269984.2012-12-07/2016-05-01.

  [9]章毓晉.圖象工程(上)[M].北京:清華大學(xué)出版社.1999: 68-70.

  [10]T. Han, G. W. Liu, H. Cai and B. Wang, "The face detection and location system based on Zynq," Fuzzy Systems and Knowledge Discovery (FSKD), 2014 11th International Conference on, Xiamen, 2014, pp. 835-839.


本文來(lái)源于中國科技期刊《電子產(chǎn)品世界》2016年第10期第50頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處。



關(guān)鍵詞: 圖像處理 FPGA Zynq芯片 201611

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>