Hi,
I was wondering if the Register command (Tools-> Registration -> Register) is using the ICP algorithm ???
If yes then could someone help interpret some results i get from the algorithm ??? I want to test the icp algorithm to see if it is capable of detecting deformations on two point clouds. For this purpose i created a grid of points and afterwards an area of surface of the grid was chosen to be raised by 0.10m uniformly at the z-axis.
Then i move a little bit the raised area and i expected to get fairly the same results but that was not the case. (you can see the results in the screen shot i attached)
Also there is a rotation matrix when i haven`t rotate at all the grid.
Could someone help me ???
Thank you in advance
Vasilis-Thanos Anagnostopoulos
P.S.: I could not attached the files of the grids.
Cloud registration with align
Cloud registration with align
- Attachments
-
- sceenshot with the results
- Screenshot.png (198.46 KiB) Viewed 32335 times
Re: Cloud registration with align
Indeed, the "register" tool is based on ICP (with an optional random points picking scheme at each iteration for big clouds, but this is visibly not the case for your example).
In a general point of view, standard ICP works poorly on flat/smooth surfaces (not at all in fact). Depending on the clouds limits and sampling, the surfaces can freely slide and rotate.
But in your case I don't think this is the true issue: ICP works also relatively poorly in presence of big differences (don't forget that ICP is meant to be used on equivalent surfaces). The fact that in your case the difference is a constant shift of a part of your plane is just the worst case I believe (this is not the kind of outliers that can be smoothed by least squares but more like a tendency that will make ICP converge in between the two steps). The rotation is almost the identity in fact (1e-7) and must be due to either a non-symmetry of your deformation and/or numerical errors.
In summary:
- don't use ICP on planes, spheres or cylinders
- don't use ICP on too different clouds in those case, you should use ICP on a part that matches well the other cloud shape, then apply the resulting matrix to the original cloud).
Hope that helps,
In a general point of view, standard ICP works poorly on flat/smooth surfaces (not at all in fact). Depending on the clouds limits and sampling, the surfaces can freely slide and rotate.
But in your case I don't think this is the true issue: ICP works also relatively poorly in presence of big differences (don't forget that ICP is meant to be used on equivalent surfaces). The fact that in your case the difference is a constant shift of a part of your plane is just the worst case I believe (this is not the kind of outliers that can be smoothed by least squares but more like a tendency that will make ICP converge in between the two steps). The rotation is almost the identity in fact (1e-7) and must be due to either a non-symmetry of your deformation and/or numerical errors.
In summary:
- don't use ICP on planes, spheres or cylinders
- don't use ICP on too different clouds in those case, you should use ICP on a part that matches well the other cloud shape, then apply the resulting matrix to the original cloud).
Hope that helps,
Daniel, CloudCompare admin
Re: Cloud registration with align
Hi Daniel,
I am trying to reproduce the results of a paper that use icp for movement detection of pit slopes using laser scanners point clouds (if you want i can mail you the paper) and it seems that something i am doing wrong. I will look deeper on the subject to find what i am doing wrong.
Thank you for your time .
I am trying to reproduce the results of a paper that use icp for movement detection of pit slopes using laser scanners point clouds (if you want i can mail you the paper) and it seems that something i am doing wrong. I will look deeper on the subject to find what i am doing wrong.
Thank you for your time .
Re: Cloud registration with align
Sure don't hesitate to send me the article.
Daniel, CloudCompare admin
Re: Cloud registration with align
Hi daniel,
I have sent the paper at cloudcompare[at]danielgm.net (i hope it is the correct address)
One final question that concerns the icp. Is it possible the octree structure to influence the results of the icp ???
Thank you in advance
I have sent the paper at cloudcompare[at]danielgm.net (i hope it is the correct address)
One final question that concerns the icp. Is it possible the octree structure to influence the results of the icp ???
Thank you in advance
Re: Cloud registration with align
I hope not! Otherwise it would be a bug (the octree is only used for distance computation).
I looked closely at your article (Movement detection of pit slopes using laser scanner point clouds, Gounaris et al). First I didn't want to be too hard on them ... but well, it's hard! (they don't even cite my own work :-D).
First, what is strange is that they say they use a 20 * 10 m flat cloud, and that they raise of 0.1 m a 5 x 2.5 m part ... and then they say that it corresponds to one quarter of the whole area: it's not 1/4 but more likely 1/16! So the justification for their resulting translation (0.024 m = 0.1/4) becomes "curious". As I was in a very good mood and as the figure showing the two clouds together does represent a cloud with just a quarter raised relatively to the other, I admitted that there was just a mistake in the description of the first plane (which would therefore be of 10 x 5 m).
But there is even more curious things...
The standard ICP algorithm minimizes the sum of squared distances between corresponding points. If we take a plane of 10 x 5 m with 0.25 m steps, it gives 21*41(= 861) points. But I guess once again that they took in fact a cloud with 20*40 points (as you can't properly cut in four equivalent parts a 21*41 points cloud ;). So let's say we have 800 points in both clouds, and that in the second one 200 are raised of 0.1 m. If we apply their final transformation, we get 600 points with a distance of 0.024 m. and 200 points with a distance of 0.076 m. This gives a total sum of square distances of: 600*0.024^2 + 200*0.076^2 = 1.5 m^2 !
If you launch the standard ICP algorithm with CloudCompare on this dataset, you'll get on the final step a sum of squared distances of approximately 0.86 m^2. And I wondered that maybe they used a different minimization scheme but I realized that even the mean distance is worst with their method: mean = (600 * 0.024 + 200 * 0.076)/800 = 0.037 m while you get 0.026 m. with ICP/CC!
So I can only conclude that this article is either a fraud or that all their work has been done with a much buggier software than CC ;)
I looked closely at your article (Movement detection of pit slopes using laser scanner point clouds, Gounaris et al). First I didn't want to be too hard on them ... but well, it's hard! (they don't even cite my own work :-D).
First, what is strange is that they say they use a 20 * 10 m flat cloud, and that they raise of 0.1 m a 5 x 2.5 m part ... and then they say that it corresponds to one quarter of the whole area: it's not 1/4 but more likely 1/16! So the justification for their resulting translation (0.024 m = 0.1/4) becomes "curious". As I was in a very good mood and as the figure showing the two clouds together does represent a cloud with just a quarter raised relatively to the other, I admitted that there was just a mistake in the description of the first plane (which would therefore be of 10 x 5 m).
But there is even more curious things...
The standard ICP algorithm minimizes the sum of squared distances between corresponding points. If we take a plane of 10 x 5 m with 0.25 m steps, it gives 21*41(= 861) points. But I guess once again that they took in fact a cloud with 20*40 points (as you can't properly cut in four equivalent parts a 21*41 points cloud ;). So let's say we have 800 points in both clouds, and that in the second one 200 are raised of 0.1 m. If we apply their final transformation, we get 600 points with a distance of 0.024 m. and 200 points with a distance of 0.076 m. This gives a total sum of square distances of: 600*0.024^2 + 200*0.076^2 = 1.5 m^2 !
If you launch the standard ICP algorithm with CloudCompare on this dataset, you'll get on the final step a sum of squared distances of approximately 0.86 m^2. And I wondered that maybe they used a different minimization scheme but I realized that even the mean distance is worst with their method: mean = (600 * 0.024 + 200 * 0.076)/800 = 0.037 m while you get 0.026 m. with ICP/CC!
So I can only conclude that this article is either a fraud or that all their work has been done with a much buggier software than CC ;)
Daniel, CloudCompare admin
Re: Cloud registration with align
Hi daniel,
Thank you for your response. It was very helpful :)
P.S.: In my search for the icp algorithm i found the Point Cloud Library (PCL). If you haven`t heard it look it up. I believe that can help you very match in your project. Keep up the good work :)
Thank you for your response. It was very helpful :)
P.S.: In my search for the icp algorithm i found the Point Cloud Library (PCL). If you haven`t heard it look it up. I believe that can help you very match in your project. Keep up the good work :)
Re: Cloud registration with align
We know very well the PCL library. For instance, Luca Penasa is working on a PCL bridge for CloudCompare (as a plugin):
http://www.pcl-users.org/PCL-plugin-for ... 03983.html
http://www.pcl-users.org/PCL-plugin-for ... 03983.html
Daniel, CloudCompare admin
Re: Cloud registration with align
Hi Daniel,
I have two questions if you could help me :)
First, I have been reading your paper on "change detection on points cloud data acquired with a ground laser scanner" and your doctoral thesis and i was wondering if is possible to have a vector of the change rather than absolute distance ???
For this purpose, is it possible to use the octree structure as you mention in your paper but instead of using Hausdorff distance to use another algorithm that produces a vector of the deformation, like the icp, as the paper i send you mentioned. Although they mesh it up with the results the idea is quite simple??? Do you believe it will work???
Thank you in advance
P.S.: I post a minor bug that is present in systems that use gnu compiler.
I have two questions if you could help me :)
First, I have been reading your paper on "change detection on points cloud data acquired with a ground laser scanner" and your doctoral thesis and i was wondering if is possible to have a vector of the change rather than absolute distance ???
For this purpose, is it possible to use the octree structure as you mention in your paper but instead of using Hausdorff distance to use another algorithm that produces a vector of the deformation, like the icp, as the paper i send you mentioned. Although they mesh it up with the results the idea is quite simple??? Do you believe it will work???
Thank you in advance
P.S.: I post a minor bug that is present in systems that use gnu compiler.
Re: Cloud registration with align
Oups, I totally missed this message, sorry!
Do you still need the answers? (I guess this is a bit late...)
Do you still need the answers? (I guess this is a bit late...)
Daniel, CloudCompare admin