特徵與描述子

特徵比對

一旦兩張影像被提煉成帶描述子的關鍵點集合,特徵比對就是回答「影像 A 中哪個特徵與影像 B 中哪個特徵是同一個實體點?」的步驟。由於每個描述子只是一個總結局部外觀的向量(或位元串),兩個彼此對應的特徵應該有非常相似的描述子。所以比對本質上是最近鄰搜尋:對其中一張影像的每個描述子,在另一張影像中找出在適當距離下最接近的描述子,對 SIFT 等浮點描述子用歐氏距離,對 ORB 等二進位描述子用漢明距離。

樸素的做法,暴力比對,把 A 中每個描述子與 B 中每個描述子都比較一遍;它精確但是二次方的,對大型集合很慢。近似最近鄰函式庫如 FLANN(對浮點描述子用 kd-tree、對二進位描述子用局部敏感雜湊)以一點點準確度換取大幅加速,當每張影像有數千個特徵、而你要對一個大型資料庫比對時這很重要。關鍵在於:比對只找到最接近的描述子;它並不知道那個最接近的描述子是否真的是一個正確的對應。

這就是為什麼原始的最近鄰比對嚴重摻雜假配對、必須加以過濾。最重要的單一過濾器是 Lowe 的比值測試:對每個查詢特徵,找出它的兩個最近鄰,只有當最近者明顯比次近者更近時才保留該配對(常用的比值門檻是 0.7 到 0.8)。其推理是:一個獨特、正確的配對會從所有替代選項中脫穎而出,而一個模稜兩可或重複紋理的特徵會有兩個大致等近的候選,應予捨棄。第二個過濾器是交叉檢驗(互為最近鄰):只有當 A 在 B 中的最佳配對反過來也以 A 為其最佳配對時才保留該配對,這能去除單方面的巧合。

即便經過比值測試與交叉檢驗,仍有些錯誤配對存活,尤其在重複結構(如建築上的一排窗戶)的情況。最終且決定性的過濾器是幾何驗證:用 RANSAC 對配對擬合一個全域幾何模型(平面用單應矩陣,一般場景用基本矩陣或本質矩陣),並把每個與該模型不一致的配對當作離群值丟棄。這個兩階段哲學——以外觀為基礎的比對,後接以幾何為基礎的剔除——是拼接、辨識、SLAM 與運動恢復結構的骨幹。現代學習式比對器如 SuperGlue 與 LightGlue 走得更遠,以注意力機制聯合推理兩張影像中的所有特徵,以化解成對最近鄰比對無法解決的模稜兩可。

一個常見的無聲失敗:對二進位的 ORB 描述子套用比值測試或 kd-tree(為歐氏距離而建),或對浮點的 SIFT 向量套用以漢明為基礎的比對。務必讓描述子型別搭配正確的距離度量與索引,否則每個下游步驟都會繼承到垃圾配對。