*camera1_cloud_aligned, final_transform); // cloud_no_nans is smoothed and
subsampled cloud with normals but without nans
*correspondences); // based on distance
*camera2_cloud_no_nans, correspondences, *filtered_correspondences); //based
on median distance and surface normal
I have two questions:
1. Will findCorrespondences (
pcl::PointNormal>) also use the points' normals to calculate a distance?
2. Is it possible to retrieve a (fitness) score showing how well the
registration worked in the end? Or do I have to transfer all this to use the
ICP class, which has a getFitnessScore() method?
Regarding CorrespondenceEstimation, it uses
KdTree.nearestKSearch () to find the correspondence points and
KdTree performs n-dimensional search. So yes, it will use as
many dimensions as your point has, in this case including the
DefaultConvergenceCriteria has the methods to provide you
what you want i.e., getRelative/AbsoluteMSE. Invoke it after
your registration step.
Thanks for your reply. I believe getRelativeMSE() and getAbsoluteMSE()
always return the same values, i.e. the value you specified with
setRelativeMSE() or setAbsoluteMSE(), respectively. They do not reflect the
current "fitness score", do they?
The method you want is calculateMSE
in the same class. Unfortunately it's defined within a protected
scope which feels wrong, so feel free to submit a pull request to
the issue tracker exposing it to public scope.