(西華大學電氣信息學院,四川 成都 610039)
肢體語言是人類表達信息的一種重要途徑。使用人體姿態而不借助于其他設備來進行自然的人機交互成為了人機交互領域的一個新興發展方向。常用交互方式主要包括人臉識別、表情識別、手勢識別和體勢識別等。
目前研究的手勢識別系統主要有基于數據手套的手勢識別系統和基于視覺的手勢識別系統。前者需要使用者戴上數據手套[1],這就給使用者造成一定的不便;而后者在一定程度上為使用者提供了更加自然、直接的人機交互方式。目前基于視覺的手勢識別系統已有一些相對成功的實現了[2]。其中,識別率較高的大多是根據手區域的幾何特征(如手指、手指方向、手的輪廓等特征)來進行識別,也有一些是根據非幾何特征(如膚色、紋理、運動軌跡等特征)來識別;但它們識別速度差強人意[3-11]。
為同時具有較快的識別速度和較高的正確率,本文采用手指間的角度特征作為識別特征,以指尖到手掌中心的連線構成手勢骨架,通過計算手指間角度的大小和指間數量來進行手勢識別。實驗結果表明,該算法識別率高、速度快,且不受手勢方向和尺度大小的影響。
對采集到的圖像采用YCbCr顏色空間進行膚色分割。YCbCr空間中膚色聚類特性比較好[5],Y代表亮度信息,而Cb、Cr分量不受亮度影響,可以有效地將Y分離,并且Y、Cb、Cr可以由R、G、B經過線性變換得到,具有較高的計算效率。

圖1 圖像預處理框圖

(1)
(2)


圖2 手勢輪廓

圖3 計算出的距離坐標

圖4 重排后的距離坐標
通過測量得知,正常人五指分開后,手指間的角度在10~180°之間。大拇指與食指間的角度為40~90°,食指與中指、中指與無名指、無名指與小指的角度為10~35°,大拇指與小指間的角度為95~150°(這里的度數為指尖與手掌中心連線以后的角度),這為本文的算法提供了依據。本文將指尖與手掌中心坐標以直線連接,形成手形骨架,計算手指間的角度;以手心b(x0,y0)為中心,采用先計算絕對角度αr,再計算相對角度βr的方法對指尖夾角進行測量。
1)記錄指尖坐標。將檢測到的r個指尖坐標記為p1(l1,t1),p2(l2,t2),…,pr(lr,tr),(r≤5)。當檢測到1個指尖時,定義為手勢一。檢測到2個以上指尖時,進行下面的計算。
2)計算絕對角度。pr(lr,tr)為指尖坐標,b(x0,y0)為手掌中心(質心)坐標。
(1)lr-x0<0,則指尖在手心上方的一、二象限內
(3)
(2)lr-x0=0且tr-y0>0,則指尖在手心正右方,αr為零度。
(3)lr-x0=0且tr-y0<0,則指尖在手心正左方,αr為180°。
(4)lr-x0>0,則指尖在手心下方的三、四象限內
(4)
3)計算相對角度。
β1=|α2-α1|;β2=|α3-α2|;…;βr=|α1-αr|。
4)手勢判別。相對角度中,記10~35°的相對角度有c1個,40~90°的相對角度有c2個,95~150°的相對角度有c3個,若有大于180°的角度,則表示是與手指指向相反的角度,將其舍去。判別函數定義為
d(r,c1,c2,c3)=1000r+100c1+10c2+c3
(5)
對9種手勢進行定義,如表1所示。手勢輪廓如圖5所示。

表1 手勢定義

(a)手勢一 (b)手勢二 (c)手勢三

(d)手勢四 (e)手勢五 (f)手勢六

(g)手勢七 (h)手勢八 (i)手勢九
為檢驗此算法的準確性和實時性,筆者進行了實驗。上位機采用2.6 GHz、4G的PC機,以MATLAB軟件為實驗平臺,下位機為置有9個LED燈的51單片機。選取20個人,每人每個手勢采集5幅方向和尺寸各不相同的手勢圖,共900幅圖像進行測試識別,部分的手勢如圖6所示。將每個手勢識別正確的個數記錄于表2中,得到9種手勢的判定結果直方圖,如圖7所示。

圖6 部分手勢圖

人員識別正確數目手勢一手勢二手勢三手勢四手勢五手勢六手勢七手勢八手勢九1545554555255555555535553554554555555555555555555565555555457553555555855555555595455545551055555555511553555455125554555551355555555514455555455155555355541655545555517545555554184555545551954554555520555555345

圖7 9種手勢判定結果直方圖
從圖7可以看出:該算法對手勢一、三、五、八、九的判斷較為準確,對手勢二和七的判斷略顯不足,識別正確的有871幅,正確率達96.8%;在對單個手勢進行判斷識別時,5幅大小方向均不同的圖像能全部判定正確的占86.7%,正確判定4幅的占10.6%,正確判定3幅的僅占2.7%。文獻[9]采用傳統模板匹配算法進行手勢識別,所定義的4種手勢與本文中的前4種相同。本文分別采用這2種算法對4種手勢做對比實驗,其結果如表3所示。結果表明本文算法正確率較高。在實時性方面,因該算法是基于手勢的角度特征進行判定識別,在保證正確率的前提下,其計算量大大降低,處理并識別1幅320×240的原始圖像用時不超過0.05 s。

表3 對比實驗
本文提出一種基于手指角度特征的手勢識別算法,以指尖到手掌中心的連線構成手勢骨架,計算手指間角度,以角度的大小和指間數量進行分類。通過對不同人、不同方向和不同尺寸的手勢圖像進行識別判定的結果表明,該算法準確率高、實時性好,且幾乎不受手勢方向和尺寸影響。筆者的最終目的是將此識別算法應用于特殊儀器的非接觸式控制,現在正在研究中。該算法還有許多需要改進之處,如所能識別的手勢數量偏少;因此,下一步的工作重點是在保證準確率和實時性的前提下,盡可能增加識別數量,使此算法更加實用。
[1]吳江琴,高文.基于數據手套的漢語手指字母識別[J].模式識別與人工智能,1999,12(1):74-78.
[2]Wu Y, Huang T. Vision-based Gesture Recognition: a Review [J].Gesture-Based Communication in Human-Computer Interaction, 1999,1739:103-115.
[3] 荊雷,馬文君,常丹華.基于動態時間規整的手勢加速度信號識別[J].傳感技術學報,2012,25(1):18-22.
[4] 向守兵,蘇光大,任小龍,等.實時手指交互系統的嵌入式實現[J].光學精密工程,2011,19(8):42-50.
[5] 肖冰,王映輝.人臉識別研究綜述[J].計算機應用研究,2005,22(5):1-5.
[6] 唐文平,胡慶龍.基于多目標Camshift 手勢識別[J].電子科技,2012, 25(2): 71-81.
[7] 李文生,解梅,鄧春健.基于機器視覺的動態多點手勢識別方法[J]. 計算機工程設計,2012, 5(8):60-72.
[8] Zhang Xu,Chen Xiang,Li Yin. A Framework for Hand Gesture Recognition Based on Accelerometer and EMG Sensors[J].IEEE Transactions on Systems, Man, and Cybernetics, Part A ,2011,41(6): 1064-1076.
[9] 程文山,談國新.基于膚色分割和Camshift的手勢識別研究[D].武漢:華中師范大學,2009.
[10] 曹雛清,李瑞峰,趙立軍.基于深度圖像技術的手勢識別方法[J].計算機工程,2012,38(8):16-21.
[11] 譚同德,郭志敏.基于雙目視覺的人手定位與手勢識別系統研究[J].計算機工程與設計,2012,33(1):259-264.