勵志

勵志人生知識庫

sgm算法

SGM(Semi-Global Matching)算法是一種用於計算雙目視覺中視差的半全局匹配算法。該算法由Heiko Hirschmuller提出,並首次發表於2005年的CVPR文章中。SGM算法結合了局部匹配和全局匹配的優點,在精度和效率上取得了良好的平衡。

SGM算法的核心步驟包括:

代價計算。SGM採用基於互信息(Mutual Information, MI)的匹配代價計算方法。互信息是一種對影像明暗變化不敏感的相關性測度,它通過兩張圖像各自的熵以及兩者的聯合熵來定義。熵代表圖像的信息量,是基於灰度的機率分布所得到的統計量。圖像的熵越大,代表包含的像素灰度越豐富,灰度分布越均勻。

代價聚合。由於代價計算步驟只考慮了局部的相關性,對噪聲非常敏感,因此SGM算法通過代價聚合步驟,增加一個額外的約束,通過懲罰臨近視差的變化來保證平滑。聚合過程中,會對像素的鄰域內的所有像素進行懲罰,其中對相鄰像素視差變化很大(大於1個像素)的情況進行更嚴厲的懲罰。

SGM算法在OpenCV中的實現為Semi-Global Block Matching(SGBM),這是一種高效的立體匹配算法,廣泛套用於實時立體視覺中。