open3d.t.pipelines.slac.control_grid#

class open3d.t.pipelines.slac.control_grid#

ControlGrid is a spatially hashed voxel grid used for non-rigid point cloud registration and TSDF integration. Each grid stores a map from the initial grid location to the deformed location. You can imagine a control grid as a jelly that is warped upon perturbation with its overall shape preserved. Reference: https://github.com/qianyizh/ElasticReconstruction/blob/master/FragmentOptimizer/OptApp.cpp http://vladlen.info/papers/elastic-fragments.pdf.

__init__(*args, **kwargs)#

Overloaded function.

  1. __init__(self: open3d.cpu.pybind.t.pipelines.slac.control_grid, arg0: open3d.cpu.pybind.t.pipelines.slac.control_grid) -> None

Copy constructor

  1. __init__(self: open3d.cpu.pybind.t.pipelines.slac.control_grid) -> None

  2. __init__(self: open3d.cpu.pybind.t.pipelines.slac.control_grid, grid_size: float, grid_count: int = 1000, device: open3d.cpu.pybind.core.Device = CPU:0) -> None

  3. __init__(self: open3d.cpu.pybind.t.pipelines.slac.control_grid, grid_size: float, keys: open3d.cpu.pybind.core.Tensor, values: open3d.cpu.pybind.core.Tensor, device: open3d.cpu.pybind.core.Device = CPU:0) -> None

compactify(self: open3d.cpu.pybind.t.pipelines.slac.control_grid) None#

Force rehashing, so that all entries are remapped to [0, size) and form a contiguous index map.

deform(*args, **kwargs)#

Overloaded function.

  1. deform(self: open3d.cpu.pybind.t.pipelines.slac.control_grid, pointcloud: open3d::t::geometry::PointCloud) -> open3d::t::geometry::PointCloud

Non-rigidly deform a point cloud using the control grid.

  1. deform(self: open3d.cpu.pybind.t.pipelines.slac.control_grid, depth: open3d::t::geometry::Image, intrinsics: open3d.cpu.pybind.core.Tensor, extrinsics: open3d.cpu.pybind.core.Tensor, depth_scale: float, depth_max: float) -> open3d::t::geometry::Image

Non-rigidly deform a depth image by - unprojecting the depth image to a point cloud - deform the point cloud; - project the deformed point cloud back to the image.

  1. deform(self: open3d.cpu.pybind.t.pipelines.slac.control_grid, rgbd: open3d::t::geometry::RGBDImage, intrinsics: open3d.cpu.pybind.core.Tensor, extrinsics: open3d.cpu.pybind.core.Tensor, depth_scale: float, depth_max: float) -> open3d::t::geometry::RGBDImage

Non-rigidly deform a RGBD image by - unprojecting the RGBD image to a point cloud - deform the point cloud; - project the deformed point cloud back to the image.

get_anchor_idx(self: open3d.cpu.pybind.t.pipelines.slac.control_grid) int#
get_curr_positions(self: open3d.cpu.pybind.t.pipelines.slac.control_grid) open3d.cpu.pybind.core.Tensor#

Get control grid shifted positions from tensor values (optimized in-place)

get_device(self: open3d.cpu.pybind.t.pipelines.slac.control_grid) open3d.cpu.pybind.core.Device#
get_hashmap(self: open3d.cpu.pybind.t.pipelines.slac.control_grid) open3d.cpu.pybind.core.HashMap#

Get the control grid hashmap.

get_init_positions(self: open3d.cpu.pybind.t.pipelines.slac.control_grid) open3d.cpu.pybind.core.Tensor#

Get control grid original positions directly from tensor keys.

get_neighbor_grid_map(self: open3d.cpu.pybind.t.pipelines.slac.control_grid) Tuple[open3d.cpu.pybind.core.Tensor, open3d.cpu.pybind.core.Tensor, open3d.cpu.pybind.core.Tensor]#
Get the neighbor indices per grid to construct the regularizer. Returns a 6-way neighbor grid map for all the active entries of shape (N, ).
  • buf_indices Active indices in the buffer of shape (N, )

  • buf_indices_nb Neighbor indices (including non-allocated entries) for the active entries of shape (N, 6).

  • masks_nb Corresponding neighbor masks of shape (N, 6).

parameterize(self: open3d.cpu.pybind.t.pipelines.slac.control_grid, pointcloud: open3d::t::geometry::PointCloud) open3d::t::geometry::PointCloud#

Parameterize an input point cloud by embedding each point in the grid with 8 corners via indexing and interpolation. Returns: A PointCloud with parameterization attributes: - neighbors: Index of 8 neighbor control grid points of shape (8, ) in Int64. - ratios: Interpolation ratios of 8 neighbor control grid points of shape (8, ) in Float32.

size(self: open3d.cpu.pybind.t.pipelines.slac.control_grid) int#
touch(self: open3d.cpu.pybind.t.pipelines.slac.control_grid, pointcloud: open3d::t::geometry::PointCloud) None#

Allocate control grids in the shared camera space.