Search code examples
visual-c++point-clouds

How to compare 1 point cloud data with 1 or more point cloud data?


I want to compare a point cloud data(.pcd , .ply file) with 1 or more point cloud data and want to get similar points or patches. So I want to know which technique or algorithm has to be used?


Solution

  • What you want to do is:

    1. Feature point detection: Find points on the surface of a point cloud that have a very unique and descriptive neighbourhood.

    2. Feature estimation: For these points and their neighbours (usually in spherical radius R) compute a descriptor. This can be a histogram, a simple value or a multi dimensional vector. Depends on the descriptor you're using.

    3. Find correspondences: Now for both point clouds, compare these descriptors and find matching ones (these are correspondences) and try to find these correspondences in a way that one point cloud fits the other. Reject correspondences that do not match.

    If two clouds have a set of matching correspondences you can say that these two are certainly similiar.

    I'd suggest to use the Point Clouds Library (PCL). There's a pretty good tutorial here:

    http://pointclouds.org/documentation/tutorials/correspondence_grouping.php#correspondence-grouping

    Also there is an overview of feature algorithms here (not complete though):

    https://github.com/PointCloudLibrary/pcl/wiki/Overview-and-Comparison-of-Features