c++ - 快速组织点云配准

标签 c++ opencv point-cloud-library downsampling

我一直在寻找方法来用法线信息配准(对齐)有组织的点云
我只能找到通用的点云配准方法(例如在 PCL 中)。

我正在使用 Microsoft Kinect 来获取我的点云,但问题是它们非常大。

我想知道的:

  • 是否有快速方法来配准有组织的点云
  • 是否有非常快的下采样方法(也可能 使用点云是有组织的这一事实)?
  • 我也在考虑使用 OpenCV 过滤器,因为一个有组织的 点云可以看作是具有灰度值的图像(具有深度值的二维矩阵)。例如在矩阵上使用 openCV resize 方法,以及一些衍生类型的过滤器(因为边缘对我来说在场景中很重要)。这是个好主意吗?
  • 此外,下采样看起来像是一个数据并行问题,这可能是 GPU 实现的一个很好的候选者。您知道任何此类实现吗?


到目前为止我所做的如下。
- 几种下采样方法(随机、基于体素、均匀),但所有这些方法的问题是它们都花了很多时间(在 PCL 中)。最好的是基于体素的。
- 然后是 ICP,它在下采样点云上对我来说运行得非常快和准确。

所以对我来说,目前一个好的解决方案是对我的点云进行下采样的快速方法。例如基于 GPU 的实现。

最佳答案

  1. 事实证明,将有组织的点云视为具有灰度值(简单的二维矩阵)的图像是个好主意。
  2. 在 GPU 上实现的二维矩阵的下采样方法可用于 OpenCV cuda 等。
  3. 此外,根据准确性的重要性,您可以轻松地在二维矩阵上实现您自己的快速下采样方法。例如,只需取每一个 k 元素。如果需要,您可以对这些元素进行平均以使其模糊,或对派生类型的滤波器进行锐化(边缘增强)。您可以根据有关帧的信息提出特殊的拾取方法(例如,如果您知道您的对象往往位于中心,那么您可以在该区域周围拾取更多点)。

以上所有这三个都会给出更快的结果,并且可能“更适合”您的问题(尤其是#3)。 “更多调整”意味着更不稳健。

关于c++ - 快速组织点云配准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33682082/

相关文章:

cuda - 查找 CUDA_SDK_ROOT_DIR

c++ - fatal error : openssl/rsa. h:没有那个文件或目录

c# - 如何在我的.Net Framework项目中添加对Windows运行时组件(C++/WinRT)的引用

opencv - 通用描述符匹配器函数 OPENCV

c++ - 为什么这个 OpenCV 代码什么都不做?

matlab - 删除点云中的异常值

ubuntu - ubuntu16.04安装点云库报错

C++ `operator function_type()` 这样的事情可能吗?

c++ - 类名未在 flex c++ 扫描器中声明

C++ 如何将字符串转换为指针?