我想在不使用坐标映射器的情况下将 CameraSpace 中的 3D 骨架映射回 Kinect 中的 2D 彩色图像。我需要从深度相机转换为彩色相机吗?
在我看来,骨骼关节是从深度图像中获得的。因此,为了获得彩色图像中的关节位置,我应该通过以下 3 个步骤:
1)3D关节在深度相机3D空间,我需要转换到彩色相机3D空间(旋转/平移)。我不知道如何得到这个变换矩阵!
2)找到彩色相机内在参数(使用matlab校准工具箱)将3D映射回2D
3) 与失真系数相乘。
我在这里发现了一个类似的问题:How to convert points in depth space to color space in Kinect without using Kinect SDK functions? 然而,关于如何找出将深度相机映射到彩色相机的变换矩阵的问题没有得到解答。
编辑: 实施后,我认为 Color 2D 和 depth 2D 共享相同的 3D 相机空间(在某些方面,实际上深度和颜色是两个不同的相机——>它们应该有不同的 3D 相机空间)。因此,在没有坐标映射功能的情况下,我成功地将 3D 点映射为 2D 颜色(我使用了从 Matlab 工具箱中找到的投影矩阵)。3D 相机空间 -> 投影回 2D 像素颜色
一开始,我认为 3D 点在 3D 深度空间中,3D 深度和 3D 色彩空间是不同的。(输入:3D 深度空间中的 3D 点,输出:2D 彩色像素),我需要将 3D depthcamera ->3D colorcamera -> 投影回 2D 像素颜色)。但是,步骤3D depthcamera ->3D colorcamera不需要实现。