실제 매칭을 수행하는 BFMatcher 또는 FlannBasedMatcher 클래스 객체를 생성하려면 각 클래스에 정의되어 있는 create() 정적 멤버 함수를 사용해야 합니다. 먼저 BFMatcher::create() 함수 사용법은 다음과 같습니다.
static Ptr<BFMatcher> BFMatcher::create(int normType = NORM_L2, bool crossCheck = false); |
|
• normType |
기술자 거리 측정 방식. NORM_L1, NORM_L2, NORM_HAMMING, NORM_HAMMING2 중 하나를 지정합니다. |
• crossCheck |
이 값이 true이면 i번째 질의 기술자와 가장 유사한 훈련 기술자가 j이고, j번째 훈련 기술자와 가장 유사한 질의 기술자가 i인 경우에만 매칭 결과로 반환합니다. |
• 반환값 |
BFMatcher 객체를 참조하는 Ptr 스마트 포인터 객체 |
BFMatcher::create() 함수는 두 개의 인자를 받을 수 있지만, 모두 기본값이 지정되어 있기 때문에 생략할 수 있습니다. BFMatcher::create() 함수의 첫 번째 인자 normType에는 두 기술자 사이의 거리를 측정하는 방식을 지정합니다. SIFT, SURF, KAZE 알고리즘처럼 실수 값으로 구성된 기술자를 사용하는 경우에는 보통 NORM_L2 또는 NORM_L1 상수를 지정합니다. ORB, BRIEF, AKAZE 알고리즘처럼 이진 기술자를 사용하는 경우에는 normType에 NORM_HAMMING 플래그를 지정해야 하며, 이 경우에는 두 이진 기술자 사이의 해밍 거리를 사용합니다. 만약 ORB 기술자에서 WTA_K를 3 또는 4로 설정한 경우에는 normType을 NORM_HAMMING2로 지정해야 합니다.
FlannBasedMatcher 객체를 생성하는 FlannBasedMatcher::create() 함수는 조금 단순한 원형을 가지고 있습니다.
static Ptr<FlannBasedMatcher> FlannBasedMatcher::create(); |
|
• 반환값 |
FlannBasedMatcher 객체를 참조하는 Ptr 스마트 포인터 객체 |