粗匹配:
- 暴力匹配(漢明距離):顧名思義,取a圖中一個點,依次計算與b圖中所有點的距離,找出距離最近點
- FLANN 快速最近鄰匹配:實現原理:對高維數據依次以其中一維作為划分依據將所有點構建一個KD-Tree,從集合中快速查找。效率比暴力匹配高的多。
去粗取精:匹配錯誤點剔除
1.Lower's算法:為了進一步篩選匹配點,來獲取優秀的匹配點,這就是所謂的“去粗取精”。一般會采用Lowe’s算法來進一步獲取優秀匹配點。
為了排除因為圖像遮擋和背景混亂而產生的無匹配關系的關鍵點,SIFT的作者Lowe提出了比較最近鄰距離與次近鄰距離的SIFT匹配方式:取a圖像中的1個SIFT關鍵點,並找出其與b圖像中歐式距離最近的前2個關鍵點,在這兩個關鍵點中,如果最近的距離除以次近的距離得到的比率ratio少於某個閾值T,則接受這一對匹配點。保證最近和次近的距離較遠,盡可能保證最近的准確性。
Lowe推薦ratio的閾值為0.8,但作者對大量任意存在尺度、旋轉和亮度變化的兩幅圖片進行匹配,結果表明ratio取值在0. 4~0. 6 之間最佳,小於0. 4的很少有匹配點,大於0. 6的則存在大量錯誤匹配點,所以建議ratio的取值原則如下:
ratio=0. 4:對於准確度要求高的匹配;ratio=0. 6:對於匹配點數目要求比較多的匹配;ratio=0. 5:一般情況下。
2.RANSAC:設定閾值,抽樣誤差大於閾值的點就可認為是外點(迭代)
3.LMEDS:不需要閾值,但是內點數小於50%會失效(迭代)
LMedS也從樣本中隨機抽選出一個樣本子集,使用LS對子集計算模型參數,然后計算所有樣本與該模型的偏差。但是與Ransac LS不同的是,LMedS記錄的是所有樣本中,那個是中位偏差的樣本的偏差,稱為Med偏差(這也是LMedS中Med的由來),以及本次計算得到的模型參數。由於這一變化,LMedS不需要預先設定閾值來區分inliers和outliers。重復前面的過程N次,從中N個Med偏差中挑選出最小的一個,其對應的模型參數就是最終的模型參數估計值。其中迭代次數N是由樣本集子中樣本的個數、期望的模型誤差、事先估計的樣本中outliers的比例所決定。