Coder Social home page Coder Social logo

Comments (8)

pglira avatar pglira commented on August 20, 2024

Hi Jiaxing, can you send me the full logfile in debug mode (i.e. calling runICP with 'LogLevel', 'debug')?

from point_cloud_tools_for_matlab.

zjx99 avatar zjx99 commented on August 20, 2024

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

from point_cloud_tools_for_matlab.

pglira avatar pglira commented on August 20, 2024

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:
image

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);

Result is:
image

from point_cloud_tools_for_matlab.

zjx99 avatar zjx99 commented on August 20, 2024

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 ?

from point_cloud_tools_for_matlab.

pglira avatar pglira commented on August 20, 2024

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

from point_cloud_tools_for_matlab.

zjx99 avatar zjx99 commented on August 20, 2024

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

from point_cloud_tools_for_matlab.

pglira avatar pglira commented on August 20, 2024

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.

from point_cloud_tools_for_matlab.

zjx99 avatar zjx99 commented on August 20, 2024

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.
image
image
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?
image

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?

image

image

Thanks a lot.

from point_cloud_tools_for_matlab.

Related Issues (9)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.