0

如何在 kinect 中指定新的世界坐标系?例如,我的 kinect 正在移动,我需要在场景中指定一个静态的世界坐标系。如果使用深度图来识别用户指定的世界坐标,最准确的方法是什么?由于深度图的分辨率不高,很难选择定义用户指定世界坐标的精确像素。将默认世界坐标转换为用户指定的世界坐标系的最佳方法是什么?

4

2 回答 2

0

AS Bas 提到这应该是使用转换矩阵的问题。在 XNA 中有一个Matrix和一个Vector3。还有其他实现。我不使用 C#,所以我无法建议哪个是最好的。但是,无论您使用什么库,这个想法都是一样的:它只是一点线性代数:

  1. 使用 Matrix 实例,它的方法可以轻松旋转/平移到您需要的坐标系。
  2. 将 Vector3 实例与变换矩阵相乘,得到一个新向量到新坐标系中。(据我在文档中看到的,XNA 的 Vector3 使用Transform*方法来做到这一点,其他实现可能会给你一个 mult()/multiply() 或者只是支持向量和矩阵之间的运算符)
  3. 或者,如果您想从自定义坐标空间转换回 kinect 坐标系,只需简单地获取您创建的变换矩阵的逆矩阵并使用它来乘以自定义坐标系中的向量/位置即可获得kinet 坐标系中的向量。

只要你了解线性代数中的一些概念(主要是向量和矩阵,这个阶段你可能不需要四元数),代码部分就很简单了。那里有很多资源,例如:

  1. 就我个人而言,我发现3D Math Primer非常容易理解。尽管这些概念一开始可能看起来很难,但通过视觉几何解释,线性代数更有意义,尤其是如果你从视觉上思考
  2. 可汗学院线性代数课程
  3. Eric Haines(来自 Autodesk)有关于交互式 3D 图形的 Udacity 课程。很好的解释和超级容易拿起。它使用了three.js/webgl,但您应该在Transformations and Matrices 课程中找到一些方便的信息。
于 2013-09-21T12:34:16.940 回答
0

您想研究转换矩阵。这些将允许您转换一组坐标,例如旋转、平移、缩放等。有各种提供矩阵结构的库,如 Math.NET Numerics、XNA 等。

于 2013-09-19T10:25:34.950 回答