Search code examples
c++point-cloud-librarypoint-clouds

CPD pointcloud registration (CPD-Library) in conjunction with Point Cloud Library (C++)


I'm currently trying to understand the following C++ CPD Library:

https://github.com/gadomski/cpd

https://www.gadom.ski/cpd/index.html

I already have a framework which uses the PCL library for registration of point clouds and am currently trying to introduce the CPD registration as another option.

In the documentation of the CPD-Library the following code is given as an example on how to use the rigid variant of the CPD:

#include <cpd/rigid.hpp>
int main(int argc, char** argv) {
    cpd::Matrix fixed = load_points_from_somewhere();
    cpd::Matrix moving = load_points_from_somewhere();
    cpd::RigidResult result = cpd::rigid(fixed, moving);
    return 0;
}

"fixed" and "moving" are the point clouds defined as Eigen::MatrixXd (a matrix using double values).

To generate these matrices from pcl pointclouds (pcl::PointCloud< PointT >) I need to know what these double values mean. Is it the depth, some sort of weight or another value? Thank you.


Solution

  • Every row of those matrices is a point and every column is a coordinate of this corresponding point. So a point cloud describing a 3-dimensional space would need to become a n x 3 matrix where n equals the number of points within the point cloud.