robokudo.annotators.outlier_removal_objecthypothesis ==================================================== .. py:module:: robokudo.annotators.outlier_removal_objecthypothesis .. autoapi-nested-parse:: 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 ---------- .. autoapisummary:: robokudo.annotators.outlier_removal_objecthypothesis._PYTYPE_TO_ROS_FIELD Classes ------- .. autoapisummary:: robokudo.annotators.outlier_removal_objecthypothesis.OutlierRemovalOnObjectHypothesisAnnotator Module Contents --------------- .. py:data:: _PYTYPE_TO_ROS_FIELD .. py:class:: OutlierRemovalOnObjectHypothesisAnnotator(name='OutlierRemovalOnObjectHypothesis', descriptor=Descriptor()) Bases: :py:obj:`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. .. py:class:: Descriptor Bases: :py:obj:`robokudo.annotators.core.BaseAnnotator.Descriptor` Configuration descriptor for outlier removal and clustering. .. py:class:: Parameters Parameter container for outlier removal configuration. :ivar dbscan_neighbors: Minimum points to form a cluster (DBSCAN min_samples) :type dbscan_neighbors: int :ivar dbscan_epsilon: DBSCAN neighborhood size :type dbscan_epsilon: float :ivar stat_neighbors: Number of neighbors for statistical analysis :type stat_neighbors: int :ivar stat_std: Standard deviation threshold for outlier removal :type stat_std: float :ivar skip_removal_on_classes: List of class names to skip processing :type skip_removal_on_classes: list[str] .. py:attribute:: dbscan_neighbors :value: 90 .. py:attribute:: dbscan_epsilon :value: 0.02 .. py:attribute:: stat_neighbors :value: 200 .. py:attribute:: stat_std :value: 0.5 .. py:attribute:: test :value: 'bruh' .. py:attribute:: skip_removal_on_classes :value: [] .. py:attribute:: parameters .. py:method:: parameters_callback(params) .. py:method:: update() -> py_trees.common.Status Process object hypotheses to remove outliers and refine clusters. :return: SUCCESS if processing completed, raises Exception if no clusters found :rtype: py_trees.Status :raises Exception: If no clusters are found after processing .. py:method:: cluster_statistical_outlierremoval_pcd() -> bool Perform outlier removal and clustering on each object hypothesis. :return: True, if atleast one of the object hypotheses could be optimized. False otherwise. :rtype: bool