두 포인트 클라우드 또는 데이터 세트 간의 정합성을 최대화하기 위해 사용되는 알고리즘
예측된 2D 로컬 맵과 실제 2D 로컬 맵을 비교하는 데에도 사용
ICP의 기본적인 목적
두 맵 간의 최소 제곱 오차를 최소화하는 최적의 변환(회전과 이동)을 찾는 것
특징이 뚜렷한 환경에서 효과적
각 소스 점에 대응하는 타겟 세트 내의 가장 가까운 점을 식별하는 것
k-d 트리, 옥트리, 쿼드 트리와 같은 공간 분할 구조
를 사용하여 효율적으로 수행이진 트리 자료구조
루트 노드
로 설정 한 서브셋은 선택된 축에 대해 선택된 점의 값보다 작은 점들로 구성되고, 다른 서브셋은 그보다 큰 점들로 구성
각 서브셋에 대해 새로운 노드를 선택하고 서브트리를 생성
점이 하나도 없거나, 지정된 최소 노드 크기에 도달하면 재귀를 종료
이때 각 노드는 트리 내에서 하나의 점 또는 최종적인 점 집합을 대표
가장 가까운 점 쌍 사이의 거리를 최소화하는 변환(회전 및 이동)을 계산
SVD(특이값 분해)
나 다른 최적화 기법(선형 대수학의 방법)을 사용하여 수행가장 가까운 점 쌍 간의 거리의 제곱 합(Squared Distance Sum)을 최소화하는 R과 t를 찾는 것을 목적
**중심화(Centering)**:
상관 행렬
: 소스 세트의 점들과 그에 해당하는 타겟 세트의 가장 가까운 점들 사이의 관계를 수학적으로 모델링상관 행렬
생성 목적: 두 세트 간의 공간적 관계를 나타내는 회전 방향을 추정소스 점과 타겟 점 간의 상대적인 위치 관계를 나타냄
상관 행렬 \(H\)는 이후 SVD(특이값 분해) 과정에서 회전 행렬 \(R\)을 계산하는 데 사용
SVD는 \(H\)를 분해하여 소스 세트를 타겟 세트에 최적으로 맞추는 회전을 도출
**SVD 수행**:
높은 정확도
초기 추정치에 크게 의존
하며, 잘못된 초기 추정치는 지역 최소값으로 수렴할 위험을 증가시킴계산 비용이 높을 수 있으며
, 특히 데이터 포인트의 수가 많은 경우 이 문제가 심화k-d 트리나 옥트리와 같은 공간 분할 구조를 사용하여 가장 가까운 점 검색의 속도를 향상시킬 수 있음
GPU를 활용한 병렬 처리
를 통해 이러한 계산의 속도를 대폭 향상시킬 수 있음registration_generalized_icp
함수는 Open3D 라이브러리의 일반화된 반복 최근접점 (Generalized Iterative Closest Point, GICP)
알고리즘을 구현한 함수소스 포인트 클라우드의 각 점에 대해, 타겟 포인트 클라우드 내에서 가장 가까운 점을 찾음
registration_generalized_icp
는 두 포인트 클라우드 간의 정밀한 정합을 위해 공분산을 고려하는 확장된 ICP 방법을 제공