勵志

勵志人生知識庫

sgbm算法

SGBMSemi-Global Block Matching)算法是一種用於計算雙目視覺中視差(disparity)的算法,主要套用於立體匹配問題中。SGBM結合了全局匹配算法和局部匹配算法的優點,能夠在保證視差圖質量的同時降低計算複雜度。其算法流程大致可以分為以下幾個步驟:

預處理。使用水平Sobel運算元對左右圖像進行邊緣檢測,得到梯度圖像。這一步是為了增強圖像的邊緣信息,為後續的匹配代價計算做準備。

匹配代價計算。對於每個像素,在不同視差下計算其與對應像素的匹配代價。通常使用絕對差或平方差作為代價函式。這一步的目的是度量像素之間的相似性。

能量函式最小化。定義一個能量函式,包括數據項和平滑項。數據項表示匹配代價,平滑項表示相鄰像素的視差連續性。使用動態規劃的方法,沿著多個方向(如8個或16個)計算累積代價,並求取最小值作為最終代價。這一步通過綜合考慮局部的匹配代價和視差的平滑性來提高視差圖的準確性。

視差圖生成。根據最終代價為每個像素選擇最佳視差,並生成視差圖。

視差圖後處理。對視差圖中的異常值或空洞使用一些後處理方法進行修復或填充,例如中值濾波、WLS濾波等。

SGBM有許多參數可以調整,如最小視差值(minDisparity)、視差範圍(numDisparities)、匹配塊大小(blockSize)等,這些參數影響著算法的性能和結果。