더북(TheBook)

14.3.1 OpenCV 특징점 매칭

특징점 매칭(matching)이란 두 영상에서 추출한 특징점 기술자를 비교하여 서로 비슷한 특징점을 찾는 작업을 의미합니다. 특히 크기 불변 특징점으로부터 구한 기술자를 매칭하면 크기와 회전에 강인한 영상 매칭을 수행할 수 있습니다.

OpenCV에서 특징점을 매칭하는 방법을 설명하기에 앞서 OpenCV에서 특징점 매칭 정보를 저장할 때 사용하는 DMatch 클래스에 대해 알아보겠습니다. DMatch 클래스는 한 장의 영상에서 추출한 특징점과 다른 한 장의 영상, 또는 여러 영상에서 추출한 특징점 사이의 매칭 정보를 표현할 수 있습니다. 간략화한 DMatch 클래스 정의를 코드 14-5에 나타냈습니다.

코드 14-5 간략화한 DMatch 클래스 정의

01    class DMatch
02    {
03    public:
04        DMatch();
05        DMatch(int _queryIdx, int _trainIdx, float _distance);
06        DMatch(int _queryIdx, int _trainIdx, int _imgIdx, float _distance);
07     
08        int queryIdx;
09        int trainIdx;
10        int imgIdx;
11     
12        float distance;
13     
14        bool operator<(const DMatch &m) const;
15    };

 

4~6행 DMatch 클래스 생성자입니다.

8행 DMatch::queryIdx 멤버 변수는 질의 기술자 번호를 나타냅니다.

9행 DMatch::trainIdx 멤버 변수는 훈련 기술자 번호를 나타냅니다.

10행 DMatch::imgIdx 멤버 변수는 훈련 영상 번호를 나타냅니다. 여러 장의 영상을 훈련 영상으로 설정한 경우에 사용됩니다.

12행 DMatch::distance 멤버 변수는 두 기술자 사이의 거리를 나타냅니다.

14행 DMatch 클래스에 대한 크기 비교 연산자 재정의이며, DMatch::distance 멤버 변수 값을 이용하여 크기를 비교합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.