首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手动将点云数据馈送到Kinect Fusion工具包

手动将点云数据馈送到Kinect Fusion工具包
EN

Stack Overflow用户
提问于 2013-11-17 12:11:12
回答 2查看 712关注 0票数 0

我正在尝试手动向Kinect Fusion的AlignPointCloud功能输入数据。在Kinect SDK工具包1.8中,有一个如何使用Kinect Fusion的示例。我正在使用示例中提供的工具包尝试使用融合来对齐两个点云;但是,我似乎无法使AlignPointCloud方法成功收敛。

我确信,关于如何将数据复制到FusionPointCloudImageFrame中,我有一些误解。

我目前尝试做的事情(一个微不足道的例子,简单地将两个平面匹配在一起)失败了:

代码语言:javascript
复制
float[] arr1 = new float[80 * 60 * 6];
float[] arr2 = new float[80 * 60 * 6];
for (int y = 0; y < 60; y++) {
  for (int x = 0; x < 80; x++) {
    int ind = y * 80 + x;

    arr1[ind] = x / .1f; // X coordinate
    arr1[ind + 1] = y / .1f; // Y coordinate
    arr1[ind + 2] = 1; // Z coordinate
    // Normals
    arr1[ind + 3] = 0;
    arr1[ind + 4] = 0;
    arr1[ind + 5] = 1;

    arr2[ind] = x / .1f; // X coordinate
    arr2[ind + 1] = y / .1f; // Y coordinate
    arr2[ind + 2] = 2; // Z coordinate
    // Normals
    arr1[ind + 3] = 0;
    arr1[ind + 4] = 0;
    arr1[ind + 5] = 1;
  }
}
FusionPointCloudImageFrame pcl1 = new FusionPointCloudImageFrame(80, 60);
FusionPointCloudImageFrame pcl2 = new FusionPointCloudImageFrame(80, 60);

pcl1.CopyPixelDataFrom(arr1);
pcl2.CopyPixelDataFrom(arr2);

Matrix4 m = Matrix4.Identity;
bool success = FusionDepthProcessor.AlignPointClouds(pcl1, pcl2, 7, null, ref m);
// Does not converge, m is identity regardless of what it was before

我的操作有哪些错误,或者我需要进行哪些更改才能手动输入数据以匹配两个点云?另外,有人能给我解释一下有宽度和高度的点云的意义吗?每个点都有一个x、y和z值,并且不需要以任何有序的方式afaik,那么为什么我们需要提供宽度或高度呢?如果我从.obj (wavefront)文件中读取数据,我如何确定宽度和高度?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-11-18 18:33:12

乍一看,这个例子可能无法收敛,因为没有纹理可以“修复”这些平面:它们可以滑动并匹配得同样好。尝试使用一些不太重要的测试数据。

“点云”本质上只是一个深度图像,因此它可以具有来自Kinect摄像头的帧的宽度和高度。

如果从网格渲染,可以选择适当的宽度和高度,例如640x480。

票数 0
EN

Stack Overflow用户

发布于 2014-07-07 23:52:15

我不知道这是否仍然有用,但是你的代码有问题,你只存储了x坐标,对于法线,你没有为第二个数组存储它们。对于我来说,我使用从kinect fusion之前的网格中保存的坐标,并将其存储在文件中,然后加载它们以将它们与实际的点云框架进行比较。然而,它似乎每次都是真的,所以我不知道alignpointcloud是用于限制两个点云之间的转换,还是用于对象识别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20027092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档