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 等于点云中的点数。
我目前正在尝试了解以下 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 等于点云中的点数。