3dmm人脸配准/重建:gold standard algorithm
最近在研究人臉重建,參考了github上引用量很高的face3d中的2_3dmm.py,因為要在自己的模型和數據上將3d人臉fit到2d,所以花了一點時間研究了里面fitting相關的代碼以及算法。face3d上3d landmark fit 到2d landmark主要是用了gold standard algorithm。這個算法是一系列知識點的集合,里面包含相機矩陣,仿射變換,DLT算法以及優化迭代等。在Multiple View Geometry in Computer Vision中gold standard algorithm用于兩幅2d圖像的配準以及3d到2d的映射,3dmm將其推廣到3d數據和2的數據的配準中。
參考資料:
書籍:?Multiple View Geometry in Computer Vision
https://www.csc.kth.se/~madry/courses/mvg10/Attachments/04_Presentation03_Ch7_Omid.pdfhttps://www.csc.kth.se/~madry/courses/mvg10/Attachments/04_Presentation03_Ch7_Omid.pdfhttps://www.ece.mcmaster.ca/~shirani/vision/hartley_ch7.pdfhttps://www.ece.mcmaster.ca/~shirani/vision/hartley_ch7.pdf
1.投影變換與仿射變換
3d物體從世界坐標投影到圖像坐標系的映射關系為:
其中,R為旋轉矩陣(rotation matrix),t為平移矩陣(translation matrix),s為縮放系數(scale)。
而仿射變換變化包括縮放(Scale、平移(transform)、旋轉(rotate)、反射(reflection, 反轉對稱)、錯切(shear mapping),因此上式可以用仿射變換寫為更一般化的形式:
?2. DLT 算法(The Direct Linear Transformation (DLT) algorithm)
在project transformation中,通過仿射變換將3d點和與相應的2d點匹配的算法為DLT,即直接線性變換,在3dmm中可以理解為3d landmark與2d landmark的對齊。
具體推導過程:
叉乘的結果為:?
由叉乘公式,
我們可得,
?
由于P中只有兩個公式線性無關,因此可以寫為,
且由于P3 = (0, 0, 0, 1),因此上式可進一步寫為,
由于是3d點的齊次坐標,有4個元素,最左邊整個矩陣大小為2x8(2行,8列),我們用A8表示,上式表示為,
通過偽逆矩陣,可以初步計算仿射變換矩陣,是的偽逆矩陣,
至此,DLT算法介紹完畢,通過DLT我們可以初始化3d到2d的仿射變換矩陣P。
3. Gold standard algorithm在3dmm人臉重建中的應用
與DLT相比較,gold standard algorithm是一種將數據標準化,并且迭代的優化算法。如果不改變shape和expression參數,可以理解為3d人臉模型與2d人臉的對齊。如果優化過程中加入shape和expression,改算法可用于人臉重建。
3.1 數據標準化
(1)首先,數據標準化是將2d 或3d的數據中心centroid移動至坐標原點;
(2)然后,將數據點到原點的平均距離標準化,其中2d點到原點的距離標準化為,3d點到原點的距離標準化為。
這個處理在gold standard algorithm甚至在DLT中都是必須的!
3.2 Loss function
gold standard algorithm是一個迭代的算法,它的目標是最小化預測點與實際點之間的幾何距離。
距離公式:其中上劃線代表經過數據標準化處理的量。
Loss function有多種距離計算公式可以選擇,在此不例舉。
3.3 Gold standard algorithm
目標:選取6個以上的點對,得到P的最大似然估計。(計算初始化的shape,expression參數,如全0或隨機數)
算法:
1) 初始化階段(線性處理)
? ? 1.數據標準化處理(normalization)
?
? ? ? ?使用3.1的算法,其中U, T分別為對3d點(3d landmark points)和2d(2d landmark points)點的進行normalizarion的矩陣,改矩陣為similarity transformation matrix,包含縮放和平移。
? ? 2.DLT算法(上文)
2)迭代優化P矩陣
將P矩陣,3dmm模型,(模型中的shape參數,expression參數(如果有))帶入計算新的3d landmark坐標,并計算3d landmark通過P矩陣變換后與2d人臉landmark之間的距離,
直到距離函數到指定誤差或指定迭代步數。
每次更新P, (shape parameters, expression parameters參數)。
3)Denormalize P matrix
還原P
在人臉任務中,還需將P還原出s, R, t矩陣。
output:
s, R, t, (shape 參數, expression參數(optional))
?代碼參考:
GitHub - YadiraF/face3d: Python tools for 3D face: 3DMM, Mesh processing(transform, camera, light, render), 3D face representations.Python tools for 3D face: 3DMM, Mesh processing(transform, camera, light, render), 3D face representations. - GitHub - YadiraF/face3d: Python tools for 3D face: 3DMM, Mesh processing(transform, camera, light, render), 3D face representations.https://github.com/YadiraF/face3d
總結
以上是生活随笔為你收集整理的3dmm人脸配准/重建:gold standard algorithm的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 点云数据处理方法
- 下一篇: 付忠庆的练习小笔记-Codeforces