Ch03. Point cloud matching
<목차>
3-1. Point cloud 매칭 및 활용 분야
3-2. Point cloud 특징 추출 방법
3-3. 고전적인 Point cloud 매칭 방법론, 실습
3-4. 딥러닝 기반 Point cloud 매칭 - RPM-Net
3-5. TEASER 라이브러리를 통한 Point cloud 정합
3-6. Point cloud 매칭을 활용한 Place recognition-PointNetVLAD
3-1. Point cloud 매칭 및 정합
- 포인트 클라우드 매칭
두 포인트 클라우드의 correspondences를 찾는 문제. 이를 통해 정합 등의 문제를 풀 수 있다
Scan matching이나 scan registration에서 동일한 reference frame을 보았을 때, 각각의 map point들이 일치해야 한다.
cf. 정합의 종류..
- Known data association: 두 포인트 클라우드 간 대응 관계correspondences를 알 때
- Unknown data association: 두 포인트 클라우드 간 대응 관계를 모를 때
cf. correspondences: 상응, 부합, 일치.. 동일한 객체를 찍은 두 이미지에 대해서 찾아낸 같은 쌍..
- Known data association

두 포인트 클라우드 간 대응 관계correspondences을 알 때의 정합 과정을 알아보자.
우리는 지금의 위치 (x_n) 에서 대응 되는 위치 (y_n)로 이동하고 싶다. 이를 위해 (x_n)에 회전 변환 행렬 R와 좌표 이동 t를 통해 이동해볼 것이다.

이 때, 대응 관계를 알고 있으므로 실제 딱 맞게 정합되어야 하는 위치 &y_n&를 알고 있다. 모든 point cloud에 대하여 이동된 위치와 실제 위치의 차이를 최소화 한다면 정합이 잘 이루어질 것이다.

두 포인트 클라우드의 질량 중심을 찾기 위해 다음과 같은 식을 사용한다. 이를 원점으로 가정한다.

이를 통해 식을 풀어나간다.


여기까지 이해했다면 다음을 생각해보자. 질량 중심 $y_0$는 $x_0$을 회전 변환한 후, 이동시킨 것이므로
$y_0$ = R$x_0$ + t 일 것이다. 이에 회전 변환은 직교 행렬이기에 역행렬이 전치 행렬인 성질을 갖는 것을 이용하면 다음과 같이 정리할 수 있다.

이를 좌변에 t만 남기고 정리하여 목적 함수에 대입하면 다음과 같이 질량 중심으로 이동한 목적 함수 식을 도출할 수 있다

이를 공분산 행렬로 바꾸면,

이를 특이값 분해(svd)를 통해 성분 분해를 하면

이렇게 구해진 U와 V를 통해 회전 행렬R을 구해 얼마나 회전된지 알 수 있다..
구한 R을 위에서 좌변만 t만 남기고 정리한 식에 대입하여 t 또한 알 수 있다.


cf. 사실 왜 svd를 통해 회전 행렬을 구할 수 있는지는 잘 모르겠다.. 공부가 더 필요한 모양이다..
사실 흠 그렇군.. 이렇게 대응 관계correspondences을 알 때의 정합 과정 Known data association은 정확한 회전 변환 행렬과 이동 값인 t를 뽑아낼 수 있었다.. 이런 과정을 통한다.. 정도 알아두고 넘어가면 된다.
이제 우리는 3-2 부터 대응 관계를 알지 못할 때의 정합 과정에 대해서 집중적으로 공부할 것이다.
3-2. Point cloud 특징 추출 방법
3-3. 고전적인 Point cloud 매칭 방법론, 실습
3-4. 딥러닝 기반 Point cloud 매칭 - RPM-Net
3-5. TEASER 라이브러리를 통한 Point cloud 정합
3-6. Point cloud 매칭을 활용한 Place recognition-PointNetVLAD