馬少斌,張成文,梁虎金
(1.蘭州文理學(xué)院 數(shù)字媒體學(xué)院,甘肅 蘭州 730010;2.蘭州文理學(xué)院 VR技術(shù)研發(fā)與推廣中心,甘肅 蘭州 730010)
Kinect[1]是一個(gè)具有動(dòng)態(tài)獲取、影像辨識(shí)、麥克風(fēng)輸入、語音識(shí)別等功能的3D體感攝影機(jī).它結(jié)合了視覺處理算法和三維定位功能,可以利用攝像頭的高分辨率對(duì)三維坐標(biāo)空間中的細(xì)微變動(dòng)進(jìn)行識(shí)別,同時(shí)其自帶人體骨骼跟蹤SDK,可以識(shí)別最多6位用戶的人體骨骼并對(duì)他們進(jìn)行1080 P的高清視屏錄制.Kinect在紅外傳感器的配合之下,可以在昏暗的背景下精準(zhǔn)識(shí)別用戶動(dòng)作,有效克服了光照條件對(duì)其應(yīng)用范圍的限制.因此,Kinect在教育教學(xué)[2]、交互游戲設(shè)計(jì)、虛擬現(xiàn)實(shí)等領(lǐng)域獲得了廣泛的應(yīng)用.
Kinect設(shè)備提供3種類型的最初數(shù)據(jù),即深度數(shù)據(jù)流、彩色視頻流、原始音頻數(shù)據(jù)[3],可分別應(yīng)用于骨骼跟蹤、動(dòng)作識(shí)別、人臉識(shí)別、語音識(shí)別等.自古以來,手勢(shì)是人類交流的重要輔助手段,不同的手勢(shì)被賦予各種特定的含義,在教學(xué)、演講中,利用這些特定含義的手勢(shì)來控播課件將會(huì)為我們的工作帶來極大的便利,因而手勢(shì)識(shí)別逐漸成為人機(jī)交互領(lǐng)域的一個(gè)研究熱點(diǎn).
基于上述原因,本文在討論Kinect深度圖像及骨骼跟蹤的理論基礎(chǔ)上,重點(diǎn)研究基于深度圖像的手勢(shì)交互,并進(jìn)行測(cè)試驗(yàn)證,最終應(yīng)用于AR交互課件中[4].
首先,應(yīng)用Kinect采集并分析深度數(shù)據(jù).然后,經(jīng)過特定處理,將人體目標(biāo)從環(huán)境中提取出來并二值化.最后,以16位二進(jìn)制數(shù)組成后續(xù)的信息數(shù)據(jù)計(jì)算人體部位的關(guān)節(jié)點(diǎn),其過程如圖1所示.
圖1 Kinect獲取的人物骨骼過程
Kinect深度圖像采用結(jié)構(gòu)光編碼(Light Coding)[5]技術(shù),就是用光源照明給需要測(cè)量的空間編上碼.“結(jié)構(gòu)光”就是將光結(jié)構(gòu)化,結(jié)構(gòu)化的光可包括點(diǎn)結(jié)構(gòu)光、線結(jié)構(gòu)光和面結(jié)構(gòu)光.點(diǎn)結(jié)構(gòu)光測(cè)量法每次只投影一點(diǎn);線結(jié)構(gòu)光向物體投影一條線或者多條線;面結(jié)構(gòu)光向物體投射平面幾何圖案,三種方法各有優(yōu)缺點(diǎn).面結(jié)構(gòu)光識(shí)別法目前被廣泛應(yīng)用于人臉識(shí)別、醫(yī)學(xué)、工業(yè)、航天等領(lǐng)域.Kinect采用的面結(jié)構(gòu)光技術(shù),就是由紅外攝像頭將光線投射到被拍攝物體上,因?yàn)楸煌渡湮矬w具有不同的深度區(qū)域,從而形成不同的圖案,并將其換算成深度信息,就可以知道這個(gè)物體在什么位置了.
深度圖像以16位二進(jìn)制數(shù)據(jù)信息流表示,如以[0000 1000 1100 1110]為例,其中,后3位二進(jìn)制數(shù)代表可以識(shí)別的人數(shù),前13位為Kinect攝像頭與目標(biāo)物體之間的距離.目標(biāo)物體距Kinect攝像頭較遠(yuǎn)時(shí),空間面積越大;目標(biāo)物體距Kinect攝像頭較近時(shí),空間面積越小.因此,微軟Kinect官方推薦舒適距離是1.2 m~3.5 m為佳.
Kinect通過下面3個(gè)步驟將深度圖像轉(zhuǎn)化為骨骼圖像[6].
第1步:將人像抽離出背景,由于背景的環(huán)境十分的復(fù)雜多樣,這項(xiàng)工作難度很大.先看人像輪廓,再看細(xì)節(jié),對(duì)深度圖像的分辨率進(jìn)行有序規(guī)格的掃描,使用分辨率級(jí)的檢測(cè)方法利用Kinect對(duì)深度圖像檢查,辨別出人像的各個(gè)肢體結(jié)構(gòu),經(jīng)過約定的字節(jié)編碼,分割出被追蹤的用戶.
第2步:系統(tǒng)將用戶抽離出來,采用人體特征值進(jìn)行快速分類,識(shí)別出人體各部位,這一過程要做到快速和精準(zhǔn).
第3步:通過人體部位識(shí)別關(guān)節(jié)部位的21個(gè)點(diǎn),通過對(duì)這些關(guān)節(jié)點(diǎn)的數(shù)據(jù)分析測(cè)量人體的實(shí)際位置.如圖1(d)中骨骼跟蹤關(guān)節(jié)點(diǎn)所示.
Kinect系統(tǒng)自帶深度學(xué)習(xí)算法[7],即Kinect骨骼跟蹤機(jī)器學(xué)習(xí)技術(shù),該技術(shù)獲得2011年MacRobert Award工程創(chuàng)新大獎(jiǎng)[1].人體的部位分為頭部、軀干和四肢,Kinect通過“分類器”分析評(píng)估其特征變量.這是一個(gè)機(jī)器學(xué)習(xí)的過程,評(píng)估過程會(huì)隨著不斷掃描到的像素進(jìn)行修正,從而判斷是人體的哪個(gè)部位.
訓(xùn)練分類器特征公式如(1)所示,其中u和v是一對(duì)偏移向量,x是像素值,d1(x)是像素值在圖像I中的深度值,1/d1(x)是偏移正規(guī)化,用來處理人體尺寸的縮放,也就是簡化目標(biāo)像素u和v的值.很顯然,這些特征測(cè)量與像素周圍區(qū)域的3D外形相關(guān),用來說明手臂和腿之間的區(qū)別.
(1)
機(jī)器學(xué)習(xí)需要大量的數(shù)據(jù),微軟征集了大量不同著裝、膚色、體型和身高的志愿者來訓(xùn)練數(shù)據(jù).大量分析數(shù)據(jù)被編排成能夠迅速?zèng)Q策識(shí)別人體各部位的決策樹,眾多決策樹構(gòu)成決策樹森林,如圖2所示.
圖2 機(jī)器學(xué)習(xí)產(chǎn)出的“決策樹”
1.4.1 手勢(shì)識(shí)別概述
Kinect攝像頭可以基于人體全身骨骼識(shí)別,使用深度攝像頭消除背景及光線造成的影響,使用圖形識(shí)別算法提供數(shù)據(jù)信息,捕獲到用戶的手勢(shì)動(dòng)作,并將這些手勢(shì)動(dòng)作轉(zhuǎn)換為控制方式.手勢(shì)定義、手勢(shì)檢測(cè)、特征提取及分類識(shí)別是體感手勢(shì)識(shí)別中最重要的部分.通過靜態(tài)手勢(shì)與動(dòng)態(tài)手勢(shì)的有效結(jié)合,把攝像頭中將識(shí)別到的手勢(shì)從視頻中甄別出來,通過預(yù)處理,提供給系統(tǒng)調(diào)用.并且,采用手勢(shì)分割算法把分離出的手勢(shì)先進(jìn)行單獨(dú)保存,然后提取出手勢(shì)特征值,最后,應(yīng)用分類算法來判斷手勢(shì)類別.
手勢(shì)識(shí)別算法[8-11]的研究與改進(jìn)主要是針對(duì)算法優(yōu)化[9]和特征值提取研究[8,10,11]方面,可以有效識(shí)別數(shù)字0~9的10種手勢(shì),如圖3所示.
圖3 0~9 10種數(shù)字手勢(shì)
1.4.2 手勢(shì)分隔與特征提取
依據(jù)AR可視化交互教學(xué)系統(tǒng)[4]要求,需要對(duì)AR課件進(jìn)行手勢(shì)控制,且滿足演講習(xí)慣,無需10種復(fù)雜的“數(shù)字手勢(shì)”,就可滿足對(duì)課件播放控制需求.根據(jù)人們?nèi)粘W鍪謩?shì)時(shí), 用右手高于頭部來“控制焦點(diǎn)”;左手高于頭部來執(zhí)行“鎖定”;雙手握拳低于頭部來代表“開始”;雙手展開低于頭部來代表“退出”;右手向左方向揮動(dòng)表示“下一頁”;左手向右方向揮動(dòng)表示“上一頁”等,如圖4所示.
圖4 部分手勢(shì)交互深度圖像
在實(shí)際應(yīng)用中,圖4所表示的部分手勢(shì)基本能滿足對(duì)課件的控制需求,圖4(e)~圖4(h)分別代表了兩種動(dòng)態(tài)手勢(shì),這在增強(qiáng)現(xiàn)實(shí)中非常重要,可以對(duì)三維虛擬空間中的虛擬物品進(jìn)行旋轉(zhuǎn)、放大、縮小等操作,適當(dāng)?shù)膭?dòng)態(tài)手勢(shì)可以使操作更加靈活自如,比如雙臂向前向后伸展.
Kinect采集到手部區(qū)域的深度值大都處于同一范圍內(nèi),利用深度閾值法提取手部區(qū)域的深度數(shù)據(jù).按照所采集到人體數(shù)據(jù)的最小深度值Dmin和深度閾值T的方法,就可分割出手部區(qū)域.手部區(qū)域深度圖像的提取公式如(2)所示.其中,H(B,G,R)為提取的手部區(qū)域像素值;S(B,G,R)為人體像素值,其他區(qū)域?yàn)?;d為攝像頭到人體輪廓每個(gè)像素的距離.根據(jù)深度閾值法,對(duì)分割出的手部區(qū)域進(jìn)行二維空間的投影,重建二維圖像.
(2)
本文以Kinect V2及Microsoft Kinect SDK V2.0為實(shí)驗(yàn)平臺(tái).Kinect for Windows SDK引用后添加控件,打開Main Windows.xaml文件,添加Image控件,命名為using Microsoft.Kinect,定義對(duì)象為Kinect Sensor Kinect.初始化設(shè)備后進(jìn)行RGB圖像獲取、深度圖像處理等,過程不再贅述,重點(diǎn)討論有關(guān)骨骼追蹤事件.
手部追蹤技術(shù)和手勢(shì)識(shí)別技術(shù)雖為不同的兩個(gè)概念,但其方法基本一致.首先需要建立可追蹤手部運(yùn)動(dòng)的類庫,這些類之間通過相互調(diào)用來實(shí)現(xiàn)用戶手勢(shì)所在位置的管理.微軟提供的Kinect SDK并沒有包含手勢(shì)識(shí)別引擎,需要開發(fā)者自定義手勢(shì).手勢(shì)識(shí)別引擎有基于算法、基于神經(jīng)網(wǎng)絡(luò)和基于手勢(shì)樣本庫3種基本方法.本案例中采用第一種比較簡單的方法來完成實(shí)驗(yàn),這種算法通過一個(gè)二值型對(duì)象來判定某一手勢(shì)是否符合預(yù)定的手勢(shì)并將其加入類庫.通過對(duì)算法的擴(kuò)展及相關(guān)參數(shù)的調(diào)整,能夠滿足我們對(duì)普通課件的播放控制,手勢(shì)識(shí)別算法設(shè)計(jì)如圖5和圖6所示.后續(xù)將在此基礎(chǔ)上增加新的手勢(shì)識(shí)別算法并將其加入類庫中,以滿足AR課件對(duì)更多控制的需求.
圖6 動(dòng)態(tài)手勢(shì)識(shí)別算法流程
圖5 靜態(tài)手勢(shì)識(shí)別算法流程
雙手旋轉(zhuǎn)幻燈片圖片的實(shí)驗(yàn)效果如圖7所示.圖7(a)為手部動(dòng)作和圖片的起始狀態(tài);圖7(b)表示手勢(shì)做旋轉(zhuǎn)“勢(shì)”后,圖片也隨之旋轉(zhuǎn)的效果.
圖7 旋轉(zhuǎn)手勢(shì)
旋轉(zhuǎn)手勢(shì)識(shí)別的核心算法在Handle Gesture Tracking方法中,并通過Kinect Cursor Manager中的Update Cursor方法和Kinect中的骨骼追蹤事件綁定,這樣就可以將獲得的新坐標(biāo)點(diǎn)添加到集合中去.對(duì)新添加的坐標(biāo)點(diǎn)首先進(jìn)行位置判斷,即新加入的點(diǎn)是否以手勢(shì)開始位置為參考點(diǎn);其次進(jìn)行時(shí)間判斷,即檢查手勢(shì)開始時(shí)間和當(dāng)前時(shí)間的差是否大于閾值.鑒于Kinect攝像頭分辨率等技術(shù)的局限性,目前只能對(duì)手勢(shì)進(jìn)行追蹤和識(shí)別.隨著硬件設(shè)備性能的不斷提高能夠獲取更好的深度影像數(shù)據(jù),則可以實(shí)現(xiàn)對(duì)手指的追蹤和識(shí)別,使實(shí)驗(yàn)達(dá)到更高精準(zhǔn)度和更高自然性.
在現(xiàn)代社會(huì)中,使用課件教學(xué)、演講非常普遍.但演講者卻要不斷地點(diǎn)擊鼠標(biāo)、鍵盤或者一些其它的手持設(shè)備來完成課件的翻頁、演示等功能.本文完成了基于Kinect的手勢(shì)交互課件應(yīng)用系統(tǒng)的設(shè)計(jì),并在普通課件中進(jìn)行了功能驗(yàn)證,實(shí)驗(yàn)結(jié)果表明,本方法實(shí)現(xiàn)課件播控能提高播控的準(zhǔn)確率和靈活性,從而為基于AR交互課件的控播奠定基礎(chǔ),系統(tǒng)擴(kuò)展后可以應(yīng)用于課堂教學(xué)、學(xué)術(shù)交流、商務(wù)演講等眾多領(lǐng)域.下一步我們將研究增強(qiáng)現(xiàn)實(shí)手勢(shì)識(shí)別交互技術(shù)在AR視覺系統(tǒng)、同步系統(tǒng)、多機(jī)交互系統(tǒng)等領(lǐng)域的應(yīng)用,提高交互技術(shù)的靈活性和廣泛性.
蘭州文理學(xué)院學(xué)報(bào)(自然科學(xué)版)2021年3期