How to compare 2 point clouds ?
Checklist
- [X] I have searched for similar issues.
- [X] For Python issues, I have tested with the latest development wheel.
- [X] I have checked the release documentation and the latest documentation (for
mainbranch).
My Question
Hi, I want to compare two point-clouds using the open3d library. My main goal is to do comparison between a point cloud of an object from a LiDAR scan device and another point cloud from the 3D CAD model of the same object. But for now, I'm doing comparison between point clouds of 2 similar cars to start with.
I want to know how I should compare both point clouds to get regions of similarity or dissimilarity. ChatGPT suggested to extract feature descriptors using FPFH method. But I don't know what to do next with them.
The point to note is, both point clouds will have different number of points.
Hi @ayu8 check out the registration tutorial: https://www.open3d.org/docs/latest/tutorial/pipelines/global_registration.html
CAD models will typically not have enough points for registration, so you will need to sample more points (e.g. Poisson disk sampling from a mesh) before global registration. Follow up with ICP for fine alignment.
@ayu8 It sounds to me you are not comparing two point clouds but a point cloud and a CAD model. I suppose your CAD model is represented by a surface mesh. So you are doing a comparison between a point cloud and a surface(triangular) mesh. The common way including the following steps:
- a spatial search algorithm(either tree-based or spatial grid/hashing-based) for triangle mesh.
- for each point from your point cloud, find its neighboring triangles and then find the closest point on the mesh(not necessarily be a vertex but can be a point inside a triangle)
- compute the distances according to your metrics(L1, L2-norm, ...)
Hey! Is this issue still active? If the issue persists, I would be happy to work on it and help find a solution as my first open source contribution.