cgal
cgal copied to clipboard
question about scale in pointmatcher registation
I'm using the registration with pointmatcher to registrate two point clouds with different scales .To make similarity transform valid, I change the ICP.chain' s default from rigidtransformation to similaritytransformation. However, when I set errorminimizer to PointToPointSimilarityErrorMinimizer, the rotation matrix part I get is still an normal rotation matrix without scale. How to solve this?
1.cgal:registration_with_pointmatcher.cpp
// Prepare error minimizer ICP_config error_minimizer { /.name=/"PointToPointSimilarityErrorMinimizer", /.params=/{ } };
2.libpointmatcher/pointmatcher/ICP.cpp
void PointMatcher<T>::ICPChainBase::setDefault()
{
this->cleanup();
this->transformations.push_back(std::make_shared<typename TransformationsImpl<T>::SimilarityTransformation>());
this->readingDataPointsFilters.push_back(std::make_shared<typename DataPointsFiltersImpl<T>::RandomSamplingDataPointsFilter>());
this->referenceDataPointsFilters.push_back(std::make_shared<typename DataPointsFiltersImpl<T>::SamplingSurfaceNormalDataPointsFilter>());
this->outlierFilters.push_back(std::make_shared<typename OutlierFiltersImpl<T>::TrimmedDistOutlierFilter>());
this->matcher = std::make_shared<typename MatchersImpl<T>::KDTreeMatcher>();
this->errorMinimizer = std::make_shared<PointToPointSimilarityErrorMinimizer<T> >();
this->transformationCheckers.push_back(std::make_shared<typename TransformationCheckersImpl<T>::CounterTransformationChecker>());
this->transformationCheckers.push_back(std::make_shared<typename TransformationCheckersImpl<T>::DifferentialTransformationChecker>());
this->inspector = std::make_shared<typename InspectorsImpl<T>::NullInspector>();
}
Please put a minimal cpp together with a CMakeLists.txt as well as a data set on gist.github.com.
bump @453875726