Open3D (C++ API)
0.12.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 |
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 |
bool | HasPoints () const |
bool | HasPointColors () const |
bool | HasPointNormals () 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 | Copy (const core::Device device) const |
Returns deep copy of the pointcloud. More... | |
PointCloud | Copy () const |
Returns deep copy of the pointcloud on the same device. More... | |
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... | |
core::Device | GetDevice () const |
Returns the device attribute of this PointCloud. More... | |
open3d::geometry::PointCloud | ToLegacyPointCloud () const |
Convert to a legacy Open3D PointCloud. More... | |
Public Member Functions inherited from open3d::t::geometry::Geometry | |
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")), double depth_scale=1000.0, double depth_max=3.0, int stride=1) |
Factory function to create a pointcloud from a depth 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 | |
Public Types inherited from open3d::t::geometry::Geometry | |
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... | |
Protected Member Functions inherited from open3d::t::geometry::Geometry | |
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 |
|
inlineoverridevirtual |
Clear all data in the pointcloud.
Implements open3d::t::geometry::Geometry.
PointCloud open3d::t::geometry::PointCloud::Copy | ( | const core::Device | device | ) | const |
Returns deep copy of the pointcloud.
PointCloud open3d::t::geometry::PointCloud::Copy | ( | ) | const |
Returns deep copy of the pointcloud on the same device.
|
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: z = d / depth_scale
x = (u - cx) * z / fx
y = (v - cy) * z / fy
depth | The input depth image should be a uint16_t image. |
intrinsic | Intrinsic parameters of the camera. |
extrinsic | Extrinsic parameters of the camera. |
depth_scale | The depth is scaled by 1 / depth_scale . |
depth_trunc | Truncated at depth_trunc distance. |
stride | Sampling factor to support coarse point cloud extraction. |
project_valid_depth_only | is true, return point cloud, which doesn't have nan point. If the value is false, return point cloud, which has a point for each pixel, whereas invalid depth results in NaN points. |
|
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.
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 dimention |
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.
open3d::geometry::PointCloud open3d::t::geometry::PointCloud::ToLegacyPointCloud | ( | ) | const |
Convert to a legacy Open3D PointCloud.
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 dimention {3} Should be on the same device as the PointCloud |
relative | if true (default): translates relative to Center |
|
protected |
|
protected |