CPD 点云注册 (CPD-Library) 与点云库 (C++)

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

我目前正在尝试了解以下 C++ CPD 库:

https://github.com/gadomski/cpd

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

我已经有一个使用 PCL 库注册点云的框架,目前正在尝试引入 CPD 注册作为另一种选择。

在 CPD-Library 的文档中,给出了以下代码作为示例,说明如何使用 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;
}

“固定”和“移动”是定义为Eigen::MatrixXd(使用双精度值的矩阵)的点云。

要从 pcl 点云 (pcl::PointCloud< PointT >) 生成这些矩阵,我需要知道这些双精度值的含义。是深度、某种重量还是其他值? 谢谢。

这些矩阵的每一行都是一个点,每一列都是这个对应点的坐标。 因此,描述 3 维 space 的点云需要变成 n x 3 矩阵,其中 n 等于点云中的点数。