SIFT 특징
키포인트라 부르며, 위치와 스케일 정보를 가짐 (y, x, sigma)
-> sigma를 이용하여 크기 변환에 대응 가능
기술자 추출을 위한 윈도우 크기를 sigma에 따라 조절하거나, 스무딩이 필요
SIFT 기술자 추출 위치
SIFT 특징은 피라미드 구조
키포인트가 옥타브 1의 3번째 영상(sigma=2.5398)에서 검출된 경우.
옥타브 o = 1, sigma_o = 2.5398로
SIFT 기술자는 o번 옥타브, sigma_o 영상에서 기술자 추출
회전 변환애 대응하기 위한 주 방향 탐색
이미지 회전에 대응하기 위해 윈도우 방향 조절이 필요.
-> SIFT 기술자 추출전 주 방향 dominant orientation을 탐색
1. 키 포포인트를 중심으로 일정 크기 윈도우를 씌움
2. 윈도우 내 화소 집합으로 그라디언트 방향 히스토그램 취득
* 그라디언트 방향은 10도 간격으로 양자화, 36개 구간을 가진 히스토그램
3. 그라디언트 방향 히스토그램 계산시 그라디언트 크기를 가중치로 사용하며,
가우시안을 씌워 멀어질수록 적은 가중치 방영되도록 함.
* 아래 그림은 그라디언트 방향 히스토그램 계산을 위해 가우시안 블러링된 이미지에 방향 강도를 나타낸 영상
4. 히스토그램에서 가장 큰 값을 가진 방향을 주 방향으로 사용.
* 최고 값의 0.8배 이상인 방향이 존재할 경우 해당 방향도 주방향으로 판단하여 새 키포인트 생성.
=> 위치는 같지만 방향이 다른 여러 키포인트가 생성 될 수 있음.
* 키포인트 정보 : 위치, 스케일, 주 방향 (y, x, sigma, theta)를 가짐.
* 아래는 위 이미지에 대해 주방향 취득을 위한 그라디언트 히스토그램
주방향을 이용한 SIFT 기술자 추출
키포인트에 적절한 크기의 회전된 4 x 4윈도우를 씌움.
이때 윈도우는 주방향 theta가 기준되도록 회전
해당 키포인트의 그라디언트 방향을 계산 후,
8단계로 양자화 된 그래디언트 방향 히스토그램을 구함
주방향 탐색때 처럼 회전된 윈도우 내부의 그라디언트 크기를 가중치로, 가우시안 블러링을 적용함.
하나의 키포인트 기술자는 4 x 4 x 8 = 128차원의 특징벡터 x로 추출됨
광도에 불변한 SIFT 기술자
1. 키포인트 기술자 특징 벡터 x를 벡터의 크기(노름)로 ||x||로 나누어 단위 벡터로 변환
2. 단위 벡터에 0.2보다 큰 요소가 존재시(상한 0.2), 0.2로 변경 후 다시 단위 벡터로 변환
=> 스케일, 회전, 광도 불변한 128차원 키포인트, 특징벡터 x 완성
위 과정을 거쳐 구한 SIFT 특징은
(y, x, sigma, theta, v_x)로 정리할수 있으며,
이 키포인트 특징 집합이 매칭 연산의 입력으로 사용되어, 두 영상 사이 매칭 쌍을 찾는데 사용
opencv에서 SIFT
sift = cv.SIFT_create()
kp, des = sift.detectAndCompute(gray,None)
sift 객체를 생성 후
sift.detectAndCompute(명암 영상,None)으로
키포인트들과 키포인트의 기술자들을 반환 반음.
키포인트 기술자들은 num of keypoints x 128 차원의 형태로 반환됨
docs.opencv.org/master/da/df5/tutorial_py_sift_intro.html
'인공지능' 카테고리의 다른 글
컴퓨터 비전 & 패턴 인식 - 26. 이진 기술자 (0) | 2020.12.15 |
---|---|
컴퓨터 비전 & 패턴 인식 - 25. SIFT 변형 (0) | 2020.12.15 |
컴퓨터 비전 & 패턴 인식 - 23. 매칭, 인식을 위한 특징 사용 (0) | 2020.12.15 |
컴퓨터 비전 & 패턴 인식 - 22. 그래프 기반 영상 분할 (0) | 2020.12.14 |
컴퓨터 비전 & 패턴 인식 - 21. 영상 분할 기본 (0) | 2020.12.14 |