图形处理(十三)基于可变形模板的三维人脸重建-学习笔记
基于可變形模板的三維人臉重建-學習筆記
原文地址:http://blog.csdn.net/hjimce/article/details/50331423
作者:hjimce
一、數據庫處理:
我們通過掃瞄得到的數據,每個人臉模型的網格頂點個數各不相同,也就是拓撲結構不同,因此我們需要對我們的訓練數據,做一個歸一化處理。使得每個模型的頂點一一對應,拓撲結構相同,這一步采用的算法是,參數化的方法,進行網格重構劃分。
1、首先采用柱面參數化的方法,把網格參數化到圓柱上,對應到二維平面。
2、然后在參數空間采用光流法進行稠密對齊,并對網格進行重新劃分
3、采用重心坐標放射不變性的方法,進行網格重建。
這個算法流程,剛好跟我研究生的課題搞的算法,很類似。這樣我們的數據庫中的每個人臉模型的頂點、拓撲結構都是相同的,我們可以得到一個平均臉,包好了:
?
這個平均臉,將后續使用。
二、人臉重建主要公式
基于形變模型的人臉重建的主要思想,是利用數據庫的人臉模型,作為基底向量,表示出任何一個人臉模型(我們即將重建的人臉的三維模型):
?
其中Savg、Tavg就是我們上面第一步求得的平均臉模型。Si表示人臉數據庫樣本i的形狀向量、Ti則表示紋理向量,α、β是未知的系數。因此假設我們輸入一張用戶人臉,我們要重建其三維人臉模型,我們的目標就是要求解α、β,只要這兩個系數知道了,我們就可以利用上面的公式,求解出其對應的三維模型了。當然上面的計算公式,我們后面將會使用PCA進行簡化降維。
三、優化求解
上面我們說到我們的目標是求解未知的系數:α、β,說是這么說,說起來簡單,做起來難,因此接著我們要講解的α、β求解,也是paper算法的靈魂了。那么具體要怎么解呢?我們有如下已知條件:
1、用戶輸入的一張人臉圖片
2、人臉數據庫平均臉(包含了貼圖)
3、人臉數據庫
OK,沒了,這就是我們目前所知道的已知條件了。那么到底是怎么從2D重建出3D?也就是怎么求解α、β?算法的總體思路是采用迭代優化的方法,先隨機初始化α、β,然后我們可以得到3D的模型,然后我們把這個3D模型,投影到2D平面,得到一張新的人臉圖片。然后采用這張人臉圖片與用戶輸入的人臉圖片構建損失函數:
?
使得用戶輸入的圖片與我們投影到二維的圖片,差值最小化。然后對上面的式子α、β進行求導,最后采用梯度下降法,更新參數α、β,如此一直循環迭代,直到收斂。因為我們從三維投影到二維的過程中,涉及到相機等相關的參數,這些參數也是未知數,所以統一用:ρ表示,然后梯度下降的過程中α、β、ρ這三個參數一起更新。
參考文獻:
1、《A Morphable Model For The Synthesis Of 3D Faces》
**********************作者:hjimce ? 時間:2015.12.15 ?聯系QQ:1393852684 ? 地址:http://blog.csdn.net/hjimce? ?原創文章,版權所有,轉載請保留本行信息(不允許刪除)********************
總結
以上是生活随笔為你收集整理的图形处理(十三)基于可变形模板的三维人脸重建-学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图形处理(十一)Stroke Param
- 下一篇: Coursera课程:Python fo