ConditionalEuclideanClustering выполняет сегментацию на основе евклидова расстояния и заданного пользователем условия кластеризации. Подробнее...
#include <pcl/segmentation/conditional_euclidean_clustering.h>
Общедоступные члены-функции | |
| 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) |
| Получить кластеры, которые были отклонены из-за ограничений на размер. Подробнее... |
|
|
| |
| 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 |
Дополнительные унаследованные члены | |
|
| |
| using | PointCloud = pcl::PointCloud< PointT > |
| using | PointCloudPtr = typename PointCloud::Ptr |
| using | PointCloudConstPtr = typename PointCloud::ConstPtr |
| using | PointIndicesPtr = PointIndices::Ptr |
| using | PointIndicesConstPtr = PointIndices::ConstPtr |
|
| |
| bool | initCompute () |
| Этот метод должен вызываться перед началом фактического вычисления. Подробнее... |
|
| bool | deinitCompute () |
| Этот метод должен вызываться после завершения фактического вычисления. Подробнее... |
|
|
| |
| PointCloudConstPtr | input_ |
| Набор входных данных облака точек. Подробнее... |
|
| IndicesPtr | indices_ |
| Указатель на вектор индексов точек для использования. Подробнее... |
|
| bool | use_indices_ |
| Устанавливается в true, если используются индексы точек. Подробнее... |
|
| bool | fake_indices_ |
| Если набор индексов не задан, мы создаём набор фиктивных индексов, имитирующих входное PointCloud. Подробнее... |
|
Подробное описание
шаблон<typename PointT>
класс 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:477
pcl::_PointXYZI::intensity
float intensity
Definition: point_types.hpp:477
pcl::PointXYZIDefinition: point_types.hpp:486
pcl::PointXYZI
Definition: point_types.hpp:486
Определение в строке 85 файла conditional_euclidean_clustering.h.
Документация по определению типов членов
SearcherPtr
| protected |
Определение в строке 88 файла conditional_euclidean_clustering.h.
Документация по конструкторам и деструкторам
ConditionalEuclideanClustering()
| inline |
Конструктор.
- Параметры
-
[in] extract_removed_clusters Установите в значение true, если необходимо извлечь кластеры, которые слишком большие или слишком маленькие (по умолчанию = false)
Определение в строке 99 файла conditional_euclidean_clustering.h.
Документация по функциям-членам
getClusterTolerance()
| inline |
Получить пространственную погрешность для новых кандидатов кластеров.
Определение в строке 172 файла conditional_euclidean_clustering.h.
getMaxClusterSize()
| inline |
Получить максимальное количество точек, которые должен содержать кластер, чтобы считаться допустимым.
Определение в строке 204 файла conditional_euclidean_clustering.h.
getMinClusterSize()
| inline |
Получить минимальное количество точек, которые должен содержать кластер, чтобы считаться допустимым.
Определение в строке 188 файла conditional_euclidean_clustering.h.
getRemovedClusters()
| inline |
Получить кластеры, которые были отброшены из-за ограничений по размеру.
- Примечание
- Конструктор этого класса должен быть инициализирован значением true, а метод segment должен быть вызван перед использованием этого метода.
- Параметры
-
[out] small_clusters Полученные кластеры, которые содержат меньше, чем min_cluster_size точек [out] large_clusters Полученные кластеры, которые содержат больше, чем max_cluster_size точек
Определение в строке 227 файла conditional_euclidean_clustering.h.
getSearchMethod()
| inline |
Получить указатель на используемый метод поиска.
Определение в строке 123 файла conditional_euclidean_clustering.h.
segment()
|
Разделить входные данные на отдельные кластеры.
Входные данные можно задать с помощью setInputCloud() и setIndices().
Ограничения по размеру получившихся кластеров можно установить с помощью setMinClusterSize() и setMaxClusterSize().
Параметры роста области можно установить с помощью setConditionFunction() и setClusterTolerance().
- Параметры
-
[out] clusters Результирующий набор индексов, индексирующий точки облака входных данных, соответствующие кластерам
Определение в строке 45 файла conditional_euclidean_clustering.hpp.
Ссылки на pcl::PointIndices::header, и pcl::PointIndices::indices.
setClusterTolerance()
| inline |
Установите пространственную погрешность для новых кандидатов кластеров.
Любые две точки в пределах этого расстояния друг от друга должны удовлетворять определенному условию, чтобы стать частью одного кластера. Условие можно задать с помощью setConditionFunction().
- Параметры
-
[in] cluster_tolerance Расстояние для поиска кандидатов в кластеры (по умолчанию = 0,0)
Определение в строке 165 файла conditional_euclidean_clustering.h.
setConditionFunction() [1/2]
| inline |
Установите условие, которое должно выполняться для соседних точек, чтобы считать их частью одного кластера.
Любые две точки в пределах определенного расстояния друг от друга должны удовлетворять этому условию, чтобы стать частью одного кластера. Расстояние можно установить с помощью setClusterTolerance().
Обратите внимание, что для того, чтобы точка была частью кластера, условие должно выполняться хотя бы для одной пары точек. То есть, следующее утверждение ложно: любые две точки в пределах кластера всегда возвращают для этой функции условие true.
Входные аргументы функции условия:
- PointT Первая точка пары точек
- PointT Вторая точка пары точек
- float Квадратное расстояние между точками
Выходной аргумент — булево значение, возвращающее true, если следует объединить вторую точку в кластер первой точки.
- Параметры
-
[in] condition_function Функция условия, которая должна выполняться для кластеризации
Определение в строке 146 файла conditional_euclidean_clustering.h.
setConditionFunction() [2/2]
| inline |
Установите условие, которое должно выполняться для соседних точек, чтобы считать их частью одного кластера.
Это перегруженная функция, предоставленная для удобства. См. документацию для setConditionFunction().
Определение в строке 154 файла conditional_euclidean_clustering.h.
setMaxClusterSize()
| inline |
Установите максимальное количество точек, которые должен содержать кластер, чтобы считаться допустимым.
- Параметры
-
[in] max_cluster_size Максимальный размер кластера (по умолчанию — неограничен)
Определение в строке 197 файла conditional_euclidean_clustering.h.
setMinClusterSize()
| inline |
Установите минимальное количество точек, которые должен содержать кластер, чтобы считаться допустимым.
- Параметры
-
[in] min_cluster_size Минимальный размер кластера (по умолчанию = 1)
Определение в строке 181 файла conditional_euclidean_clustering.h.
setSearchMethod()
| inline |
Укажите указатель на объект поиска.
- Параметры
-
[in] tree указатель на объект пространственного поиска.
Определение в строке 115 файла conditional_euclidean_clustering.h.
The documentation for this class was generated from the following files:
- 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