1. 程式人生 > >圖形處理(十三)基於可變形模板的三維人臉重建-學習筆記

圖形處理(十三)基於可變形模板的三維人臉重建-學習筆記

基於可變形模板的三維人臉重建-學習筆記

作者:hjimce

一、資料庫處理:

我們通過掃瞄得到的資料,每個人臉模型的網格頂點個數各不相同,也就是拓撲結構不同,因此我們需要對我們的訓練資料,做一個歸一化處理。使得每個模型的頂點一一對應,拓撲結構相同,這一步採用的演算法是,引數化的方法,進行網格重構劃分。

1首先採用柱面引數化的方法,把網格引數化到圓柱上,對應到二維平面。

2然後在引數空間採用光流法進行稠密對齊,並對網格進行重新劃分

3採用重心座標放射不變性的方法,進行網格重建。

這個演算法流程,剛好跟我研究生的課題搞的演算法,很類似。這樣我們的資料庫中的每個人臉模型的頂點、拓撲結構都是相同的,我們可以得到一個平均臉,包好了:

 

這個平均臉,將後續使用。

二、人臉重建主要公式

基於形變模型的人臉重建的主要思想,是利用資料庫的人臉模型,作為基底向量,表示出任何一個人臉模型(我們即將重建的人臉的三維模型):

 

其中SavgTavg就是我們上面第一步求得的平均臉模型。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   原創文章,版權所有,轉載請保留本行資訊(不允許刪除)********************