当设备处于横向时,屏幕面向用户:+ Z指向摄像机的光轴方向,并垂直于摄像机平面测量。 + X指向用户右侧,+ Y指向屏幕底部。原点是彩色相机的焦点中心。 输出以米为单位。
请注意,值的单位显然以米为单位。查看从Tango设备观察到的实际值,很明显Z值(深度)以米为单位。
但是,X和Y值似乎不是以米为单位。 x,y,z值的This spreadsheet和another显示Tango点云的实际结果。我看到的所有点云的最小值/最大值似乎表明x,y的单位是弧度,因为值小于2,但可以大于1.
我的目标是将观察到的点转换为与姿势数据匹配的真实世界坐标(在Java中)。
x,y的单位是什么?
答案 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));
希望这有帮助。