雙目立體匹配演算法是計算機視覺中比較經典的問題。有大量經典的雙目立體匹配演算法。本文簡要介紹一下雙目立體匹配的常用基本流程,也可以說是套路。 第一次寫這麼長的博文,我想到**寫**。
更詳細內容的可見文章a taxonomy and evaluation of dense two-frame stereo correspondence algorithms。
測試資料:www.middlebury.edu/stereo
通常來說,硬體採集的影象首先經過畸變矯正,極線糾正,然後進行立體匹配,最後三角化為點雲。如圖1所示。首先需要說明的是,這裡講的立體匹配演算法假定影象已經經過極線1
糾正,從而兩幅影象極線約束匹配變成影象的一行內匹配問題。在圖1中對應的為紅色的部分。以下沒有特殊說明,兩幅影象均指經過極線糾正後的影象。立體匹配問題這裡主要考慮怎樣計算極線糾正後的兩幅影象之間的視差圖。因為在基線和焦距已知的情況下,視差圖可以和深度圖互相轉換,從而完成由雙目估計物體深度(三維資訊)的工作。
圖1 由立體視覺裝置採集的影象生成點雲的基本步驟
如果物體是乙個朗伯體2
,或者說物體表面是朗伯表面,那麼,從任意位置和方向看物體表面同一點,得到的輻射能量是相同的。在可見光範圍內,輻射也可以簡單理解為rgb顏色值。那麼匹配問題自然是按行尋找相同顏色的畫素。理想很豐滿,現實很骨感。一方面有可能在影象同一行內出現相同的顏色,無法區分。另一方面現實世界物體很難是乙個朗伯體,即便是表面同乙個點,在不同影象上的顏色都有差異。所以就有了諸多的演算法來解決這些問題。
首先可以假設物體表面深度是連續的,或者是分段連續的。(因為前文說了視差和深度在基線和焦距已知的情況可以相互轉換,這裡有時候說視差,有時候說深度,不必在意)。這樣在影象鄰域之間可以產生乙個平滑約束。另外雖然場景不是乙個朗伯表面,但是不同相機看相同點顏色還是非常接近的。
現在講一講立體匹配的套路。主要由四個演算法模組組成:
matching cost computation; 匹配代價的計算
cost (support) aggregation;代價聚合
disparity computation/optimization; 視差圖計算
disparity refinement;視差圖優化
乙個簡單的想法是對於灰度影象,直接計算畫素之間灰度差來作為匹配代價。但是這不夠魯棒。通常採用乙個以當前畫素為中心的window來代替畫素,這些畫素可以排成乙個向量。向量的值為畫素的灰度值。這樣兩個畫素的匹配問題就轉換成兩個向量之間的距離。可以是l1,l2,或者夾角的余弦值等等。可以參考mad、sad、ssd、msd、ncc、ssda、satd等匹配運算元。
圖1 將乙個畫素附近視窗轉換為乙個向量
通常來說,以一幅影象作為參考影象,另外一幅成為目標影象,比如左影象為參考影象,右影象為目標影象。匹配過程為按行搜尋,以某一行為。對於參考影象乙個畫素,目標影象有w個可能得匹配畫素,w為影象寬度,這裡假設兩幅影象大小相同。所以對於每一行,需要做w*w次的匹配。當然,通過一定的假設和前提條件,我們可以限定視差範圍為dmax那麼匹配即為w*dmax次,參見圖2。對於參考影象每一畫素的匹配代價的次數按照深度排列,乙個w*h的影象,得到w*h*dmax的代價立方體,深度為視差值或者可以可以轉換為視差的值。如圖3。有了代價立方體以後,我們需要得到每個畫素的最優代價。這通常使用下面的技術方案:代價聚合。代價聚合通常是乙個立體匹配演算法中非常關鍵的部分。因為一些雜訊,光照差異,顏色不同和匹配歧義,匹配代價最優(代價最小)的不一定是真正的同名點,可以通過假設場景是連續的來進行處理。比較容易想到的是要考慮每個畫素鄰域資訊。這裡如果考慮某個畫素與周圍所有影象的關係,那麼就是乙個全域性演算法:如果僅僅考慮區域性視窗內,那麼就是乙個區域性演算法。還有一種介於二者之間,稱為半全域性演算法。顯然,考慮的越多,計算量越大,但效果越好。通常來說,全域性演算法較慢,到效果很棒。
極線幾何也稱作核線幾何,二者是乙個意思,在攝影測量領域中常稱作核線幾何。極線約束也稱作核線約束 ↩︎
朗伯體是指當入射能量在所有方向均勻反射,即入射能量以入射點為中心,在整個半球空間內向四周各向同性的反射能量的現象,稱為漫反射,也稱各向同性反射,乙個完全的漫射體稱為朗伯體 ↩︎
雙目立體匹配
公式 其中資料項描述了匹配程度,平滑項體現了定義場景的約束,c是匹配代價 或稱penalty p是不同兩畫素p和q視差的函式,一般稱之為平滑項 考慮到能量優化問題在一維空間的複雜度是多項式級的,因此一些研究試圖做一些近似來降低演算法的複雜度。例如,半全域性演算法 sgm 就利用了這一特性將二維問題簡...
雙目立體匹配回顧筆記
1.基於視窗的全域性演算法視窗設定問題 匹配是假設表面前向平行的,而事實上與此會違背,另外在不連續的區域背景部分是無法對準的,因此視窗太大不利於匹配的準確性,另外視窗太小的話對於若紋理和重複紋理區域引入更多的outlier,試驗中比較難把握乙個最優值 根據影象區域的性質動態選擇視窗大小是乙個可以考慮...
立體匹配 立體匹配過程
立體匹配就4個步驟 匹配代價計算,代價聚合,計算視差,視差精化 匹配代價計算 一般是通過計算左右兩圖對應畫素3個通道的灰度值差來決定匹配代價的,常用的就是基於畫素點匹配代價計算,一般有ad,sd,tad什麼的,基於區域的匹配代價計算一般有sad,ssd,stad之類的。匹配代價計算會生成乙個disp...