isl-org / Open3D

Open3D: A Modern Library for 3D Data Processing
http://www.open3d.org
Other
11.28k stars 2.28k forks source link

How to compare 2 point clouds ? #6680

Open ayu8 opened 6 months ago

ayu8 commented 6 months ago

Checklist

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.

ssheorey commented 6 months ago

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.

xzhao99 commented 3 months ago

@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:

  1. a spatial search algorithm(either tree-based or spatial grid/hashing-based) for triangle mesh.
  2. 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)
  3. compute the distances according to your metrics(L1, L2-norm, ...)
OzgurMertEmir commented 3 months ago

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.