•
Keypoint is a locally distinct location in an image 위치를 찾는게 키포인트
•
The feature descriptor summarizes the local structure around the keypoint 키포인트 주변의 특징을 정의하는게 descriptor
1. SIFT : Scale invariant feature problem
2. BRIEF : Binary Robust Independent Elementary Features
3. ORB : Oriented FAST Rotated BRIEF
Procedure
Step 1 : Gaussian smoothing
Step 2 : Difference-Gaussians and find extrema
Step 3 : Maxima Suppression for edges
→ 각각 이미지 마다 다른 파라미터를 가지는 Gaussian을 통해 DOG를 만들고, Scale 바꿔서도 진행
그렇게 구한 DOG를 통해 locally distinct point를 찾는다
Descriptor
이 f vector를 통해서 각 point의 corresponding을 확인한다
f의 방법에는 위처럼 많음
그 중에서 세 개만 보자
SIFT : Scale Invariant Feature Transform
SIFT 알고리즘을 통해 각 point에서의 descriptor를 알아낼 수 있음
여기서 descriptor는 image gradient histogram?
image 특징을 변환시키기 위해서는 다음과 같은 세가지의 변화와 무관하게 feature를 뽑을 수 있음
1.
Image translation : 모든 픽셀을 오른쪽으로 이동한 경우도 한 pixel에 대한 same descriptor라고 할 수 있음
2.
rotation : 회전 역시 ㅇㅇ
3.
scale : 멀리서 찍은 이미지라도 비교할 수 있어야 함
그리고 부분적으로 불변해야하는 것도 있는데 바로
1.
illumination changes
2.
affine transformations and 3d projection
이는 visual landmark를 다른 각도, 거리, 밝기에서 detection할 때 적합하다
SIFT Feature
p : xy좌표
s : 어느 scale에서 연산된 것인가
r : image gradient를 통한 orientation histogram
f : 128 dim, feature descriptor
→ view-point dependent : 보는 point에 따라 달라지는 값들
→ mainly independent : 두 이미지 사이의 correspondence 확인하려면 체크
SIFT Descriptor in Sum
•
특정 point를 잡고 해당 주변를 작은 region으로 나누고 각 부분의 gradient를 구한다
point 잡고
지역 나눠서 gradient 구하고
각 지역 별로 8개의 방향을 통해 gradient를 표현
이걸 다 concat하면 128(16x8)의 histogram 구할 수 잇음
자
여기까지 Point와 Descriptor를 구했어
그림 이제 아래의 두 이미지에서 각 point가 상응되는 건지 어떻게 알 수 있을까?
여태 구한 f vector를 통해 비교를 해서 구할 수 있어
근데 이제 정확성에 약간 문제가 있을 수 있지
벡터 값은 비슷한데 다른 point로 correspondence 하는거야
이 문제를 해결하기 위한 방법은 역시 존재해
Lowe’s Ratio Test
3단계를 통해 모호한 매칭점을 없애
1. descriptor q에 유사한 p1, p2를 Euclidian distance d를 통해 구해
2. 특정 threshold보다 distance가 낮은 것을 골라
3. d(q, p_1) / d(q, p_2) < 1/2가 되도록 하자
여기서 distance는 q와의 차이라고 봐도 무방할 듯
근데 이 작업은 완벽하지는 않어
•
SIFT의 단점
연산이 expensive
patenting issue (뭐 저작권이 만료됐다나)
Binary Descriptors
이 방법은 연산이 빠르고 쉬운 compute가능
•
Key Idea
◦
point로 부터 patch를 임의의 크기의 patch를 정해
◦
그 범위 내의 pixel들을 쌍을 맺게 연결해줘
◦
각 pair별로 intensity를 비교해서 0, 1의 binary bit를 반환
◦
그리고 모든 값을 concat
장점
•
Compact Descriptor
•
Fast to compute - 간단한 intensity 비교
•
단점
•
pair의 조합은 한번만 정할 수 있음
•
test한 pixel의 비트 순서를 고정시켜야 함
BRIEF : Binary Robust Independent Elementary Features
•
256 bit descriptor
•
5 different geometries as sampling strategies
•
Noise : operations performed on a smoothed img to deal with noise
5가지 기하학적 방법 예시 pairing
5번째 말고는 성능이 대체로 좋긴한데 만약 이미지가 조금 움직인다면 descriptor는 변할 것이고 이는 단점으로 이어짐
이를 개선시킨 방법으로 아래가 있음
ORB : Oriented fast Rotated BRIEF
BRIEF에 Rotation 요소를 가미한 방법