일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- dfs
- sklearn
- 자료구조
- MySQL
- 백준
- IN
- image processing
- dynamic programming
- canny edge detection
- Reinforcement Learning
- 인공지능
- opencv
- AlexNet
- C++
- edge detection
- MinHeap
- BFS
- machine learning
- Mask Processing
- 머신러닝
- 딥러닝
- exists
- Python
- clustering
- 강화학습
- DP
- classification
- SIFT
- 그래프 이론
- TD
- Today
- Total
JINWOOJUNG
[ 영상 처리 ] Ch9. Local Feature Detection and Matching(3) 본문
본 영상 처리 개념과 기법들에 대한 공부를 진행하면서 배운 내용들을 중심으로 정리한 포스팅입니다.
책은 Computer Vision: Algorithms and Applications를 기반으로 공부하였습니다.
또한, 인하대학교 박인규 교수님의 디지털 영상 처리 과목을 기반으로 제작된 포스팅입니다.
Before This Episode
SIFT는 Scale에 불변한 Corner 검출기다. Scale에 불변하다는 의미는, 동일한 의미가 서로다른 Scale의 영상에서 Feature로 추출됬을 때, Feature Descriptor가 동일하여 Feature Matching이 된다는 의미로 해석할 수 있다.
왼쪽 사진에서 초록색으로 표시된 Feature에 대한 Feature Descriptor가 $f(I(x,\sigma)$라 하자. 이때, $x$는 Feature Location, $\sigma$는 Scale을 의미한다. 해당 영상에서 일부분을 확대한 즉, Scale이 커진 영상이 오른쪽과 같다고 하자. 그렇다면, 동일한 Feature에 대한 Location과 Scale 모두 변화 될 것이다. 하지만, Scale에 불변해야 하기 때문에 $f(I(x',\sigma')$는 $f(I(x,\sigma)$와 같아야 한다.
즉, 절대적인 Corner의 영상 내 위치($x$)는 다르지만, 영상의 Corner로써 의미하는 바는 동일해야 한다.
우리는 Corner Feature를 추출하기 위하여 Response $R$을 계산하였다. 본 과정에서는 $R$은 아니지만 어떤 함수값 즉, Response를 영상의 Scale($\sigma$)를 바꿔 가면서 Response를 계산한 결과가 아래 그래프와 같다. 그렇다면, 해당 Response의 Peak Point가 있을 것이고 원본 영상에서는 $\sigma = 3.89$이다. 확대된 영상에 대해서도 Scale을 변화시켜 가면서 Peak Point를 계산하면, $\sigma' = 10.1$이 된다. 그렇다면 우리는 $\sigma$의 비율로 Scale의 변화가 생격다고 추측할 수 있다. 즉, $\sigma \to \sigma'$으로 약 2.x배가 증가했기 때문에, 영상 자체도 2.x배가 확대되었다고 생각할 수 있다.
따라서 우리는 Scale에 불변하게 하기 위해 $\sigma$를 알고 있으므로 Normalization을 통하여 Scale이 다른 영상에서 동일한 Feature를 추출해 Matching시킬 수 있다.
정리해보자. Scale에 불변한 Feature를 찾는 것이 목적이다. 따라서 영상의 Scale 요소$\sigma$를 변화시켜 가면서 서로 다른 Scale에서의 Feature를 추출한다. 그리고 Normalization을 통해 특정한 Scale으로 영상을 Normalization 한다면, 동일한 Feature를 찾을 수 있을 것이다.
Signature Function
그렇다면 이를 계산하기 위한 효과적인 함수는 무엇일까? 즉, Response를 구하는 앞서 언급한 $f$는 무엇일까? 바로 앞에서 배운 Laplacian-of-Gaussian이다.
Laplacian-of-Gaussian(LoG)를 뒤집으면 왼쪽 그래프와 같은 모양을 가지고 있는데, LoG의 Gaussian $\sigma$를 줄이면은 그래프의 폭이 더 좁아지고 뾰족해지는 경향이 있다. LoG는 "blob Detector"로 동작하는데, 여기서 blob이란 하단의 검은색 디스크와 같은 것을 의미한다. 여기에서 중요한 것은, LoG의 $\sigma$에 따라 큰 Response를 가지는(Peak점을 가지는) blob size가 다르다는 것이다.
따라서 만약 우리가 $\sigma_1$을 가지는 LoG로 필터링 하였을 때, peak 점을 가지는 blob은 고정되어 있으므로 특정할 수 있는 것이다. 즉, LoG가 앞서 진행한 Peak Response를 찾는 $f$의 역할을 하는 것이다.
따라서 우리는 LoG의 Response의 Peak점에 따라 크기를 특정할 수 있다.
오른쪽 원본 사진을 $\sigma$를 변경 시켜 가면서 LoG를 적용한 결과가 가운데로, 위로 갈수록 Scale이 큼을 알 수 있다. LoG는 Band Pass Filter이기 때문에 $\sigma$가 커질수록 저주파 쪽으로 Band가 이동하기에 Large Scale Edge 즉, 확실하고 두꺼운 Edge에서의 Response가 증가하게 된다. 따라서 각 층에 대하여 3차원 NMS를 적용한다면, Local Maximum을 추출할 수 있고, 따라서 Scale, Position 정보를 추출할 수 있다.
실제로 왼쪽 나비 영상을 $\sigma$에 따른 LoG의 Response는 오른쪽과 같다. 따라서 인접한 층에 대하여 NMS를 적용한 뒤 최종적으로 blob을 추출한 결과는 아래와 같다.
blob은 위와 같이 위치(Position)과 Scale(원의 반지름)이 존재하며, 이때의 Scale은 $\sigma$에 의해서 결정되는 Scale이다. 따라서 이를 공식화 하고 확장시킨 것이 바로 SIFT이다.
정리 해 보자.
우리는 Scale에 불변하는 Feature Detection을 하고 싶다. 그렇기 위해서는, 해당 Feature의 $\sigma$정보를 알고 있다면, Normalization을 통해 Scale이 다른 두 영상에서 동일한 Feature를 추출하여 Matching 시킬 수 있을 것이다. 이때의 $\sigma$는 Scale을 의미하는데, 해당 Scale에서 가장 큰 Response를 보이는 Scale이 $\sigma$이다.
이때 Response를 구하기 위해서 사용되는 함수가 바로 Laplacia of Gaussian 이다. LoG의 $\sigma$에 따라 Peak점을 갖는 blob이 다르기 때문에, 즉, LoG를 통해 $\sigma$를 특정할 수 있다.
그 방법은 서로 다른 $\sigma$를 갖는 LoG 결과를 인접한 층에 대하여 3차원 NMS를 적용한다면, 가장 큰 Response 즉, Peak점을 갖는 $\sigma$를 특정할 수 있다.
따라서 blob은 Position 정보와 Scale을 의미하는 $\sigma$ 정보를 가지고 있으며, 시각화 하기 위해 $\sigma$는 원의 반지름으로 표현되는 것이다.
'2024 > Study' 카테고리의 다른 글
[ 영상 처리 ] Ch7. Color Image Processing (0) | 2024.05.29 |
---|---|
[ 영상 처리 ] Ch9. Local Feature Detection and Matching(4) (0) | 2024.05.28 |
[ 영상 처리 ] Ch9. Local Feature Detection and Matching(2) (0) | 2024.05.27 |
[ 영상 처리 ] Ch9. Local Feature Detection and Matching(1) (0) | 2024.05.27 |
[ 영상 처리 ] Part5. OpenCV K-Means Clustering & Segmentation(C++) (0) | 2024.05.06 |