|
Open3D (C++ API)
0.19.0
|
#include <ControlGrid.h>
Public Member Functions | |
| ControlGrid ()=default | |
| Default constructor. | |
| ControlGrid (float grid_size, int64_t grid_count=1000, const core::Device &device=core::Device("CPU:0")) | |
| Constructor with initial grid size and grid count estimation. | |
| ControlGrid (float grid_size, const core::Tensor &keys, const core::Tensor &values, const core::Device &device=core::Device("CPU:0")) | |
| void | Touch (const geometry::PointCloud &pcd) |
| Allocate control grids in the shared camera space. | |
| void | Compactify () |
| std::tuple< core::Tensor, core::Tensor, core::Tensor > | GetNeighborGridMap () |
| geometry::PointCloud | Parameterize (const geometry::PointCloud &pcd) |
| geometry::PointCloud | Deform (const geometry::PointCloud &pcd) |
| Non-rigidly deform a point cloud using the control grid. | |
| geometry::Image | Deform (const geometry::Image &depth, const core::Tensor &intrinsics, const core::Tensor &extrinsics, float depth_scale, float depth_max) |
| geometry::RGBDImage | Deform (const geometry::RGBDImage &rgbd, const core::Tensor &intrinsics, const core::Tensor &extrinsics, float depth_scale, float depth_max) |
| core::Tensor | GetInitPositions () |
| Get control grid original positions directly from tensor keys. | |
| core::Tensor | GetCurrPositions () |
| std::shared_ptr< core::HashMap > | GetHashMap () |
| int64_t | Size () |
| core::Device | GetDevice () |
| int64_t | GetAnchorIdx () |
Static Public Attributes | |
| static const std::string | kGrid8NbIndices = "Grid8NbIndices" |
| static const std::string | kGrid8NbVertexInterpRatios |
| 8 neighbor grid interpolation ratio for vertex per point. | |
| static const std::string | kGrid8NbNormalInterpRatios |
| 8 neighbor grid interpolation ratio for normal per point. | |
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
|
default |
Default constructor.
| open3d::t::pipelines::slac::ControlGrid::ControlGrid | ( | float | grid_size, |
| int64_t | grid_count = 1000, | ||
| const core::Device & | device = core::Device("CPU:0") ) |
Constructor with initial grid size and grid count estimation.
| open3d::t::pipelines::slac::ControlGrid::ControlGrid | ( | float | grid_size, |
| const core::Tensor & | keys, | ||
| const core::Tensor & | values, | ||
| const core::Device & | device = core::Device("CPU:0") ) |
Constructor with known keys (Int32 x 3 positions) and values (Float32 x 3 shifted positions).
| void open3d::t::pipelines::slac::ControlGrid::Compactify | ( | ) |
Force rehashing, so that all entries are remapped to [0, size) and form a contiguous index map.
| geometry::Image open3d::t::pipelines::slac::ControlGrid::Deform | ( | const geometry::Image & | depth, |
| const core::Tensor & | intrinsics, | ||
| const core::Tensor & | extrinsics, | ||
| float | depth_scale, | ||
| float | depth_max ) |
Non-rigidly deform a depth image by
| geometry::PointCloud open3d::t::pipelines::slac::ControlGrid::Deform | ( | const geometry::PointCloud & | pcd | ) |
Non-rigidly deform a point cloud using the control grid.
| geometry::RGBDImage open3d::t::pipelines::slac::ControlGrid::Deform | ( | const geometry::RGBDImage & | rgbd, |
| const core::Tensor & | intrinsics, | ||
| const core::Tensor & | extrinsics, | ||
| float | depth_scale, | ||
| float | depth_max ) |
Non-rigidly deform an RGBD image by
|
inline |
|
inline |
Get control grid shifted positions from tensor values (optimized in-place).
|
inline |
|
inline |
|
inline |
Get control grid original positions directly from tensor keys.
| std::tuple< core::Tensor, core::Tensor, core::Tensor > open3d::t::pipelines::slac::ControlGrid::GetNeighborGridMap | ( | ) |
Get the neighbor indices per grid to construct the regularizer.
| geometry::PointCloud open3d::t::pipelines::slac::ControlGrid::Parameterize | ( | const geometry::PointCloud & | pcd | ) |
Parameterize an input point cloud by embedding each point in the grid with 8 corners via indexing and interpolation.
TODO(wei): allow entries with less than 8 neighbors, probably in a kernel. Now we simply discard them and only accepts points with all 8 neighbors in the control grid map.
|
inline |
| void open3d::t::pipelines::slac::ControlGrid::Touch | ( | const geometry::PointCloud & | pcd | ) |
Allocate control grids in the shared camera space.
|
static |
Attributes used to extend the point cloud to support neighbor lookup. 8 neighbor grid index per point.
|
static |
8 neighbor grid interpolation ratio for normal per point.
|
static |
8 neighbor grid interpolation ratio for vertex per point.