크기 불변 특징
- 영상의 크기가 바뀌더라도 반복적으로 검출될 수 있는 특징점
용어
- 특징점(feature point) = 키포인트(keypoint) = 관심점(interest point)
- 기술자(descriptor) = 특징 벡터(feature vector)
- 각각의 특징점 근방의 부분 영상을 표현하는 실수 또는 이진 벡터
- Mat 객체로 표현하는데, 행의 개수는 특징점 개수, 열 개수는 특징점 기술자 알고리즘에 의해 결정됨
- 종류
- 실수 기술자
- 주로 특징점 부근 부분 영상의 방향 히스토그램 사용
- SIFT, SURF, KAZE 등이 사용하며, L2 norm을 사용하여 유사도 판단
- 이진 기술자
- 이진 테스트를 이용하여 부분 영상의 특징을 기술
- AKAZE, ORB 등이 사용하며, Hamming distance를 사용하여 유사도 판단
알고리즘
SIFT, SURF, KAZE, AKAZE, ORB 등
SIFT
- Scale Invariant Feature Transform
- 계산 단계
Detector
- Scale-space extreme dectection
- Gaussian, Subsampling, DOG(Difference of Gaussian)
- 키포인트 찾기(Keypoint locallization)
- DOG 영상의 모든 점에서 local maxima 또는 local minima 선택
- 동일한 스케일 DOG 영상에서 주변 8개 점과 상/하 스케일 DOG 영상에서 18개 점, 총 26개 점을 비교하여 지역 최솟값 또는 지역 최댓값 선택
Descriptor
서브픽셀 정확도, 낮은 대비 극점 제거, 에지 성분 제거- Orientation assignment
- 방향 불변 특성을 위한 주방향 성분 추출
- 키포인트 근방의 부분 영상을 추출
- 부분 영상의 모든 픽셀에서 그레디언트 크기와 방향을 계산 → 히스토그램 생성
- 히스토램 최댓값 방향과 최댓값의 80% 이상 크기를 갖는 빈 방향을 키포인트 바ㅇ향으로 설정
- 키포인트 기술자(Keypoint description)
- 각 키포인트 위치에서 스케일과 기준 방향을 고려하여 사각형 영역 선택
- 사각형 영역을 4x4 구역으로 분할하고, 각 구역에서 8방향의 방향 성분 히스토그램을 구함 (4x4x8 = 128)
- 예시 이미지
KAZE
- 비선형 스케일 스페이스에서 공기의 흐름
- 가우시안 함수 대신 비선형 확산 필터를 이용하여 특징점 검출
- 예시 이미지
ORB
- FAST 방법으로 키포인트를 찾고 Harris 코너 방식으로 순위를 매김
- 키포인트의 방향 성분을 이용하여 BRIEF 방법에서 픽셀 쌍의 좌표를 회전하여 특징 벡터 추출
- 가장 빠르다
- 예시 이미지
AKAZE
- KAZE 알고리즘의 속도 향상 버전
- 비선형 공간에서 피라미드 구축
- SIFT와 ORB의 중간 정도 성능과 속도를 보임
- 예시 이미지
OpenCV의 특징점 클래스
- Feature2D 클래스
- SIFT
- SURF (라이센스 정책)
- KAZE
- AKAZE
- ORB
- FastFeatureDetector (Descriptor만 제공)
- 메소드
detect
특징점 검출 함수drawKeypoints
검출된 특징점 그리기 함수compute
기술자(특징 벡터) 계산detectAndCompute
특징점 검출 및 기술자(특징 벡터) 계산
- Keypoint 클래스
특징점 매칭
- 두 영상에서 추출한 특징점 기술자를 비교하여 유사한 기술자끼리 선택하는 작업
- 유사도 측정 방법
- 실수 특징 벡터 → L2 norm
- 이진 특징 벡터 → hamming distance
- OpenCV 매칭 클래스
DescriptorMatcher
- 서브 클래스
BFMatcher
브루스포스트 전수 조사FlannBasedMatcher
K-D Tree 사용- 메소드
match
knnMatch
DMatch
drawMatches
특징점 매칭 결과 영상 생성 함수
좋은 매칭 선별 방법
- DMatch::distance 값이 작은 것 N개 사용
- knnMatch() 함수를 사용하여 두개의 매칭 결과을 확인하여 distance 값의 비율이 낮은 것 선택
호모그래피
- 두 평면 사이의 투시 변환
- 8DOF : 최소 4개의 대응점 좌표 필요
findHomegraphy
호모그래피 행렬 구하기- method >
RANSAC
- RANSAC
- 이상치가 많은 원본 데이터로부터 모델 파라미터를 예측하는 방법
- 방법
- 임의의 두 점을 찾아 직선을 그린다
- 나머지 점들과 직선 사이의 거리를 계산한다
- 에러가 허용 오차 안쪽에 있는 점들의 개수를 구한다
- 다른 두 점을 다시 임의로 선택하여 과정을 반복한다
- 예시 이미지