黃 彬,胡立坤,張 宇
(廣西大學 電氣工程學院,南寧 530004)
對圖像中物體場景深度信息的獲取是機器視覺領域中的熱點問題,而能否高效快速地獲取精確度高的深度信息,與所使用的立體匹配算法關系密切[1]。立體匹配算法通過尋找雙目或多目圖像對中的對應點并計算其間的二維視差,計算得到所獲取目標點的三維深度信息。
文獻[2]對立體匹配算法進行歸納總結,將立體匹配過程分為匹配代價計算、代價聚合、視差計算和視差優化4 個步驟。目前常用的立體匹配算法可分為全局算法和局部算法兩類。全局算法采用全局優化理論計算視差,并通過全局能量函數得到最優視差值。典型的全局算法有動態規劃算法[3]、置信度傳播算法[4]和圖割法[5]等。全局匹配算法雖然匹配精度高,但時間復雜度也較高。局部算法通過構建局部支持窗口,對窗口內像素做視差計算并進行代價聚合,求出視差最優值。典型的局部匹配算法有絕對誤差和(Sum of Absolute Difference,SAD)算法、誤差平方和算法和歸一化互相關算法等。局部立體匹配算法具有算法復雜度和硬件要求低、實時性高且易于實現的優點,適合于工業和工程應用。
局部立體匹配算法通過測量圖像像素的灰度來檢測像素間的相似度,當圖像受到外部光照變化影響出現輻射度失真時,會嚴重影響圖像匹配的配準精度,大幅增加圖像誤匹配率。為提高SAD 算法的匹配效率,文獻[6]將邊緣信息融入傳統SAD 算法,改善了算法在邊緣保持方面的性能。文獻[7]將RANK 非參數變換引入匹配代價計算,提出Census匹配算法,以圖像像素灰度值的相互關系代替圖像像素的灰度值。該算法顯著提高了對光照和噪聲的抗干擾能力并且具有復雜度低的優點。文獻[8]提出將SAD 算法與Census 算法相結合的AD-Census算法。該算法同時利用了SAD 算法和Census 算法的優點,匹配準確度較高。
文獻[9]指出傳統Census 匹配算法過度依賴中心像素,當中心像素受到干擾時會極大地影響匹配的準確性。針對這一不足,需要對匹配代價的計算過程進行優化,并對計算出的初始匹配代價進行代價聚合。傳統的代價聚合方法采用盒子濾波和高斯濾波等方法,此類濾波器實現難度低,但對于圖像邊緣保持效果很差。文獻[10]使用雙邊濾波進行代價聚合,雖然有效地保持了圖像邊沿,但同時也提高了時間復雜度。文獻[11]將引導濾波引入到代價聚合環節,在保留圖像邊緣特性的同時保證了較高的時間效率。文獻[12]提出基于樹形結構的代價聚合方法,但仍未能解決時間復雜度高的問題。文獻[13]構建一種跨尺度代價聚合框架,考慮并利用不同分辨率下的圖像信息,極大地改善了匹配效果。以上聚合方法都將初始匹配代價代入到代價聚合階段,如果初始匹配代價受噪聲影響較大,則會對聚合代價的結果產生較大影響。因此,必須提升初始匹配代價計算算法的穩定性。
本文針對傳統Census 算法[7]存在的不足,提出一種基于自適應權值與多尺度融合的改進Census 立體匹配算法,以增強算法的抗干擾性,改善對低紋理區域的匹配效果,提高匹配準確率。
本文算法包含匹配代價計算、代價聚合、視差計算和視差優化4 個步驟。在代價計算階段,參考格塔式原理引入自適應權重與閾值判斷,增強算法對于干擾的魯棒性。在代價聚合階段,采用引導濾波并引入多尺度空間對各尺度空間下的圖像計算匹配聚合代價,同時采用正則化變換加強尺度間信息一致性,從而提高算法的穩定性,改善其在弱紋理區域的表現。最后通過視差計算和視差優化得到最終的視差圖。
傳統Census 匹配算法的基本原理是通過構建一個矩形支持窗口遍歷待匹配圖像,通常選取支持窗口中心像素作為參考像素,將支持窗口內其他鄰域像素與參考像素進行灰度值對比,采用0 或1 表示兩個像素灰度值的大小關系。該算法通過將圖像灰度值轉換為由0 和1 組成的二進制比特串來表示鄰域像素和中心參考像素的相對大小關系,如圖1所示。

圖1 Census 變換示意圖Fig.1 Schematic diagram of Census transform
Census 變換過程可表示如下:

其中,I(p)、I(q)為支持窗口內p、q的灰度值。通過上述轉換關系,由支持窗口中的所有鄰域像素生成的二進制比特串可表示為:

其中,Np表示像素點p的鄰域,?為按位連接,由此形成支持窗口內的二進制比特串。在得到比特串后,通過求參考圖和待匹配圖中支持窗口的漢明距離,即兩個比特串中間不相同的位數個數來比較像素點的相似程度,計算公式如下:

其中,Ccensus(p,d)表示點p與距離點p視差為d的漢明距離,ccen(p) 為圖1 左圖點p的Census 變換碼,ccen(pd)表示圖1 右圖對應左圖點p的視差為d的像素點的Census 變換碼,dmin和dmax為視差檢索的閾值范圍。
與SAD 算法相比,Census 算法在弱紋理區域具有更高的準確性,在邊緣保持上表現更好。如圖2所示,以Middlebury 數據集的Teddy 圖像對為例,SAD 算法容易在大面積的弱紋理區域形成誤匹配,而Census 算法則能基本保持弱紋理區域的匹配特征,并且在細節保持上優于SAD 算法。

圖2 SAD 算法與Census 算法的弱紋理區域匹配效果Fig.2 Matching effects of SAD algortihm and Census algorithm in weak texture area
由于傳統Census 算法過度依賴于中心像素的灰度值,因此當中心像素灰度值受到噪聲干擾時,圖像的匹配效果會受到嚴重影響。文獻[14-15]提出采用匹配窗口的像素均值作為參考像素的灰度值,一定程度上提高了中心像素的抗干擾性,但對鄰域像素信息的利用依然有限。針對以上問題,本文提出一種改進的Census 匹配算法來計算初始匹配代價,具體計算過程為:參考文獻[8]中使用的格式塔接近原理理論,通過支持窗口遍歷圖像中每個像素,以支持窗口內鄰域像素的加權像素和構成改進Census 算法中心像素的參考值,權重由距離相似度決定,在考慮距離相似度時,采取正態分布作為距離相似度的分配策略,如圖3 所示,距離窗口中心越遠則權值分配越小,從而能夠更好地利用鄰域像素的特征對中心像素點進行約束。

圖3 距離相似度權重分布Fig.3 Weight distribution of distance similarity
本文算法的具體計算過程如下:

其中,Iweight表示通過空間相似度權重計算得出的參考像素值,Np表示以p為中心的支持窗口,Wpq表示以p點為中心對q點分配的權值,Iq表示q點的灰度值,Δx和Δy分別表示p、q兩點水平方向和垂直方向的相對距離,σ2為方差,表示空間相似度對權重影響的控制系數,一般取σ=1.5。
同時設定一個閾值,將求出的參考像素值與原中心像素值進行比較,確定最終的中心點像素值。閾值應設定較小,這樣可避免當中心像素突變時因閾值設定過大而判定中心像素沒有突變,影響匹配效果。計算出加權像素和值后,需要與原中心像素進行對比,中心像素判斷公式如下:

其中,I(x,y)為滑動窗口中心像素,Iweight為通過距離相似度計算得出的中心像素值,Tref為判斷閾值,通過對多幅圖像相鄰點的分析及在不同閾值下算法的匹配表現得出閾值Tref的合適區間為[15,25],本文選擇閾值為18。
對本文改進算法與Census 算法計算得到Cones 視差圖進行比較,如圖4 所示。可以看出,Census 算法因為易受到干擾,所以在匹配時容易出現很多噪點,嚴重地影響了匹配的效果。而本文改進算法加入了鄰域像素的補充約束信息,并且增加了閾值判斷中心像素是否突變,大幅降低了由于中心參考像素而被干擾的可能性,初始視差圖中的噪點明顯減少。

圖4 Census 算法與本文算法的視差圖Fig.4 Disparity maps of Census algorithm and the proposed algorithm
計算得到初始匹配代價后,需要將鄰域像素的匹配代價信息進行聚合,增加像素間匹配代價的關聯性,彌補僅利用單像素視差時因包含信息過低導致區分度不足的缺陷,提高匹配準確率。然而傳統方法中的代價聚合都是在單一尺度下進行計算,往往不能提取出圖片的深層信息,使得匹配效果在紋理較少或無紋理的區域表現較差。為提高算法的匹配精度,本文改進算法在代價聚合階段模擬人眼由遠及近觀察物體的方式融入空間尺度理論中的高斯金字塔結構,通過連續亞采樣得到高斯金字塔,在每層尺度空間中分別計算匹配聚合代價,并加入正則變換加強尺度間聯系性,最后將多尺度空間下的代價聚合值進行綜合得到最終匹配代價。
對圖像進行高斯下采樣,可以得到多尺度空間下的圖像,各尺度空間下圖像的代價聚合公式為:


其中,ak、bk為窗口內的線性函數的系數。因為?q=a?I,所以這個線性關系能夠幫助輸出圖像q的邊緣與引導圖像I的邊緣保持一致。引導圖濾波核函數為:

其中,i、j為輸入圖像I的像素索引,μk和分別為I在wk內的均值和方差,w為窗口內像素個數,ε為控制參數,用于控制濾波效果的強弱,取值范圍為(0,0.01]。當ε=0 時,濾波器將不起任何作用,圖像按原圖輸出;ε越大,對圖像平滑效果越明顯;ε越小,邊緣保持效果更好[11]。將引導濾波核函數賦予于每個尺度下的代價聚合過程中。
在完成多尺度空間下代價聚合后,通過贏者通吃(Winner-Take-All,WTA)法篩選出聚合代價最小的視差值,具體計算過程如下:

其中,Sd={dmin,dmin+1,…,dmax}為可能的所有視差值,C(p,d)為視差值為d時的匹配代價值。
得到初始視差圖后,雙目攝像中必然互相存在視覺盲區,因此,需要對初始視差圖中在遮擋區域和深度不連續區域出現的一些誤匹配點進行篩選剔除,故需要進行視差優化,即采用誤匹配點檢測、視差填充和加權重值濾波的方法來建立更完整的視差圖。
1)采用左右一致性檢測的方法來檢測誤匹配視差點,通過比較左圖和右圖匹配對視差點的視差值檢測出異常點,計算過程如下:

其中,dl(p)為左匹配圖中點p的視差值,dr{p-[dl(p),0]}為右匹配圖中與點p對應的視差值,δ0為判定閾值,如果左右對應點視差大于1 則為異常點。
2)對錯誤匹配點選擇周圍灰度值最接近的點進行填充,對于遮擋點選擇周圍最小視差值進行填充。
3)采用3×3 的滑動窗口對視差圖進行加權中值濾波平滑處理,得到最終的視差圖。
在VS2013 軟件平臺上利用C++實現本文算法,采用學術界公認的Middlebury 立體匹配算法評測平臺提供的標準立體圖像對Tsukuba、Venus、Teddy、Cones 對算法進行評測,這4 組圖像的視差搜索范圍依次為[0,15]、[0,19]、[0,59]、[0,59],視差縮放參數nscale分別為16、8、4、4。實驗環境為Windows 10 x64系統,Intel Core i5-3230M,主頻為2.60 GHz。
由于到代價計算窗口會影響匹配的精確度,過大的窗口會包含更多的非必要像素點,過小的窗口會使得代價計算時對鄰域像素考慮不足,因此本文在進行多次試驗的基礎上,考慮時間因素以及平均正確率,采用9×9 窗口作為代價計算窗口。實驗中算法參數設置為:W=9,Tref=18,S=4,λ=0.3,ε=1×10-3。
通過計算Middlebury 標準數據集中所有區域和非遮擋區域的誤匹配率來評估算法性能。誤匹配率的計算公式如下:

其中,d為算法生成的視差圖中的像素視差值,dT為真實視差圖中像素視差值,N代表圖像中所有的像素個數,δd為誤差閾值,此處設為1,表示當算法匹配結果中的像素視差值與真實視差值相差為1 個像素以上,即認為該像素點為誤匹配點。
2.1.1 計算代價驗證
匹配代價驗證階段的實驗結果如圖5 所示,從左到右依次為Middlebury 平臺的Tsukuba、Venus、Teddy、Cones 圖像,從上到下依次為原始圖像、真實視差圖、SAD 算法、Census 算法和本文改進算法的視差圖。可以看出:SAD 算法能夠基本還原圖像的大致輪廓,但對于弱紋理區域容易出現大面積誤匹配;傳統Census 算法能夠基本保持圖像的弱紋理區域,但中心像素易受干擾,魯棒性低;本文改進Census 算法則在弱紋理區域表現良好的同時,具有良好的抗干擾性。

圖5 不同算法的匹配結果Fig.5 Matching results of different algorithms
不同算法的誤匹配率對比如表1 所示。可以看出:相較于傳統Census 算法,本文改進Census 算法由于消除了大量噪點,具有更強的魯棒性,并且大幅提高了準確率;相較于傳統SAD 算法,其在弱紋理及邊緣區域具有更好的表現,并且平均準確率也有所提升。

表1 不同算法的平均誤匹配率Table 1 Averege error match rates of different algorithms %
不同算法的匹配時間對比如圖6 所示。可以看出,本文改進算法在時間花費上與SAD 算法相當,較傳統Census 算法略有增加,這是因為加入了自適應權重計算與閾值判斷步驟,但是在匹配準確率和抗干擾性上,本文改進算法的性能顯著提升。

圖6 不同算法的匹配時間Fig.6 Matching times of different algorithms
2.1.2 抗干擾性驗證
為對算法進行抗噪聲干擾性驗證,對Middlebury標準圖加入5% 的椒鹽噪聲,并使用SAD 算法、Census 算法和本文改進算法進行圖像配準。圖7 為Cones 圖像對的匹配效果對比圖,詳細數據對比見表2。可以看出:在加入椒鹽噪聲后,Cones 原圖出現覆蓋全圖的黑白相間的噪點;Census 算法嚴重受到噪聲干擾,導致匹配效果下降;SAD 算法表現出一定的抗干擾性,但仍然表現出匹配精度差的缺點;本文改進算法在保持匹配精度的情況下,表現出較強的抗干擾性,與未受干擾時精度相差不大。

圖7 5%椒鹽噪聲下不同算法的匹配結果Fig.7 Matching effects of different algorithms under 5% pepper and salt noise

表2 5%椒鹽噪聲下不同算法的誤匹配率Table 2 Error match rates of different algorithms under 5% pepper and salt noise %
為驗證在受到光照干擾時算法的匹配效果,對Middlebury 標準圖進行光照補償后進行匹配實驗,其中Tsukuba 匹配效果如圖8 所示。可以看出,在受到光照干擾時,SAD 算法已經完全失去了匹配的準確度,傳統Census 算法能基本還原場景深度信息,但準確率明顯下降,而本文改進Census 算法則表現出較強的抗干擾性,與未受光照干擾時匹配準確率差異微小。表3 為不同算法在光照干擾條件下對Middlebury 中4 對測試圖的平均誤匹配率對比。

圖8 光照干擾條件下不同算法的匹配結果Fig.8 Matching results of different algorithms under illumination interference condition

表3 光照干擾條件下不同算法的平均誤匹配率Table 3 Average error match rates of different algorithms under illumination interference condition %
為驗證本文算法性能,選取LCDM-AdaptWgt[16]、RINCensus[17]、GC-occ[5]和RTCensus[18]算法與本文算法進行比較。
圖9 為算法所生成的視差圖比較,對比圖9(a)、圖9(c)、圖9(d)與圖9(e)中的第2 幅圖可以看出,在弱紋理區域,其他算法皆存在明顯的成塊誤匹配區域,而本文算法則基本沒有出現明顯的誤匹配,這說明本文提出的改進Census 匹配算法高效整合了鄰域像素的信息,在弱紋理區域具有更好的匹配性能,并且因為采用多尺度融合策略,使其在匹配過程中能夠極大程度地利用弱紋理和其他細節信息,提高匹配的準確率。對比圖9(a)、圖9(b)、圖9(c)與圖9(e)中的第4 幅圖可以看出,本文算法在邊緣保持方面明顯優于其他算法,這說明改進后算法由于利用了鄰域像素信息且采用了引導濾波進行聚合具有更好的邊緣保持性能。各算法的誤匹配率對比如表4 所示,其中,No-occluded 表示在圖像中非遮擋區域的誤匹配,All 表示在所有區域中的誤匹配率。可以看出,本文算法在非遮擋區域和所有區域的平均誤匹配率均低于其他4 種經典算法,表現出更優異的性能。

圖9 Middlebury 數據集上的實驗結果Fig.9 Experimental results on Middlebury dataset

表4 Middlebury 數據集上非遮擋區域和所有區域的誤匹配率Table 4 Percentage of false match in all regions and no-occlusion region on Middlebury dataset %
本文利用格式塔接近原理對傳統Census 算法進行改進,提出基于自適應權值的多尺度Census 匹配優化算法。在代價計算階段,本文算法保持了傳統Census 算法在弱紋理區域表現優異的優點,彌補了其易受干擾的不足,并且時間效率變化微小。該算法在代價聚合階段采用邊緣保持性好、時間復雜度低的引導濾波作為核函數,引入多尺度聚合策略,能夠綜合利用圖像各個尺度下的細節信息。基于Middlebury 平臺標準測試集的實驗結果表明,本文算法在弱紋理區域及邊緣保持方面表現優異且抗干擾性較好,平均誤匹配率低于LCDM-AdaptWgt、RINCensus 等經典算法。下一步將結合人工智能算法,在匹配代價計算階段引入膨脹卷積,增加感受野,對誤匹配點進行更為精準的篩查。