深度+颜色的3D投影

3D projection of depth + color

本文关键字:3D 投影 颜色 深度      更新时间:2023-10-16

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

p.S:我正在用C++编写代码。

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

在颜色框中,您有每个像素的颜色。在深度帧中,您有每个像素的距离。

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

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

唯一的问题是Z轴的比例不正确。如果想要更好的结果,还应该使用SkeletonFrame。因此,您将获得实际的X、Y和Z值(以米为单位)。您可以再次使用辅助方法(MapDepthToSkeletonPoint)为每个深度点获取相应的骨架点!

如果你看一下这篇文章,你会发现一个视频显示了结果,一些C#代码,以及一个可以重用的项目示例。