Open3D (C++ API)
|
VoxelGrid is a collection of voxels which are aligned in grid. More...
#include <VoxelGrid.h>
Public Member Functions | |
VoxelGrid () | |
Default Constructor. More... | |
VoxelGrid (const VoxelGrid &src_voxel_grid) | |
Copy Constructor. More... | |
~VoxelGrid () override | |
VoxelGrid & | Clear () override |
Clear all elements in the geometry. More... | |
bool | IsEmpty () const override |
Returns true iff the geometry is empty. More... | |
Eigen::Vector3d | GetMinBound () const override |
Returns min bounds for geometry coordinates. More... | |
Eigen::Vector3d | GetMaxBound () const override |
Returns max bounds for geometry coordinates. More... | |
Eigen::Vector3d | GetCenter () const override |
Returns the center of the geometry coordinates. More... | |
AxisAlignedBoundingBox | GetAxisAlignedBoundingBox () const override |
Returns an axis-aligned bounding box of the geometry. More... | |
OrientedBoundingBox | GetOrientedBoundingBox () const override |
Returns an oriented bounding box of the geometry. More... | |
VoxelGrid & | Transform (const Eigen::Matrix4d &transformation) override |
Apply transformation (4x4 matrix) to the geometry coordinates. More... | |
VoxelGrid & | Translate (const Eigen::Vector3d &translation, bool relative=true) override |
Apply translation to the geometry coordinates. More... | |
VoxelGrid & | Scale (const double scale, const Eigen::Vector3d ¢er) override |
Apply scaling to the geometry coordinates. Given a scaling factor , and center , a given point is transformed according to . More... | |
VoxelGrid & | Rotate (const Eigen::Matrix3d &R, const Eigen::Vector3d ¢er) override |
Apply rotation to the geometry coordinates and normals. Given a rotation matrix , and center , a given point is transformed according to . More... | |
VoxelGrid & | operator+= (const VoxelGrid &voxelgrid) |
VoxelGrid | operator+ (const VoxelGrid &voxelgrid) const |
bool | HasVoxels () const |
Returns true if the voxel grid contains voxels. More... | |
bool | HasColors () const |
Returns true if the voxel grid contains voxel colors. More... | |
Eigen::Vector3i | GetVoxel (const Eigen::Vector3d &point) const |
Returns voxel index given query point. More... | |
Eigen::Vector3d | GetVoxelCenterCoordinate (const Eigen::Vector3i &idx) const |
Function that returns the 3d coordinates of the queried voxel center. More... | |
void | AddVoxel (const Voxel &voxel) |
Add a voxel with specified grid index and color. More... | |
std::vector< Eigen::Vector3d > | GetVoxelBoundingPoints (const Eigen::Vector3i &index) const |
Return a vector of 3D coordinates that define the indexed voxel cube. More... | |
std::vector< bool > | CheckIfIncluded (const std::vector< Eigen::Vector3d > &queries) |
VoxelGrid & | CarveDepthMap (const Image &depth_map, const camera::PinholeCameraParameters &camera_parameter, bool keep_voxels_outside_image) |
VoxelGrid & | CarveSilhouette (const Image &silhouette_mask, const camera::PinholeCameraParameters &camera_parameter, bool keep_voxels_outside_image) |
void | CreateFromOctree (const Octree &octree) |
std::shared_ptr< geometry::Octree > | ToOctree (const size_t &max_depth) const |
std::vector< Voxel > | GetVoxels () const |
Public Member Functions inherited from open3d::geometry::Geometry3D | |
~Geometry3D () override | |
Public Member Functions inherited from open3d::geometry::Geometry | |
virtual | ~Geometry () |
GeometryType | GetGeometryType () const |
Returns one of registered geometry types. More... | |
int | Dimension () const |
Returns whether the geometry is 2D or 3D. More... | |
std::string | GetName () const |
void | SetName (const std::string &name) |
Static Public Member Functions | |
static std::shared_ptr< VoxelGrid > | CreateDense (const Eigen::Vector3d &origin, double voxel_size, double width, double height, double depth) |
static std::shared_ptr< VoxelGrid > | CreateFromPointCloud (const PointCloud &input, double voxel_size) |
static std::shared_ptr< VoxelGrid > | CreateFromPointCloudWithinBounds (const PointCloud &input, double voxel_size, const Eigen::Vector3d &min_bound, const Eigen::Vector3d &max_bound) |
static std::shared_ptr< VoxelGrid > | CreateFromTriangleMesh (const TriangleMesh &input, double voxel_size) |
static std::shared_ptr< VoxelGrid > | CreateFromTriangleMeshWithinBounds (const TriangleMesh &input, double voxel_size, const Eigen::Vector3d &min_bound, const Eigen::Vector3d &max_bound) |
Static Public Member Functions inherited from open3d::geometry::Geometry3D | |
static Eigen::Matrix3d | GetRotationMatrixFromXYZ (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from XYZ RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromYZX (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from YZX RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromZXY (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from ZXY RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromXZY (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from XZY RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromZYX (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from ZYX RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromYXZ (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from YXZ RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromAxisAngle (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from AxisAngle RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromQuaternion (const Eigen::Vector4d &rotation) |
Get Rotation Matrix from Quaternion. More... | |
Data Fields | |
double | voxel_size_ = 0.0 |
Size of the voxel. More... | |
Eigen::Vector3d | origin_ = Eigen::Vector3d::Zero() |
Coorindate of the origin point. More... | |
std::unordered_map< Eigen::Vector3i, Voxel, utility::hash_eigen::hash< Eigen::Vector3i > > | voxels_ |
Voxels contained in voxel grid. More... | |
Additional Inherited Members | |
Public Types inherited from open3d::geometry::Geometry | |
enum | GeometryType { GeometryType::Unspecified = 0, GeometryType::PointCloud = 1, GeometryType::VoxelGrid = 2, GeometryType::Octree = 3, GeometryType::LineSet = 4, GeometryType::MeshBase = 5, GeometryType::TriangleMesh = 6, GeometryType::HalfEdgeTriangleMesh = 7, GeometryType::Image = 8, GeometryType::RGBDImage = 9, GeometryType::TetraMesh = 10, GeometryType::OrientedBoundingBox = 11, GeometryType::AxisAlignedBoundingBox = 12 } |
Specifies possible geometry types. More... | |
Protected Member Functions inherited from open3d::geometry::Geometry3D | |
Geometry3D (GeometryType type) | |
Parameterized Constructor. More... | |
Eigen::Vector3d | ComputeMinBound (const std::vector< Eigen::Vector3d > &points) const |
Compute min bound of a list points. More... | |
Eigen::Vector3d | ComputeMaxBound (const std::vector< Eigen::Vector3d > &points) const |
Compute max bound of a list points. More... | |
Eigen::Vector3d | ComputeCenter (const std::vector< Eigen::Vector3d > &points) const |
Computer center of a list of points. More... | |
void | ResizeAndPaintUniformColor (std::vector< Eigen::Vector3d > &colors, const size_t size, const Eigen::Vector3d &color) const |
Resizes the colors vector and paints a uniform color. More... | |
void | TransformPoints (const Eigen::Matrix4d &transformation, std::vector< Eigen::Vector3d > &points) const |
Transforms all points with the transformation matrix. More... | |
void | TransformNormals (const Eigen::Matrix4d &transformation, std::vector< Eigen::Vector3d > &normals) const |
Transforms the normals with the transformation matrix. More... | |
void | TranslatePoints (const Eigen::Vector3d &translation, std::vector< Eigen::Vector3d > &points, bool relative) const |
Apply translation to the geometry coordinates. More... | |
void | ScalePoints (const double scale, std::vector< Eigen::Vector3d > &points, const Eigen::Vector3d ¢er) const |
Scale the coordinates of all points by the scaling factor scale . More... | |
void | RotatePoints (const Eigen::Matrix3d &R, std::vector< Eigen::Vector3d > &points, const Eigen::Vector3d ¢er) const |
Rotate all points with the rotation matrix R . More... | |
void | RotateNormals (const Eigen::Matrix3d &R, std::vector< Eigen::Vector3d > &normals) const |
Rotate all normals with the rotation matrix R . More... | |
Protected Member Functions inherited from open3d::geometry::Geometry | |
Geometry (GeometryType type, int dimension) | |
Parameterized Constructor. More... | |
VoxelGrid is a collection of voxels which are aligned in grid.
|
inline |
Default Constructor.
open3d::geometry::VoxelGrid::VoxelGrid | ( | const VoxelGrid & | src_voxel_grid | ) |
Copy Constructor.
|
inlineoverride |
void open3d::geometry::VoxelGrid::AddVoxel | ( | const Voxel & | voxel | ) |
Add a voxel with specified grid index and color.
VoxelGrid & open3d::geometry::VoxelGrid::CarveDepthMap | ( | const Image & | depth_map, |
const camera::PinholeCameraParameters & | camera_parameter, | ||
bool | keep_voxels_outside_image | ||
) |
Remove all voxels from the VoxelGrid where none of the boundary points of the voxel projects to depth value that is smaller, or equal than the projected depth of the boundary point. If keep_voxels_outside_image is true then voxels are only carved if all boundary points project to a valid image location.
VoxelGrid & open3d::geometry::VoxelGrid::CarveSilhouette | ( | const Image & | silhouette_mask, |
const camera::PinholeCameraParameters & | camera_parameter, | ||
bool | keep_voxels_outside_image | ||
) |
Remove all voxels from the VoxelGrid where none of the boundary points of the voxel projects to a valid mask pixel (pixel value > 0). If keep_voxels_outside_image is true then voxels are only carved if all boundary points project to a valid image location.
std::vector< bool > open3d::geometry::VoxelGrid::CheckIfIncluded | ( | const std::vector< Eigen::Vector3d > & | queries | ) |
Element-wise check if a query in the list is included in the VoxelGrid Queries are double precision and are mapped to the closest voxel.
|
overridevirtual |
Clear all elements in the geometry.
Implements open3d::geometry::Geometry3D.
|
static |
Creates a voxel grid where every voxel is set (hence dense). This is a useful starting point for voxel carving.
void open3d::geometry::VoxelGrid::CreateFromOctree | ( | const Octree & | octree | ) |
|
static |
Creates a VoxelGrid from a given PointCloud. The color value of a given voxel is the average color value of the points that fall into it (if the PointCloud has colors). The bounds of the created VoxelGrid are computed from the PointCloud.
input | The input PointCloud. |
voxel_size | Voxel size of of the VoxelGrid construction. |
|
static |
Creates a VoxelGrid from a given PointCloud. The color value of a given voxel is the average color value of the points that fall into it (if the PointCloud has colors). The bounds of the created VoxelGrid are defined by the given parameters.
input | The input PointCloud. |
voxel_size | Voxel size of of the VoxelGrid construction. |
min_bound | Minimum boundary point for the VoxelGrid to create. |
max_bound | Maximum boundary point for the VoxelGrid to create. |
|
static |
Creates a VoxelGrid from a given TriangleMesh. No color information is converted. The bounds of the created VoxelGrid are computed from the TriangleMesh.
input | The input TriangleMesh. |
voxel_size | Voxel size of of the VoxelGrid construction. |
|
static |
Creates a VoxelGrid from a given TriangleMesh. No color information is converted. The bounds of the created VoxelGrid are defined by the given parameters..
input | The input TriangleMesh. |
voxel_size | Voxel size of of the VoxelGrid construction. |
min_bound | Minimum boundary point for the VoxelGrid to create. |
max_bound | Maximum boundary point for the VoxelGrid to create. |
|
overridevirtual |
Returns an axis-aligned bounding box of the geometry.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Returns the center of the geometry coordinates.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Returns max bounds for geometry coordinates.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Returns min bounds for geometry coordinates.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Returns an oriented bounding box of the geometry.
Implements open3d::geometry::Geometry3D.
Eigen::Vector3i open3d::geometry::VoxelGrid::GetVoxel | ( | const Eigen::Vector3d & | point | ) | const |
Returns voxel index given query point.
std::vector< Eigen::Vector3d > open3d::geometry::VoxelGrid::GetVoxelBoundingPoints | ( | const Eigen::Vector3i & | index | ) | const |
Return a vector of 3D coordinates that define the indexed voxel cube.
|
inline |
Function that returns the 3d coordinates of the queried voxel center.
std::vector< Voxel > open3d::geometry::VoxelGrid::GetVoxels | ( | ) | const |
Returns List of Voxel
: Voxels contained in voxel grid. Changes to the voxels returned from this method are not reflected in the voxel grid.
|
inline |
Returns true
if the voxel grid contains voxel colors.
|
inline |
Returns true
if the voxel grid contains voxels.
|
overridevirtual |
Returns true
iff the geometry is empty.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Apply rotation to the geometry coordinates and normals. Given a rotation matrix , and center , a given point is transformed according to .
R | A 3x3 rotation matrix |
center | Rotation center that is used for the rotation. |
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Apply scaling to the geometry coordinates. Given a scaling factor , and center , a given point is transformed according to .
scale | The scale parameter that is multiplied to the points/vertices of the geometry. |
center | Scale center that is used to resize the geometry. |
Implements open3d::geometry::Geometry3D.
std::shared_ptr< geometry::Octree > open3d::geometry::VoxelGrid::ToOctree | ( | const size_t & | max_depth | ) | const |
Convert to Octree.
max_depth | Maximum depth of the octree. |
|
overridevirtual |
Apply transformation (4x4 matrix) to the geometry coordinates.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Apply translation to the geometry coordinates.
translation | A 3D vector to transform the geometry. |
relative | If true , the translation is directly applied to the geometry. Otherwise, the geometry center is moved to the translation . |
Implements open3d::geometry::Geometry3D.
Eigen::Vector3d open3d::geometry::VoxelGrid::origin_ = Eigen::Vector3d::Zero() |
Coorindate of the origin point.
double open3d::geometry::VoxelGrid::voxel_size_ = 0.0 |
Size of the voxel.
std::unordered_map<Eigen::Vector3i, Voxel, utility::hash_eigen::hash<Eigen::Vector3i> > open3d::geometry::VoxelGrid::voxels_ |
Voxels contained in voxel grid.