【问题标题】:Kinect Point Cloud To Color Space TransformKinect 点云到颜色空间的变换
【发布时间】:2017-01-27 18:38:11
【问题描述】:

现在,我正在尝试确定 Kinect V2.0 框架中的变换矩阵。我的最终目标是最终获得将我的点云(相对于深度传感器)转换为相对于彩色相机的点云所需的平移和旋转矩阵。

我知道我可以手动校准(通过 OpenCV 等)来确定变换,但我想要实际的相机矩阵。我使用调用MapDepthFrameToCameraSpaceUsingIntPtr,所以我知道深度空间和颜色空间之间存在内部理解(也称为矩阵变换)。

有谁知道如何提取,或者如果 Kinect v2 API 中存在一个矩阵,他们在内部用于MapDepthFrameToCameraSpaceUsingIntPtr 调用?或者,是否有办法将点云图像帧转换为彩色相机空间?

【问题讨论】:

    标签: opencv kinect openkinect


    【解决方案1】:

    可能他们知道旋转和平移矩阵,以及彩色相机参数。不幸的是,就您使用 Microsoft SDK 而言,它们不会公开这些数据(只有深度相机参数是公开的)。要么校准相机,要么使用提供的查找表。

    【讨论】:

      【解决方案2】:

      您尝试执行的操作(转换)称为注册I have explained here very clearly how to do the Registration.

      我知道我可以手动校准(通过 OpenCV 等),以确定 变换,但我想要实际的相机矩阵。

      校准您的摄像头是获得 Kinect 传感器最准确摄像头矩阵的唯一方法,因为每个 Kinect 传感器的摄像头矩阵各不相同,几乎没有余量。但是,一旦您构建了点云,它就会产生重大影响。

      有谁知道如何提取,或者里面是否存在矩阵 Kinect v2 API,它们在内部用于 MapDepthFrameToCameraSpaceUsingIntPtr 调用?

      您可以提取部分矩阵,但不是全部。非常无能为力的是MapDepthFrameToCameraSpaceUsingIntPtr没有在你的 CPU 中处理。 它是在 kinect 硬件本身的芯片内部计算的。矩阵的值嵌入到芯片本身中。原因是,想想这个 API 调用需要做多少计算。例如。 Kinect 帧速率为每秒 30 帧,每个彩色帧有 1920 x 1080 像素,深度帧有 512 x 424 像素。至少

      30 x 512 x 424 = 6,512,640每秒计算次数。

      在不知道相机矩阵的情况下,您无法在现实世界坐标空间中构建点云。如果直接使用深度图像坐标构建点云,那么该点云在深度空间中。

      我已经开发了一个具有实时点云可视化的 3D 交互原型。

      You can check out my repository VRInteraction

      Demo video

      Calibrated color and depth camera matrix

      正如您在视频的右侧看到的,它是一个实时 3D 点云。我使用 CUDA(GPU 加速)通过将深度帧注册到颜色帧并构建 RGBXYZ 点云来实现这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-06
        • 2018-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多