processing - 具有多个 Kinect 的点云

标签 processing kinect openni point-clouds

我正在尝试在 Processing 上创建一个具有多个 kinects 的 PointCloud 映射用户。我用相对两侧的 2 个 kinect 获取用户的正面和背面,并生成两个点云。

问题是 PointClouds X/Y/Z 没有同步,它只是把它们两个放在屏幕上,看起来肯定很乱。有一种方法可以计算或比较它们,将第二个 PointCloud 转换为“加入”第一个?我可以手动转换位置,但如果我移动传感器,它会再次关闭。

最佳答案

假设所有 Kinect 都是静止的,我想你必须按以下顺序进行:

  1. 决定使用哪个 Kinect 作为全局引用,
  2. 获取每个其他 Kinect 的 3D 转换参数 - 我会尝试 使用 PMatrix3D 和 applyMatrix(),虽然它可能很慢,
  3. 将变换应用于每个其他 Kinect 的点云并绘制 云

我(还)不知道如何获取 Procrustes transformation 的转换参数,但假设它们不会改变,您可能必须设置多个引用点,可能是通过显示来自每对 Kinect 的点云并注册您知道在两个点云中相同的点。在获得足够的它们之后,构造一个 PMatrix3D 并将其应用到 push/popMatrix 中。 这是这个人使用的方法:http://www.youtube.com/watch?v=ujUNj1RDL4I

另一种方法是使用迭代最近点算法并从其输出构造 3D 变换。如果有人知道一个好的,我真的很想要一个用于处理的 ICP 或 PCL 库。

关于processing - 具有多个 Kinect 的点云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9877714/

相关文章:

java - Collections.shuffle 不适用于Processing.js?

javascript - p5 : resize canvas, 具有固定的起始宽度/高度?

macos - 在 OS X 上使用 kinect 1520 和 libfreenect2 进行处理/Python 开发

c++ - (OPENNI) 需要将 mockDepthgenerator(创建时不基于另一个深度生成器)添加到记录器

ubuntu - 找不到 OpenNi2 和 Asus Xtion Pro Live 设备

c++ - OpenCv:无法打开 Kinect 的捕获对象

Java处理我可以同时运行两个draw()方法吗?

java - 贝塞尔曲线()不工作

kinect - 使用网络摄像头/第二个网络摄像头注册/覆盖 kinect 深度配置文件

windows - Kinect USB 3.0 经常重连