ADCensus Stereo Matching 筆記


《On Building an Accurate Stereo Matching System on Graphics Hardware》論文筆記

@(sinbad)[360sinbad@gmail.com]
簡要記錄下ADCensus算法的流程步驟,以便日后記憶。

現今Stereo matching算法大致可以分為三個部分: pre-process 、stereo matching 、post-process。
pre-process即為USM圖像增強,直方圖歸一化或直方圖規定化。
post-process即為常規的disparity refinement,一般stereo matching算法出來的結果不會太好,可能很爛,但經過refinement后會得到平滑的結果。

Step 1. ADCensus 代價計算
ADCensus = AD+Census
AD即 Absolute Difference

Census Feature原理很簡單,在指定窗口內比較周圍亮度值與中心點的大小,匹配距離用漢明距表示。Census保留周邊像素空間信息,對光照變化有一定魯棒性。論文說立體匹配中對無紋理區域有改善效果。
兩者信息結合作者用到了一個函數

其中,

Step 2. Cross-based 代價聚合
本篇文章最有特色的是自適應窗口代價聚合,號稱可以取代傳統耗時的分割方法。
Cross-based代價聚合為分自適應窗口的構建和代價聚合兩步。
構建窗口:

對於點p,在設定的最大窗口范圍內搜索,滿足下面三個約束條件確定每個像素的十字坐標,完成自適應窗口的構建。

代價聚合計算需要先水平后垂直共4次的原因剛開始覺得構建區域不變,兩輪計算重復了,后來查看源代碼才真正理解。

迭代4次的正確理解為:對所有像素點水平邊界計算一次cost累加(1次完成);對所有像素點垂直邊界計算cost累加一次(2次完成);對所有像素點垂直邊界計算cost累加一次(3次完成);對所有像素點水平邊界計算一次cost累加(4次完成)。 發現兩次cross-based region 形狀是不一樣的。所以為什么改變聚合方向順序會有不一樣的結果。

Step 3. Scanline 代價聚合優化
Scanline方法文章改進的是smi-global matching的能量函數求解方法,只是將原來的8個方向減少到4個方向,重新看下SGM原理便不難理解,SGM能量函數在二維圖像中尋找最優解采用了分而治之的方法,分為8或4個一維問題。下面分析下從左到右方向的一維動態規划問題。

理解:每一個點的代價聚合值是“當前代價+min(路徑相鄰點的當前視差代價聚合值,路徑相鄰點的視差差值為1的代價聚合值 + P1,路徑相鄰點的視差插值大於1的最小代價聚合值 + P2)- 路徑相鄰點的視差插值大於1的最小代價聚合值 ”,聽起來夠繞口的,其實就好比最小代價的蔓延,當前代價聚合值由當前代價和路徑上一點的加了懲罰的最小代價聚合值所決定(最后那一項純粹是為了防止數字過大,這是常用手段)。引用這篇博文的解釋

Step 4. 多種Refinement
Outlier Detection : 跟傳統的左右一致性檢查一樣,對於左右一致性約束條件不滿足

條件的異常點被分為遮擋點和誤匹配點,其中對於異常點p的左視差Disp(p),如果極線范圍內右Disp(p)被check則該點定義為誤匹配點,否則該點為遮擋點。
Iterative Region Voting : 傳播異常視差點
這里再次用到cross-based自適應窗口,對於異常視差點p,統計窗口內所有有效視差點構成直方圖Hp,如果滿足下面條件
其中,表示直方圖內最高投票所在d值,表示

對於預定的閥值,不斷傳播進入遮擋區域,並將覆蓋后的點標記點“有效點”迭代參與下次異常點投票過程中。
Proper Interpolation : 根據異常點分類采取不同的修復方式
大體可以理解為對於遮擋點,該點來自背景的可能性比較大,采用周圍16點相鄰點視差最小值進行填充;否則采用相鄰顏色相似度最高點的視差值進行填充。
Depth Discontinuity Adjustment : 非連續視差適應,先求下邊緣檢測,對於視差值在邊緣上的點p找到邊緣兩側點p1, p2,該點視差 取這兩個側點中代價最小的那個視差值。該方法可以減少非連續性錯誤。
Sub-pixel Enhancement : 二次線性插值

最后常規添加一個中值濾波。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM