이 게시글은 장형기님의 SLAM 기술면접 100선에 대한 제 나름대로의 답을 정리한 것입니다.
Local Feature는 이미지 내의 특정 지점에서 추출되는 작고 고유한 시각 정보입니다. 이는 이미지 전체가 아닌, 단서를 가진 부분에 집중해 정밀한 비교를 가능하게 만듭니다. 예를 들면 모서리나 점, 무늬 같은 부분을 우리는 Local Feature라고 부릅니다.
한마디로 말하자면,
사진 속에서 유독 튀는, 다시 봐도 알아볼 수 있는 포인트
좋은 Feature의 요건
반복성: 다양한 조건에서도 같은 특징점을 검출 가능
강인성: 회전, 스케일 조명 변화에도 강건
구별성: 주변과 명확히 구분이 되어야 함
이러한 특정 요건을 갖춘 Feature 가 좋은 feature라고 할 수 있습니다.
다른 시점의 사진에서 얻은 feature를 비교하여서 두 사진에서의 같은 부분을 찾는 것을 Local feature matching이라고 합니다. 보통 이것을 진행하기 위해서는 다음과 같은 단계를 거칩니다.
Keypoint Detection: 이미지에서 의미 있는 지점 찾기
Feature Description: 해당 지점에서의 feature를 추출하거나 저장합니다.
Feature Matching: 서로 다른 이미지에서 feature를 비교하여 같은 부분을 찾습니다.
Outlier Filtering: 잘못된 매칭을 제거해줍니다.
이 두 사진을 보면, 빨간 코가 눈에 확 띕니다.
우리는 그 코를 기준으로 이 둘은 같은 캐릭터인 것을 바로 알아볼 수 있습니다.
컴퓨터도 마찬가지로 빨간 코 같은 특징적인 부분을 찾아서 이건 같은 지점이다라고 판단하는 것이 Feature Matching입니다.
KeyPoint와 Descriptor는 무엇이 다른 것인가요?
이미지 내에서 의미있는 지점을 말합니다.
ex) 모서리, 점, 경계의 교차점
Keypoint는 만드는 것은 아니고 직접 찾아서 뽑아낸다고 생각하면 편합니다.
keypoint 주변의 시각적 패턴을 수치화한 백터
ex) SIFT, SURF
Descriptor 생성기를 통해 이미지의 feature를 고차원의 vector로 변환을 합니다.
우리는 Keypoint를 찾아서 그것을 비교하기 쉬운 descriptor로 만들어서 저장을 합니다.
이를 통해 feature matching을 할 수 있습니다.
딥러닝에서 말하는 Feature와 SLAM에서 말하는 Feature는 무엇이 다른가요?
딥러닝에서 말하는 Feature는 학습 과정 중간의 layer에서 생성되는 고차원 표현을 말합니다.
학습 데이터의 특징을 가진 feature(뭔지는 나도 모름 네트워크가 만든거라)라고 보시면 되겠습니다.
특정 Keypoint 위치에서 추출된 Local feature를 지칭하는 말입니다.
SLAM은 3D 공간에서의 대응점을 찾습니다. 그러기 위해서는 입력 데이터에서 매칭할 특징점을 찾는 것이 중요합니다.
ex) LOAM의 모서리, 평면 특징점
ORB-SLAM의 ORB feature
가장 큰 차이는 네트워크 중간에서 추출한 것인지 직접 만드는 것인지 정도가 있을 것 같습니다.
(사실 SLAM에서도 딥러닝에서 말하는 feature를 쓰는게 있긴한데 넘어가도록 하겠습니다.)
저는 사실 무엇이든 특징을 말하는거면 다 feature라고 생각해서 굳이 구별을 해야하나 생각을 하긴 합니다.
정확한 Feature Matching을 위한 전략으로는 무엇이 있을까요?
가장 중요한 것은 Feature를 잘만드는 것이라고 생각합니다.
그래서 지금도 다양한 feature를 추출하는 알고리즘이 나오고 있습니다.
이제 Feature가 동일하다면 어떻게 성능을 올릴 수 있는가에 대해 설명드리겠습니다.
1. Ratio Test
최근접 이웃과 두번째 최근접 이웃의 거리 비율이 작을 때만 채택하는 것입니다.
그렇다면 비슷한 부분을 matching하고 있다는 것이기 때문에 더욱 강건한 matching을 할 수 있습니다.
2. Cross Check Matching
A B 매칭과 BA 매칭이 일치할 때만 채택하는 방법입니다.
잘못된 매칭을 거르는데 간단하고 효과적인 방법입니다.
3. RANSAC 사용
RANSAC알고리즘을 사용하여 기하학적으로 일관된 subset만 선택할 수 있도록 합니다.
Outlier를 제거할 때 가장 많이 쓰이는 알고리즘입니다.
4. Multi-Scale Matching
다양한 해상도(ex.이미지 피라미드)에서 feature를 추출하고 매칭하는 방법입니다.
스케일 변화에 강건해 이미지 매칭에서 많이 활용됩니다.
지금까지 Local Feature Matching에 대해 알아보았습니다.
감사합니다.