陽 策,李 重,任 義,劉 恒
1(浙江理工大學 信息學院,杭州 310018)
2(浙江理工大學 理學院,杭州 310018)
近年來,人臉圖像紋理合成和三維人臉重建已成為圖形圖像處理、計算機視覺、人工智能與模式識別等領域的研究熱點內容.基于圖像的三維人臉重建[1]由于能提升用戶的體驗感,在三維動畫、計算機游戲、虛擬服裝試衣等領域有著廣泛的應用價值.
目前,基于圖像的三維人臉重建可分為基于深度圖像的重建[2]、基于多圖像序列的重建[3]與基于單圖像的重建[4]等方式.基于單張圖像的三維人臉重建因使用人臉照片較少,操作實現方便,已成為人臉重建中的熱點研究方向.基于單張圖像的重建流程包括人臉圖像特征點提取、膚色校正、人臉圖像融合、人臉紋理圖合成以及三維紋理映射等操作.現有的重建算法在人臉紋理合成時沒有考慮光照不佳,眉毛遮擋等因素的影響,使得重建結果不夠美觀.因此,本文重點在膚色校正、人臉無縫融合以及眉毛重建等方面進行優化,充分利用單張圖像上的信息生成具有真實感及美感的人臉紋理圖.
在人臉特征點提取上,主動形狀模型(Active Shape Model)[5,6]和主動表觀模型(Active Appearance Model)[7]是兩個最為經典的方法,開創了解決此類問題的兩類經典架構;深度學習技術是近年來出現在機器學習領域的一種突出的信息分析建模技術,該技術基于多層神經網絡架構實現對復雜模型的模擬和逼近,具有突出的揭示數據內在聯系和結構的能力,有效推進了人臉特征點提取技術的發展.在膚色校正上,邱佳梁等人[8]提出膚色美白算法,能夠較好地對光照不足的人臉進行提亮,但該算法無法對膚色偏差實現校正;Reinhard 等人[9]提出了經典的顏色轉換算法,該算法對于圖像全局的色調改變有一定的效果,但在局部顏色轉換上存在問題;Chen 等人[10]使用基于局部線性嵌入算法的編輯傳播,該方法要求用戶手動選取需要被轉換的區域以及不被轉換的區域,沒有實現完全自動化.在圖像無縫融合上,常用的方法有加權平均法、高斯濾波法、多分辨率法、基于梯度域的融合法等.其中,加權平均法簡單、計算速度快,但融合效果差,很難消除運動目標所形成的模糊陰影;高斯濾波法利用高斯核函數對圖像重疊區域進行平滑處理,易造成局部模糊;多分辨率法將圖像分解在不同頻帶,以實現整個圖像的融合過渡,但需多次濾波,且計算量大,易造成信號減弱,導致圖像模糊;基于梯度域的方法在梯度域實現圖像的合成,利用已知圖像的梯度信息引導插值融合,不會出現模糊現象,融合效果好.在輪廓提取上,Li 等人[11]提出不需要初始化的水平集模型,解決了傳統的水平集模型重新初始化的問題,提高了輪廓擬合速度.
本文工作將對一張人臉圖像采用基于局部線性嵌入算法的編輯傳播來實現膚色的校正,對于需要轉換的膚色區域,利用ASM 算法提取的特征點實現自動選取;采用泊松編輯方法將人臉五官區域與標準膚色圖融合;同時,對于眉毛遮擋,本文提出一種結合Li模型與角點檢測的方法重建眉毛輪廓;最后將生成的人臉紋理圖映射到三維人臉模型上.
本文提出一個算法框架,對用戶輸入的人臉圖像結合標準膚色進行美化處理,生成紋理圖,實現三維人臉重建.首先,采用ASM 算法提取人臉特征點,用于區域約束和紋理映射;其次,采用基于局部線性嵌入算法的編輯傳播來實現對人臉膚色的顏色轉換;隨后,通過泊松融合實現人臉區域與標準膚色圖像的無縫融合,同時,分情況對遮擋眉毛進行還原重建.經過這一系列處理,得到美化后的人臉紋理圖,將其映射到三維人臉模型上,得到重建人臉.算法流程圖如圖1所示.
本文采用ASM 算法提取人臉特征點.ASM 算法通過模型訓練與模型搜索兩個步驟實現特征點提取.在模型訓練階段,訓練樣本集建立主動形狀模型與局部灰度模型;在模型搜索階段,將第一步得到的初始形狀對目標圖像進行匹配,然后根據局部灰度模型調整參數,直至收斂.這樣即得到最終的人臉特征點定位,實驗結果如圖2所示.
為實現人臉膚色的美白或修正由光照等外界因素造成的膚色偏差,我們采用顏色轉換將原膚色轉換為指定的膚色.自動顏色轉換算法由Reinhard 等人首次提出.該算法統計原圖像與目標圖像在Lαβ顏色空間中像素的均值與標準差,通過如下色彩轉換公式使原圖像的色調與目標圖像的色調保持一致.

圖1 算法流程圖

圖2 人臉特征點提取
式中,c∈(r,g,b),Ir表示轉換后的像素值,Is表示原圖像像素值,means,meant分別表示原圖像與目標圖像的像素均值,devs,devt分別表示原圖像與目標圖像的像素標準差.
該算法對于圖像全局的色調改變有一定的效果,但在局部顏色轉換上存在問題,比如人臉的顏色轉換.本文采用基于局部線性嵌入算法的編輯傳播方法實現人臉的顏色轉換.通過顏色轉換,我們便排除了人臉照片拍攝時過亮、過暗等環境造成的不良影響.
(1)局部線性嵌入(LLE)算法
在顏色轉換之時保持五官及皮膚的原有紋理,即保持數據的流形結構不變.局部線性嵌入(Locally Linear Embedding)算法在將數據從高維映射到低維的同時,保持數據流形結構不變,使得每個樣本能夠表示為其鄰域的線性組合.我們用向量xi來表示在某個特征空間中一個像素點i.給定一個數據集x1,···,xN,對于每一個像素點xi,我們選取它的k個最近鄰域,表示為xi1,···,xik,我們將計算出一組權重?ij使得該k個鄰域能夠最好的重建像素點xi,LLE 算法通過最小化如下能量函數計算?ij:

約束條件∑j∈N?ij=1=1.求得?ij后,與xi的鄰域線性組合即可重建xi.
(2)編輯傳播
接下來,我們將使用編輯傳播的方法來實現顏色的轉換.傳統的編輯傳播思想考慮兩個條件:被傳播的像素結果與用戶輸入(如指定顏色)接近;相似的像素經傳播后具有相似的結果.基于LLE的編輯傳播同樣考慮第一點,不同的是第二點考慮在某個顏色空間中,由所有像素組成的數據流形結構保持不變.
給定原圖像與目標圖像,我們可以通過最小化如下能量函數來傳遞顏色:

其中,si是在像素點i處編輯后的結果,ti(i∈R)是指定的標準膚色.第一項維持在指定特征空間中數據流形結構的不變性,第二項保證最終結果與指定顏色接近,R是需要轉換的區域.
該能量函數能夠進一步地寫成矩陣形式:

S是第i個元素為si的向量,I是單位矩陣,Λ是對角線元素為 λ的對角矩陣,T是第i個元素為ti的向量,W是元素為 ?i j的矩陣.于是上面最小化能量函數的問題等價于求解如下稀疏線性方程:

本文采用三維人臉模型的標準膚色作為輸入顏色,通過顏色轉換,將原圖像的膚色色調調整為與三維人臉模型一致.顏色轉換結果如圖3所示.

圖3 顏色轉換效果比較
本文通過泊松融合對人臉圖像和標準膚色圖實現無縫融合.泊松融合又叫泊松圖像編輯[12],實質為在某個梯度向量場的引導下的圖像插值,其基本原理如下:
設圖像S上有一個閉合子區域 Ω,其邊界為? Ω,V為原圖像中待融合區域的梯度向量場,f為定義在S上的標量函數,已知f在? Ω上的取值為f?,則f在 Ω內取V引導下的插值函數,即求解極值問題:

式中,?f為f的梯度.因為該問題的解構成泊松方程,所以該方法被稱為泊松融合.

圖4 泊松融合示意圖
本文通過ASM 算法檢測得到的特征點自動選取出眉毛、眼睛、鼻子、嘴巴構成的區域作為待融合區域,這樣初步排除了頭發遮擋的問題.目標圖像為一張標準膚色圖,設定融合中心位于膚色圖中心,使融合的人臉區域處于膚色圖中間,這樣得到一張無縫的人臉紋理圖,用于三維人臉重建.由于標準膚色圖的顏色是根據三維模型的顏色選取,紋理圖的臉頰邊緣顏色與三維模型的顏色一致,所以能夠有效地解決邊緣融合問題.
另外我們考慮眉毛被遮擋的情況,通過判斷眉毛外側角點鄰域內的灰度值,檢測得到眉毛被遮擋的不同情況.當出現眉毛遮擋時,泊松融合分兩個區域進行,一部分為眼睛、鼻子、嘴巴組成的區域,另一部分眉毛區域則單獨處理,可分三種情況:
(1)若一側眉毛完整,另一側眉毛被完全遮擋,利用人臉對稱性,將完整的眉毛水平鏡像映射到另一側,如圖5所示.

圖5 眉毛鏡像融合(一側眉毛完整時)
(2)當兩側眉毛均被遮擋時,選取一對眉毛模板,將其融入兩側眉毛區域,如圖6所示.

圖6 眉毛模板融合(兩側眉毛不完整時)
(3)當一側眉毛完整,另一側眉毛僅部分被遮擋時,我們利用完整眉毛輪廓,同時結合另一側未被遮擋的部分眉毛輪廓,來重建該側眉毛,以達到更接近真實眉毛的效果.我們采用Li模型結合角點檢測來修復該種情況的眉毛遮擋.首先,我們采用Canny 算子檢測得到完整一側的眉毛輪廓,然后將該輪廓線水平翻轉,作為另一側被遮擋眉毛的初始輪廓線.同時在被遮擋眉毛區域尋找中間角點,這樣以角點為分界得到未被遮擋的部分,以此作為對Li模型演化的約束,演化得到最終的眉毛輪廓.如圖7所示,圖7(a)是完整眉毛區域,對其采用Canny 算子檢測得到輪廓圖7(b),將其水平翻轉為圖7(c).然后在有部分遮擋的眉毛區域尋找角點如圖7(d),隨后將圖7(c)的輪廓以眉毛端點為基準貼合于該區域如圖7(e),最后以角點為分界,在未被遮擋的眉毛區域通過Li模型演化得到最終的重建眉毛輪廓.得到重建眉毛輪廓后,將原圖兩側眉毛以角點為分界進行融合.如圖8所示,圖8(a)選取未被遮擋的區域,圖8(b)選取完整眉毛翻轉后的外側區域,將這兩個區域融合得到重建后的眉毛,見圖8(c),該重建眉毛利用了半遮擋眉毛的部分信息,更貼近于真實的眉毛.

圖7 重建眉毛輪廓過程

圖8 重建眉毛效果圖
最終,我們將由上述算法得到的人臉紋理圖映射到三維模型上.人臉紋理映射[13]可將二維圖像上通過ASM 算法提取的特征點坐標與三維模型上對應的特征點坐標對應起來,最終可歸結為一個最小二乘問題進行求解.本文利用OpenGL 提供的函數庫來完成三維人臉模型的紋理映射.
該實驗選取100 幅特定照片作為測試集,服務器端圖像處理算法電腦CPU 為Intel 酷睿4 核4.20 GHz,內存為16 GB,在MyEclipse 運行環境中,通過Java 程序對待測人臉圖像進行特征點提取、顏色轉換、泊松融合以及眉毛修復等一系列操作.
為了驗證本文算法對環境有較好的抗性,我們對不同光照背景下的人臉圖像進行實驗,可以看到,對于光線過暗的環境,算法能夠較好地美白膚色,對于膚色偏差的情況,也能實現良好的膚色校正效果,實驗結果如圖10所示.

圖9 三維人臉紋理映射

圖10 人臉重建效果圖(非正常膚色情況)
為了驗證本文算法對眉毛遮擋的修復效果,我們對不同發型的人臉圖像進行了實驗,可以看到,算法能夠較好地還原眉毛,實驗結果如圖11所示.
本文還與FaceGen 軟件、深度學習方法[14]進行了比較,并記錄重建完成所需要的時間(表1),實驗結果表明,本文算法在時間上具有明顯優勢,有利于實時應用推廣.本文結果在保持人臉相似度的同時,對人臉還進行了美化處理,并對頭發進行了去除,眉毛進行了重建,使用戶可以更換其他發型.FaceGen 在眉毛重建時眉梢會出現拉伸變形,在劉海去除上未能達到完全去除的效果;深度學習方法未實現對劉海的去除和眉毛重建.實驗結果如圖12所示:第一列為原圖,第二列為本文方法結果,第三列為FaceGen 結果,第四列為深度學習方法結果.

圖11 人臉重建效果圖(眉毛被遮擋情況)

表1 本文方法與其他方法時間對比

圖12 不同方法的三維重建效果比較
本文對人臉圖像基于標準膚色進行美化處理,生成人臉紋理圖,將其應用于三維人臉重建,得到個性化三維人臉模型.由于現實生活中拍攝的人臉圖像可能存在頭發遮擋,光照條件不佳等情況,對人臉圖像的三維重建往往無法得到美觀的效果,為此本文提出一個算法框架,能夠對人臉實現自動檢測及美化,從而得到較好的人臉重建結果.實驗結果表明本文算法能夠得到令人滿意的重建效果,包括能夠重建被遮擋的眉毛區域,并且較其他方法具有優越的運算效率,能夠達到實時性.
本文在人臉紋理圖生成時,要求輸入圖像為正面人臉圖像,如何通過視頻獲取更多角度的人臉圖像信息進行人臉紋理生成,以及考慮人臉偏轉實現姿勢矯正等,達到精度更高的重建效果將是我們今后的工作.同時,人臉上的裝飾物(如眼鏡)會影響紋理圖的生成效果,如何去除裝飾物影響也是我們的一項重要工作.另外,現有工作是通過標準紋理映射算法將人臉圖像映射到三維人臉模型上,如何構造更加準確的紋理映射算法生成高質量三維重建人臉,也是今后的主要工作.