Stereo Processing by Semiglobal Matching and Mutual Information
基於半全局匹配和互信息的立體處理
摘要
本文描述了半全局匹配的立體算法。該算法採用逐像素的基於互信息的匹配代價補償不同亮度的輸入圖像。逐像素匹配通過一個平滑約束支持,平滑約束通常表示爲全局代價函數。SGM通過從各個方向進行逐像素優化來執行快速近似。討論還這幾到遮擋檢測、亞像素精化和多基線匹配。此外,還提出了去除離羣值、從結構化環境的特殊問題中恢復以及提出了間隙插值方法。最後,提出了幾乎任意大小圖像的處理策略和通過正交投影進行視差圖像融合的策略。對標準立體圖像的比較表明,SGM算法是目前在排名最靠前的算法之中,並且在考慮亞像素的情況下是最好的一個。算法複雜度與像素的數量和視差範圍成線性關係,這使得在典型測試圖像上的運算時間只有1-2秒。基於MI的匹配代價的深度評估證明了對廣泛的亮度變化有較好的容忍度。最後,通過對大型航拍和推掃圖像的重建實例驗證了本文提出的方法在實際問題中的有效性
1 介紹
2 半全局匹配
半全局匹配方法是基於互信息的逐像素匹配 的思想和近似全局,通過結合多個一維約束條件得到的二維平滑約束。該算法採用不同的處理步驟進行描述。其中一些步驟是可選的,這取決於應用情況。
2.1 逐像素匹配代價計算
輸入圖像被假定已知其中的對極幾何模型,但是並不需要是被校正過的,因爲有些情況是難以被校正的。例如推掃式圖像中。由於平行投影在運動方向上,透視投影與運動方向正交,線性運動使極線變成雙曲線[21] 。 非線性運動在航空影像中是不可避免的,導致極線成爲一般的曲線和圖像不能夠被校正[22] 。
要計算參考圖像中某一像素點 p \mathbf{p} p 的匹配代價,需要用到其灰度 I b p I_{b\mathbf{p}} I b p ,及在待匹配圖像的疑似匹配點 q \mathbf{q} q 的灰度 I m q I_{m\mathbf{q}} I m q ,通過 q = e b m ( p , d ) \mathbf{q}=e_{bm}(\mathbf{p},d) q = e b m ( p , d ) 。函數 e b m ( p , d ) e_{bm}(\mathbf{p},d) e b m ( p , d ) 代表參考圖像中像素 p \mathbf{p} p 和極線參數 d d d 下匹配圖像中的極線。對於校正後的圖像,且匹配圖像在參考圖像的右側,則 e b m ( p , d ) = [ p x − d , p y ] e_{bm}(\mathbf{p},d)=[p_{x}-d,p_{y}] e b m ( p , d ) = [ p x − d , p y ] ,且 d d d 代表視差。
一個重要的方面是考慮匹配區域的大小和形狀。匹配的魯棒性隨面積的增大而增強。然而,面積增大後會出現不連續的位置,在不連續位置上違反了視差在區域內恆定的假設,這將導致模糊了物體邊界和精細結構。某些形狀和技術能夠用於減少模糊,但是模糊不能避免[8] 。因此,這裏不使用在 p \mathbf{p} p 鄰域內視差恆定的假設。也就是說只有 I b p I_{b\mathbf{p}} I b p 和 I m q I_{m\mathbf{q}} I m q 這兩個灰度值被用於計算匹配代價。
逐像素代價計算的一個選擇是 Brichfield 和 Tomasi 提出的採樣不敏感測量[2] (簡稱BT )。代價C B T ( p , d ) C_{BT}(\mathbf{p},d) C B T ( p , d ) 通過極線中在每一個方向上的半個像素範圍內的像素 p \mathbf{p} p 和像素 q = e b m ( p , d ) \mathbf{q}=e_{bm}(\mathbf{p},d) q = e b m ( p , d ) 的最小灰度差的絕對值進行計算。
另一種匹配代價計算是基於互信息(MI,Mutual Information)[4] ,它對記錄和光照變化不明顯。互信息由兩個圖像各自的熵 H H H 以及他們的聯合熵來定義:
M I I 1 , I 2 = H I 1 + H I 2 − H I 1 , I 2 MI_{I_{1},I_{2}}=H_{I_{1}}+H_{I_{2}}-H_{I_{1},I_{2}} M I I 1 , I 2 = H I 1 + H I 2 − H I 1 , I 2
熵是通過計算相關圖像的概率分佈P P P 得到:
H I = − ∫ 0 1 P I ( i ) log P I ( i ) d i H_{I}=-\int_{0}^{1}P_{I}(i)\log{P_{I}(i)di} H I = − ∫ 0 1 P I ( i ) log P I ( i ) d i
H I 1 , I 2 = − ∫ 0 1 ∫ 0 1 P I 1 , I 2 ( i 1 , i 2 ) log P I 1 , I 2 ( i 1 , i 2 ) d i 1 d i 2 H_{I_{1},I_{2}}=-\int_{0}^{1}\int_{0}^{1}P_{I_{1},I_{2}}(i_{1},i_{2})\log{P_{I_{1},I_{2}}(i_{1},i_{2})di_{1}di_{2}} H I 1 , I 2 = − ∫ 0 1 ∫ 0 1 P I 1 , I 2 ( i 1 , i 2 ) log P I 1 , I 2 ( i 1 , i 2 ) d i 1 d i 2
對於配準良好的圖像,聯合熵H I 1 , I 2 H_{I_{1},I_{2}} H I 1 , I 2 較低因爲一個圖像能夠被另一幅圖像預測,這與低信息相對應。這增加了他們的互信息。在立體匹配的情況下,一幅圖像需根據視差圖像D D D 來進行修正,爲了匹配另一幅圖像,使得兩幅圖像中對應的像素處於相同的位置,也就是 I 1 = I b I_{1}=I_{b} I 1 = I b 而且 I 2 = f D ( I m ) I_{2}=f_{D}(I_{m}) I 2 = f D ( I m ) 。
式(1)對整個圖像進行計算並且需要有一個先驗的視差圖。同時防止MI的使用變成逐像素匹配代價。kim等人[6] 利用泰勒展開將聯合熵H I 1 , I 2 H_{I_{1},I_{2}} H I 1 , I 2 的計算轉化爲對像素的求和運算。有關推導的細節,請參閱他們的論文。因此,聯合熵的計算表示爲一個依賴於像素p \mathbf{p} p 對應灰度的數據項的和的形式:
H I 1 , I 2 = ∑ p h I 1 , I 2 ( I 1 p , I 2 p ) . H_{I_{1},I_{2}}=\sum_{\mathbf{p}}h_{I_{1},I_{2}}(I_{1\mathbf{p}},I_{2\mathbf{p}}). H I 1 , I 2 = p ∑ h I 1 , I 2 ( I 1 p , I 2 p ) .
數據項h I 1 , I 2 h_{I_{1},I_{2}} h I 1 , I 2 由對應灰度的聯合概率分佈P I 1 , I 2 P_{I_{1},I_{2}} P I 1 , I 2 計算。對應像素的個數爲n n n 。通過一個二維高斯卷積(由⊗ g ( i , k ) \otimes{g(i,k)} ⊗ g ( i , k ) )有效的執行Parzen估計[6] :
h I 1 , I 2 ( i , k ) = − 1 n log ( P I 1 , I 2 ( i , k ) ⊗ g ( i , k ) ) ⊗ g ( i , k ) . h_{I_{1},I_{2}}(i,k)=-\frac{1}{n}\log{(P_{I_{1},I_{2}}(i,k)\otimes{g(i,k)})\otimes{g(i,k)}}. h I 1 , I 2 ( i , k ) = − n 1 log ( P I 1 , I 2 ( i , k ) ⊗ g ( i , k ) ) ⊗ g ( i , k ) .
對應灰度的概率分佈由操作T [ ] T[] T [ ] 來定義,這裏如果參數爲真就是1,不是就爲0,
P I 1 , I 2 ( i , k ) = − 1 n ∑ p T [ ( i , k ) = ( I 1 p , I 2 p ) ] . P_{I_{1},I_{2}}(i,k) = -\frac{1}{n}\sum_{\mathbf{p}}T[(i,k)=(I_{1\mathbf{p}},I_{2\mathbf{p}})]. P I 1 , I 2 ( i , k ) = − n 1 p ∑ T [ ( i , k ) = ( I 1 p , I 2 p ) ] .
整個計算過程如圖1所示。待配準圖像I m I_{m} I m 根據初始視差圖D D D 進行修正。這可以通過一個簡單的查詢在圖像I m I_{m} I m 內的所有像素p \mathbf{p} p 通過e b m ( p , D p ) e_{bm}(\mathbf{p},D_{\mathbf{p}}) e b m ( p , D p ) 。然而,應該注意避免由於遮擋而在圖像I m I_{m} I m 中的雙重對應。P P P 的計算根據公式(6)是通過計算所有灰度組合的像素個數,除所有對應像素的個數。之後根據公式(5),高斯平滑是通過卷積實現。我們發現,使用小內核(即7 × 7 7\times7 7 × 7 )與大內核的結果幾乎一樣,但是計算的更快。對每一個結果元素做對數運算。因爲0的對數沒有意義,所有零元素都被一個很小的數值說替代。之後再進行一次高斯平滑有效的生成一個數據項h I 1 , I 2 h_{I_{1},I_{2}} h I 1 , I 2 的查找表。
Kim等人認爲,熵H I 1 H_{I_{1}} H I 1 是恆定,熵H I 2 H_{I_{2}} H I 2 由於視差圖像僅僅是重新分佈了I 2 I_{2} I 2 的灰度,幾乎也是恆定的。因此,h I 1 , I 2 ( I 1 p , I 2 p ) h_{I_{1},I_{2}}(I_{1\mathbf{p}},I_{2\mathbf{p}}) h I 1 , I 2 ( I 1 p , I 2 p ) 作爲代價計算的兩個灰度。然而,如果遮擋被考慮進來那麼I 1 I_1 I 1 和I 2 I_2 I 2 中的一些灰度就沒有對應項。這些灰度不能夠被包含在計算中,這將導致熵H I 1 H_{I_{1}} H I 1 和H I 2 H_{I_{2}} H I 2 。除了這一理論證明之外,我們還發現在代價計算中加入這些熵能夠略微改善目標邊界。
H I = ∑ p h I ( I p ) , H_{I}=\sum_{\mathbf{p}}h_{I}(I_{\mathbf{p}}), H I = p ∑ h I ( I p ) ,
h I = − 1 n log ( P I ( i ) ⊗ g ( i ) ) ⊗ g ( i ) h_{I} =-\frac{1}{n}\log{(P_{I}(i)\otimes{g(i)})\otimes{g(i)}} h I = − n 1 log ( P I ( i ) ⊗ g ( i ) ) ⊗ g ( i )
概率分佈P I P_{I} P I 只能在覆蓋對應區域內計算,而一定不要在覆蓋整個I 1 I_1 I 1 和I 2 I_2 I 2 圖中計算(否則,遮擋將被忽略,且H I 1 H_{I_{1}} H I 1 和H I 2 H_{I_{2}} H I 2 將幾乎恆定)。只要把聯合概率分佈中相應的行和列相加,也就是,P I 1 ( i ) = ∑ k P I 1 , I 2 ( i , k ) P_{I_{1}}(i)=\sum_{k}{P_{I_{1},I_{2}}(i,k)} P I 1 ( i ) = ∑ k P I 1 , I 2 ( i , k ) 。互信息的最終定位爲:
M I I 1 , I 2 = ∑ p m i I 1 , I 2 ( I 1 p , I 2 p ) MI_{I_{1},I_{2}}=\sum_{\mathbf{p}}mi_{I_{1},I_{2}}(I_{1\mathbf{p}},I_{2\mathbf{p}}) M I I 1 , I 2 = p ∑ m i I 1 , I 2 ( I 1 p , I 2 p )
m i I 1 , I 2 ( i , k ) = h I 1 ( i ) + h I 2 ( k ) − h I 1 , I 2 ( i , k ) . mi_{I_{1},I_{2}}(i,k) = h_{I_{1}}(i)+ h_{I_{2}}(k)- h_{I_{1},I_{2}}(i,k). m i I 1 , I 2 ( i , k ) = h I 1 ( i ) + h I 2 ( k ) − h I 1 , I 2 ( i , k ) .
這就引出了MI匹配代價的定義:
C M I ( p , d ) = − m i I b , f D ( I m ) ( I b p , I m q ) , C_{MI}(\mathbf{p},d)=-mi_{I_{b},f_{D}(I_{m})}(I_{b\mathbf{p}},I_{m\mathbf{q}}) , C M I ( p , d ) = − m i I b , f D ( I m ) ( I b p , I m q ) ,
q = e b m ( p , d ) . \mathbf{q}=e_{bm}(\mathbf{p},d). q = e b m ( p , d ) .
剩下的問題是視差圖需要爲了修正I m I_{m} I m 在m i ( ) mi() m i ( ) 能夠被計算前得到。Kim等人提出了一種迭代求解方法,中隨機視差圖開始計算代價C M I C_{MI} C M I 。這個代價之後用於圖像的匹配和新視差圖的計算,作爲下一個迭代的基礎。迭代的次數相當少(如例3),因爲,由於像素個數很多,儘管錯誤的視差圖(如,隨機生成)也可以很好的估計概率分佈P P P 。這種解決方案非常適合與圖割等迭代立體算法,但是這將不必要的增加非迭代算法的運行時間。
因爲初始視差的一個粗略估計已經足夠估計P P P ,因此可以在第一次迭代中使用快速相關基礎算法。在這種情況下,只有最後一次迭代纔會使用更精確、更耗時的方法。但是這將涉及實現兩個不同的立體視覺方法。使用單一方法看起來更優雅。
因此,提出了一種分層計算方法,遞歸地使用以半分辨率計算的視差圖像作爲初始視差。如果算法的整體複雜度是O ( W H D ) O(WHD) O ( W H D ) (寬× \times × 高× \times × 視差範圍),然後運行一半分辨率減少比率是2 3 = 8 2^3=8 2 3 = 8 。從分辨率爲1\16的隨機視差圖像開始,最初計算三次迭代將會將總體運行時間增加比率爲,
1 + 1 2 3 + 1 4 3 + 1 8 3 + 3 1 1 6 3 ≈ 1.14. 1+\frac{1}{2^3}+\frac{1}{4^3}+\frac{1}{8^3}+3\frac{1}{16^3}\approx1.14. 1 + 2 3 1 + 4 3 1 + 8 3 1 + 3 1 6 3 1 ≈ 1 . 1 4 .
因此,分層計算的C M I C_{MI} C M I 的理論運行時間只會比C B T C_{BT} C B T 慢百分之14,忽略了MI計算和圖像縮放的開銷。值得注意的是,低分辨率下的視差圖像僅用於估計高分辨率下的概率分佈P P P 和計算高分辨率下的代價C M I C_{MI} C M I 。其他的一切都是從頭計算的,以避免錯誤從低分辨率傳遞到高分辨率。
分層MI(HMI)計算的實現需要收集所有由初始視差定義的所謂對應(也就是說,從之前的層次級別或一開始隨機的進行放大)。根據對應關係,概率分佈P P P 通過公式(6)進行計算。P P P 的大小是灰度個數的平方,這大小是恆定的(例如,256 × 256 256\times256 2 5 6 × 2 5 6 )。後續的操作包括P P P 的高斯卷積和對數的計算。由於P P P 的大小不變,其複雜度取決於所謂對應的集合。因此,O ( W H ) O(WH) O ( W H ) 其中W W W 是圖像的寬度,H H H 是圖像的高度。
2.2 代價聚合
逐像素代價計算通常是模糊的,並且由於噪聲等因素的存在,錯誤匹配能夠很容易得到比正確匹配更小的代價。爲此,增加一個額外的約束,通過懲罰臨近視差的變化來保證平滑。逐像素代價和平滑約束通過定義基於視差D D D 的能量 E ( D ) E(D) E ( D ) :
KaTeX parse error: Expected group after '_' at position 10: E(D)=\sum_̲