Common Vision Blox 15.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Friends Modules Pages
Point Cloud Concept

Point clouds are collections of data points in 3D space, typically representing the surface of objects or environments. They are often captured by Area3D sensors, laser triangulation systems or stereo cameras. A point cloud typically contains at least X, Y, and Z components. In some cases, confidence values are included to indicate the reliability of the Z values. Point clouds consisting only of X, Y, Z, and optionally confidence values are relatively simple. For these scenarios, a convenient approach for streaming and processing is available through the CVB point cloud stream and the CVB point cloud classes, where data can be accessed more easily can be used.

However, some point clouds include additional data, such as RGB images or surface normals. For these cases, more advanced solutions like CVB composite streaming and the CVB Composite classes are required, where data must be accessed in a more generic manner.

Point Cloud Components   Acquisition   Point Cloud Class Data Access
X, Y, Z
+ Confidence
Point Cloud Stream CVB Point Cloud Point Cloud Access
Load & Create
       
conversion
(if possible)
   
X, Y, Z
+ Confidence
+ RGB image
+ Normals
+ Any other data
Composite Stream CVB Composite Composite Access

CVB Point Cloud

As mentioned earlier, for simple point clouds containing only X, Y, Z, and optionally a confidence value, the CVB point cloud classes — Cvb::PointCloud in C++, Stemmer.Cvb.PointCloud in .NET, and cvb.PointCloud in Python — can be used for processing. These classes provide access to point cloud values as well as basic processing tools, such as cropping and transformations.

CVB point clouds are typically acquired from 3D cameras that support simple point cloud streaming or from files or direct creation with CVB. For details on accessing point cloud data, see Access to Simple Point Clouds.

Generally CVB also distinguishes between organized (dense) point clouds and un-organized (sparse) point clouds:

Organized (Dense) Point Clouds

An organized (dense) point cloud is structured like a 2D image, where the points are arranged in a grid with rows and columns. This structure is typically obtained from depth cameras, stereo vision, and 3D sensors using laser triangulation. The advantage of an organized point cloud is that neighboring points are inherently known, making operations like filtering, segmentation, and normal estimation more efficient. In CVB organized point clouds are represented by the classes:

Note that some CVB tools, such as the DNC tool for CAD-based 3D object recognition, require organized (dense) point clouds.

Unorganized (Sparse) Point Clouds

An unorganized (sparse) point cloud is a collection of 3D points without any inherent structure. The points are scattered in space and do not follow a grid-like pattern. Unorganized point clouds typically result from merging multiple datasets or applying affine transformations. In CVB unorganized point clouds are represented by the classes:

CVB Composite

The CVB composite is a flexible, generic data container capable of holding various types of data. It is represented by the following classes:

A composite has a member variable called "Purpose," which specifies its intended use (e.g., Cvb::CompositePurpose::PointCloud). A composite can contain multiple items, which can be of the following types:

When working with composites, the content may not be immediately known. Therefore, it's important to first analyze the composite, as described in the section Analyze your Composite in C++ and .NET or in Python.

CVB composites are typically obtained from 3D cameras via composite streaming. For details on accessing composite data, see Access to Point Cloud Composites.