陸 瑋,劉 翔,薛 冕
(上海工程技術大學 電子電氣工程學院,上海 201600)
立體匹配的目的是通過匹配雙目圖像中的對應像素點,得到左右相機圖片的視差圖。這不僅是雙目立體視覺技術的關鍵,也是目前三維重建領域的研究重點[1]。為了提高匹配精度,需要克服圖像中存在的弱紋理區域、遮擋區域以及邊緣深度不連續等諸多問題[2]。主流立體匹配算法框架分為以下4個步驟[3]:
(1)匹配代價計算。代價計算目的是獲得左右圖像間視差的灰度相似性,通常情況下,匹配代價越低則越相似;
(2)代價聚合。匹配代價聚合是使用聚合窗口與視差平面卷積。由初始匹配代價來構造能量函數,然后通過局部算法對窗口進行疊加處理,將能量函數優化為全局最小值,從而提高匹配代價聚合計算的可靠性;
(3)視差計算。目前主流的視差計算分為基于全局和半全局兩個方向[4]。基于全局的算法使用包含數據項與平滑項全局能量函數。數據項是像素的匹配代價值,平滑項則對視差值的波動進行了抑制,使之平滑,然后通過最小化全局能量函數,得到最優的視差圖。而半全局的算法(Semi-Global Matching,SGM)使用基于像素、互信息(Mutual Information,MI)作為匹配代價,然后通過能量函數進行代價聚合,并采用動態規劃來最小化能量函數以尋找最佳視差[5],局部立體匹配實時性較好,應用較為廣泛;
(4)視差優化。初始視差被提取之后精度比較低。對于一些精度要求較高的需求,可以在初始視差的基礎上,采用亞像素增強等方法進行細化求精。同時也可以通過中值濾波、左右一致交叉檢測算法等后處理過程,去除遮擋區域以及誤匹配點,修正和濾除計算后的視差值,從而獲得較高的精確度。
隨著深度學習方法向計算機視覺研究領域的引入,從2016年文獻[6]首次將卷積神經網絡(Convolutional Neural Network,CNN)技術應用到立體匹配算法之后,基于深度學習的方法逐漸展現出優勢。下面將分別對半全局匹配算法、AD-Census算法以及本文提出的基于超像素分割的孿生網絡方法進行介紹和對比。
半全局匹配算法是一種基于動態規劃方法改進的立體匹配算法[7]。該方法使用 8個方向均勻的一維路徑對圖像做動態規劃計算,然后再將各個方向的計算結果進行合并。立體匹配問題可以變成尋找最小能量問題,能量函數為
(1)


(2)
其中,r是單位方向向量。
半全局匹配算法雖然能夠獲得較為準確的視差圖,但在噪聲環境和視差圖紋理邊緣的準確度仍存在局限性。
Census變換是一種非參數化變換,用來表征圖像的局部結構特征[8]。其以一個矩形窗口遍歷圖像,然后比較窗口中鄰域像素與中心像素灰度值的大小。若灰度值小于中心像素的記為1;大于等于中心像素的記為0。將這些值按位連接成一個矢量作為中心像素的特征值,用漢明距離來表示相似度測量。
計算式如下
(3)
其中,Ccensus(p,d)是Census變換的匹配代價;CAD(p,d)是SAD(Sum of Absolute Differences)的匹配代價;λcensus與λAD是調節Census與SAD之間比重的參數。函數ρ(c,λ)用于控制每個變換結果的取值范圍為[0,1]。


圖1 半全局匹配算法基本流程Figure 1. SGM algorithm flow

圖2 動態十字交叉域Figure 2. Dynamic cross field
聚合代價計算式為式(4)。
(4)
相比于單獨使用基于SAD或Census變換的代價計算,基于AD-Census的代價計算可以產生更精確的匹配結果。Census變換在重復或相似的區域結構會產生錯誤匹配,而SAD對于大面積缺乏紋理特征的區域很難完成有效的匹配。結合兩者優點的AD-Census匹配算法可以減少其單獨使用所產生的錯誤匹配。改進之后的視差圖對比如圖3所示。

(a) (b)圖3 視差對比(a) SGM方法 (b) AD-Census方法Figure 3. Disparity comparation (a)SGM method (b)AD-Census method
本文使用結合超像素邊緣信息的Siamese孿生網絡視差預測方法[10]。該方法網絡左右兩個通道同時接收兩張圖片的輸入,通過多級的卷積、激活函數結構進行特征的提取、變換、融合,最后得到一個低分辨率、高通道數的圖像特征,完成全局信息融合與理解。然后,利用提取特征的描述算子來計算兩個圖片特征向量,通過Loss函數計算,從而判斷相似度。相似度計算函數由兩個特征向量構成的距離度量函數決定,計算式為式(5)。
(5)
最后匹配得到代價體積(Cost Volume)并獲得視差圖。整個算法流程如圖4所示。

圖4 超像素分割的孿生網絡立體匹配算法流程Figure 4. Super-pixel segmentation of the Siamese network stereo matching algorithm flow
本文使用Middlebury中的雙目圖像數據集作為訓練集。完整的圖像數據無法直接作為網絡的輸入,需裁剪為圖5的正負樣本像素塊。

圖5 訓練樣本 (a)正樣本像素塊 (b)負樣本像素塊Figure 5. Training sample (a) Positive sample pixel block (b) Negative sample pixel block

圖像樣本在裁剪后的范圍為[0,255],通過標準化將式(6)~式(8)處理到[-1,1]范圍內。
(6)
(7)
(8)
式中,xi是原始圖像X中各像素灰度值;S是標準差;X是經剪裁后的灰度矩陣;U是標準化后的灰度值矩陣。
針對局部立體匹配算法在光照不均勻、紋理缺乏等復雜環境下,容易造成物體邊緣的視差圖存在大量誤匹配點的問題,本文提出基于SLIC(Simple Linear Iterative Clustering)超像素分割[11]的立體匹配改進算法。該方法采用均值濾波預處理基準圖像,并使用SLIC算法進行超像素分割,把圖像分割成像素塊作為Siamese孿生卷積網絡的代價聚合的輸入。在代價聚合步驟中,根據基準圖像的超像素分割結果,動態地調整能量函數的平滑系數。
邊緣特征是計算機視覺等領域中經常使用的重要信息。相較于點特征,邊緣特征具有以下優點:(1)直線在遮擋的情況下不會受到很大影響;(2)在紋理匱乏的區域,特征點難以檢測,而邊緣線則相對比較容易;(3)直線之間存在幾何關系,可以作為約束條件來提高處理精度。
對于立體匹配得到的深度信息,利用顏色相似區域有相同的視差這一原理,可認為超像素體中的像素塊有相同的視差。SLIC簡單線性迭代聚類方法相對于其他超像素分割算法,具備較高的運算效率和可并行的特性,計算復雜度低,可應用于實時的立體匹配[12]。
SLIC算法流程如下:
(1)把圖像從RGB色彩空間轉換到CIE-Lab色彩空間,每個像素的(L,a,b)顏色值和(x,y)位置坐標組成5維向量V[L,a,b,x,y]。兩個像素的相似性可以通過向量距離來判斷,距離越大,相似性越小;
(2)聚類初始化中參數值k表示大小相等的超像素個數。在間隔S像素的規則網格上采樣,其中網格間隔為
(9)
(3)為了避免將超像素定位在邊緣上,同時盡可能地減少使用噪聲像素,將中心移動到與3×3鄰域中最低梯度位置相對應的種子位置;
(4)將聚類中心調整為窗口內像素的平均向量V[L,a,b,x,y],然后在2S×2S的預期空間范圍內,進行類似像素的搜索。相對于K-means聚類,該方法縮小了搜索范圍,降低了距離計算復雜度,兩個方法的像素搜索對比如圖7所示。
SLIC相較于其他算法的優點包括:(1)將具有相似亮度、顏色、紋理等特征的像素聚集成像素塊,得到良好的物體邊緣輪廓;(2)可以分割彩色圖和灰度圖;(3)參數量非常少,只需要設置一個預分割的聚類中心數量k;(4)加權距離度量組合顏色和空間接近度,生成超像素圖像的尺寸、緊湊性和輪廓都比較理想。SLIC超像素分割圖像結果如圖8所示。
基于同一超像素內物體表面的相鄰像素視差值變化較小,而不同超像素之間的空間連續性較差的特點[13]。本文對基準圖像使用 SLIC 算法進行超像素分割,獲得具有良好紋理邊緣的分割圖像。然后根據超像素分割結果,對代價值聚合方法進行改進,動態調整原來立體匹配能量函數的平滑系數。具體方法如下:
(1)對于同一超像素內,或者屬于不同超像素但相鄰像素色彩差值小于設定閾值的情況,令能量函數中的平滑系數P2保持不變;
(2)對屬于不同超像素并且相鄰像素色彩差值大于設定閾值的情況,把能量函數中的平滑系數P2減小為P1。改進之后的能量函數表達式如下
(10)
(11)
(12)
式中,Ip、Iq分別是相鄰像素p、q的RGB顏色值;segp、segq分別是相鄰像素p、q所在的區域;It為色彩差值閾值。
通過 SLIC 超像素分割方法的改進,可以有效減少圖像紋理邊緣處的視差誤匹配問題。
為了驗證本文算法的有效性和可行性,對該算法和原半全局匹配算法進行實驗與比較[14-15]。
實驗數據采用的是學術界公認的Middlebury立體視覺數據庫。該平臺提供多種場景雙目圖像,同時提供了雙目圖像的真實視差圖和標定參數[16]。現將本文改進后的算法與SGM算法、AD-Census算法分別提交到Middlebury平臺中,用Teddy、Cones、Tsukuba共3組圖像的標準視差圖進行對比分析。
圖9~圖11是利用本文算法和傳統方法對3組測試圖像進行立體匹配的直觀結果對比。其中,圖9(a)~圖9(d)分別為原始圖像、本文改進算法視差圖、SGM算法視差圖以及AD-Census算法視差圖。

(a) (b)圖6 樣本裁剪示意圖 (a)左圖 (b)右圖Figure 6. Sample clipping diagram (a) Left diagram (b) Right diagram

(a) (b)圖7 像素搜索區域對比 (a)K均值算法 (b)SLIC算法Figure 7. Pixel search area comparison(a) K-means algorithm (b) SLIC algorithm

(a) (b)圖8 SLIC超像素分割 (a)原圖 (b)SLIC分割結果Figure 8. SLIC super-pixel segmentation(a) Original image (b) SLIC segment result

(a) (b) (c) (d)圖9 Teddy樣本視差圖對比(a)原圖 (b)本文算法 (c)SGM (d)AD-CensusFigure 9. Teddy disparity map comparison (a)Original image (b)Proposed algorithm (c)SGM (d)AD-Census

(a) (b) (c) (d)圖10 Cones樣本視差圖對比(a)原圖 (b)本文算法 (c)SGM (d)AD-CensusFigure 10. Cones disparity map comparison (a)Original image (b)Proposed algorithm (c)SGM (d)AD-Census

(a) (b) (c) (d)圖11 Tsukuba樣本視差圖對比(a)原圖 (b)本文算法 (c)SGM (d)AD-CensusFigure 11. Tsukuba disparity map comparison (a)Original image (b)Proposed algorithm(c)SGM (d)AD-Census
從實驗對比結果可以看出,本文改進的基于超像素分割的孿生網絡立體匹配方法與傳統的SGM算法、AD-Census算法相比,在Nocc和Disc區域[17]的平均誤匹配率明顯較低,對不同的場景均能生成較好的視差圖。在Tsukuba測試圖像中,本文算法視差圖的邊緣更加平滑。而在Cones、Teddy測試圖像中,本文算法獲得的視差圖邊緣區域和遮擋區域的匹配精度都得到了較好提升,相比傳統方法取得了更好的改進效果。
本文所提算法的平均視差誤差和平均錯誤率[18-19]都有所降低,結果如表1所示。

表1 匹配代價算法對比
本文對雙目立體匹配算法進行了深入的研究和分析,對主流方法進行了對比和論述。針對紋理缺乏、邊緣深度不連續等情況容易導致雙目匹配精度低的問題,提出了基于超像素分割的Siamese孿生網絡匹配算法。該方法對前端的輸入圖像進行預處理分割,確保同一個分割區域內是連續的像素塊,然后分別對分割之后正負樣本的像素塊進行訓練。
實驗結果表明,本文算法對Middlebury公開數據集的平均視差誤差和平均錯誤率都有降低,相較于其他算法具有更好的魯棒性,并且在深度不連續區域得到了有效的匹配,匹配準確率有一定地提升。但在前景顏色與背景顏色較為接近的區域,由于容易引起錯誤分割,導致在此類情況下的匹配效果并不理想,這也是下一步研究中需要改進的地方。