影象特徵點檢測與匹配評價——量化
歡迎轉載,轉載請註明出處,謝謝!
目前影象匹配中,區域性特徵匹配佔據了絕大部分,常用的區域性特徵匹配方法有Harris、SIFT、SURF、ORB等等,不同的特徵點檢測和匹配方法尤其獨特的優勢和不足;
特徵點匹配經過Ransac演算法優化後仍存在錯誤匹配點對,需要優化後的匹配結果進行量化評價;
特徵點檢測和匹配評價一般包括兩個部分,分別為檢測和匹配的評價。
1、特徵點檢測評價
評價特徵點檢測方法的優劣常常用到repeatability(重複率)這個概念。
《a performance evaluation of local descriptors》一文提出了特徵點檢測器和匹配結果的評價準則,我的理解是:圖A、B是兩幅待匹配影象,圖A對映到圖B有一個單應性矩陣H1,圖B對映到圖A有單應性矩陣H2,圖A檢測出N1個特徵點,圖B檢測出N2個特徵點,因為影象A和B有部分影象不重疊,故將A圖檢測的特徵點座標由H1算出在B圖的座標,去掉不合格(計算結果超出在B影象座標)的特徵點,剩下的特徵點數記為n1;同樣,B圖的特徵點經過處理剩下n2個;分母便是min(n1, n2)。將圖A剩下的特徵點由H1計算出在圖B中的座標,與圖B檢測出的特徵點的座標求距離,即dist(h1*a1, b1),若距離小於閾值ε,則認為是重複的,這麼做是因為得到的單應性矩陣不一定完全精確以及一些別的誤差原因。
《An affine invariant interest point detector》中對repeatability定義進行了延伸,針對affine invariant的影象特徵點。
repeatability計算式的分母可以和原來定義相同,分子的定義correspondence滿足兩個條件:
1、同之前定義,即設定ε=1.5;
2、regions對映到另一幅影象中重疊誤差小於0.2。
這裡第二點是因為特徵點檢測器得到的特徵點實際上是根據特徵點附近區域計算梯度來選取特徵點,實際上檢測的特徵區域(region),如Harris-Affine檢測的是一個橢圓區域,SIFT檢測的是一個圓形區域;當左圖一特徵點區域在經過乘上單應性矩陣H後實際,該區域會發生變化,所以需要判斷變化之後的區域與右圖某一特徵點區域的重疊誤差,誤差<0.2,則判斷自是一對特徵點。
2、特徵點匹配評價
特徵點匹配的評價一般涉及到兩個概念,即Recall(召回率)和Precision(精確率),我們先來了解一下這兩個概念。
精確率和召回率是廣泛用於資訊檢索和統計學分類領域的兩個度量值,用來評價結果的質量。
——精確率是檢索出相關文件數與檢索出的文件總數的比率,衡量的是檢索系統的查準率;
——召回率是指檢索出的相關文件數和文件庫中所有的相關文件數的比率,衡量的是檢索系統的查全率。
在資訊檢索中:
- 精確率 = 提取出的正確資訊條數 / 提取出的資訊條數
- 召回率 = 提取出的正確資訊條數 / 樣本中的資訊條數
下面是一個非常經典的解釋Recall和Precision的圖,我做了一點兒說明:
Precision和Recall指標有時候會出現的矛盾的情況,可以繪製Precision-Recall曲線,曲線越靠上部,結果越好。
對比資訊檢索的評價,在特徵點匹配時:
A指的是實際為匹配點對,且該匹配演算法得到了這些匹配對;
B指的是實際為匹配點對,但該匹配演算法沒有得到這些匹配對;
C指的是實際為錯誤匹配對,但該演算法得到了這些匹配對;
即Precision為匹配結果中有多少是準確的,Recall就是所有正確的匹配結果有多少通過匹配演算法得到了。
在第一部分中已經說明了根據兩影象間的單應性矩陣H計算兩個特徵點是否重複,這裡設定一個correspondence變數,作為重複特徵點的數量,則匹配結果評價的兩個引數Precision和Recall有如下公式:
公式中,#correct matches表示匹配結果中正確匹配點對,#correspondences表示特徵點檢測時重複特徵點對(特徵點重複即認為實際為正確匹配點對,但可能被匹配演算法匹配上,也可能未匹配上),#false matches表示匹配結果中錯誤匹配點對。其中,正確與錯誤匹配點對可以用上面提到的兩個判斷特徵點是否重複的條件來判定。
因此,在評價特徵點匹配結果時,首先應當知道兩個影象間的單應性矩陣H,然後通過特徵點檢測演算法得到左右影象中的特徵點資訊,根據單應性矩陣得到重複特徵點數,即#correspondences;接著由特徵點匹配演算法得到的匹配結果計算Precision和Recall,繪製1-precision和recall曲線,曲線靠上方的結果較出色!
參考曲線圖:
(圖片來源——《A Performance Evaluation of Local Descriptors》)
以上內容為我的理解,可能存在理解不當的地方,歡迎指正!