31 #include <unordered_map> 42 class PinholeCameraParameters;
55 Voxel(
const Eigen::Vector3i &grid_index) : grid_index_(grid_index) {}
56 Voxel(
const Eigen::Vector3i &grid_index,
const Eigen::Vector3d &color)
57 : grid_index_(grid_index),
color_(color) {}
61 Eigen::Vector3i grid_index_ = Eigen::Vector3i(0, 0, 0);
62 Eigen::Vector3d
color_ = Eigen::Vector3d(0, 0, 0);
72 bool IsEmpty()
const override;
73 Eigen::Vector3d GetMinBound()
const override;
74 Eigen::Vector3d GetMaxBound()
const override;
75 Eigen::Vector3d GetCenter()
const override;
78 VoxelGrid &Transform(
const Eigen::Matrix4d &transformation)
override;
79 VoxelGrid &Translate(
const Eigen::Vector3d &translation,
80 bool relative =
true)
override;
81 VoxelGrid &Scale(
const double scale,
bool center =
true)
override;
82 VoxelGrid &Rotate(
const Eigen::Matrix3d &R,
bool center =
true)
override;
87 bool HasVoxels()
const {
return voxels_.size() > 0; }
91 Eigen::Vector3i GetVoxel(
const Eigen::Vector3d &point)
const;
95 auto it = voxels_.find(idx);
96 if (it != voxels_.end()) {
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();
108 void AddVoxel(
const Voxel &voxel);
111 std::vector<Eigen::Vector3d> GetVoxelBoundingPoints(
112 const Eigen::Vector3i &index)
const;
116 std::vector<bool> CheckIfIncluded(
117 const std::vector<Eigen::Vector3d> &queries);
124 const Image &depth_map,
132 const Image &silhouette_mask,
135 void CreateFromOctree(
const Octree &octree);
137 std::shared_ptr<geometry::Octree> ToOctree(
const size_t &max_depth)
const;
141 static std::shared_ptr<VoxelGrid> CreateDense(
const Eigen::Vector3d &
origin,
151 static std::shared_ptr<VoxelGrid> CreateFromPointCloud(
158 static std::shared_ptr<VoxelGrid> CreateFromPointCloudWithinBounds(
161 const Eigen::Vector3d &min_bound,
162 const Eigen::Vector3d &max_bound);
167 static std::shared_ptr<VoxelGrid> CreateFromTriangleMesh(
173 static std::shared_ptr<VoxelGrid> CreateFromTriangleMeshWithinBounds(
176 const Eigen::Vector3d &min_bound,
177 const Eigen::Vector3d &max_bound);
180 double voxel_size_ = 0.0;
181 Eigen::Vector3d origin_ = Eigen::Vector3d::Zero();
182 std::unordered_map<Eigen::Vector3i,
198 "Tried to aggregate ColorVoxel with different "
int num_of_points_
Definition: DownSample.cpp:78
The base geometry class.
Definition: Geometry.h:35
void Add(const Eigen::Vector3i &voxel_index)
Definition: VoxelGrid.h:195
A bounding box that is aligned along the coordinate axes.
Definition: BoundingVolume.h:130
void Add(const Eigen::Vector3i &voxel_index, const Eigen::Vector3d &color)
Definition: VoxelGrid.h:204
Voxel(const Eigen::Vector3i &grid_index)
Definition: VoxelGrid.h:55
void LogWarning(const char *format, const Args &... args)
Definition: Console.h:206
Eigen::Vector3d color_
Definition: VoxelGrid.h:223
A bounding box oriented along an arbitrary frame of reference.
Definition: BoundingVolume.h:44
Eigen::Vector3i voxel_index_
Definition: VoxelGrid.h:222
Definition: PointCloud.h:50
Eigen::Vector3d GetVoxelCenterCoordinate(const Eigen::Vector3i &idx) const
Definition: VoxelGrid.h:94
long voxel_index
Definition: FilePLY.cpp:286
bool HasVoxels() const
Definition: VoxelGrid.h:87
VoxelGrid()
Definition: VoxelGrid.h:67
~VoxelGrid() override
Definition: VoxelGrid.h:69
double voxel_size
Definition: FilePLY.cpp:285
AvgColorVoxel()
Definition: VoxelGrid.h:192
The base geometry class for 3D geometries.
Definition: Geometry3D.h:46
Definition: VoxelGrid.h:190
~Voxel()
Definition: VoxelGrid.h:58
Eigen::Vector3d color_
Definition: DownSample.cpp:81
bool HasColors() const
Definition: VoxelGrid.h:88
Contains both intrinsic and extrinsic pinhole camera parameters.
Definition: PinholeCameraParameters.h:40
Eigen::Vector3d origin
Definition: FilePLY.cpp:284
Definition: PinholeCameraIntrinsic.cpp:34
Definition: VoxelGrid.h:65
GeometryType
Specifies possible geometry types.
Definition: Geometry.h:40
int height
Definition: FilePCD.cpp:69
Eigen::Vector3d GetAverageColor() const
Definition: VoxelGrid.h:212
int num_of_points_
Definition: VoxelGrid.h:221
Definition: VoxelGrid.h:52
Eigen::Vector3i GetVoxelIndex() const
Definition: VoxelGrid.h:210
Voxel()
Definition: VoxelGrid.h:54
Definition: TriangleMesh.h:46
Voxel(const Eigen::Vector3i &grid_index, const Eigen::Vector3d &color)
Definition: VoxelGrid.h:56
The Image class stores image with customizable width, height, num of channels and bytes per channel...
Definition: Image.h:53
std::unordered_map< Eigen::Vector3i, Voxel, utility::hash_eigen::hash< Eigen::Vector3i > > voxels_
Definition: VoxelGrid.h:185
int width
Definition: FilePCD.cpp:68