黃 ,
(中國民航大學 中歐航空工程師學院,天津 300300)
作為計算機視覺研究領域的熱點問題,立體匹配在匹配精度方面和算法運行時間的表現引起了國內外專家學者的廣泛關注[1-3]。根據采用的最優化理論算法不同,現有的立體匹配算法可分為全局算法和局部算法[4]。一般來說,局部算法比全局算法的匹配精度低,但算法運行時間相對較短,適合于工程和工業應用[5]。2005年,Yoon等人提出的自適應支持權重(Adaptive Support Weight,ASM)算法[6]將局部算法的視差精度提升到了一個新的高度,但由于其能量代價函數的計算過于復雜,該算法的運行時間比較長[7],因此近年來許多學者都對ASW算法進行優化,例如使用稀疏匹配方法[8]、優化能量代價函數[9]和引入隨機游走的樹結構[10]等,在不降低原ASW算法精確度的同時減少程序的運行時間。但這些算法在兼顧匹配精度和運行時間方面存在著一定的缺陷。因此,本文提出一種新的優化算法,在降低算法復雜度的同時引入多項后續處理。
ASW算法依據格式塔理論[11],在計算一點像素的支持權重時,自適應地根據該點與待匹配點的顏色相似度和空間距離相似度為該點分配一個支持權值。
以生成一張左右視差圖為例,左圖中一待匹配像素點p對其支持窗口中一像素點的支持權值為:
w(p,q)=f(Δcpq)·f(Δgpq)
(1)
其中,f(Δcpq)代表由顏色相似性確定的q點對p點的支持權值,f(Δgpq)代表由空間相似性確定的q點對p點的支持權值,其表達式分別為:
其中,Δcpq代表p點和q點的顏色相似度,是兩像素點的RGB顏色在CIELab顏色空間的投影c(p)=[Lp,ap,bp]和c(q)=[Lq,aq,bq]的幾何距離,γc是用于調整顏色相似度對支持權重影響大小的用戶指定參數,一般設為7,代表p點和q點的空間位置相近度,是兩像素點的歐氏距離,γp是用于調整空間位置相近度對支持權值影響大小的用戶指定參數,一般設為36。

計算初始匹配代價后,通過贏者通吃策略(Winner-Takes-All,WTA)選取每個像素點的視差,計算公式如下:
其中,Sd={dmin,…,dmax}是所有可能選取的視差值組成的集合。
2.1.1 顏色相似度函數
由于ASW算法在計算顏色支持權重時涉及到3個顏色通道的運算,計算量比較大[12],考慮到計算顏色支持權重將三維計算問題簡化為一維計算問題,這一步通過將左視圖和右視圖由彩色圖片轉化為灰度圖實現,同時對于像素點q和待匹配像素點p,其顏色相似度計算公式為:

2.1.2 左右一致性檢測和遮擋填充
由于遮擋和光照等原因,拍攝到的左右視圖中同一場景的場景信息存在差別,這就導致一些相同像素點在經過立體匹配后生成的左右視差圖和右左視差圖中的視差并不相同。為了充分利用兩張視差圖的視差信息,對那些在兩張視差圖中視差不一致的像素點的視差進行視差修正,就可以提高視差圖的精度[13]。
因此,以最后得到一張左右視差圖為例,考慮對改進算法生成的初始左右視差圖和初始右左視差圖進行左右一致性檢測(left-right-continuity check)和遮擋填充(occluded filling),其中左右連續性檢測用于檢測出在左右視差圖和右左視差圖中視差不一致的像素點,其檢測過程如下:
對于左右視差圖的一像素點p,求得的視差值是d1,p在左右視差中的對應像素點(p-d1),其視差值記作d2,若|d1-d2|>threshold,則標記為遮擋點。其中threshold代表判斷是否為遮擋點的用戶設定閾值,一般設為1。
經過左右一致性檢測后,可以得到一張由遮擋點組成的圖像,通過將該圖像與初始左右視差圖進行對比,就可以針對遮擋點進行視差填充,填充過程如下:
對于遮擋點p,分別水平向左和向右找到第1個非遮擋點,記作pl和pr,點p的視差值取這2個視差值中較小的那個,即d(p)=min(d(pl),d(pr))。其中,d(p)代表為遮擋點p重新定義的視差值,d(pl)為點pl的視差值,d(pr)為點pr的視差值。
2.1.3 中值濾波
初始視差圖經過左右一致性檢測和遮擋填充后,視差圖精度將會得到進一步提升,但由于遮擋區域多存在與視差不連續區域和無法檢測區域,因此在進行遮擋填充后會產生水平條紋。為了消除這些水平條紋,這里引入中值濾波[14]對經過遮擋填充處理后的視差圖進行最終處理,其原理如下:
對視差圖中一像素點p,以p為中心建立一個邊長為(2N+1)的正方形窗口,將窗口內所有像素點的灰度值進行降序或升序排列,取這些灰度值的中值作為點p的灰度值。
由于窗口太大會影響算法運行時間,并且降低視差圖的精度,窗口太小又會無法實現中值濾波的意義,因此這里取N=3。
經過對原ASW算法的分析,改進了原ASW算法的顏色相似度函數,通過將三維問題轉化為一維問題,大大減少了算法的計算量,節約了算法的運行時間。接下來引入后續處理來進一步高視差圖精度,通過左右一致性檢測篩選出在左右視差圖和右左視差圖中視差不一致的像素點,利用遮擋填充為這些遮擋點重新賦予視差值,最后通過中值濾波消除遮擋填充可能產生的水平條紋。以生成一張左右視差圖為例,完整的改進算法流程如圖1所示。

圖1 改進算法流程
本文使用了C++語言,基于OpenCV實現該算法,并在CPU Inter Core i5 1.6 GHz,內存4 GB,操作系統macOS Sierra 10.12.6的環境下對Middlebury網站提供的立體數據集Cones、Teddy、Tsukuba和Venus進行測試,并驗證了不同光照條件下算法的魯棒性。
為了方便測試優化算法的性能,本文只考慮算法的時間復雜度。表1為改進算法和原ASW在支持窗口大小為11×11時,處理4個標準圖像測試對的運行時間對比,可以看到改進算法的運行時間平均比原ASW算法減少了20%左右。說明改進原算法顏色相似度函數后,算法計算量得到有效的減少,進而算法的運行時間得到了有效節約。同時考慮到改進算法計算了生成兩張視差圖的運行時間,而原算法只計算了生成一張視差圖的運行時間,因此,若使2個算法都生成兩張視差圖,改進算法運行時間預計比原算法運行時間減少40%~60%。

表1 算法運行時間 s
表2為改進算法和原算法在支持窗口大小為11×11時,處理4個數據集生成左右視差圖的誤匹配率對比,其中IMP代表改進算法。

表2 算法誤匹配率 %
從平均誤匹配率看,改進算法針對4幅標準圖像測試對的平均誤匹配率比原ASW算法的平均誤匹配率低2.76%,說明改進算法在視差圖精度平均表現優于原ASW算法。
從單個數據集測試結果看,針對Cones數據集,改進算法在非遮擋區域和所有區域的匹配精度不如原ASW算法,比原ASW算法的誤匹配率高1.5%,但改進算法在不連續區域的匹配精度比原算法高出2.98%;針對Teddy數據集,改進算法在非遮擋區域的誤匹配率高達23.63%,比原算法高出7.15%,在所有區域和不連續區域,改進算法誤匹配率和原ASW算法相差不到1%;針對Tsukuba數據集,改進算法在遮擋區域的誤匹配率為11.71%,比原ASW算法的誤匹配率低了14.39%,在所有區域和不連續區域,改進算法的誤匹配率均低于原ASW算法,分別比原算法誤匹配率減少了1.84%和2.14%;針對Venus數據集,改進算法在3個區域的匹配精度均優于原ASW算法,在遮擋區域,改進算法比原ASW算法的誤匹配率減少了7.72%,在所有區域,改進算法比原ASW算法的誤匹配率減少了7.85%,在不連續區域,改進算法比原ASW算法的誤匹配率減少了7.31%。同時改進算法在3個區域的匹配精度也高于如SAD[15]、SSD和NCC[16]等常見算法。
圖2~圖5為立體圖像數據集的測試結果,對比改進算法前后生成的視差圖可以看出,改進算法提高了生成視差圖的精度,特別是Tsukuba和Venus圖像對生成的視差圖精度提高明顯,這與表2提供的數據吻合。

圖2 Cones圖像實驗結果

圖3 Teddy圖像實驗結果

圖4 Tsukuba圖像實驗結果

圖5 Venus圖像實驗結果
圖6為改進算法在同一場景3種不同光照下生成的視差圖,可以看出,在光照不足、光照一般和光照充足的情況下,改進算法生成的3張視差圖差別不大。這說明在一定的光照范圍內,改進算法生成的視差圖穩定性良好,進一步說明改進算法在一定光照范圍內具有良好的魯棒性。

圖6 不同光照下同一場景及對應改進算法生成的視差圖
針對ASW算法運行時間長、算法復雜度高的問題,本文基于OpenCV平臺提出一種自適應匹配優化方法。該方法通過優化ASW算法中的顏色相似度度量函數,以降低算法的復雜度;引入左右連續性檢測、遮擋填充和中值濾波等后續處理實現對初始生成視差圖的后續優化,提高算法的視差精度。實驗結果表明,該優化方法將ASW算法的平均運行時間降低到原來的80%,并將生成視差圖的誤匹配率降低了2.67%,且優化算法具有良好的魯棒性。下一步將簡化ASW算法的能量函數,并嘗試尋找不依賴于生成兩張視差圖的后續處理辦法,以提高匹配精度,同時減少匹配時間。