Google Project Tango Depth数据的X,Y单位是多少?

时间:2015-10-05 17:27:50

标签: point-clouds google-project-tango

来自depth data reference

  

当设备处于横向时,屏幕面向用户:+ Z指向摄像机的光轴方向,并垂直于摄像机平面测量。 + X指向用户右侧,+ Y指向屏幕底部。原点是彩色相机的焦点中心。 输出以米为单位。

请注意,值的单位显然以米为单位。查看从Tango设备观察到的实际值,很明显Z值(深度)以米为单位。

但是,

X和Y值似乎不是以米为单位。 x,y,z值的This spreadsheetanother显示Tango点云的实际结果。我看到的所有点云的最小值/最大值似乎表明x,y的单位是弧度,因为值小于2,但可以大于1.

我的目标是将观察到的点转换为与姿势数据匹配的真实世界坐标(在Java中)。

x,y的单位是什么?

2 个答案:

答案 0 :(得分:1)

深度浊点的所有坐标元素 - X和Y以及Z - 均以米为单位。当然,任何三联体(X,Y,Z)都必须位于深度相机的视野内。因此,X和Y的允许范围取决于Z的值:X必须满足abs(arctan(X/Z)) <= fovX/2(并且类似于Y)。

您在样本帧中观察的X和Y范围不是角度弧度(或以任何方式标准化);由于场景的典型Z距离,它们似乎只在该范围内。如果Z在不同的场景中碰巧变大,那么X和Y也可以更大并且满足视场关系。

答案 1 :(得分:0)

据我所知,X和Y坐标位于相机空间。原点位于相机的中心。

X,Y本身没有单位,因为它们相对于相机框架。

电子表格中的数据似乎证实了这一点。 X和Y在-1.0和+1.0之间归一化

如果您正在使用Unity Samples,我建议您查看TangoPointCloud.OnTangoDepthAvailable,其中每个点都在世界空间中进行转换。

m_points[i] = unityWorldTDepthCamera.MultiplyPoint(new Vector3(x, y, z));

希望这有帮助。