컴퓨터비전

[CV] ICP (Iterative Closest Point) 쉽게 핵심 정리

수디sudy 2022. 4. 17. 17:59

오늘은 몇일전에 반짝 연구실 애들이랑 궁금해서 기나긴 토론을 했던 ICP 에 대해 정리 :)

 

 

ICP : Frame 1 (F1) 과 frame 2(F2) 를 정합하는 과정이다. 두 frame의 최단거리를 찾은 후 매칭시킨다.

 

그런데 이 때 위의 그림처럼 정확히 매칭되지 않고 서로 다른 point를 가진 프레임 2개를 정합할 때 point-to-point 로 매칭하게 되면 제대로 된 결과가 나오지 않는다.

 

-> 위 그림처럼 point-to-surface 로 최단거리를 구해야 정확히 매칭시킬 수 있다.

 

Partial ICP : 모든 점과 surface를 매 iter마다 완전탐색 하면 속도가 매우 느리기 때문에 매칭 시 일부만 사용해 정합할 수 있다.

  1. 매 3번째 데이터만 사용하는 데이터 서브샘플링
  2. KD tree : ICP 알고리즘은 결론적으로 F1와 F2를 정합하기 위해 Rotation matrix와 Translation matrix를 이용해 d값을 구하는 알고리즘이다. 하지만 모든데이터에 대해 검사(완전탐색)을 하지 않기 위해 bucket 값의 weight w를 이용해 아래 식으로 KD tree를 이용할 수 있다.

 

위의 그림처럼 초록색 box와 노란색 box는 실제로 correlation이 거의 없고 거리 또한 매우 멀다. 이런 두 구역까지 모두 탐색해 매칭시키는 것은 시간적으로도 매우 비효율적이고 cost또한 많이 든다.

-> 그래서 거리를 구한 뒤에 일정 threshold 값 이상인 점들은 매칭시키지 않고 skip 하는 것이다. 이러면 수행 시간을 매우 아낄 수 있다.