哈爾濱工程大學 信息與通信工程學院,黑龍江 哈爾濱 150001
立體匹配是通過尋找同一場景在不同視角下的2 幅或多副圖像的像素點,逐像素點獲取像素點間的二維視差,從而恢復場景深度。匹配的過程,是攝影測量和計算機視覺領域的重要研究課題,在機器人導航、無人駕駛、虛擬現實和三維重建等領域有著廣泛的應用[1]。Scharstein 等[2]對典型的立體匹配算法進行了研究和總結,形成了立體匹配算法的理論框架,根據優化方法的不同,將現有的立體匹配算法分為全局算法和局部算法這2 類。全局立體匹配算法通過構建全局能量函數,進行最小化來求取視差值,該算法精度高但是計算復雜,常見的全局算法有置信度傳播匹配算法(belief propagation,BP)[3]、圖割算法(graph cut,GC)[4]和動態規劃算法(dynamic programming,DP)[5]等。局部算法計算局部窗口像素的最優值,通過聚合代價進行誤差值計算,具有復雜度低、效率高的特點,在實際過程中易于實現。
常見的局部立體匹配方法,主要包括自適應支持窗口法(variable support window,VSW)和自適應支持權重法(adaptive support weight,ASW)。基于VSW 的方法通過圖像特征來尋找最佳的支持窗口。Zhang 等[6]提出了一種局域十字交叉的自適應窗口,利用相鄰像素的顏色差異和空間距離的關系,在水平和垂直方向上進行像素擴展,形成一個十字交叉區域。Mei 等[7]在此基礎上提出了雙距離閾值和雙色彩閾值準則的方法來構建聚合區域,提高了匹配精度。基于ASW 的方法是通過利用對固定窗口內的像素分配不同的權重來進行代價聚合。He[8]提出引導濾波的概念,Hosni等[9]將其作為代價聚合方法,引導濾波器具有計算復雜度和窗口大小無關的優點,因此在實時系統中得到廣泛應用。
在實際應用過程中,邊界區域部分屬于容易出現深度值不連續的特殊區域,此時,所構建的區域延伸方向容易在不同深度值區域進行延伸,導致視差值不連續現象。對此,本文提出了一種基于邊緣約束的自適應引導濾波的立體匹配算法解決該問題。在代價聚合過程中,將自適應區域和引導濾波算法相結合,但此時的引導濾波窗口不是固定大小的窗口,會導致邊界點的交叉區域過度延伸,對此,引入邊緣約束條件,使得邊界點的交叉區域包含更多的有效像素點,從而提高邊界區域的匹配精度,使得視差圖能夠更好地保持邊界特征。
局部匹配代價計算可以分為4 步:1)匹配代價計算;2)代價聚合;3)視差計算;4)視差精細化。圖1 為基于邊緣約束的自適應引導濾波立體匹配算法流程。

圖1 基于邊緣約束的自適應引導濾波立體匹配算法流程
常見的局部代價計算方法有絕對誤差和(sum of absolute differences,SAD)、誤差平法和算法(sum of squared differences,SSD)、歸一化積相關算法(normalization cross-correlation,NCC)和自適應窗口等。代價聚合是局部立體匹配算法過程中最重要的一步,利用支持窗口內的初始匹配代價進行求和或者取平均值來提高匹配可靠性,最終,采用勝者為王策略取代價最低值作為該點視差值。但左右視圖會由于成像視角和光照等因素影響,左右圖像中均會出現無法匹配區域,在左右視差圖中也會存在同一位置其視差值較大的位置,這就需要對視差圖進行精細化后處理,判斷尋找錯誤視差點,然后進行重新計算,視差圖中也存在空白區域,需要進行填充操作。
匹配代價是衡量左右2 幅圖像視差相似性的指標,通過構建一個大小為H×W×D的三維矩陣,其中H、W和D分別表示圖像的高、寬和視差搜索范圍[10]。基于梯度變化的代價函數可以更好地表達視差特異性信息,本文采用常用的顏色強度和梯度信息相結合的代價計算方法,視差為d時點i的代價表示為

式中:Il(i)和Ir(id)分別表示左圖像素i的值和視差為d時該像素在右圖對應像素的值;?xIl(p)和?xIr(p?d)分別表示沿x軸方向的左圖像素i的梯度值和視差為d時該像素在右圖對應像素的梯度值;為了減少外在點對圖像匹配的影響,采用截斷值的計算方式,將灰度值和梯度值差異較大的值進行剔除。T1和T2分別表示顏色灰度和梯度值的截斷值;α表示衡量灰度值和梯度值的影響因子。
2.2.1 自適應區域構建
聚合窗口算法的前提條件是假設支持窗口內部的像素點具有同時視差值。基于像素點建立十字交叉的窗口進行窗口內像素聚合。核心思想是利用待匹配點的顏色信息和空間信息進行擴散約束,以此來構建符合每個像素點周圍的交叉區域[11]。該算法的關鍵步驟是構建參考圖像與目標圖像中待匹配點的十字交叉結構,通過一定的判斷準則分別計算得到每個待匹配像素點在水平和垂直方向上的臂長。

圖2 十字交叉區域構建

式中:τ表示像素點顏色差值閾值;Ii表示圖像像素點的顏色值;L表示在該點的臂長;r?為最后在該點在某一方向上的臂長。

2.2.2 自適應引導圖濾波
引導圖濾波是常用的代價聚合計算方法,引導圖濾波由于是基于盒濾波的方式實現的,整個算法的實現原理基于線性的方式,運算時間復雜度跟濾波器的大小無關,只與圖像中的像素數目有關,其代價聚合為

式中:q為 像素點p的支持窗口中的某一像素點;Wp,q表示q對p的支持權重,其計算結果受引導圖像的影響。引導濾波器的核心思想是濾波器運算后的輸出結果Qi和輸入的引導圖像Ii滿足局部線性模型,其模型結構為[13]
Qi=akIi+bk,?i∈wk
式中bk是一個值。
通過構建損失函數來計算ak、bk,利用嶺回歸的計算方法進行求解:

以灰度圖像的計算為例,q對p的支持權重為

式中:μk與σk表示以像素點k為中心的窗口內的均值和均方差;|w|表示固定大小為r×r的支持窗口w內的像素個數;ε是一個正則化參數。
由于傳統的引導圖濾波算法是基于固定窗口進行代價聚合的,匹配窗口的大小會對最終的匹配精度造成直接影響。若選用窗口過小,則會在弱紋理區域有較大的誤差;若選用窗口較大,則在深度不連續區域誤差較大,整個過程中沒有充分考慮到窗口內部像素的差異性[14]。可以將自適應區域算法和引導濾波相結合,構建可變窗口的自適應引導濾波,充分利用各像素點的位置差異性。通過更改內核大小來對權重內核進行計算,核窗口將根據像素點的自適應區域進行調整,則式(3)的支持權重的計算方式可以變換為

2.2.3 基于邊緣約束的自適應引導濾波
基于自適應區域的代價聚合方法依賴像素點之間的差異構建支持窗口,然而,在圖像中,邊界區域部分屬于容易出現深度值不連續的特殊區域[15]。當引入了自適應區域引導濾波時,在邊界上的邊界點依據顏色閾值延伸臂長進行擴展,此時邊界區域會沿著4 個方向進行延伸,會導致部分區域的邊界在進行濾波過程中分布不均衡,對于邊緣區域的濾波操作會造成不同程度的影響,會產生邊界不平滑現象,導致后續代價計算的匹配精度下降。因此,考慮在邊緣點處添加約束條件,使得邊緣處的窗口保持較小的范圍,減少過多無關像素點的干擾。利用Canny[16]算法對圖像處理獲得其邊緣圖像,I表示為原圖像的邊緣圖像,I(p)=1表示該點為邊緣點,其計算判決為

式中:τ(lpq)表示2 點之間的顏色閾值;Ds(p,q)表示2 點間的空間距離;Lmax為最大臂長;Dc(p,q)為2 點之間的顏色差值。
通過線性閾值進行操作,離像素點越近的位置,閾值越大;當距離像素點越遠的時候,閾值變得越小。同時,在邊緣點處,將該點的延伸臂長限制到一定的范圍內,保證自適應區域不會包含太多的無關區域。
圖3 中是采用不同判斷依據處理后得到的自適應區域,從圖3(a)中看出,經過線性閾值的操作,該閾值變化受空間距離的影響,但交叉區域依然會包含過多無關像素。如圖3(b)所示,經過邊緣抑制,其構建的支持窗口區域明顯縮小,原有的臂長延伸方向不變,但是會減小無關區域的大小,使得該區域包含了更多的有效像素,并且再也不會影響非邊界區域的臂長延伸。

圖3 不同判決條件所構成的交叉區域
圖4 是進行自適應引導濾波代價聚合視差圖,在圖4(a)中可以看出,只考慮將顏色閾值作為判斷依據,由于其在邊界區域的自適應區域范圍過大,導致在代價聚合計算后的視差圖中存在邊緣過于平滑的現象。如圖4(b)中的橢圓區域,將邊緣約束引入之后,避免了邊緣點處自適應區域的過度延伸,使得自適應區域能夠包含更多的有效像素,在代價聚合過程中視差圖中圖像的邊界區域能夠更好地保持著原圖的細節特征。

圖4 兩種引導濾波算法處理后的視差

式中D表示視差搜索范圍,即經過代價聚合的代價計算圖選取代價最小的值作為最終的視差圖。常用的后處理方法有:左右一致性檢測,即經過代價聚合后可以分別獲得參考圖像和目標圖像的視差圖,通過判斷左圖某一點的視差值和右圖某一點的視差值的差值進行判斷,其判斷標準為
|dL(i)?dR[i?dL(i)]|<δ0
式中:dL(i)表示i點在左視差圖的視差值;dR[i?dL(i)]代表點i右視差圖中與之對應的點;δ0表示2 點的閾值,一般設置為1。若不滿足該條件,則認為該點為異常點,對該點利用加權中值濾波進行后處理計算填補。
本文實驗在Matlab2016a 平臺下進行編程實現。為驗證代價計算和代價聚合的算法有效性,采用Middlebury[17]立體匹配評估測試平臺提供的數據集進行實驗。按照統一評價標準,設誤差閾值參數為1。實驗中所涉及的參數如表1 所示。

表1 實驗參數設置
為驗證邊緣約束的自適應代價聚合算法的有效性,將固定窗口大小的引導濾波器立體匹配算法和改進后的代價聚合對Middlebury 測試平臺的標準圖像進行實驗。圖5 為Middleburry2006 數據集的5 組圖像Baby1、Baby2、Baby3、Flowerpots和Bowling2 的實驗結果。

圖5 引導濾波算法與本文算法對比
從圖5 中可以看出,相較于固定尺度支持窗口的引導濾波器代價聚合算法,改進算法在圖像邊界紋理區域的誤匹配現象明顯得到改善,匹配精度有所提升。這是由于在自適應引導濾波的過程中,考慮到邊界像素點的特殊性,添加了閾值因子,使得原邊界點按照原有的延伸方向進行伸展的過程中,包含更多的有效區域,減小了無關區域的干擾,有效減少了邊界的不連續區域的產生,提高了算法的匹配精度。表2 為2 種聚合算法的誤匹配率。

表2 不同代價聚合算法誤匹配率 %
為驗證本文的算法有效性能,將本文算法在Middlebury 提供的4 組標準測試圖上進行實驗,并與其它局部立體算法進行對比。其中Tsukuba、Venus、Teddy 和Cones 的視差搜索范圍分別為[0,15]、[0,19]、[0,59]、[0,59],縮放倍數為[16,8,4,4]。本文算法分別與多種經典立體匹配算法進行對比分析,所采用的算法分別為LCVB-DEM[18]、Cost-Filter[9]、SMPF[19]和AdaptAggrDP[20],其中CostFilter和AdaptAggrDP 均為局部立體匹配算法,比較各個算法在不同區域的誤匹配率,其中誤匹配視差結果如圖6~11 所示,紅色部分表示誤匹配的視差值。

圖6 Middlebury 數據集圖像

圖7 CostFilter 算法誤匹配視差

圖8 SMPF 算法誤匹配視差

圖9 LCVB-DEM 算法誤匹配視差

圖10 AdaptAggrDP 算法誤匹配視差

圖11 本文算法誤匹配視差
在以上算法處理的結果圖6~11 中,紅色部分均表示誤匹配區域。由結果可以明顯看出相較于AdaptAggrDP、SMPF 算法,本文算法在各個圖像中的紅色區域明顯減小,并且本文算法產生的深度圖在邊緣細節方面表現較好。在Tsukuba 圖像中,本文算法在臺燈和人物雕塑部位有較少的誤匹配點出現,而其他算法在該區域部分的誤匹配點較為連續和稠密。在Vensus 圖像中,LCVBDEM 算法處理后的圖像,在邊緣處的紅色誤匹配點明顯較多,而本文所提出的算法,在深度不連續的邊緣處的誤匹配點明顯較少,這是由于充分利用自適應引導濾波的優勢,充分利用各個像素點的交叉區域的特異性,并限制了邊緣處的過度延伸,使得邊緣處的細節得到更好的還原。在Cones 圖像中,本文算法在圖像中的左區域誤匹配點相較于其他算法有明顯減少,其中,在深度不連續區域依然保持良好。進一步對比各算法在不同區域的誤匹配率,來比較各個算法之間的差異性。表3 為各個立體匹配算法的誤匹配率。

表3 立體匹配算法誤匹配率比較 %
表中:N-occ 表示非遮擋區域的誤匹配率;Disc表示不連續區域的誤匹配率;All表示整張圖像的誤匹配率。與局部立體匹配AdaptAggrDP 算法相比,本文算法誤匹配率有大幅度降低,尤其是在Cones 圖像上誤匹配率大幅度降低。本文算法與局部立體匹配CostFilter 算法均采用引導圖濾波的代價聚合方式,可以看出在引入邊緣自適應引導濾波后,在以上數據集圖像上的非連續區域,本文算法誤匹配率均低于CostFilter 算法,表明自適應區域可以有效避免代價聚合過程中的無關區域濾波,減小誤匹配率,邊界保護性能有所提高。本文所提出的算法,在該數據集上的平均誤匹配率降低到5.22%。
本文以局部立體匹配算法為基礎,通過將自適應支持窗口算法和自適應權重算法相結合,并引入了邊緣約束思想,提出了一種基于自適應邊緣約束的自適應引導濾波的局部立體匹配算法。
1)與固定窗口大小的引導濾波算法相比,本文的自適應引導濾波算法可以根據各個像素點所構建的交叉區域進行濾波操作,充分利用各個像素點的差異性,并且考慮邊緣點的特殊部分,使得本文算法在最終視差圖中能夠較好地保留邊界結果。
2)自適應引導濾波由于在代價聚合過程中需要計算每個像素點的交叉區域,所以在算法的整體運算時間上會有所增加,要使立體匹配算法能夠真正滿足實時性的要求,可以考慮使用并行運算實現加速。