摘 要: 針對基于視覺的手勢識別技術(shù)對環(huán)境背景要求較高的問題,,提出了一種利用深度信息進(jìn)行手勢提取和識別的研究方案。采用Kinect深度攝像頭,,通過中值濾波以及深度信息與鄰域特點來分割手部區(qū)域并用Canny算子提取出手勢輪廓,,再以深度圖像的凸缺陷指尖來完成對指尖的檢測,從而實現(xiàn)對數(shù)字手勢1到5的手勢識別,。該方法可快速有效地對指尖進(jìn)行檢測,,魯棒性和穩(wěn)定性都比其他方法更好。實驗結(jié)果表明,,該手勢識別方案的平均識別率達(dá)到92%,,證明了該方法的可行性。
關(guān)鍵詞: 手勢識別,;Kinect,;Canny算子;凸缺陷檢測
0 引言
人機(jī)交互(Human-Computer Internet,,HCI)是指人和計算機(jī)之間通過某些交互方式(媒介,、對話接口等),使用某種對話語言來傳遞和交換信息,,是計算機(jī)系統(tǒng)的重要組成部分[1],。在很長一段時間里,以鼠標(biāo)和鍵盤作為輸入設(shè)備,、字符文本和圖形窗口作為輸出設(shè)備是最主要的人機(jī)交互方式,。近年來,隨著計算機(jī)視覺技術(shù)的不斷發(fā)展與完善,,使用攝像頭進(jìn)行手勢的捕捉是手勢識別的主要方式,。與傳統(tǒng)的需要專用硬件設(shè)備(數(shù)據(jù)手套輸入設(shè)備等)輔助才能完成手勢輸入相比,,自然人機(jī)交互實現(xiàn)的手勢輸入具有廣闊的應(yīng)用前景和重要的研究價值。
使用計算機(jī)視覺技術(shù)進(jìn)行手勢輸入,,需要對獲得的手勢圖像進(jìn)行手勢分割,將手勢從整個輸入圖像中分割出來,。手勢提取的方法主要有以下三種:(1)增加限制法:該方法是通過增加種種限制因素來增加背景區(qū)與手勢區(qū)的對比,,主要使用背景相減或者差分法,但該方法降低了人機(jī)交互所提出的自然性,,故主要用于手勢訓(xùn)練樣本[2],。(2)膚色模型法:膚色在特定空間中總是分布在某個區(qū)域,可以根據(jù)膚色區(qū)域與非膚色區(qū)域?qū)⑹謩莘指畛鰜?。ALON J等人[3]采用膚色模型與運動信息結(jié)合的方法來進(jìn)行手勢分割,,但膚色易受光照變化、攝像機(jī)參數(shù),、人類種族,、年齡、性別等因素影響,。(3)模板匹配法:該方法首先建立一個手勢的訓(xùn)練模板數(shù)據(jù)庫,,用這些模板遍歷整幅圖像并進(jìn)行匹配,在匹配的同時完成識別[4],。其缺點是運算量較大,,不能有效地運用于實時跟蹤識別中。
2010年微軟公司推出了用于Xbox 360的體感外設(shè)3D攝像機(jī)Kinect,,采用結(jié)構(gòu)光編碼技術(shù)獲得拍攝圖像深度信息,。Kinect攝像部分包括紅外發(fā)射器、紅外攝像頭和RGB攝像頭,。圖像處理器通過分析散斑圖案獲得空間距離生成深度影像,。
本文依據(jù)Kinect高效且廉價的硬件基礎(chǔ),基于圖像深度信息的手勢模型,,首先利用中值濾波對深度數(shù)據(jù)做噪點去除和平滑處理,,然后通過二值化、骨骼點進(jìn)行手勢提取,,再以深度圖像的凸缺陷指尖來作為檢測基礎(chǔ),,對已分割出的手部二值圖像用Canny算子提取出手勢輪廓,利用凸缺陷之間的關(guān)系剔除偽指尖點,,完成對指尖的精確檢測,。基于Kinect深度圖像信息的手勢提取與識別由于手勢分割只與手和攝像頭之間的距離有關(guān),,故對背景復(fù)雜干擾的魯棒性較好,。
1 圖像深度信息的獲取及預(yù)處理
一個完整手勢識別主要分為圖像深度信息獲取與預(yù)處理,、圖像深度信息的手勢提取分割、手勢建模,、手勢識別等幾個步驟,,流程圖如圖1所示。
1.1 圖像深度信息獲取原理
Kinect共有3個鏡頭,,中間是普通的RGB彩色攝像頭,,左邊是紅外發(fā)射器,右邊是紅外CMOS攝像頭組成的深度傳感器,。圖像深度獲取是通過左右兩邊的紅外發(fā)射器和紅外CMOS攝影機(jī)一同完成的,,紅外發(fā)射器發(fā)出紅外光覆蓋整個待檢測區(qū)域,與此同時紅外線CMOS攝影機(jī)接收反射光線得到深度圖像,,其中每一個像素的顏色代表了那一點物體與攝像頭的距離,。基于Kinect獲取的圖像深度信息圖如圖2所示,。
1.2 圖像深度信息預(yù)處理
中值濾波是一種基于排序統(tǒng)計理論,、能有效抑制噪聲的非線性數(shù)字濾波技術(shù),常被用于濾除圖中的斑點噪聲和椒鹽噪聲,。其基本原理是把數(shù)字圖像中一像素點p(i,,j)的值用該點的一個鄰域窗口w中各點值的中值代替,使周圍像灰度值接近真實值,,從而消除孤立噪聲點,。其方法是把該鄰域窗口w中所有像素的灰度值按從小到大的次序排列,生成單調(diào)上升(或下降)的二維數(shù)據(jù)序列,,并選擇中間值作為中心像素點p(i,,j)的灰度新值,窗口移動時,,就能夠通過中值濾波對圖像進(jìn)行平滑處理,。中值濾波的基本公式可以表示為:
其中,f(r,,s)表示鄰域窗口w內(nèi)任意像素點的灰度值,,Nf(i,j)表示f(i,,j)的實心鄰域,。本文中選擇的w為11×11的正方形濾波窗口。
該算法不僅可以對噪聲區(qū)域進(jìn)行平滑處理,,還可以很好地保持區(qū)域之間的邊界形態(tài),。對圖2(b)所示的深度信息圖進(jìn)行中值濾波,結(jié)果如圖3所示,,圖3較好地說明了中值濾波是如何去掉結(jié)構(gòu)化人為干擾的,。中值濾波對于抑制邊緣模糊有很好的特性,,本文使用中值濾波算法實現(xiàn)了對深度圖像的降噪濾波。
2 圖像深度信息的手勢提取與識別
2.1 手心的檢測與跟蹤
本文基于深度圖像信息進(jìn)行手部區(qū)域提取的基本流程為:先根據(jù)手心關(guān)節(jié)點坐標(biāo)位置建立一個手部信息的矩形盒,;再在這個矩形盒內(nèi)以手心關(guān)節(jié)點位置開始向鄰域逐個遍歷像素,,檢測像素是否屬于手部區(qū)域,如果符合條件就在二值圖中置1,,循環(huán)遍歷所有需要遍歷的鄰域像素直到個數(shù)為空,;最后得到手部區(qū)域的二值圖。
在對手勢進(jìn)行檢測完畢之后,,調(diào)用Hand Tracker的startHandTracking()函數(shù)就可以對手部進(jìn)行跟蹤。圖4為不同深度距離位置對手心檢測的結(jié)果,。
2.2 手勢的分割
在檢測跟蹤到手心以后,,根據(jù)手心Z坐標(biāo)的深度值對深度圖像進(jìn)行分割,如式(2)所示:
其中,,手部可能存在區(qū)域的像素值為255,,其他區(qū)域為0,式(2)中的閾值設(shè)定為150 mm,。
將手心點投影到2D空間,,根據(jù)手的大小做一次二維分割,如式(3)所示:
其中,,W(Z)表示以手心為中心的一個包圍盒,,大小與手勢到Kinect的距離成正比。
基于最優(yōu)化算法的Canny邊緣檢測算子[5],,提取的邊緣線形連接較為完整,,定位準(zhǔn)確性較高,效果好,。本文采用此方法對深度圖像進(jìn)行邊緣提取,。首先用一階偏導(dǎo)的有限差分來計算梯度的幅值和方向,再對梯度方向進(jìn)行量化,,使其只有8個方向,,即0°、45°,、90°,、135°、180°,、225°,、270°、315°,,對于每一個梯度強(qiáng)度非零的像素點,,查找沿其量化后的梯度方向的兩個相鄰像素點,,然后通過閾值判斷為非邊緣點還是候選邊緣點。對于弱邊緣點,,如果它與強(qiáng)邊緣點在8連通區(qū)域相連,,則該點記為弱邊緣點,同時將其邊緣提取置為1,,所有標(biāo)記為1的點就成了最后的邊緣,。手部提取輪廓如圖5所示。
2.3 手心,、指尖檢測與識別
為了獲取更準(zhǔn)確的手心坐標(biāo),,利用細(xì)化方法中的距離變換(Distance Transform)算法來計算手部區(qū)域的骨骼,從而得到手心位置,。
本文采用葛立恒掃描法(Graham Scanning Method)[6]進(jìn)行凸包檢測,,在結(jié)束對凸包點的檢測之后,采用參考文獻(xiàn)[6]的方法繼續(xù)計算缺陷點(Convex Defects),,再由閾值判定條件得到代表手指凸包點的個數(shù)從而實現(xiàn)對1~5的檢測識別,,結(jié)果如圖6所示。
3 實驗結(jié)果驗證
由表1實驗驗證結(jié)果可知,,基于Kinect的深度圖像手勢識別平均正確率達(dá)到92%,,能夠達(dá)到基本手勢識別的目的。使用深度圖像信息進(jìn)行手勢識別可能會受到拍攝光照,、角度和手勢的彎曲程度的影響,,通過識別結(jié)果可以了解到,手勢1,、2,、3的出錯概率較4、5多,,造成錯誤識別的原因大都是因為手指的彎曲造成深度信息錯位,,這也是以后需要改進(jìn)的方面。
4 結(jié)論
本文設(shè)計并實現(xiàn)了基于Kinect深度圖像信息的手勢提取與識別,,此方案使用設(shè)備簡單,,計算量少,能有效提高工作效率,。相比較于傳統(tǒng)基于二維計算機(jī)視覺識別,,該方法增加了深度信息,能夠很好地去除復(fù)雜背景的影響,,可以解決手指水平豎直移動容易識別錯誤的問題,。但由于手勢增加可能造成深度方向可分辨性降低,在后續(xù)工作中將考慮對平面信息和深度信息融合進(jìn)行識別。
參考文獻(xiàn)
[1] MINSKY M R. Manipulating simulated objects with real-world gestures using a force and position sensitive screen [J]. AQH Computer Graphics,, 1984,,18(3):195-203.
[2] 任海兵,祝遠(yuǎn)新,,徐光,,等.基于視覺手勢識別的研究——綜述[J].電子學(xué)報,2000,,28(2):118-121.
[3] ALON J,, ATHITSOS V, Yuan Quan,, et al. A unified framework for gesture recognition and spatiotemporal gesture segmentation[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,,2009,31(9): 1685-1699.
[4] 趙亞飛.基于視覺的手勢識別技術(shù)研究[D].杭州:浙江大學(xué),,2011.
[5] 舒欣,,李東新,薛東偉.五幀差分和邊緣檢測的運動目標(biāo)檢測[J].計算機(jī)系統(tǒng)應(yīng)用,,2014,23(1):124-127.
[6] Graham scan. http://en.wikipedia.org/wiki/Graham_scan.