[2023-05-01] 1. 크기 불변 특징과 SIFT 알고리즘
크기 불변 특징과 SIFT 알고리즘
크기 불변 특징
- 오른쪽의 큰 이미지에서 왼쪽에 있는 박스 이미지가 어디에 어떻게 놓여있는지 매칭한 결과를 보여주고 있음
- 오른쪽의 큰 이미지에서 책이 살짝 가려져있음에도 크기를 잘 인식하는것을 확인할 수 있음
영상의 특징 중에서 코너의 특징
- 평탄한 영역, 에지 영역에 비해 변별력이 높음
- 이동, 회전 변환에 강인
-
크기 변환에 취약
- 코너는 객체를 보는 Scale에 따라 코너가 아닌 것 처럼 검출될 가능성이 높음
- 여전히 코너로 검출하기 위해서는 다양한 크기 관점에서 특징을 검출할 필요가 있음
- 코너를 검출하려고 하는 사각형의 크기를 키움
- 그렇게 되면 이동, 회전, 크기 변환 모든 면에서 강인한 형태로 동작하는 효과적인 특징으로 사용할 수 있음
크기 불변 특징점
- 스케일 스페이스(scale-space) 또는 이미지 피라미드(image pyramid)를 구성하여 영상의 크기가 바뀌더라도 반복적으로 검출될 수 있는 특징점을 찾으면 매칭 등의 응용에서 사용할 수 있음
- 스케일 스페이스 : 다양한 크기와 좀 더 블러링된 여러가지 형태의 이미지 세트를 만들어 사용하는 것
- 이미지 피라미드 : 다양한 크기의 이미지를 만들어서 이미지 세트를 사용하는 것
- 주요 크기 불변 특징점 알고리즘 SIFT, SURF, KAZE, AKAZE, ORB 등
- 특징점(feature point) ≈ 키포인트(keypoint) ≈ 관심점(interest point)
- 기술자(descriptor) ≈ 특징 벡터(feature vector)
SIFT
-
Scale Invariant Feature Transform
-
총 4가지 단계로 구성되있음
- 1,2번은 keypoint를 이미지에서 검출하는 단계
- 3,4번은 위에서 검출된 keypoint 위치에서 근방의 부분영상을 추출하여 부분영상으로부터의 특징벡터를 추출하는 단게
Detector
- 스케일 스페이스 구성하기
- 맨 밑에 있는 원본영상을 블러링을 진행함
- 원본 영상 크기의 가로, 세로를 반으로 줄여 1/4 영상을 만들어 또 블러링을 진행함
- 블러링 된 하나의 세트를 octave라고 표현함
- 블러링된 영상과 블러링 전의 영상의 차인 차영상(Difference of Gaussian, DOG)을 만듬
- DOG 중 회색으로 된 부분은 차이가 없는 부분이고 검정색 부분이나 조금 밝은 부분이 차이가 있는 곳
- 키 포인트 찾기(keypoint localization)
- LOG 대신 DOG 영상의 모든 점에서 local maxima 또는 local minima를 선택
- 동일 스케일 DOG 영상에서 주변 8개 점과 상/하 스케일 DOG 영상에서 18개 점, 총 26개 점을 비교하며 지역 최솟값 또는 지역 최댓값을 선택
-
코너 부근쪽의 키포인트들로 다시 찾기
-
실수 단위의 좀 더 정확한 위치에서의 코너점을 찾는 서브픽셀 정확도 추가
-
평탄한 지역들의 Contrast가 낮은 극점을 제거
-
엣지보다 코너가 변별력이 높으므로, 엣지에 가까운 키포인트는 제거
-
작업을 거친 키포인트 점들은 회전이 되거나 이미지의 스케일 변환을 해도 다시 검출될 가능성이 높음
-
Descriptor
- 방향 불변 특성을 위한 주 방향 성분 추출
- 키포인트 근방의 부분 영상을 추출
- 부분 영상의 모든 픽셀에서 그래디언트 성분(크기 & 방향)을 계산
- 방향 성분에 대한 히스토그램을 생성(360도에 대해 36개 빈)
- 히스토그램 최댓값 방향과 최댓값의 80% 이상 크기를 갖는 빈 방향을 설정
- 하나의 좌표에서 여러 개의 키포인트 표현 가능
- 각 키포인트에 대해 기준 방향 성분을 설정
- 각 키포인트는 위치, 스케일, 기준 방향 정보를 가지는데 이를 토대로 크기, 방향에 불변한 특징 벡터를 추출
- 스케일은 화살표의 길이와 연관
- 각 키포인트는 위치, 스케일, 기준 방향 정보를 가지는데 이를 토대로 크기, 방향에 불변한 특징 벡터를 추출
-
키포인트 기술자(descriptor, feature vector)
- 각 키 포인트 위치에서 스케일과 기준 방향을 고려하여 사각형 영역을 선택
- 사각형 영역을 4 x 4 구역으로 분할하고, 각 구역에서 8방향의 방향 성분 히스토그램을 구함
- 4 x 4 x 8 = 128 차원의 벡터 (float 자료형)
- 128 개의 방향 히스토그램을 이용해서 키포인트 근방의 부분 영상 1 개의 정보를 128 개의 실수 값으로 표현
- 128 x 4byte(float) = 512byte를 사용
- 어떤 이미지에서 1000개의 키포인트가 검출되면, 512Kbyte가 키포인트의 기술자를 표현하는데 사용됨
- 레나 영상에서 구한 SIFT 기술자의 예
- 각자의 특징점에서 주된 방향 성분이 1개, 2개, 3개등으로 표현될 수 있음
- SIFT 사용 예#1
- 다른 이미지에서 왼쪽의 기차와 개구리가 다른 물건에 가려져 있어도 잘 찾아줌
- SIFT 사용 예#2
- 파노라마 이미지(영상 이어붙이기)
SIFT 사용 예#3
- 화성 탐사 로봇이 자신의 위치를 파악하기 위해 사용
기타 특징점 알고리즘
- SURF(Speed-Up Robust Features)
- SIFT를 기반으로 속도를 향상시킨 크기 불변 특징점 검출 방법
- DOG(Derivative of Gaussian) 함수를 단순한 이진 패턴으로 근사화
- 적분 영상(integral image)를 이용하여 속도 향상
- KAZE
- KAZE(바람) : 비선형 스케일 스페이스에서 공기의 흐름
- 가우시안 함수 대신 비선형 확산 필터(nonlinear diffusion filter)를 이용하여 특징점을 검출
- SURF 보다는 느리지만 SIFT보다 빠르고 동등한 성능
-
BRIEF(Binary Robust Independent Elementary Features)
- 이진 기술자를 이용한 빠른 키포인트 기술 방법 (Not detector!)
-
키포인트 주변 픽셀 쌍을 미리 정하고, 픽셀 값의 크기를 비교하여 0 또는 1로 특징을 기술
- 매칭시 해밍 거리(Hamming distance) 사용
- 해밍 거리 : 2개의 이진수의 나열이 있을 때 서로 다른 비트가 몇 개인지 count
- ORB(Oriented Fast and Rotated BRIEF)
- Corner detection인 FAST 방법으로 키포인트를 찾고 Harris 코너 방식으로 순위를 매김
- 피라미드 영상에 적용하여 크기 불변성 확보
- 키포인트의 방향 성분을 이용하여 BRIEF 방법에서 픽셀 쌍의 좌표를 회전하여 특징 벡터를 추출(이진 기술자)
- 피라미드 영상을 사용하여 스케일 스페이스를 사용하는 다른 알고리즘보다 훨씬 빠르고 거기에 엄청나게 빠른 Corner Detection인 FAST 방법을 사용하고 좀 더 간단한 형태의 이진 기술자를 사용해서 기존에 나온 특징점 알고리즘 보다 월등히 빠르고 성능도 나쁘지 않음
- OpenCV에도 최적화 되어있음
- AKAZE(Accelerated KAZE)
- KAZE 알고리즘의 속도 향상 버전으로 이진 기술자를 사용
- 비선형 공간에서 피라미드를 구축