[Registration Algorithm] Point-to-Point, Point-to-Plane ICP

함지율·2024년 5월 3일
0

Paper I should read

목록 보기
10/18

이 포스트는 GPT-4의 내용으로 간략하게 작성되었습니다.

Point-to-Point ICP

Point-to-Point ICP(Iterative Closest Point)는 컴퓨터 비전과 로보틱스에서 두 개의 3D 점 구름을 정렬하는 데 사용되는 알고리즘입니다. 이 알고리즘은 한 점 구름을 다른 점 구름에 맞추는 작업을 반복적으로 수행하며, 그 과정을 통해 두 점 구름 간의 오차를 최소화합니다.

1단계: 입력 데이터

알고리즘은 두 개의 3D 점 집합으로 시작합니다:

  • 참조 집합 (P): 기준으로 삼을 점들의 집합으로, (p1,p2,,pmp_1, p_2, \ldots, p_m)로 구성되어 있습니다.
  • 이동 집합 (Q): (P)에 정렬할 점들의 집합으로, (q1,q2,,qnq_1, q_2, \ldots, q_n)로 구성되어 있습니다.

2단계: 초기 변환

알고리즘은 회전 행렬 (R)과 이동 벡터 (t)로 구성된 초기 변환으로 시작합니다. 이를 통해 (Q)를 (P)에 매핑합니다:

qi=Rqi+tq'_i = Rq_i + t

3단계: 가장 가까운 점 찾기

각 반복에서, QQ'의 각 점 qiq'_i에 대해 PP에서 가장 가까운 점 pjp_j를 찾습니다.

4단계: 비용 함수

각 점 (q'_i)에서 가장 가까운 점 (p_j)까지의 유클리드 거리를 구합니다. 이 거리들의 제곱 합이 비용 함수로 사용됩니다:

F(R,t)=iqipj2=iRqi+tpj2F(R, t) = \sum_i \|q'_i - p_j\|^2 = \sum_i \|Rq_i + t - p_j\|^2

이 비용 함수는 QQ'PP 간의 정렬 정도를 수량화합니다.

5단계: 최적화

F(R,t)F(R, t)를 최소화하기 위해 반복적 최적화 기법을 사용합니다:

  1. 경사 하강법: F(R,t)F(R, t)의 그래디언트를 계산하고, (R)과 (t)를 반복적으로 조정합니다:

    RRαRF(R,t)R \leftarrow R - \alpha \nabla_R F(R, t)
    ttβtF(R,t)t \leftarrow t - \beta \nabla_t F(R, t)

    여기서 α\alphaβ\beta는 업데이트의 스텝 사이즈를 제어하는 학습률입니다.

  2. 수렴 확인: 각 반복 후에, 비용 함수 F(R,t)F(R, t)가 수렴했는지, 즉 비용 함수나 RRtt의 변화가 특정 임계값 미만인지 확인합니다.

6단계: 출력

비용 함수가 수렴하거나 최대 반복 횟수에 도달하면, 알고리즘은 최종 변환 (R)과 (t)를 출력합니다. 이를 통해 QQPP로 가장 가깝게 정렬합니다.

결론

Point-to-Point ICP는 두 점 집합 간의 거리를 반복적으로 최소화하는 효과적인 알고리즘입니다. 핵심은 각 점에 가장 가까운 점을 찾고, 그 사이의 거리를 계산하며, 이 거리들의 제곱 합을 최소화하는 것입니다. 이를 통해 컴퓨터 비전, 로보틱스, 3D 모델링 등 다양한 분야에서 3D 점 구름의 정렬과 등록에 효과적으로 활용될 수 있습니다.

Point-to-Plane ICP

Point-to-plane ICP(Iterative Closest Point)는 컴퓨터 비전과 로보틱스에서 두 개의 3D 점 구름을 정렬하는 데 사용되는 강력한 알고리즘입니다. 이 알고리즘은 반복적으로 데이터 점 집합과 기준 평면 간의 거리를 최소화하여 3D 등록에 효과적입니다.

1단계: 입력 데이터

알고리즘은 두 개의 3D 데이터 점 집합으로 시작합니다:

  • 참조 집합 (P): 참조 또는 기준으로 간주되는 점들의 집합으로, (p1,p2,,pmp_1, p_2, \ldots, p_m)로 구성되어 있습니다.
  • 이동 집합 (Q): (P)와 정렬될 점들의 집합으로, (q1,q2,,qnq_1, q_2, \ldots, q_n)로 구성되어 있습니다. 이 집합은 회전 변환과 이동 벡터를 적용하여 정렬됩니다.

2단계: 초기 변환

알고리즘은 회전 행렬 (R)과 이동 벡터 (t)로 구성된 초기 변환으로 시작합니다. 이를 통해 (Q)를 (P)로 매핑할 수 있습니다:

qi=Rqi+tq'_i = Rq_i + t

3단계: 가장 가까운 평면 찾기

각 반복에서, (Q')의 각 점 (q'_i)에 대해, (P)의 가장 가까운 평면을 찾습니다. 이 평면은 (P)의 점 (p_j)과 해당 점에 대응하는 노멀 벡터 (n_j)로 정의됩니다. (q'_i)에서 평면으로의 거리는 다음과 같이 주어집니다:

di=(qipj)njd_i = (q'_i - p_j) \cdot n_j

4단계: 비용 함수

목표는 (q'_i)와 대응하는 (p_j)와 (n_j)에 의해 정의된 평면 간의 거리 (d_i)의 제곱 합을 최소화하는 것입니다:

F(R,t)=i(di)2=i((Rqi+tpj)nj)2F(R, t) = \sum_i (d_i)^2 = \sum_i ((Rq_i + t - p_j) \cdot n_j)^2

이 비용 함수는 (Q') 집합과 (P) 집합 간의 불일치를 수량화합니다.

5단계: 최적화

(F(R, t))를 최소화하기 위해 반복적 최적화 기법을 사용합니다:

  1. 그래디언트 디센트(경사 하강): (R)과 (t)에 대한 (F(R, t))의 그래디언트를 계산하고, 이를 기반으로 (R)과 (t)를 반복적으로 조정합니다:

    RRαRF(R,t)R \leftarrow R - \alpha \nabla_R F(R, t)
    ttβtF(R,t)t \leftarrow t - \beta \nabla_t F(R, t)

    여기서 (\alpha)와 (\beta)는 업데이트의 스텝 사이즈를 제어하는 학습률입니다.

  2. 수렴 확인: 각 반복 후에, F(R,t)F(R, t)가 수렴했는지 확인합니다. 이는 비용 함수 또는 (R)과 (t)의 변화가 특정 임계값 미만일 때입니다.

6단계: 출력

비용 함수가 수렴하거나 최대 반복 횟수에 도달하면, 알고리즘은 최종 변환 (R)과 (t)를 출력합니다. 이는 (Q)를 (P)로 가장 가깝게 매핑합니다.

결론

Point-to-plane ICP는 이동 점 구름 (Q)와 참조 집합 (P) 간의 거리를 반복적으로 최소화하는 효과적인 알고리즘입니다. 핵심 아이디어는 각 점에 대한 가장 가까운 평면을 찾고, 그 거리를 계산하며, 이러한 거리를 최소화하는 비용 함수를 최적화하는 것입니다. 이를 통해 컴퓨터 비전, 로보틱스, 3D 모델링 등의 분야에서 효과적으로 활용될 수 있습니다.

profile
꿈 꾸는 디그다

0개의 댓글