cv::Feature2D
detect()
compute()
detectAndCompute()
cv::SIFT
cv::xfeatures2d::SURF
cv::KAZE
cv::AKAZE
cv::ORB
cv::FastFeatureDetector
cv::KeyPoint
pt
size
angle
static Ptr<SIFT> SIFT::create(...);
static Ptr<KAZE> KAZE::create(...);
static Ptr<AKAZE> AKAZE::create(...);
static Ptr<ORB> ORB::create(...);
Feature2D 상속 클래스들은 모두 create()라는 이름의 정적 멤버 함수를 제공
각각의 create() 함수는 다수의 인자를 가지지만 디폴트 인자가 정의되어 있음
Ptr()은 OpenCV에서 구현한 스마트 포인트 클래스
image : 입력 영상
keypoints : 출력 검출된 특징점 정보
mask : 마스크 영상
virtual void Feature2D::detect(InputArray image, std::vector<KeyPoint>& keypoints,
InputArray mask = noArray());
image : 입력 영상
keypoints : 입력 영상에서 검출된 특징점
outImage : 출력 영상
color : 특징점 색상
flags : 특징점 그리기 방법
DrawMatchesFlags::DEFAULT | 특징점 위치만을 표현하는 작은 크기의 원 |
DrawMatchesFlags::DRAW_RICH_KEYPOINTS | 특징점의 크기와 방향을 반영한 원 |
void drawKeypoints(InputArray image,
const std::vector<KeyPoint>& keypoints,
InputOutputArray outImage,
const Scalar& color = Scalar::all(-1),
int flags = DrawMatchesFlags::DEFAULT);
keypoint
방향 성분 X
하나의 코너에 중복된 것이 많음
각각의 특징점 근방의 부분 영상을 표현하는 실수 또는 이진 벡터
OpenCV에서는 Mat객체로 표현
행 개수 : 특징점 개수
열 개수 : 특징점 기술자 알고리즘에 의해 정의됨
주로 특징점 부근 부분 영상의 방향 히스토그램을 사용
보통 float 자료형을 사용하여 실수 정보를 저장하는 방식
실수 기술자를 사용하는 알고리즘 : SIFT, SURF, KAZE 등
실수 기술자는 보통 L2 norm을 사용하여 유사도를 판단
이진 테스트를 이용하여 부분 영상의 특징을 기술
보통 uchar 자료형을 사용하여 비트 단위로 영상 특징 정보를 저장
이진 기술자를 사용하는 알고리즘 : AKAZE, ORB, BRIEF 등
이진 기술자는 Hamming distance를 사용하여 유사도를 판단
images : 입력 영상
keypoints : 입력 검출된 특징점 정보
descriptors : 출력 특징점 기술자 행렬
virtual void Feature2D::compute(InputArray images, std::vector<KeyPoint>& keypoints,
OutputArrays descriptors);
image : 입력 영상
mask : 마스크 영상
keypoints : 특징점 정보
descriptors : 특징점 기술자 행렬
useProvidedKeypoints : 인자로 전달된 keypoints 정보 사용 여부
virtual void Feature2D::detectAndCompute(InputArray image, InputArray mask,
std::vector<KeyPoint>& keypoints,
OutputArray descriptors,
bool useProvidedKeypoints = false);
descriptors
속도 ORB
속도 + 성능 AKAZE
성능 SIFT
특징점 알고리즘 | 기술자 지원 | depth | 이진 기술자 | Extra Module |
---|---|---|---|---|
SIFT | 128 | CV_32F | X | X |
SURF | 64 | CV_32F | X | O |
KAZE | 64 | CV_32F | X | X |
AKAZE | 61 | CV_8U | O | X |
ORB | 32 | CV_8U | O | X |
BRISK | 64 | CV_8U | O | X |