본문 바로가기
DL|ML

[Tübingen ML] Computer Vision - Lecture 3.1 (Structure-from-Motion: Preliminaries)

by 이든Eden 2023. 3. 18.

튀빙겐 대학교의 Lecture: Computer Vision 3.1을 공부하며 정리한 자료입니다.

 

 

Lecture 3에서는 Structure-from-motion에 대해서 배운다. 얏호! NeRF를 공부하면서 너무 더 공부하고 싶었던 분야다.

오늘 정리할 Lecture 3.1은 Structure-from-motion을 배우기 위한 여러 준비를 하는 단계다.

 

 

[그림 1] Lecture 3 agenda

 

 

Camera Calibration

 

카메라 캘리브레이션은 3D Reconstruction의 전제조건이 된다고 할 수 있다.

 

[그림 2] camera calibration

 

  • 카메라 캘리브레이션은 intrinsic/extrinsic parameters를 찾는 과정이다. 
  • 보통 known calibration target(이미지, 체커보드)을 이용한다.

 

카메라 캘리브레이션의 과정은 다음과 같다.

 

1. Known calibration target을 다양한 위치에서 찍는다.

 

[그림 3] camera calibration process 1

 

2. Known calibration target의 피쳐(코너 등)을 이미지에서 찾는다.

 

[그림 4] camera calibration process 2

 

3. Camera intrinsics/extrinsics 파라미터를 optimize 한다.

 

[그림 5] camera calibration process 3

 

  • 초기값을 추정하는 과정에서 distortion 파라미터를 제외한 모든 내부 파라미터와 외부 파라미터를 closed-form solution으로 추정한다. closed-form solution은 해를 구하기 위해 수식을 사용하여 직접 계산하는 방법이다.
  • 추정된 초기 파라미터를 바탕으로 모든 파라미터를 비선형 최적화를 통해 추정한다. 이 최적화 과정에서는 추정된 파라미터를 사용하여 새로운 이미지를 생성하고, 생성된 이미지와 실제 이미지 간의 재투영 오차(reprojection error)를 최소화하도록 파라미터를 조정한다.

 

 

[그림 6] camera calibration remarks

 

  • 더 많은 카메라 캘리브레이션 기법이 다양한 세팅에 따라 존재한다.
  • 알고리즘적으로 다른 방법들이 있을 뿐만 아니라  사용하는 가정 및 calibration targets 유형도 다르다: 2d/3d targets, planes, vanishing points 등

 

Feature Detection and Description

Point Features

 

[그림 7] Point features 

 

  • Point features는 이미지의 local, salient(핵심적인) 부분의 모습을 묘사하는 것이다. 이것을 사용해 다른 viewpoints에서 찍힌 이미지를 매칭시킬 수 있다.
  • 이 강의에서 다루는 sparse 3D reconstruction 방법이 point features를 기반으로 하고 있다.
  • Point features는 원근법이나 조명등에 불변적(invariant)이어야 한다. 즉, 원근법이나 조명 등에 영향을 받지 않음. 따라서 같은 포인트는 pose/viewpoint에 독립적이고 비슷한 벡터를 가져야한다.
  • 단순한 RGB 값이나 intensity 패치는 point feature가 될 수 없다. 둘 다 조명이나 촬영 각도 등에 따라 변하기 때문이다.
  • 딥러닝에서의 features랑 같은 의미

 

Scale Invariant Feature Transform (SIFT)

오 SIFT 오랜만ㅋㅋㅋ

SIFT는크기 불변성(scale invariance)을 가지는 features를 추출하기 위한 알고리즘이다.

 

SIFT는 다음과 같은 순서로 features를 추출한다.

(1) Scale-space extrema detection

(2) Keypoint localization

(3) Orientation assignment
(4) Keypoint descriptor

 

[그림 8] SIFT

 

  • Invariant하다는 것은 회전이나 원근법 뿐만 아니라 스케일에도 적용된다.

1. Scale-space extrema detection

  • SIFT는 [그림 8]의 왼쪽에서 보이는 것처럼 원본 이미지에 가우시안(Gaussian) 필터를 적용해서 다양한 스케일로 흐리게 만든다. 가우시안 필터는 이미지를 흐리게 만드는 필터로, 각 픽셀 주변의 가중평균값을 사용하여 이미지를 흐리게 처리한다. 이때, 스케일의 크기에 따라 필터의 크기를 조절하여 다양한 크기의 블러된 이미지를 만들 수 있다.
  • 블러된 이미지들 간에는, 같은 위치의 픽셀이 서로 다른 값이 나올 수 있다. 따라서, 인접한 스케일에서의 블러된 이미지들 간에 차이를 구해야 한다. 이를 위해, 서로 인접한 스케일의 블러된 이미지를 뺄셈하여 차이(Difference of Gaussian 연산)를 구한다.

2. Keypoint localization

  • [그림 8]의 왼쪽 그림에서 보면 x는 검사하는 point, 초록 동그라미들은 x와 인접하는 픽셀들이라는 것을 알 수 있다. 이 때, x의 값이 26개의 인접한 pixel들과 비교해서 가장 크거나 가장 작으면 keypoint로 생각하고, 그렇지 않으면 keypoint로 정하지 않는다.
  • 이제 찾은 keypoint 중 좋지 않은 keypoint를 제거한다. 제거에는 두 가지 기준이 존재하는데 첫 번째는 keypoint 픽셀 값이 threshold 보다 작으면 제거하는 것이고 두 번째는 edge위에 있는 keypoint를 제거하는 것이다.

3. Orientation assignment

  • Keypoint 마다 방향을 할당해주는 단계이다. 지금까지 찾은 keypoint들은 scale invariance를 만족시키는 것들인데, 방향을 할당해주어 rotation invariance 또한 갖게 하는 단계이다. Keypoint 주변으로 아래의 식을 이용해서 keypoint 주변 gradient의 크기 및 방향을 알아낸다.

 

  • Gradient의 크기와 방향을 구하고 [그림 9]처럼 가로축이 방향, 세로축이 크기인 Histogram을 그린다. 만약 가장 큰 keypoint 방향의 80%보다 큰 각도가 있다면 해당 각도 역시 keypoint의 orientation으로 정한다. [그림 9]를 예로 들면 가장 큰 keypoint를 20-29 방향인 것을 알 수 있고 그것의 80% 이상의 크기를 갖는 방향이 2개가 있다는 것을 알 수 있다. 이 두 방향 역시 keypoint의 orientation이 되는 것이다.

[그림 9] 가로축이 방향, 세로축이 크기인 Histogram

4. Keypoint descriptor

  • keypoint 주변에서 gradient 방향과 크기를 이용하여 keypoint를 feature set)으로 변환합니다. SIFT에서는 keypoint 위치와 크기를 중심으로 하여 $4 \times 4$개의 서브영역으로 나누고, 각 서브영역에서 gradient 방향 히스토그램을 계산한다. 이 때, 서브영역은 16개의 cell로 나누어지고, 각 cell은 8개의 bin으로 구성된다. 따라서, 한 서브영역에서는 128(16x8)차원의 gradient 방향 히스토그램이 생성된다.
  • 각 bin은 0~360도 사이의 방향을 나타내며, gradient 방향 정보는 bin의 중심 방향에 따라 가중치가 부여된다. 따라서, 한 서브영역에서는 128($16 \times 8$)차원의 gradient 방향 히스토그램이 생성된다. 이후 각 서브영역에서 생성된 히스토그램을 모두 이어붙여 $128 \times 4 = 512$ 차원의 descriptor를 생성한다.
  • keypoint의 orientation 값을 구하고, 이를 기반으로 descriptor를 회전시킴으로서 rotation-invariant를 달성하고, L2-nomalization을 통해 밝기 의존성을 해결한다.

[그림 10] Keypoint descriptor

 

Feature Detection and Description

 

[그림 11] Feature Detection and Description

 

  • Feature detection과 description에 사용되는 많은 알고리즘(SIFT, SURF, U-SURF, BRISK, ORB, FAST, 딥러닝 베이스 등)이 개발되고 있다.
  • SIFT는 invariance와 robustness를 바탕으로 인식 기술에서 혁신을 가져왔다. 특히, 일치 및 매칭을 가능하게 하여 large-scale SFM 기술의 발전을 이끌었다.
  • 20년이 지났지만 여전히 SIFT를 사용중이다. (예. SfM 파이프라인인 COLMAP)
  • Feature correspondences는 효율적인 이웃 탐색을 통해 검색할 수 있다.
  • 가능성이 있는 매칭(matching)들은 보통 가장 가까운 이웃과 두 번째로 가까운 이웃 사이의 거리 비율을 계산하여 필터링한다. 이 방법은 두 번째로 가까운 이웃까지의 거리가 가장 가까운 이웃까지의 거리의 일정 비율 이상 떨어져 있을 때, 해당 매칭을 버린다. 이를 통해 모호한 매칭들을 필터링할 수 있다.
  • 올바른 매칭은 가장 가까운 이웃보다 더 가까운 이웃보다 더 가깝다. 따라서 두 번째로 가까운 이웃과 가장 가까운 이웃 사이의 거리 비율이 큰 경우, 가장 가까운 이웃의 거리가 두 번째로 가까운 이웃의 거리보다 훨씬 더 가깝기 때문에 올바른 매칭일 가능성이 높다.

 

Reference