黃豐智 范 鵬 范智瀚 段智涓
(四川大學視覺合成圖形圖像技術國防重點學科實驗室 四川 成都 610065)
在過去的數十年里,基于結構光的三維重建技術得到很大的發展[1-3],三維重建技術相對二維重建技術可以保存更多現實目標的信息,在三維人臉識別、3D電影、文物保護、美容整容、移動支付、游戲設計、視覺導航、人工智能、逆向工程等領域都已經引起重大變革[4-5]。在計算機視覺領域研究中,三維重建是一個非常熱門的方向,但是直接通過自然紋理的變化完成高精度的三維重建是一項難度非常高的工作,尤其是在某些目標表面紋理信息較少的時候。為了解決這個問題,計算機視覺子領域視覺測量中通過投射攜帶編碼信息的幾何圖案來增強弱特征目標表面的紋理信息[1-5],從而可以還原目標表面的高精度三維形貌。典型的三維相機由一個光機對紋理信息進行編碼并投射在被測物體表面,再通過兩個攝像機同時獲取被測物理信息。結構光三維重建根據編碼信息類型主要分為條紋結構光和散斑結構光,其中條紋結構光三維重建精度高但是需要數據多而且重建速度較慢。散斑結構光三維重建速度快,最低只需一組數據就可進行重建,但是重建的精度相對條紋結構光較低。
在基于散斑的結構光三維重建中,為了提高重建精度,對散斑的編碼技術已經發展出RGB彩色散斑編碼和空時散斑編碼等技術[6-7]。近年來,隨著GPU技術的飛速發展,神經網絡的研究也重回熱門研究領域,尤其是深度學習技術。深度學習跟很多領域結合都取得了巨大進步,自然也有學者提出將深度學習和結構光三維重建領域進行融合,國內外都提出了基于深度學習的結構光三維重建算法,在某些情況下基于深度學習的結構光三維重建實現了比較好的重建效果[8-10]。
本文對散斑的結構光三維重建進行優化,為了提高三維重建精度和光滑度提出一種優化的ZNCC算法,通過本文提出的重建算法可以快速地生成較高精度的光滑三維人臉模型。
設計編碼光場的圖案由灰度為0或者255的點陣組成,如圖1所示,采用局域和全局隨機相結合的編碼方式保證圖案的隨機性,并結合相機和投影裝置像元大小、焦距、工作距離等一系列參數研究編碼圖案顆粒度大小、黑白點比例與三維測量精度的關系等相關問題,優化圖案的設計。

圖1 散斑圖案
本文采用散斑結構光場動態投射模型如圖2所示。在原理驗證階段將圖1的圖形刻蝕到玻璃基底上,然后設計一種光學投影組件,將其產生的編碼圖案經旋轉電機驅動的楔形反射鏡反射到測量空間,即可產生空時無關的連續變化光場[7]。

圖2 散斑結構光場動態投射裝置
在立體匹配之前先要進行極線校正,它將圖像中的所有匯聚模式的極線變換為相互共線且與圖像掃描線平行的直線。經過極線校正后,可利用極線約束條件將匹配像素的搜索范圍限定在極線上,使得對于像素的匹配搜索由全圖掃描轉變為在同行上進行掃描,搜索范圍大大縮小,快速三維數據恢復成為可能。極線校正首先要對相機進行標定,通過張正友標定法得到左右兩臺相機的內外參數[11],再對左右相機進行旋轉操作,讓它們分別繞著各自的主點進行旋轉,經過旋轉以后讓左右相機的焦平面共面,下一步再讓左右相機繞各自相機的光心旋轉,這樣就可以讓兩幅圖像中相對應的點的極線在同一水平直線上。
根據雙目立體視覺原理和極對角幾何原理,左右相機采集到的圖像經過極線校正,在極線上的點滿足極線約束,左圖像極線上的點必定在右圖像對應極線上,這就把左圖某個點的匹配范圍從整幅圖像縮小到右圖像對應某一行上。在進行散斑圖像匹配時,ZNCC零均值歸一化互相關函數能夠針對散斑圖像的散斑特性進行匹配[12-14]。ZNCC算法還可以降低散斑圖像的散斑模式和左右圖因光照、位置帶來圖像亮度不同的影響。為了提高匹配速度,本文采用了ZNCC盒濾波器快速算法,減小同名點在對應行上的查找范圍,通過基于網格查找的匹配算法計算對應像素的相關性。基于網格的匹配算法是將左圖像劃分成小的網格塊而不再是以單個像素為處理單元,通過匹配在右圖得到對應區域。然后計算左圖網格對應的右圖最大相關的像素點其結果就為最佳視差,如圖3所示。

圖3 立體匹配搜索框
ZNCC盒濾波器快速算法為:
(1)
其中:

(2)
基于網格搜索的快速匹配:由空時灰度ZNCC相關算法得到的粗視差圖并不能滿足精度的要求,故需要進行亞像素視差估計進而得到高精度的視差圖。Box Filter加速算法無法在多尺度上實現快速運算,故使用基于網格搜索的二級匹配算法。采用提取網格塊進行初匹配得到粗視差圖,然后再進行精匹配。
該匹配搜索過程經過三步完成:
步驟1極線校正后,在左邊圖像根據固定步長(而不是以1為步長)對行方向和列方向進行搜索,初步計算網格邊緣點在右圖中的視差位置,然后計算相似度,并設定相關度閾值,未達到該閾值則認定為未找到同名匹配點,以此確定右視圖對應點所在的備選區間,此過程命名為初匹配計算。其計算效果示意圖如圖4所示。

圖4 初匹配搜索示意圖
在相關性計算時,開始的時候可以讓固定步長較大使得匹配窗口比較大,可以提高匹配準確率,但是由于增大固定步長會增加計算量,所以也不能設置得太大[14]。視差搜索范圍由雙目三角測量得到的計算值作為初始視差匹配范圍。為減小誤匹配率,剔除視差異常點和孤立點,使用視差一致性和順序性約束進行限制。在第一步視差計算階段,會存在部分點由于遮擋或者物體表面陡峭造成視差值缺失,就會在視差圖上產生空洞,因此需要在橫豎兩個方向上利用插值來填補網格點上的缺失視差。
步驟2網格點鄰域內的視差精匹配計算。在步驟2的精視差匹配計算階段,在左邊圖像以步長為1對行方向和列方向上像素進行遍歷,對于左圖像素在右圖對應行上,以粗視差值作為參考縮小匹配范圍,計算匹配代價和匹配代價協方差。其實現示意圖如圖5所示。

圖5 精匹配搜索示意圖
而后對左圖像各像素點對應的一組相關值在最大值點附近的二次曲線擬合,擬合得到的極值點即為視差值,即為該點的亞像素視差。
步驟3剔除視差跳躍點和突變點,采用移動最小二乘法對視差平面進行擬合[13-14]。
亞像素視差的本質是通過曲線插值的方法估計視差值。經過亞像素匹配,可以獲得圖像的精確視差圖,還可以使得進行三維重建的時候物體表面更加平滑。亞像素估計是通過對累積匹配代價的數值進行二階或者更高階的擬合求取最大值,通過計算得到精匹配的亞像素視差值[15]。
出于運算效果的考慮,采用二次曲線來擬合像素匹配的分布曲線并取得亞像素視差。在計算對應行的相關系數時,取該行相關系數最大值附近的三個點的相關系數,進行二次曲線擬合,并計算得到極大值點和極大值所對應坐標x。該坐標的亞像素值就是對應右圖的坐標值,公式如下:
(3)
(4)
式中:C(d)表示整像素視差匹配極值d處的相關值;x為計算得到的亞像素視差值。給定校正的立體圖像對,假設左圖像中的像素(x,y)具有視差d,則其對應點可在右圖像中的(x-d,y)處找到。相應地,該像素的深度可以通過式(4)獲得,其中:f表示焦距;T表示基線。
通過極線校正然后進行立體匹配,再然后得到視差圖,再通過視差圖和三維測量方法結合系統參數計算物體表面的點的空間三維坐標,最終獲得了單視角下的高精度物體三維點云[4-5,16]。三維物體建模流程如圖6所示。

圖6 散斑三維重建流程
為了更好計算算法執行后生成的三維模型的精確誤差,本文設計一套仿真系統,通過仿真系統可以設計模擬相機參數后對導入的三維人臉模型進行模擬真實場景數據采集。用模擬相機采集的圖片進行三維重建,之后用原模型同生成的三維人臉進行對比。本文采用基于最小二乘法的最優配準方法來進行模型配準。通過重復選擇對應關系點對計算出最優剛體變換,最終找到用戶算法模型與真值之間的旋轉矩陣和平移矩陣。兩個點云配準后進行歐氏距離等誤差分析??梢暬u估結果如圖7所示。通過可視化結果可以看到本文方法可以重建出精度高且光滑的三維人臉模型。

圖7 仿真結果誤差分析圖
本文調研了結構光三維建模研究現狀以及三維模型在三維人臉識別中的重要作用,同時設計了基于散斑的高精度三維重建算法,并開發了一套三維重建仿真系統。由仿真結果可以得出結論:本文算法可以實現較高精度的三維人臉重建。