특징점 구현 알고리즘 클래스를 이용하려면 먼저 각 특징점 클래스 객체를 생성해야 합니다. 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 문서 사이트를 참고하기 바랍니다.