黃豐智 范 鵬 范智瀚 段智涓
(四川大學(xué)視覺(jué)合成圖形圖像技術(shù)國(guó)防重點(diǎn)學(xué)科實(shí)驗(yàn)室 四川 成都 610065)
在過(guò)去的數(shù)十年里,基于結(jié)構(gòu)光的三維重建技術(shù)得到很大的發(fā)展[1-3],三維重建技術(shù)相對(duì)二維重建技術(shù)可以保存更多現(xiàn)實(shí)目標(biāo)的信息,在三維人臉識(shí)別、3D電影、文物保護(hù)、美容整容、移動(dòng)支付、游戲設(shè)計(jì)、視覺(jué)導(dǎo)航、人工智能、逆向工程等領(lǐng)域都已經(jīng)引起重大變革[4-5]。在計(jì)算機(jī)視覺(jué)領(lǐng)域研究中,三維重建是一個(gè)非常熱門的方向,但是直接通過(guò)自然紋理的變化完成高精度的三維重建是一項(xiàng)難度非常高的工作,尤其是在某些目標(biāo)表面紋理信息較少的時(shí)候。為了解決這個(gè)問(wèn)題,計(jì)算機(jī)視覺(jué)子領(lǐng)域視覺(jué)測(cè)量中通過(guò)投射攜帶編碼信息的幾何圖案來(lái)增強(qiáng)弱特征目標(biāo)表面的紋理信息[1-5],從而可以還原目標(biāo)表面的高精度三維形貌。典型的三維相機(jī)由一個(gè)光機(jī)對(duì)紋理信息進(jìn)行編碼并投射在被測(cè)物體表面,再通過(guò)兩個(gè)攝像機(jī)同時(shí)獲取被測(cè)物理信息。結(jié)構(gòu)光三維重建根據(jù)編碼信息類型主要分為條紋結(jié)構(gòu)光和散斑結(jié)構(gòu)光,其中條紋結(jié)構(gòu)光三維重建精度高但是需要數(shù)據(jù)多而且重建速度較慢。散斑結(jié)構(gòu)光三維重建速度快,最低只需一組數(shù)據(jù)就可進(jìn)行重建,但是重建的精度相對(duì)條紋結(jié)構(gòu)光較低。
在基于散斑的結(jié)構(gòu)光三維重建中,為了提高重建精度,對(duì)散斑的編碼技術(shù)已經(jīng)發(fā)展出RGB彩色散斑編碼和空時(shí)散斑編碼等技術(shù)[6-7]。近年來(lái),隨著GPU技術(shù)的飛速發(fā)展,神經(jīng)網(wǎng)絡(luò)的研究也重回?zé)衢T研究領(lǐng)域,尤其是深度學(xué)習(xí)技術(shù)。深度學(xué)習(xí)跟很多領(lǐng)域結(jié)合都取得了巨大進(jìn)步,自然也有學(xué)者提出將深度學(xué)習(xí)和結(jié)構(gòu)光三維重建領(lǐng)域進(jìn)行融合,國(guó)內(nèi)外都提出了基于深度學(xué)習(xí)的結(jié)構(gòu)光三維重建算法,在某些情況下基于深度學(xué)習(xí)的結(jié)構(gòu)光三維重建實(shí)現(xiàn)了比較好的重建效果[8-10]。
本文對(duì)散斑的結(jié)構(gòu)光三維重建進(jìn)行優(yōu)化,為了提高三維重建精度和光滑度提出一種優(yōu)化的ZNCC算法,通過(guò)本文提出的重建算法可以快速地生成較高精度的光滑三維人臉模型。
設(shè)計(jì)編碼光場(chǎng)的圖案由灰度為0或者255的點(diǎn)陣組成,如圖1所示,采用局域和全局隨機(jī)相結(jié)合的編碼方式保證圖案的隨機(jī)性,并結(jié)合相機(jī)和投影裝置像元大小、焦距、工作距離等一系列參數(shù)研究編碼圖案顆粒度大小、黑白點(diǎn)比例與三維測(cè)量精度的關(guān)系等相關(guān)問(wèn)題,優(yōu)化圖案的設(shè)計(jì)。
圖1 散斑圖案
本文采用散斑結(jié)構(gòu)光場(chǎng)動(dòng)態(tài)投射模型如圖2所示。在原理驗(yàn)證階段將圖1的圖形刻蝕到玻璃基底上,然后設(shè)計(jì)一種光學(xué)投影組件,將其產(chǎn)生的編碼圖案經(jīng)旋轉(zhuǎn)電機(jī)驅(qū)動(dòng)的楔形反射鏡反射到測(cè)量空間,即可產(chǎn)生空時(shí)無(wú)關(guān)的連續(xù)變化光場(chǎng)[7]。
圖2 散斑結(jié)構(gòu)光場(chǎng)動(dòng)態(tài)投射裝置
在立體匹配之前先要進(jìn)行極線校正,它將圖像中的所有匯聚模式的極線變換為相互共線且與圖像掃描線平行的直線。經(jīng)過(guò)極線校正后,可利用極線約束條件將匹配像素的搜索范圍限定在極線上,使得對(duì)于像素的匹配搜索由全圖掃描轉(zhuǎn)變?yōu)樵谕猩线M(jìn)行掃描,搜索范圍大大縮小,快速三維數(shù)據(jù)恢復(fù)成為可能。極線校正首先要對(duì)相機(jī)進(jìn)行標(biāo)定,通過(guò)張正友標(biāo)定法得到左右兩臺(tái)相機(jī)的內(nèi)外參數(shù)[11],再對(duì)左右相機(jī)進(jìn)行旋轉(zhuǎn)操作,讓它們分別繞著各自的主點(diǎn)進(jìn)行旋轉(zhuǎn),經(jīng)過(guò)旋轉(zhuǎn)以后讓左右相機(jī)的焦平面共面,下一步再讓左右相機(jī)繞各自相機(jī)的光心旋轉(zhuǎn),這樣就可以讓兩幅圖像中相對(duì)應(yīng)的點(diǎn)的極線在同一水平直線上。
根據(jù)雙目立體視覺(jué)原理和極對(duì)角幾何原理,左右相機(jī)采集到的圖像經(jīng)過(guò)極線校正,在極線上的點(diǎn)滿足極線約束,左圖像極線上的點(diǎn)必定在右圖像對(duì)應(yīng)極線上,這就把左圖某個(gè)點(diǎn)的匹配范圍從整幅圖像縮小到右圖像對(duì)應(yīng)某一行上。在進(jìn)行散斑圖像匹配時(shí),ZNCC零均值歸一化互相關(guān)函數(shù)能夠針對(duì)散斑圖像的散斑特性進(jìn)行匹配[12-14]。ZNCC算法還可以降低散斑圖像的散斑模式和左右圖因光照、位置帶來(lái)圖像亮度不同的影響。為了提高匹配速度,本文采用了ZNCC盒濾波器快速算法,減小同名點(diǎn)在對(duì)應(yīng)行上的查找范圍,通過(guò)基于網(wǎng)格查找的匹配算法計(jì)算對(duì)應(yīng)像素的相關(guān)性?;诰W(wǎng)格的匹配算法是將左圖像劃分成小的網(wǎng)格塊而不再是以單個(gè)像素為處理單元,通過(guò)匹配在右圖得到對(duì)應(yīng)區(qū)域。然后計(jì)算左圖網(wǎng)格對(duì)應(yīng)的右圖最大相關(guān)的像素點(diǎn)其結(jié)果就為最佳視差,如圖3所示。
圖3 立體匹配搜索框
ZNCC盒濾波器快速算法為:
(1)
其中:
(2)
基于網(wǎng)格搜索的快速匹配:由空時(shí)灰度ZNCC相關(guān)算法得到的粗視差圖并不能滿足精度的要求,故需要進(jìn)行亞像素視差估計(jì)進(jìn)而得到高精度的視差圖。Box Filter加速算法無(wú)法在多尺度上實(shí)現(xiàn)快速運(yùn)算,故使用基于網(wǎng)格搜索的二級(jí)匹配算法。采用提取網(wǎng)格塊進(jìn)行初匹配得到粗視差圖,然后再進(jìn)行精匹配。
該匹配搜索過(guò)程經(jīng)過(guò)三步完成:
步驟1極線校正后,在左邊圖像根據(jù)固定步長(zhǎng)(而不是以1為步長(zhǎng))對(duì)行方向和列方向進(jìn)行搜索,初步計(jì)算網(wǎng)格邊緣點(diǎn)在右圖中的視差位置,然后計(jì)算相似度,并設(shè)定相關(guān)度閾值,未達(dá)到該閾值則認(rèn)定為未找到同名匹配點(diǎn),以此確定右視圖對(duì)應(yīng)點(diǎn)所在的備選區(qū)間,此過(guò)程命名為初匹配計(jì)算。其計(jì)算效果示意圖如圖4所示。
圖4 初匹配搜索示意圖
在相關(guān)性計(jì)算時(shí),開(kāi)始的時(shí)候可以讓固定步長(zhǎng)較大使得匹配窗口比較大,可以提高匹配準(zhǔn)確率,但是由于增大固定步長(zhǎng)會(huì)增加計(jì)算量,所以也不能設(shè)置得太大[14]。視差搜索范圍由雙目三角測(cè)量得到的計(jì)算值作為初始視差匹配范圍。為減小誤匹配率,剔除視差異常點(diǎn)和孤立點(diǎn),使用視差一致性和順序性約束進(jìn)行限制。在第一步視差計(jì)算階段,會(huì)存在部分點(diǎn)由于遮擋或者物體表面陡峭造成視差值缺失,就會(huì)在視差圖上產(chǎn)生空洞,因此需要在橫豎兩個(gè)方向上利用插值來(lái)填補(bǔ)網(wǎng)格點(diǎn)上的缺失視差。
步驟2網(wǎng)格點(diǎn)鄰域內(nèi)的視差精匹配計(jì)算。在步驟2的精視差匹配計(jì)算階段,在左邊圖像以步長(zhǎng)為1對(duì)行方向和列方向上像素進(jìn)行遍歷,對(duì)于左圖像素在右圖對(duì)應(yīng)行上,以粗視差值作為參考縮小匹配范圍,計(jì)算匹配代價(jià)和匹配代價(jià)協(xié)方差。其實(shí)現(xiàn)示意圖如圖5所示。
圖5 精匹配搜索示意圖
而后對(duì)左圖像各像素點(diǎn)對(duì)應(yīng)的一組相關(guān)值在最大值點(diǎn)附近的二次曲線擬合,擬合得到的極值點(diǎn)即為視差值,即為該點(diǎn)的亞像素視差。
步驟3剔除視差跳躍點(diǎn)和突變點(diǎn),采用移動(dòng)最小二乘法對(duì)視差平面進(jìn)行擬合[13-14]。
亞像素視差的本質(zhì)是通過(guò)曲線插值的方法估計(jì)視差值。經(jīng)過(guò)亞像素匹配,可以獲得圖像的精確視差圖,還可以使得進(jìn)行三維重建的時(shí)候物體表面更加平滑。亞像素估計(jì)是通過(guò)對(duì)累積匹配代價(jià)的數(shù)值進(jìn)行二階或者更高階的擬合求取最大值,通過(guò)計(jì)算得到精匹配的亞像素視差值[15]。
出于運(yùn)算效果的考慮,采用二次曲線來(lái)擬合像素匹配的分布曲線并取得亞像素視差。在計(jì)算對(duì)應(yīng)行的相關(guān)系數(shù)時(shí),取該行相關(guān)系數(shù)最大值附近的三個(gè)點(diǎn)的相關(guān)系數(shù),進(jìn)行二次曲線擬合,并計(jì)算得到極大值點(diǎn)和極大值所對(duì)應(yīng)坐標(biāo)x。該坐標(biāo)的亞像素值就是對(duì)應(yīng)右圖的坐標(biāo)值,公式如下:
(3)
(4)
式中:C(d)表示整像素視差匹配極值d處的相關(guān)值;x為計(jì)算得到的亞像素視差值。給定校正的立體圖像對(duì),假設(shè)左圖像中的像素(x,y)具有視差d,則其對(duì)應(yīng)點(diǎn)可在右圖像中的(x-d,y)處找到。相應(yīng)地,該像素的深度可以通過(guò)式(4)獲得,其中:f表示焦距;T表示基線。
通過(guò)極線校正然后進(jìn)行立體匹配,再然后得到視差圖,再通過(guò)視差圖和三維測(cè)量方法結(jié)合系統(tǒng)參數(shù)計(jì)算物體表面的點(diǎn)的空間三維坐標(biāo),最終獲得了單視角下的高精度物體三維點(diǎn)云[4-5,16]。三維物體建模流程如圖6所示。
圖6 散斑三維重建流程
為了更好計(jì)算算法執(zhí)行后生成的三維模型的精確誤差,本文設(shè)計(jì)一套仿真系統(tǒng),通過(guò)仿真系統(tǒng)可以設(shè)計(jì)模擬相機(jī)參數(shù)后對(duì)導(dǎo)入的三維人臉模型進(jìn)行模擬真實(shí)場(chǎng)景數(shù)據(jù)采集。用模擬相機(jī)采集的圖片進(jìn)行三維重建,之后用原模型同生成的三維人臉進(jìn)行對(duì)比。本文采用基于最小二乘法的最優(yōu)配準(zhǔn)方法來(lái)進(jìn)行模型配準(zhǔn)。通過(guò)重復(fù)選擇對(duì)應(yīng)關(guān)系點(diǎn)對(duì)計(jì)算出最優(yōu)剛體變換,最終找到用戶算法模型與真值之間的旋轉(zhuǎn)矩陣和平移矩陣。兩個(gè)點(diǎn)云配準(zhǔn)后進(jìn)行歐氏距離等誤差分析??梢暬u(píng)估結(jié)果如圖7所示。通過(guò)可視化結(jié)果可以看到本文方法可以重建出精度高且光滑的三維人臉模型。
圖7 仿真結(jié)果誤差分析圖
本文調(diào)研了結(jié)構(gòu)光三維建模研究現(xiàn)狀以及三維模型在三維人臉識(shí)別中的重要作用,同時(shí)設(shè)計(jì)了基于散斑的高精度三維重建算法,并開(kāi)發(fā)了一套三維重建仿真系統(tǒng)。由仿真結(jié)果可以得出結(jié)論:本文算法可以實(shí)現(xiàn)較高精度的三維人臉重建。