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¶
Annotator for statistical outlier removal and clustering refinement. |
Module Contents¶
- robokudo.annotators.outlier_removal_objecthypothesis._PYTYPE_TO_ROS_FIELD: typing_extensions.Dict[typing_extensions.Type, str]¶
- class robokudo.annotators.outlier_removal_objecthypothesis.OutlierRemovalOnObjectHypothesisAnnotator(name: str = 'OutlierRemovalOnObjectHypothesis', descriptor: OutlierRemovalOnObjectHypothesisAnnotator = Descriptor())¶
-
Bases:
robokudo.annotators.core.BaseAnnotatorAnnotator 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.DescriptorConfiguration descriptor for outlier removal and clustering.
- class Parameters¶
-
Parameter container for outlier removal configuration.
- dbscan_neighbors: int = 90¶
-
Minimum points to form a cluster (DBSCAN min_samples)
- dbscan_epsilon: float = 0.02¶
-
DBSCAN neighborhood size
- stat_neighbors: int = 200¶
-
Number of neighbors for statistical analysis
- stat_std: float = 0.5¶
-
Standard deviation threshold for outlier removal
- skip_removal_on_classes: typing_extensions.List[str] = []¶
-
List of class names to skip processing
If you want to skip the complete outlier removal process on certain classes, you can add a list of strings here. The values are case-sensitive!
- parameters¶
- node¶
- parameters_callback(params: typing_extensions.List[rclpy.parameter.Parameter]) rcl_interfaces.msg.SetParametersResult¶
- 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
- 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 at least one of the object hypotheses could be optimized. False otherwise.