董嘉棋, 萬衛(wèi)兵, 朱特浩, 何 弢, 趙群飛
(上海交通大學 電子信息與電氣工程學院,上海 200240)
隨著生活水平的提高,閱讀已經(jīng)成為人們生活中一項重要的文化娛樂活動.雖然電子書籍已經(jīng)相當普及,但是傳統(tǒng)的紙質(zhì)書籍還大量存在.對于行動不便的老年人與一些身患疾病的特殊人群來說,翻書閱讀存在一定的困難.為了幫助這些特殊人群進行閱讀,有必要設(shè)計一種可以自動翻頁的翻書機器人,通過語音、觸摸屏、按鍵以及手勢來控制翻頁及翻頁方向以輔助閱讀.
近年來,助老助殘的服務(wù)型機器人有了長足的發(fā)展,也有多款幫助上述特殊人群閱讀的翻書機器人相繼問世.日本西澤電機公司開發(fā)了“Book Time”翻書機器人[1],其可以通過按鍵和用嘴吹氣控制翻書,已經(jīng)在西方許多國家作為福祉設(shè)備推廣應用. 2011年北京林業(yè)大學學生在科博會展出了自制的翻書機器人[2],通過開關(guān)控制機械手捻搓翻頁.2009年上海交通大學與早稻田大學聯(lián)合開發(fā)了讀書機器人“二宮君”[3],實現(xiàn)了自動翻頁與語音合成機器朗讀,曾在日本引起了很大的反響.自2008年以來,上海交通大學也相繼開發(fā)了幾代翻書機器人[4-5],除了按鍵[6]、鼠標等控制方法,還增加了聲音控制的功能[7],通過聲控完成翻書操作.然而在現(xiàn)實生活中仍有一部分人由于各種原因手不能動或發(fā)音不清楚,上述控制方式的使用就有很大的局限性.因此,很有必要探索其他全新的控制模式——基于機器視覺的手勢控制指令識別.
手勢交互是一種自然且直觀的人機交互模式,在信息表達上比表情等模態(tài)更明確,信息量更為豐富.早期研究中用戶通過戴上數(shù)據(jù)手套獲取關(guān)節(jié)角度和位置信息進行手勢識別[8],然則這種方法復雜昂貴,不適合構(gòu)造自然的人機交互系統(tǒng),因此,基于視覺的手勢識別逐漸成為實現(xiàn)人機交互的關(guān)鍵技術(shù).目前大部分基于視覺的手勢識別是通過模板匹配來進行的.文獻[9]提取手勢的7個Hu矩并進行尺度歸一化,通過計算馬氏距離進行模板匹配.但該方法不足在于隨著手勢的增加所需要模板的數(shù)量也要增多,無法避免隨著模板增多出現(xiàn)識別率和識別速度下降的狀況.也有研究者使用神經(jīng)網(wǎng)絡(luò)技術(shù)進行手勢識別,文獻[10]采用卷積神經(jīng)網(wǎng)絡(luò)對手勢特征進行學習分類.神經(jīng)網(wǎng)絡(luò)方法容錯能力強,能很好克服噪聲影響,但是還需要增強對時間序列的建模能力以及對動態(tài)手勢的識別效果.為了提高對動態(tài)手勢的識別率,概率統(tǒng)計的方法被大量應用到手勢識別中.隱馬爾科夫模型[11]能很好地描述手勢信號的時空變化,但由于計算量過于龐大并且速度緩慢,不太適用于實時應用.條件隨機場對時空上的手勢特征變化具有很好的魯棒性,但復雜度較高,需要大量的手勢樣本進行模型的訓練.此外,文獻[12]利用深度信息結(jié)合動態(tài)時間規(guī)整的方法,以掌心和指尖距離為特征,進行動態(tài)及靜態(tài)手勢的匹配.但該方法對手勢的旋轉(zhuǎn)和縮放有一定的局限,對方法的適用性造成了影響.
翻書機器人的控制需要具有適用性高、實時性高、對動態(tài)及靜態(tài)手勢識別率高等特點,上述方法雖然在部分情況下都有很好的效果,但是無法適用于翻書機器人的控制.因此本文將手勢控制指令識別作為人機交互的一種手段來控制翻書機器人,為了實現(xiàn)助老助殘的目的,提出利用深度信息結(jié)合手勢幾何表征特征的改進手勢控制指令識別算法. 通常手勢區(qū)域分割多依賴于膚色模型[13],但此方法對環(huán)境敏感,適用性不高.由于深度信息具有不易受環(huán)境干擾且能準確提取出感興趣領(lǐng)域及特征的特點,因此本文通過Kinect(體感外設(shè))獲取手部深度圖像進行處理來識別靜態(tài)手勢控制指令.首先從手部深度圖像中利用最小深度點分割手勢區(qū)域,排除復雜背景下對膚色分割的干擾.其次,運用軌跡圓提取手勢表觀特征并通過決策樹進行快速分類,使手勢特征具有旋轉(zhuǎn)縮放不變性,有效提高識別的準確率和效率.最后,利用Kinect獲取用戶上肢的骨骼信息,同時識別用戶發(fā)出的動態(tài)翻書方向和靜態(tài)翻頁數(shù)量的手勢指令,對翻書機器人進行控制,達到準確翻頁的效果.
由上海交通大學機器人與機器視覺實驗室開發(fā)的翻書機器人如圖1所示.翻書機器人由置書臺、翻書桿和壓書機構(gòu)3個部分組成,分別由電機和舵機控制,可以根據(jù)不同模式的控制指令實現(xiàn)抬起或落下壓書、左右翻頁和記錄翻書頁數(shù)等功能.此翻書機器人結(jié)構(gòu)簡單,利用平行四邊形原理實現(xiàn)了對不同厚度、不同尺寸書籍的自動調(diào)節(jié),使翻書面始終保持在一個平面,可以方便翻書桿和壓書機構(gòu)工作,為無法親自動手翻書的特殊人群提供方便.
圖1 翻書機器人示意圖
Fig.1Imageofthebookturningrobot
翻書機器人可以接受多種模式的控制指令來實現(xiàn)其翻書功能,如圖2所示.用戶通過串口數(shù)據(jù)線接入一個按鍵控制器,可以實現(xiàn)按鍵控制;同樣,接入觸摸板后可以實現(xiàn)觸摸控制;接入話筒即可以通過語音對其進行控制;此外,還有手勢控制以及面部表情的控制.本文的主要目的是提出基于機器視覺的手勢控制指令識別算法.
圖2 翻書機器人控制方式
Fig.2Controlmethodsofthebookturningrobot
面向翻書機器人的手勢控制系統(tǒng)框架如圖3所示.該系統(tǒng)通過Kinect捕捉用戶的手勢指令數(shù)據(jù),根據(jù)對動態(tài)和靜態(tài)手勢的分析結(jié)果,選擇相應的控制指令傳給翻書機器人,實現(xiàn)翻書的目的.其中,動態(tài)指令控制翻書機器人翻頁方向,靜態(tài)指令控制翻書機器人翻頁的數(shù)量.
圖3 翻書機器人手勢控制系統(tǒng)框圖Fig.3 Framework of the gesture control system
為了滿足人們翻書閱讀的需求,翻書機器人手勢控制系統(tǒng)必須具備以下主要功能:(1)左右翻頁;(2)單次或連續(xù)翻頁;(3)開始翻頁;(4)停止翻頁.
對應于上述功能的手勢控制指令的定義如表1所示.其中,向左翻和向右翻是通過胳膊的運動軌跡來判斷的,因此稱之為動態(tài)手勢指令;而其他指令,如翻一頁、連續(xù)翻等,由于手勢指令發(fā)出后要保持一段時間,因此稱之為靜態(tài)手勢指令.
表1 手勢控制指令
(續(xù) 表)
所有控制指令由Kinect接收,通過獲取人體骨骼信息以及深度圖像信息,同時獲取動態(tài)及靜態(tài)手勢,來對機器人進行翻書控制,具體步驟如下:
(1) 設(shè)定OK的手勢作為控制翻書開始信號.
(2) 檢測10 s內(nèi)是否有用戶的手勢控制指令,如果無控制指令,則算法結(jié)束;如果有,則轉(zhuǎn)至步驟(3).
(3) 檢測用戶是否做出End的靜態(tài)手勢.如果做了,則算法結(jié)束;如果沒做,則轉(zhuǎn)至步驟(4).
(4) 用戶揮動手臂給出翻書方向的指令后,判斷是左手還是右手給出指令,并判斷揮動方向,由此來確定翻書方向.
(5) 用戶給出靜態(tài)手勢指令后,系統(tǒng)識別并控制翻頁.
(6) 返回步驟(2).
翻書機器人的控制流程如圖4所示,其中識別算法和設(shè)定參數(shù)將在第2節(jié)中詳細給出.
圖4 翻書機器人控制流程圖Fig.4 Control flowchart of the book turning robot
翻書機器人系統(tǒng)的動態(tài)手勢控制指令識別控制通過Kinect實時獲取人體骨骼信息來實現(xiàn).Kinect骨骼示意圖及其空間坐標如圖5所示.Kinect可以采集人體骨架20個關(guān)節(jié)點的三維空間坐標信息.
(a) Kinect骨骼示意圖
(b) Kinect骨骼空間坐標
由于用戶在進行動態(tài)手勢的控制時,手的關(guān)節(jié)點的運動幅度和范圍是最大的,并且動態(tài)手勢控制結(jié)束,用戶給出靜態(tài)手勢時,手的關(guān)節(jié)點幾乎是不動的.因此,可以根據(jù)手的關(guān)節(jié)點在空間的運動就能很明顯地區(qū)分出何時用戶發(fā)出了動態(tài)手勢指令,何時發(fā)出的是靜態(tài)手勢指令.
根據(jù)翻書機器人控制系統(tǒng)的特點,本文選定手的關(guān)節(jié)點的坐標作為動態(tài)手勢控制指令識別的主要參數(shù).
動態(tài)手勢控制指令識別的步驟如圖6所示.
圖6 動態(tài)手勢控制指令識別算法流程圖Fig.6 Flowchart of the dynamic gesture recognition
(1) 當獲取到OK手勢的開始信號后,對于第i幀輸入的手關(guān)節(jié)點的橫坐標Xi,計算每幀之間左手(或右手)的關(guān)節(jié)點的橫坐標之差,記為ΔXi=Xi-1-Xi,i=1, 2, ….
(2) 當手保持不動時,ΔXi一直為0.從某一幀i=t0時手開始動,獲取到第一個不為0的橫坐標之差,記為ΔXt0.其后每一幀獲取的手關(guān)節(jié)點的橫坐標與前一幀的橫坐標之差記為ΔXt,t=t0+1,t0+2, ….
(3) 若ΔXt0為左手關(guān)節(jié)點之差,則判斷左手在進行揮動;反之,判斷右手在進行揮動.
(4) 根據(jù)Kinect的坐標系,當ΔXt0>0時,表示手向右揮動,即控制翻書機器人向右翻頁.反之,當ΔXt0<0時,表示手向左揮動,即控制翻書機器人向左翻頁.
(5) 對ΔXt0之后獲取的關(guān)節(jié)點手的橫坐標之差的絕對值進行比較,若|ΔXt|>2 cm,則表示手還在揮動;若|ΔXt|<2 cm,則表示手停止揮動,即動態(tài)手勢控制結(jié)束,之后進入靜態(tài)手勢控制指令識別待令狀態(tài).
靜態(tài)手勢控制指令用集合GC來表示,根據(jù)表1中定義,即有
GC={OK, End, P1, P2, P3, P4, P5, P6, P7, P8, P9, Start, Stop}
(1)
用GI表示手勢控制指令的圖像輸入集合,即
GI={gi|第i幀手勢控制指令,i=1, 2,…}
對于每一幀手勢指令圖像輸入gi∈GI,i=1, 2,…,從中提取的特征向量定義為
(2)
用GF表示所有g(shù)i∈GI的特征集合,那么有
(3)
算法主要目標是對于給定的手勢指令輸入,提取其3個表觀特征,然后構(gòu)建一個分類器CR,通過分類器進行靜態(tài)手勢指令識別.廣義上把分類器可以看作為一種映射,其定義為
CR:GI×GF→GC
(4)
根據(jù)研究,決策樹具有快速簡單、無需訓練樣本等特點,故選擇決策樹作為分類器.靜態(tài)手勢指令識別過程將在2.2.4中詳細介紹.
2.2.1手勢區(qū)域分割
要準確地提取每一個輸入手勢控制指令的表觀特征,必須通過深度圖像把手勢區(qū)域從背景中分割出來.選擇合適的深度信息閾值在分割手勢區(qū)域的過程中便于限定搜索空間,濾去手以外背景的干擾.
一般情況下,用戶在做手勢的時候,會很自然地把手伸向身體的前方,使手成為距離攝像機最近的物體.假設(shè)用戶在使用中手是距離Kinect攝像頭最近的物體,為了能追蹤到手的區(qū)域和獲取手的輪廓,首先檢測距離Kinect的最小深度的像素點,如圖7所示.然后根據(jù)用戶手勢的運動范圍,設(shè)定了一個常值作為手部的檢測區(qū)間的最大深度.經(jīng)過多次試驗測試,最后選擇20 cm作為深度區(qū)間值.這種方法既簡單又不會在使用上對用戶強加限制,之后的試驗也證明通過最小深度點來檢測和分割手勢區(qū)域是個簡單高效的方法.
圖7 手勢區(qū)域檢測示意圖Fig.7 Image of the inspection interval of gestures
2.2.2掌心和指尖定位
(1) 掌心定位.在深度圖中獲取手勢區(qū)域后,對其進行二值化處理.由于手掌在手勢區(qū)域中較為集中而且占有最大的面積,所以本文采取連續(xù)腐蝕操作,消除手勢區(qū)域的邊界點,使手勢的區(qū)域縮小,最后得到掌心C,如圖8所示.
圖8 通過腐蝕操作獲取掌心Fig.8 Images of the palm center obtaining by the morphological erosion operation
(2) 指尖定位.對二值化處理后的手勢區(qū)域圖去噪并提取輪廓.文獻[14]研究表明k曲率算法具有較高的識別率、較低的計算復雜度以及旋轉(zhuǎn)不變性,故本文采用k曲率算法在提取的輪廓上定位指尖.
圖9 k曲率算法找指尖示意圖Fig.9 Image of k-curvature algorithm to locate finger tips
2.2.3手勢特征提取
具體的手勢表觀特征提取步驟如下:
(1) 根據(jù)之前操作提取的掌心C和指尖Fi,找出掌心到指尖的最大距離L,以掌心為圓心,以L/10, 2L/10, …,L為半徑做10個同心圓,記c為同心軌跡圓的編號.得到的軌跡圓如圖10所示.若指尖個數(shù)為0,則不進行畫軌跡圓操作.
圖10 手勢表觀特征提取Fig.10 Images of feature extraction for gestures
(2) 以掌心所在的水平線為起點,順時針方向記錄每條軌跡圓上的像素值以0-1-0變化過程的個數(shù),記為Nc.Nc表示每條軌跡圓上有多少個分支與掌心區(qū)域相連,故max(Nc)即為與手掌相連的分支總和.
圖11 軌跡圓上分支的個數(shù)Fig.11 Number of the branches
(3)Nc既包含了手指也包含了手腕部分,所以手指個數(shù)Fi=max(Nc)-1.
該方法在手勢旋轉(zhuǎn)和縮放的情況下也能做到快速識別,保證識別的準確率,相比于其他手勢特征提取方法,具有直觀性高、適應強和運算快等特點.
2.2.4靜態(tài)手勢控制指令識別
根據(jù)式(4)的定義,為了用決策樹對靜態(tài)手勢進行識別,必須確定和計算手勢的表觀特征.表1中定義的13種靜態(tài)手勢放大后如圖12所示.
圖12 幾種常見手勢Fig.12 Images of some normal gestures
(1) 手指個數(shù)Fi;
(2) 指尖個數(shù)Ti;
針對這幾個表觀特征,通過圖12的觀察分析發(fā)現(xiàn):
(1) 根據(jù)手勢OK的定義,在尋找指尖的時候識別出了3個指尖,并且在軌跡圓法中識別出了5根手指.
(2) 當識別出的手指個數(shù)和指尖個數(shù)相等時,不同的手勢之間,指尖個數(shù)Ti的特征區(qū)分比較明顯.由于手勢P1、 P4、 P5和End的指尖個數(shù)特征具有唯一性,可以直接通過指尖個數(shù)Ti來分類.
根據(jù)上述條件,基于決策樹的分類器可以確定為
(5)
式中:(*,*)表示指間夾角的取值范圍;*表示取任意值;-表示無指間夾角.
手勢控制指令識別的決策樹結(jié)構(gòu)如圖13所示.
圖13 手勢分類決策樹Fig.13 Decision tree of gesture classification
翻書機器人控制系統(tǒng)由Kinect通過USB接口與電腦連接,再通過串口將翻書機器人和電腦連接進行指令通信.采樣的圖片分辨率為640像素×480像素,識別速度為20幀/s,可保證控制系統(tǒng)的實時性.翻書機器人控制系統(tǒng)試驗.如圖14所示.
圖14 翻書機器人控制系統(tǒng)示意圖
Fig.14Imageofthebookturningrobotcontrolsystem
從復雜背景中分割出的手勢掌心和指尖的檢測圖如圖15所示.整體可以看出,文中提出的方法能夠準確地檢測出手勢區(qū)域,并且能對掌心和指尖部分進行準確定位.
圖15 手勢區(qū)域檢測及掌心和指尖定位
Fig.15Imageofthegestureareadetectionandlocalizationofthehandpalmandfingertips
首先,為驗證提出的深度圖像結(jié)合決策樹的改進靜態(tài)手勢控制指令識別算法,針對13種常用靜態(tài)手勢進行識別,在復雜光線及復雜背景環(huán)境下,讓10個用戶對每個手勢各做20次試驗,每種手勢共200次.試驗結(jié)果如表2所示.由表2可以看出,手勢P1到P5、 P8及End的識別率均為100%,而對于手勢P6、 P7、 P9、 Start、 Stop以及OK,根據(jù)用戶的手勢表達時姿勢的差異,導致了指尖夾角過大或過小,以及k曲率算法出現(xiàn)了手指誤檢測的情況,造成了測試過程中的識別錯誤.但從整體上來看,平均識別率達到了98.4%,表明本文提出的手勢控制指令識別方法具有有效性.
表2 靜態(tài)手勢控制指令識別結(jié)果
其次,為驗證本文算法的有效性,將其與其他識別算法進行了比較,識別準確率的對比結(jié)果如表3所示.從表3中可以看出,對比其他手勢控制指令識別算法,本文算法總體都具有更高的識別率.本文的試驗結(jié)果整體上較接近文獻[12]和[18]的試驗結(jié)果.相比于文獻[12],本文提出的算法解決了利用動態(tài)時間規(guī)整無法匹配旋轉(zhuǎn)縮放后手勢,以及個別手勢如手勢OK識別率較低的問題.文獻[18]同樣使用了決策樹的方法對手勢進行識別,但是在手勢區(qū)域提取上,本文采用最小深度法而文獻[18]采用灰度直方圖的分割方法,并且本文的方法在試驗上定義了更多的手勢控制指令.從試驗結(jié)果上來看,最小深度點法在手勢分割上具有更好的效果,識別率也更高.
表3 靜態(tài)手勢控制指令識別的準確率對比結(jié)果
(續(xù) 表)
最后,為驗證控制系統(tǒng)的可靠性,對翻書機器人控制系統(tǒng)動態(tài)和靜態(tài)手勢控制指令組合實現(xiàn)翻頁功能的識別率進行了驗證,結(jié)果如表4所示.試驗中,每個控制指令測試了100次,其中靜態(tài)手勢中,1~9為翻頁手勢,0和OK為起止手勢.結(jié)果表明整個控制系統(tǒng)穩(wěn)定有效,具有可靠性和實用價值.
表4 翻書機器人控制系統(tǒng)識別率
本文以助老助殘為目標,面向翻書機器人設(shè)計了一套基于手勢的人機交互控制算法.通過Kinect獲取人體骨骼關(guān)節(jié)點信息以及手勢部分的深度圖像,同時對動態(tài)和靜態(tài)手勢進行識別.通過采用決策樹的方法對靜態(tài)手勢進行識別,保證了手勢的縮放和旋轉(zhuǎn)不變性,同時也能做到手勢的快速識別.試驗結(jié)果證明,本文提出的翻書機器人控制系統(tǒng)具有實用性和穩(wěn)定性,為多模態(tài)的人機交互提供快速有效的信息.今后將繼續(xù)對面向翻書機器人的面部表情識別的控制方法進行深入的研究.
[1] Book Time shrugs off e-readers, turns paper pages for you [EB/OL]. http://www.engadget.com/2009/04/13/book-time-shrugs-off-e-readers-turns-paper-pages-for-you, 2004-09-13.
[2] 科博會亮出“智慧北京”機器人玩伴[EB/OL]. http://www.jx.xinhuanet.com/news/2011-05/19/content_22808385.htm, 2011-05-19.
[3] 情報生産システム研究科·鎌田研、New「二宮くん」を開発[EB/OL]. http://www.yomiuri.co.jp/adv/wol/news/news_110714.html, 2011-07-14.
[4] 上海交通大學.自動翻頁機:CN200410017692.7[P].2004-04-15.
[5] 冶建科,趙群飛,周毅,等.一種自動翻頁掃描機器人的研制[J].機器人技術(shù)與應用,2009(1):27-30.
[6] 唐矯燕,趙群飛,楊汝清,等.讀書機器人機構(gòu)設(shè)計[J].上海交通大學學報,2005,39(12):2025-2028.
[7] 鄧杰,房寧,趙群飛.讀書機器人變聲系統(tǒng)的研制[J].微型電腦應用,2012,28(4):50-52.
[8] 馮志全,蔣彥.手勢識別研究綜述[J].濟南大學學報(自然科學版),2013,27(4):336-341.
[9] 蒲興成,王濤,張毅.基于改進Hu矩算法的Kinect手勢控制指令識別[J].計算機工程,2016,42(7):166-172.
[10] 操小文,薄華.基于卷積神經(jīng)網(wǎng)絡(luò)的手勢識別研究[J].微型機與應用,2016,35(9):55-57,61.
[11] ZHANG S L, ZHANG B. Using HMM to sign language vedio retrieval[C]//Processings of the 2nd Internation Conference on Computational Intelligence and Natural Computing.2010: 55-59.
[12] PLOUFFE G, CRETU A M. Static and dynamic hand gesture recognition in depth data using dynamic time warping[J]. Instrumentation and Measurement, 2016, 65(2): 305-316.
[13] 楊波,宋曉娜,馮志全,等.復雜背景下基于空間分布特征的手勢識別算法[J].計算機輔助設(shè)計與圖形學學報,2010,22(10):1841-1848.
[14] VANCO M, MINARIK I, ROZINAJ G. Evaluation of static hand gesture algorithms[C]//Proceedings of 2014 International Conference on Signals and Image Processing. Dubrovnik: IEEE, 2014: 83-86.
[15] LI Y. Multi-scenario gesture recognition using Kinect[C]//Proceedings of the 17th International Conference on Computer Games. Louisville, KY: IEEE, 2012: 126-130.
[16] REN Z, YUAN J, ZHANG Z. Robust hand gesture recognition based on finger-earth mover’s distance with a commodity depth camera[C]//Proceedings of the 19th ACM international conference on Multimedia. Arizona, USA: ACM, 2011: 1093-1096.
[17] REN Z, MENG J, YUAN J. Depth camera based hand gesture recognition and its applications in human-computer-interaction[C]//Proceedings of the 8th International Conference on Communications and Signal Processing. IEEE, 2011: 1-5.
[18] 曹雛清,李瑞峰,趙立軍.基于深度圖像技術(shù)的手勢識別方法[J].計算機工程,2012,38(8):16-18.