立體匹配中的全局匹配——動態規劃筆記

轉自https://blog.csdn.net/chuhang_zhqr/article/details/52586793

 

近來研究立體匹配,從入門開始,先學習一些基本的算法思想。 
立體匹配算法中,全局匹配是一個很重要的部分,利用圖像的全局約束信息,對局部圖像的模糊不敏感,它的計算代價很高。全局匹配算法通過構建全局能量函數,然後通過優化方法最小化全局能量函數以求得緻密視差圖。

全局匹配算法一般有動態規劃、置信傳播、模擬退火、圖割法、遺傳學等,這裏首先介紹動態規劃,也是從一些論文中提取的思想,可能有不對的地方,望指正。

動態規劃的思想就是把求解整個圖像深度值的過程分解爲一些子過程,逐個求解子過程,具體過程爲根據外極線順序約束,通過在視差圖像上尋找最小代價路徑得到最終視差圖,從而減少了算法的複雜度,動態規劃的思想體現了順序約束和連續性約束。傳統的動態規劃算法可以很好的處理因局部紋理單一而造成的誤匹配,算法複雜度不高,缺點是匹配過程忽略了每條極線間視差的約束,導致了視差圖有條紋瑕疵現象。

動態規劃大致就是這個思路。

2:動態規劃立體匹配基於極線約束,通過依次尋找每條極線上匹配點對的最小代價路徑的動態尋優方法求解全局能量最小化,得到匹配視差圖。算法步驟: 
A:階段劃分:傳統的方法是隻在水平方向尋找掃描點,所以算法是在水平掃描線的視差空間切面上尋找最優路徑的過程,以像素點的行方向爲橫座標,視差值d爲縱座標,依次將整個過程分爲1,2,3,4……k個階段,每個x座標點對應一個階段,把立體匹配劃分成可以排序的若干個階段。 
這裏寫圖片描述

B:確定狀態 
將上述各個階段所處的匹配階段用不同的狀態表示。狀態的選擇要滿足無後向性。無後向性的意思就是當前階段的狀態只是之前階段的綜合結果,並不對後續階段產生影響。 
這裏寫圖片描述

共有三種狀態:相互匹配M,左可見右遮擋爲L(某點在右圖中沒有匹配點),右可見左遮擋爲R(如果前一個點的視差比後一個視差大,就是前面點的匹配點在後一個點的匹配點的後面)。 
C:狀態轉移方程:所謂狀態轉移方程就是根據前一階段的狀態確定當前階段的狀態,根據順序性的約束,允許的狀態轉移形式有7種(用小寫字母表示前一階段的狀態,大寫字母表示當前階段的狀態) 
這裏寫圖片描述

0表示正確匹配,1、2表示匹配產生左圖像遮擋,4、5表示產生右圖像遮擋點,3、6表示圖像由背景進入前景,視差跳變產生並不連續點。

D:求取最優解,並記錄該最優解的路徑 
在實際編程中,按順序自左向右,或者自右向左對各階段(即同一極線上的點)依次進行計算,計算相似性測度函數和平滑函數的最小值,當所有階段都計算完成後,全局能量函數最小的一條最優匹配路徑也就得出來了。

全局能量函數表示如下, 
E(d)= E(data) + E(smooth) 
其中 E(data) 爲圖像數據約束項,判斷匹配像素點之間的相似性, E(smooth)爲相鄰點間的平滑約束項,判斷相鄰點之間的連續性。

數據項由匹配代價獲得 
這裏寫圖片描述 
其中這裏寫圖片描述表示左像素點與視差爲d的右像素點的匹配代價函數。

這裏寫圖片描述 
其中N表示相鄰像素對的集合,dp,dq分別表示像素點p與像素點q的視差,平滑項s(dp,dq)表示相鄰像素點p、q之間的平滑約束,定義如下:

這裏寫圖片描述 
其中P1,P2,P3表示不同情況下的懲罰常量,Cp,q表示待匹配的像素點與其相鄰點q之間的色彩差異,當相鄰點視差值相同時,懲罰量爲0;差值爲1時懲罰量爲P1,當差值大於1且兩個對應像素點的色彩差異小於閾值T時,懲罰量爲P2,否則懲罰量爲P3。P1,P2,P3,T分別賦值10、20、40、35 。

Cp,q也可以是圖像中相鄰像素點p和q之間的梯度。

最優解d*=arg minE(d),這裏是指使E(d)取得最小值時的d值。d是一個數組,傳統的是一行行求每個點的視差,每一行組合起來就是視差圖,並且是稠密的。

傳統的動態規劃思想: 
我做一個類比,求這個最優路徑就相當於上面求怎麼最少步數的登上80層,每一步上幾個臺階就相當於每一個點的視差值,每一點的視差值得範圍是設定的視差搜索範圍,求出最優路徑就是把每一步上的臺階數計算出來了,相當於每一步的視差也就計算出來了。邊界值就設爲0,可能有更好的設法,然後依次計算。

先逐個計算每個像素在每個視差下的匹配代價聚合值,這樣一行像素就構成一個以行像素爲橫座標,以視差值爲縱座標的二維數組,然後根據唯一性約束和順序性約束使全局能量函數最小,就是求所有點的視差匹配代價加上平滑約束得到的值最小。這樣既求得比較精確的視差又讓視差平滑了。 
不知道這樣理解對不對。誰理解的更好,請指導一下,菜鳥求指導

這樣的動態規劃求出的只是在水平掃描線上尋徑,忽略了掃描線間視差的約束,視差圖有明顯的條紋現象。

3:改進的動態規劃:

A:基於行列雙通道的動態規劃算法,在行掃描線上尋徑的同時考慮垂直方向的視差一致約束,對掃描行間也進行動態規劃的尋優。首先用水平路徑所求的匹配視差結果作爲初始視差值,再次在列方向上二次動態尋優,求取能量函數最小值,生成緻密視差圖。

引入一種獎懲的方法,通過減小初始視差值d*所對應匹配代價函數的值來引導其在列方向動態尋優,即將在行方向上動態尋優求解得到的初始視差值作爲一個結果,然後對這個視差結果對應的數據項給予一個更新,其它數據項在這個過程中保持不變。 
這裏寫圖片描述 
r是一個相對於代價函數較小的數,這裏取3,太大會對列尋優沒作用,太小對行尋優沒意思。

在列方向上進行動態尋優,即爲只考慮列方向上相鄰像素點的視差約束,運算過程與行方向一致。這樣可以改啥條紋現象,但時間複雜度比原來高出一倍,失去了效率優勢。

這樣得到的結果有少量明顯的視差點。後處理方法:在行方向上如果一個像素點左右鄰域上像素點的視差相等,則把其左右鄰域像素視差值賦予該像素點;在列方向上如果一個像素點其上下鄰域像素點的視差相等,則將其上下鄰域像素的視差值賦予該像素點,其它情況下不變。

B:基於樹結構的動態規劃算法 
在全局能量函數中的平滑項 E(smooth)表示相鄰像素點p、q在其對應視差值dp、dq情況下約束項。 
這裏寫圖片描述 
其中集合N表示像素點間相互約束的鄰域範圍,這個算法是研究鄰域N的幾種樹結構DP算法。 
這裏寫圖片描述 
a就是傳統的行掃描線動態尋優; 
b是一種類似於樹的結構來連接四個方向的點,排除邊界點與角點,鄰域N選擇上下左右四個方向,每個點都與它的四個相鄰像素點有關,算法有效解決行掃描線間的垂直約束問題。 
c、e是算法對每一個像素點建立水平和垂直兩個方向的樹結構,首先在行掃描方向進行動態尋優計算最佳匹配代價值,然後檢查最優值是不是也是垂直方向的最優值,用WTA得到最優視差值。

d是將匹配中二維約束近似轉化爲多個一維約束,採用以中心像素點爲根節點的八個不同方向的平滑約束對圖像進行動態規劃尋徑,缺點是在求解最優視差值的過程中各個方向都不能提供有效的紋理信息使得算法在弱紋理區域誤匹配率高。

其中b的解決方案: 
首先對每一列做向下的動態規劃運算,得到極線間從最左邊開始的每一個像素的最優匹配代價,將所得的優化代價存放在矩陣 
這裏寫圖片描述 
這裏寫圖片描述

接着對每一列做向上的動態規劃運算,得到極線間從最下邊開始的每一個像素的左右匹配代價,這時的q指向p下面的像素,把得到的結果存放在矩陣這裏寫圖片描述

爲了得到每個像素的優化代價,可以將向上和向下動態規劃運算代價進行累積,在座標(x,y)的像素記爲px,y,則賦予它視差d時的最小能量函數 
這裏寫圖片描述

上式等於 
這裏寫圖片描述

最後在得到優化矩陣後,將極線間的動態規劃與極線上的動態規劃結合,用已取得的運算結果更新視差空間代價值 
這裏寫圖片描述

其中a是用來調整極線間動態規劃對視差結果影響的參數。

然後進行極線上的動態規劃,在基於上面的更新後的視差空間進行的,最後把累積結果存放在矩陣這裏寫圖片描述 
最小化這個矩陣,就可以求取每個像素的視差了。 
這種方法複雜度過大,時間太長。

4:基於控制點的雙向動態規劃匹配。 
利用事先確定的正確匹配點作爲匹配控制點,在動態規劃過程中對尋優路徑進行指導,從而煎炒條紋瑕疵,降低了複雜度。

控制點是那些事先知道的正確的匹配點。那麼就可以通過將這些正確匹配點設爲一個較小值迫使所找尋的路徑經過這些正確點。這些點滿足左右一致性約束;避免僞最優匹配,匹配代價小於遮擋代價,排除孤立的控制點,即那些沒有直接近鄰控制點的點。

這裏寫圖片描述 
b中的黑點就是控制點,有效縮小搜索空間。

具體步驟: 
A:得到每個像素的初始匹配代價C(x,y,d),處理遮擋問題需要計算出左右視差圖像,故左右視差圖像都需要得到。 
B:控制點集的計算,採用以下方法計算控制點集。

這裏寫圖片描述

C:初始匹配代價的聚集 
首次在極線間分別採用下面兩式進行自上而下和自下而上的動態規劃計算,然後進行垂直方向的匹配代價累積 
這裏寫圖片描述

這裏寫圖片描述 
爲避免視差圖在極線間出現垂直條紋,採用權重方式實現匹配代價的更新。 
這裏寫圖片描述

D:基於控制點的雙向動態規劃 
以左圖爲準時,從左到右搜索最優路徑,以右圖爲準時,從右到左搜索最優路徑。當路徑到達控制點時,記錄下控制點處的視差值,用來約束控制點後面像素的能量函數計算,進而達到約束後面像素的視差結果的作用。非控制點處,左右極線上分別進行動態規劃的計算,然後利用動態規劃回溯的方法尋找每個像素的視差。

計算出左右視差圖像後,根據弱一致性約束,當左視差圖像中的某點視差大於右視差圖像對應點的視差時採用其對應點的視差取代,這樣可以有效的處理半遮擋及前景物體區域的誤匹配。 
對於無紋理區域的誤匹配利用同區域已匹配點的視差填充。 
這裏寫圖片描述

對大視差的圖像對誤差比較大。 
若求取的控制點個數爲C,那麼控制點的採用可以使傳統複雜度由O(MND*D)降低爲O((MN-C)D*D),獲得的控制點越多,動態規劃的計算複雜度越小。

在論文中看到的測試結果

這裏寫圖片描述

這裏寫圖片描述

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章