# Iterative CIosest Point (ICPSlicer) algorithm source

**URL:** <https://discourse.slicer.org/t/iterative-ciosest-point-icpslicer-algorithm-source/3918>\
**Category:** Support\
**Created:** [August 28, 2018, 9:29am UTC](https://discourse.slicer.org/t/iterative-ciosest-point-icpslicer-algorithm-source/3918 "2018-08-28T09:29:49Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ricardo\_Mesquita](https://avatars.discourse-cdn.com/v4/letter/r/ea666f/32.png) [@Ricardo\_Mesquita](https://discourse.slicer.org/u/Ricardo_Mesquita)\
**Post date:** [August 28, 2018, 9:29am UTC](https://discourse.slicer.org/t/iterative-ciosest-point-icpslicer-algorithm-source/3918/1 "2018-08-28T09:29:49Z")

</div>

Hi all,  
i’m trying to figure out if the ICP implemented in slicer is the standard ICP algorithm or some kind of modified ICP algorithm. The standard ICP algorithm lacks in some important aspects that will increase the registration error. As so, i intended to improve surface registration accuracy and for that i have to know the source algorithm of ICP implemented in slicer in order to compare the results.  
Does anybody know if the ICPSlicer algorithm is the standard algorithm? Or if there’s other algorithm implemented in slicer that is an optimized version of standard ICP to improve accuracy?

Thanks for you attention.

---

<div class="post-metadata">

**Author:** ![ihnorton](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/ihnorton/32/9_2.png) [@ihnorton](https://discourse.slicer.org/u/ihnorton)\
**Post date:** [August 28, 2018, 1:39pm UTC](https://discourse.slicer.org/t/iterative-ciosest-point-icpslicer-algorithm-source/3918/2 "2018-08-28T13:39:24Z")

</div>

Which module(s) are you referring to?

---

<div class="post-metadata">

**Author:** ![pieper](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/pieper/32/8_2.png) [@pieper](https://discourse.slicer.org/u/pieper)\
**Post date:** [August 28, 2018, 1:47pm UTC](https://discourse.slicer.org/t/iterative-ciosest-point-icpslicer-algorithm-source/3918/3 "2018-08-28T13:47:11Z")

</div>

Maybe you want this info:

> [@Details on ICP registration implementation](https://discourse.slicer.org/t/details-on-icp-registration-implementation/3343/2):
>
> Hi, The Surface Registration module which is part of the CMFreg extension uses vtkIterativeClosestPointTransform. You can look into the details in the following links. Surface registration python script vtkIterativeClosestPointTransform [https://www.vtk.org/doc/nightly/html/classvtkIterativeClosestPointTransform.html#details](https://www.vtk.org/doc/nightly/html/classvtkIterativeClosestPointTransform.html#details) HTH, Andinet
