張青建, 韓建平
(杭州電子科技大學(xué) 計算機學(xué)院,浙江 杭州 310016)
Kinect不僅價格低廉,而且能夠獲取彩色和深度信息,其深度信息具有抗光照擾動的優(yōu)勢,因此可用于人體關(guān)節(jié)點定位.文獻[1]利用目標(biāo)識別標(biāo)記出人體模型,通過分類器定位出人體關(guān)節(jié)點,此方法是目前比較先進的關(guān)節(jié)點定位方法,但該方法需要大量的訓(xùn)練標(biāo)記樣本.文獻[2]利用深度圖像獲取人體細化線,并根據(jù)人體剛架比例關(guān)系定位出人體關(guān)節(jié)點,此方法容易實現(xiàn),但定位準(zhǔn)確率有待提高.
筆者在文獻[2]的基礎(chǔ)上,加入了角點檢測及分類、臉部跟蹤等內(nèi)容,提高了關(guān)節(jié)點定位的準(zhǔn)確性和魯棒性.文章首先對深度圖像預(yù)處理以獲取人體骨架線,從而得到骨架線角點并對角點篩選分類,然后在彩色圖像中對人的臉部跟蹤以定位頭節(jié)點,最后結(jié)合人體各剛件比例關(guān)系,定位出人體關(guān)節(jié)點,方法如圖1所示.
用kinect攝取彩色圖像和深度圖像,由于此二者坐標(biāo)不同,所以筆者以深度圖像的坐標(biāo)為基準(zhǔn),實現(xiàn)彩色圖像坐標(biāo)向深度圖像坐標(biāo)對齊[3],以保證頭節(jié)點(從彩色圖像中獲取)和其他關(guān)節(jié)點(從深度圖像中獲取)坐標(biāo)一致.設(shè)置深度圖像的有效景深為0.8~3.8 m,超過此范圍的景深,在彩色圖像中予以擦除,初步排除不必要的像素干擾.
Kinect直接攝取的深度圖像中人體輪廓邊緣不光滑,人體區(qū)域內(nèi)可能有黑洞,若不對深度圖像預(yù)處理,細化后的人體骨架線有毛刺,甚至導(dǎo)致骨架線變形,因此需對深度圖像進行濾波、膨脹腐蝕等預(yù)處理.首先對深度圖像用中值濾波祛除噪聲[4];然后對深度圖形膨脹腐蝕處理以消除人體區(qū)域內(nèi)的黑洞[5];最后對深度圖像二值化[6]處理以減少數(shù)據(jù)量,取閾值128,大于閾值的像素置為1,否則置為0.
對預(yù)處理后的深度圖像,利用Zhang-Suen細化算法[7]獲取人體骨架線,并對骨架線過濾,使得骨架線上每兩個像素之間有一個空白像素,然后利用Shi-Tomasi角點檢測算法[8]獲取骨架線的角點,最后將得到的角點分為折點和端點,并分別存儲在Point1集合和Point2集合中.
在1.2節(jié)中獲取了人體骨架線的角點,若直接將骨架線的頭部端點作為頭節(jié)點會導(dǎo)致頭節(jié)點的定位有半個頭長的誤差,筆者利用camshift運動目標(biāo)跟蹤算法[9]獲取臉部中心位置,以此作為頭節(jié)點.Camshift跟蹤算法分為3個步驟來完成,如圖1所示.

圖1 方法流程圖Fig.1 Flow chat of this paper method
1.3.1 獲取臉部區(qū)域(ROI)的顏色概率分布圖
為減少光照影響,首先將彩色圖像從RGB空間轉(zhuǎn)換到HSV空間[10],做出H分量直方圖,如圖2所示,直方圖代表了ROI區(qū)域不同顏色在H分量上出現(xiàn)的概率,然后將ROI區(qū)域中每個像素的值用其顏色概率替換,得到顏色概率分布圖[11],如圖3所示.

圖2 H分量直方圖Fig.2 H compont histogram

圖3 顏色概率分布圖Fig.3 The distribution of color probability
1.3.2 meanshift算法路徑尋優(yōu)
Meanshift算法[12]是一種密度函數(shù)梯度估計的非參數(shù)方法,通過迭代尋優(yōu)找到概率分布的極值來定位目標(biāo).首先在圖3中選取搜索窗口,計算窗口的質(zhì)心(xc,yc),
xc=M10/M00;yc=M01/M00,
(1)
式中:M00和M10、M01分別是零階矩和一階矩,
(2)
(3)
(4)
把搜索窗口的中心設(shè)置在計算出的質(zhì)心處,這樣窗口的移動引起窗口內(nèi)容的變化,繼續(xù)重復(fù)以上定位窗口中心的步驟,直到搜索窗的中心與質(zhì)心間的距離小于預(yù)設(shè)的閾值則停止計算[13].
1.3.3 camshift跟蹤
Camshift算法是將視頻中的每一幀做meanshift運算,并將上一幀搜索窗的大小和中心,作為下一幀meanshift算法搜索窗的初始值.如此迭代下去,實現(xiàn)對運動目標(biāo)的跟蹤.在臉部區(qū)域跟蹤過程中,將窗口的中心位置作為頭節(jié)點,實現(xiàn)效果如圖4所示.

圖4 臉部跟蹤效果圖Fig.4 The figure of tracing face
在標(biāo)準(zhǔn)人體骨架模型(如圖5)中剩余的14個關(guān)節(jié),需要結(jié)合骨架線角點和人體各剛件比例關(guān)系共同定位得出.《中國成年人人體尺寸》(GB/T 10000—1988)給出了我國成年人人體尺寸的比例關(guān)系,如圖6所示,以此得到筆者所需的人體各剛件比例關(guān)系,以l(頭-頸)為基準(zhǔn).
l(頸-肩) =0.8l(頭-頸),
l(肩-肘) =1.5l(頭-頸),
l(頸-尾椎) =3.5l(頭-頸),
l(尾椎-臀) =0.5l(頭-頸),
l(臀-膝) =2l(頭-頸),
l(膝-足) =2l(頭-頸),
(5)
其中,l(頭-頸)為頭節(jié)點到頸節(jié)點的距離;l(頸-肩)為頸節(jié)點到肩節(jié)點的距離;l(肩-肘)為肩節(jié)點到肘節(jié)點的距離;l(肘-手)為肘節(jié)點到手節(jié)點的距離;l(頸-尾椎)為頸節(jié)點到尾椎點的距離;l(尾椎-臀)為尾椎點到臀節(jié)點的距離;l(臀-膝)為臀節(jié)點到膝節(jié)點的距離;l(膝-足)為膝節(jié)點到足節(jié)點的距離.

圖5 標(biāo)準(zhǔn)人體骨架模型Fig.5 Standard human skeleton model

圖6 中國成年人人體尺寸比例關(guān)系Fig.6 The proportion of human body size in China
上文得到的人體各剛件比例關(guān)系具有一般性和普遍性,但是個體之間存在差異,針對某一個體,如果僅僅根據(jù)此比例關(guān)系,定位出的人體關(guān)節(jié)點位置的準(zhǔn)確率有待提高,所以本文中,筆者結(jié)合骨架線角點和人體各剛件比例關(guān)系共同定位,得出除頭節(jié)點外的14個人體關(guān)節(jié)點,具體操作如下.
①頭節(jié)點.根據(jù)上文camshift的臉部跟蹤算法獲取臉部中心作為頭節(jié)點的位置,并在端點集合Point2中將y坐標(biāo)值大于此頭節(jié)點且距離最近的點,也就是人體細化后得出的頭部頂點,從端點集合Point2剔除.
②頸節(jié)點.操作①定位了頭節(jié)點,則在折點集合Point1中,到頭節(jié)點距離最近的點一定是頸節(jié)點,以此可以定位出頸節(jié)點的坐標(biāo),并記錄頸節(jié)點到頭節(jié)點的距離為l(頭-頸).最后將頸節(jié)點從Point1集合剔除.
③肩節(jié)點.以頸節(jié)點為圓心,以l(頸-肩)±20%的長度為半徑畫出兩個圓,出現(xiàn)在這兩圓之間區(qū)域的Point1集合中的折點則為肩節(jié)點.由于肩節(jié)點的對稱性,找到一側(cè)肩節(jié)點,另一側(cè)的肩節(jié)點可以對稱定位得出.
④肘節(jié)點、尾椎點、臀節(jié)點、膝節(jié)點.此3個節(jié)點定位方法與肩節(jié)點方法類似,不再贅述.
⑤手節(jié)點.經(jīng)過上幾步的節(jié)點剔除操作,此時的端點集合Point2中只剩下手節(jié)點和足節(jié)點,在站立狀態(tài)下,手節(jié)點到肘節(jié)點的距離小于足節(jié)點到肘節(jié)點的距離,所以計算Point2集合中剩余端點到某一側(cè)肘節(jié)點的距離,距離最小的端點即為該側(cè)的手節(jié)點.
⑥足節(jié)點.在端點集合Point2中,筆者已經(jīng)剔除了有可能為頭部端點的點,手部端點的點,那么剩下的端點只可能屬于足節(jié)點,由此定位出左右足節(jié)點的位置.至此,就完成了人體關(guān)節(jié)點的定位.
筆者的試驗環(huán)境是在室內(nèi),光線充足,無刺激性強光,背景環(huán)境復(fù)雜性一般,試驗對象是單人,人距離kinect約1.5 m處正向面對kinect成站立姿勢,kinect距地約1.2 m,使用kinect攝取270幀視頻,幀率30 fps,圖像分辨率640×480,視頻中的試驗人作出4個基本動作,分別標(biāo)記為動作1~4.
由kinect攝取人體的彩色圖像和深度圖像,如圖7和圖8顯示的是動作1的彩色及深度圖像,接著實現(xiàn)彩色圖像和深度圖像的坐標(biāo)對齊并對彩色圖像擦除部分背景,如圖9所示.對深度圖像進行濾波膨脹等預(yù)處理,如圖10所示.對預(yù)處理后的深度圖像細化處理,得到人體骨架線,如圖11所示.若不對深度圖像預(yù)處理,獲得的人體骨架線有較多毛刺,如圖12所示,不符合試驗要求.獲取骨架線的角點,并將得到的角點分為折點和端點,并分別存儲在Point1集合和Point2集合中,如圖13所示,其中,紅色為端點,藍色為折點.

圖7 人體彩色圖像Fig.7 Color image of human body

圖8 人體深度圖像Fig.8 Depth image of human body

圖9 對彩色圖像坐標(biāo)對齊并擦除部分背景Fig.9 Align the color image coordinates and erase part of background

圖10 預(yù)處理后的深度圖像Fig.10 The depth image after pre-processed

圖11 細化處理得到人體骨架線Fig.11 The human skeleton line after Thinning-processed

圖12 未經(jīng)預(yù)處理得到的人體骨架線Fig.12 The human skeleton line without pre-processed

圖13 人體骨架線角點及分類Fig.13 The classified corners of human skeleton line
本試驗分別獲取動作1~4對應(yīng)的預(yù)處理后的深度圖,人體骨架線角點分類圖,關(guān)節(jié)點定位圖,試驗效果如圖14~17所示.
從試驗效果圖可以看出,筆者方法能夠定位到人體的15個關(guān)節(jié)點.為了驗證本試驗關(guān)節(jié)點定位的準(zhǔn)確性,筆者做了兩個對比試驗:①以人工標(biāo)記方式獲取的關(guān)節(jié)點坐標(biāo)為基準(zhǔn),對比筆者方法與文獻[2]的方法(簡稱對比方法),得出兩種方法獲取的各關(guān)節(jié)點的平均像素誤差;②以文獻[1]的人體關(guān)節(jié)點定位方法(其功能實現(xiàn)已內(nèi)置于kinect產(chǎn)品當(dāng)中,是目前比較先進的人體關(guān)節(jié)點定位方法,簡稱kinect方法)為基準(zhǔn),得出筆者方法定位的各關(guān)節(jié)點的平均正確識別率.
對比一:首先對試驗人的各個關(guān)節(jié)點做人工標(biāo)記,然后在相同的試驗條件下,對同一個動作,用筆者方法和對比方法分別獲取對應(yīng)關(guān)節(jié)點的坐標(biāo),再分別計算出兩者的坐標(biāo)與人工標(biāo)記的對應(yīng)關(guān)節(jié)點坐標(biāo)間的歐氏距離[14],若距離小于15個像素,則認定識別正確,否則認定識別失敗,得到筆者方法和對比方法的關(guān)節(jié)點定位平均正確識別率,如圖18所示.

圖14 動作1Fig.14 Action 1

圖15 動作2Fig.15 Action 2

圖16 動作3Fig.16 Action 3

圖17 動作4Fig.17 Action 4

圖18 筆者方法和對比方法的關(guān)節(jié)點平均正確識別率Fig.18 The correct recognition rate of human jointsof the proposed method and the comparison method
對比二:在相同的試驗條件下,同一個動作的對應(yīng)關(guān)節(jié)點分別以kinect方法和筆者方法定位出關(guān)節(jié)點坐標(biāo),并以kinect方法獲取的關(guān)節(jié)點坐標(biāo)為基準(zhǔn),計算出筆者方法定位的關(guān)節(jié)點坐標(biāo)與kinect方法獲取的對應(yīng)關(guān)節(jié)點坐標(biāo)間的歐氏距離,當(dāng)兩者對應(yīng)關(guān)節(jié)點坐標(biāo)間的歐式距離小于15個像素時則認定識別正確,否則認定識別失敗,得到筆者方法定位關(guān)節(jié)點的平均正確識別率,如圖19所示.
從圖18可以看出,相較于對比方法,筆者方法定位頭節(jié)點的誤差明顯更小,筆者方法定位的其他關(guān)節(jié)點的誤差也相對較小.對比方法的關(guān)節(jié)點的平均定位準(zhǔn)確率是69.7%,而筆者方法的關(guān)節(jié)點平均定位準(zhǔn)確率為76.5%,整體的定位準(zhǔn)確率提高了7%左右,其中頭節(jié)點定位準(zhǔn)確率提高效果最為明顯,達到了42%.從圖19可以看出,筆者方法除肘節(jié)點、膝節(jié)點、尾椎點外,其他節(jié)點的定位相較于kinect方法差別不大,基本吻合,尾椎點的定位效果一般,是由于人體細化后得到的尾椎點位置偏下所致.肘節(jié)點和膝節(jié)點的定位效果不夠理想,平均正確識別率在60%左右,主要原因是當(dāng)人體雙臂伸展或雙膝直立無彎曲站立的姿勢下,折點定位的誤差較大導(dǎo)致的.
提出了一種利用深度圖像和彩色圖像定位人體關(guān)節(jié)點的方法,筆者的工作主要做了以下改進.
(1) 通過運動目標(biāo)跟蹤獲取人體臉部區(qū)域中心點作為頭節(jié)點,防止了直接以骨架線頭部端點作為頭節(jié)點產(chǎn)生的誤差.
(2) 獲取人體骨架線的角點,并將角點分類為端點和折點,并結(jié)合人體剛架比例關(guān)系定位出關(guān)節(jié)點,比直接通過一般性的人體剛架比例關(guān)系定位關(guān)節(jié)點的方法具有更好的適用性.
筆者提出的人體關(guān)節(jié)點定位方法,還有較大的改進空間,比如角點檢測算法的效率有待提高等.