一、立體匹配算法的分類
在立體匹配中,匹配問題可以看成是尋找兩組數據相關程度的過程。立體匹配算法由多種分類。
①根據算法運行時約束的作用范圍:分為局部(local)匹配算法和全局(Global)匹配算法。
②基於生成的視差圖:可分為稠密(Dense)匹配和稀疏(Sparse)匹配。稠密匹配:是基於生成的視差圖,對於所有像素都能生成確定視差值,稱為稠密匹配。稀疏匹配:只選擇關鍵像素點[通常為角點或者邊緣點]計算視差值的方法稱為稀疏匹配,該算法計算速度較快,但后續還需要通過插值算法計算缺失像素點的視差值,因此應用場景上有很大限制。
由於自己最近研究主要集中於局部匹配算法和全局匹配算法,因此以下也將針對此處描述下。
1、全局匹配算法
全局(半全局)立體匹配算法主要是采用了全局的優化理論方法估計視差,建立一個全局能量函數,其包含一個數據項和平滑項,通過最小化全局能量函數得到最優的視差值。其中,圖割(Graph cuts, GC)、置信傳播(Belief Propagation,BP)、動態規划(Dynamic Programming,DP),粒子群算法(Particle Swarm Optimization,PSO)、遺傳算法(Genetic Algorithm,GA)等優化算法都是常用的求解能量最小化的方法。
全局匹配算法一般定義如下能量函數:
其中數據項描述了匹配程度,平滑項
體現了定義場景的約束,C是匹配代價,P是不同兩像素p和q視差的函數,一般稱之為懲罰項(penalty),當p點和q點視差不相等時,P>0,且與兩者差值越大,P值越大。當p和q視差相等時,P=0。由於全局匹配算法在數學上是一個能量函數的優化問題,因此可以找到最優解。這個問題被證明在二維空間是NP困難的。因此,即使全局算法具有准確性較高的優點,其計算速度確非常慢,在實時性要求高的場合不適合使用全局立體匹配算法。
考慮到能量優化問題在一維空間的復雜度是多項式級的,因此一些研究試圖做一些近似來降低算法的復雜度。例如,半全局算法(SGM)就利用了這一特性將二維問題簡化為8到16個一維問題,以實現一種較好的近似。其在各個方向上計算累積代價后,將各方向代價相加得到總代價,這樣就模擬了二維的優化問題。SGM是立體匹配逐漸取代激光雷達生成視差圖的技術關鍵,同時也是商業軟件中應用最多的立體匹配算法。
2、局部匹配算法
局部立體匹配算法又稱基於窗口的方法或基於支持區域的方法。算法對參考圖像中的每個像素計算一個合適大小、形狀和權重的窗口,然后對這個窗口內的視差值進行加權平均。理想的支持窗口應該完全覆蓋弱紋理區域,並在窗口內深度連續。與全局立體匹配算法相似,通過優化一個代價函數的方法計算最佳視差。但是,在局部立體匹配算法的能量函數中,只有基於局部區域的約束數據項,沒有平滑項。局部匹配算法僅利用某一點鄰域的灰度、顏色、梯度等信息進行計算匹配代價,計算復雜度較低,大多實時的立體匹配算法都屬於局部立體匹配的范疇,但局部立體匹配算法對低紋理區域、重復紋理區域、視差不連續和遮擋區域匹配效果不理想。
基於區域的局部立體算法是最早開始研究,算法成熟、計算簡單、速度快,能進行圖像實時處理,匹配精度較高。基本原理:在參考圖像中選擇一個點,選擇該點鄰域內一個支持窗口,然后依據一定的相似性判斷准則,在待匹配圖像中尋找與支持窗口最相似的子窗口,該子窗口所對應的像素點即為對應的匹配點。
固定窗口代價聚合使用固定大小和形狀的窗口作為代價聚合的基元,通常是一個矩形,並假設支持窗口內的其它像素點與待匹配點具有相同的視差。固定窗口法精度不高,但易實現、耗時短,在一些對實時性要求極高的場合得到了應用。
基於雙邊濾波的代價聚合算法仍然使用固定大小和形狀的窗口,但窗口內的元素權重不同,權重由目標圖像在該窗口內像素與窗口中心的灰度差和距離計算。基於雙邊濾波的代價聚合算法精度高,但計算復雜,實時性差,算法性能隨窗口尺寸指數增加。
基於分割的代價聚合算法的主要思想是:預先將作為參考圖像的左圖進行分割,對於支持窗口內與窗口中心處於同一分割的像素,對應的權值取1,否則為一個遠小於1的正數。但是圖像分割是一個非常耗時的操作,同樣無法在實時性要求較高的場合使用。
基於十字的代價聚合算法(Cross-based Cost Aggregation,CBCA)的支持窗口形狀並不確定,會根據匹配點鄰域的灰度值而改變,具體實現后面的更新中會介紹。該方法可以使用GPU並行計算,具有較好的實時性,現廣泛應用於各種算法的代價聚合步驟。
注意哦:局部匹配算法的計算量比全局匹配算法更小,在優秀的算法支持下能實現實時處理。
二、立體匹配算法的評測平台
①Middlebury測試平台:提供了專門用於評價立體匹配算法的測試圖像對(Stereo Pair),包括Tsukuba測試圖像對,Venus測試圖像對,Teddy測試圖像對和Cones測試圖像對,它們的分辨率分別為384*288,434*383和450*375,同時還給出了這些測試圖像對的真實視差圖。
②KITTI算法評測平台:旨在評測對象(機動車、非機動車、行人等)檢測、目標跟蹤等計算機視覺技術在車載環境下的性能,為機動車輔助駕駛應用做技術評估與技術儲備。KITTI包含市區、鄉村和高速公路等場景采集的真實圖像數據。
三、立體匹配的步驟
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)等操作。
四、立體匹配相似性測度研究(匹配代價)
相似性測度函數用於度量參考圖像中的匹配基元和目標圖像中的匹配基元的相似性,即判斷參考圖像和目標圖像中兩點為對應匹配點的可能性,也稱為匹配代價,記為C(p,d)。
①最常見的三種匹配代價為絕對差值和(Sum of Absolute Differences,SAD)、截斷絕對差值和(Sum of Truncated Absolute Differences,STAD)、差值平方和(Sum of squared Differences, SSD)。
注意:式中N(p)表示p的支持窗口,當N(p)退化為只含有p點時,即逐像素計算匹配代價。這三種匹配代價對曝光強度變化非常敏感,但由於計算相對簡單,速度非常快,在業界使用仍然較為廣泛。計算上述匹配代價的時間復雜度為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:
注意:復合代價被證明具有良好的效果,正被越來越多的算法采用。X.Mei以下式將Census和SAD相結合。
不同匹配代價的處理能力不同,而復合代價能夠使它們相互補充,提高算法穩定性。但是,如何確定各個代價的權值依然是一個需要考慮的問題。有的算法采用先驗參數,有的算法則是在運算時確定,兩者各有利弊。