DMatch 클래스에서 distance 멤버 변수는 두 키포인트 기술자가 얼마나 차이가 나는지를 나타내는 매칭 척도의 역할을 합니다. 두 특징점이 서로 유사하면 distance 값이 0에 가깝고, 서로 다른 특징점이면 distance 값이 크게 나타납니다. distance 계산 방식은 다차원 벡터의 유클리드 거리(Euclidean distance)로 주로 계산하며, 다만 이진 기술자끼리 비교하는 경우에는 해밍 거리를 사용합니다. DMatch 클래스 객체는 보통 사용자가 직접 생성하지 않고, 특징점 매칭 알고리즘 내부에서 생성하여 사용자에게 반환합니다.
OpenCV에서 제공하는 특징점 매칭 클래스 상속 관계를 그림 14-10에 나타냈습니다. OpenCV의 특징점 매칭 클래스는 DescriptorMatcher 클래스를 상속받아 만들어집니다. DescriptorMatcher 클래스는 match(), knnMatch(), radiusMatch() 등의 가상 멤버 함수를 가지고 있는 추상 클래스이며, DescriptorMatcher 클래스를 상속받은 BFMatcher 클래스와 FlannBasedMatcher 클래스는 이들 멤버 함수 기능을 실제로 구현하도록 설계되어 있습니다. match() 함수는 가장 비슷한 기술자 쌍을 하나 찾고, knnMatch() 함수는 비슷한 기술자 쌍 k개를 찾습니다. radiusMatch() 함수는 지정한 거리 반경 안에 있는 기술자 쌍을 모두 찾아 반환합니다.
▲ 그림 14-10 OpenCV에서 제공하는 특징점 매칭 클래스