ICP

From CloudCompareWiki
Jump to navigation Jump to search

Menu / Icon

This tool is accessible via the CCRegisterIcon.png icon in the main upper toolbar or via the 'Tool > Fine Registration (ICP)' menu.

Description

This tool can automatically finely registers two entities (clouds and/or meshes).

Main assumptions are:

  • both entities are already roughly registered (see the other alignment methods)
  • both entities should represent the same object or at least have the same shape (at least on their overlapping parts)

Procedure

Select the two entities (clouds and/or meshes) that you want to register and start this tool.

We use the original ICP algorithm denominations here: first you have to choose which entity will be the 'Data' one (Registered, will eventually move) and which one will be the 'Model' one (Reference, won't move). You can the default role assignation by clicking on the 'swap' button. You'll see in the 3D view that the two entities colors are forced to yellow and red so as to correspond to the 'Model' (yellow) and 'Data' (red) colors.

Fine registration (ICP) dialog

Main parameters

Here are the most important parameters:

  • Number of iterations/RMS difference: ICP is an iterative process. During this process, the registration error (slowly) decrease. We can tell CC to stop this process either after a maximum number of iterations, or as soon as the error (RMS) difference between two iterations becomes lower than a given threshold. The smaller this threshold is, the longer it will take to converge, but the finer the result should be (note: as CC work with 32 bits floating point values, a 1e-8 threshold is already near the computation accuracy limit and it shouldn't be necessary to go any lower).
  • Final overlap: this is a new parameter for the version 2.6.1. It lets the user specify the actual portion of the data/registered cloud that would actually overlap the model/reference cloud if both clouds were registered. This let the user register entities with only a partial overlap (down to 10% or even less).
  • Adjust scale: the modified-ICP algorithm we use is able to determine a potential difference in scaling. If your clouds have different scales (e.g. photogrammetry clouds) you can check this option so as to resolve the scaling as well.


Advanced parameters

You can optionally set additional research parameters (some of which are not yet validated, so that if you change them you might get unexpected results):

  • Random sampling limit: to drastically increase computation speed on big clouds, we use an optimization scheme. It consists in randomly sub-sampling the data cloud at each iteration. This parameter is the maximum number of sub-sampled points. The default value (50000) is generally a good guess and its incidence on the result is not perceivable. However it may be insufficient for very large clouds. So if you doubt about the results, or if you want to refine the registration even more and you are not afraid of waiting a long time, don't hesitate to increase this value (to fully deactivate this optimization scheme, simply input a number greater than the data cloud size).
  • Rotation: you can constrain the rotation around a given axis (X, Y or Z)
  • Translation: you can constrain the translation along none, one or several dimensions (among X, Y and Z)
  • Enable farthest point removal: this option is very interesting if the shapes of the two entities you are trying to register are quite different (either because the entities don't represent exactly the same object, or simply because the noise on one entity is too high). This tells CC to remove at each iteration the points of the 'data' cloud that are too far from the 'model' cloud.
  • Use displayed model/data scalar field as weights: this option should enable the user to use scalar values as weights (either on the data or the model cloud - it is not advised to use weights on both clouds at the same time)


Fine registration (ICP) result