Spec-Zone.ru › PointCloudLibrary

ConditionalEuclideanClustering выполняет сегментацию на основе евклидова расстояния и заданного пользователем условия кластеризации. Подробнее...

#include <pcl/segmentation/conditional_euclidean_clustering.h>

Inheritance graph
[легенда]
Collaboration graph
[легенда]

Открытые функции-члены

ConditionalEuclideanClustering (bool extract_removed_clusters=false)
Конструктор. Подробнее...
void setSearchMethod (const SearcherPtr &tree)
Задать указатель на объект поиска. Подробнее...
const SearcherPtr & getSearchMethod () const
Получить указатель на используемый метод поиска. Подробнее...
void setConditionFunction (bool(*condition_function)(const PointT &, const PointT &, float))
Задать условие, которому должны удовлетворять соседние точки, чтобы считаться частью одного кластера. Подробнее...
void setConditionFunction (std::function< bool(const PointT &, const PointT &, float)> condition_function)
Задать условие, которому должны удовлетворять соседние точки, чтобы считаться частью одного кластера. Подробнее...
void setClusterTolerance (float cluster_tolerance)
Задать пространственный допуск для новых кандидатов в кластер. Подробнее...
float getClusterTolerance ()
Получить пространственный допуск для новых кандидатов в кластер. Подробнее...
void setMinClusterSize (int min_cluster_size)
Задать минимальное число точек, которое должен содержать кластер, чтобы считаться допустимым. Подробнее...
int getMinClusterSize ()
Получить минимальное число точек, которое должен содержать кластер, чтобы считаться допустимым. Подробнее...
void setMaxClusterSize (int max_cluster_size)
Задать максимальное число точек, которое должен содержать кластер, чтобы считаться допустимым. Подробнее...
int getMaxClusterSize ()
Получить максимальное число точек, которое должен содержать кластер, чтобы считаться допустимым. Подробнее...
void segment (IndicesClusters &clusters)
Разбить входные данные на отдельные кластеры. Подробнее...
void getRemovedClusters (IndicesClustersPtr &small_clusters, IndicesClustersPtr &large_clusters)
Получить кластеры, признанные недопустимыми из-за ограничений на размер. Подробнее...
- Открытые функции-члены, унаследованные от pcl::PCLBase< PointT >
PCLBase ()
Конструктор без параметров. Подробнее...
PCLBase (const PCLBase &base)
Конструктор копирования. Подробнее...
virtual ~PCLBase ()=default
Деструктор. Подробнее...
virtual void setInputCloud (const PointCloudConstPtr &cloud)
Задать указатель на входной набор данных. Подробнее...
PointCloudConstPtr const getInputCloud () const
Получить указатель на входной набор точек облака. Подробнее...
virtual void setIndices (const IndicesPtr &indices)
Задать указатель на вектор индексов, представляющий входные данные. Подробнее...
virtual void setIndices (const IndicesConstPtr &indices)
Задать указатель на вектор индексов, представляющий входные данные. Подробнее...
virtual void setIndices (const PointIndicesConstPtr &indices)
Задать указатель на вектор индексов, представляющий входные данные. Подробнее...
virtual void setIndices (std::size_t row_start, std::size_t col_start, std::size_t nb_rows, std::size_t nb_cols)
Задать индексы точек, расположенных в области интереса облака точек. Подробнее...
IndicesPtr getIndices ()
Получить указатель на используемый вектор индексов. Подробнее...
IndicesConstPtr const getIndices () const
Получить указатель на используемый вектор индексов. Подробнее...
const PointT & operator[] (std::size_t pos) const
Переопределяет оператор [] класса PointCloud, чтобы сократить код. Подробнее...

Защищённые типы

using SearcherPtr = typename pcl::search::Search< PointT >::Ptr

Дополнительные унаследованные члены

- Открытые типы, унаследованные от pcl::PCLBase< PointT >
using PointCloud = pcl::PointCloud< PointT >
using PointCloudPtr = typename PointCloud::Ptr
using PointCloudConstPtr = typename PointCloud::ConstPtr
using PointIndicesPtr = PointIndices::Ptr
using PointIndicesConstPtr = PointIndices::ConstPtr
- Защищённые функции-члены, унаследованные от pcl::PCLBase< PointT >
bool initCompute ()
Этот метод следует вызывать перед началом вычислений. Подробнее...
bool deinitCompute ()
Этот метод следует вызывать после завершения вычислений. Подробнее...
- Защищённые атрибуты, унаследованные от pcl::PCLBase< PointT >
PointCloudConstPtr input_
Входной набор точек облака. Подробнее...
IndicesPtr indices_
Указатель на используемый вектор индексов точек. Подробнее...
bool use_indices_
Установить в true, если используются индексы точек. Подробнее...
bool fake_indices_
Если набор индексов не задан, создаётся фиктивный набор индексов, имитирующий входной объект PointCloud. Подробнее...

Подробное описание

template<typename PointT>
class pcl::ConditionalEuclideanClustering< PointT >

ConditionalEuclideanClustering выполняет сегментацию на основе евклидова расстояния и заданного пользователем условия кластеризации.

Условие, которое должно выполняться, в настоящее время передаётся с помощью указателя на функцию. Дополнительную информацию см. в документации к setConditionFunction() или в примере использования ниже:

bool
enforceIntensitySimilarity (const pcl::PointXYZI& point_a, const pcl::PointXYZI& point_b, float squared_distance)
{
 if (std::abs (point_a.intensity - point_b.intensity) < 0.1f)
 return (true);
 else
 return (false);
}
// ...
// Somewhere down to the main code
// ...
pcl::ConditionalEuclideanClustering<pcl::PointXYZI> cec (true);
cec.setInputCloud (cloud_in);
cec.setConditionFunction (&enforceIntensitySimilarity);
// Points within this distance from one another are going to need to validate the enforceIntensitySimilarity function to be part of the same cluster:
cec.setClusterTolerance (0.09f);
// Size constraints for the clusters:
cec.setMinClusterSize (5);
cec.setMaxClusterSize (30);
// The resulting clusters (an array of pointindices):
cec.segment (*clusters);
// The clusters that are too small or too large in size can also be extracted separately:
cec.getRemovedClusters (small_clusters, large_clusters);
pcl::ConditionalEuclideanClusteringConditionalEuclideanClustering performs segmentation based on Euclidean distance and a user-defined c...Definition: conditional_euclidean_clustering.h:86
pcl::ConditionalEuclideanClustering
ConditionalEuclideanClustering performs segmentation based on Euclidean distance and a user-defined c...
Definition: conditional_euclidean_clustering.h:86
pcl::_PointXYZI::intensityfloat intensityDefinition: point_types.hpp:448
pcl::_PointXYZI::intensity
float intensity
Definition: point_types.hpp:448
pcl::PointXYZIDefinition: point_types.hpp:457
pcl::PointXYZI
Definition: point_types.hpp:457
Автор
Frits Florentinus

Определение в строке 85 файла conditional_euclidean_clustering.h.

Документация по псевдонимам типов-членов

SearcherPtr

template<typename PointT >
using pcl::ConditionalEuclideanClustering< PointT >::SearcherPtr = typename pcl::search::Search<PointT>::Ptr
защищённый

Определение в строке 88 файла conditional_euclidean_clustering.h.

Документация по конструкторам и деструкторам

ConditionalEuclideanClustering()

template<typename PointT >
pcl::ConditionalEuclideanClustering< PointT >::ConditionalEuclideanClustering ( bool extract_removed_clusters = false )
встроенный

Конструктор.

Параметры
[in] extract_removed_clusters Задайте значение true, если нужно иметь возможность извлекать кластеры, размер которых слишком велик или слишком мал (по умолчанию = false)

Определение в строке 99 файла conditional_euclidean_clustering.h.

Документация по функциям-членам

getClusterTolerance()

template<typename PointT >
float pcl::ConditionalEuclideanClustering< PointT >::getClusterTolerance ( )
встроенный

Получить пространственный допуск для кандидатов в новые кластеры.

Определение в строке 169 файла conditional_euclidean_clustering.h.

getMaxClusterSize()

template<typename PointT >
int pcl::ConditionalEuclideanClustering< PointT >::getMaxClusterSize ( )
встроенный

Получить максимальное количество точек, которое должен содержать кластер, чтобы считаться допустимым.

Определение в строке 201 файла conditional_euclidean_clustering.h.

getMinClusterSize()

template<typename PointT >
int pcl::ConditionalEuclideanClustering< PointT >::getMinClusterSize ( )
встроенный

Получить минимальное количество точек, которое должен содержать кластер, чтобы считаться допустимым.

Определение в строке 185 файла conditional_euclidean_clustering.h.

getRemovedClusters()

template<typename PointT >
void pcl::ConditionalEuclideanClustering< PointT >::getRemovedClusters ( IndicesClustersPtr & small_clusters,
IndicesClustersPtr & large_clusters
)
встроенный

Получить кластеры, признанные недопустимыми из-за ограничений по размеру.

Примечание
Конструктор этого класса должен быть вызван со значением true, а перед использованием этого метода необходимо вызвать метод сегментации.
Параметры
[out] small_clusters Результирующие кластеры, содержащие меньше точек, чем min_cluster_size
[out] large_clusters Результирующие кластеры, содержащие больше точек, чем max_cluster_size

Определение в строке 224 файла conditional_euclidean_clustering.h.

getSearchMethod()

template<typename PointT >
const SearcherPtr& pcl::ConditionalEuclideanClustering< PointT >::getSearchMethod ( ) const
встроенный

Получить указатель на используемый метод поиска.

Определение в строке 120 файла conditional_euclidean_clustering.h.

segment()

template<typename PointT >
void pcl::ConditionalEuclideanClustering< PointT >::segment ( pcl::IndicesClusters & clusters )

Разбить входные данные на отдельные кластеры.

Входные данные можно задать с помощью setInputCloud() и setIndices().
Ограничения на размер результирующих кластеров можно задать с помощью setMinClusterSize() и setMaxClusterSize().
Параметры наращивания областей можно задать с помощью setConditionFunction() и setClusterTolerance().

Параметры
[out] clusters Результирующий набор индексов, указывающих на точки входного облака, принадлежащие соответствующим кластерам

Определение в строке 45 файла conditional_euclidean_clustering.hpp.

Ссылки: pcl::PointIndices::header и pcl::PointIndices::indices.

setClusterTolerance()

template<typename PointT >
void pcl::ConditionalEuclideanClustering< PointT >::setClusterTolerance ( float cluster_tolerance )
встроенный

Задать пространственный допуск для кандидатов в новые кластеры.

Для любых двух точек, находящихся друг от друга на расстоянии меньше этого значения, необходимо проверить заданное условие, чтобы включить их в один кластер. Условие можно задать с помощью setConditionFunction().

Параметры
[in] cluster_tolerance Расстояние поиска кандидатов в кластеры (по умолчанию = 0.0)

Определение в строке 162 файла conditional_euclidean_clustering.h.

setConditionFunction() [1/2]

template<typename PointT >
void pcl::ConditionalEuclideanClustering< PointT >::setConditionFunction ( bool(*)(const PointT &, const PointT &, float) condition_function )
встроенный

Задать условие, которому должны удовлетворять соседние точки, чтобы считаться частью одного кластера.

Для любых двух точек, находящихся друг от друга на заданном расстоянии, необходимо проверить это условие, чтобы включить их в один кластер. Расстояние можно задать с помощью setClusterTolerance().
Обратите внимание: чтобы точка вошла в кластер, достаточно, чтобы условие выполнялось хотя бы для одной пары точек. Иными словами, неверно следующее утверждение: для любых двух точек в кластере эта функция условия всегда возвращает true.

Входные аргументы функции условия:

  • PointT Первая точка пары
  • PointT Вторая точка пары
  • float Квадрат расстояния между точками

Выходной аргумент имеет тип boolean; возврат значения true добавит вторую точку в кластер первой точки.

Параметры
[in] condition_function Функция условия, которая должна выполняться для кластеризации

Определение в строке 143 файла conditional_euclidean_clustering.h.

setConditionFunction() [2/2]

template<typename PointT >
void pcl::ConditionalEuclideanClustering< PointT >::setConditionFunction ( std::function< bool(const PointT &, const PointT &, float)> condition_function )
встроенный

Задать условие, которому должны удовлетворять соседние точки, чтобы считаться частью одного кластера.

Эта перегруженная функция предоставлена для удобства. См. документацию к setConditionFunction().

Определение в строке 151 файла conditional_euclidean_clustering.h.

setMaxClusterSize()

template<typename PointT >
void pcl::ConditionalEuclideanClustering< PointT >::setMaxClusterSize ( int max_cluster_size )
встроенный

Задать максимальное количество точек, которое должен содержать кластер, чтобы считаться допустимым.

Параметры
[in] max_cluster_size Максимальный размер кластера (по умолчанию = не ограничен)

Определение в строке 194 файла conditional_euclidean_clustering.h.

setMinClusterSize()

template<typename PointT >
void pcl::ConditionalEuclideanClustering< PointT >::setMinClusterSize ( int min_cluster_size )
встроенный

Задать минимальное количество точек, которое должен содержать кластер, чтобы считаться допустимым.

Параметры
[in] min_cluster_size Минимальный размер кластера (по умолчанию = 1)

Определение в строке 178 файла conditional_euclidean_clustering.h.

setSearchMethod()

template<typename PointT >
void pcl::ConditionalEuclideanClustering< PointT >::setSearchMethod ( const SearcherPtr & tree )
встроенный

Передать указатель на объект поиска.

Параметры
[in] tree указатель на объект пространственного поиска.

Определение в строке 112 файла conditional_euclidean_clustering.h.


Документация по этому классу была создана на основе следующих файлов:
  • pcl/segmentation/conditional_euclidean_clustering.h
  • pcl/segmentation/impl/conditional_euclidean_clustering.hpp

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_conditional_euclidean_clustering.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API