TensorFlow 2.0 RC is available Learn more

tfg.rendering.camera.perspective.unproject

Unprojects a 2d point in 3d.

tfg.rendering.camera.perspective.unproject(
    point_2d,
    depth,
    focal,
    principal_point,
    name=None
)

Defined in rendering/camera/perspective.py.

Unprojects a 2d point \((x', y')\) to a 3d point \((x, y, z)\) knowing the depth \(z\) with

$$ \begin{matrix} x = \frac{z (x' - c_x)}{f_x}, & y = \frac{z(y' - c_y)}{f_y}, & z = z, \end{matrix} $$

where \((f_x, f_y)\) is the focal length and \((c_x, c_y)\) the principal point.

Note:

In the following, A1 to An are optional batch dimensions.

Args:

  • point_2d: A tensor of shape [A1, ..., An, 2], where the last dimension represents a 2d point to unproject.
  • depth: A tensor of shape [A1, ..., An, 1], where the last dimension represents the depth of a 2d point.
  • focal: A tensor of shape [A1, ..., An, 2], where the last dimension represents a camera focal length.
  • principal_point: A tensor of shape [A1, ..., An, 2], where the last dimension represents a camera principal point.
  • name: A name for this op that defaults to "perspective_unproject".

Returns:

A tensor of shape [A1, ..., An, 3], where the last dimension represents a 3d point.

Raises:

  • ValueError: If the shape of point_2d, depth, focal, or principal_point is not supported.