兩張影像之間 feature matching 的進行,就是利用 feature descriptor 來作計算,計算的方式分為: Brute-Force Matcher 及 FLANN based Matcher。





Brute-Force Matcher

以 Brute-Force Matcher 來說,就是將影像中的 feature descriptor 依次取出與另一張影像所有的 feature descriptor 作距離的計算,其中距離最近的,即為配對到的 feature。

為了增加準確性,可以將上述方法再作改進,作交叉驗証,舉例來說,第一張影像的 feature - i,在第二張影像所找到的最近距離的 feature 為 j,則反過來計算,第二張影像的 feature - j,在第一張影像所找到的最近距離的 feature 也必須為 i。

在 OpenCV 中,其 Brute-Force Matcher 的實作為 cv::BFMatcher(int normType = NORM_L2, bool crossCheck = false)
第一個參數為 normType,對於不同方法產生的 feature descriptor,需作不同的設定。
第二個參數為 crossCheck,即是決定要不要作交叉驗証。

OpenCV 對於畫 keypoint 提供的函式為 cv::drawKeypoints(...),而對於畫比對 keypoint 所提供的函式為 cv::drawMatches(...)




FLANN based Matcher

FLANN 為 Fast Library for Approximate Nearest Neighbors,它是一群演算法的集合,用來加快對最近 feature 的尋找。

如果要使用 FLANN based Matcher,須要輸入兩個參數,來說明要使用何種演算法及在該演算法中要使用遞迴計算的次數。

在 OpenCV 中,其 FLANN based Matcher 的實作為 cv::FlannBasedMatcher(...)




Reference

Feature Matching

文字內容 或 影像內容 部份參考、引用自網路,如有侵權,請告知,謝謝。
創作者介紹

拾人牙慧點滴

silverwind1982 發表在 痞客邦 PIXNET 留言(0) 人氣()