新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的手勢識別系統(tǒng)研究

基于FPGA的手勢識別系統(tǒng)研究

作者:陳虹玉,張福鼎(江蘇第二師范學(xué)院物理與信息工程學(xué)院,江蘇省基礎(chǔ)教育大數(shù)據(jù)應(yīng)用工程研究中心,南京 210013) 時間:2023-06-23 來源:電子產(chǎn)品世界 收藏
編者按:相比于傳統(tǒng)鍵盤鼠標(biāo)人機(jī)交互模式,手勢識別具有更大發(fā)展?jié)摿?,本文先搭建了一個有關(guān)手勢識別的框架,然后再和FPGA的硬件技術(shù)相關(guān)聯(lián),將FPGA融入手勢識別之中,并設(shè)計自己的手勢識別算法,使得能夠在平臺上得以實現(xiàn)。


本文引用地址:http://www.butianyuan.cn/article/202306/447899.htm

*基金項目:江蘇省高等學(xué)校大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目,項目編號:202110900004Y;

江蘇省高校自然科學(xué)研究面上項目,項目編號:16KJB510007;

教育部產(chǎn)學(xué)合作協(xié)同育人項目,項目編號:201901163002、202002094006

作者簡介:陳虹玉(2001—),女,2019級電子信息工程專業(yè)本科生

通信作者:張福鼎(1982—),男,講師(Email:zfdc@qq.com)

0 引言

在當(dāng)今社會很多地方都要用到,具有非常廣闊的市場前景,通過不斷研發(fā)已經(jīng)成為一個成熟器件[1],作為一種可編程邏輯器件,具有半定制、電路靈活,門電路數(shù)多、實時性強(qiáng)、低成本等優(yōu)點[2],在市場上有了立足之地,取得優(yōu)異成績,并朝著多元化發(fā)展方向發(fā)展[3]。 最大特點是靈活可實現(xiàn)各種電路設(shè)計,因此漸漸取代其他電子設(shè)計,成為了眾多廠商及個人的首選[4]

先前的人機(jī)交互是傳統(tǒng)的鍵盤及鼠標(biāo)模式,而現(xiàn)在的交互模式更加寬泛[5]。手勢是最能表達(dá)人類動作的一種形式,反映出來的是最直觀的感受,在這計算機(jī)流行的時代,能否將手勢和機(jī)器語言聯(lián)系在一起,呈現(xiàn)出人機(jī)互動的形式,特別是當(dāng)今游戲盛行的時代,手語識別系統(tǒng)也可以應(yīng)用到游戲中[6]。最常見的體感游戲便是最好的證明,人類通過穿戴體感設(shè)備,從而將人體運(yùn)動傳輸?shù)诫娔X中,經(jīng)過處理并及時顯現(xiàn)出來[7]

因此在生活中的運(yùn)用十分廣泛,所以越來越多的人致力于此項研究,類如數(shù)據(jù)手套的常見識別系統(tǒng)也是層出不窮,而手勢系統(tǒng)這一新生事物還處于研發(fā)階段,所以價格還很高,不適用于普及當(dāng)今社會,人們著力于研究的發(fā)展技術(shù),力圖在方面獲得更多的成功。手勢識別系統(tǒng)的研究的重要性已經(jīng)不言而喻,在未來的生活中,手勢識別將會迅速發(fā)展[8]

手勢識別是人類和儀器溝通的橋梁,能否完成手勢識別這一任務(wù),也關(guān)系到和電腦等機(jī)器的互動和溝通[9]。然而,現(xiàn)在手勢識別技術(shù)還不成熟,基于計算機(jī)視覺的交互系統(tǒng)容易收到外界干擾,不能識別大量手勢[10]。手勢跟蹤等[11]穩(wěn)定性差,使得手勢成為一種復(fù)雜可變形體,有時甚至不能準(zhǔn)確識別出來[12]。

本論文的主要內(nèi)容是基于 的手勢識別系統(tǒng)研究,先搭建了手勢識別框架,并設(shè)計手勢識別算法,外部硬件由數(shù)據(jù)收集模塊、信號處理模塊、結(jié)果顯示模塊和外部觸摸板模塊組成,再根據(jù)對應(yīng)的算法來實現(xiàn)他們的功能。

1 基于FPGA的手勢識別系統(tǒng)

1.1 硬件框架

基于FPGA 的硬件框架如圖1 所示,分為數(shù)據(jù)采集模塊,信號處理模塊,結(jié)果顯示模塊,外部觸摸板模塊和攝像頭模塊。

1687497078543450.png

為了日??梢噪S身攜帶,也為了方便我們的穿戴,所以安裝在人體身上的模塊必須要小巧簡單,因此選擇了尺寸較小的采集模塊,具體的數(shù)據(jù)為長30 mm,寬15mm,厚2mm。具體的由控制器和傳感器組合而成,通過捕捉人體移動信號,將信號從控制器發(fā)向傳感器,由傳感器進(jìn)行數(shù)據(jù)采樣,最后再通過控制芯片傳遞給其他設(shè)備。經(jīng)測定,sEMG 傳感器工作時的信噪比保持在20dB 以上,ACC 芯片在運(yùn)轉(zhuǎn)之時有很多狀態(tài),尤其是在1.5 gn 時,會形成一個驚人的信號,分辨率超出很多科學(xué)家的想象。此時對信號傳輸?shù)囊髸浅8?,需要不容易產(chǎn)生波動、大小合適,所以在此推薦CC2500 這個芯片。CC2500 之所以獲得眾多公司的青睞,除了以上的特長,還能夠幫助公司節(jié)約能源損耗,為公司的利益也是謀取了福利。在數(shù)據(jù)采集模塊中,這兩個芯片不可或缺,起到了至關(guān)重要的作用,更加有利于對實時數(shù)據(jù)的采集。

信號處理模塊首先配備了獲得信號的設(shè)備,為了得到精準(zhǔn)的信號,我們這里采用CC2500,可以連接在FPGA 上,但是他們兩個卻絲毫沒有關(guān)系,分別處于不同的頻道,不影響各自的工作。信號處理模塊包含了多個硬件,而其中最關(guān)鍵的、最為核心的,便是FPGA 了。

FPGA 的硬件構(gòu)成較為復(fù)雜,其中有上萬邏輯單元等。收集模塊已經(jīng)收集到了sEMG 和ACC 信號,那么在處理模塊中的主要目的就是識別這兩個信號,在接下來的軟件設(shè)計中,將會詳細(xì)說明算法。FPGA 所對應(yīng)的功能已經(jīng)在上述中所詳細(xì)介紹,對應(yīng)的如圖2 所示。

1687497191167882.png

結(jié)果顯示模塊的功能是顯示識別的結(jié)果,要求在LCD屏上快速顯現(xiàn)出來,對其處理速度有一定要求,所以我們在此模塊配備了LCD屏及單片機(jī),采用的單片機(jī)也具有超高的配置,和如今的USB 接口一樣,傳輸速度使得我們立馬就能在LCD 屏上看見結(jié)果。

觸摸板結(jié)構(gòu)圖如圖3 所示,核心處理器是STM32微處理器,為了方便具體使用,在處理器上外接一塊控制板,觸摸屏控制板的型號是TSC2046,觸摸板在模塊中的作用就是選擇手勢識別出來的結(jié)果,如果沒有與之相匹配的,就通過觸摸板,輸入自己想表達(dá)的手勢,另外,觸摸板上還能顯示其他信息,如顯示電池容量,顯示實時溫度等。

1687497251211362.png

攝像頭模塊是作為整個系統(tǒng)的一個關(guān)鍵,如果不能實現(xiàn)這一模塊,將會無法進(jìn)行準(zhǔn)確的識別,影響手勢識別結(jié)果的處理。此模塊的工作原理相當(dāng)簡單,首先攝像頭鎖定人手的具體方位,向處理模塊實時運(yùn)達(dá)手勢的變化,同時,鎖定了方位后,聯(lián)合傳感器,確定其他移動設(shè)備,具體應(yīng)用見如圖4 所示。

1687497325120172.png

1.2 軟件框架

當(dāng)信號發(fā)生在活動段的時候,屏幕上就會出現(xiàn)sEMG信號,此時意味著活動段算法開始執(zhí)行。因為信號的差異性,所以要對收集到的數(shù)據(jù)進(jìn)行整理,然后傳遞給下一模塊,在下一模塊中檢測接收數(shù)據(jù),根據(jù)傳遞的順序,依次接收信號。在活動段中,傳送的單位是幀,也就是說完成傳遞個1 信號,就意味著1 幀的結(jié)束。

活動段獲取算法是數(shù)據(jù)采集模塊所對應(yīng)的軟件算法,通過計算平均絕對值,再用它來設(shè)計算法,具體完成操作如圖5 所示。由于不同的通道信號的數(shù)值是各不相同的,所以要計算出其總和,那么就需要采用以下方法,設(shè)置1個累加器1,用幀同步信號作為累加器1 的清零端,用位同步信號作為累加器1 時鐘,數(shù)據(jù)取絕對值后流入累加器1,每個幀同步來到時累加器1 輸出1次結(jié)果。32 點移動平均用移位寄存器的結(jié)構(gòu)實現(xiàn),幀同步信號為移位寄存器提供時鐘,在每個時鐘周期進(jìn)行1次移位,累加器2 加入新進(jìn)寄存器的值,減去移出寄存器的值,累加的結(jié)果與閾值比較。采用了這種簡便的算法后,給活動段的檢測帶來了不少好處,既提升了檢測效率,又沒有過多的浪費(fèi)資源。為了更好的檢測兩只手同時做出的手勢,我們在此放置了兩個檢驗?zāi)K。

1687497430274542.png

在這特征算法這一階段,首要目標(biāo)就是找到特征值,就是對收集到的信號,計算出它的絕對平均值。在外面的SRAM 充當(dāng)了數(shù)據(jù)收集的作用,里面集合了完整的數(shù)據(jù),此時的信號被傳送到下一階段之時,它所對應(yīng)的在SRAM 中就有唯一的地址,然后對其做好記號,傳送結(jié)束后,此時又有新的對應(yīng)的地址,并做好新的標(biāo)記。接下來,就可以通過整理出來的地址數(shù)據(jù),先分別提取出來,再完成運(yùn)算。

ACC 信號是本次實驗中一個不可或缺的信號,其主要目的在于確定手勢的具體地址,為了更好的確定其坐標(biāo),可以用公式AX i/N u=Σ|X i-A|/N,后者是為了了解手勢的擺動幅度。經(jīng)過嚴(yán)格的推理和證明,發(fā)現(xiàn)這兩個公式可以簡化,并合成為1 個新的公式,即F=Σ|X i-C|/N,這個公式可以同時計算出平均值和一階矩,可以說是十分便利,只需滿足條件C =0 和C =A,毫無疑問,這種計算方法有利的提高了計算的效率,也有效的解決了過多的占用FPGA 資源的問題,達(dá)到了省時省力的效果。

因為采用的是除法算法,所以內(nèi)部占據(jù)了數(shù)量龐大的邏輯單元,從多次運(yùn)算的實踐中可以看到,通過反復(fù)的算法實現(xiàn),ACC 的出現(xiàn)是固定的,局限在固定數(shù)值之內(nèi),一般認(rèn)為這個數(shù)值是256,再根據(jù)乘法運(yùn)算,把所有可能出現(xiàn)的N 的倒數(shù)1/N(0~255)乘以65 536(2的16 次方)得到65 536/N,按照一一對應(yīng)的原則,依次傳遞給RAM,將生成的地址,再傳遞給ROM,最后能夠計算出結(jié)果為65 536/N。接下來的步驟就是借助乘法器,在位數(shù)移動16 位的基礎(chǔ)之上進(jìn)行乘法運(yùn)算,最終獲取結(jié)果,最準(zhǔn)確的數(shù)值可以達(dá)到萬分之一,采用這種方法,既節(jié)約了計算的時間,又達(dá)到了精度高的要求,對于能夠?qū)崟r的進(jìn)行大量的特征運(yùn)算,達(dá)到了這一目的。

識別算法分為兩個步驟:首先,為了更好地確定其坐標(biāo),根據(jù)之前算法得出的特征進(jìn)行第1 次分類,然后結(jié)合sEMG 信號,對其第2 次分類。為了確定手勢的具體位置,我們進(jìn)行以下步驟:先完成特征算法,計算出對應(yīng)的平均值,最后對均值進(jìn)行分析判斷得出。要實現(xiàn)對靜態(tài)和動態(tài)的區(qū)分,用兩者的一階矩作為判定的依據(jù),當(dāng)大于其對應(yīng)的閾值時是動態(tài)手勢,與之相反,就是靜態(tài)手勢。在識別算法中的分類不是沒有好處的,如果沒有進(jìn)行分類識別,會給這一算法帶來巨大的計算量,影響識別效率。

完成分類后,把5 通道sEMG 的絕對均值組成特征向量,設(shè)計正態(tài)分布下的貝葉斯分類器對手勢動作進(jìn)行精確的分類識別。分類器的結(jié)構(gòu)如圖6 所示。

image.pngimage.png

圖6 分類器結(jié)構(gòu)

其中,X=(x1x2, …,xd-1,xd),gi(X) 為類別wi的判別函數(shù),N 為類別數(shù)。在這個手勢識別算法中,分類器采用了對應(yīng)的算法,對這個規(guī)則我們給予詳細(xì)的介紹,存在一個密度函數(shù)P(X|wi) 符合給定條件,呈正態(tài)分布的形式,μi 和Σi 分別表示X 在類別wi 下的均值向量和協(xié)方差陣。經(jīng)過化簡,我們可以得到如下公式gi(X)=-ln|Σ|-(X-μi )Σ-1i(X-μi ),i=1,2,3,…,N。

為了增加函數(shù)的準(zhǔn)確性,采用不同的數(shù)據(jù),代入分類器實踐操作,這樣就能夠了解函數(shù)的組成部分。此時的算法還不能準(zhǔn)確的對手勢進(jìn)行識別,仍需要借助在電腦上模擬完成。經(jīng)過反復(fù)的訓(xùn)練,將生成的數(shù)據(jù)同函數(shù)融合在一起,便可以載入FPGA 的自生成ROM 中。最后對特征向量不斷的運(yùn)算,在電腦上就可以呈現(xiàn)結(jié)果。

在本文的手勢系統(tǒng)中,對單手和雙手的識別是兼容的,對其數(shù)據(jù)采集后,都可以運(yùn)行特征算法,并實現(xiàn)分類,最后在屏幕上呈現(xiàn)出手勢。識別結(jié)果用1 個字節(jié)表示,用bit 來顯示所代表的含義。單片機(jī)通過解析這個字節(jié)便可得知所需信息,進(jìn)一步做出反應(yīng)。不論是單手手勢的識別,還是雙手手勢的識別,都確保了時效性,立馬就能識別出手勢特征,對手勢識別速度的發(fā)展做出貢獻(xiàn)。觸摸模塊軟件算法實現(xiàn)主要包括:

1)ucos 系統(tǒng)建立任務(wù),包括主任務(wù),用戶界面任務(wù),CAN 報文接收任務(wù)等;

2)ucGUI 圖形用戶界面程序,設(shè)計相關(guān)操作界面;

3)中斷服務(wù)程序,執(zhí)行CAN 總線接收的中斷處理;

4)硬件平臺初始化程序,包括時鐘,CAN 模塊,觸摸屏等等的初始化;

5)LCD 的底層驅(qū)動函數(shù)。

攝像上傳識別算法實現(xiàn)其主要思想是在攝像頭固定的情況下,通過減去背景圖像方法進(jìn)行運(yùn)動部分識別。在采集攝像頭數(shù)據(jù)后,首先要對背景進(jìn)行建模。本系統(tǒng)采用基于統(tǒng)計的背景模型提取方法,以一段時間內(nèi)某像素點所在區(qū)域亮度的平均值作為該像素點的背景值。之后對實時圖像進(jìn)行高斯平滑,并與背景圖像相減再二值化,將得到的差值圖像通過膨脹、腐蝕等形態(tài)學(xué)濾波后,尋找最大連通區(qū)域,從而確定運(yùn)動部位坐標(biāo)。

參考文獻(xiàn):

[1] 羅娜.基于OpenCV的自然手勢識別與交互系統(tǒng)研究[D]: 廣州:廣東工業(yè)大學(xué), 2012.

[2] GUPTA A, V K SEHRAWAT, M KHOSLA. FPGA based real time human hand gesture recognition System[J]. Procedia Technology, 2012, (6)98-107.

[3] 周天彤等. 基于unity和kinect的交警手勢識別仿真系統(tǒng)的設(shè)計和實現(xiàn)[J].計算機(jī)測量與控制, 2016, 24(5): 156-159.

[4] 龔陶波.基于計算機(jī)視覺的靜態(tài)手勢識別系統(tǒng)[D].武漢:華中師范大學(xué), 2008.

[5] 譚同德,郭志敏.基于雙目視覺的人手定位與手勢識別系統(tǒng)研究[J].計算機(jī)工程與設(shè)計,2012,33(1): 259-264.

[6] 湯志彥,馮哲.適用于機(jī)器人視覺的手勢識別系統(tǒng)[J].計算機(jī)工程與應(yīng)用, 2005(16): 51-54.

[7] 曾維.手勢識別系統(tǒng)中手指及指尖檢測方法[J].國外電子測量技術(shù), 2013, 32(4): 39-42.

[8] 杜釗君.基于體感傳感器的手勢識別及人機(jī)交互系統(tǒng)研究[D].武漢:武漢科技大學(xué), 2013.

[9] 劉江華,陳佳品,程君實.用于人機(jī)交互的靜態(tài)手勢識別系統(tǒng)[D].紅外與激光工程, 2002(6): 499-503.

[10] 王茂吉.基于視覺的靜態(tài)手勢識別系統(tǒng)[J].哈爾濱:哈爾濱工業(yè)大學(xué), 2006.

[11] 魯姍丹,周松斌,李昌.基于多光源紅外傳感技術(shù)的手勢識別系統(tǒng)[J].自動化與信息工程, 2015, 36(2): 22-26.

[12] 徐成,馬翌倫,劉彥.一種基于嵌入式系統(tǒng)實時交互的手勢識別方法[J].計算機(jī)應(yīng)用研究,2011,28(7): 2782-2785.

(本文來源于《電子產(chǎn)品世界》雜志2023年6月期)



關(guān)鍵詞: 202306 FPGA 手勢識別

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉