使用Azure Kinect Body骨骼構造SMPL三維人體模型

1.SMPL模型簡介

SMPL是通過參數控制的人體模型,可控制的參數爲Pose和Shape。總共有24個關節點和10個Shape控制參數,模型及關節索引如下圖。
在這裏插入圖片描述

1.1.Pose——旋轉向量控制關節點旋轉

每個關節通過一個旋轉向量控制,如下圖爲手動控制關節點4繞Z軸旋轉90度、關節點19繞Y軸旋轉90度的結果。
在這裏插入圖片描述
旋轉關節點是在關節點的座標系下操作的旋轉,部位會隨着父節點旋轉而聯動位移旋轉。例如上述再繞Z軸旋轉-90度,結果如下圖。
在這裏插入圖片描述

1.2.Shape——10個Shape參數控制體型

Shape參數是通過PCA提取的10個參數。通過Shape可以控制體型,如下爲控制第一個參數爲-10和10的結果。通過10個參數控制可以逼近真實人體體型,影響高低、胖瘦、關節長短等。
在這裏插入圖片描述
在這裏插入圖片描述
SMPL的骨骼如下圖所示
在這裏插入圖片描述

2.Azure Kinect Body

Azure Kinect通過深度圖可以檢測出穩定的人體關節,關節點及其索引如下圖所示。
在這裏插入圖片描述
同樣可以獲得關節點的旋轉,但是每個關節的座標系獨立且方向不全一致,每個關節點的座標系如下圖。
在這裏插入圖片描述
通過Azure Kinect實際採集的骨架繪製結果如下:
在這裏插入圖片描述

3.人體骨骼擬合

3.1.初步對齊

由於SMPL與Azure Kinect座標系不一致,首先需要將SMPL與Kinect Body移動旋轉到同一個位置。未對齊的示意圖如下:
在這裏插入圖片描述
根據上述兩節的關節對應關係,形成對應的參考點對齊Map。首先將SMPL Joint0與Kinect Body Joint0移動到一起,然後構造 SMPL Joint0->Joint3 向量 VsVs 和 Kinect Body Joint0->Joint1 向量 VkVk。之後構造 VsVs 旋轉到 VkVk 的旋轉向量。操作SMPL模型進行旋轉平移,即完成初步對齊,示意圖如下:
在這裏插入圖片描述

3.2.調節參數進行骨骼對齊

設計能量函數爲:
E(β,θ)=i=124(Rθ(J(β)i)Jkinect,i)E(\beta,\theta)=\sum_{i=1}^{24}(R_\theta(J(\beta)_i)-J_{kinect,i})
即,讓SMPL的關節點與Kinect Body的對應關節點距離最小。最終優化的結果如下圖所示:
在這裏插入圖片描述在這裏插入圖片描述
如上完成了Azure Kinect Body與SMPL的三維人體模型對齊。效果並不是特別好,因爲Azure Kinect Body與SMPL的關節點不是完全一致的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章