더북(TheBook)

14.2.2 OpenCV 특징점 검출과 기술

이 절에서는 OpenCV에서 제공하는 특징점 검출 알고리즘 구현 클래스에 대해 알아보고, 이들 클래스를 이용하여 영상에서 특징점을 검출하고 기술자를 구하는 방법에 대해 설명하겠습니다. 또한 OpenCV에서 제공하는 함수를 이용하여 검출된 특징점을 화면에 출력하는 방법도 알아보겠습니다.

특징점 검출 방법을 설명하기에 앞서 OpenCV에서 특징점 정보를 저장할 때 사용하는 KeyPoint 클래스에 대해 알아보겠습니다. 특징점을 키포인트라고도 부르기 때문에 클래스 이름이 KeyPoint입니다. 간략화한 KeyPoint 클래스 정의를 코드 14-3에 나타냈습니다.

코드 14-3 간략화한 KeyPoint 클래스 정의

01    class KeyPoint
02    {
03    public:
04        KeyPoint();
05        KeyPoint(Point2f _pt, float _size, float _angle = -1, float _response = 0,
06            int _octave = 0, int _class_id = -1);
07        ...
08     
09        Point2f pt;
10        float   size;
11        float   angle;
12        float   response;
13        int     octave;
14        int     class_id;
15    };

 

4~6행 KeyPoint 클래스 생성자 및 멤버 함수입니다.

9행 KeyPoint::pt 멤버 변수는 특징점 좌표를 나타냅니다.

10행 KeyPoint::size 멤버 변수는 특징점 크기(지름)를 나타냅니다.

11행 KeyPoint::angle 멤버 변수는 특징점의 주된 방향(각도)을 나타냅니다.

12행 KeyPoint::response 멤버 변수는 특징점 반응성을 나타내며, 좋은 특징점을 선별하는 용도로 사용할 수 있습니다.

13행 KeyPoint::octave 멤버 변수는 특징점이 추출된 옥타브(피라미드 단계)를 나타냅니다.

14행 KeyPoint::class_id 멤버 변수는 특징점이 포함된 객체 번호를 나타냅니다.

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