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