영상에서 스케일 불변의 특징점을 추출해내는 알고리즘 중 SIFT를 먼저 공부하면서 정리
서론
- 이미지 매칭은 객체 또는 장면 인식, 여러 이미지에서 3D 구조의 문제 해결, 스테레오 대응 및 모션 추적을 포함하여 컴퓨터 비전의 다양한 문제의 근본적인 측면이다.
- SIFT는 이미지 스케일 및 회전에 불변한 특성을 갖고, 조명 및 3D 카메라 관점에서 부분적으로도 강인하다.
- SIFT를 통해 추출한 keypoint들은 공간 및 주파수 영역 모두에 잘 위치하며 교합, 혼란 또는 잡음에 의한 실패 가능성을 줄인다.
- 효율적인 알고리즘을 사용하여 추출한 특징들은 데이터베이스와 연동하여 정확하게 일치시킬 수 있어 개체 및 장면 인식의 기반을 제공한다.
- SIFT의 keypoint 세트 생성 단계
1. Scale-space extrema detection : 이미지의 모든 스케일 및 지역 탐색, DoG(Difference of Gaussian)
함수를 사용하여 스케일 및 방향에 영향을 받지 않는 잠재적 keypoint를 식별
2. Keypoint localization : 각 후보 위치에서 자세한 모델이 위치와 규모를 결정하는데 적합. keypoint들
은 그들의 안정성 측정 기준에 따라 선택된다.
3. Orientation assignment : 로컬 이미지 그래디언트 방향에 따라 각 keypoint 위치에 하나 이상의 방향
이 지정된다. 이 후의 모든 작업은 각 특징에 지정된 방향, 눈금 및 위치와 관련하여 변형된 이미지
데이터에서 수행되므로, 이러한 변환에 대한 불변성이 제공된다.
4. Keypoint descriptor : 로컬 이미지 그래디언트는 각 keypoint 주변 영역에서 선택된 눈금에서 측정. 이
들은 상당한 레벨의 로컬 형태 왜곡 및 조명 변화의 허용으로 표현된다.
- 약 500x500 사이즈의 이미지에서 2000개 정도의 안정적인 Feature가 검출이 되고, 객체를 인식하려
면 3개 이상의 Feature가 매칭되면 된다.
Detection of Scale-Space Extrema
- 후보 위치를 식별한 후 디테일을 확인하는 cascade filtering 방식을 사용하여 keypoint를 탐지한다.
- keypoint 탐지의 첫 번째 단계는 동일한 객체가 다른 뷰에서 반복적으로 할당 될 수 있는 위치와 스케일
을 식별하는 것이다.
- Scale-space로 알려진 스케일의 연속 함수를 사용하여 가능한 모든 스케일에서 안정된 Feature를 검색
함으로써 이미지의 스케일에 불변인 위치를 검출할 수 있다.
- 다양한 가정하에도 유일하게 가능한 Scale-sace Kernel이 Gaussian 함수임이라는 것이라는 연구가 있
다.
- 따라서, 이미지의 Scale-space는 입력 이미지와 함께 가변 스케일 가우시안의 Convolution으로부터 함
수를 생성한다.
- *는 Convolution의 기호로 Convolution이란
일 때, 아래 수식처럼 기호로 나타낸다.
- 가우시안 함수는 아래와 같다.
- 가우시안 함수의 차(DoG) 함수를 이용하여 극값을 계산한다.
- 이 함수를 사용하는 이유는 이전 연구된 것을 보면 알 수 있는데, DoG는 Scale-Normalized Laplacian
of Gaussian의 근삿값을 가진다고 한다.
- 라플라시안을 직접 사용하지 않는 이유는 당연하게 연산 속도 때문일 것이라는 개인적인 생각
- 방정식의 계수 (k - 1)는 모든 눈금에 대해 일정하므로 상한선 위치에 영향을 미치지 않는다.
(논문의 그림 참고해야 함)
- 초기에는 Gaussian과 점진적으로 곱하여 누적되면서 표시된 눈금 간격에서 상수 계수 k로 분리된
이미지를 생성한다.
- Scale-space의 각 옥타브(octave = 시그마의 배증)를 간격의 정수 s로 나눔으로써 k = 21 / s를 선택한
다.
- 각 옥타브에 대해 블러처리된 이미지의 스택에 3개의 이미지를 생성해야만 최종적인 극한값 감지가 끝
난다.
- 인접한 이미지 스케일을 빼서 Gaussian Difference 이미지를 생성한다.
- 완전하게 옥타브가 처리되면, 각 행과 열의 두번째 픽셀을 취하여 시그마의 초기값이 두배인 Gaussian
이미지를 다시 샘플링한다.(스택 맨 위에서 2개의 이미지를 사용)
- 시그마와 관련된 샘플링의 정확도는 이전 옥타브의 시작과 다르지 않지만 계산은 크게 감소한다.
Local Exrema Detection
- 방법은 총 26개, 현재 스케일의 8이웃, 위아래 스케일의 각 9이웃과 비교하여 가장 큰 값과 가장 작은
값이 선택된다.
- 극값을 안정적으로 검출하는 데에는 이미지의 스케일 도메인의 샘플링 주파수가 중요하다.
- 해당 논문에서는 시그마값을 모두 1.6으로 사용했다.
-> 시그마값이 크면 연산 속도가 느려지기 때문에, 적당한 시그마값을 결정하여 사용했다.
-> 시그마값을 결정하기 위한 실험은 논문에 그림으로 나타나있다.
- 옥타브당 3개의 스케일을 샘플링할 때 가장 좋은 반복성을 얻을 수 있다.
-> 더 많은 스케일을 샘플링해도 더 좋은 반복성을 얻지는 않는다.
- 가우시안 이미지를 사용하여 키포인트를 검출하는데 이는 높은 주파수가 제거되는 이점이 있기 때문에
도 좋다.
- 첫번째 피라미드를 만들기 위해 이미지를 2배 크기로 확대하는데 여기서는 Linear interpolation을 사용
한다.
-> 이미지 사이즈를 더 키운다고 해서 개선점이 발견되지는 않는다.
- 이러한 실험결과를 토대로 극값을 검출한다.
Accurate Keypoint Localization
- 픽셀을 이웃과 비교하여 키포인트 후보를 찾을 후에 주 곡률의 위치, 눈금 및 비율에 대해 근처 데이터
에 세부적으로 맞추는 과정
-> 낮은 contrast(noise에 민감)를 가지거나 edge를 따라 localization이 제대로 이루어지지 않은 포인트
를 사용하지 않기 위함.
- Hessian과 D의 미분은 샘플 차이를 사용하여 근사화된다.
- 오프셋x가 0.5보다 큰 것은 극값이 다른 샘플 포인트에 더 가까움을 뜻하는데, 이럴 때는 샘플 포인
트가 변경되고 대신 해당 포인트에 대한 보간이 수행됨.
- 최종적으로 오프셋x는 샘플 포인트 위치에 추가되어 극값의 위치에 대한 보간된 측정값을 얻는다.
- 극값에서의 함수 값 D(x)는 낮은 대비의 불안정한 극값을 거부하는데 유용함.
- 위 과정을 거치고 난 후에도 안정성을 위해 낮은 대비의 키포인트를 피하는 것만으로는 충분하지 않다.
- DoG는 edge에 따른 위치가 잘못 결정되어 소량의 노이즈로 인해 불안정한 경우에도 edge에 대해 강한
반응을 보인다.
- 따라서 별도의 threshold를 두어 특징점이 edge에 가까우면 제외시킨다(논문에서는 10을 사용).
Orientation Assignment
- 로컬 이미지 속성을 기반으로 각 키포인트에 일관된 방향을 지정하면 키포인트 기술자가 이 방향을 기
준으로 표현될 수 있으므로, 이미지 회전에 대한 불변성이 발생한다.
- 키포인트 주변 픽셀의 방향성을 구하고, 방향별 히스토그램을 구한다.
- 히스토그램에서 가장 큰 값에 대응되는 방향을 해당 키포인트의 방향으로 정한다.
'Computer VIsion > 영상처리' 카테고리의 다른 글
[OpenCV] Visual Studio 2015 OpenCV 4.0 사용하기 (0) | 2019.07.02 |
---|---|
[OpenCV] IplImage -> Mat, Mat -> IplImage 변환 코드 (0) | 2017.06.27 |
[OpenCV] SIFT 예제 (2) | 2017.04.19 |
[영상처리] 이미지 특징점(Feature) 검출 방법 (0) | 2017.04.11 |
[OpenCV] 이미지 와핑(Warping) (0) | 2017.04.10 |