40 class PinholeCameraIntrinsic;
57 bool IsEmpty()
const override;
58 Eigen::Vector3d GetMinBound()
const override;
59 Eigen::Vector3d GetMaxBound()
const override;
60 Eigen::Vector3d GetCenter()
const override;
63 PointCloud &Transform(
const Eigen::Matrix4d &transformation)
override;
64 PointCloud &Translate(
const Eigen::Vector3d &translation,
65 bool relative =
true)
override;
66 PointCloud &Scale(
const double scale,
bool center =
true)
override;
67 PointCloud &Rotate(
const Eigen::Vector3d &rotation,
74 bool HasPoints()
const {
return points_.size() > 0; }
77 return points_.size() > 0 && normals_.size() == points_.size();
81 return points_.size() > 0 && colors_.size() == points_.size();
85 for (
size_t i = 0; i < normals_.size(); i++) {
86 normals_[i].normalize();
93 ResizeAndPaintUniformColor(colors_, points_.size(), color);
100 PointCloud &RemoveNoneFinitePoints(
bool remove_nan =
true,
101 bool remove_infinite =
true);
106 std::shared_ptr<PointCloud> SelectDownSample(
107 const std::vector<size_t> &indices,
bool invert =
false)
const;
113 std::shared_ptr<PointCloud> VoxelDownSample(
double voxel_size)
const;
117 std::tuple<std::shared_ptr<PointCloud>, Eigen::MatrixXi>
118 VoxelDownSampleAndTrace(
double voxel_size,
119 const Eigen::Vector3d &min_bound,
120 const Eigen::Vector3d &max_bound,
121 bool approximate_class =
false)
const;
125 std::shared_ptr<PointCloud> UniformDownSample(
size_t every_k_points)
const;
130 std::shared_ptr<PointCloud> Crop(
const Eigen::Vector3d &min_bound,
131 const Eigen::Vector3d &max_bound)
const;
135 std::tuple<std::shared_ptr<PointCloud>, std::vector<size_t>>
136 RemoveRadiusOutliers(
size_t nb_points,
double search_radius)
const;
140 std::tuple<std::shared_ptr<PointCloud>, std::vector<size_t>>
141 RemoveStatisticalOutliers(
size_t nb_neighbors,
double std_ratio)
const;
148 bool EstimateNormals(
150 bool fast_normal_computation =
true);
155 bool OrientNormalsToAlignWithDirection(
156 const Eigen::Vector3d &orientation_reference =
157 Eigen::Vector3d(0.0, 0.0, 1.0));
162 bool OrientNormalsTowardsCameraLocation(
163 const Eigen::Vector3d &camera_location = Eigen::Vector3d::Zero());
170 std::vector<double> ComputePointCloudDistance(
const PointCloud &target);
174 std::tuple<Eigen::Vector3d, Eigen::Matrix3d> ComputeMeanAndCovariance()
180 std::vector<double> ComputeMahalanobisDistance()
const;
184 std::vector<double> ComputeNearestNeighborDistance()
const;
187 std::shared_ptr<TriangleMesh> ComputeConvexHull()
const;
194 std::vector<int> ClusterDBSCAN(
double eps,
196 bool print_progress =
false)
const;
205 static std::shared_ptr<PointCloud> CreateFromDepthImage(
208 const Eigen::Matrix4d &extrinsic = Eigen::Matrix4d::Identity(),
209 double depth_scale = 1000.0,
210 double depth_trunc = 1000.0,
216 static std::shared_ptr<PointCloud> CreateFromRGBDImage(
219 const Eigen::Matrix4d &extrinsic = Eigen::Matrix4d::Identity());
224 std::shared_ptr<PointCloud> CreateFromVoxelGrid(
Definition: Geometry.h:32
Definition: BoundingVolume.h:90
Definition: PinholeCameraIntrinsic.h:42
Definition: BoundingVolume.h:38
Definition: PointCloud.h:50
bool HasPoints() const
Definition: PointCloud.h:74
RotationType
Definition: Geometry3D.h:43
PointCloud & NormalizeNormals()
Definition: PointCloud.h:84
std::vector< Eigen::Vector3d > points_
Definition: PointCloud.h:228
PointCloud()
Definition: PointCloud.h:52
PointCloud & PaintUniformColor(const Eigen::Vector3d &color)
Assigns each point in the PointCloud the same color.
Definition: PointCloud.h:92
std::vector< Eigen::Vector3d > colors_
Definition: PointCloud.h:230
Definition: Geometry3D.h:41
Definition: KDTreeSearchParam.h:32
Definition: RGBDImage.h:43
char type
Definition: FilePCD.cpp:56
std::vector< Eigen::Vector3d > normals_
Definition: PointCloud.h:229
bool HasNormals() const
Definition: PointCloud.h:76
Definition: PinholeCameraIntrinsic.cpp:34
~PointCloud() override
Definition: PointCloud.h:53
Definition: VoxelGrid.h:62
GeometryType
Definition: Geometry.h:34
bool HasColors() const
Definition: PointCloud.h:80
Definition: KDTreeSearchParam.h:53