暢雅雯,趙冬青,單彥虎
中北大學 儀器與電子學院,太原 030051
立體視覺是計算機視覺的重要研究領域,立體匹配是立體視覺的核心步驟,通過尋找左右兩幅圖像的匹配點來計算視差,獲取場景深度信息。相對傳統的接觸式測量,立體視覺測量技術可以滿足水下、火場等非接觸式場景下的測量需求,具有效率高、系統結構簡單、成本低等優點,近年來被廣泛應用到三維重建、無人駕駛、醫學成像等領域[1]。Scharstein等[2]將立體匹配分為匹配代價計算、代價聚合、視差計算和視差精細四個步驟。其中匹配代價計算和代價聚合對獲取高精度的視差信息,進行精確三維重建至關重要。
立體匹配中,選取的匹配代價計算方法在不同應用條件中產生的匹配精度不同。常見匹配代價計算方法有:灰度變化差AD算法、非參數Census變換、梯度Gradient及互信息MI等[3]。基于圖像的顏色和幾何信息算法在紋理豐富區域匹配效果較好,但受光照失真影響較大;非參數變換和梯度對幅度失真不敏感,但在重復結構區域處理效果并不理想。綜合考慮顏色、梯度、非參數變換等信息,融合兩種或多種代價計算方法通常能夠更加準確地描述像素點包含的信息,如Census+MI+Gradient[4]、AD+Census+Gradient[5]、AD+Census[6]等。圖像的光照、噪聲以及其自身的紋理條件都會影響匹配效果,針對特定測試環境設計相應匹配算法對于準確獲得視差信息有著重要的意義。
對于代價聚合,聚合窗口的尺寸影響著匹配結果的可靠性,窗口過小易在弱紋理區域出現誤匹配,過大易在深度不連續區域匹配錯誤。Zhang等[7]利用顏色和空間距離雙閾值,自適應地構造十字交叉域進行代價聚合。Qu等[8]基于Census變換中心像素與鄰域像素的差異性構建自適應支持窗。Hosni等[9]提出利用引導濾波器進行代價聚合,可以很好地保持邊緣,但是窗口大小是固定的。如何針對圖像的紋理、顏色、空間結構有效調整聚合窗尺寸是個亟待解決的問題。
為提高立體匹配算法在弱紋理區域的匹配精度以及增強光照失真條件下的穩健性,本文融合多種匹配代價計算方法和改進的自適應十字窗口聚合進行算法實現。在匹配代價計算階段引入對光照失真更穩定的HSV顏色空間,使用高斯加權后的Census變換,排除傳統Census變換受噪聲產生的中心異常值影響,有效抑制噪聲干擾,并結合梯度信息提高對圖像邊界的匹配精度。代價聚合階段利用梯度劃分弱紋理與紋理豐富區域,根據像素點區域特征提出基于梯度和可變顏色閾值的新型自適應窗口構建方法,提高了匹配精度,并利用多步驟視差精細優化視差效果。
本文所提算法的整體流程如圖1所示,首先,以校正后的左右圖像為輸入,融合H通道信息、梯度信息和改進的Census變換作為代價計算方法。其次,引入梯度信息和可變顏色閾值對每個像素構建自適應的十字交叉聚合窗口。最后,采用勝者為王(Winner-Take-All,WTA)策略進行初始視差計算,通過左右一致性檢測、迭代局部區域投票、視差填充和非連續區域調整等步驟進行視差精細,得到最終視差圖結果。

圖1 算法流程圖Fig.1 Diagram of proposed algorithm
代價計算通過相似度量函數選取左右圖像視差搜索范圍內最高相似度的像素點作為匹配點。根據亮度/色彩一致性假設,匹配點通常具有相似的灰度、顏色等,常引入RGB顏色空間作為匹配代價,可以提高在紋理豐富區域的匹配精度[9]。
本文引入HSV顏色空間[10],從色調、飽和度和亮度3個方面提取圖像信息。H分量通常反映圖像的色彩變化,可以有效提取前、后景信息;S分量反映圖像飽和度,突出圖像細節;V分量反映圖像亮度。選取Middlebury數據集中的Plastic圖像,針對光照條件相同但曝光時間不同、光照條件不同但曝光時間相同、以及光照條件和曝光時間均不同三種條件情況,以同一場景同一個像素點(225,195)為測試對象,統計該點在RGB、HSV各通道及其灰度圖的數值,取值范圍都是[0,255]。表1記錄像素點在上述三種情況下的B、G、R、H、S、V各通道及灰度值的變化情況。

表1 不同光照曝光下Plastic圖像各通道數值Table 1 Value of each channels of Plastic image under different illumination and exposure conditions
對同一圖像在不同曝光條件下選取多個測試點進行分析發現,R、G、B分量在數值變化上具有一致性,彼此相關,且取值與物體本身光照亮度有關,由RGB得到的灰度值也受此影響,在光照曝光不同時,無法準確描述像素。在HSV空間中,三通道相對獨立,但是S和V通道受光照影響也比較大。通過比較光照曝光不同時各分量的標準差,觀察到H通道最穩定,波動遠遠小于其他幾個通道。因此,選取左右圖像對應像素H通道的絕對差值作為匹配代價,既能表征色度信息又能有效改善光照失真的影響,提高匹配精度。H通道匹配代價定義如下:

傳統Census變換通過逐位比較像素p與其鄰域窗口像素的灰度大小,來構建二進制Census變換碼。Census變換的匹配代價定義為左右圖像對應像素點Census變換碼的漢明距離[11]。表述如下:


式中,I(p)和I(q)分別是像素點p和q的灰度值;N(p)是p的鄰域窗口;B[·]為比較函數;?表示按位連接;BT(p)和BT(pd)分別為左圖像素p和右圖匹配點pd的Census變換碼。
傳統的Census變換能在一定程度上抑制幅度失真,但它忽略了像素之間的位置關系,也過于依賴中心像素,一旦中心像素由于噪聲干擾發生突變,Census變換碼將發生很大變化[12]。針對上述缺陷,本文進一步考慮鄰域像素與中心像素的距離關系,提出用鄰域高斯加權灰度平均值作為參考值,將其與中心像素的灰度值進行對比,并設置灰度差值閾值T作為替換條件。當原中心像素與參考值的灰度差值超過設定閾值,則認為該中心像素點發生突變,用參考值代替原中心像素值,否則,仍然使用原中心像素的灰度值。表達式如下:

式中,Iwm(p)是高斯加權平均后的參考像素灰度值;Wpq為高斯加權值,是窗口內的權值之和;x和y是窗口中像素到中心像素p的位置偏移;Icen(p)為最終Census代價計算時像素p的灰度值;σ是設定的標準差;T為灰度差值閾值,此處取18。
圖2以鄰域3×3的窗口為例,展示了本文改進Census變換的計算過程。當中心像素受到噪聲干擾,從65突變到100,傳統Census算法變換碼發生明顯變化,而通過改進的Census變換,將鄰域加權平均值73作為參考值替換得到的變換碼保持不變,提高了Census變換的抗干擾性。
圖像梯度能有效反映待匹配點附近的輪廓和結構信息,對光照失真和噪聲有很好的穩健性。梯度匹配代價定義如下:

式中,?x和?y分別為水平和豎直方向的Sobel加權梯度算子,I(p)和I(pd)分別為左圖像素點p和右圖對應視差為d的匹配點pd的灰度值。
本文將H通道顏色信息、改進的Census變換和水平、豎直方向的梯度信息進行歸一化融合[13],最終將立體匹配代價計算定義為:


圖2 改進Census變換計算過程Fig.2 Improving calculation process of Census transform
式中,α、δ和γ是不同代價組成的權重,調整三個參數對總代價計算的貢獻,可以獲得較好的匹配效果,考慮到色度信息在弱紋理區域的低魯棒性以及Census變換對光照失真的不敏感性,此處取值分別為{0.3,1,0.1};λH、λcen、λg分別為H通道、Census變換和梯度代價對總代價的影響參數[14]。
圖3顯示了多特征融合策略的效果,實驗的局部圖像選自Middlebury官網立體數據集中的Teddy圖像對,對比圖3(c)和圖3(d),融合AD算法、傳統Census變換和梯度的方法在邊界區出現較多誤匹配,而基于H通道、高斯加權后的Census變換和梯度的方法能明顯減少在邊界區的錯誤數量,證明了所改進多特征融合策略的有效性。

圖3 不同的代價組合方法獲得的視差圖Fig.3 Disparity maps obtained by different cost combination methods
由于單個像素的匹配代價區分度低,獲取的視差往往并不可靠,將局部窗口相鄰像素的初始匹配代價求和或取平均可以提高匹配可靠性,窗口的形狀和大小直接決定了聚合效果。
本文根據相似強度的像素可能來自相似結構具有相近的視差值這一假設[15],基于Mei等的自適應十字交叉窗口骨架,在代價聚合階段提出了基于梯度信息和可變顏色閾值的窗口臂長構建方法[16]。首先設置梯度閾值,劃定該像素點處于弱紋理區域還是邊緣區域,針對不同的區域特點設置不同的約束條件,在弱紋理區域設置較寬松的顏色和距離閾值,在邊緣區域通過縮小最大顏色和距離閾值加強限制。臂長的構造規則不僅考慮中心像素與臂上像素的顏色差異,還考慮它們的梯度值之差,確保臂長只在相似區域內部延伸。梯度值采用3×3的加權Sobel算子計算。改進后弱紋理區域的臂長約束條件如下:

式中,βmax是判斷弱紋理和邊緣區域的梯度閾值;β1是中心像素與臂上像素梯度差值閾值;Dg(pi,p)、Dc(pi,p)、Dd(pi,p)分別是像素p和pi之間的梯度差值、顏色差值和空間距離;τmax和τ2是兩個不同的顏色閾值;Lmax和L2是兩個不同的距離閾值。其中,τ2為可變顏色閾值,它隨當前臂長線性變化,臂長越長,顏色閾值限定越嚴格。Lp=0時,顏色閾值取最大值τ2=τmax。Lp=Lmax時,顏色閾值取最小值τ2=0。定義如下:

對于邊緣和不連續區域,僅需要對最大顏色閾值和距離閾值進行適當減小,避免邊緣區域臂長的過度延伸,增加錯誤匹配,其余條件仍不變。

通過本文的臂長約束條件,以像素p為中心逐像素直線延伸可確定左、右、上、下四個臂長,分別是,以此構造由水平線段H(p)和垂直線段V(p)組成的十字交叉骨架作為聚合的局部窗口,并采用四個方向的掃描線優化方法進一步減少匹配誤差。在不滿足上述任意條件時,停止臂長的延伸[17]。
代價聚合后采用贏家通吃策略(WTA)算法,即選取聚合后的最小代價值對應的視差作為初始視差值[18]。后處理優化時,采用左右一致性檢測選出異常值,左圖中像素p(x,y)的視差d1與右圖對應的匹配點p(x-d1,y)的視差d2的差值,若滿足表達式:

則認為p(x,y)的視差不滿足一致性檢測,將其作為異常值作后續處理,否則滿足一致性檢測,將其保留,Th為設定的視差閾值,一般取1。利用迭代局部投票統計異常像素p支持域內所有有效像素的視差值,多次迭代后將滿足占比條件得票概率最多的視差值賦值給p,作為該像素的視差。異常像素包括遮擋點和誤匹配點,對于遮擋點,選擇鄰域16方向最小視差值插值填充;對于誤匹配點,選擇與p顏色最接近的鄰域像素視差進行插值。非連續區域調整針對邊緣像素采用左右兩邊代價更小的視差值替代原視差。
實驗硬件配置為64位Windows10系統,Intel?Core?i5-6200U的CPU處理器,運行內存為4 GB。利用C++語言在VS2019軟件下使用公認立體匹配評估平臺Middlebury官方提供的數據集對所提算法進行匹配精度的測試驗證,將本文視差結果與真實視差相差1.0像素以上的點定義為誤匹配點,用誤匹配點數除以總體有效視差點數得到誤匹配率[19],實驗對圖像的非遮擋區域和全部區域進行誤匹配率的計算,實驗所用參數如表2所示。Lmax、L2和τmax沿用文獻[6]的原始參數,可以獲得較穩定的峰值信噪比,β1和βmax由動態雙閾值Canny邊緣提取算法確定,灰度差值閾值T的選取過大會對發生突變的像素不敏感,過小會增加不必要的運算成本,通過計算不同閾值下的誤匹配率,選取區間設置在[15,22]為宜,此處T取值18。

表2 實驗所用參數Table 2 Parameters Used in Experiment
為了驗證算法在光照失真時的性能以及弱紋理區域的匹配精度,選取Middlebury中的立體匹配圖像對Aloe、Baby1、Lampshade1、Plastic、Bowling2進行算法測試,其中,Lampshade1和Plastic是典型弱紋理豐富的圖像。在無光照失真和不同光照失真條件下分別進行算法的實現,并將本文算法與CG-GF算法[7(]Census+梯度+引導濾波代價聚合)、CG-NL算法[16(]Census+梯度+非局部代價聚合)和AD-Census算法[6(]AD+Census+十字交叉域代價聚合)的視差圖進行對比。圖4為無光照失真條件下視差誤匹配像素的對比圖,錯誤匹配的點已標為紅色。表3為無光照失真條件下的非遮擋區域和全部區域的誤匹配率。
從圖4視差對比圖中可以看出,在無光照失真條件下,本文算法視差圖中的誤匹配像素點明顯較其他算法少,在邊界和弱紋理區域尤其明顯。結合表3結果分析,由于Lampshade1和Plastic中的弱紋理區域豐富,CG-NL算法在Plastic中未遮擋區域的誤匹配率高達35%,而本文算法針對每個像素基于梯度和顏色閾值進行自適應聚合窗的構建,增強了鄰域匹配代價的可靠性,提高了弱紋理區域的匹配精度,Plastic圖像誤匹配率只有15.87%,四幅圖像的平均誤匹配率為14.29%,匹配精度遠遠優于其他算法,視差效果較好。
光照和曝光差異會引起左右圖像亮度的急劇變化,為進一步測試所提算法對于光照失真的穩健性,將四種算法在不同光照不同曝光程度下進行測試比較。圖5可以看到前三種算法對于由于光照和曝光差異產生的幅度失真非常敏感,視差圖中錯誤匹配較多,這是因為CG-GF和CG-NL算法融合了Census變換和梯度進行代價計算,對光照失真不敏感,但在重復紋理結構區域易發生誤匹配;AD-Census算法基于圖像亮度灰度進行代價計算,在光照失真情況下難以取得較好效果。而本文算法采用對光照亮度信息不敏感的HSV顏色空間H通道,同時融合改進的Census變換作匹配代價,以解決中心像素突變帶來的誤匹配問題,增強光照失真穩健性的同時提高了算法的抗干擾能力。在物體邊界即視差不連續區域,本文算法能更好地反映出物體輪廓,平坦區域也有更少的錯誤匹配出現,進一步說明了所提自適應聚合方法的優越性。

圖4 圖像對(Aloe、Baby1、Lampshade1、Plastic)在無光照失真條件下不同匹配算法的視差圖Fig.4 Disparity map of image pair(Aloe,Baby1,Lampshade1,Plastic)under same illumination and exposure conditions using different matching algorithms

表3 圖像對在無光照失真條件下的誤匹配率Table 3 Error match rate of different matching algorithms under same illumination and exposure conditions %
圖6為四種算法的運行時間對比圖,所提算法在處理弱紋理圖像時耗時較長。主要時間差距在代價聚合階段,CG-NL算法基于最小生成樹聚合,只需兩次遍歷即可得到結果,運行效率較快。AD-Census算法采用并行結構進行自適應窗聚合,加快了運行速度。CG-GF算法對圖像進行多層采樣處理,增加了運算復雜度。而本文算法由于對每個像素進行弱紋理與深度不連續區的判斷,基于不同約束條件構建聚合窗,提升了弱紋理區域精度但也增加了運算復雜度。雖然算法還未達到實時性要求,但由于本文算法基于各像素點可獨立進行運算處理,利用多線程共享數據內存進行并行結構設計,能進一步提高算法效率。

圖5 圖像對(Bowling2)在不同程度光照失真條件下不同匹配算法的視差圖Fig.5 Disparity map of image pair(Bowling2)under different degree of illumination distortion using different matching algorithms

圖6 各算法運行時間Fig.6 Running time of algorithms
圖7記錄在Baby1圖像中添加不同密度椒鹽噪聲后四種算法的誤匹配率,本文算法在不同密度的椒鹽噪聲下都具有最低的誤匹配率,原因為改進Census變換對受到干擾的像素可根據鄰域像素重新選值,確保了匹配代價值的準確性,可以有效抑制噪聲干擾。

圖7 各算法在椒鹽噪聲下的誤匹配率Fig.7 Error match rate of algorithms in salt and pepper noise
定的H通道、對噪聲干擾有效抑制的高斯加權平均的Census變換和梯度作為匹配代價。利用梯度信息和可變顏色閾值實現新型的自適應十字交叉聚合方法。與AD-Census算法相比,本文算法的匹配誤差減少了3.24%。實驗結果表明,本文算法能有效減少邊界處的錯誤匹配,提高對弱紋理區域的匹配精度,增強了對光照失真的穩健性和噪聲抗干擾性。未來工作將圍繞實際場景中的三維重建而展開,優化算法減少實測中的測量誤差,并利用并行結構設計以滿足實時性要求。