robokudo.annotators.outlier_removal_objecthypothesis

Statistical outlier removal and clustering for object hypotheses.

This module implements statistical outlier removal based on standard deviation and number of neighbors in point clouds, followed by clustering to refine object hypotheses. The implementation works in-place to minimize memory usage.

Key features:

  • Statistical outlier removal using point neighborhoods

  • DBSCAN clustering for object refinement

  • In-place point cloud modification

  • Configurable parameters per object class

  • Visualization of processed clusters

Authors: * Sorin Arion * Naser Azizi

Attributes

Classes

OutlierRemovalOnObjectHypothesisAnnotator

Annotator for statistical outlier removal and clustering refinement.

Module Contents

robokudo.annotators.outlier_removal_objecthypothesis._PYTYPE_TO_ROS_FIELD
class robokudo.annotators.outlier_removal_objecthypothesis.OutlierRemovalOnObjectHypothesisAnnotator(name='OutlierRemovalOnObjectHypothesis', descriptor=Descriptor())

Bases: robokudo.annotators.core.BaseAnnotator

Annotator for statistical outlier removal and clustering refinement.

This annotator processes object hypotheses by:

  • Removing statistical outliers from point clouds

  • Clustering remaining points using DBSCAN

  • Selecting largest cluster as refined object

  • Updating object hypothesis point clouds in-place

  • Providing visualization of processed clusters

The processing can be selectively disabled for specific object classes.

class Descriptor

Bases: robokudo.annotators.core.BaseAnnotator.Descriptor

Configuration descriptor for outlier removal and clustering.

class Parameters

Parameter container for outlier removal configuration.

Variables:
  • dbscan_neighbors – Minimum points to form a cluster (DBSCAN min_samples)

  • dbscan_epsilon – DBSCAN neighborhood size

  • stat_neighbors – Number of neighbors for statistical analysis

  • stat_std – Standard deviation threshold for outlier removal

  • skip_removal_on_classes – List of class names to skip processing

dbscan_neighbors = 90
dbscan_epsilon = 0.02
stat_neighbors = 200
stat_std = 0.5
test = 'bruh'
skip_removal_on_classes = []
parameters
parameters_callback(params)
update() py_trees.common.Status

Process object hypotheses to remove outliers and refine clusters.

Returns:

SUCCESS if processing completed, raises Exception if no clusters found

Return type:

py_trees.Status

Raises:

Exception – If no clusters are found after processing

cluster_statistical_outlierremoval_pcd() bool

Perform outlier removal and clustering on each object hypothesis.

Returns:

True, if atleast one of the object hypotheses could be optimized. False otherwise.

Return type:

bool