1

我从网络接收多个深度帧并使用修改后的 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. 当然,我无法通过手动校准获得出色的精度,但情况会变得更糟,因为当添加到重建中时看起来深度帧(而不是物理设备)相互“阴影”,并且差异导致组合重建的质量较低时与从一个角度使用的单个设备相比。我将尝试在此处的屏幕截图中显示它:

组合时质量下降

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

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

组合时质量下降 - 2

  1. 似乎是 1 的结果:我只能以这种方式将 Kinect Fusion 重建应用于单个帧(即在一个时刻集成 3 个深度帧)并且需要不断地重置重建,因为添加下一个数据会完全破坏它。这不是一个大问题,因为我想做实时 3d 重建,但是有没有什么办法可以得到更好的形状?

我正在考虑导出网格并使用一些网格平滑,但可能我只是在 API 上做错了什么?例如,当有轻微的不一致时,我可以使不同的部分不相互影响吗?

谢谢!

4

0 回答 0