董旭德,許源平,舒紅平,張朝龍,2,盧麗,黃健
(1. 成都信息工程大學(xué) 軟件工程學(xué)院,四川 成都 610225; 2. 英國哈德斯菲爾德大學(xué) 計算與工程學(xué)院,西約克郡 哈德斯菲爾德 HD1 3DH)
近年來,隨著計算機(jī)的發(fā)展和普及,人機(jī)交互(human-computer interface,HCI)應(yīng)用正逐漸以更加多樣化的形式全面融入到人們的學(xué)習(xí)、工作和生活中。其中,由于手勢是一種出現(xiàn)較早,使用廣泛且較為統(tǒng)一的人類日常交流手段,所以基于手勢的HCI技術(shù)得到了越來越多的關(guān)注,特別是在難以基于統(tǒng)一的語言進(jìn)行交流的相關(guān)應(yīng)用場景。手勢交互包括靜態(tài)手勢和動態(tài)手勢兩種類型[1],其中靜態(tài)手勢是指在某一時間點手勢的形態(tài)所表達(dá)的意義,而動態(tài)手勢是指在時間序列中一段手勢的運動軌跡所表示的含義。傳統(tǒng)的手勢識別需要借助于特殊的硬件設(shè)備(如數(shù)據(jù)手套),通過各種傳感器來獲取用戶關(guān)節(jié)的位置信息,進(jìn)而進(jìn)行手勢識別。這樣的方式雖然較為準(zhǔn)確但同時增加了手勢識別的成本,也大大降低了用戶的應(yīng)用體驗,限制了手勢識別的應(yīng)用場景。另一方面,近幾年來,基于機(jī)器視覺的手勢識別解決方案因其低廉的硬件成本、方便性和易獲取性等優(yōu)點得到了快速的發(fā)展,成為了當(dāng)前的研究熱點。它的研究涉及到模式識別、計算機(jī)圖形學(xué)、計算機(jī)視覺和人工智能等多個領(lǐng)域,在人機(jī)交互方面有著更廣闊的應(yīng)用前景,主要包括:1)手語識別,例如,普通人與聾啞人之間的交流存在障礙,而自動手勢識別可以提供良好的手語智能交流平臺,使得雙方可以進(jìn)行無障礙交流;2)在線教育,通過精準(zhǔn)的手勢識別,可以操控圖像顯示,使得教學(xué)課程更具吸引力;3)機(jī)器控制,在復(fù)雜的背景環(huán)境下,可以通過手勢實現(xiàn)對智能機(jī)器人或智能家電的便捷控制。因此,此課題的研究目標(biāo)是設(shè)計并開發(fā)一套高效、準(zhǔn)確的靜態(tài)手勢智能識別系統(tǒng)并將其應(yīng)用于機(jī)器人智能控制領(lǐng)域。
依據(jù)前期相關(guān)研究工作的總結(jié),當(dāng)前智能靜態(tài)手勢識別的核心研究點包括手勢定位、手勢分割、特征提取和分類識別[2-4]。其中,手勢分割是自動地將定位后的手勢從背景中提取出來的圖像分割方法,手勢分割的效果(完整度和準(zhǔn)確率)對后續(xù)處理過程的識別率和計算效率起到至關(guān)重要的影響。因此,手勢分割是整個智能手勢識別過程中的關(guān)鍵處理步驟。Tara等[5]學(xué)者提出了一種基于深度圖像的手勢分割方法,利用閾值分析技術(shù)求得手勢在圖像中的位置,但深度圖像設(shè)備價格過于昂貴無法普及使用。王先軍等[6]學(xué)者運用Hu特征矩描述手勢的輪廓特征,進(jìn)而用BP(back propagation)神經(jīng)網(wǎng)絡(luò)進(jìn)行手勢分類。但是,僅基于Hu特征矩的特征描述包含大量的冗余信息,所以其后續(xù)識別的實時性無法保證。同一時期,Patel等學(xué)者利用SIFT(scale invariant feature transform)特征點匹配算法對美國手語(ASL)的26個英文字母A-Z和10個數(shù)字0-9對應(yīng)的靜態(tài)手勢進(jìn)行了匹配識別[7]。
綜上所述,當(dāng)前手勢分割與識別的主要技術(shù)難點為:1)類膚色背景下難以準(zhǔn)確進(jìn)行手勢分割;2)手臂部分的冗余信息難以去除;3)難以降低手勢識別的計算復(fù)雜度[8-11]。針對以上問題,本文提出了一種能夠在相對低廉的單目視覺硬件平臺上,基于ICWA算法和集成PCA降維與凸性檢測方法的靜態(tài)手勢分割算法模型。本文首先討論如何利用圖像梯度信息和ICWA算法進(jìn)行類膚色背景環(huán)境下的手勢圖像分割與提取,再結(jié)合PCA降維算法提取的手勢斜率特征和凸性檢測獲得的手勢凸點信息,說明如何將手掌和手臂部分進(jìn)行分割,進(jìn)而有效地減少手勢識別的冗余信息。本文通過展示與文獻(xiàn)[7]中的SIFT算法的對比實驗結(jié)果驗證了該模型能夠高效、準(zhǔn)確地從類膚色背景環(huán)境中分割、提取出手勢圖像并準(zhǔn)確地將手掌和手臂的圖像區(qū)域區(qū)分開來。最后,本文還展示了一個初步的基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)的手勢智能識別框架并獲得了良好的識別率,從而進(jìn)一步驗證了此模型的正確性和實用性。
研發(fā)基于ICWA的手勢智能識別系統(tǒng)的主要步驟為手勢定位、手勢分割和手勢識別,其總體工作流程(如圖1所示)為:1)在單目視覺條件下采集圖像數(shù)據(jù)并進(jìn)行手勢定位;2)利用ICWA對定位后的圖像進(jìn)行膚色區(qū)域與類膚色背景的分離;3)保留膚色區(qū)域并刪除冗余的手臂區(qū)域;4)利用深度學(xué)習(xí)網(wǎng)絡(luò)進(jìn)行手勢識別。
圖1 手勢分割與識別流程圖Fig.1 A flow chart of the gesture segmentation and recognition
膚色信息通常被用于人臉識別和手勢識別等研究中[2,4]。對于手勢識別應(yīng)用,只要在合適的色彩空間中(例如:HSV、HSI、RGB、YUV和YCrCb)對膚色圖像數(shù)據(jù)進(jìn)行采樣并計算合適的閾值就可以實現(xiàn)膚色區(qū)域和非膚色區(qū)域的分割。由于膚色檢測對亮度十分敏感,因而將RGB空間下的圖片轉(zhuǎn)化到Y(jié)CrCb空間以減少亮度對膚色檢測的影響。經(jīng)過理論分析與實踐可知,YCrCb空間是最適合膚色圖像區(qū)域分割的顏色空間。RGB空間與YCrCb空間的轉(zhuǎn)換公式為
為了進(jìn)一步降低光線對目標(biāo)分割的影響,需要將亮度分量單獨保存到一個顏色空間[12-13],經(jīng)過大量實驗證明,YCrCb空間最適合膚色分割且黃種人的膚色區(qū)域閾值為:Y>80,133<Cr<173,77<Cb<127[14-15]。因此,將圖像從 RGB 空間轉(zhuǎn)換到Y(jié)CrCb空間后,根據(jù)此閾值即可以將膚色和非膚色區(qū)域分割開。其結(jié)果如圖2和圖3所示。
圖2 原始圖像Fig.2 The original image
圖3 膚色分割后的圖像Fig.3 The segmented image
簡單的基于YCrCb空間的膚色分割方法并不能達(dá)到準(zhǔn)確地分割出手勢的目的,因此需要進(jìn)行進(jìn)一步的算法處理,其中首要的任務(wù)就是要分離膚色和類膚色區(qū)域,從而實現(xiàn)手勢區(qū)域的準(zhǔn)確提取。首先,圖3所示的結(jié)果依然包含了很多粗糙點、空洞點和毛邊等,所以在準(zhǔn)確分割、提取前,利用形態(tài)學(xué)中的開運算(先進(jìn)行腐蝕操作后進(jìn)行膨脹操作)和閉運算(先進(jìn)行膨脹操作后進(jìn)行腐蝕操作)對原始靜態(tài)手勢圖片進(jìn)行預(yù)處理以去除圖像數(shù)據(jù)噪聲。 腐蝕與膨脹操作的公式為
腐蝕之后圖像會向內(nèi)收縮,而膨脹之后圖像會向外擴(kuò)展。如圖4所示,手勢圖片經(jīng)形態(tài)學(xué)的開和閉運算之后消除了毛邊和空洞點,圖片中的手勢邊界和類膚色區(qū)域邊界均較為圓滑,適合進(jìn)行下一步的膚色與類膚色區(qū)域的精確分割與提取。
圖4 經(jīng)開閉運算后的手勢分割圖Fig.4 The gesture segmentation image processed by open and close operations
分水嶺算法(watershed algorithm, WA)是一種基于計算機(jī)形態(tài)學(xué)的圖像分割算法,它能夠高效、準(zhǔn)確地連通目標(biāo)區(qū)域的邊界,因而被廣泛地應(yīng)用于數(shù)字圖像處理領(lǐng)域[16]。傳統(tǒng)的WA是一種基于拓?fù)淅碚摰臄?shù)學(xué)形態(tài)學(xué)分割方法,它將一張圖像看成一幅地形圖,每個像素點坐標(biāo)(x,y)即成為地形圖中的平面坐標(biāo),而該像素點的灰度值即是地形圖中的海拔高度值。每一個局部極小值都被稱為積水盆地且會對其附近的區(qū)域產(chǎn)生影響。由于傳統(tǒng)的WA是一種基于圖像梯度的圖像分割方法,所以當(dāng)圖像中擁有的局部極小值太多時就會形成過多的初始化點,導(dǎo)致圖像的過度分割問題,從而得不到理想的分割結(jié)果。因此,需要在傳統(tǒng)的WA上進(jìn)行改進(jìn),以求解決過度分割問題,所以改進(jìn)的算法必須能夠減少原圖像像素的梯度差,同時減少初始分割點。本文提出的ICWA的總體算法流程如圖5所示。
圖5 改進(jìn)后分水嶺算法(ICWA)流程圖Fig.5 The workflow of ICWA
1)對開閉操作后的灰度圖像進(jìn)行高斯濾波,以去除噪聲數(shù)據(jù)。例如,經(jīng)過高斯濾波后的灰度圖像可以消除大量無效的局部最小值點,以防止過度分割。
2)計算開、閉操作后灰度圖的Hu矩,再由Hu矩特征得到質(zhì)心坐標(biāo)。幾何矩和質(zhì)心坐標(biāo)的計算式為
式(4)表示圖像f(x,y)的p+q階幾何矩,而式(5)表示圖像f(x,y)的質(zhì)心坐標(biāo)。
3)將質(zhì)心和經(jīng)過高斯濾波過濾后的圖像梯度的局部極小值作為積水盆地(經(jīng)過大量實驗驗證,這里選擇梯度值低于22),并開始一點點填充尋找分水嶺。經(jīng)過ICWA處理結(jié)果的對比實驗證明,該算法可以完整地分割、提取出淺藍(lán)色的手勢區(qū)域,并準(zhǔn)確地排除其他類膚色區(qū)域,如圖6所示。與之相比,傳統(tǒng)WA會造成嚴(yán)重的過分割現(xiàn)象,如圖7所示。此外,如圖8所示,經(jīng)過ICWA分割、處理得到的圖片周邊會存在很多毛刺,因此還需要對圖8進(jìn)行中值濾波處理,處理后的結(jié)果如圖9所示。
圖6 ICWA算法的處理效果Fig.6 Output results of ICWA
圖7 傳統(tǒng)分水嶺算法(WA)的處理結(jié)果Fig.7 Output results of the traditional WA
圖8 ICWA提取的手勢圖片F(xiàn)ig.8 The gesture image of extracted by ICWA
圖9 中值濾波處理結(jié)果Fig.9 The processing result median filter
在手勢識別中手掌部分的信息是最重要的,其影響著手勢識別的正確率,而手臂部分則是冗余信息完全可以刪除,所以實現(xiàn)手掌與手臂之間的分割是手勢智能識別之前的關(guān)鍵處理步驟,它可以有效地提高手勢識別的計算效率以及手勢識別的準(zhǔn)確率。因此,本文提出一種基于凸性檢測[17]和PCA降維算法[18]相結(jié)合的手臂分割方法。
凸性檢測是理解物體輪廓的一種有效方法,就是求一組點集的凸包集合。它是計算機(jī)幾何學(xué)的一個基本問題,其本質(zhì)就是利用Graham Scan算法來維護(hù)一個凸殼(凸包輪廓),通過不斷地對凸殼中加入新點或者刪除影響凸性的點,來不斷地改變凸殼的形狀,最終形成一個穩(wěn)定的凸包,其算法流程總結(jié)如下:
1)對點集的排序,其目的是為了梳理雜亂的點集以提高算法的效率。這里采用極坐標(biāo)系,找到y(tǒng)坐標(biāo)最小的點(若y坐標(biāo)相同則取x小的點)記為 p0,將 p0與{p1,p2,...,pn}中每個點相連,再以p0為極點,進(jìn)而計算每條連線的極角并按從小到大排列(若極角相等則計算距離由小到大排列)。
2)把p0、p1依次入棧,遍歷剩下的點集PLeft={p2,p3,p4,...,pn}把屬于凸包的點集入棧,其他無關(guān)點集出棧。其中,可以根據(jù)叉積來判斷入棧和出棧,若依次遍歷PLeft中的每一個點,若當(dāng)前點為凸包凸點時,則向左旋轉(zhuǎn),而沒有向左旋轉(zhuǎn)的點則是非凸點。 p1與 p2的叉積在物理上可以理解為兩向量所組成的平行四邊形的面積,而數(shù)學(xué)上可以通過正負(fù)來判斷方向。若 p1與 p2的叉積為負(fù),相對于 p0p1,點p2在逆時針方向即左邊入棧,若 p1與 p2的 叉積為正,則相對于 p0p1,點p2在順時針方向即右邊進(jìn)行棧頂元素出棧操作。依據(jù)這個原則繼續(xù)判斷棧頂前兩個元素與前點的位置關(guān)系,最后棧中的點集就是本文需要找的凸點,連接后就是凸包。凸性檢測實驗判定手勢凸點的輸出結(jié)果如圖10所示,其中輪廓為檢測出的凸包輪廓,圓圈為檢測出的凸點,而表1記錄了凸點位置與凸包輪廓之間的距離。
圖10 凸性檢測處理結(jié)果Fig.10 A convexity detection result
表1 凸點位置分類及其與凸包輪廓的之間距離Table1 Convex point location classification and the distance between location and its convex hull contour
3)根據(jù)已有的凸包輪廓和凸點坐標(biāo),可以進(jìn)一步求得凸點坐標(biāo)和凸包輪廓之間的距離,將點集分為距離凸包輪廓近的“近點”和距離凸包輪廓遠(yuǎn)的“遠(yuǎn)點”,一般人的手腕都是凹陷處即遠(yuǎn)點,所以尋找手臂分割線可以先從“遠(yuǎn)點”入手,若“遠(yuǎn)點”集合中沒有再尋找“近點”集合。
PCA即主成分分析,用于圖像和數(shù)據(jù)的降維,其本質(zhì)就是將高維數(shù)據(jù)降維到低維空間。這里探索將PCA降維方法應(yīng)用于手臂分割線的提取,主要目的是要研究一種方法來便捷地得到手勢的主要方向?;谑直鄯指罹€與手勢方向基本呈現(xiàn)垂直狀態(tài)的客觀事實,求得了手勢的方向也就得到了手臂的分割線。基于PCA降維的手臂分割線提取算法的具體步驟如下:
1)求得原始靜態(tài)手勢圖片的均值圖片,并以原始圖片減去均值圖片得到均差圖片。
2)求得步驟1)中均差圖片的協(xié)方差矩陣,再由協(xié)方差矩陣得到靜態(tài)手勢圖片的特征值和特征向量,將特征值和特征向量一一對應(yīng)并按從大到小進(jìn)行排列。
3)取前k個特征向量,對均差圖片進(jìn)行降維。基于只想從該方法中得到手勢的方向,只要取值meaneigval=1(meaneigval為選取前meaneigval個特征值與其所對應(yīng)的特征向量,因為一副靜態(tài)手勢圖片中,手勢斜率為其主要特征且特征值最大,因此meaneigval取值為1)即可得到原始靜態(tài)手勢的斜率k。
4)為了有效降低計算量,此算法先遍歷“遠(yuǎn)點”集合中的每兩個點,求得它們之間的斜率k′和距離 d,進(jìn)而根據(jù) k×k′=-1,取得與-1 最接近的前3條連線和點集,再從中取d最大的作為手臂的分割點,因為手臂間的寬度總是大于手指間的寬度。若在“遠(yuǎn)點”集合中沒有尋找到分割線就再在“近點”集合中進(jìn)行查找。最后,還要以手勢質(zhì)心方向判斷分割線是否查找正確,若質(zhì)心點在分割線之上則正確,反之錯誤繼續(xù)查找。根據(jù)以上步驟進(jìn)行了基于PCA降維的手臂分割線提取方法的手腕分割實驗,結(jié)果如圖11和圖12所示。
圖11 提取的手臂分割線Fig.11 An extracted arm dividing line
圖12 手掌與手臂的分割結(jié)果Fig.12 The segmentation between the palm and arm
本文的實驗采用Python3.5和OpenCV3.3實現(xiàn),測試平臺的硬件環(huán)境如表2所示。本文使用的手勢圖片數(shù)據(jù)集包括Marcel標(biāo)準(zhǔn)手勢數(shù)據(jù)集和網(wǎng)絡(luò)上收集的手勢數(shù)據(jù)圖片,一共包含了9種手勢,共16 898張圖片。
表2 實驗硬件環(huán)境Table2 Experimental hardware environment
本文首先使用傳統(tǒng)的SIFT算法對無類膚色背景的靜態(tài)手勢圖片進(jìn)行了基于特征點匹配的自動識別,其識別結(jié)果如圖13所示。其中,手勢圖片為數(shù)據(jù)集中表示“平鋪”意義的手勢,圖13(a)檢測出了47個特征點,而圖13(b)檢測出了41個特征,連線表示匹配成功的特征點。可以看出,在此SIFT特征點匹配算法中,由于手勢的旋轉(zhuǎn)或者陰影的干擾,都會造成特征點提取和匹配的誤差,從而導(dǎo)致識別的準(zhǔn)確率降低,同時由于手臂的冗余信息無法去除會造成匹配算法的效率大大降低。
圖13 SIFT算法特征匹配結(jié)果Fig.13 SIFT feature matching results
此外,本文將傳統(tǒng)WA、主動標(biāo)記的分水嶺算法AMWA(active marker watershed algorithm)和ICWA進(jìn)行了對比實驗。圖14在展示了在類膚色背景下WA、AMWA和ICWA之間的靜態(tài)手勢分割結(jié)果對比。其存在的主要問題在于WA算法雖然能夠分割出膚色和類膚色區(qū)域,但會出現(xiàn)嚴(yán)重的過分割現(xiàn)象,將手勢分割的較為零散,影響后續(xù)識別的準(zhǔn)確率。而改進(jìn)的AMWA算法,雖然不會出現(xiàn)過分割現(xiàn)象,但無法區(qū)分膚色和類膚色區(qū)域,所以同樣影響識別準(zhǔn)確率。而本文提出的ICWA算法可以較為準(zhǔn)確地分割出手勢區(qū)域,原因在于其集成的高斯濾波可以有效地減少圖像的梯度差,并且ICWA算法只由一個質(zhì)心點作為初始點,有效地減少了傳統(tǒng)靜態(tài)手勢分割算法中的過分割和無法完全分割的問題。本實驗將ICWA處理后的圖片(像素為48×48)作為輸入數(shù)據(jù),放入LeNet CNN中達(dá)到了較好的識別效果。為了驗證該實驗的實用性和正確性,本實驗初步采用了CNN中最經(jīng)典的LeNet-5模型:首先由6個卷積核為5×5、步長為1的卷積層提取圖像特征,由核為3×3、步長為2的池化層聚合特征,然后由16個卷積核為5×5、步長為1的卷積層提取特征和核為3×3、步長為2的池化層聚合特征,再由2層全連接層平鋪特征進(jìn)行分類,最后輸出分類信息,具體結(jié)構(gòu)如圖15所示。
圖14 類膚色區(qū)域背景下的WA、AMWA和ICWA之間處理結(jié)果的對比Fig.14 Comparison of processing results among WA, AMWA and ICWA with skin-like background
圖15 CNN手勢識別結(jié)構(gòu)圖Fig.15 The CNN architecture for gesture recognition
如表3所示,使用傳統(tǒng)SIFT算法識別9種手勢的平均識別率為83.04%,而本文所提出的ICWA+LeNet CNN方法的識別率都高于SIFT算法,且其平均識別率達(dá)到了97.85%。其主要原因在于:1)SIFT方法會受到手勢的旋轉(zhuǎn)和陰影的干擾而導(dǎo)致特征點提取的不一致和相應(yīng)的匹配錯誤,最終無法正確進(jìn)行手勢識別; 2) SIFT算法需要進(jìn)行特征點匹配,若匹配不成功就會出現(xiàn)誤據(jù),而ICWA利用CNN進(jìn)行分類則不會出現(xiàn)誤據(jù)的情況。因此,ICWA算法可以完整地分割出靜態(tài)手勢的有效區(qū)域,進(jìn)而能夠準(zhǔn)確地提取出靜態(tài)手勢的特征。
表3 SIFT算法和ICWA算法準(zhǔn)確率與誤據(jù)率對比Table3 Comparison of accuracy and error rate between SIFT and ICWA %
利用Marcel標(biāo)準(zhǔn)手勢數(shù)據(jù)集,在表2所列的硬件平臺上對本文所提出的ICWA和傳統(tǒng)分水嶺算法進(jìn)行對比實驗。圖16分別展示了ICWA+Le-Net CNN方法和傳統(tǒng)的分水嶺算法+LeNet CNN方法對Marcel數(shù)據(jù)集中的每張圖片進(jìn)行分類識別的結(jié)果對比(按手勢種類取平均值)。從實驗結(jié)果可以看出,ICWA+LeNet CNN方法識別率明顯高于傳統(tǒng)分水嶺算法+LeNet CNN方法。
圖16 傳統(tǒng)分水嶺算法(WA)與ICWA的平均識別率比較Fig.16 Comparison of average recognition rate between traditional WA and ICWA
本文發(fā)現(xiàn)基于低成本單目視覺的靜態(tài)手勢分割算法依然難以在復(fù)雜類膚色背景下進(jìn)行準(zhǔn)確、完整的手勢圖像分割與提?。?)傳統(tǒng)分水嶺算法很容易在類膚色背景和手勢前景中造成嚴(yán)重的過分割現(xiàn)象;2)傳統(tǒng)方法沒有考慮將手臂和手掌部分進(jìn)行高效地分割,以減少冗余信息。為了解決這個難題,本文提出了針對有大量類膚色背景的靜態(tài)手勢分割算法模型。其設(shè)計并集成了ICWA算法、PCA降維與凸性檢測融合算法。該模型首先由ICWA算法進(jìn)行膚色區(qū)域與類膚色區(qū)域的區(qū)分,保留膚色區(qū)域,然后由PCA降維與凸性檢測相結(jié)合的算法求得手臂分割線,排除手臂冗余區(qū)域。最后,經(jīng)過大量實驗驗證了該算法模型的準(zhǔn)確性、有效性和實用性。其精確、高效的手掌部分圖像的分割與提取為后續(xù)靜態(tài)手勢的快速、智能識別打下了堅實基礎(chǔ)。
未來的研究重點是探索一種特征描述算子來描述、記錄動態(tài)手勢的軌跡,特別是三維深度信息。此外,需要深入研究并設(shè)計出滿足實用要求的深度學(xué)習(xí)網(wǎng)絡(luò)來高效、智能地識別有缺陷的靜態(tài)手勢分割圖片和使用動態(tài)的手勢軌跡特征進(jìn)行學(xué)習(xí)。