武凱峰, 王曉飛
(黑龍江大學(xué) 電子工程學(xué)院, 哈爾濱 150080)
雙目立體視覺是計算機(jī)視覺研究中的熱點(diǎn)問題之一,為機(jī)器視覺中的重要分支[1],利用視差原理可以在矯正后的雙目圖像中估計3D場景中的深度信息。雙目立體視覺在機(jī)器人視覺[2]、醫(yī)學(xué)成像、航空測繪、3D重建[3]、自動駕駛[4]、深度測距[5]和工業(yè)檢測上具有極其廣泛的應(yīng)用[6]。雙目立體視覺最為關(guān)鍵的立體匹配算法研究面臨巨大挑戰(zhàn)[7],如受弱紋理區(qū)域影響,匹配過程中通常會出現(xiàn)匹配錯誤,無法找到同名點(diǎn)對等問題,加劇了匹配過程中的難度,對匹配結(jié)果產(chǎn)生不利的影響[8]。Census變換具有局部窗口運(yùn)算的特性,每個像素進(jìn)行獨(dú)立運(yùn)算,該特性可以設(shè)計多線程并行計算模型,為算法效率提供保障[9]。Census變換對光照的變化具有出色的抗干擾性[10],在實(shí)際情境中適用性很強(qiáng)。
2005年,Hirschmüller提出了半全局立體匹配算法(Semi-global matching, SGM),該算法結(jié)合了局部算法的高效率與全局算法匹配效果出眾的優(yōu)點(diǎn),同時,避免了局部算法在窗口視差相同的假設(shè)不成立時而導(dǎo)致的匹配效果較差速度慢等問題[2]。同樣優(yōu)秀的算法還有PatchMatchStereo 算法和AD-Census算法[11]。PatchMatchStereo算法是Bleyer發(fā)表的雙目立體匹配算法,打破了傳統(tǒng)固定窗口匹配的桎梏[12],該方法使用傾斜支持窗的搜索模式,具有出色的數(shù)據(jù)泛化能力。2011年,AD-Census算法是Mei等提出的,算法從效率和效果上表現(xiàn)出色,其改進(jìn)的十字交叉域代價聚合方式,針對弱紋理區(qū)域的處理令人滿意[13]。這些方法通常不能適應(yīng)低紋理和光照差異大的環(huán)境。取得突破的是利用學(xué)習(xí)的方法,通過神經(jīng)網(wǎng)絡(luò),深度學(xué)習(xí)代替?zhèn)鹘y(tǒng)的方法計算匹配代價, 在代價聚合和視差細(xì)化等過程中利用學(xué)習(xí)的方法也取得了顯著成果。Zbontar等利用卷積神經(jīng)網(wǎng)絡(luò)通過小圖像塊學(xué)習(xí)相似性度量,開創(chuàng)性地將深度學(xué)習(xí)技術(shù)引入到立體匹配之中,首次成功地利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural network, CNN)計算匹配代價成本,代替了傳統(tǒng)方法中人工設(shè)計的代價計算指標(biāo)[14]。Seki等提出的SGM-Net,該網(wǎng)絡(luò)是基于代價聚合的非端到端網(wǎng)絡(luò),解決了代價聚合過程需要針對不同平滑項人工設(shè)計懲罰參數(shù)的問題[15]。Mayer等首次提出的端到端回歸網(wǎng)絡(luò)Disp-Net,采用編碼器-譯碼器結(jié)構(gòu)利用CNN回歸得到視差圖[16]。Zhou等提出GC-Net構(gòu)建4D cost volume融合上下文信息,得到了很好的結(jié)果[17]。受到GC-Net網(wǎng)絡(luò)的影響,Chang等在網(wǎng)絡(luò)學(xué)習(xí)中加入了更多的信息以追求精度的提高,由此提出金字塔立體匹配網(wǎng)絡(luò)PSMNet[18],Godard等在不使用真實(shí)深度的情況下,利用極線幾何約束重建圖像,通過訓(xùn)練網(wǎng)絡(luò)生成視差圖,同時構(gòu)建新的損失函數(shù)反向傳播進(jìn)一步訓(xùn)練網(wǎng)絡(luò)提高魯棒性[19]。Zhou等以迭代的方式更新網(wǎng)絡(luò)參數(shù),將一個隨機(jī)網(wǎng)絡(luò)逐漸收斂到穩(wěn)定狀態(tài)[20]。Wen等提出端到端的實(shí)時立體匹配網(wǎng)絡(luò),此網(wǎng)絡(luò)具有優(yōu)秀的殘差優(yōu)化模塊,可以準(zhǔn)確地估計出圖像高頻區(qū)域的視差信息。但基于學(xué)習(xí)的方法需要大量實(shí)況數(shù)據(jù)以及訓(xùn)練和計算的硬件資源,并且在不同環(huán)境下適應(yīng)性較差,所以傳統(tǒng)匹配方法仍然具有重要研究價值[21]。Lu等提出基于Census 變換的Graph cut改進(jìn)立體匹配算法,該算法對傳統(tǒng)的GC方法的能量函數(shù)中的數(shù)據(jù)項進(jìn)行優(yōu)化[22],降低像素點(diǎn)本身對灰度值的依賴性。Yuan等采用灰度描述算子,在原始圖像上進(jìn)行Census變換將目標(biāo)像素與鄰域像素的距離加入考慮,得到在變換窗口內(nèi)像素灰度和梯度的描述關(guān)系[23]。Ambrosh等提出融合基于梯度的Census變換和絕對差值之和的算法[24],通過使用 Altera Stratix FPGA 構(gòu)建原型,在750×400立體圖像分辨率下處理效果更好。Hou等使用圓形變換模板代替Census傳統(tǒng)的方形變換模板,經(jīng)過Census變換對所得的序列進(jìn)行等長高斯權(quán)重序列加權(quán),相比于傳統(tǒng)Census,更好地處理了噪聲[25]。高斯權(quán)重序列的加入雖然在一定程度上取得了較好的效果,但是不能滿足匹配中鄰域像素與中心像素在不同窗口下的動態(tài)關(guān)系[26]。受此啟發(fā),本文提出自適應(yīng)權(quán)重分配的Census算法,在不同的搜索窗口下,為各鄰域像素分配與中心像素相關(guān)聯(lián)的動態(tài)自適應(yīng)權(quán)重值,提高了匹配的準(zhǔn)確率。
傳統(tǒng)Census變換算法應(yīng)用在極線矯正后的左、右圖像對上,選取左圖像上的像素點(diǎn)作為目標(biāo)像素,以該目標(biāo)像素為中心構(gòu)建m×n的鄰域窗口(n和m都為奇數(shù)),將窗口內(nèi)的鄰域像素與中心像素灰度值進(jìn)行比較,若鄰域像素大于中心像素,則標(biāo)記為1,若鄰域像素小于目標(biāo)像素,則標(biāo)記為0,全部比較結(jié)束后,結(jié)果以比特串形式體現(xiàn),最后將比特串作為中心時像素的Census變換值Cs進(jìn)行計算,公式為:
(1)
式中:p為中心目標(biāo)像素點(diǎn);q為所在窗口鄰域像素點(diǎn);⊕是比特位的逐位連接運(yùn)算;ξ為定義的運(yùn)算符號將鄰域灰度值與中心灰度值進(jìn)行比較,計算公式為:
(2)
計算左圖像目標(biāo)點(diǎn)p(x,y)的Census值后,在右圖像上以同樣方法計算視差范圍內(nèi)(x-d,y)位置像素的Census值,將兩點(diǎn)Census值進(jìn)行異或運(yùn)算,漢明距離公式為:
C(x,y,d)=Hamming(Csl(x,y),Csr(x-d,y))
(3)
Hamming距離是兩個比特串進(jìn)行異或運(yùn)算之后,對應(yīng)位置不相同的數(shù)量,選用5×5搜索窗口,漢明距離的計算如圖1所示。圖中5×5方格內(nèi)代表尺寸為5×5的搜索窗口在左圖(x,y)為中心像素下的灰度值,與在極線約束下對應(yīng)右圖(x-d,y)處的同尺寸窗口灰度值,左右窗口鄰域灰度值通過與中心像素比較生成各自對應(yīng)比特串即窗口內(nèi)中心像素所對應(yīng)的Census值,通過異或運(yùn)算得出左右比特串對應(yīng)位置不同的個數(shù)為3,由此得到Hamming距離。

圖1 漢明距離的計算
將計算所得的漢明距離作為視差d下的匹配代價存入三維代價空間。Census變換計算匹配代價的整體流程以極線校正后的左右圖像作為輸入,確定窗口大小比較窗口內(nèi)中心像素與鄰域像素計算Census值,通過Census值計算Hamming距離,將其作為匹配代價存入代價空間C,如圖2所示。

圖2 利用Census變換計算匹配代價
傳統(tǒng)Census通過將目標(biāo)像素與中心像素進(jìn)行比較,大于目標(biāo)像素灰度的點(diǎn)編碼為1,小于編碼為0,對所得二進(jìn)制碼串進(jìn)行異或運(yùn)算計算漢明距離。此過程中,Census變換默認(rèn)窗口內(nèi)的鄰域像素對中心像素具有相同影響,然而實(shí)際上沿著極線搜索時,在不同視差下的搜索窗口內(nèi)其鄰域像素對中心像素的影響會隨著搜索窗口的不同而改變,在搜索窗口變更的過程中各鄰域像素對中心像素具有不同貢獻(xiàn),同時當(dāng)中心像素與其鄰域像素接近時,即中心像素值與鄰域像素值相差1或相等的情況下易導(dǎo)致錯誤編碼現(xiàn)象,基于這一角度,提出了動態(tài)自適應(yīng)權(quán)重分配方法,在不同搜索窗口下根據(jù)中心像素的差異確定不同動態(tài)下的權(quán)重矩陣,對鄰域像素自適應(yīng)分配與其中心像素相關(guān)聯(lián)的動態(tài)權(quán)重值。并且將加權(quán)重點(diǎn)應(yīng)用于視差為d時,窗口內(nèi)對中心像素具有明顯影響的像素點(diǎn)上,具有明顯影響的像素點(diǎn)即特異點(diǎn)是指左右圖像代表中心像素的二進(jìn)制碼串異或運(yùn)算得到的差異位所對應(yīng)的鄰域像素。在匹配代價計算過程中,依據(jù)Census變換方法,采取異或運(yùn)算后,不再使用Hamming距離作為代價計算結(jié)果,如圖3所示,通過將左右圖像作為輸入,分別計算Census值,與原有方法不同的是在圖像輸入階段計算以(x,y)為中心像素窗口的鄰域權(quán)重矩陣,并逐步將權(quán)重與異或運(yùn)算得到的特異點(diǎn)加權(quán)求和,將求和后結(jié)果作為中心目標(biāo)點(diǎn)(x,y)視差d下的匹配代價存入代價空間。

圖3 自適應(yīng)權(quán)重分配Census變換
利用鄰域像素與中心像素灰度的差值構(gòu)建鄰域像素與中心像素的關(guān)聯(lián)關(guān)系,當(dāng)窗口內(nèi)鄰域像素與中心像素灰度值相差較大時,此時處理的像素點(diǎn)通常為圖像的邊緣像素點(diǎn),應(yīng)降低邊緣像素點(diǎn)對中心像素的影響,因此為邊緣像素分配較小的權(quán)重值。當(dāng)窗口內(nèi)鄰域像素點(diǎn)與中心像素相接近時,搜索窗口通常在弱紋理區(qū)域,應(yīng)放大搜索窗口內(nèi)鄰域像素對中心像素的影響,為其分配較大的權(quán)重值。依據(jù)該權(quán)重分配策略,在不同的搜索窗口自適應(yīng)的為鄰域像素分配權(quán)重,權(quán)重值的計算公式:
(4)
式中:Ip為中心像素灰度值;Iq為鄰域像素灰度值;ρ為可調(diào)節(jié)參數(shù),經(jīng)過實(shí)驗驗證ρ的取值,經(jīng)過實(shí)驗本文取值0.9<ρ<1.0。
權(quán)重參數(shù)分配與匹配代價計算過程如圖4所示。通過式(4)計算得到以灰度值18為中心像素窗口的權(quán)重矩陣,圖中Census值通過比特串異或運(yùn)算得出特異點(diǎn),其權(quán)重分別對應(yīng)權(quán)重矩陣中Weight[2]、Weight[13]、Weight[23],由此通過加權(quán)求和得出以(x,y)為中心像素視差d下新的匹配代價值C(x,y,d)。

圖4 Census加權(quán)
經(jīng)過自適應(yīng)權(quán)重分配后Census變換,得到中心目標(biāo)像素窗口內(nèi)鄰域像素點(diǎn)的權(quán)重值,并且經(jīng)過左、右圖像Census值異或運(yùn)算得到窗口內(nèi)兩幅圖像中對中心目標(biāo)像素具有明顯差異的像素點(diǎn),經(jīng)過加權(quán)運(yùn)算再求和獲得像素點(diǎn)視差d下匹配代價C(x,y,d), 計算每個像素點(diǎn)視差范圍內(nèi)的代價,將得到的代價存入三維代價空間,立體匹配算法在視差計算過程中通常采用贏家通吃(WTA,Winner-take-all)算法。把像素點(diǎn)視差范圍內(nèi)匹配代價最小的視差值直接作為該像素點(diǎn)(x,y)的視差。如果直接將未聚合后的視差值采用WTA算法,得到的視差圖如圖5所示,通常伴隨模糊和大量的噪點(diǎn)視差圖效果較差的問題。

(a) 經(jīng)典Census (b) 自適應(yīng)加權(quán)Census
為了達(dá)到更好的效果,采用4路徑掃描線聚合方式,實(shí)現(xiàn)代價聚合,其能量函數(shù)為:
(5)
式中:第一項為數(shù)據(jù)項,即像素點(diǎn)p在視差d下所有匹配代價累加結(jié)果;第二項與第三項為平滑項,表示p的鄰域內(nèi)q點(diǎn)對中心目標(biāo)像素p點(diǎn)的影響,P1為懲罰系數(shù),對當(dāng)鄰域像素視差變化很小時做出懲罰,表示在該情況下的懲罰力度很小,由于視差與3D空間中對應(yīng)點(diǎn)的深度成反比,每當(dāng)視差增加1時所產(chǎn)生的變化并不會等量增加,而會以遞增狀態(tài)出現(xiàn),因此P1對鄰域像素視差為1時做出懲罰,而第三項為視差大于1時所做懲罰,P2的懲罰力度較大,小的懲罰力度可以應(yīng)對視差變化小的區(qū)域,較大的懲罰力度可以解決當(dāng)前景像素與背景交界時的非連續(xù)情況,P2往往會根據(jù)相鄰的灰度值做出調(diào)整,當(dāng)出現(xiàn)相鄰視差大于1的情況時,如果像素點(diǎn)處在非連續(xù)區(qū)域,那么在區(qū)域內(nèi)相應(yīng)的懲罰力度減少,如果不在非連續(xù)區(qū)域,仍然視差大于1,那么判定為無效視差點(diǎn),所以懲罰要加大,最直接的方法是比較相鄰像素的灰度值,在連續(xù)區(qū)域相鄰像素灰度值相差小,而非連續(xù)區(qū)域的灰度值差值變大。
根據(jù)灰度差調(diào)整公式為:
(6)
采用路徑代價聚合的方式計算匹配代價值,對像素所在視差下的匹配代價在路徑上與前一個像素的視差構(gòu)建聯(lián)系,依次迭代直到路徑結(jié)束,以各個路徑下的路徑代價值相加作為最終的匹配代價。像素p沿某條路徑的代價計算公式為:
(7)
式中:Lr(p-r,d)表示為在此路徑下前一個像素p在視差d下的聚合代價值,第三項是為了保證路徑代價值不超過一定上限。本文采取4路徑聚合方式如圖6所示。

圖6 聚合路徑Fig.6 Aggregation path
經(jīng)過代價聚合后計算聚合代價獲得比較理想的視差圖,但是距離最終結(jié)果還需要經(jīng)過視差細(xì)化,即對所得視差圖進(jìn)行子像素擬合、一致性檢查、視差填充和加權(quán)中值濾波等過程:
(1) 子像素擬合思路基于其最終所得的視差值為整數(shù)在實(shí)際應(yīng)用中無法滿足對精度的要求,所以采用二次曲線擬合的方法得到新的視差值;
(2) 一致性檢查通過對比左右視差圖對應(yīng)位置的視差值,剔除無效視差,并將像素分為非遮擋區(qū)域像素與遮擋區(qū)域像素;
(3) 視差填充對加權(quán)Census處理后的視差圖在遮擋區(qū)域與非遮擋區(qū)域,按照不同的填充方式對無效值進(jìn)行有效賦值,填補(bǔ)視差圖空洞;
(4) 中值濾波對最終所得視差圖進(jìn)一步平滑與噪聲剔除,由于傳統(tǒng)的中值濾波在視差圖處理中對邊緣的維持效果較差,采用根據(jù)顏色信息加權(quán)中值濾波的方法對視差圖進(jìn)行處理,選用3×3濾波窗口,根據(jù)原圖像彩色信息與窗口中心像素運(yùn)算為窗口內(nèi)每一個單元賦值,將權(quán)重值進(jìn)行排列篩選出中間權(quán)值,將權(quán)值對應(yīng)窗口的視差值作為濾波的結(jié)果,計算公式為:
(8)
對自適應(yīng)權(quán)重分配后的Census值計算初始匹配代價進(jìn)行了驗證,在Inter(R) Core(TM)i7-7700HQ CPU @2.80GHz的Windows10系統(tǒng)下的Anaconda平臺Python 3環(huán)境對Middlebury 2014 數(shù)據(jù)集中Training dense幅度為四分之一的Adirondack、Motorcycle、Piano、Pipes和Teddy進(jìn)行實(shí)驗驗證算法效果,獲取經(jīng)算法運(yùn)行后的視差圖。在Linux系統(tǒng)下使用Middlebury官網(wǎng)提供的SDK工具與Cvkit工具包將實(shí)驗所得視差圖與真實(shí)視差圖進(jìn)行對比。在Middlebury中用于確定方法整體排名的默認(rèn)指標(biāo)[27]是全尺寸 Bad2.0,即視差誤差 >2.0 像素的壞像素的百分比。這對應(yīng)于四分之一分辨率下0.5倍像素的誤差閾值。所以以Bad0.5作為定量分析標(biāo)準(zhǔn),對應(yīng)官網(wǎng)下的全幅圖像Bad2的壞點(diǎn)率,收集終端下的實(shí)驗數(shù)據(jù),在Middlebury官網(wǎng)下與其他優(yōu)秀算法進(jìn)行對比驗證自適應(yīng)權(quán)值分配變換方法的可行性。
實(shí)驗視差圖與真實(shí)視差圖對比數(shù)據(jù)如圖7所示,圖7(a)為左輸入圖像,圖7 (b)為右輸入圖像,圖7 (c)為實(shí)驗所得視差圖,圖7(d)為左圖像真實(shí)視差圖。對視差圖在遮擋區(qū)域與非遮擋區(qū)域,按照不同的填充方式對無效值進(jìn)行有效賦值。經(jīng)過加權(quán)后的Census變換在整體視差效果中,產(chǎn)生的噪點(diǎn)更少,視差圖在弱紋理區(qū)域更加平滑,邊緣清晰,驗證了自適應(yīng)加權(quán)Census變換算法的可行性。
選用Bad 0.5為閾值進(jìn)行分析,該算法與其他立體匹配算法結(jié)果進(jìn)行比較,其視差圖對比如圖8所示,從圖中可以看出對比匹配方法的實(shí)驗結(jié)果,其所得視差圖帶有大量的連通區(qū)域,伴有邊緣模糊現(xiàn)象,并且在一些區(qū)域前景與背景的交界處出現(xiàn)過度平滑。

圖8 實(shí)驗視差圖與其他算法視差圖對比
評估算法性能如表1與表2所示,其中B為Bad0.5下的誤匹率,N為Nonocc誤匹率表示比較的匹配算法測量的區(qū)域為兩個視圖可見的非遮擋像素。A為All誤匹率,表示全局誤匹率,即比較的匹配算法測量的區(qū)域為全局,包含兩個視圖中遮擋與缺失的部分。AE為Avgerr平均絕對誤差,Q指實(shí)驗所用圖像尺寸為四分之一圖像,官方提供三種規(guī)格尺寸圖像F、H和Q分別對應(yīng)全尺寸、二分之一尺寸和四分之一尺寸。處理全尺寸畫幅與二分之一畫幅圖像計算時間長,占用內(nèi)存大需要配置較好的計算資源進(jìn)行處理,而四分之一尺寸圖像在滿足實(shí)驗要求的同時可以充分驗證實(shí)驗效果。因此,在硬件條件有限的情況下,實(shí)驗選用四分之一尺寸圖像進(jìn)行實(shí)驗。由表中數(shù)據(jù)可以看出,所提出的算法對比于其他匹配算法在遮擋區(qū)域與全局對比中誤匹率更低,表明該算法達(dá)成了預(yù)期效果。

表1 非遮擋區(qū)域?qū)Ρ?/p>

表2 全局對比
提出了一種自適應(yīng)加權(quán)的Census變換算法,解決了搜索窗口內(nèi)中心像素與鄰域像素接近的弱紋理區(qū)域所引起的不匹配或誤匹配問題,通過在不同匹配窗口內(nèi)計算鄰域像素與中心像素的灰度差值,獲得不同搜索窗口下鄰域像素自適應(yīng)的權(quán)重數(shù)組,并將權(quán)重數(shù)組與左右窗口異或運(yùn)算所得特異點(diǎn)加權(quán)求和計算初始的匹配代價,經(jīng)過一致性檢查和子像素擬合等優(yōu)化步驟后得到視差圖。通過實(shí)驗對比驗證自適應(yīng)加權(quán)Census變換算法的有效性。動態(tài)自適應(yīng)加權(quán)Census變換與其他優(yōu)秀匹配算法對比,通過構(gòu)建動態(tài)權(quán)重矩陣,擴(kuò)大弱紋理區(qū)域像素匹配代價值差異,由此所得視差圖整體效果更加平滑且邊緣清晰,在病態(tài)弱紋理區(qū)域適應(yīng)能力更強(qiáng),可以有效降低視差圖中的誤匹率,提高匹配的準(zhǔn)確率。