使用手形辨識之嵌入式虛擬滑鼠系統

Embedded Virtual Mouse System by Using

Hand Gesture Recognition

 

摘要

  在體感技術逐漸發展下,很多遊戲都已經逐漸發展成體感控制的,但是體感所需要的深度攝影機相較於普通攝影機並不便宜,所以想要全面實施於人機介面(Human–Computer Interface)成本過高,現今的普通攝影機已經變得非常普遍且便宜,不管是公共場所、街道亦或是私人居家都很常見,因此我們利用視覺辨識的原理使用普通攝影機取代深度攝影機,完成虛擬滑鼠的功能,將手在攝影機前面擺出手勢和移動後,系統將會根據收到的影像來辨識,先抓取出膚色的部分配合motion的偵測可以找出手可能的位置來加速運算,再找出凸包點和特徵來辨識手勢,然後轉換成對應的滑鼠功能在螢幕上顯示,提供了人和機器溝通的介面,我們所設計的滑鼠至少有5種以上的手形辨識,並且有許多防止誤觸的機制,避免不小心按錯,為了配合嵌入式的環境,在演算法方面也發展了足夠的辨識率之下能夠real-time的方法。

  在公共場所方面,傳統的提款機或者高鐵訂票系統或者是電梯,等等… ,都是以觸控螢幕或者按鍵的方式,容易造成傳染病,並且不衛生,我們的產品則不需要碰觸,少了接觸病菌的風險。在私人居家方面,虛擬滑鼠可以取代遙控器來控制家電,不論是電視、冷氣、電燈等,一來省下了找遙控器的麻煩,二來更加方便且有趣。

 

演算法

  在資訊數位化的時代,日常生活已經和人機介面(Human–Computer Interface)密不可分,列如像是,提款機、訂票系統、menu選單、投幣式飲料機、電腦滑鼠,等等…,可以發現上面的系統不是按鍵式就是觸控螢幕的,觸碰的方式不但會有傳染疾病的風險,也不衛生,尤其是在剛吃完飯手油油的時候發常不方便,因此我們開發了嵌入式虛擬滑鼠系統。

  圖一是虛擬滑鼠的演算法流程圖,在影像進來以後我們會轉換成YUV420的排列方式然後將進行skin detection和motion detection,接著將對skin的區域進行labeling,這裡將會根據motion來分類為有motion和沒有motion的2種類別的物件,為了要在嵌入式環境下運作labeling特別採用快速的一種演算法,我們優化了讓它速度更快,接著過濾掉面積太小label後,我們將會開啟新的物件或者是更新原有的物件,這裡將會使用到kernel based object tracking演算法,我們修改了來符合我們的需要,接著為了要加快演算法的速度,我們將會消除一些不需要辨識的物件不是膚色或者靜止太久的物件都將直接刪除,然後是手掌截取,這個動作可以幫我們縮小範圍到手掌,刪去手臂的範圍,之後進行凸包的演算法找到凸包點,根據凸包點、重心還有中心點,我們開始辨識特定的手指是否有伸出來,然後再辨識手形是代表哪一個功能,最後交由有限狀態機來判斷滑鼠的動作,再顯示到UI的介面上面由螢幕撥放。


123

圖一、虛擬滑鼠的演算法流程圖

 

    由於抓取的膚色區域很有可能並不是只有手掌,有可能包含手臂,我們並不想要手掌以外的區域,如圖二所示,綠色為原始物件的範圍,紅色為手掌範圍,我們的系統上在使用上有個限制,必須是手掌在上,手臂在下,對綠色的範圍由上到下掃描上半部,掃到最寬的部分後 ,就是紅色的寬,然後長則是最高點到此行的兩倍,這樣手掌的範圍就找到了。

12

圖二、手掌範圍

 

 

Demo Video

 

這個頁面上的內容需要較新版本的 Adobe Flash Player。

取得 Adobe Flash Player