Not enough correspondences found
zjx99 opened this issue · 8 comments
Hi, Philipp,
I was trying to use this tool to registration several points clouds from roadside laser scanning system. The file format is .csv. I got the following errors when I implemented the command runICP as follows:
I tried to adjust the parameter UniformSamplingDistance to different values, and I still got similar errors.
Can you please give me some clues? Thanks
Hi Jiaxing, can you send me the full logfile in debug mode (i.e. calling runICP with 'LogLevel', 'debug')?
I've emailed you the code and data I used because I am not so sure what you need to look at. Thanks a lot
First of all, the ICP algorithm needs at the start already a quiet good alignment of the point clouds. If this is given, the ICP algorithm can be used for a fine alignment of the point clouds, i.e. to minimize rather small discrepancies between the point clouds.
The point clouds that you have provided are not aligned well enough at the beginning:
But this can be easily accomplished (in this case!) by subtracting the cog (center of gravity) from each point cloud:
Then the ICP works well with when choosing appropriate matching parameters:
icp.runICP('UniformSamplingDistance',0, ...
'PlaneSearchRadius',0.3);
Thank you for the results and code.
" the ICP algorithm needs at the start already a quiet good alignment of the point clouds", here, " the ICP algorithm" refers to the normal ICP algorithm ? And is there any other way to get good alignment before ICP in addition to the way you showed me ?
Some options:
- Some programs provide the possibilty to manually select correspondences between two point clouds. E.g. in CloudCompare.
- You can place geometric figures (e.g. spheres or cylinders) which have a fixed position among all scans. These figures can be automatically detected in the point clouds and then used to estimate a transformation matrix for n-1 scans.
- You can use move and rotate manually each point cloud in a 3d program and therey align it roughly with a master point cloud
Thanks,
In my case, there are usually more than 100 scans for a single car, so I am afraid manual work is impossible. Also, for the second option, each scan only contains a certain part of a car, e.g. the first covers the front, while the last might only have the rear of the car, so I am afraid it will not be so easy to find a fixed geometric figure in all the scanns.
In the meantime, as you suggested, it is better to register in two rounds for plenty of scans, my question is : do I also need to get a coarse alignment before the start of the second round?
Thanks
Yes, the subsets of the scans (lets say subset 1: scan1 to scan10, and subset 2: scan11 to scan20) need also to be roughly aligned before running the ICP.
Thank you.
There are 127 scans in my case, I divided them into 4 small groups with 30,30,30,37 scans, separately. In the first round, globalICP-based registration is conducted within each group,before this, each group of scans were roughly registered, and the results are very good. I named the merged scans as g1,g2,g3,g4, g1 and g2 are shown below.
In the second round, I tried to register the above 4 scans shown as below, however I had no idea how to get coarse alignment for them. For this condition , is there a good way to get a better initial alignment?
Later, I changed the strategy: I tried the original ICP algorithm for all the scanns, and used the results( the first figure below) as initial alignment for globalICP, the second figure below show the final results. However, I didn't see much difference between results from original ICP ( downsampled before) and those from globalICP. My questions are : (1) is there any processing about error accumulation in globalICP when dealing with multiple scans; (2) How to understand the word 'global' ? (3) How to understand the advantage of globalICP over original ICP?
Thanks a lot.