Open3D icon indicating copy to clipboard operation
Open3D copied to clipboard

ICP Registration Question about "Max Correspondence Distance"

Open HyogiLee opened this issue 3 years ago • 0 comments

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 image

SA icp result image

data set : source, target source.zip

HyogiLee avatar Sep 07 '22 07:09 HyogiLee