1. 程式人生 > >Kinect v2.0原理介紹之三:骨骼跟蹤的原理

Kinect v2.0原理介紹之三:骨骼跟蹤的原理

~~有興趣的小夥伴,加kinect演算法交流群:462964980。

生成3D深度的影象的原理

   採用的是PrimeSence公司Light Coding技術。Light Coding技術理論是利用連續光(近紅外線)對測量空間進行編碼,經感應器讀取編碼的光線,交由晶片運算進行解碼後,產生成一張具有深度的影象。 Light Coding技術的關鍵是Laser Speckle雷射光散斑,當雷射光照射到粗糙物體、或是穿透毛玻璃後,會形成隨機的反射斑點,稱之為散斑。散斑具有高度隨機性,也會隨著距離而變換圖案,空間中任何兩處的散斑都會是不同的圖案,等於是將整個空間加上了標記,所以任何物體進入該空間、以及移動時,都可確切紀錄物體的位置。Light Coding發出雷射光對測量空間進行編碼,就是指產生散斑。Kinect就是以紅外線發出人眼看不見的class 1雷射光,透過鏡頭前的diffuser(光柵、擴散片)將雷射光均勻分佈投射在測量空間中,再透過紅外線攝影機記錄下空間中的每個散斑,擷取原始資料後,再透過晶片計算成具有3D深度的影象。 

4、Kinect骨骼跟蹤的原理

  瞭解Kinect如何獲得影像後,接下來就是進行辨識的工作。透過Light Coding技術所獲得的只是基本的影像資料,重點還是要辨識影像,轉換為動作指令。

   微軟將偵測到的3D深度影象,轉換到骨架追蹤系統。該系統最多可同時偵測到6個人,包含同時辨識2個人的動作;每個人共可記錄20組細節,包含軀幹、四肢以及手指等都是追蹤的範圍,達成全身體感操作。為了看懂使用者的動作,微軟也用上機器學習技術(machine learning),建立出龐大的影象資料庫,形成智慧辨識能力,儘可能理解使用者的肢體動作所代表的涵義。

下面更加詳細的來探討一下骨骼跟蹤的原理:

Kinect骨骼跟蹤不受周圍光照的影響,主要是因為紅外資訊,產生3D深度影象,上文已經介紹。

另外,Kinect採用分隔策略將人體從複雜的背景中區分出來,在這個階段,為每個跟蹤的人在深度影象中建立所謂的分割遮罩(分割遮罩為了排除人體以外背景影象,採取的影象分割的方法),如圖1這是一個將背景影象(比如椅子和寵物等)剔除後的景深影象。在後面的處理流程中僅僅轉送人體影象即可,以減輕體感計算量。

這裡寫圖片描述

                    圖1 剔除背景後的景深影象

Kinect需做的下一件事情就是尋找影象中較可能是人體的物體,接下來kinect會對景深影象(機器學習)進行評估,來判別人體的不同部位。

在識別人體的各部位之前,微軟是通過開發的一個人工智慧(被稱為Exemplar(模型)系統),數以TB計的資料輸入到集群系統訓練模型,圖2就是用來訓練和測試Exemplar的資料之一。

這裡寫圖片描述

                   圖2  測試和訓練資料

訓練分類器的分方法,提出的是一種含有許多深度特徵的分類器,來識別物體,該特徵雖然簡單卻包含必要的資訊,來確定身體的部位,其公式如(1)所示:

這裡寫圖片描述···········(1)

其中x是畫素值,d1(x)是畫素值在影象I中的深度值,引數θ=(u,v),u和v是一對偏移向量(怎麼理解?),1/d1(x)是偏移正規化,用來處理人體尺寸的縮放,這是一個非常簡單的特徵,也就是簡化目標畫素u和v值這兩個畫素深度偏移的不同。很顯然,這些特徵測量與畫素周圍的區域的3D外形相關,這足以說明手臂和腿之間的區別。如圖3所示,其中十字架代表被畫素被分的類別,而圓圈表示公式(1)計算出的偏移畫素。若偏移畫素是背景,d1(x)深度值將會是正無窮大。
這裡寫圖片描述
a、兩個具有較大響應的特徵
這裡寫圖片描述
b、兩個具有較小響應值的特徵
圖3 深度影象特徵

接下來訓練一個決策樹分類器。決策樹森林即眾多決策樹的集合,每棵樹用一組預先標籤的身體部位的深度影象來訓練,決策樹被修改更新,知道決策樹為特定的身體部位上的測試集的影象給出了正確的分類。用100w幅影象訓練3顆數,利用GPU加速,在1000個核的叢集去分析。根據微軟實驗,大概耗時一天。這些訓練過的分類器指定每一個畫素在每一個身體部分的可能性。下一個階段的演算法簡單的為每一個身體部位挑選最大機率的區域。因此,如果“手臂”分類器是最大的機率,這個區域則被分配到“手臂”類別。最後一個階段是計算分類器建議的關節位置(節點)相對位置作為特別的身體部位,如圖4所示。

這裡寫圖片描述
圖4 Kinect 人體節點識別過程

另外,只要有大字形的物體,Kinect都會努力去追蹤,如圖5所示。當然,這個物體也必須是接近人體的大小比例,尺寸小的玩具是無法識別的。

這裡寫圖片描述
圖5 骨骼跟蹤結果

在Kinect前放一個沒有體溫的塑料人體模特,或者一件掛著襯衣的衣架,Kinect會認為那是一個靜止的人。紅外感測器所能捕捉的只是一個人體輪廓。

模型匹配:生成骨架的系統

處理流程的最後一步是使用之前階段輸出的結果,根據追蹤到的20個關節點來生成一幅骨架系統。Kinect會評估Exemplar輸出的每一個可能的畫素來確定關節點。通過這種方式Kinect能夠基於充分的資訊最準確地評估人體實際所處位置。另外模型匹配階段還做了一些附加輸出濾鏡來平滑輸出以及處理閉塞關節等特殊事件。

參考資料:

Shotton J, Sharp T, Kipman A, et al. Real-time human pose recognition in parts from single depth images[J]. Communications of the ACM, 2013, 56(1): 116-124.
如果幫到你了,請讚賞支援:
這裡寫圖片描述