Cluster Filter

The Cluster Filter removes floating points and isolated clusters from the point cloud.

Tip

This filter is especially useful if you use collision avoidance while picking objects. Let’s say there is a cluster of points above an object, but that cluster doesn’t exist in the reality. The robot can interpret such floating clusters as real obstacles instead of something it can physically collide with. That can lead to undesirable picking poses of the object or even the inability to pick it.

How to control the Cluster Filter

Enabled

Turn the filter On/Off

MaxNeighborDistance

Maximum normalized distance between neighboring points that are still classified as belonging to the same cluster. The filter removes clusters whose neighboring points are further away than the MaxNeighborDistance (clusters less dense than this threshold). The lower the value, the more aggressive the filtering.

MinArea

Area of the cluster, in square millimeters. The filter removes clusters with an area below this threshold. Increasing this parameter results in removing larger clusters.

For a point to be removed, it must belong to a cluster that meets the MaxNeighborDistance and the MinArea requirements.

Parameter

Value

Condition

Enabled

no

If you do not have floating points, isolated clusters, or if you cannot afford the added processing time

yes

If you want to remove floating points or isolated clusters

MaxNeighborDistance

10 - 8.5

Sparse clusters, works for most scenes

8.5 - 5.5

Dense clusters

5.5 - 4

Very dense clusters, normally originated by reflections

MinArea

< 50

For clusters that the Outlier Filter failed to remove

50 - 400

For clusters of typical size

> 400

For removing ghost planes, typically caused by reflections

Removing floating clusters

The Noise Filter and the Outlier Filter are basic removal filters that are almost always used. These filters together with the Reflection Filter (especially the local mode) may not be able to remove all the floating points and clusters without removing too many good points. This is typically the case for challenging scenes. The Cluster filter can remove the remaining erroneous points without removing good data from the rest of the scene.

Complementing the Outlier Filter

In the following image, the Cluster Filter is turned off and we can see collections of floating points in different sizes and densities.

An example of a point cloud with floating points and clusters, captured without removal filters to demonstrate these artifacts.

In the bottom left image, we see how the Outlier filter behaves when it’s the most strict possible, keeping some floating points while removing good points. In the bottom right image, we see how the Cluster filter (with default values in this case) removes these floating points while keeping the good points intact.

Strict Outlier Filter settings (Threshold set to 1 mm); Cluster Filter turned off - Clusters not removed

Cluster Filter (with default values) - Clusters removed

Strict Outlier Filter settings (Threshold set to 1 mm); Cluster Filter turned off - Clusters not removed

Cluster Filter (with default values) - Clusters removed

Complementing the Reflection Filter - Local mode

The Reflection Filter, especially with the Local mode, can leave more groups of points floating; take a look at the bottom left image. In the bottom right image, we can see that these floating points are removed using the Cluster Filter (with default values in this case).

Reflection Filter with Local mode and Cluster Filter turned off - Clusters are not removed

Reflection Filter with Local mode and Cluster Filter turned on (default values) - Clusters removed

Reflection Filter with Local mode and Cluster Filter turned off - Clusters are not removed

Reflection Filter with Local mode and Cluster Filter turned on (default values) - Clusters removed

Removing ghost planes

Ghost planes are false point cloud data that do not exist in reality and usually result from interreflections between the objects or interreflections with the bin wall. One end of these clusters of floating points is typically connected with a point cloud surface comprised of good data. Removing ghost planes is sometimes possible by fine-tuning the Cluster Filter. These artifacts are usually dense and have a large area. Therefore, the filter must be tuned aggressively, which can result in removing some good data, including parts of objects or whole objects.

Warning

When using the cluster filter to remove ghost planes, carefully observe whether any critical data is removed.

In the following example scene, a ghost plane above the cylinder appears due to the reflection between the top of the cylinder and the bin wall. Notice that in the color image, we can see the reflection of the cylinder on the top bin wall.

Scene demonstrating ghost plane artifacts.

This ghost plane (bottom left image) may be interpreted as an obstacle for the robot to pick the object. Such obstacles can result in getting an undesirable picking pose or even no picking pose at all. In the bottom right image, we can see that the ghost plane is removed by tuning the Cluster Filter aggressively. In this example, the MaxNeighborDistance is set to 5.00 and the MinArea to 1400.00. As a trade-off, the bottom part of the cylinder is removed as well.

Cluster Filter off - Ghost planes

Cluster Filter on - No ghost planes

Cluster Filter off - Ghost planes

Cluster Filter on - No ghost planes

Tuning the cluster filter to remove ghost planes is easier if the bin contains a single type of object. This is because it is possible to determine the area of the smallest object feature in the point cloud that needs to be kept. Then, the MinArea can be set accordingly.

Processing time

Warning

When using Intel or AMD GPU, the Cluster Filter can significantly increase the processing time.

Note

Cluster Filter adds the following processing time per 3D capture:

Expected median (±stddev) in ms

Filter

Zivid One+

Zivid Two

Intel UHD 750

Intel UHD G1

NVIDIA 3070

Intel UHD 750

Intel UHD G1

NVIDIA 3070

High-end [1]

Low-end [2]

High-end [3]

High-end [1]

Low-end [2]

High-end [3]

Cluster

88 (±2) ms

218 (±2) ms

8 (±0.8) ms

94 (±1) ms

222 (±400) ms

8 (±0.9) ms

Version History

SDK

Changes

2.9.0

Cluster filter added