OpeNni:颜色坐标到深度坐标

时间:2012-02-23 10:00:16

标签: java kinect openni homogenous-transformation

我想知道如何转换我从a获得的坐标 完整的彩色图像到深度流中的坐标。

例如,我从完整的颜色得到(763,234),我想知道什么 是深度图像的(x,y,z)? (顺便说一句,我在java中这样做,但c ++中的答案可能很容易 可翻译的)

提前谢谢

1 个答案:

答案 0 :(得分:2)

如果您的输入设备允许,您只需使用“ GetAlternativeViewPointCap ”,如以下C ++代码所示。在这种情况下,深度图被自动变换以便与彩色图像对齐。因此,给定彩色图像上像素的坐标(x,y),在相同位置查询深度图就足够了。

m_context.InitFromXmlFile(path,m_scriptNode);                               
m_context.FindExistingNode(XN_NODE_TYPE_IMAGE, m_imageGenerator);                       
m_context.FindExistingNode(XN_NODE_TYPE_DEPTH, m_depthGenerator);                       
if (m_depthGenerator.IsCapabilitySupported(XN_CAPABILITY_ALTERNATIVE_VIEW_POINT)) {
    m_depthGenerator.GetAlternativeViewPointCap().SetViewPoint(m_imageGenerator);
}

如果这种方法不可行,您应该估计两台摄像机之间的转换。诸如“计算机视觉中的多视图几何”之类的书描述了所有必要的背景和算法。