李 浩,楊森林,張曉麗
(1.西安文理學(xué)院 西安市物聯(lián)網(wǎng)應(yīng)用工程實(shí)驗(yàn)室,陜西 西安 710065;2.西安文理學(xué)院 陜西省表面工程與再制造重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710065)
準(zhǔn)確的火車(chē)駕駛員手勢(shì)識(shí)別是智能交通管理系統(tǒng)的重要組成部分,基于計(jì)算機(jī)視覺(jué)的手勢(shì)識(shí)別屬于非接觸式的手勢(shì)采集方式,該類(lèi)方法設(shè)備成本低,且能更好的滿足人機(jī)交互所需的自然度和舒適度,是目前研究的一個(gè)熱點(diǎn)[1]。
動(dòng)態(tài)手勢(shì)相比于靜態(tài)手勢(shì)更具直觀性,適應(yīng)于靈活的人機(jī)交互應(yīng)用。由于其種類(lèi)多、特征復(fù)雜、變化快,因而導(dǎo)致動(dòng)態(tài)手勢(shì)識(shí)別較為困難[2]。文獻(xiàn)[3]提出了一種利用手部骨架變換的識(shí)別方法,對(duì)二值化的圖像進(jìn)行距離變換,以生成具有骨架抽取效果的手部區(qū)域圖,連接中心點(diǎn)獲得手部骨架,從而對(duì)手勢(shì)進(jìn)行識(shí)別分類(lèi),識(shí)別正確率幾乎100 %,但方法僅適應(yīng)于單一背景下的手勢(shì)檢測(cè),缺少對(duì)于復(fù)雜背景條件下的識(shí)別檢測(cè),也無(wú)法滿足動(dòng)態(tài)手勢(shì)中手掌手指的精確識(shí)別。文獻(xiàn)[4]利用Kinect傳感器開(kāi)發(fā)了一種非侵入式實(shí)時(shí)手勢(shì)識(shí)別系統(tǒng),通過(guò)OpenNI和NITE將Kinect獲取的圖像轉(zhuǎn)換為具有15個(gè)節(jié)點(diǎn)的剛性骨架,并采用隱馬爾可夫模型(hidden Markov model,HMM)對(duì)手勢(shì)進(jìn)行識(shí)別,對(duì)訓(xùn)練集內(nèi)的對(duì)象識(shí)別準(zhǔn)確率達(dá)到85 %,而非訓(xùn)練集內(nèi)的對(duì)象識(shí)別準(zhǔn)確率達(dá)到73 %。然而,該方法僅能夠?qū)崿F(xiàn)對(duì)左手手勢(shì)和人體軀干的識(shí)別,缺少對(duì)手掌骨骼的識(shí)別[4]。文獻(xiàn)[5]利用Kinect對(duì)手部算術(shù)(阿拉伯?dāng)?shù)字及運(yùn)算符號(hào))及石頭剪刀布進(jìn)行識(shí)別,通過(guò)深度閾值分割獲得手部區(qū)域精確圖像,并使用指地移動(dòng)距離(finger Earth moving distance,FEMD)度量測(cè)量不同手型之間的差異性來(lái)進(jìn)行識(shí)別分類(lèi),最高識(shí)別率達(dá)到了93.9 %。但在手勢(shì)識(shí)別過(guò)程中,測(cè)試者手部佩戴的黑色腕帶對(duì)識(shí)別結(jié)果將產(chǎn)生一定影響,未佩戴腕帶情況下的識(shí)別準(zhǔn)確度較低[5]。目前大多數(shù)方法都是針對(duì)普通場(chǎng)景下的靜態(tài)通用手勢(shì)識(shí)別,而對(duì)于某些特定場(chǎng)景下的動(dòng)態(tài)專(zhuān)業(yè)手勢(shì)識(shí)別效果不佳,無(wú)法對(duì)這些場(chǎng)景手勢(shì)進(jìn)行有效的判斷和識(shí)別。
基于以上問(wèn)題,本文采用Kinect獲取人體骨骼節(jié)點(diǎn)信息,設(shè)定距離差閾值確定近似手掌節(jié)點(diǎn)位置,得到手勢(shì)分割圖像,采用支持向量機(jī)(SVM)進(jìn)行手勢(shì)識(shí)別和評(píng)價(jià),并結(jié)合骨骼節(jié)點(diǎn)的運(yùn)動(dòng)序列,采用DTW算法對(duì)火車(chē)駕駛員手臂動(dòng)作進(jìn)行識(shí)別檢測(cè),最終得到有效的手勢(shì)信息。
手勢(shì)圖像的獲取容易受到外界光照和復(fù)雜背景的影響,選擇合適的手勢(shì)采集設(shè)備尤為重要[6]。本文采用Kinect傳感器將手掌姿勢(shì)深度信息從復(fù)雜的背景中分割出來(lái)。Kinect可以檢測(cè)出環(huán)境中物體距離攝像頭之間的距離,在手勢(shì)人機(jī)交互中,手掌總是在攝像頭的前方,因此通過(guò)選取合適的深度距離閾值可以將手掌姿勢(shì)信息從背景中進(jìn)行分離[7]。然而,距離閾值的選取非常困難,閾值選擇不合適容易導(dǎo)致分割出的手勢(shì)包含手臂,或者當(dāng)手勢(shì)距離身體較近時(shí)根本無(wú)法分割出手掌信息。為了克服單純的閾值選擇帶來(lái)的缺點(diǎn),本文采用結(jié)合人體骨骼節(jié)點(diǎn)信息和深度圖像信息的手勢(shì)檢測(cè)方法,采用Kinect獲取人體骨骼節(jié)點(diǎn)數(shù)據(jù),找出手掌節(jié)點(diǎn)的位置,在手掌節(jié)點(diǎn)范圍內(nèi)搜索手勢(shì),當(dāng)整個(gè)手掌上的所有像素點(diǎn)離攝像頭較近時(shí),再設(shè)定一個(gè)距離差閾值就可以將手勢(shì)信息從背景中分離,方法流程如圖1所示。
圖1 手勢(shì)圖像分割方法示意
由于Kinect跟蹤人體骨骼節(jié)點(diǎn)時(shí)容易發(fā)生節(jié)點(diǎn)漂移現(xiàn)象,此時(shí)手掌節(jié)點(diǎn)到Kinect的距離并不是實(shí)際手掌節(jié)點(diǎn)到Kinect的距離,在進(jìn)行距離差閾值進(jìn)行分割時(shí)會(huì)導(dǎo)致手勢(shì)分割失敗。為此,開(kāi)發(fā)了一種近似的手掌節(jié)點(diǎn)位置確定方法,以手掌節(jié)點(diǎn)為圓心,手掌節(jié)點(diǎn)到手腕節(jié)點(diǎn)之間的距離r為半徑的圓內(nèi)對(duì)所有白色像素點(diǎn)的位置坐標(biāo)求均值,以均值代表手掌節(jié)點(diǎn)的位置坐標(biāo)因此手掌節(jié)點(diǎn)的(xp,yp)位置為
(1)
式中T為圓內(nèi)白色像素點(diǎn)的個(gè)數(shù)xi表示第i個(gè)白色像素點(diǎn)的橫坐標(biāo),yi為第i個(gè)白色像素點(diǎn)的縱坐標(biāo)。在找出手掌節(jié)點(diǎn)的位置后,通過(guò)判斷手掌節(jié)點(diǎn)和周?chē)鷧^(qū)域像素點(diǎn)到Kinect之間的距離差將手勢(shì)分割出來(lái)。當(dāng)找到手掌節(jié)點(diǎn)后,需要在手掌節(jié)點(diǎn)周?chē)褜な謩?shì)像素點(diǎn),為了防止因手掌節(jié)點(diǎn)發(fā)生漂移導(dǎo)致手勢(shì)像素點(diǎn)搜尋出現(xiàn)偏差,在以手掌節(jié)點(diǎn)為中心的一個(gè)大的矩形區(qū)域內(nèi)進(jìn)行手勢(shì)像素點(diǎn)搜尋,算法過(guò)程如下:
k=1,2,…,W×H
(2)
式中k為搜尋的次數(shù),threshold為手掌節(jié)點(diǎn)與矩形區(qū)域內(nèi)手勢(shì)像素點(diǎn)到Kinect之間距離差的閾值,abs(dp-dij)為掌心節(jié)點(diǎn)與手勢(shì)像素區(qū)域距離之差的絕對(duì)值,Sk為最終檢測(cè)到的手勢(shì)像素點(diǎn)集。
手勢(shì)動(dòng)作識(shí)別方法有很多種,比如神經(jīng)網(wǎng)絡(luò)、SVM、卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)等,SVM對(duì)二分類(lèi)處理效果明顯,其訓(xùn)練集之外的數(shù)據(jù)能夠做到預(yù)測(cè)準(zhǔn)確、泛化錯(cuò)誤率低和實(shí)時(shí)性能好,因此,本文采用SVM算法對(duì)分割后的手勢(shì)圖像進(jìn)行識(shí)別并對(duì)手勢(shì)規(guī)范性進(jìn)行評(píng)價(jià)[8]。SVM分類(lèi)結(jié)果為測(cè)試手勢(shì)與標(biāo)準(zhǔn)手勢(shì)之間的置信度,可以作為手掌手勢(shì)規(guī)范的評(píng)價(jià)標(biāo)準(zhǔn),如式(3)所示
(3)
手勢(shì)動(dòng)作識(shí)別流程圖如圖2所示。
圖2 手掌手勢(shì)識(shí)別流程框圖
Kinect傳感器獲取圖像深度數(shù)據(jù)以及駕駛員骨骼數(shù)據(jù)[9]。駕駛員完成一整套手勢(shì)動(dòng)作不僅包含手掌部分的手勢(shì),還包含手臂部分的動(dòng)作,因此Kinect傳感器獲取的數(shù)據(jù)應(yīng)包含手掌、手腕、手肘、肩、肩中心等若干個(gè)關(guān)鍵骨骼節(jié)點(diǎn)坐標(biāo)數(shù)據(jù)[10]。駕駛員在做不同手勢(shì)動(dòng)作時(shí),一般來(lái)說(shuō)肩中心節(jié)點(diǎn)相對(duì)位置基本保持不變,設(shè)肩中心節(jié)點(diǎn)的坐標(biāo)為Ps=(xs,ys,zs),剩余的手臂骨骼節(jié)點(diǎn)坐標(biāo)為Pi=(xi,yi,zi),i=1,2,3,4,因此節(jié)點(diǎn)Pi和肩中心節(jié)點(diǎn)Ps之間的距離為
i=1,2,3,4
(4)
(5)
根據(jù)得出的DTW距離對(duì)輸入的動(dòng)態(tài)手勢(shì)進(jìn)行識(shí)別并評(píng)價(jià)。駕駛員動(dòng)態(tài)手勢(shì)識(shí)別結(jié)果與標(biāo)準(zhǔn)動(dòng)態(tài)手勢(shì)庫(kù)中DTW距離最小的樣本類(lèi)別一致,表示為
(6)
式中Xi為標(biāo)準(zhǔn)動(dòng)態(tài)手勢(shì)樣本,Y為輸入的動(dòng)態(tài)手勢(shì),i為動(dòng)態(tài)手勢(shì)樣本類(lèi)別,O為最終識(shí)別的動(dòng)態(tài)手勢(shì)類(lèi)別。
手臂動(dòng)態(tài)手勢(shì)得分的度量方式為DTW距離,測(cè)試手勢(shì)序列與標(biāo)準(zhǔn)手勢(shì)樣本序列越接近,DTW距離也就越小,手臂動(dòng)態(tài)手勢(shì)得分表示為
Parm=
(7)
式中Xi為標(biāo)準(zhǔn)動(dòng)態(tài)手勢(shì)序列,Y為測(cè)試手勢(shì)序列,N為標(biāo)準(zhǔn)手勢(shì)序列樣本數(shù)目,α為標(biāo)準(zhǔn)手勢(shì)序列樣本之間的DTW距離平均值。
駕駛員手臂動(dòng)作識(shí)別流程圖如圖3所示。
圖3 駕駛員手臂動(dòng)作識(shí)別流程框圖
由于Kinect獲取的骨骼特征點(diǎn)數(shù)據(jù)較粗糙,特征點(diǎn)少,難以精確描述相近或非標(biāo)準(zhǔn)手勢(shì)之間的區(qū)別,選取4種區(qū)別較大的動(dòng)態(tài)手勢(shì)進(jìn)行分析和建庫(kù)[11]。同時(shí),選取了手掌、手腕、手肘、肩、肩中心等18個(gè)3D特征點(diǎn)來(lái)分析手勢(shì)變化,未考慮其它區(qū)域特征點(diǎn)對(duì)手勢(shì)識(shí)別的影響,所建立的樣本庫(kù)包含不同光照、不同高度的4個(gè)人手掌握拳食指中指伸出、手掌握拳大拇指翹起、手掌握拳大拇指和小拇指伸出、手掌張開(kāi)五指并攏4種動(dòng)作,以及手臂抬起、手臂朝前、手臂手肘彎曲、手臂左右擺動(dòng)4種手臂動(dòng)作,如圖5所示,每種動(dòng)作100組數(shù)據(jù),共25 600組,手勢(shì)圖像錄制時(shí)在Kinect前方1.0~2.5 m轉(zhuǎn)動(dòng)范圍為左右±30°,上下±90°,樣本庫(kù)中每張手勢(shì)圖像包含144個(gè)特征點(diǎn)的3D坐標(biāo),8個(gè)手部運(yùn)動(dòng)單元AUs數(shù)值以及4個(gè)手部幾何特征角度。實(shí)驗(yàn)設(shè)備為i7 2.6 GHz 處理器、16 GB RAM的圖形工作站和Kinect 2.0傳感器,軟件開(kāi)發(fā)平臺(tái)為VS2008、OpenCV、Kinect for Windows SDK2.0。選擇90組數(shù)據(jù)作為訓(xùn)練集,10組作為測(cè)試樣本。測(cè)試時(shí)Kinect深度傳感器距離地面1.0 m,傳感器與人的距離在1.0~2.5 m范圍內(nèi)。
手勢(shì)檢測(cè)流程如圖5所示首先處理Kinect傳感器采集到的深度圖像,一方面在手掌區(qū)域內(nèi)進(jìn)行像素點(diǎn)搜尋,另一方面采用人體骨骼節(jié)點(diǎn)圖像判斷掌心節(jié)點(diǎn)位置,由于Kinect檢測(cè)骨骼節(jié)點(diǎn)精度較低,節(jié)點(diǎn)容易發(fā)生漂移,因此為了避免手掌檢測(cè)的不完全,矩形搜索區(qū)域的大小閾值設(shè)置不能過(guò)小,實(shí)驗(yàn)中,當(dāng)t≥3,即矩形搜索區(qū)域大小大于3倍的手掌節(jié)點(diǎn)和手腕節(jié)點(diǎn)之間的距離,此時(shí)手勢(shì)搜索效果較為理想。手掌節(jié)點(diǎn)與手勢(shì)像素區(qū)域距離差閾值(threshold)的設(shè)置對(duì)于手勢(shì)分割的結(jié)果同樣重要,當(dāng)threshold設(shè)置過(guò)小,手勢(shì)分割會(huì)不完整;而當(dāng)threshold設(shè)置過(guò)大,則容易將手腕等部分分離[12]。實(shí)驗(yàn)結(jié)果表明,當(dāng)threshold∈(15,25)mm時(shí),手勢(shì)檢測(cè)效果較為理想。圖4為不同threshold值時(shí),手勢(shì)檢測(cè)與分割效果。
圖4 手勢(shì)檢測(cè)與分割效果
手掌區(qū)域動(dòng)作通常包含4種,手掌握拳食指中指伸出(a)、手掌握拳大拇指翹起(b)、手掌握拳大拇指和小拇指伸出(c)、手掌張開(kāi)五指并攏(d)。
當(dāng)火車(chē)駕駛員做手勢(shì)動(dòng)作時(shí),手掌通常會(huì)發(fā)生相應(yīng)的形變和旋轉(zhuǎn),因此,在進(jìn)行手勢(shì)識(shí)別時(shí),需要對(duì)檢測(cè)到的手勢(shì)進(jìn)行大小歸一化,為了減小序列中手勢(shì)旋轉(zhuǎn)問(wèn)題對(duì)識(shí)別效果的影響,在離線訓(xùn)練SVM分類(lèi)器時(shí),將旋轉(zhuǎn)樣本參與到分類(lèi)器訓(xùn)練中,增加分類(lèi)器的魯棒性,表1為火車(chē)駕駛員在做抬手動(dòng)作時(shí)4種手掌手勢(shì)分類(lèi)識(shí)別率。
表1 手掌手勢(shì)識(shí)別效果
由表1可知,采用文中所提出方法對(duì)手掌和手勢(shì)進(jìn)行檢測(cè),檢測(cè)率較高,首先通過(guò)確定手掌掌心節(jié)點(diǎn),在掌心節(jié)點(diǎn)周?chē)褜な謩?shì)像素點(diǎn),可以有效避免漏檢情況,通過(guò)設(shè)定手勢(shì)周?chē)袼嘏c掌心像素到Kinect之間的距離差閾值,可以降低算法檢測(cè)到手腕部分的可能性。在識(shí)別方面,利用SVM算法訓(xùn)練多個(gè)手勢(shì)序列中手掌手勢(shì)圖像,減小因圖像的旋轉(zhuǎn)而導(dǎo)致的錯(cuò)誤識(shí)別,火車(chē)駕駛員4種手掌手勢(shì)平均識(shí)別率可達(dá)88 %以上。對(duì)于手勢(shì)得分,手勢(shì)序列識(shí)別置信度之和的平均值為最終手勢(shì)得分,從而可以有效地判斷火車(chē)駕駛員手掌手勢(shì)的規(guī)范程度。
文中選取手臂抬起、手臂向前、手臂手肘彎曲、手臂左右擺動(dòng)共4種動(dòng)態(tài)手勢(shì),識(shí)別率與得分如表2所示。
表2 手臂動(dòng)作識(shí)別效果數(shù)據(jù)表
表2為本文手勢(shì)識(shí)別算法對(duì)于4種火車(chē)駕駛員手臂動(dòng)作識(shí)別效果,由表中可知,4種常用的動(dòng)態(tài)手勢(shì)平均識(shí)別率可達(dá)85 %以上,本文采用的DTW算法非常適合于火車(chē)駕駛員動(dòng)態(tài)手臂動(dòng)作識(shí)別。手臂動(dòng)作得分的計(jì)算通過(guò)分析測(cè)試手勢(shì)序列和樣本庫(kù)中標(biāo)準(zhǔn)手勢(shì)序列之間的DTW距離的關(guān)系,可以有效改進(jìn)算法的識(shí)別度和準(zhǔn)確度。
表3為經(jīng)典的HMM算法和本文方法對(duì)于火車(chē)駕駛員4種手臂動(dòng)態(tài)手勢(shì)識(shí)別效果對(duì)比,由表中可知,平均識(shí)別率DTW算法高于HMM算法4.3 %,由于駕駛員動(dòng)態(tài)手勢(shì)序列長(zhǎng)度時(shí)時(shí)刻刻都在發(fā)生變化,DTW算法通過(guò)動(dòng)態(tài)規(guī)劃方法可以解決不同長(zhǎng)度運(yùn)動(dòng)序列的匹配問(wèn)題。因此,相對(duì)于HMM算法來(lái)說(shuō),DTW算法更適合于處理火車(chē)駕駛員動(dòng)態(tài)手臂動(dòng)作識(shí)別問(wèn)題。
表3 HMM算法與DTW算法效果對(duì)比 %
圖5中左側(cè)顯示的是手臂動(dòng)態(tài)動(dòng)作識(shí)別結(jié)果與得分,右側(cè)顯示的是手掌動(dòng)態(tài)手勢(shì)識(shí)別結(jié)果與得分。通過(guò)多次測(cè)試,該手勢(shì)識(shí)別與評(píng)價(jià)系統(tǒng)不僅結(jié)果可靠,運(yùn)行穩(wěn)定,而且運(yùn)行速度可達(dá)25幀/s,非常適合于火車(chē)駕駛員手勢(shì)識(shí)別與規(guī)范性評(píng)價(jià)。
圖5 動(dòng)態(tài)手勢(shì)識(shí)別效果
本文論述了一種能夠動(dòng)識(shí)別動(dòng)態(tài)手勢(shì)的方法,該方法通過(guò)將人體骨骼節(jié)點(diǎn)信息與深度圖像信息相結(jié)合的方法將手掌位置信息提取,并將手掌圖像信息從背景中分離出來(lái),采用SVM算法對(duì)分割后的手勢(shì)圖像進(jìn)行識(shí)別,最終通過(guò)手臂骨骼節(jié)點(diǎn)的運(yùn)動(dòng)序列,利用DTW算法進(jìn)行動(dòng)態(tài)手勢(shì)最優(yōu)匹配。實(shí)驗(yàn)數(shù)據(jù)表明了該方法在處理動(dòng)態(tài)手勢(shì)識(shí)別中的有效性。
文中選取了4種動(dòng)態(tài)手勢(shì)進(jìn)行識(shí)別,同時(shí)選取了手掌、手腕、手肘、肩、肩中心等18個(gè)3D特征點(diǎn)用來(lái)分析手勢(shì)變化,未考慮其它區(qū)域特征點(diǎn)對(duì)手勢(shì)識(shí)別的影響。在下一步的工作中,將考慮如何找出不同手勢(shì)特征點(diǎn)之間的詳細(xì)特征描述,對(duì)更多動(dòng)態(tài)進(jìn)行識(shí)別。