1. 程式人生 > >雙目立體匹配

雙目立體匹配

一、立體匹配定義:

立體匹配是立體視覺研究中的關鍵部分(雙目匹配與深度計算(三角化),直接法中也有一定關係)。其目標是在兩個或多個視點中匹配相應畫素點,計算視差。通過建立一個能量代價函式,對其最小化來估計畫素點的視差,求得深度。如圖:雙目視差與深度的關係

極線約束:所謂極線約束就是說同一個點在兩幅影象上的對映,已知左圖對映點p1,那麼右圖對映點p2一定在相對於p1的極線上,這樣可以減少待匹配的點數量。

二、分類:

①根據演算法執行時約束的作用範圍:分為區域性(local)匹配演算法和全域性(Global)匹配演算法。

②基於生成的視差圖:可分為稠密(Dense)匹配和稀疏(Sparse)匹配。

            稠密匹配:是基於生成的視差圖,對於所有畫素都能生成確定視差值,稱為稠密匹配。

            稀疏匹配:只選擇關鍵畫素點[通常為角點或者邊緣點]計算視差值的方法稱為稀疏匹配,該演算法計算速度較快,但後續還需要通過插值演算法計算缺失畫素點的視差值,因此應用場景上有很大限制。

三、全域性和區域性匹配:

3.1 全域性匹配:

其中資料項描述了匹配程度,平滑項體現了定義場景的約束,C是匹配代價,P是不同兩畫素pq視差的函式,一般稱之為懲罰項(penalty),當p點和q點視差不相等時,P>0,且與兩者差值越大,P值越大。當pq視差相等時,P=0。由於全域性匹配演算法在數學上是一個能量函式的優化問題,因此可以找到最優解。這個問題被證明在二維空間是NP困難的。因此,即使全域性演算法具有準確性較高的優點,其計算速度確非常慢,在實時性要求高的場合不適合使用全域性立體匹配演算法。

3.2 區域性匹配:

  區域性立體匹配演算法又稱基於視窗的方法或基於支援區域的方法。演算法對參考影象中的每個畫素計算一個合適大小、形狀和權重的視窗,然後對這個視窗內的視差值進行加權平均。理想的支援視窗應該完全覆蓋弱紋理區域,並在視窗內深度連續。與全域性立體匹配演算法相似,通過優化一個代價函式的方法計算最佳視差。但是,在區域性立體匹配演算法的能量函式中,只有基於區域性區域的約束資料項,沒有平滑項。區域性匹配演算法僅利用某一點鄰域的灰度、顏色、梯度等資訊進行計算匹配代價,計算複雜度較低,大多實時的立體匹配演算法都屬於區域性立體匹配的範疇,但區域性立體匹配演算法對低紋理區域、重複紋理區域、視差不連續和遮擋區域匹配效果不理想。


3.3立體匹配演算法步驟

1)匹配代價計算(Cost Computation):

  計算匹配代價,即計算參考影象上每個畫素點IR(P),以所有視差可能性去匹配目標影象上對應點IT(pd)的代價值,因此計算得到的代價值可以儲存在一個h*w*d(MAX)的三維陣列中,通常稱這個三維陣列為視差空間圖(Disparity Space Image,DSI)。匹配代價時立體匹配的基礎,設計抗噪聲干擾、對光照變化不敏感的匹配代價,能提高立體匹配的精度。因此,匹配代價的設計在全域性演算法和區域性演算法中都是研究的重點。

2)代價聚合(Cost Aggregation)

  通常全域性演算法不需要代價聚合,而區域性演算法需要通過求和、求均值或其他方法對一個支援視窗內的匹配代價進行聚合而得到參考影象上一點p在視差d處的累積代價CA(p,d),這一過程稱為代價聚合。通過匹配代價聚合,可以降低異常點的影響,提高信噪比(SNR,Signal Noise Ratio)進而提高匹配精度。代價聚合策略通常是區域性匹配演算法的核心,策略的好壞直接關係到最終視差圖(Disparity maps)的質量。

3)視差計算(Disparity Computation):

  區域性立體匹配演算法的思想,在支援視窗內聚合完匹配代價後,獲取視差的過程就比較簡單。通常採用‘勝者為王’策略(WTA,Winner Take All),即在視差搜尋範圍內選擇累積代價最優的點作為對應匹配點,與之對應的視差即為所求的視差。即P點的視差為

4)後處理(Post Process)

  一般的,分別以左右兩圖為參考影象,完成上述三個步驟後可以得到左右兩幅視差影象。但所得的視差圖還存在一些問題,如遮擋點視差不準確、噪聲點、誤匹配點等存在,因此還需要對視差圖進行優化,採用進一步執行後處理步驟對視差圖進行修正。常用的方法有插值(Interpolation)、亞畫素增強(Subpixel Enhancement)、精細化(Refinement)、影象濾波(Image Filtering)等操作。

四、度量函式(代價函式)

①最常見的三種匹配代價為絕對差值和(Sum of Absolute Differences,SAD)、截斷絕對差值和(Sum of Truncated Absolute Differences,STAD)、差值平方和(Sum of squared Differences, SSD)。

注意:式中N(p)表示p的支援視窗,當N(p)退化為只含有p點時,即逐畫素計算匹配代價。這三種匹配代價對曝光強度變化非常敏感,對相機內參和曝光非常敏感(LSD-SLAM直接法的缺點)。計算上述匹配代價的時間複雜度為O(w*h*N(p)),可以使用積分圖(Integral Image)或方框濾波(Box Filtering)的方法使時間複雜度下降到O(w*h)。

②Z.Gu最早提出將Rank變換函式引入到立體匹配中,與其他相似性測度相比,Rank變換對影象噪聲和立體影象的亮度差異不那麼敏感,且計算快,實時性好。Rank變換函式公式如下:

              

  ③census代價是充分考慮了影象區域性相關的特性,而不是直接使用灰度值做差,具有抗光影畸變的作用,效率高、穩定性強,其核心思想與LBP演算法的思想相近,是一種非常有效的代價計算方法。Census匹配代價計算如下:

         

其中HAMMING(a,b)用來計算二進位制序列a和b的海明距離(Hamming Distance),可以用異或操作計算。seq[I(P)]函式根據p點畫素值和p的支援視窗內畫素值生成一個二進位制序列。

            

  ④另外常用的匹配代價還有歸一化互相關NCC(Normalized Cross Correlation)、BT代價函式(S.Birchfield & C.Tomasi)等。

  歸一化互相關NCC:

程式碼參考:

注:這裡視差圖與深度圖比例關係,如圖1所示,當作深度圖看吧

參考部落格:https://www.cnblogs.com/ding-jing/p/8654137.html