Code covered by the BSD License  

Highlights from
Iterative Closest Point Method

4.16667

4.2 | 13 ratings Rate this file 142 Downloads (last 30 days) File Size: 6.48 KB File ID: #12627
image thumbnail

Iterative Closest Point Method

by Per Bergström

 

13 Oct 2006 (Updated 26 Nov 2007)

ICP fit points in data to the points in model.

| Watch this File

File Information
Description

ICP fit points in data to the points in model. Fit with respect to minimize the sum of square errors with the closest model points and data points.

   Ordinary usage:

   [R, T] = icp(model,data)

   INPUT:
 
   model - matrix with model points,
   data - matrix with data points,

   OUTPUT:

   R - rotation matrix and
   T - translation vector accordingly
       so

       newdata = R*data + T .

newdata are transformed data points to fit model

see help icp for more information

MATLAB release MATLAB 6.0 (R12)
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (20)
18 Nov 2006 Tahir Yaqub

Hi Bergstorm
When i run the program, following error comes:
Error in ==> icp at 275
icp_struct(tes_flag); % construct a Delaunay tesselation and two vectors make it easy to find in Tes

18 Nov 2006 Tahir Yaqub

The error message is quite long but the last line is mentioend in my previous message and first is this:
??? qhull precision error: initial facet 1 is coplanar with the interior point
ERRONEOUS FACET:

While executing: | qhull d Qt Qbb Qc

05 Jan 2007 J. Lincoln Carpenter

There could be more comments, especially for some of the alternate input arguements. But on the whole it's a well written and useful m-file for optimization and image registration.

22 Feb 2007 erol seke

Did not handle scaling. Fails with large rotations and/or translations. Otherwise ok.
Note: I tested only with 2D data.

18 Jun 2007 ray dury

ICP algo give good results only if we are near a good matching.

You may prefer other methods to approach the solution.

Before than use ICP algo.

There are stochastic ICP that solve this problem.

This code is good, use it without risk

02 Oct 2007 Syed Islam  
04 Nov 2007 Louis Tang

This programe is quite good. It's the implementation of the original ICP algorithm. the only deficiency is that it only supports input model and data point set with the same dimension.

15 Jan 2008 Jurandir Junior  
02 Nov 2009 asadi

Hi I can't download icp.rar from this page. can anyone send it for me ?
Thanks alot
atefe.asadi@yahoo.com

04 Mar 2010 Brian Chuang

Hi, Thanks for this code

One quick question:

Should the new fitted points be
newdata = R*data - T instead of +T as commented in the code?

18 Mar 2010 Dimitrios Skarlatos

Hi.
Does the code works for full 3D objects or only in 2.5D ?
By 2.5D i mean surfaces that can only handle one Z value for every X,Y
Thanks

15 Mar 2011 Yuksel

I run the program for 3D data. I used 'model' and 'data' with different sizes and it worked. However, there are about 1-1.5 m differences in z values after gridding the data sets. I also would like to know what is the reference for the program. Thank you.

05 Apr 2011 Huang Chun-Hsiang  
05 Apr 2011 Huang Chun-Hsiang

Good code !! Thank you.

15 Apr 2011 Petter  
31 May 2011 Lu Jin

cp_struct(tes_flag); % construct a Delaunay tesselation and two vectors make it easy to find in Tes

03 Jul 2011 Thai Nguyen

Dear Per,
I have run your source codes in Visual C++ 2008 and use the the same data and model for testing in C++, but the results from C++ are different in comparison with from icp_demo.m. When I re-calculate the new data by applying the rotation matrix and translation vector which I have obtained from C++, the plotting of new-data and model points are not match. Could you tell me what reasons? (P/S: my email is svcorp110@gmail.com, if possible please directly send your answers via my email). Thank you very much!
Best regards,
Nguyen Van Thai
AOI Lab

04 Oct 2011 Daniel

Is there any literature describing this particular algorithm? Is it based on Besl and McKay (1992), or is this a different implementation?
cook348@gmail.com
Thanks.

04 Dec 2011 Yuan Billy  
14 Jan 2012 Mithun

Can you please explain how the err function is working in this?

Please login to add a comment or rating.
Updates
17 Oct 2006

Have added a choice to use an other seach method, tes_flag=2 (see help icp).

08 Nov 2006

Added weighted sum of squares minimization.

21 Nov 2006

ICP can now handle point clouds whos principal components do not span the whole space.

16 Jan 2007

Have added a new choice for tesselaton structure.

18 Jan 2007

Have done the last update complete.

08 Mar 2007

Have done some small changes!

26 Nov 2007

Have added additional inputs to icp.

Tag Activity for this File
Tag Applied By Date/Time
optimization Per Bergström 22 Oct 2008 08:43:40
icp Per Bergström 22 Oct 2008 08:43:40
iterative closest point Per Bergström 22 Oct 2008 08:43:40
delaunay Per Bergström 22 Oct 2008 08:43:40
weighted Per Bergström 22 Oct 2008 08:43:40
robust Per Bergström 22 Oct 2008 08:43:40
delaunay Zou Fouch 14 Apr 2009 09:36:38
icp K.U CHEN 11 May 2010 00:48:58
icp hede pat 30 May 2010 06:16:23
delaunay Touqeer 10 Aug 2010 13:46:31
icp Lennart Scheys 15 Jun 2011 04:45:07
iterative closest point Lennart Scheys 15 Jun 2011 04:45:29
icp Hoai-Nam LE 26 Sep 2011 08:49:57
delaunay Hoai-Nam LE 10 Oct 2011 10:10:38
iterative closest point Hoai-Nam LE 10 Oct 2011 10:10:45
optimization Hoai-Nam LE 10 Oct 2011 10:10:49
optimization mostafa ahmed 18 Oct 2011 08:15:11
delaunay Riya 10 Jan 2012 09:52:24
iterative closest point Agata 05 Feb 2012 11:04:41

Contact us at files@mathworks.com