楊 振, 董洪偉, 杜星悅
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無錫 214122)
三維人臉重建一直是計算機圖形學(xué)一個研究熱點,其間接方法是指由一張或多張二維圖像重建三維人臉[1],包括基于統(tǒng)計模型的三維人臉重建[2~4]、基于多視幾何的三維人臉重建[4]、基于光照立體的三維人臉重建[5~7],以及近年來迅速發(fā)展起來的基于機器學(xué)習的三維人臉重建[11,12]。本文采用基于光照立體的方法,實現(xiàn)從單幅人臉照片重建三維人臉。
傳統(tǒng)的由陰影恢復(fù)形狀(shape from shading,SFS)需要知道反射率屬性和光照以及邊界處的深度值,然而這些條件并不容易獲得。 為此,Ira K[7]基于不同的人臉模型在尺寸、長寬比,以及鼻子、眼睛等主要特征的位置是相似的,并且假設(shè)人臉模型滿足朗伯反射,通過引入一個參考人臉模型,將問題轉(zhuǎn)化為求解圖像的輻照度方程的問題,利用球諧函數(shù)先計算光照強度,再計算每個像素點深度值。
本文的方法與之不同之處是,先將初始模型投影到圖像上以獲取模型上3D點的顏色信息,進而更新每個頂點的法線,最后利用更新后的法線移動模型的頂點位置。與文獻[13~15],不同之處是,本文只使用一張圖像。文獻[13,14]理論上需要最少4張圖像,利用SVD建立與球諧函數(shù)的聯(lián)系。但由于人臉是非剛性的,不同圖像中的人臉會有表情上的差異,這會影響SVD的結(jié)果,因此需要大量圖像消除噪聲。
本文使用一張人臉圖像重建高質(zhì)量的三維人臉模型。輸入一張人臉圖像,采用文獻[16]方法檢測特征點,采用文獻[4]中的形變模型方法擬合一個初始三維人臉模型;使用基于模型的SFS恢復(fù)模型上每個頂點的法線;基于法線使模型變形,獲得具有細節(jié)的三維人臉模型。
本文算法主要包括2部分:基于圖像輻照度方程的模型頂點法線恢復(fù)和基于法線的模型變形。
首先基于輸入的2D人臉圖像,用文獻[4]中的方法獲得模型到圖像的相機參數(shù),并旋轉(zhuǎn)參考模型使其與圖像對齊。使用形變模型擬合一個初始三維人臉模型。為了計算頂點法線,獲取當前視角下的可見點以及每個頂點在圖像上投影點的顏色信息,利用基于獲得模型到圖像的相機參數(shù),旋轉(zhuǎn)參考模型使其與圖像對齊,進而獲取初始模型中當前視角下的可見頂點以及其在圖像上的投影點的顏色信息。圖1為本文方法的簡要流程。
圖1 本文算法簡要流程
首先用文獻[4]中的形變模型方法擬合一個初始三維人臉模型,然后利用模型到人臉圖像的相機參數(shù)旋轉(zhuǎn)模型,并獲取當前視角下模型上的可見頂點。 將模型上可見頂點投影到人臉圖像上可以為每個頂點得到一個顏色信息。 本文使用球諧函數(shù),基于每個頂點得顏色信息更新它們法線。
(1)
(2)
首先,計算光照系數(shù)和每個頂點的反射率?;谖墨I[9,10]方法,將其修改成適用于三維模型的形式
(3)
基于式(1)~式(3)給出能量函數(shù)
(4)
式中t為當前迭代次數(shù)。將第一項稱為數(shù)據(jù)項,用于最小化頂點的顏色誤差; 第二項和第三項為平滑約束項,其中第二項使得相鄰點的反射率不會偏差過大,第三項使得相鄰頂點的法線不會偏差太大;β為法線平滑約束的權(quán)重;第四項稱為規(guī)則化項,使得更新后的值不會過于偏離初始值;γ為規(guī)則化項的權(quán)重。按照以下步驟優(yōu)化式(4):
1)計算光照系數(shù)
首先計算光照系數(shù),第一次迭代時,令頂點的反射率為所有頂點在圖像上獲得的顏色的平均值,令頂點的法線等于初始模型上的法線,將補償值d置零。 此時平滑項和規(guī)則化項可以省略,式(4)可簡化為
(5)
2)計算反射率補償值
(6)
3)計算頂點法線
(7)
式(7)同樣可由線性最小二乘法直接求解。
利用更新后的頂點法線優(yōu)化初始模型。與文獻[17]類似,定義
(8)
式中vu,vw為頂點vi的鄰居頂點,構(gòu)成一個三角形網(wǎng)格,vu,vw構(gòu)成vi的一個對邊。如圖2所示。 式(8)約束每個頂點的法線要垂直于頂點的所有對邊,即利用更新后的法線改變初始模型中頂點的位置。
圖2 頂點和它的對邊
簡化文獻[17]中的第二項約束為
(9)
(10)
式(10)同樣是一個過約束的線性最小二乘優(yōu)化問題,可以直接用線性最小二乘求解。圖3給出用本文方法重建的三維人臉模型。
圖3 本文方法重建的三維人臉模型
使用Basel臉模型(Basel face model,BFM)[3]生成初始模型,初始模型有53,490個頂點和160,470個由三角形構(gòu)成的面。首先將模型上的頂點投影到二維人臉圖像,獲取所有可見頂點以及這些頂點在彩色圖像上的顏色信息。 利用式(3)更新可見頂點得法線。由于處理側(cè)面人臉時,由于鼻子的遮擋,在鼻子附近會有一部分頂點不可見。使用式(4)時并沒有更新這些頂點法線。 對于每個被遮擋得頂點,通過插值獲取其法線。
實驗中,本文的參數(shù)設(shè)置如下:α=0.2,β=3,γ=10,λ1=1,λ2=1。為了能夠更好地與其他算法相比較,使用文獻[7,10]所用的圖像與本文方法進行對比實驗,圖4給出了對比結(jié)果。
圖4 3種方法實驗結(jié)果對比
本文首先利用SFS獲取法線,然后基于法線時模型變形成具有細節(jié)的三維人臉模型,實驗結(jié)果表明,本文方法可以重建高質(zhì)量的三維人臉模型。 實驗發(fā)現(xiàn),初始模型與輸入圖像的相似度越高、相機參數(shù)越精確,SFS計算得到的法線便會越精確。提升初始模型的精度、優(yōu)化相機參數(shù),可以提高重建的三維人臉模型的質(zhì)量,將來可以考慮將本文算法擴展到從多張圖像重建三位人臉以及基于視頻的三維人臉動畫重建。