isl-org / isl-org/Open3D

ICP Registration Question about "Max Correspondence Distance"

Open
#5,511 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
14k
Forks
2.6k
Avg merge
5d 18h
Merged PRs (30d)
6

Description

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](https://user-images.githubusercontent.com/34133537/188817848-35b4b14a-c62f-4984-94c3-83a1affa9f23.png)

SA icp result
![image](https://user-images.githubusercontent.com/34133537/188817883-73694925-3598-4a46-9f93-3359dbc641ca.png)

data set : source, target
[source.zip](https://github.com/isl-org/Open3D/files/9503786/source.zip)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.