李 巖,吳孟男,劉克平,于微波
(長春工業(yè)大學(xué) 電氣與電子工程學(xué)院,吉林 長春 130012)
由于影像中通常存在光照和紋理結(jié)構(gòu)變化的問題,利用傳統(tǒng)的立體匹配算法極易出現(xiàn)大量的誤匹配等問題,制約著后續(xù)系統(tǒng)測量的效果和精度。因此,對弱紋理區(qū)域和視差不連續(xù)區(qū)域匹配精度的研究受到廣大學(xué)者的青睞[1-3]。
SCHARSTEIN等[4]定義了立體匹配的流程,并將其劃分為匹配代價計算、代價聚合、視差計算和后處理4個步驟。根據(jù)匹配代價函數(shù)構(gòu)造的不同,又可分為全局立體匹配算法、局部立體匹配算法和深度學(xué)習(xí)立體匹配算法。
近年來,隨著機(jī)器學(xué)習(xí)技術(shù)的迅速發(fā)展,以深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的匹配算法逐漸成為了研究熱點(diǎn)[5]。深度學(xué)習(xí)通過圖像進(jìn)行非線性變換[6-7],可以提取圖像的多層特征用于代價計算[8],通過預(yù)訓(xùn)練獲得模型參數(shù),提高了算法的魯棒性[9]。但由于深度學(xué)習(xí)立體匹配算法需要大量數(shù)據(jù)進(jìn)行計算且通常缺少視差優(yōu)化步驟,導(dǎo)致生成的視差圖存在孔洞,在實(shí)際應(yīng)用中受到限制。
傳統(tǒng)的立體匹配算法無需大量數(shù)據(jù)進(jìn)行訓(xùn)練,匹配準(zhǔn)確率也能滿足實(shí)際應(yīng)用需求,因此應(yīng)用更為廣泛。全局匹配算法通過構(gòu)造全局能量函數(shù)來遍歷圖像中的所有像素,以盡可能多地獲取全局信息,常用的全局立體匹配方法有圖割[10-12]、置信傳播[13]和動態(tài)規(guī)劃[14-15]等。全局立體匹配算法獲得視差圖的精度較高,但算法效率低,難以在實(shí)際工程中應(yīng)用。
局部立體匹配算法將參考圖像分為若干圖像塊[16-18],再求取匹配圖像內(nèi)預(yù)期相似度最高的圖像塊,生成深度圖。YANG等[19]提出一種基于自適應(yīng)指數(shù)加權(quán)移動平均濾波器和簡單線性迭代聚類分割算法的高效局部匹配方法。這種方法對弱紋理區(qū)域與亮度變化具有魯棒性,能夠以更低的時間代價獲得更好的匹配結(jié)果。趙蕓等[20]提出一種改進(jìn)的基于跨尺度代價聚合的立體匹配方法。對不同下采樣層的代價卷使用不同的代價聚合方法,極大地減少了計算耗時。桑苗苗等[21]提出一種基于Patch match的半全局雙目立體匹配算法,在路徑代價計算過程中使用空間傳播機(jī)制,大幅提高了半全局算法的計算效率。王陽平等[22]提出一種結(jié)合加速魯棒特征的半全局立體匹配算法。能有效解決弱紋理和視差不連續(xù)區(qū)域中的條紋和噪聲,提高了立體匹配精度。HAQ等[23]提出一種基于改進(jìn)直方圖均衡化的空間梯度模型匹配算法,該方法在提高峰值信噪比和降低壞像素百分比方面有顯著的效果。
局部匹配法帶來了效率上的提升[24],但僅通過在圖像原始分辨率下計算左右圖像的像素差異生成視差圖,無法捕捉不同方向上圖像的細(xì)微差異,在處理圖像中的弱紋理、遮擋區(qū)域時效果強(qiáng)差人意。基于上述問題,本文提出融合多尺度信息的各向異性立體匹配算法(Anisotropic Stereo Matching with multi-Scale Information,ASMSI),將梯度與相角信息融合到匹配代價函數(shù)中以解決弱紋理區(qū)域的孔洞問題,并結(jié)合高斯金字塔,分別計算不同尺度下的匹配代價,對得出的代價值進(jìn)行聚合,從而減小誤匹配概率,最終得到更精確的視差值。
各向異性的立體匹配算法流程如圖1所示。將原始圖像經(jīng)高斯下采樣得到不同尺度大小的圖像,計算每個尺度下的匹配代價值,并對其進(jìn)行十字交叉域代價聚合(Cross-Based Cost Aggregation,CBCA),得出融合多尺度信息的各向異性匹配代價,后經(jīng)“贏家通吃”策略(Winner-Take-All,WTA)生成初始視差圖,最后對初始視差進(jìn)行精修與后處理得到理想視差圖。
圖1 算法流程圖
匹配代價計算就是衡量兩幅圖像中的同名點(diǎn)在不同拍攝角度下的相似程度,傳統(tǒng)基于灰度絕對差(Absolute Difference,AD)[25]的代價計算方法能夠快速準(zhǔn)確地檢測出左右兩幅圖像中的灰度或色彩差異,但易受光線和噪聲影響且在處理弱紋理區(qū)域時容易失效。由于圖像梯度信息對光照不敏感且對圖像噪聲魯棒,在處理深度不連續(xù)區(qū)域時生成的視差效果優(yōu)異。因此選擇將基于梯度算子的各向異性匹配代價函數(shù)應(yīng)用到立體匹配中。為抓住各匹配方向上的細(xì)微差異,本文提出一種結(jié)合圖像色彩信息、梯度和相角信息的各向異性匹配代價函數(shù)。通過引入相角信息可以在相同梯度方向上得到不同的匹配代價。
在被測圖像I中,將梯度定義為圖像沿X軸方向和Y軸方向上的一階偏導(dǎo)數(shù),表達(dá)式為:
(1)
沿梯度方向上的幅值和相角定義為:
(2)
(3)
式中:m為沿梯度方向上的幅值,表示圖像中灰度的變化率;φ為梯度G的相角,用于衡量灰度的變化方向。當(dāng)灰度的變化率最大時,相角φ提供梯度變化的方向信息,且其對光照不均具有良好的穩(wěn)定性。雖然輸入圖像的梯度幅值m會出現(xiàn)對Gx、Gy的大小變化較為敏感的增益失真,但相角φ不會改變,也不會出現(xiàn)對梯度方向變化敏感的偏置失真。因此,單獨(dú)考慮梯度幅度和相位角來控制算法對噪聲的敏感性更為有利。
通過結(jié)合灰度值差、幅值和相角通過加權(quán)線性組合作為匹配代價函數(shù)來控制算法對噪聲的敏感性。
(4)
式中:Ic(i)、mc(i)、φc(i)分別表示右相機(jī)圖像中的像素坐標(biāo)、梯度幅值、梯度相角;Ic(i,l)、mc(i,l)、φc(i,l)分別表示左相機(jī)圖像中像素坐標(biāo)、梯度幅值、梯度相角;下標(biāo)c為RGB圖像中的3個顏色分量;C(i,l)為當(dāng)視差為i時的匹配代價;α,β,ζ分別為顏色差異、幅值和相角的平衡因子,通常情況下α+β+ζ=1;τc為顏色的截斷值。每個候選視差對應(yīng)一個匹配代價,將這些代價相加構(gòu)成全局匹配代價C。
目前主流的匹配代價聚合方法僅適用于圖像的原始分辨率,在高紋理區(qū)域可以獲得質(zhì)量較好的視差值,但是在低紋理和遮擋區(qū)域會由于平滑區(qū)域的不唯一性而造成誤匹配。通過模擬匹配搜索時人類視覺系統(tǒng)由粗到精(Course-to-Fine)的過程,通過如圖2所示的高斯圖像金字塔下采樣獲得不同尺度S下的圖像。經(jīng)采樣后的圖像分辨率D(WS,HS)定義為:
圖2 高斯金字塔結(jié)構(gòu)
(5)
式中:S=0,1,2,...,n,(WS,HS)為尺度S下的圖像分辨率,(Wo,Ho)為圖像的原始分辨率。不同尺度構(gòu)成的圖像金字塔最上層為圖像的整體細(xì)節(jié)信息,其它層分別為邊緣等魯棒性信息。
將各尺度下的匹配代價值進(jìn)行十字交叉域代價聚合。CBCA由構(gòu)造十字交叉臂和代價聚合兩個步驟組成。
(1)構(gòu)造十字交叉臂 以選定像素p為中心向其水平和豎直方向延伸,形成十字臂,顏色(灰度)差異及長度范圍是兩個限制臂長的主要因素。以左臂延伸為例構(gòu)造十字臂時,其顏色差異定義為:
(6)
式中:Dc(p,pl)=maxi=R,G,B|Ii(p)-Ii(pl)|即為3個顏色分量差別的最大值,p為所構(gòu)建十字交叉域的中心像素,pl為p所在像素坐標(biāo)系水平軸左側(cè)的某一像素,τ1為設(shè)定閾值,不僅限制p和pl之間的顏色差異要小于閾值τ1,還限制了pl和其左側(cè)前一像素pl+(1,0)的差異也要小于τ1,這樣臂的延伸就不會超過邊緣像素。
Ds(p,pl)=|p-pl|,Ds(p,pl) (7) 式(7)定義了構(gòu)造十字臂的空間長度,Ds(p,pl)為p和pl的空間長度,L1為設(shè)定的臂長閾值。為了使弱紋理區(qū)域能包含更多像素,可使用較大的臂長閾值L1,同時設(shè)定一個更嚴(yán)格的顏色閾值τ2(τ2<τ1),則有: Dc(p,pl)<τ2,當(dāng)L2 (8) 右臂、下臂、上臂的構(gòu)造規(guī)則與左臂相一致。 當(dāng)確定所有像素的十字交叉區(qū)域后,就可以構(gòu)造中心像素p的支持區(qū)域,構(gòu)造方法如圖3所示。像素p的支持區(qū)域是合并其垂直臂上的所有像素的水平臂。 圖3 構(gòu)造十字交叉區(qū)域 (2)代價聚合 當(dāng)像素p的支持區(qū)域構(gòu)造好后,就可以對p進(jìn)行兩步法(Two-Pass)代價聚合,如圖4所示。 圖4 兩步法代價聚合 步驟1對所有像素,將其水平臂上的像素代價值相加,存儲為臨時值Ct: Ct=∑Cpl+∑Cpr+Cp。 (9) 式中:Cp為十字交叉域豎直方向上某像素點(diǎn)p處的匹配代價,Cpl為p所在水平臂左側(cè)某像素的匹配代價值,∑Cpl為左臂上所有像素的代價值之和,Cpr為p所在水平臂右側(cè)某像素的匹配代價值,∑Cpr為右臂上所有像素的代價值之和。 步驟2對支持域內(nèi)的所有像素,將其豎直臂上在第一步存儲的臨時值相加,得到該像素最終的聚合代價值Cf,為了使聚合值范圍位于一個較小的可控范圍內(nèi),最終的聚合代價值需要除以支持區(qū)的總像素數(shù)N。 (10) 最后將不同尺度下的匹配代價融合得到多尺度十字交叉域代價聚合后的新匹配代價值Cas: (11) 通過上述步驟可以得到不同的像素支持區(qū)域,使聚合到像素的代價值來源不同,這樣的改進(jìn)可以減少視差非連續(xù)區(qū)域的誤匹配。 由于立體匹配的左右圖像存在遮擋和不連續(xù)區(qū)域,導(dǎo)致得到的包含該區(qū)域的視差圖效果不能盡如人意。所以常采用視差精修步驟來提高視差圖的準(zhǔn)確性。本文采用左右一致性(Left-Right Check,LRC)檢查進(jìn)行遮擋檢測。在該方法中,需計算通過設(shè)置左、右視圖為目標(biāo)獲得的兩個視差圖。通過左視圖的視差找到右視圖中對應(yīng)的匹配點(diǎn),并判斷兩點(diǎn)視差是否相等,若不相等,則左視差圖中的對應(yīng)點(diǎn)被標(biāo)記為遮擋。然后,遮擋像素被位于同一掃描線上的最近的未遮擋像素的最小視差值代替。這種遮擋填充在視差圖中可能會產(chǎn)生條紋狀偽影,為了消除這些偽影并保留邊緣信息,采用了以雙邊濾波為權(quán)重的加權(quán)中值濾波器。雙邊濾波器權(quán)重表示為: (12) 當(dāng)選取窗口Ri大小為(2r+1)×(2r+1)時,其包含的像素個數(shù)為n,計算窗口Ri中一對序列{I(i),wi,j}的像素值和權(quán)重,然后依次對權(quán)重進(jìn)行排序,直到累計權(quán)重大于加權(quán)值的一半,此時,相應(yīng)的I(i)是局部窗口中心點(diǎn)的新像素值,表示為: i*=minl; s.t. (13) 式中i*為濾波后的視差值。 文中所提算法通過C++語言在Visual Studio 2017編譯環(huán)境下結(jié)合OpenCV4.2庫實(shí)現(xiàn)。所用計算機(jī)采用64位Windows 10操作系統(tǒng),Intel core i7處理器,8 G運(yùn)行內(nèi)存。 如1.1節(jié)所述,式(4)匹配代價計算函數(shù)的系數(shù)選擇會影響匹配誤差,實(shí)驗(yàn)選取參數(shù)ζ的步長為0.01來改變ζ的大小,并選取匹配誤差最小的ζ作為最優(yōu)值,如圖5所示為不同ζ取值下的匹配誤差。從圖中可以看出,ζ的最優(yōu)取值應(yīng)為0.03,其他實(shí)驗(yàn)參數(shù)取值情況為:α=0.8,β=0.17,τc=7/255,σs=9,σc=0.1,ki=20。 圖5 不同ζ取值下的匹配誤差 為驗(yàn)證所提ASMSI算法在非遮擋及弱紋理、無紋理區(qū)域的匹配效果,對比了本文算法及塊匹配(Block Matching,BM)、AD-Census(absolute differences-census)、半全局立體匹配(Semiglobal Matching,SGM)、大尺度高效匹配(Efficient Large Scale stereo matching,ELAS)4種主流立體匹配算法在Middlebury數(shù)據(jù)集的測試圖片下生成視差圖的效果及圖中非遮擋區(qū)域、深度不連續(xù)區(qū)域及全部區(qū)域的匹配誤差,在此基礎(chǔ)上進(jìn)一步對比了各算法的運(yùn)行時間。 圖6中第1行為5種算法在測試圖片“Cloth3”下的視差圖結(jié)果,第2行~第6行分別對應(yīng)測試圖片“Cones”、“Reindeer”、“Wood2”、“Teddy”與“Barn2”下的視差圖表現(xiàn)。表1~表3分別列出了本文所提算法與4種對比測試算法在圖像中不同區(qū)域誤匹配率的比較結(jié)果,其中每列的最小值以粗體顯示。 表1 非遮擋區(qū)域下的誤匹配像素百分比 % 圖6 立體匹配算法視差圖 在實(shí)驗(yàn)中,當(dāng)參考算法獲得的匹配結(jié)果與真實(shí)值(ground truth)相差超過一個像素時,將其標(biāo)記為誤匹配。其中表1數(shù)據(jù)為非遮擋區(qū)域中的像素誤匹配率,表2數(shù)據(jù)為深度不連續(xù)區(qū)域中的像素誤匹配率,表3數(shù)據(jù)為總誤匹配率,平均匹配誤差欄表示算法的整體準(zhǔn)確性和廣泛適用性。 表2 深度不連續(xù)區(qū)域下的誤匹配像素百分比 % 表3 全部區(qū)域下的誤匹配像素百分比 % 從表1中數(shù)據(jù)可以看出,本文所提ASMSI算法在解決弱紋理圖像的非遮擋區(qū)域匹配問題時效果優(yōu)秀,在全部6組數(shù)據(jù)集中均得到了最低的誤匹配率,與其他匹配算法相比有著較大幅度的領(lǐng)先。同時,如表2所示,對于視差不連續(xù)區(qū)域的匹配誤差,所提方法在“Barn2”和“Wood2”上得到了遠(yuǎn)超其他算法的優(yōu)異成果。表3數(shù)據(jù)表明:相較于其他算法,本文算法將全部區(qū)域的平均誤匹配率降低了5.02%。 在生成視差圖效果方面,本文算法引入了圖像的梯度信息,將圖像的灰度值差、梯度幅值和相角線性結(jié)合來控制算法對噪聲的敏感性,且融合了圖像的多尺度信息,所以生成的視差圖更為清晰。如圖7a所示,在對比測試圖片“Cones”中錐桶的邊緣輪廓與竹網(wǎng)細(xì)節(jié)可發(fā)現(xiàn),所提ASMSI算法獲得的邊緣視差完整、清晰。如圖7b所示,在“Reindeer”中,僅本文算法還原出了圖像中窗簾與鹿角的輪廓信息。這是因?yàn)榇鷥r匹配函數(shù)的各向異性促進(jìn)了聯(lián)合區(qū)域的感知能力。如圖7c所示,從“Wood”視差圖對比可以看出,本文提出的算法在弱紋理中的精度較高,圖像背景沒有白噪聲,與傳統(tǒng)的AD-Census算法相比,本文算法在圖像的邊緣和不連續(xù)性方面具有更好的效果。另外,算法在“Cloth3”和“Reindeer”圖像中的誤差較高,生成的視差圖中出現(xiàn)了誤匹配,如圖7d所示,這是由于測試圖像對的亮度差異較大且存在大面積的遮擋區(qū)域所造成的,ASMSI算法主要解決弱紋理區(qū)域的匹配精度問題,并未針對遮擋區(qū)域進(jìn)行優(yōu)化,所以在處理存在大面積遮擋區(qū)域及亮度差異較大圖像時會出現(xiàn)誤匹配,但由視差圖對比可以看出,本文算法在生成包含該區(qū)域視差時誤差依舊處于較低水平。最重要的,本文所提算法在全部測試圖像的平均匹配率均取得了最低值??傮w而言,ASMSI算法能夠有效提高弱紋理區(qū)域的匹配精度,在圖像邊緣也有較好的匹配效果。 圖7 視差圖細(xì)節(jié)對比 如表4所示為各匹配算法運(yùn)行時間結(jié)果,從表中可以看出BM算法擁有最快的運(yùn)行效率,但其生成的視差圖往往伴隨著大量的噪聲與誤匹配,因此只適用于初始視差估計,并不能應(yīng)用至精確視差求解過程中。在其他4種匹配算法的運(yùn)行時間對比中,本文所提ASMSI算法在全部6組測試中用時最短,可以證明本文算法能夠在保證匹配準(zhǔn)確性的同時擁有較高的效率。 表4 算法運(yùn)行時間對比 s 本文提出融合多尺度信息的各項(xiàng)異性立體匹配,算法引入梯度和相角信息構(gòu)造各向異性匹配代價函數(shù),采用融合多尺度信息的十字交叉域匹配代價聚合獲得最終的匹配代價值,進(jìn)一步經(jīng)WTA策略生成初始視差圖,在此基礎(chǔ)上進(jìn)行左右一致性檢測化及以雙邊濾波為權(quán)重的加權(quán)中值濾波得到精修后的視差圖。實(shí)驗(yàn)結(jié)果表明,ASMSI算法可以有效提高弱紋理區(qū)域的匹配精度,在圖像邊緣也有較好的匹配效果。但當(dāng)圖像對之間亮度差異較大且存在大面積遮擋時,算法的性能會受到影響,后續(xù)工作將進(jìn)一步研究并解決該問題。1.3 視差精修與后處理
2 實(shí)驗(yàn)結(jié)果及分析
3 結(jié)束語