3D投影深度+颜色

时间:2012-07-25 02:05:18

标签: c++ image-processing kinect projection

我有一张彩色图像及其深度图,两者都是由Kinect拍摄的。我想把它投射到另一个位置(看看它在另一个视点中的样子)。因为我没有Kinect的内在参数(相机参数);我该如何实施呢?

P.S:我用C ++编写代码。

1 个答案:

答案 0 :(得分:1)

使用深度框和颜色框,你应该有足够的数据来实现类似于你想要做的事情。

在颜色框中,您拥有每个像素的颜色。 在深度框架中,您可以获得每个像素的距离。

(请记住,由于每个传感器的位置,深度帧和颜色帧之间的数据之间存在小的差距。请查看映射辅助方法:MapDepthFrameToColorFrame

如果同时获取深度和颜色框中的所有数据,则可以将每个像素绘制为三维世界中的一个点。假设您的分辨率为640x480。您将在640(x =宽度),480(y =高度),~3000(z =深度)的矩形中绘制场景。然后你可以改变观点!

唯一的问题是你没有适合Z轴的比例。如果您想要更好的结果,还应该使用SkeletonFrame。多亏了你将拥有实际的X,Y和Z值(以米为单位)。您可以再次使用辅助方法(MapDepthToSkeletonPoint)获取每个深度点的相应骨架点!

如果查看this post,您会找到一个显示结果的视频,C#中的一些代码,以及可以重复使用的项目示例。