摘 要: 利用Kinect設備獲取深度圖像,通過前景提取得到深度圖像中的人體目標,使用距離變換(包括歐氏距離、城市街區距離、棋盤距離方法)和圖像細化算法(包括Hilditch細化算法和Zhang快速并行細化算法)研究并實現了人體骨骼的提取,通過實驗對各算法的運行效果進行了對比分析。同時,利用深度圖像具備深度信息這一特點解決了在骨骼提取中出現的人體自遮擋問題。在獲取的人體骨骼線基礎上根據人體測量比例定位人體各骨骼關節點,最終通過實驗證明了該骨骼提取方法的有效性。
關鍵詞: Kinect;深度圖像;細化算法;骨骼提取
0 引言
隨著人機交互技術的發展,人們對各種計算設備的控制不再局限于使用鍵盤、鼠標、遙控器、觸摸屏或各種傳感器,還可以讓用戶直接與計算機進行“溝通”,通過對人體動作的分析得到人體運動的參數,解析出相應的控制指令使計算機完成相應的任務,實現非接觸式的人機交互。人體骨骼提取是人體運動分析過程中捕獲人體動作的關鍵步驟,對分析人體的運動姿態,獲取人體運動參數有重要意義。在人體運動過程中,經常會出現人體自身遮擋的情況,如何解決這一問題是獲取人體動作的難點。本文使用Kinect設備獲取深度圖像,對人體的骨骼提取技術進行研究,并利用深度圖像具有的深度信息來解決人體自身遮擋問題。
1 深度圖像的前景提取
Kinect通過其紅外發射器向三維場景中發出連續的近紅外激光方式獲取深度圖像,當激光照射到粗糙物體時就會形成具有高度隨機性的衍射斑點,稱為激光散斑。激光散斑是一種具有三維縱深的編碼技術[1-2]。根據成像物體的不同距離會變換出不同圖案的激光散斑,被激光散斑照射的空間內會即時地對其進行標記,之后紅外攝像頭接收空間內的標記,并將相關的數據傳遞給Kinect的內部圖像處理器芯片,圖像處理器再分析接收到的散斑圖案在空間中的距離,最后形成深度圖像。
本文通過對深度圖像的深度值的判定把前景區域和背景區域進行區分。在這里就會涉及關于閾值門限的設定內容,深度圖像前景提取中閾值的限定發揮著關鍵性的作用,閾值門限的取值取決于深度圖像中深度值最大的點。深度圖像前景提取的公式如式(1)所示:
其中,fg(x,y)是前景圖像中(x,y)處的邏輯值;d(x,y)表示深度圖像中(x,y)處坐標的深度值;代表閾值門限,在不同的場景下最大深度值不同,導致閾值是一個可變的值,閾值
要根據最大深度值的參數進行選定。定義
=(k×dmax),其中用dmax表示最大深度值,k的取值與檢測準確率有關聯。檢測準確率如式(2)所示:
檢測準確率=α/β(2)
其中,α代表正確檢測到的目標數,β代表檢測到的目標總數。為達到相對最好的檢測效果,使漏檢和誤檢都盡可能小,從實驗可以得出當k取值為0.75時基本可以達到最佳效果[3]。前景提取的圖像如圖1所示。
2 人體骨骼提取方法
在上述工作中實現了深度圖像中人體目標前景提取,但在人體運動過程中,經常會出現人體自身遮擋的情況,本文利用深度圖像中的深度值解決其他剪影的骨骼提取方法可能無法解決的遮擋問題。為了實現更為準確的骨骼提取,對現有的一些骨骼提取方法進行了實驗研究。
2.1 距離變換算法
(1)歐氏距離
歐式距離是最常用的距離定義方式,即所在空間內任意兩點的直線距離[3]。歐氏距離公式如式(3)所示。
其中,p、q分別代表深度圖像的背景坐標點與前景坐標點的集合。圖2是目標人體的前景提取后的圖像,其中(b)為歐氏距離變換后得到的圖像。
(2)城市街區距離和棋盤距離
街區距離也稱為絕對值距離,即一個像素點從它的起點處移動到它的終點位置所需要的步數,并且要求像素點的移動限定在它的上下左右這幾個方向,如式(4)所示。圖3為城市街區距離變換后獲取到的圖像。
D(p,q)=|(px-qx)|+|(py+qy)|(4)
棋盤距離的基本思想是像素點可以在沿著對角線的方向上進行移動,在對角線方向上移動的距離稱為棋盤距離,如式(5)所示。圖4為棋盤距離變換后得到的圖像。
D*(p,q)=max|(px-qx)|+|(py+qy)|(5)
2.2 圖像細化算法
圖像的細化操作是在保持圖像原有的形狀基礎上再除去圖像上的一部分點,最后獲取到所需要的骨架圖[4]。本文采用Zhang快速并行細化算法與Hilditch算法進行對比研究,探索在人體骨骼提取上效果更佳的方法。圖5是利用Hilditch細化算法得到的骨骼提取圖像,圖6是利用Zhang細化算法得到的骨骼提取圖像。
從上述方法成像效果看,歐氏距離提取出的人體骨骼線比較連貫,但位置上存在偏移,有較明顯的誤差;使用城市街區和棋盤距離變換算法提取人體骨骼線有時會出現不連貫的現象。從圖像細化算法的成像效果來看,Zhang快速并行細化算法提取的人體骨骼線更干凈,圖像更清晰、更穩定,圖像比較流暢時基本沒有多余毛刺。最終選定Zhang快速并行快速細化算法進行人體骨骼的提取。
3 利用深度信息處理人體自遮擋問題
如果人處于Kinect設備要求的可視范圍內,做一些產生遮擋的動作,如手臂處于身體前面的位置,就會在獲取的深度圖像中產生與身體部分不一樣的深度值,可以利用不同的深度數據來處理手臂遮擋的問題。
先確定人體區域部分,然后根據深度值分布的情況在人體區域進行查找,把與身體區域深度值相差較大的部分看成是手遮擋在身體前面的情況;而與身體區域深度值相差不大的部分,則看成是身體部分。對前景區域的腐蝕會致使人的頭部、腿部和手臂先被腐蝕掉。
為了處理手臂遮擋的問題,要將手臂與身體部分區分出來,再分別提取骨架,最后融合在一起。首先,需要確定身體區域內部近似于矩形的部分,如圖7(a)所示,求出這一部分深度值的平均值,把此處的深度值記為h。刪去與平均值相差3以上的深度值,就可以除去手臂遮擋在身體前面的區域部分,便于求得身體區域的深度值。其次,對剩下的深度值部分再求平均值,這樣得出的平均值就是身體部分的平均深度值,設定此處深度值為h*。將與深度值h與深度值h*相差4以內深度值的部分設置為零,最后留下的部分就是除去了身體矩形區域部分而得到的手臂部分,如圖7(b)所示。最后對得到的手臂部分進行腐蝕操作,如圖7(c)所示,可以得到比較干凈的手臂部分的圖像,繼續進行細化處理可得到最后的手臂骨架部分,如圖7(d)所示。圖像變化的整個過程如圖7所示。
將得到的手臂部分的骨骼圖與前面得到身體部分骨骼圖相融合就可以得到完整的骨骼圖。如圖8所示,圖8(a)為深度圖像前景提取后進行圖像處理得到的圖像;圖8(b)為(a)圖直接進行Zhang快速并行細化所得到骨骼線;圖8(c)是將(b)圖人體骨骼圖像與圖7(d)圖手臂骨骼提取的圖像相組合,最后得到人體骨骼提取后的圖像。
4 人體骨骼點的定位
本文以NASA人體測量數據中人體比例方面的數據為基礎,實現人體骨骼關節點的定位。考慮到人的大部分動作都是通過手臂來完成的,所以著重研究人體上半身的骨骼點的標記。
通常將頭部細化后的頂點位置設定為頭部骨骼關節點位置,但這樣的定位方法較為粗略,為提高頭部骨骼關節點定位準確度,本文先檢測頭部區域位置,然后在此區域內找到重心點位置,把重心點設定為人頭骨骼關節點。在人體手臂彎曲時提取到的手臂骨骼線是有弧度的,不能準確定位哪個點為肘部骨骼關節點。本文通過深度圖像得到三維空間中兩點間的實際距離,相應的方法最早在openkinect.org網站上由Stéphane Magnenat提出,這里不再詳細說明。將手臂線上的點轉換為對應實際空間的坐標,依據最大三角形算法找出一個點,使得這個點滿足與肩部關節點和手部關節點,這3個點在實際三維空間中構成的三角形面積最大[5]。最后能夠認定這個點為手臂中的轉折點,即為肘部關節點。如果求出的面積都很類似,并且值都非常小,那么可以近似認為手臂是伸直狀態,此時取肩部關節點與手部關節點連線的中點位置為肘部關節點。如圖9所示,弧線是人體骨骼提取圖中手臂骨骼線圖,連接A點和B點能夠與弧線上的點構成三角形,在多個可能的點中,選取能夠構成最大三角形的那個點所在的位置,將其確定為肘部關節點。
5 實驗結果分析
在實驗中采集了幾十組人體圖像,重點分析研究兩種情況,一種是當手臂不與身體形成遮擋時,人的雙手會自然在身體兩側。選取幾組處理過的深度圖像前景提取圖,先進行人體骨骼線的提取,再定位出人體各部位的骨骼關節點,如圖10所示。
另一種是手臂與身體存在遮擋的情況,圖11是一些有代表性的圖像。每組第一張是深度圖像前景提取再進行圖像處理后的圖像;第二張為進行人體骨骼提取得到的人體骨骼線;第三張為提取遮擋部分的骨骼線;第四張為將第二張和第三張提取的骨骼線進行疊加,并標記出骨骼關節點位置的圖像。
6 結論
本文首先獲取深度圖像的前景部分,對距離變換和圖像細化算法的骨骼提取方法進行了研究與實現。根據深度圖像所具備的深度信息解決人體運動中可能存在的自遮擋問題。其次,在實現骨骼提取的基礎上定位人體骨骼關節點,檢測人頭所在位置,并設定人頭重心點為頭部關節點位置。根據最大三角形算法實現手臂的肘部關節點定位,人體其他部位關節點參考人體比例結構進行定位。最后通過實驗驗證了本文中人體骨骼提取方法的有效性。
參考文獻
[1] CHEN L, WEI H, FERRYMAN J M. A survey of human motion analysis using depth imagery[J]. Pattern Recognition Letters, 2013, 34(15):1995-2006.
[2] LEE S. Depth camera image processing and applications[C]. 19th IEEE International Conference on Linage Processing,IEEE, 2012:545-548.
[3] STEFAN G, ROBIN S. Anti-aliased euclidean distance transform[J]. Pattern Recognition Letters,2011(32):252-257.
[4] 包建軍,樊菁.魯棒的二值圖像并行細化算法[J].計算機輔助工程,2006(4):43-46.
[5] 李斌.單幅深度圖人體關節點定位[D].武漢:華中科技大學,2012.