Простой алгоритм сегментации, разделяющий граф супервокселей на группы локально выпуклых соединенных супервокселей, разделенных вогнутыми границами. Подробнее...
#include <pcl/segmentation/lccp_segmentation.h>
Public Types | |
| using | SupervoxelAdjacencyList = boost::adjacency_list< boost::setS, boost::setS, boost::undirectedS, std::uint32_t, EdgeProperties > |
| using | VertexIterator = typename boost::graph_traits< SupervoxelAdjacencyList >::vertex_iterator |
| using | AdjacencyIterator = typename boost::graph_traits< SupervoxelAdjacencyList >::adjacency_iterator |
| using | VertexID = typename boost::graph_traits< SupervoxelAdjacencyList >::vertex_descriptor |
| using | EdgeIterator = typename boost::graph_traits< SupervoxelAdjacencyList >::edge_iterator |
| using | OutEdgeIterator = typename boost::graph_traits< SupervoxelAdjacencyList >::out_edge_iterator |
| using | EdgeID = typename boost::graph_traits< SupervoxelAdjacencyList >::edge_descriptor |
Общедоступные члены-функции | |
| LCCPSegmentation () | |
| virtual | ~LCCPSegmentation () |
| void | reset () |
| Сбросить внутреннюю память. Подробнее... |
|
| void | setInputSupervoxels (const std::map< std::uint32_t, typename pcl::Supervoxel< PointT >::Ptr > &supervoxel_clusters_arg, const std::multimap< std::uint32_t, std::uint32_t > &label_adjacency_arg) |
| Установить кластеры суперпикселей, а также граф смежности для сегментации. Эти параметры генерируются с помощью класса SupervoxelClustering. Подробнее... |
|
| void | segment () |
| Объединить суперпиксели с использованием локальной выпуклости. Подробнее... |
|
| void | relabelCloud (pcl::PointCloud< pcl::PointXYZL > &labeled_cloud_arg) |
| Переопределяет облако метками суперпикселей с вычисленными метками сегмента. Подробнее... |
|
| void | getSegmentToSupervoxelMap (std::map< std::uint32_t, std::set< std::uint32_t > > &segment_supervoxel_map_arg) const |
| Получить карту<SegmentID, std::set<SuperVoxel IDs> > Подробнее... |
|
| void | getSupervoxelToSegmentMap (std::map< std::uint32_t, std::uint32_t > &supervoxel_segment_map_arg) const |
| Получить карту<Supervoxel_ID, Segment_ID> Подробнее... |
|
| void | getSegmentAdjacencyMap (std::map< std::uint32_t, std::set< std::uint32_t > > &segment_adjacency_map_arg) |
| Получить карту <SegmentID, std::set<Neighboring SegmentIDs> > Подробнее... |
|
| float | getConcavityToleranceThreshold () const |
| Получить пороговое значение для нормали. Подробнее... |
|
| void | getSVAdjacencyList (SupervoxelAdjacencyList &adjacency_list_arg) const |
| Получить граф смежности суперпикселей с классифицированными рёбрами (boost::adjacency_list). Подробнее... |
|
| void | setConcavityToleranceThreshold (float concavity_tolerance_threshold_arg) |
| Установить пороговое значение для нормали. Подробнее... |
|
| void | setSmoothnessCheck (bool use_smoothness_check_arg, float voxel_res_arg, float seed_res_arg, float smoothness_threshold_arg=0.1) |
| Определяет, выполняется ли проверка гладкости во время сегментации, пытаясь аннулировать рёбра негладких соединённых рёбер (шаги). Подробнее... |
|
| void | setSanityCheck (const bool use_sanity_criterion_arg) |
| Определяет, хотим ли мы использовать критерий разумности для аннулирования одиночных соединённых областей. Подробнее... |
|
| void | setKFactor (const std::uint32_t k_factor_arg) |
| Установить значение, используемое для k выпуклости. Подробнее... |
|
| void | setMinSegmentSize (const std::uint32_t min_segment_size_arg) |
| Установить значение min_segment_size_, используемое в mergeSmallSegments. Подробнее... |
|
Защищенные члены-функции | |
| void | mergeSmallSegments () |
| Сегменты, меньшие чем min_segment_size_, объединяются с меткой самого большого соседа. Подробнее... |
|
| void | computeSegmentAdjacency () |
| Вычисление смежности сегментов. Подробнее... |
|
| void | prepareSegmentation (const std::map< std::uint32_t, typename pcl::Supervoxel< PointT >::Ptr > &supervoxel_clusters_arg, const std::multimap< std::uint32_t, std::uint32_t > &label_adjacency_arg) |
| Вызывается внутри setInputSupervoxels в основном для резервирования необходимой памяти. Подробнее... |
|
| void | doGrouping () |
| Выполнить поиск в глубину по графу и рекурсивно сгруппировать все суперпиксели с выпуклыми соединениями. Подробнее... |
|
| void | recursiveSegmentGrowing (const VertexID &queryPointID, const unsigned int group_label) |
| Присваивает соседей точки запроса той же группе, что и точка запроса. Подробнее... |
|
| void | calculateConvexConnections (SupervoxelAdjacencyList &adjacency_list_arg) |
| Вычисляет выпуклость рёбер и сохраняет это в графе смежности. Подробнее... |
|
| void | applyKconvexity (const unsigned int k_arg) |
| Соединения выпуклые только в том случае, если это верно для по крайней мере k_arg общих соседей двух областей. Подробнее... |
|
| bool | connIsConvex (const std::uint32_t source_label_arg, const std::uint32_t target_label_arg, float &normal_angle) |
| Возвращает true, если соединение между исходной и целевой точками выпуклое. Подробнее... |
|
Защищённые атрибуты | |
| float | concavity_tolerance_threshold_ |
| *** Параметры *** /// Подробнее... |
|
| bool | grouping_data_valid_ |
| Помечает, если данные группировки (sv_adjacency_list_, sv_label_to_seg_label_map_, processed_) доступны. Подробнее... |
|
| bool | supervoxels_set_ |
| Помечает, если суперпиксели были установлены вызовом setInputSupervoxels. Подробнее... |
|
| bool | use_smoothness_check_ |
| Определяет, используется ли проверка плавности при сегментации. Подробнее... |
|
| float | smoothness_threshold_ |
| Два суперпикселя не плавные, если расстояние между их плоскостями DIST > (ожидаемое_расстояние + smoothness_threshold_*разрешение_пикселей). Подробнее... |
|
| bool | use_sanity_check_ |
| Определяет, используем ли мы проверку на корректность, которая пытается найти и аннулировать одиночные соединённые области. Подробнее... |
|
| float | seed_resolution_ |
| Разрешение семян суперпикселей (используется только для проверки плавности) Подробнее... |
|
| float | voxel_resolution_ |
| Разрешение пикселей, используемое для построения суперпикселей (используется только для проверки плавности) Подробнее... |
|
| std::uint32_t | k_factor_ |
| Фактор, используемый для k-выпуклости. Подробнее... |
|
| std::uint32_t | min_segment_size_ |
| Минимальный размер сегмента. Подробнее... |
|
| std::map< std::uint32_t, bool > | processed_ |
| Хранит метки суперпикселей, которые уже посещались во время рекурсивной группировки. Подробнее... |
|
| SupervoxelAdjacencyList | sv_adjacency_list_ |
| Граф смежности с метками суперпикселей в качестве узлов и рёбрами между смежными суперпикселями. Подробнее... |
|
| std::map< std::uint32_t, typename pcl::Supervoxel< PointT >::Ptr > | sv_label_to_supervoxel_map_ |
| отображение от меток суперпикселей к объектам суперпикселей Подробнее... |
|
| std::map< std::uint32_t, std::uint32_t > | sv_label_to_seg_label_map_ |
| Хранение соотношения между исходными метками SuperVoxel и новыми метками сегментации. Подробнее... |
|
| std::map< std::uint32_t, std::set< std::uint32_t > > | seg_label_to_sv_list_map_ |
| отображение Метки сегмента к множеству меток Supervoxel Подробнее... |
|
| std::map< std::uint32_t, std::set< std::uint32_t > > | seg_label_to_neighbor_set_map_ |
| отображение < ID сегмента, множество смежных сегментов> Подробнее... |
|
Подробное описание
template<typename PointT>
class pcl::LCCPSegmentation< PointT >
Простой алгоритм сегментации, разделяющий граф суперпикселей на группы локально выпуклых соединённых суперпикселей, разделённых вогнутыми границами.
- Примечание
- Если вы используете этот алгоритм в научной работе, пожалуйста, процитируйте следующую статью: S. C. Stein, M. Schoeler, J. Papon, F. Woergoetter Объект Разбиение с помощью локальной выпуклости В трудах конференции IEEE по компьютерному зрению и распознаванию образов (CVPR) 2014
Определение в строке 57 файла lccp_segmentation.h.
Документация псевдонимов типов членов
AdjacencyIterator
| using pcl::LCCPSegmentation< PointT >::AdjacencyIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::adjacency_iterator |
Определение в строке 85 файла lccp_segmentation.h.
EdgeID
| using pcl::LCCPSegmentation< PointT >::EdgeID = typename boost::graph_traits<SupervoxelAdjacencyList>::edge_descriptor |
Определение в строке 90 файла lccp_segmentation.h.
EdgeIterator
| using pcl::LCCPSegmentation< PointT >::EdgeIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::edge_iterator |
Определение в строке 88 файла lccp_segmentation.h.
OutEdgeIterator
| using pcl::LCCPSegmentation< PointT >::OutEdgeIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::out_edge_iterator |
Определение в строке 89 файла lccp_segmentation.h.
SupervoxelAdjacencyList
| using pcl::LCCPSegmentation< PointT >::SupervoxelAdjacencyList = boost::adjacency_list<boost::setS, boost::setS, boost::undirectedS, std::uint32_t, EdgeProperties> |
Определение в строке 83 файла lccp_segmentation.h.
VertexID
| using pcl::LCCPSegmentation< PointT >::VertexID = typename boost::graph_traits<SupervoxelAdjacencyList>::vertex_descriptor |
Определение в строке 87 файла lccp_segmentation.h.
VertexIterator
| using pcl::LCCPSegmentation< PointT >::VertexIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::vertex_iterator |
Определение в строке 84 файла lccp_segmentation.h.
Документация конструкторов и деструктора
LCCPSegmentation()
| pcl::LCCPSegmentation< PointT >::LCCPSegmentation |
Определение в строке 54 файла lccp_segmentation.hpp.
~LCCPSegmentation()
| virtualdefault |
Документация по функциям-членам
applyKconvexity()
| protected |
Соединения считаются выпуклыми только если это выполняется для по крайней мере k_arg общих соседей двух областей.
Вызовите setKFactor перед segment для использования этого.
- Параметры
-
[in] k_arg Фактор, используемый для расширенной проверки выпуклости
Определение в строке 351 файла lccp_segmentation.hpp.
calculateConvexConnections()
| protected |
Вычисляет выпуклость рёбер и сохраняет это в графе смежности.
- Parameters
-
[in,out] adjacency_list_arg Список смежности суперпикселей
Определение в строке 408 файла lccp_segmentation.hpp.
computeSegmentAdjacency()
| protected |
Вычисляет смежность сегментов.
Определение в строке 135 файла lccp_segmentation.hpp.
Используется в pcl::LCCPSegmentation< PointT >::getSegmentAdjacencyMap().
connIsConvex()
| protected |
Возвращает true, если соединение между исходной и целевой точками выпуклое.
- Parameters
-
[in] source_label_arg Метка одного суперпикселя, соединённого с ребром, которое следует проверить [in] target_label_arg Метка другого суперпикселя, соединённого с ребром, которое следует проверить [out] normal_angle Угол между исходной и целевой точками
- Returns
- True, если соединение выпуклое
Определение в строке 428 файла lccp_segmentation.hpp.
Ссылки на pcl::Supervoxel< PointT >::centroid_, pcl::getAngle3D() и pcl::Supervoxel< PointT >::normal_.
doGrouping()
| protected |
Выполняет поиск по глубине в графе и рекурсивно объединяет все суперпиксели с выпуклыми соединениями.
- Note
- Вершины в списке смежности суперпикселей — это центроиды суперпикселей
Определение в строке 290 файла lccp_segmentation.hpp.
getConcavityToleranceThreshold()
| inline |
Получить порог по нормали.
- Returns
- Угол допущения вогнутости в [градусах], который в настоящее время установлен
Определение в строке 177 файла lccp_segmentation.h.
Ссылки на pcl::LCCPSegmentation< PointT >::concavity_tolerance_threshold_.
getSegmentAdjacencyMap()
| inline |
Получить карту <SegmentID, std::set<Neighboring SegmentIDs> >
- Parameters
-
[out] segment_adjacency_map_arg Карта < SegmentID, std::set< Neighboring SegmentIDs> >. При ошибке карта пустая.
Определение в строке 159 файла lccp_segmentation.h.
Ссылки на pcl::LCCPSegmentation< PointT >::computeSegmentAdjacency(), pcl::LCCPSegmentation< PointT >::grouping_data_valid_ и pcl::LCCPSegmentation< PointT >::seg_label_to_neighbor_set_map_.
getSegmentToSupervoxelMap()
| inline |
Получить карту <SegmentID, std::set<SuperVoxel IDs> >
- Parameters
-
[out] segment_supervoxel_map_arg Контейнер вывода. При ошибке карта пустая.
Определение в строке 127 файла lccp_segmentation.h.
Ссылки на pcl::LCCPSegmentation< PointT >::grouping_data_valid_ и pcl::LCCPSegmentation< PointT >::seg_label_to_sv_list_map_.
getSupervoxelToSegmentMap()
| inline |
Получить карту <ID_супервокселя, ID_сегмента>
- Параметры
-
[out] supervoxel_segment_map_arg Контейнер для вывода. В случае ошибки карта пуста.
Определение в строке 143 файла lccp_segmentation.h.
Ссылки на pcl::LCCPSegmentation< PointT >::grouping_data_valid_ и pcl::LCCPSegmentation< PointT >::sv_label_to_seg_label_map_.
getSVAdjacencyList()
| inline |
Получить граф смежности супервокселей с классифицированными ребрами (boost::adjacency_list).
- Параметры
-
[out] adjacency_list_arg Список смежности супервокселей с классифицированными (выпуклыми/вогнутыми) ребрами. В случае ошибки список пуст.
Определение в строке 185 файла lccp_segmentation.h.
Ссылки на pcl::LCCPSegmentation< PointT >::grouping_data_valid_ и pcl::LCCPSegmentation< PointT >::sv_adjacency_list_.
mergeSmallSegments()
| protected |
Сегменты, меньшие, чем min_segment_size_, объединяются с меткой наибольшего соседа.
Определение в строке 166 файла lccp_segmentation.hpp.
prepareSegmentation()
| protected |
Вызывается внутри setInputSupervoxels в основном для резервирования необходимой памяти.
- Параметры
-
[in] supervoxel_clusters_arg карта <метка супервокселя, супервоксели> [in] label_adjacency_arg Граф, определяющий отношения смежности супервокселей
Определение в строке 240 файла lccp_segmentation.hpp.
Ссылается на pcl::LCCPSegmentation< PointT >::setInputSupervoxels().
recursiveSegmentGrowing()
| protected |
Присваивает соседей точки запроса той же группе, что и точка запроса.
Рекурсивная часть doGrouping. Группировка выполняется путём обхода узлов в графе смежности в глубину.
- Параметры
-
[in] queryPointID Идентификатор точки, чьи соседи будут рассмотрены для группировки [in] group_label Идентификатор группы/сегмента, к которому относится запрошенная точка
Определение в строке 321 файла lccp_segmentation.hpp.
relabelCloud()
| void pcl::LCCPSegmentation< PointT >::relabelCloud | ( | pcl::PointCloud< pcl::PointXYZL > & | labeled_cloud_arg | ) |
Переопределяет облако с метками супервокселей вычисленными метками сегмента.
labeled_cloud_arg должен быть создан с помощью SupervoxelClustering::getLabeledCloud.
- Параметры
-
[in,out] labeled_cloud_arg Облако для переопределения меток
Определение в строке 110 файла lccp_segmentation.hpp.
reset()
| void pcl::LCCPSegmentation< PointT >::reset |
segment()
| void pcl::LCCPSegmentation< PointT >::segment |
Объединение суперпикселей с использованием локальной выпуклости.
Входные параметры генерируются с помощью класса SupervoxelClustering. Для получения результата используйте метод relabelCloud.
- Примечание
- Существует три способа получить сегментацию: relabelCloud, getSegmentToSupervoxelMap и getSupervoxelToSegmentMap.
Определение в строке 85 файла lccp_segmentation.hpp.
setConcavityToleranceThreshold()
| inline |
Установить порог для нормалей.
- Параметры
-
[in] concavity_tolerance_threshold_arg Угол допуска невыпуклости в градусах.
Определение в строке 201 файла lccp_segmentation.h.
Ссылки на pcl::LCCPSegmentation< PointT >::concavity_tolerance_threshold_.
setInputSupervoxels()
| inline |
Устанавливает кластеры суперпикселей и граф смежности для сегментации. Эти параметры генерируются с помощью класса SupervoxelClustering.
Для получения результата используйте метод segment.
- Параметры
-
[in] supervoxel_clusters_arg Словарь «метка суперпикселя — суперпиксель» [in] label_adjacency_arg Граф, определяющий отношения смежности суперпикселей
- Примечание
- Неявный вызов reset
Определение в строке 106 файла lccp_segmentation.h.
Ссылки на pcl::LCCPSegmentation< PointT >::prepareSegmentation() и pcl::LCCPSegmentation< PointT >::supervoxels_set_.
setKFactor()
| inline |
Устанавливает значение, используемое для k-выпуклости.
Для k>0 выпуклые связи между p_i и p_j требуют k общих соседей этих фрагментов, которые имеют выпуклую связь с обоими.
- Параметры
-
[in] k_factor_arg коэффициент, используемый для проверки расширенной выпуклости
Определение в строке 234 файла lccp_segmentation.h.
Ссылки на pcl::LCCPSegmentation< PointT >::k_factor_.
setMinSegmentSize()
| inline |
Установить значение min_segment_size_, используемое в mergeSmallSegments.
- Параметры
-
[in] min_segment_size_arg Сегменты меньше этого размера будут объединены
Определение в строке 242 файла lccp_segmentation.h.
Ссылки на pcl::LCCPSegmentation< PointT >::min_segment_size_.
setSanityCheck()
| inline |
Определяет, хотим ли мы использовать критерий проверки для аннулирования отдельных соединенных фрагментов.
- Параметры
-
[in] use_sanity_criterion_arg Определяет, выполняется ли проверка
Определение в строке 226 файла lccp_segmentation.h.
Ссылки на pcl::LCCPSegmentation< PointT >::use_sanity_check_.
setSmoothnessCheck()
| inline |
Определяет, выполняется ли проверка гладкости во время сегментации, пытаясь аннулировать края негладких соединённых рёбер (шаги).
Два суперпикселя негладкие, если расстояние между их плоскостями DIST > (ожидаемое_расстояние + smoothness_threshold_*voxel_resolution_). Для параллельных суперпикселей ожидаемое_расстояние равно нулю.
- Параметры
-
[in] use_smoothness_check_arg Определяет, используется ли проверка гладкости [in] voxel_res_arg Разрешение вокселей, используемое для суперпикселей, которые сегментируются [in] seed_res_arg Разрешение семян, используемое для суперпикселей, которые сегментируются [in] smoothness_threshold_arg Порог (/фактор подталкивания) для ограничения гладкости в соответствии с вышеприведённой формулой.
Определение в строке 212 файла lccp_segmentation.h.
Ссылается на pcl::LCCPSegmentation< PointT >::seed_resolution_, pcl::LCCPSegmentation< PointT >::smoothness_threshold_, pcl::LCCPSegmentation< PointT >::use_smoothness_check_ и pcl::LCCPSegmentation< PointT >::voxel_resolution_.
Документация данных-членов
concavity_tolerance_threshold_
| protected |
*** Параметры *** ///
Порог нормали в градусах [0,180], используемый для слияния
Определение в строке 300 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::getConcavityToleranceThreshold() и pcl::LCCPSegmentation< PointT >::setConcavityToleranceThreshold().
grouping_data_valid_
| protected |
Помечает, доступны ли данные для группирования (sv_adjacency_list_, sv_label_to_seg_label_map_, processed_).
Определение в строке 303 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::getSegmentAdjacencyMap(), pcl::LCCPSegmentation< PointT >::getSegmentToSupervoxelMap(), pcl::LCCPSegmentation< PointT >::getSupervoxelToSegmentMap() и pcl::LCCPSegmentation< PointT >::getSVAdjacencyList().
k_factor_
| protected |
Фактор, используемый для k-выпуклости.
Определение в строке 324 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setKFactor().
min_segment_size_
| protected |
Минимальный размер сегмента.
Определение в строке 327 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setMinSegmentSize().
processed_
| protected |
Хранит метки суперпикселей, которые уже посещались во время рекурсивной группировки.
- Примечание
- processed_[sv_Label] = false (по умолчанию)/true (уже обработано)
Определение в строке 331 файла lccp_segmentation.h.
seed_resolution_
| protected |
Разрешение семян суперпикселей (используется только для проверки гладкости)
Определение в строке 318 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setSmoothnessCheck().
seg_label_to_neighbor_set_map_
| protected |
отображение < ID сегмента, множество меток соседних сегментов >
Определение в строке 347 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::getSegmentAdjacencyMap().
seg_label_to_sv_list_map_
| protected |
отображение метки сегмента к множеству меток суперпикселей
Определение в строке 344 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::getSegmentToSupervoxelMap().
smoothness_threshold_
| protected |
Два суперпикселя не являются плавными, если расстояние между их плоскостями DIST > (ожидаемое_расстояние + smoothness_threshold_*разрешение_вокселя).
Для параллельных суперпикселей ожидаемое_расстояние равно нулю.
Определение в строке 312 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setSmoothnessCheck().
supervoxels_set_
| protected |
Помечает, установлены ли суперпиксели вызовом setInputSupervoxels.
Определение в строке 306 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setInputSupervoxels().
sv_adjacency_list_
| protected |
Граф смежности с метками суперпикселей в качестве узлов и ребрами между смежными суперпикселями.
Определение в строке 334 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::getSVAdjacencyList().
sv_label_to_seg_label_map_
| protected |
Хранение соответствия между исходными метками суперпикселей и новыми метками сегментации.
- Примечание
- sv_label_to_seg_label_map_[old_labelID] = new_labelID
Определение в строке 341 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::getSupervoxelToSegmentMap().
sv_label_to_supervoxel_map_
| protected |
отображение меток суперпикселей на объекты суперпикселей
Определение в строке 337 файла lccp_segmentation.h.
use_sanity_check_
| protected |
Определяет, используем ли мы проверку корректности, которая пытается найти и аннулировать изолированные соединенные области.
Определение в строке 315 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setSanityCheck().
use_smoothness_check_
| protected |
Определяет, используется ли проверка плавности во время сегментации.
Определение в строке 309 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setSmoothnessCheck().
voxel_resolution_
| protected |
Разрешение объёма, используемое для построения суперпикселей (используется только для проверки плавности)
Определение в строке 321 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setSmoothnessCheck().
The documentation for this class was generated from the following files:
- pcl/segmentation/lccp_segmentation.h
- pcl/segmentation/impl/lccp_segmentation.hpp
© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_l_c_c_p_segmentation.html