This function ICP_FINITE is an kind of Iterative Closest Point(ICP) registration algorithm for 3D point clouds (like vertice data of meshes ) using finite difference methods.
Normal ICP solves translation and rotation with analytical equations. By using finite difference this function can also solve resizing and shear thus affine registration.
As first step, this function sorts the static points into a grid of overlapping blocks. The block nearest to a moving point will always contain its closest static point, thus the grid allows faster registration.
Your ICP code works great and I am able to achieve very good registration of my point cloud.
The point cloud is generated by using the vertices of an isosurface of my 3D grayscale data set. I would like to use the affine transform matrix M to transform the 3D grayscale data in the same way as the point cloud of vertices were transformed.
For some reason this does not seem to work. I cannot get my dataset to rotate correctly when using the output affine transform matrix.
Could you post an example of how you can use M to rotate not a point cloud, but a grayscale 3D dataset? Or is there some reason that should not work?
Hi, I've used your ICP successfully for one of my projects - I would like to put a reference in the paper I'm preparing, could you let me know how you'd like me to cite it?
Hi, Dirk-Jan Kroon. I was wondering about your nearest points searching method in your code. What is the reason why you used a grid spacing term, 'spacing=size(Points_Static,1)^(1/6)*sqrt(3);', in your code when uniform grid of points is established. Is there any reference about that?
I tried running this program, and all the points on my data model were transformed to a singular point. If this could be explained, I would revise my rating. For example, put a demo up, so I can see that it works for something you worked with.
sorry,but i cannot run it successfully. the error is
''??? Error using ==> tic
Too many output arguments......."
btw, my database contains about 40 thousand 3-D points.