如何使用Microsoft API正确地使用多个摄像头进行Kinect v2 Fusion

时间:2017-04-04 16:58:34

标签: c++ kinect kinect-sdk kinect-v2

我正在从网络接收多个深度帧,并使用修改后的Kinect Fusion C ++示例集成到重建中:

// smoothing
col_reconst->SmoothDepthFloatFrame(m_pDepthFloatImage, m_pDepthFloatImage, 3, m_fMaxDepthThreshold);
col_reconst->SmoothDepthFloatFrame(m_pDepthFloatImage2, m_pDepthFloatImage2, 3, m_fMaxDepthThreshold);
col_reconst->SmoothDepthFloatFrame(m_pDepthFloatImage3, m_pDepthFloatImage3, 3, m_fMaxDepthThreshold);

hr = m_pVolume->IntegrateFrame(m_pDepthFloatImage, m_cMaxIntegrationWeight, &m_worldToCameraTransform);
hr2 = m_pVolume->IntegrateFrame(m_pDepthFloatImage2, m_cMaxIntegrationWeight, &m_worldToCameraTransform2);
hr3 = m_pVolume->IntegrateFrame(m_pDepthFloatImage3, m_cMaxIntegrationWeight, &m_worldToCameraTransform4);

我手动为每个矩阵设置矩阵m_worldToCameraTransform,使用滚动条表示旋转角度和距离。

问题包括以下内容:

  1. 当然,我无法通过手动校准获得出色的精确度,但事情变得更加糟糕,因为当加入到重建时看起来像深度帧(而不是物理设备)是"阴影"与从一个观点使用的单个设备相比,彼此和差异导致组合重建的质量较低。我将尝试在屏幕截图中显示:
  2. quality drop when combined

    请注意,第一个和第二个屏幕截图表明Kinect似乎没有考虑视角(透视)。

    这种效果可以在非常精确的定位后降低,但我能达到的最佳效果仍然很差:

    quality drop when combined - 2

    1. 似乎是1的结果:我可以通过这种方式将Kinect Fusion重建应用到单个帧(即集成了3个深度帧的一个时刻)并且需要不断地重置重建,因为添加下一个数据会完全破坏它。这不是一个大问题,因为我想进行实时3D重建,但是有什么方法可以获得更好的形状吗?
    2. 我在考虑导出网格并使用一些网格平滑,但我可能只是在做错API?我可以制作不同的部分而不会互相影响,例如当存在轻微的不一致时吗?

      谢谢!

0 个答案:

没有答案