더북(TheBook)

특징점 구현 알고리즘 클래스를 이용하려면 먼저 각 특징점 클래스 객체를 생성해야 합니다. Feature2D를 상속받아 만들어진 특징점 클래스들은 모두 create()라는 이름의 정적 멤버 함수를 가지고 있으며, 각 특징점 클래스 객체는 해당 클래스의 create() 멤버 함수를 이용하여 생성해야 합니다. 특징점 클래스마다 정의된 create() 정적 멤버 함수의 인자 구성은 각기 다르지만, 모든 인자에 기본값이 지정되어 있기 때문에 인자를 지정하지 않고도 사용할 수 있습니다.5 그리고 각 특징점 클래스의 create() 멤버 함수는 해당 클래스 객체를 참조하는 스마트 포인터를 반환합니다.

예를 들어 ORB 클래스 객체를 생성하는 ORB::create() 멤버 함수 원형은 다음과 같습니다.

static Ptr<ORB> ORB::create(int nfeatures = 500, float scaleFactor = 1.2f, 
 int nlevels = 8, int edgeThreshold = 31,
                            int firstLevel = 0, int WTA_K = 2, 
 ORB::ScoreType scoreType = ORB::HARRIS_SCORE, 
 int patchSize = 31, int fastThreshold = 20);

nfeatures

검출할 최대 특징 개수

scaleFactor

피라미드 생성 비율(영상 축소 비율)

nlevels

피라미드 단계 개수

edgeThreshold

특징을 검출하지 않을 영상 가장자리 픽셀 크기

firstLevel

항상 0을 지정해야 합니다.

WTA_K

BRIEF 기술자 계산 시 사용할 점의 개수. 2, 3, 4 중 하나를 지정해야 합니다.

scoreType

특징점 점수 결정 방법. ORB::HARRIS_SCORE 또는 ORB::FAST_SCORE 둘 중 하나를 지정합니다.

patchSize

BRIEF 기술자 계산 시 사용할 패치 크기

fastThreshold

FAST 코너 검출 방법에서 사용되는 임계값

반환값

ORB 객체를 참조하는 Ptr 스마트 포인터 객체

 

5 각 특징점 클래스의 create() 멤버 함수에서 사용하는 인자 구성은 해당 알고리즘에 특화된 내용이 많습니다. 그러므로 각각의 create() 함수에 대한 자세한 사항은 관련 논문과 OpenCV 문서 사이트를 참고하기 바랍니다.

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