?

基于FPGA的手勢識別系統研究

2023-07-10 05:47陳虹玉張福鼎
電子產品世界 2023年6期
關鍵詞:觸摸板累加器手勢

陳虹玉 張福鼎

關鍵詞:FPGA;手勢識別

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

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

0 引言

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

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

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

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

本論文的主要內容是基于FPGA 的手勢識別系統研究,先搭建了手勢識別框架,并設計手勢識別算法,外部硬件由數據收集模塊、信號處理模塊、結果顯示模塊和外部觸摸板模塊組成,再根據對應的算法來實現他們的功能。

1 基于FPGA的手勢識別系統

1.1 硬件框架

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

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

信號處理模塊首先配備了獲得信號的設備,為了得到精準的信號,我們這里采用CC2500,可以連接在FPGA 上,但是他們兩個卻絲毫沒有關系,分別處于不同的頻道,不影響各自的工作。信號處理模塊包含了多個硬件,而其中最關鍵的、最為核心的,便是FPGA 了。FPGA 的硬件構成較為復雜,其中有上萬邏輯單元等。收集模塊已經收集到了sEMG 和ACC 信號,那么在處理模塊中的主要目的就是識別這兩個信號,在接下來的軟件設計中,將會詳細說明算法。FPGA 所對應的功能已經在上述中所詳細介紹,對應的如圖2 所示。

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

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

攝像頭模塊是作為整個系統的一個關鍵,如果不能實現這一模塊,將會無法進行準確的識別,影響手勢識別結果的處理。此模塊的工作原理相當簡單,首先攝像頭鎖定人手的具體方位,向處理模塊實時運達手勢的變化,同時,鎖定了方位后,聯合傳感器,確定其他移動設備,具體應用見如圖4 所示。

1.2 軟件框架

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

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

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

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

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

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

完成分類后,把5 通道sEMG 的絕對均值組成特征向量,設計正態分布下的貝葉斯分類器對手勢動作進行精確的分類識別。分類器的結構如圖6 所示。

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

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

在本文的手勢系統中,對單手和雙手的識別是兼容的,對其數據采集后,都可以運行特征算法,并實現分類,最后在屏幕上呈現出手勢。識別結果用1 個字節表示,用bit 來顯示所代表的含義。單片機通過解析這個字節便可得知所需信息,進一步做出反應。不論是單手手勢的識別,還是雙手手勢的識別,都確保了時效性,立馬就能識別出手勢特征,對手勢識別速度的發展做出貢獻。

觸摸模塊軟件算法實現主要包括:

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

2)ucGUI 圖形用戶界面程序,設計相關操作界面;

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

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

5)LCD 的底層驅動函數。

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

猜你喜歡
觸摸板累加器手勢
密碼累加器研究進展及應用
讓打字體驗大幅提升的神器
V字手勢的由來
Fpga的信號發生器設計原理
用于時間延遲積分型圖像傳感器的流水采樣列級運放共享累加器*
筆記本觸摸板失靈的解決辦法
“指點”互聯網世界 筆記本觸摸板解讀
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合