我有一张彩色图像及其深度图,它们都是由 Kinect 捕获的。我想将它投影到另一个位置(以查看它在另一个角度的样子)。因为我没有 Kinect 的内在参数(相机参数);我该如何实施?
PS:我正在用 C++ 编写代码。
我有一张彩色图像及其深度图,它们都是由 Kinect 捕获的。我想将它投影到另一个位置(以查看它在另一个角度的样子)。因为我没有 Kinect 的内在参数(相机参数);我该如何实施?
PS:我正在用 C++ 编写代码。
使用深度框架和颜色框架,您应该有足够的数据来实现与您想要做的类似的事情。
在颜色框架中,您拥有每个像素的颜色。在深度帧中,您有每个像素的距离。
(请记住,由于每个传感器的位置,深度帧中的数据和颜色帧中的数据之间存在小的差距。请查看映射辅助方法:MapDepthFrameToColorFrame)
如果您同时获取深度和颜色框架中的所有数据,您可以将每个像素绘制为 3 维世界中的一个点。假设您的分辨率为 640x480。您将在 640(x = 宽度)、480(y = 高度)、~3000(z = 深度)的矩形中绘制场景。那你就可以换个角度了!
唯一的问题是您没有正确的 Z 轴比例。如果您想要更好的结果,您还应该使用 SkeletonFrame。多亏了这一点,您将获得实际的 X、Y 和 Z 值(以米为单位)。您可以再次使用辅助方法 ( MapDepthToSkeletonPoint ) 来获取每个深度点对应的骨架点!
如果您查看这篇文章,您会发现一个显示结果的视频、一段 C# 代码,以及一个您可以重复使用的项目示例。