Auto-scanning

ICP 알고리즘 비교

ABOUT-D 2024. 3. 13. 17:08

이 포스트에서는 여러 ICP 알고리즘들은 비교해보고자 합니다.

 

PCL 라이브러리에서 제공하는 ICP variants인 ICP, GICP, ICP Non Linear 세 가지 알고리즘에 대해

성능과 걸리는 시간 측면에서 비교 및 분석을 진행해보고자 합니다.

 

이 외에도 여러 ICP 들도 비교해보겠습니다.

 

PCL ICP Algorithms


먼저 PCL 라이브러리에서 제공하는 ICP, GICP, ICP Non Linear를 비교해보겠습니다.

 

각 ICP에 대해 간단히 설명하자면 다음과 같습니다.

- ICP : Vanila ICP, point-to-point ICP

- GICP : point-to-plane ICP

- ICP Non Liear : LM 최적화 사용

(왼쪽) ICP, (가운데) GICP, (오른쪽) ICP Non Linear.

 

다른 모든 환경을 동일하게 세팅했을 때, ICP 알고리즘만 바꾸어 실제 스캔을 진행한 결과입니다.

얼핏 보기에도 GICP가 가장 깔끔하게 정합된 것을 확인할 수 있습니다. 특히 투창(창문)의 경우 ICP와 ICP Non Linear에 비해 GICP가 상대적으로 뭉개짐 없이 투창의 모습을 가장 잘 보존하고 있습니다.

 

시간의 측면에서는 ICP가 0.62s로 가장 빠르고, ICP Non Linear가 1.06s로 가장 오래 걸렸습니다. GICP는 0.72s로 ICP 보다는 조금 느리지만 실시간으로 적용하기에 문제가 되지 않는 정도입니다.

 

성능과 시간을 모두 고려해보았을 때, 목표 객체에 대해서는 PCL 라이브러리 중 GICP가 가장 적합하다고 판단할 수 있습니다.

 

 

Compare ICP Variants


이번에는 여러 ICP variants 들을 비교해보겠습니다.

코드는 FRICP(Fast and Robust ICP)에서 제공하는 코드를 사용하였습니다.

 

비교한 ICP variants 종류에는 ICP, AA-ICP, Fast ICP, Robust ICP, ICP point-to-plane, Robust ICP point-to-plane, Saprse ICP, Sparse ICP point-to-plnae이 있습니다.

 

먼저 매우 유명한 데이터인 Stanford Bunny 입니다.

(a)에 표현된 두 데이터를 잘 정합하는 것이 목표이고, 각 알고리즘을 사용해 정합한 결과가 (b)-(i)에 나와있습니다.

 

정합 결과는  Sparse ICP를 제외 모두 잘 되었습니다.

시간적인 측면에서는 (h), (i)의 Sparse ICP가 매우 오래 걸렸습니다.

ICP for Bunny

다음은 피규어에 대한 정합 결과입니다.

(e) Robust ICP, (g) Robust ICP point-to-plane, (h) Sparse ICP, (i) Sparse ICP point-to-plane의 성능이 좋았고,

시간 측면에서는 마찬가지로 (h), (i) Sparse ICP가 굉장히 오래걸렸습니다.

ICP for figure

마지막으로 목표 객체에 대한 정합 결과입니다.

(g) Robust ICP point-to-plane, (i) Sparse ICP point-to-plane이 정합을 잘 한 것을 볼 수 있고,

시간 측면에는 마찬가지로 (h), (i) Sparse ICP가 굉장히 오래걸렸습니다.

 

point-to-plane method는 투창을 잘 정합하는 경향을 보이고, point-to-plane은 전체적인 형상을 매칭하는 경향을 보이는 것을 알 수 있습니다.

ICP for open vessel

전체적으로 목표 객체를 잘 정합하기 위해서 point-to-plane이 적합할 것이라고 결론을 내릴 수 있고, 이는 앞서 다루었던 PCL 라이브러리의 ICP 별 결과와도 일맥상통합니다.