Open3D (C++ API)
|
#include <PointCloud.h>
Public Member Functions | |
PointCloud () | |
PointCloud (const std::vector< Eigen::Vector3d > &points) | |
~PointCloud () override | |
PointCloud & | 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... | |
PointCloud & | Transform (const Eigen::Matrix4d &transformation) override |
Apply transformation (4x4 matrix) to the geometry coordinates. More... | |
PointCloud & | Translate (const Eigen::Vector3d &translation, bool relative=true) override |
Apply translation to the geometry coordinates. More... | |
PointCloud & | Scale (const double scale, bool center=true) override |
Apply scaling to the geometry coordinates. More... | |
PointCloud & | Rotate (const Eigen::Matrix3d &R, bool center=true) override |
Apply rotation to the geometry coordinates and normals. More... | |
PointCloud & | operator+= (const PointCloud &cloud) |
PointCloud | operator+ (const PointCloud &cloud) const |
bool | HasPoints () const |
bool | HasNormals () const |
bool | HasColors () const |
PointCloud & | NormalizeNormals () |
PointCloud & | PaintUniformColor (const Eigen::Vector3d &color) |
Assigns each point in the PointCloud the same color. More... | |
PointCloud & | RemoveNoneFinitePoints (bool remove_nan=true, bool remove_infinite=true) |
std::shared_ptr< PointCloud > | SelectDownSample (const std::vector< size_t > &indices, bool invert=false) const |
std::shared_ptr< PointCloud > | VoxelDownSample (double voxel_size) const |
std::tuple< std::shared_ptr< PointCloud >, Eigen::MatrixXi > | VoxelDownSampleAndTrace (double voxel_size, const Eigen::Vector3d &min_bound, const Eigen::Vector3d &max_bound, bool approximate_class=false) const |
std::shared_ptr< PointCloud > | UniformDownSample (size_t every_k_points) const |
std::shared_ptr< PointCloud > | Crop (const AxisAlignedBoundingBox &bbox) const |
std::shared_ptr< PointCloud > | Crop (const OrientedBoundingBox &bbox) const |
std::tuple< std::shared_ptr< PointCloud >, std::vector< size_t > > | RemoveRadiusOutliers (size_t nb_points, double search_radius) const |
std::tuple< std::shared_ptr< PointCloud >, std::vector< size_t > > | RemoveStatisticalOutliers (size_t nb_neighbors, double std_ratio) const |
bool | EstimateNormals (const KDTreeSearchParam &search_param=KDTreeSearchParamKNN(), bool fast_normal_computation=true) |
bool | OrientNormalsToAlignWithDirection (const Eigen::Vector3d &orientation_reference=Eigen::Vector3d(0.0, 0.0, 1.0)) |
bool | OrientNormalsTowardsCameraLocation (const Eigen::Vector3d &camera_location=Eigen::Vector3d::Zero()) |
std::vector< double > | ComputePointCloudDistance (const PointCloud &target) |
std::tuple< Eigen::Vector3d, Eigen::Matrix3d > | ComputeMeanAndCovariance () const |
std::vector< double > | ComputeMahalanobisDistance () const |
std::vector< double > | ComputeNearestNeighborDistance () const |
std::tuple< std::shared_ptr< TriangleMesh >, std::vector< size_t > > | ComputeConvexHull () const |
Function that computes the convex hull of the point cloud using qhull. More... | |
std::tuple< std::shared_ptr< TriangleMesh >, std::vector< size_t > > | HiddenPointRemoval (const Eigen::Vector3d &camera_location, const double radius) const |
std::vector< int > | ClusterDBSCAN (double eps, size_t min_points, bool print_progress=false) const |
std::tuple< Eigen::Vector4d, std::vector< size_t > > | SegmentPlane (const double distance_threshold=0.01, const int ransac_n=3, const int num_iterations=100) const |
Segment PointCloud plane using the RANSAC algorithm. More... | |
std::shared_ptr< PointCloud > | CreateFromVoxelGrid (const VoxelGrid &voxel_grid) |
![]() | |
~Geometry3D () override | |
![]() | |
virtual | ~Geometry () |
GeometryType | GetGeometryType () const |
Returns one of registered geometry types. More... | |
int | Dimension () const |
Returns whether the geometry is 2D or 3D. More... | |
Static Public Member Functions | |
static std::shared_ptr< PointCloud > | CreateFromDepthImage (const Image &depth, const camera::PinholeCameraIntrinsic &intrinsic, const Eigen::Matrix4d &extrinsic=Eigen::Matrix4d::Identity(), double depth_scale=1000.0, double depth_trunc=1000.0, int stride=1) |
static std::shared_ptr< PointCloud > | CreateFromRGBDImage (const RGBDImage &image, const camera::PinholeCameraIntrinsic &intrinsic, const Eigen::Matrix4d &extrinsic=Eigen::Matrix4d::Identity()) |
![]() | |
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 | |
std::vector< Eigen::Vector3d > | points_ |
std::vector< Eigen::Vector3d > | normals_ |
std::vector< Eigen::Vector3d > | colors_ |
Additional Inherited Members | |
![]() | |
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... | |
![]() | |
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, bool center) const |
Scale the coordinates of all points by the scaling factor scale . More... | |
void | RotatePoints (const Eigen::Matrix3d &R, std::vector< Eigen::Vector3d > &points, bool center) const |
Rotate all points with the rotation matrix R . More... | |
void | RotateNormals (const Eigen::Matrix3d &R, std::vector< Eigen::Vector3d > &normals, bool center) const |
Rotate all normals with the rotation matrix R . More... | |
![]() | |
Geometry (GeometryType type, int dimension) | |
Parameterized Constructor. More... | |
|
inline |
|
inline |
|
inlineoverride |
|
overridevirtual |
Clear all elements in the geometry.
Implements open3d::geometry::Geometry3D.
std::vector< int > open3d::geometry::PointCloud::ClusterDBSCAN | ( | double | eps, |
size_t | min_points, | ||
bool | print_progress = false |
||
) | const |
Cluster PointCloud using the DBSCAN algorithm Ester et al., "A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise", 1996 Returns a vector of point labels, -1 indicates noise according to the algorithm.
std::tuple< std::shared_ptr< TriangleMesh >, std::vector< size_t > > open3d::geometry::PointCloud::ComputeConvexHull | ( | ) | const |
Function that computes the convex hull of the point cloud using qhull.
std::vector< double > open3d::geometry::PointCloud::ComputeMahalanobisDistance | ( | ) | const |
Function to compute the Mahalanobis distance for points in an
input | point cloud https://en.wikipedia.org/wiki/Mahalanobis_distance |
std::tuple< Eigen::Vector3d, Eigen::Matrix3d > open3d::geometry::PointCloud::ComputeMeanAndCovariance | ( | ) | const |
Function to compute the mean and covariance matrix of an
input | point cloud |
std::vector< double > open3d::geometry::PointCloud::ComputeNearestNeighborDistance | ( | ) | const |
Function to compute the distance from a point to its nearest neighbor in the
input | point cloud |
std::vector< double > open3d::geometry::PointCloud::ComputePointCloudDistance | ( | const PointCloud & | target | ) |
Function to compute the point to point distances between point clouds
source | is the first point cloud. |
target | is the second point cloud. |
source |
|
static |
Factory function to create a pointcloud from a depth image and a camera model (PointCloudFactory.cpp) The input depth image can be either a float image, or a uint16_t image. In the latter case, the depth is scaled by 1 / depth_scale, and truncated at depth_trunc distance. The depth image is also sampled with stride, in order to support (fast) coarse point cloud extraction. Return an empty pointcloud if the conversion fails.
|
static |
Factory function to create a pointcloud from an RGB-D image and a camera model (PointCloudFactory.cpp) Return an empty pointcloud if the conversion fails.
std::shared_ptr< PointCloud > open3d::geometry::PointCloud::CreateFromVoxelGrid | ( | const VoxelGrid & | voxel_grid | ) |
Function to create a PointCloud from a VoxelGrid. It transforms the voxel centers to 3D points using the original point cloud coordinate (with respect to the center of the voxel grid).
std::shared_ptr< PointCloud > open3d::geometry::PointCloud::Crop | ( | const AxisAlignedBoundingBox & | bbox | ) | const |
Function to crop pointcloud into output pointcloud All points with coordinates outside the bounding box
bbox | are clipped. |
std::shared_ptr< PointCloud > open3d::geometry::PointCloud::Crop | ( | const OrientedBoundingBox & | bbox | ) | const |
Function to crop pointcloud into output pointcloud All points with coordinates outside the bounding box
bbox | are clipped. |
bool open3d::geometry::PointCloud::EstimateNormals | ( | const KDTreeSearchParam & | search_param = KDTreeSearchParamKNN() , |
bool | fast_normal_computation = true |
||
) |
Function to compute the normals of a point cloud
cloud | is the input point cloud. It also stores the output normals. Normals are oriented with respect to the input point cloud if normals exist in the input. |
search_param | The KDTree search parameters |
|
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.
|
inline |
|
inline |
|
inline |
std::tuple< std::shared_ptr< TriangleMesh >, std::vector< size_t > > open3d::geometry::PointCloud::HiddenPointRemoval | ( | const Eigen::Vector3d & | camera_location, |
const double | radius | ||
) | const |
This is an implementation of the Hidden Point Removal operator described in Katz et. al. 'Direct Visibility of Point Sets', 2007.
camera_location | is the view point that is used to remove invisible points. |
radius | defines the radius of the spherical projection. Additional information about the choice of |
radius | for noisy point clouds can be found in Mehra et. al. 'Visibility of Noisy Point Cloud Data', 2010. |
|
overridevirtual |
Returns true
iff the geometry is empty.
Implements open3d::geometry::Geometry3D.
|
inline |
PointCloud open3d::geometry::PointCloud::operator+ | ( | const PointCloud & | cloud | ) | const |
PointCloud & open3d::geometry::PointCloud::operator+= | ( | const PointCloud & | cloud | ) |
bool open3d::geometry::PointCloud::OrientNormalsToAlignWithDirection | ( | const Eigen::Vector3d & | orientation_reference = Eigen::Vector3d(0.0, 0.0, 1.0) | ) |
Function to orient the normals of a point cloud
cloud | is the input point cloud. It must have normals. Normals are oriented with respect to |
orientation_reference |
bool open3d::geometry::PointCloud::OrientNormalsTowardsCameraLocation | ( | const Eigen::Vector3d & | camera_location = Eigen::Vector3d::Zero() | ) |
Function to orient the normals of a point cloud
cloud | is the input point cloud. It also stores the output normals. Normals are oriented with towards |
camera_location |
|
inline |
Assigns each point in the PointCloud the same color.
color. |
PointCloud & open3d::geometry::PointCloud::RemoveNoneFinitePoints | ( | bool | remove_nan = true , |
bool | remove_infinite = true |
||
) |
Remove all points fromt he point cloud that have a nan entry, or infinite entries. Also removes the corresponding normals and color entries.
std::tuple< std::shared_ptr< PointCloud >, std::vector< size_t > > open3d::geometry::PointCloud::RemoveRadiusOutliers | ( | size_t | nb_points, |
double | search_radius | ||
) | const |
Function to remove points that have less than
nb_points | in a sphere of radius |
search_radius |
std::tuple< std::shared_ptr< PointCloud >, std::vector< size_t > > open3d::geometry::PointCloud::RemoveStatisticalOutliers | ( | size_t | nb_neighbors, |
double | std_ratio | ||
) | const |
Function to remove points that are further away from their
nb_neighbor | neighbors in average. |
|
overridevirtual |
Apply rotation to the geometry coordinates and normals.
R | A 3D vector that either defines the three angles for Euler rotation, or in the axis-angle representation the normalized vector defines the axis of rotation and the norm the angle around this axis. |
center | If true , the rotation is applied relative to the center of the geometry. Otherwise, the rotation is directly applied to the geometry, i.e. relative to the origin. |
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Apply scaling to the geometry coordinates.
scale | The scale parameter that is multiplied to the points/vertices of the geometry. |
center | If true , the scale is applied relative to the center of the geometry. Otherwise, the scale is directly applied to the geometry, i.e. relative to the origin. |
Implements open3d::geometry::Geometry3D.
std::tuple< Eigen::Vector4d, std::vector< size_t > > open3d::geometry::PointCloud::SegmentPlane | ( | const double | distance_threshold = 0.01 , |
const int | ransac_n = 3 , |
||
const int | num_iterations = 100 |
||
) | const |
Segment PointCloud plane using the RANSAC algorithm.
distance_threshold | Max distance a point can be from the plane model, and still be considered an inlier. |
ransac_n | Number of initial points to be considered inliers in each iteration. |
num_iterations | Number of iterations. |
std::shared_ptr< PointCloud > open3d::geometry::PointCloud::SelectDownSample | ( | const std::vector< size_t > & | indices, |
bool | invert = false |
||
) | const |
Function to select points from
input | pointcloud into |
indices | are selected. |
|
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.
std::shared_ptr< PointCloud > open3d::geometry::PointCloud::UniformDownSample | ( | size_t | every_k_points | ) | const |
Function to downsample
input | pointcloud into output pointcloud uniformly |
every_k_points | indicates the sample rate. |
std::shared_ptr< PointCloud > open3d::geometry::PointCloud::VoxelDownSample | ( | double | voxel_size | ) | const |
Function to downsample
input | pointcloud into output pointcloud with a voxel |
voxel_size | defines the resolution of the voxel grid, smaller value leads to denser output point cloud. Normals and colors are averaged if they exist. |
std::tuple< std::shared_ptr< PointCloud >, Eigen::MatrixXi > open3d::geometry::PointCloud::VoxelDownSampleAndTrace | ( | double | voxel_size, |
const Eigen::Vector3d & | min_bound, | ||
const Eigen::Vector3d & | max_bound, | ||
bool | approximate_class = false |
||
) | const |
Function to downsample using VoxelDownSample, but specialized for Surface convolution project. Experimental function.
std::vector<Eigen::Vector3d> open3d::geometry::PointCloud::colors_ |
std::vector<Eigen::Vector3d> open3d::geometry::PointCloud::normals_ |
std::vector<Eigen::Vector3d> open3d::geometry::PointCloud::points_ |