Open3D (C++ API)
0.13.0
|
A pointcloud contains a set of 3D points. More...
#include <PointCloud.h>
Public Member Functions | |
PointCloud (const core::Device &device=core::Device("CPU:0")) | |
Construct an empty pointcloud. More... | |
PointCloud (const core::Tensor &points) | |
PointCloud (const std::unordered_map< std::string, core::Tensor > &map_keys_to_tensors) | |
virtual | ~PointCloud () override |
std::string | ToString () const |
Text description. More... | |
const TensorMap & | GetPointAttr () const |
Getter for point_attr_ TensorMap. Used in Pybind. More... | |
core::Tensor & | GetPointAttr (const std::string &key) |
core::Tensor & | GetPoints () |
Get the value of the "points" attribute. Convenience function. More... | |
core::Tensor & | GetPointColors () |
Get the value of the "colors" attribute. Convenience function. More... | |
core::Tensor & | GetPointNormals () |
Get the value of the "normals" attribute. Convenience function. More... | |
const core::Tensor & | GetPointAttr (const std::string &key) const |
const core::Tensor & | GetPoints () const |
Get the value of the "points" attribute. Convenience function. More... | |
const core::Tensor & | GetPointColors () const |
Get the value of the "colors" attribute. Convenience function. More... | |
const core::Tensor & | GetPointNormals () const |
Get the value of the "normals" attribute. Convenience function. More... | |
void | SetPointAttr (const std::string &key, const core::Tensor &value) |
void | SetPoints (const core::Tensor &value) |
Set the value of the "points" attribute. Convenience function. More... | |
void | SetPointColors (const core::Tensor &value) |
Set the value of the "colors" attribute. Convenience function. More... | |
void | SetPointNormals (const core::Tensor &value) |
Set the value of the "normals" attribute. Convenience function. More... | |
bool | HasPointAttr (const std::string &key) const |
void | RemovePointAttr (const std::string &key) |
bool | HasPoints () const |
bool | HasPointColors () const |
bool | HasPointNormals () const |
PointCloud | To (const core::Device &device, bool copy=false) const |
PointCloud | Clone () const |
Returns copy of the point cloud on the same device. More... | |
PointCloud | CPU () const |
PointCloud | CUDA (int device_id=0) const |
PointCloud & | Clear () override |
Clear all data in the pointcloud. More... | |
bool | IsEmpty () const override |
Returns !HasPoints(). More... | |
core::Tensor | GetMinBound () const |
Returns the min bound for point coordinates. More... | |
core::Tensor | GetMaxBound () const |
Returns the max bound for point coordinates. More... | |
core::Tensor | GetCenter () const |
Returns the center for point coordinates. More... | |
PointCloud | Append (const PointCloud &other) const |
PointCloud | operator+ (const PointCloud &other) const |
PointCloud & | Transform (const core::Tensor &transformation) |
Transforms the points and normals (if exist) of the PointCloud. Extracts R, t from Transformation T (4x4) = [[ R(3x3) t(3x1) ], [ O(1x3) s(1x1) ]] (s = 1 for Transformation wihtout scaling) PS. It Assumes s = 1 and O = [0,0,0] and applies the transformation as P = R(P) + t. More... | |
PointCloud & | Translate (const core::Tensor &translation, bool relative=true) |
Translates the points of the PointCloud. More... | |
PointCloud & | Scale (double scale, const core::Tensor ¢er) |
Scales the points of the PointCloud. More... | |
PointCloud & | Rotate (const core::Tensor &R, const core::Tensor ¢er) |
Rotates the points and normals (if exists). More... | |
PointCloud | VoxelDownSample (double voxel_size, const core::HashmapBackend &backend=core::HashmapBackend::Default) const |
Downsamples a point cloud with a specified voxel size. More... | |
core::Device | GetDevice () const |
Returns the device attribute of this PointCloud. More... | |
open3d::geometry::PointCloud | ToLegacyPointCloud () const |
Convert to a legacy Open3D PointCloud. More... | |
geometry::Image | ProjectToDepthImage (int width, int height, const core::Tensor &intrinsics, const core::Tensor &extrinsics=core::Tensor::Eye(4, core::Dtype::Float32, core::Device("CPU:0")), float depth_scale=1000.0f, float depth_max=3.0f) |
Project a point cloud to a depth image. More... | |
geometry::RGBDImage | ProjectToRGBDImage (int width, int height, const core::Tensor &intrinsics, const core::Tensor &extrinsics=core::Tensor::Eye(4, core::Dtype::Float32, core::Device("CPU:0")), float depth_scale=1000.0f, float depth_max=3.0f) |
Project a point cloud to an RGBD image. More... | |
![]() | |
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 PointCloud | CreateFromDepthImage (const Image &depth, const core::Tensor &intrinsics, const core::Tensor &extrinsics=core::Tensor::Eye(4, core::Dtype::Float32, core::Device("CPU:0")), float depth_scale=1000.0f, float depth_max=3.0f, int stride=1, bool with_normals=false) |
Factory function to create a pointcloud from a depth image and a camera model. More... | |
static PointCloud | CreateFromRGBDImage (const RGBDImage &rgbd_image, const core::Tensor &intrinsics, const core::Tensor &extrinsics=core::Tensor::Eye(4, core::Dtype::Float32, core::Device("CPU:0")), float depth_scale=1000.0f, float depth_max=3.0f, int stride=1, bool with_normals=false) |
Factory function to create a pointcloud from an RGB-D image and a camera model. More... | |
static PointCloud | FromLegacyPointCloud (const open3d::geometry::PointCloud &pcd_legacy, core::Dtype dtype=core::Dtype::Float32, const core::Device &device=core::Device("CPU:0")) |
Create a PointCloud from a legacy Open3D PointCloud. More... | |
Protected Attributes | |
core::Device | device_ = core::Device("CPU:0") |
TensorMap | point_attr_ |
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... | |
![]() | |
Geometry (GeometryType type, int dimension) | |
Parameterized Constructor. More... | |
A pointcloud contains a set of 3D points.
The PointCloud class stores the attribute data in key-value pairs for flexibility, where the key is a string representing the attribute name and value is a Tensor containing the attribute data. In most cases, the length of an attribute should be equal to the length of the "points", the pointcloud class provides helper functions to check and facilitates this consistency.
Although the attributes are all stored in a key-value pair dictionary, the attributes have different levels:
Note that the level 0 and level 1 convenience functions can also be achieved via the generalized helper functions:
open3d::t::geometry::PointCloud::PointCloud | ( | const core::Device & | device = core::Device("CPU:0") | ) |
Construct an empty pointcloud.
open3d::t::geometry::PointCloud::PointCloud | ( | const core::Tensor & | points | ) |
Construct a pointcloud from points.
points | A tensor with element shape (3,).
|
open3d::t::geometry::PointCloud::PointCloud | ( | const std::unordered_map< std::string, core::Tensor > & | map_keys_to_tensors | ) |
Construct from points and other attributes of the points.
map_keys_to_tensors | A map of string to Tensor containing points and their attributes. point_dict must contain at least the "points" key. |
|
inlineoverridevirtual |
PointCloud open3d::t::geometry::PointCloud::Append | ( | const PointCloud & | other | ) | const |
Append a pointcloud and returns the resulting pointcloud.
The pointcloud being appended, must have all the attributes present in the pointcloud it is being appended to, with same dtype, device and same shape other than the first dimension / length.
|
inlineoverridevirtual |
Clear all data in the pointcloud.
Implements open3d::t::geometry::Geometry.
PointCloud open3d::t::geometry::PointCloud::Clone | ( | ) | const |
Returns copy of the point cloud on the same device.
|
inline |
Transfer the point cloud to CPU.
If the point cloud is already on CPU, no copy will be performed.
|
static |
Factory function to create a pointcloud from a depth image and a camera model.
Given depth value d at (u, v) image coordinate, the corresponding 3d point is:
depth | The input depth image should be a uint16_t or float image. |
intrinsics | Intrinsic parameters of the camera. |
extrinsics | Extrinsic parameters of the camera. |
depth_scale | The depth is scaled by 1 / depth_scale . |
depth_max | Truncated at depth_max distance. |
stride | Sampling factor to support coarse point cloud extraction. Unless with_normals=true , there is no low pass filtering, so aliasing is possible for stride>1 . |
with_normals | Also compute normals for the point cloud. If True, the point cloud will only contain points with valid normals. If normals are requested, the depth map is first filtered to ensure smooth normals. |
|
static |
Factory function to create a pointcloud from an RGB-D image and a camera model.
Given depth value d at (u, v) image coordinate, the corresponding 3d point is:
rgbd_image | The input RGBD image should have a uint16_t or float depth image and RGB image with any DType and the same size. |
intrinsics | Intrinsic parameters of the camera. |
extrinsics | Extrinsic parameters of the camera. |
depth_scale | The depth is scaled by 1 / depth_scale . |
depth_max | Truncated at depth_max distance. |
stride | Sampling factor to support coarse point cloud extraction. Unless with_normals=true , there is no low pass filtering, so aliasing is possible for stride>1 . |
with_normals | Also compute normals for the point cloud. If True, the point cloud will only contain points with valid normals. If normals are requested, the depth map is first filtered to ensure smooth normals. |
|
inline |
Transfer the point cloud to a CUDA device.
If the point cloud is already on the specified CUDA device, no copy will be performed.
|
static |
Create a PointCloud from a legacy Open3D PointCloud.
core::Tensor open3d::t::geometry::PointCloud::GetCenter | ( | ) | const |
Returns the center for point coordinates.
|
inline |
Returns the device attribute of this PointCloud.
core::Tensor open3d::t::geometry::PointCloud::GetMaxBound | ( | ) | const |
Returns the max bound for point coordinates.
core::Tensor open3d::t::geometry::PointCloud::GetMinBound | ( | ) | const |
Returns the min bound for point coordinates.
|
inline |
Getter for point_attr_ TensorMap. Used in Pybind.
|
inline |
Get attributes. Throws exception if the attribute does not exist.
key | Attribute name. |
|
inline |
Get attributes. Throws exception if the attribute does not exist.
key | Attribute name. |
|
inline |
Get the value of the "colors" attribute. Convenience function.
|
inline |
Get the value of the "colors" attribute. Convenience function.
|
inline |
Get the value of the "normals" attribute. Convenience function.
|
inline |
Get the value of the "normals" attribute. Convenience function.
|
inline |
Get the value of the "points" attribute. Convenience function.
|
inline |
Get the value of the "points" attribute. Convenience function.
|
inline |
Returns true if all of the followings are true: 1) attribute key exist 2) attribute's length as points' length 3) attribute's length > 0
|
inline |
Returns true if all of the followings are true: 1) attribute "colors" exist 2) attribute "colors"'s length as points' length 3) attribute "colors"'s length > 0 This is a convenience function.
|
inline |
Returns true if all of the followings are true: 1) attribute "normals" exist 2) attribute "normals"'s length as points' length 3) attribute "normals"'s length > 0 This is a convenience function.
|
inline |
Check if the "points" attribute's value has length > 0. This is a convenience function.
|
inlineoverridevirtual |
Returns !HasPoints().
Implements open3d::t::geometry::Geometry.
|
inline |
operator+ for t::PointCloud appends the compatible attributes to the pointcloud.
geometry::Image open3d::t::geometry::PointCloud::ProjectToDepthImage | ( | int | width, |
int | height, | ||
const core::Tensor & | intrinsics, | ||
const core::Tensor & | extrinsics = core::Tensor::Eye( 4, core::Dtype::Float32, core::Device("CPU:0")) , |
||
float | depth_scale = 1000.0f , |
||
float | depth_max = 3.0f |
||
) |
Project a point cloud to a depth image.
geometry::RGBDImage open3d::t::geometry::PointCloud::ProjectToRGBDImage | ( | int | width, |
int | height, | ||
const core::Tensor & | intrinsics, | ||
const core::Tensor & | extrinsics = core::Tensor::Eye( 4, core::Dtype::Float32, core::Device("CPU:0")) , |
||
float | depth_scale = 1000.0f , |
||
float | depth_max = 3.0f |
||
) |
Project a point cloud to an RGBD image.
|
inline |
Removes point attribute by key value. Primary attribute "points" cannot be removed. Throws warning if attribute key does not exists.
key | Attribute name. |
PointCloud & open3d::t::geometry::PointCloud::Rotate | ( | const core::Tensor & | R, |
const core::Tensor & | center | ||
) |
Rotates the points and normals (if exists).
R | Rotation [Tensor of dim {3,3}]. Should be on the same device as the PointCloud |
center | Center [Tensor of dim {3}] about which the PointCloud is to be scaled. Should be on the same device as the PointCloud |
PointCloud & open3d::t::geometry::PointCloud::Scale | ( | double | scale, |
const core::Tensor & | center | ||
) |
Scales the points of the PointCloud.
scale | Scale [double] of dimension |
center | Center [Tensor of dim {3}] about which the PointCloud is to be scaled. Should be on the same device as the PointCloud |
|
inline |
Set attributes. If the attribute key already exists, its value will be overwritten, otherwise, the new key will be created.
key | Attribute name. |
value | A tensor. |
|
inline |
Set the value of the "colors" attribute. Convenience function.
|
inline |
Set the value of the "normals" attribute. Convenience function.
|
inline |
Set the value of the "points" attribute. Convenience function.
PointCloud open3d::t::geometry::PointCloud::To | ( | const core::Device & | device, |
bool | copy = false |
||
) | const |
Transfer the point cloud to a specified device.
device | The targeted device to convert to. |
copy | If true, a new point cloud is always created; if false, the copy is avoided when the original point cloud is already on the targeted device. |
open3d::geometry::PointCloud open3d::t::geometry::PointCloud::ToLegacyPointCloud | ( | ) | const |
Convert to a legacy Open3D PointCloud.
std::string open3d::t::geometry::PointCloud::ToString | ( | ) | const |
Text description.
PointCloud & open3d::t::geometry::PointCloud::Transform | ( | const core::Tensor & | transformation | ) |
Transforms the points and normals (if exist) of the PointCloud. Extracts R, t from Transformation T (4x4) = [[ R(3x3) t(3x1) ], [ O(1x3) s(1x1) ]] (s = 1 for Transformation wihtout scaling) PS. It Assumes s = 1 and O = [0,0,0] and applies the transformation as P = R(P) + t.
transformation | Transformation [Tensor of dim {4,4}]. Should be on the same device as the PointCloud |
PointCloud & open3d::t::geometry::PointCloud::Translate | ( | const core::Tensor & | translation, |
bool | relative = true |
||
) |
Translates the points of the PointCloud.
translation | translation tensor of dimension {3} Should be on the same device as the PointCloud |
relative | if true (default): translates relative to Center |
PointCloud open3d::t::geometry::PointCloud::VoxelDownSample | ( | double | voxel_size, |
const core::HashmapBackend & | backend = core::HashmapBackend::Default |
||
) | const |
Downsamples a point cloud with a specified voxel size.
voxel_size | Voxel size. A positive number. |
|
protected |
|
protected |