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. Подробнее... |
|
Подробное описание
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
Определение в строке 85 файла conditional_euclidean_clustering.h.
Документация по псевдонимам типов-членов
SearcherPtr
| защищённый |
Определение в строке 88 файла conditional_euclidean_clustering.h.
Документация по конструкторам и деструкторам
ConditionalEuclideanClustering()
| встроенный |
Конструктор.
- Параметры
-
[in] extract_removed_clusters Задайте значение true, если нужно иметь возможность извлекать кластеры, размер которых слишком велик или слишком мал (по умолчанию = false)
Определение в строке 99 файла conditional_euclidean_clustering.h.
Документация по функциям-членам
getClusterTolerance()
| встроенный |
Получить пространственный допуск для кандидатов в новые кластеры.
Определение в строке 169 файла conditional_euclidean_clustering.h.
getMaxClusterSize()
| встроенный |
Получить максимальное количество точек, которое должен содержать кластер, чтобы считаться допустимым.
Определение в строке 201 файла conditional_euclidean_clustering.h.
getMinClusterSize()
| встроенный |
Получить минимальное количество точек, которое должен содержать кластер, чтобы считаться допустимым.
Определение в строке 185 файла conditional_euclidean_clustering.h.
getRemovedClusters()
| встроенный |
Получить кластеры, признанные недопустимыми из-за ограничений по размеру.
- Примечание
- Конструктор этого класса должен быть вызван со значением true, а перед использованием этого метода необходимо вызвать метод сегментации.
- Параметры
-
[out] small_clusters Результирующие кластеры, содержащие меньше точек, чем min_cluster_size [out] large_clusters Результирующие кластеры, содержащие больше точек, чем max_cluster_size
Определение в строке 224 файла conditional_euclidean_clustering.h.
getSearchMethod()
| встроенный |
Получить указатель на используемый метод поиска.
Определение в строке 120 файла conditional_euclidean_clustering.h.
segment()
| 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()
| встроенный |
Задать пространственный допуск для кандидатов в новые кластеры.
Для любых двух точек, находящихся друг от друга на расстоянии меньше этого значения, необходимо проверить заданное условие, чтобы включить их в один кластер. Условие можно задать с помощью setConditionFunction().
- Параметры
-
[in] cluster_tolerance Расстояние поиска кандидатов в кластеры (по умолчанию = 0.0)
Определение в строке 162 файла conditional_euclidean_clustering.h.
setConditionFunction() [1/2]
| встроенный |
Задать условие, которому должны удовлетворять соседние точки, чтобы считаться частью одного кластера.
Для любых двух точек, находящихся друг от друга на заданном расстоянии, необходимо проверить это условие, чтобы включить их в один кластер. Расстояние можно задать с помощью setClusterTolerance().
Обратите внимание: чтобы точка вошла в кластер, достаточно, чтобы условие выполнялось хотя бы для одной пары точек. Иными словами, неверно следующее утверждение: для любых двух точек в кластере эта функция условия всегда возвращает true.
Входные аргументы функции условия:
- PointT Первая точка пары
- PointT Вторая точка пары
- float Квадрат расстояния между точками
Выходной аргумент имеет тип boolean; возврат значения true добавит вторую точку в кластер первой точки.
- Параметры
-
[in] condition_function Функция условия, которая должна выполняться для кластеризации
Определение в строке 143 файла conditional_euclidean_clustering.h.
setConditionFunction() [2/2]
| встроенный |
Задать условие, которому должны удовлетворять соседние точки, чтобы считаться частью одного кластера.
Эта перегруженная функция предоставлена для удобства. См. документацию к setConditionFunction().
Определение в строке 151 файла conditional_euclidean_clustering.h.
setMaxClusterSize()
| встроенный |
Задать максимальное количество точек, которое должен содержать кластер, чтобы считаться допустимым.
- Параметры
-
[in] max_cluster_size Максимальный размер кластера (по умолчанию = не ограничен)
Определение в строке 194 файла conditional_euclidean_clustering.h.
setMinClusterSize()
| встроенный |
Задать минимальное количество точек, которое должен содержать кластер, чтобы считаться допустимым.
- Параметры
-
[in] min_cluster_size Минимальный размер кластера (по умолчанию = 1)
Определение в строке 178 файла conditional_euclidean_clustering.h.
setSearchMethod()
| встроенный |
Передать указатель на объект поиска.
- Параметры
-
[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