cv::Feature2D
  detect()
  compute()
  detectAndCompute()cv::SIFT
cv::xfeatures2d::SURF
cv::KAZE
cv::AKAZE
cv::ORB
cv::FastFeatureDetectorcv::KeyPoint
  pt
  size
  anglestatic 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 |