Go to the documentation of this file.
31 #include <unordered_map>
42 class PinholeCameraParameters;
56 Voxel(
const Eigen::Vector3i &grid_index,
const Eigen::Vector3d &color)
62 Eigen::Vector3d
color_ = Eigen::Vector3d(0, 0, 0);
75 Eigen::Vector3d
GetCenter()
const override;
80 bool relative =
true)
override;
82 VoxelGrid &
Rotate(
const Eigen::Matrix3d &R,
bool center =
true)
override;
91 Eigen::Vector3i
GetVoxel(
const Eigen::Vector3d &point)
const;
97 auto voxel = it->second;
98 return ((voxel.grid_index_.cast<
double>() +
99 Eigen::Vector3d(0.5, 0.5, 0.5)) *
103 return Eigen::Vector3d::Zero();
112 const Eigen::Vector3i &index)
const;
117 const std::vector<Eigen::Vector3d> &queries);
124 const Image &depth_map,
132 const Image &silhouette_mask,
137 std::shared_ptr<geometry::Octree>
ToOctree(
const size_t &max_depth)
const;
161 const Eigen::Vector3d &min_bound,
162 const Eigen::Vector3d &max_bound);
176 const Eigen::Vector3d &min_bound,
177 const Eigen::Vector3d &max_bound);
181 Eigen::Vector3d
origin_ = Eigen::Vector3d::Zero();
182 std::unordered_map<Eigen::Vector3i,
198 "Tried to aggregate ColorVoxel with different "
static std::shared_ptr< VoxelGrid > CreateFromTriangleMesh(const TriangleMesh &input, double voxel_size)
Definition: VoxelGridFactory.cpp:164
int width
Definition: FilePCD.cpp:68
double voxel_size_
Definition: VoxelGrid.h:180
Eigen::Vector3i GetVoxel(const Eigen::Vector3d &point) const
Definition: VoxelGrid.cpp:188
std::vector< Eigen::Vector3d > GetVoxelBoundingPoints(const Eigen::Vector3i &index) const
Return a vector of 3D coordinates that define the indexed voxel cube.
Definition: VoxelGrid.cpp:193
std::shared_ptr< geometry::Octree > ToOctree(const size_t &max_depth) const
Definition: VoxelGrid.cpp:264
A bounding box oriented along an arbitrary frame of reference.
Definition: BoundingVolume.h:44
bool HasColors() const
Definition: VoxelGrid.h:88
bool HasVoxels() const
Definition: VoxelGrid.h:87
VoxelGrid & CarveDepthMap(const Image &depth_map, const camera::PinholeCameraParameters &camera_parameter)
Definition: VoxelGrid.cpp:271
static std::shared_ptr< VoxelGrid > CreateDense(const Eigen::Vector3d &origin, double voxel_size, double width, double height, double depth)
Definition: VoxelGridFactory.cpp:40
A bounding box that is aligned along the coordinate axes.
Definition: BoundingVolume.h:130
Eigen::Vector3d GetVoxelCenterCoordinate(const Eigen::Vector3i &idx) const
Definition: VoxelGrid.h:94
static std::shared_ptr< VoxelGrid > CreateFromPointCloud(const PointCloud &input, double voxel_size)
Definition: VoxelGridFactory.cpp:108
void CreateFromOctree(const Octree &octree)
Definition: VoxelGrid.cpp:226
long voxel_index
Definition: FilePLY.cpp:286
VoxelGrid()
Definition: VoxelGrid.h:67
VoxelGrid & Rotate(const Eigen::Matrix3d &R, bool center=true) override
Apply rotation to the geometry coordinates and normals.
Definition: VoxelGrid.cpp:128
VoxelGrid & CarveSilhouette(const Image &silhouette_mask, const camera::PinholeCameraParameters &camera_parameter)
Definition: VoxelGrid.cpp:313
The Image class stores image with customizable width, height, num of channels and bytes per channel.
Definition: Image.h:53
Voxel(const Eigen::Vector3i &grid_index)
Definition: VoxelGrid.h:55
The base geometry class.
Definition: Geometry.h:35
double voxel_size
Definition: FilePLY.cpp:285
The base geometry class for 3D geometries.
Definition: Geometry3D.h:46
Eigen::Vector3d GetAverageColor() const
Definition: VoxelGrid.h:212
Eigen::Vector3d GetMaxBound() const override
Returns max bounds for geometry coordinates.
Definition: VoxelGrid.cpp:70
VoxelGrid & Transform(const Eigen::Matrix4d &transformation) override
Apply transformation (4x4 matrix) to the geometry coordinates.
Definition: VoxelGrid.cpp:112
void AddVoxel(const Voxel &voxel)
Add a voxel with specified grid index and color.
Definition: VoxelGrid.cpp:209
Eigen::Vector3i voxel_index_
Definition: VoxelGrid.h:222
Eigen::Vector3d color_
Definition: VoxelGrid.h:62
GeometryType
Specifies possible geometry types.
Definition: Geometry.h:40
Eigen::Vector3i GetVoxelIndex() const
Definition: VoxelGrid.h:210
VoxelGrid & Translate(const Eigen::Vector3d &translation, bool relative=true) override
Apply translation to the geometry coordinates.
Definition: VoxelGrid.cpp:117
Voxel(const Eigen::Vector3i &grid_index, const Eigen::Vector3d &color)
Definition: VoxelGrid.h:56
static std::shared_ptr< VoxelGrid > CreateFromTriangleMeshWithinBounds(const TriangleMesh &input, double voxel_size, const Eigen::Vector3d &min_bound, const Eigen::Vector3d &max_bound)
Definition: VoxelGridFactory.cpp:117
AvgColorVoxel()
Definition: VoxelGrid.h:192
Definition: PointCloud.h:50
Eigen::Vector3d origin
Definition: FilePLY.cpp:284
int num_of_points_
Definition: VoxelGrid.h:221
std::unordered_map< Eigen::Vector3i, Voxel, utility::hash_eigen::hash< Eigen::Vector3i > > voxels_
Definition: VoxelGrid.h:185
Eigen::Vector3i grid_index_
Definition: VoxelGrid.h:61
VoxelGrid operator+(const VoxelGrid &voxelgrid) const
Definition: VoxelGrid.cpp:184
Definition: VoxelGrid.h:190
Voxel()
Definition: VoxelGrid.h:54
Definition: VoxelGrid.h:52
Contains both intrinsic and extrinsic pinhole camera parameters.
Definition: PinholeCameraParameters.h:40
Eigen::Vector3d GetCenter() const override
Returns the center of the geometry coordinates.
Definition: VoxelGrid.cpp:84
std::vector< bool > CheckIfIncluded(const std::vector< Eigen::Vector3d > &queries)
Definition: VoxelGrid.cpp:213
Definition: PinholeCameraIntrinsic.cpp:34
VoxelGrid & Scale(const double scale, bool center=true) override
Apply scaling to the geometry coordinates.
Definition: VoxelGrid.cpp:123
int height
Definition: FilePCD.cpp:69
Definition: TriangleMesh.h:46
bool IsEmpty() const override
Returns true iff the geometry is empty.
Definition: VoxelGrid.cpp:55
static std::shared_ptr< VoxelGrid > CreateFromPointCloudWithinBounds(const PointCloud &input, double voxel_size, const Eigen::Vector3d &min_bound, const Eigen::Vector3d &max_bound)
Definition: VoxelGridFactory.cpp:62
Eigen::Vector3d origin_
Definition: VoxelGrid.h:181
Eigen::Vector3d GetMinBound() const override
Returns min bounds for geometry coordinates.
Definition: VoxelGrid.cpp:57
Definition: VoxelGrid.h:65
~Voxel()
Definition: VoxelGrid.h:58
~VoxelGrid() override
Definition: VoxelGrid.h:69
void Add(const Eigen::Vector3i &voxel_index)
Definition: VoxelGrid.h:195
Eigen::Vector3d color_
Definition: VoxelGrid.h:223
VoxelGrid & Clear() override
Clear all elements in the geometry.
Definition: VoxelGrid.cpp:48
VoxelGrid & operator+=(const VoxelGrid &voxelgrid)
Definition: VoxelGrid.cpp:133
void LogWarning(const char *format, const Args &... args)
Definition: Console.h:206
void Add(const Eigen::Vector3i &voxel_index, const Eigen::Vector3d &color)
Definition: VoxelGrid.h:204
OrientedBoundingBox GetOrientedBoundingBox() const override
Returns an oriented bounding box of the geometry.
Definition: VoxelGrid.cpp:107
AxisAlignedBoundingBox GetAxisAlignedBoundingBox() const override
Returns an axis-aligned bounding box of the geometry.
Definition: VoxelGrid.cpp:100