cars.applications.point_cloud_outlier_removal.outlier_removal_tools
This module contains functions used in outlier removal
Module Contents
Functions
|
Filter point cloud to remove small clusters of points |
|
Determine the indexes of the points of cloud_xyz to filter. |
Filter point cloud to remove statistical outliers |
|
|
Determine the indexes of the points of cloud_xyz to filter. |
|
Filter outliers using the small components method in epipolar geometry |
|
Filter outliers using the statistical method in epipolar geometry |
- cars.applications.point_cloud_outlier_removal.outlier_removal_tools.small_component_filtering(cloud: pandas.DataFrame, connection_val: float, nb_pts_threshold: int, clusters_distance_threshold: float = None, filtered_elt_pos: bool = False) Tuple[pandas.DataFrame, Union[None, pandas.DataFrame]] [source]
Filter point cloud to remove small clusters of points (see the detect_small_components function).
- Parameters
cloud – combined cloud as returned by the create_combined_cloud function
connection_val – distance to use to consider that two points are connected
nb_pts_threshold – number of points to use to identify small clusters to filter
clusters_distance_threshold – distance to use to consider if two points clusters are far from each other or not (set to None to deactivate this level of filtering)
filtered_elt_pos – if filtered_elt_pos is set to True, the removed points positions in their original epipolar images are returned, otherwise it is set to None
- Returns
Tuple made of the filtered cloud and the removed elements positions in their epipolar images
- cars.applications.point_cloud_outlier_removal.outlier_removal_tools.detect_small_components(cloud_xyz: numpy.ndarray, connection_val: float, nb_pts_threshold: int, clusters_distance_threshold: float = None) List[int] [source]
Determine the indexes of the points of cloud_xyz to filter. The clusters are made of ‘connected’ points (2 connected points have a distance smaller than connection_val)
The removed clusters are composed of less than nb_pts_threshold points and are also far from other clusters (points are further than clusters_distance_threshold).
If clusters_distance_threshold is set to None, all the clusters that are composed of less than nb_pts_threshold points are filtered.
- Parameters
cloud_xyz – points kdTree
connection_val – distance to use to consider that two points are connected
nb_pts_threshold – number of points to use to identify small clusters to filter
clusters_distance_threshold – distance to use to consider if two points clusters are far from each other or not (set to None to deactivate this level of filtering)
- Returns
list of the points to filter indexes
- cars.applications.point_cloud_outlier_removal.outlier_removal_tools.statistical_outlier_filtering(cloud: pandas.DataFrame, k: int, dev_factor: float, use_median: bool = False, filtered_elt_pos: bool = False) Tuple[pandas.DataFrame, Union[None, pandas.DataFrame]] [source]
Filter point cloud to remove statistical outliers (see the detect_statistical_outliers function).
- Parameters
cloud – combined cloud as returned by the create_combined_cloud function
k – number of neighbors
dev_factor – multiplication factor of deviation used to compute the distance threshold
use_median – choice of statistical measure used to filter
filtered_elt_pos – if filtered_elt_pos is set to True, the removed points positions in their original epipolar images are returned, otherwise it is set to None
- Returns
Tuple made of the filtered cloud and the removed elements positions in their epipolar images
- cars.applications.point_cloud_outlier_removal.outlier_removal_tools.detect_statistical_outliers(cloud_xyz: numpy.ndarray, k: int, dev_factor: float, use_median: bool) List[int] [source]
Determine the indexes of the points of cloud_xyz to filter. The removed points have mean distances with their k nearest neighbors that are greater than a distance threshold (dist_thresh).
This threshold is computed from the mean (or median) and standard deviation (or interquartile range) of all the points mean distances with their k nearest neighbors:
(1) dist_thresh = mean_distances + dev_factor * std_distances or (2) dist_thresh = median_distances + dev_factor * iqr_distances
- Parameters
cloud_xyz – points kdTree
k – number of neighbors
dev_factor – multiplication factor of deviation used to compute the distance threshold
use_median – if True formula (2) is used for threshold, else formula (1)
- Returns
list of the points to filter indexes
- cars.applications.point_cloud_outlier_removal.outlier_removal_tools.epipolar_small_components(cloud, epsg, min_cluster_size=15, radius=1.0, half_window_size=5, clusters_distance_threshold=np.nan)[source]
Filter outliers using the small components method in epipolar geometry
- Parameters
epipolar_ds (xr.Dataset) – epipolar dataset to filter
epsg (int) – epsg code of the CRS used to compute distances
statistical_k (int) – k
std_dev_factor (float) – std factor
half_window_size (int) – use median and quartile instead of mean and std
use_median (bool) – use median and quartile instead of mean and std
- Returns
filtered dataset
- Return type
xr.Dataset
- cars.applications.point_cloud_outlier_removal.outlier_removal_tools.epipolar_statistical_filtering(epipolar_ds, epsg, k=15, dev_factor=1.0, half_window_size=5, use_median=False)[source]
Filter outliers using the statistical method in epipolar geometry
- Parameters
epipolar_ds (xr.Dataset) – epipolar dataset to filter
epsg (int) – epsg code of the CRS used to compute distances
statistical_k (int) – k
std_dev_factor (float) – std factor
half_window_size (int) – use median and quartile instead of mean and std
use_median (bool) – use median and quartile instead of mean and std
- Returns
filtered dataset
- Return type
xr.Dataset