專題系列
1. 雙目立體匹配經典算法之PatchMatchStereo概述:Slanted support windows傾斜支持窗模型
2. 雙目立體匹配經典算法之PatchMatchStereo概述:基於PatchMatch的視差估計
3. 雙目立體匹配經典算法之PatchMatchStereo概述:後處理(一致性檢查與視差填充)
PatchMatchStereo1是Michael Bleyer等在2011年發表於British Machine Vision Conference(BMVC)上的一篇雙目立體匹配算法文章,非常經典,傾斜支持窗的思路打破傳統固定窗口式局部匹配的思維桎梏,在Middlebury數據集上獲得非常好的匹配效果,一段時間內高居排行榜第一名。更難能可貴的是,它和SGM一樣數據泛化能力出色,對大部分數據都能取得不錯的結果,所以也被很多商業軟件所實現,是真正能夠產品化的算法。
本系列博主將爲大家介紹經典的PatchMatchStereo(PMS)算法原理,希望能夠對同學們的立體匹配算法研究有所幫助。
上篇博客中,博主介紹了PMS的視差估計方法:基於PatchMatch的視差估計法。本篇則是介紹PMS的後處理部分,順便給PMS概述專題收尾。
PMS後處理
同大多數立體匹配算法一樣,PMS的後處理一是常規操作:一致性檢查和視差填充。
一致性檢查
一致性檢查的介紹自不必細說,還不太瞭解的請查看博主的另外兩篇博客
有一點特別的是,上篇博客提到PMS有一個視圖傳播,即左右視圖同名點的視差平面的傳播,這意味着如果執行視圖傳播,則右視圖也需要和左視圖一樣執行一次隨機+N次傳播的步驟。我們執行右視圖計算時,需要注意右視圖的視差值依然等於左視圖的列號減去右視圖的列號,即。
所有迭代傳播完成後,計算左視圖像素點在右視圖上的同名點,判斷是否成立,若不成立,則不滿足一致性約束,將點和點的視差都賦爲無效值。
視差填充
PMS的視差填充策略和SGM不一樣,想了解SGM的填充策略的請查看博主前面的博客:
PMS的策略是:
(1)搜索無效像素左右最近的有效像素。記錄它們的視差平面和。
(2)將像素的座標代入和,計算出視差,選擇較小的那個視差作爲的視差值。選較小的含義是遮擋像素往往是出現在背景。(背景總是被前景遮擋,前景流氓做的大啊,挨近相機就是有優勢!)
以上兩個步驟可以爲像素填充一個視差值,但有個問題是這樣做會產生水平線條紋,這個不難理解,此方法沒考慮其他方向的視差,只考慮了水平方向的視差,肯定會有條紋效應(一般來說,只考慮單方向就會出現該單方向條紋,比如只考慮水平,就出現水平條紋)。
爲了緩解這個問題,作者想了個辦法,既然填充只考慮了單方向,那就再做個多方向濾波!
搞一個加權中值濾波!
中值濾波做圖像處理的再熟悉不過了(不認識的面壁去吧!),加權中值濾波不過就是給窗口內每個格子一個權值,權值計算公式依舊是它:
什麼,沒見過?博主勉爲其難在推銷一次自己前面的博客:
雙目立體匹配經典算法之PatchMatchStereo概述:Slanted support windows傾斜支持窗模型
選擇和前面一樣的值,中值濾波的窗口和匹配時的窗口大小一樣。(如果是時序傳播,那這裏的窗口就是三維的)
實驗圖
首先我們看論文中最大的一張實驗圖:(右邊是實驗分析)
另外貼一下PMS加入時序傳播的視頻立體匹配實驗結果:(有趣的時序傳播,但好像很少見到實際應用的?)
系列完結!大家有不懂的,可以留言給我。要代碼的,我反正是沒有,哈哈!但我是有這個計劃的,看時間吧!
Bleyer M , Rhemann C , Rother C . PatchMatch Stereo - Stereo Matching with Slanted Support Windows[C]// British Machine Vision Conference 2011. ↩︎