Open3D
Open3D copied to clipboard
ICP Registration Question about "Max Correspondence Distance"
Hi everyone. I want to use open3D in c++ but it is not easy to me.
In ICP, this files can be in CloudCompare, SA(spatialAnalyzer) with 4mm rms.
but in open3d PointToPoint ICP => 0 rms
Please tell me how to decide max correspondence distance value.
` geometry::PointCloud source; geometry::PointCloud target; io::ReadPointCloudFromPCD("D:\target.pcd", target, io::ReadPointCloudOption()); io::ReadPointCloudFromPCD("D:\source.pcd", source, io::ReadPointCloudOption()); Eigen::Matrix4d mat = Eigen::Matrix4d::Identity();
for (auto vx : {1000,500,100,50,30,20,10})
{
auto result =
open3d::pipelines::registration::RegistrationICP(source, target, vx, mat,
open3d::pipelines::registration::TransformationEstimationPointToPoint(),
open3d::pipelines::registration::ICPConvergenceCriteria());
mat = result.transformation_;
source = source.Transform(mat);
cout << "ICP Matrix : \n" << result.transformation_ << endl;
cout << "fit : " << result.fitness_ << endl;
cout << "rms : " << result.inlier_rmse_ << endl;
}
source.PaintUniformColor({ 1,0,0 });
io::WritePointCloudToPCD("D:\\result.pcd", source, true);
`
cloud compare icp result

SA icp result

data set : source, target source.zip