賁永明
基于運動方向跟蹤的手勢控制平臺算法實現
賁永明
(本課題受“國家級大學生科學研究與創業行動計劃”項目資助 )
賁永明 管孟凌 楊 丹 葉 青
北方工業大學
以計算機為代表的智能設備,在現代化生活中起到了不可替代的作用,隨著人們對智能化的不斷追求,能夠讓機器主動理解人類的語言與意圖,日益成為人們研究的熱點。本文提出的基于運動方向跟蹤的手勢控制平臺便是其中的一個嘗試。平臺基于OPENCV函數庫,由C語言編寫而成。系統通過跟蹤主體頭部或手部的運動方向來完成對智能系統(如智能小車)的指揮。首先通過膚色檢測提取視頻指令中的手勢信息,然后通過后端的圖像處理,準確識別其中的控制信息,并通過串口控件發出指令。實驗結果表明,該系統可以準確實時地識別人類的指揮意圖,并作出準確的指揮動作。本文提出的系統具有很強的實用性,可以為人們的生活帶來更加智能化的體驗。
當今社會是一個智能化與信息化的社會,以計算機為代表的智能設備得以讓人們享受便利舒適的生活。隨著智能化水平的提升,人們嘗試讓機器能夠主動識別人類的意圖,理解人類的語言,從而更好地為人類服務。其中,肢體語言因其簡單高效的特點,成為這項研究中的一個熱點。
捕捉人體的肢體動作,離不開視頻采集設備的協助,從而不可避免的涉及圖像處理技術。圖像處理是通過計算機對圖像進行去除噪聲、增強、復原、分割、提取特征等處理的方法和技術。本文目的是從視頻流中提取肢體動作,并準確理解動作所要表達的意圖,所以需要借助膚色檢測技術來做前端處理,濾除非膚色區域,然后再進行進一步的處理,準確翻譯肢體動作所表達的意圖。其中膚色檢測的效果在很大程度上決定了系統的識別性能。
本文對基于運動方向跟蹤的智能手勢識別系統進行研究,詳細討論了其中的幾個關鍵技術,如膚色檢測、圖像處理、基于Mscomm控件的串口通信等,最后對系統的性能進行了分析,指出了系統存在的不足與可以改進的地方。
系統以VC++ 6.0結合OPENCV作為開發平臺,通過攝像頭捕捉人體動作,經由膚色檢測識別人體的手勢動作,然后通過后端的圖像處理與動作解釋,準確理解人類手勢的指揮信息,最后通過Mscomm串口控件將指令發給負責做出反饋的執行系統。
智能手勢控制系統方案框圖如圖1所示。

圖1 智能手勢控制系統方案框圖
原理概述
理解肢體語言的前提是機器能夠識別人類的指揮動作,膚色檢測技術便是其中一種高效的識別方式。膚色檢測是根據人類膚色的獨有特征區分膚色點與其他像素點的技術,根據區分依據不同,分為基于統計與基于物理的兩種檢測技術。其中基于統計的檢測技術比較簡單,可以單純設計算法來實現。膚色統計模型的建立有三種方式:限定閾值、高斯模型、直方圖模型。考慮到本系統對實時性的要求,選擇了限定閾值的統計模型作為檢測依據。
統計模型的合適與否,決定了檢測算法的最后效果,所以需要一種手段來使得膚色點產生很好地類聚。顏色空間變換便是這樣的一種技術,在膚色檢測中常常用到YCrCb空間。我們平日所見的圖像很多都是基于RGB空間的,在RGB空間里膚色在很大程度上受到亮度的影響,導致膚色點很難從非膚色點中分離出來。如果直接在RGB空間進行處理的話,膚色點是離散的點,中間嵌有很多非膚色,這為膚色檢測帶來了難題。如果把RGB轉為YCrCb空間的話,可以忽略Y分量(亮度)的影響,因為該空間受亮度影響很小,膚色會產生很好的類聚。這樣就把三維的空間轉為二維的CrCb,膚色點會聚合形成一定的形狀,具有很好的識別效果。
經過前人學者大量的皮膚統計信息可以知道,如果將皮膚信息映射到YCrCb空間,則在CrCb二維空間中這些皮膚像素點近似成一個橢圓分布。因此如果我們得到了一個CrCb空間下的橢圓,給定一個像素點,只要判斷它的 (Cr, Cb) 坐標是否落在橢圓內(包括邊界),就可以判斷該點是否是膚色點。
檢測流程
借助于OPENCV函數庫自帶的轉換函數,我們可以很方便地將圖像從RGB空間下轉化到YCrCb空間下,然后進行橢圓擬合,就可以完成膚色檢測的目的。詳細操作如下。
(a)將原圖轉化到YCrCb空間下:
c v C v t C o l o r(i m g,i m g Y C r C b,CV_ BGR2YCrCb)。
(b)計算像素總數。
(c)遍歷像素點,對每個像素點的CrCb分量進行橢圓坐標變換。
(d)根據亮度Y的區間,判斷Value的值是否滿足條件,即像素點是否落在橢圓區域內,若滿足條件則把像素值拷貝到存放檢測結果的彩圖中。
if(y〈100)if(value〈700)memcpy(pMask,pimg,3);
else if(value〈850)memcpy(pMask,pimg,3);
膚色檢測算法的效果如圖2所示。

圖2 膚色檢測效果圖
經過膚色檢測后,得到排除非膚色區域的結果圖。接下來需要進一步的處理。
目標判決
首先不管什么檢測算法,受光照等各種因素的干擾,處理效果都會存在不盡人意的地方,除了會有殘留的非膚色區域外,還會有視頻背景里面非動作主體的干擾存在,所以需要通過濾除干擾來完成手臉目標的判決。
考慮到處理結果中,不管什么干擾,與正常的膚色區域相比,所占面積的比例都很小,所以我們使用基于面積的簡單方式,完成干擾的排除。
詳細流程如下。
(a)首先進行形態學濾波,去掉噪音。
截斷取直型負反轉是指一個沖斷系后緣被一個新形成的陡傾張性斷層所取直、截斷,但不涉及沖斷層兩側重復出現的地層。老30-樁海10井近東西向地震剖面顯示,該區燕山末期發育了走向北東、傾向北西的一系列緩傾角逆斷層,當逆斷層逆沖受阻時,便切層逆沖形成若干個逆斷層,構成疊瓦沖斷組合。喜山早期,在逆沖斷層應力集中的后緣,被正斷層截切并反向下滑,形成負反轉構造(圖1),并形成花狀構造。其顯著特征為:該斷裂向深部延伸,歸并于變緩的斷層面上,并處于純拉張狀態而無收縮,在斷層上升盤則保留原逆沖形態,這種取直型負反轉主要在樁西潛山北部與埕北凹陷結合部的老30-292井區發育。
cvErode(gray,gray,0,1);
cvDilate(gray,gray,0,1);
(b)找出圖像里面的所有輪廓,然后找到每個輪廓的最小外接矩形。
cvFindContours(gray,stor,&cont);
(c)找出外接矩形的最大面積。
(d)以最大面積的一半作為閾值,外接矩形面積小于該閾值的區域認為是干擾區域。
(e)滿足條件的區域就是有效的動作區域,找出這些區域的中心點,作為之后提取指揮信息的特征點。
濾除干擾前后的效果對比如圖3所示。
效果顯示,該算法簡單易行,快速高效,滿足系統要求。

圖3 濾除干擾前后的效果對比
解釋動作
經過目標判決得到的結果只包含有效的肢體動作,接下來的任務便是準確識別其中的指揮意圖。每一種肢體語言都需要設定一種標準,我們設定頭部的水平運動方向負責指揮小車左右運動,手部的豎直運動方向指揮小車前進與后退。
識別過程中,我們選用多次判斷的方式防止動作的誤判,只有連續動作的次數達到設定的閾值,才判定動作有效。現在以水平運動方向的判斷為例,詳細闡述我們所采用的算法流程。
(a)設定捕捉視頻幀的時間間隔為100ms。
(b)每捕捉到一幀圖片,經過前期的處理后,將處理所得特征點的橫坐標與前一幀特征點橫坐標進行比較。
(c)比較結果變小,則left變量增一;變大,則right變量增一。
(d)當計數變量的值達到10時,這樣指揮動作持續的時間剛好達到1s,此時認為主體發出了指揮動作。這樣設計的好處在于,可以根據需要修改系統的判斷靈敏度,防止誤動作的干擾。
(e)若left〉=10,認為主體做出左拐的指揮動作,由后續的串口模塊發送左拐指令;若right〉=10,認為主體做出右拐的指揮動作,發送右拐指令。
串行通信
串行通信,即數據的串行化傳輸。具體來說,就是每次獲得一個字節,然后依次傳輸它的8位比特數據。這樣做的優勢在于,只需要一根數據線就可以傳輸8位的字節數據(單向),相應的劣勢在于傳輸所用的時間是并行傳輸的8倍。本文的系統中,只需要傳輸一個字節的指令數據,所以串行傳輸完全可以勝任。
Mscomm控件
Mscomm控件是Windows平臺下實現串行通行的一種Active控件,借助它可以非常簡單地實現串行通信功能,我們只需在它的事件處理函數中添加自己的代碼即可。編程原理簡單易懂,易于操作。
下面簡單地介紹一下控件的安裝使用。
(a)建立項目:打開VC++ 6.0,建立一個基于對話框的MFC應用程序。
(b)在項目中插入Mscomm控件。
(c)在ClassWizard中定義CMSComm類控制對象。
(d)在對話框中添加接收框、發送框、發送按鈕等控件。
(e)為控件添加變量:為顯示框和發送框分別添加添加CString變量m_strRXData,和m_strTXData。
(f)添加串口事件消息處理函數OnComm():函數實現的主要功能是進行格式的轉化,并將結果顯示在接收框中。
(g)打開串口并完成初始化。
最后安裝結果如圖4所示。

圖4 Mscomm控件的安裝效果圖
在正常光照條件下,進行系統性能測試。進行測試的軟件平臺為Windows XP系統與安裝有OPENCV函數庫的VC++6.0編譯環境,硬件平臺為筆記本電腦自帶攝像頭、無線串口發送模塊、安裝有無線串口接收模塊的智能小車。實驗過程中的系統運行效果如圖5所示;最終測試結果以系統客戶端發送的指令數據展示(如圖6、圖7所示)。

圖5 系統運行效果示意圖

圖6 客戶端發送右拐指令示意圖

圖7 客戶端發送前進指令示意圖
效果示意圖顯示,系統正確的檢測到了手部與臉部的指揮動作,并能準確的標定目標的特征點。
效果顯示,平臺能順利地與智能小車進行串行通訊,并發出右拐指令指揮小車運動。
效果顯示,平臺能順利地與智能小車進行串行通訊,并發出前進指令指揮小車運動。
實驗過程中,系統各環節運行良好,首先膚色檢測與圖像處理模塊能很好地去除干擾,并準確的標定特征點;之后的動作解釋模塊,能準確的解釋動作意圖,發出相應的指令,指揮小車按照指揮者的意圖運動。此外,由于系統采用了閾值判定的算法,系統本身可以避免誤動作導致的誤判,增加了系統的實用性。實驗結果表明,系統整體運行良好,符合準確性、實時性的設計指標。
本文對基于運動方向跟蹤的手勢控制平臺進行了研究,并詳細討論了其中的幾個關鍵技術,如膚色檢測、圖像處理、基于Mscomm控件的串行通信等。實驗結果顯示,本系統滿足實時性與抗干擾性要求,能準確的識別人體手勢的指揮意圖,并可以通過修改判斷門限修改系統的靈敏度,避免因誤動作引起的誤判。如前文所述,系統的性能很大程度上取決于膚色檢測算法的檢測效果。所以,通過改進膚色檢測模塊,如使用基于物理的膚色檢測手段,可以進一步提升系統的性能,這是我們之后研究與改進的方向。隨著技術的發展,相信在不遠的將來,手勢識別技術一定會為人們的生活帶來更加智能化和便捷化的體驗。
10.3969/j.issn.1001-8972.2015.01.038