Bundle Adjustment Report


At the end of the bundle adjustment process  you can save a PDF (or txt) report detailing the ICP and Bundle Adjustment results.

Here are explained all the items inside this report.


Summary

[N] scans have been finely registered with bundle adjustment.

Num ICPs used: number of ICPs actually used 

Average ICP error [m]: average value of registration errors related to all scan pairs

Average registration error of corresponding points  [m]: global registration error reached between the most important corresponding points. This error is the main result of the bundle adjustment.


Input parameters

In this section the parameters that you set before the bundle adjustment are summarized:

Max neighbors for each scan [N]: number of scans (close to the current scan) taken in account

ICP selection severity: Level of severity used in discarding bad ICPs

ICP min search distance [m]: see Inliers Search Parameters in Cloud to Cloud Registration set parameters

ICP max divergence among point normals [deg]: see Inliers Search Parameters in Cloud to Cloud Registration set parameters

List of registered clouds: the well registered point clouds are here listed


Detailed results

ICPs executed: number of ICP processes that have been executed during bundle adjustment.

ICPs used: number of ICP registrations that have been found good enough to contribute to the final bundle adjustment.

Average ICP error: average value of registration errors related to all pairs of scans.

Maximum ICP error allowed [m]: see Inliers Search Parameters in Cloud to Cloud Registration set parameters.

Total cost before minimization [m]: statistical parameter derived from least squares method, relative to state before minimization.

Total cost after minimization [m]: statistical parameter derived from least squares method, related to state after minimization.

If Total cost after minimization < Total cost before minimization an error decrease is achieved.

Reason of convergence: if the value of |cost_change|/cost is lower than 1.000000e-008 (fixed upper limit) the function tolerance is reached.

Average registration error of corresponding points [m]: global registration error reached between the most important corresponding points. This error is the main result of the bundle adjustment.

N° corresponding points: these are the most important corresponding points among all valid scan pairs. The final global error minimization is run exactly on all these corresponding points.

N° iterations: number of iterations in the iterative decreasing error process.

N° parameters, N° effective parameters: these are the parameters of the error functional to minimize, and depend on the degrees of freedom of the problem. If bundle adjustment is run among ten scans for example, keeping one as reference, then the effective parameters are 9 moving scans * 6 degrees of freedom (three for translation and three for rotation) = 54. However, if you change the registration constraints (e.g. adding more reference scans, imposing fixed vertical and/or fixed translation) the number of effective parameters changes accordingly.

N° threads used: Bundle adjustment uses as many threads as the logical CUP cores of your PC. Therefore, bundle adjustment is very CPU-greedy to offer you the fastest processing time. If you desire another behavior, you can assign less processor to Reconstructor from the Windows task manager.

Time taken for final bundle adjustment [mm:ss.msec]

Total elapsed time [mm:ss.msec]


Report by edge, sorted by error

All the analyzed couples of scans (i.e. edge A and B) are sorted regarding the registration errors at the end of ICP and bundle adjustment phases.

[N]  corresponding points found between scans A and B.

ICP error [m]: registration error related to single pair of scans, as they are isolated from others.

Correction after bundle adjustment [m]: by how much the registration error related to the single scan pair has changed after the global error minimization. 


Edges not used

If all scans are finely registered All edges have been used is written here, otherwise a list of discarded edges, sorted by error, is shown. If you see among the “edges not used” a scan pair that should be registered together according to you, then you may want to re-run Bundle Adjustment with coarser parameters. In the same way, if a scan pair has been registered together that you think it shouldn’t have, you can re-launch Bundle Adjustment with stricter parameters.