Простой алгоритм сегментации, разбивающий граф супервокселей на группы локально выпуклых связанных супервокселей, разделённых вогнутыми границами. Подробнее...
#include <pcl/segmentation/lccp_segmentation.h>
Общедоступные типы | |
| 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 |
| Получить map<SegmentID, std::set<SuperVoxel IDs> > Подробнее... |
|
| void | getSupervoxelToSegmentMap (std::map< std::uint32_t, std::uint32_t > &supervoxel_segment_map_arg) const |
| Получить map<Supervoxel_ID, Segment_ID> Подробнее... |
|
| void | getSegmentAdjacencyMap (std::map< std::uint32_t, std::set< std::uint32_t > > &segment_adjacency_map_arg) |
| Получить map <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_ {10} |
| *** Параметры *** /// Подробнее... |
|
| bool | grouping_data_valid_ {false} |
| Указывает, доступны ли корректные данные группировки (sv_adjacency_list_, sv_label_to_seg_label_map_, processed_). Подробнее... |
|
| bool | supervoxels_set_ {false} |
| Указывает, были ли заданы супервоксели вызовом setInputSupervoxels. Подробнее... |
|
| bool | use_smoothness_check_ {false} |
| Определяет, используется ли проверка гладкости при сегментации. Подробнее... |
|
| float | smoothness_threshold_ {0.1} |
| Два супервокселя считаются негладкими, если расстояние между их плоскостями DIST > (ожидаемое_расстояние + smoothness_threshold_*voxel_resolution_). Подробнее... |
|
| bool | use_sanity_check_ {false} |
| Определяет, используется ли проверка корректности, которая пытается найти и признать недействительными изолированные связные участки. Подробнее... |
|
| float | seed_resolution_ {0.0f} |
| Разрешение начальных точек супервокселей (используется только для проверки гладкости) Подробнее... |
|
| float | voxel_resolution_ {0.0f} |
| Разрешение вокселей, используемое для построения супервокселей (используется только для проверки гладкости) Подробнее... |
|
| std::uint32_t | k_factor_ {0} |
| Множитель, используемый для k-выпуклости. Подробнее... |
|
| std::uint32_t | min_segment_size_ {0} |
| Минимальный размер сегмента. Подробнее... |
|
| 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_ |
| Хранит соответствие между исходными метками супервокселей и новыми метками сегментации. Подробнее... |
|
| std::map< std::uint32_t, std::set< std::uint32_t > > | seg_label_to_sv_list_map_ |
| Отображение метки сегмента на набор меток супервокселей Подробнее... |
|
| std::map< std::uint32_t, std::set< std::uint32_t > > | seg_label_to_neighbor_set_map_ |
| Отображение < SegmentID, std::set< меток соседних сегментов> > Подробнее... |
|
Подробное описание
template<typename PointT>
class pcl::LCCPSegmentation< PointT >
Простой алгоритм сегментации, разбивающий граф супервокселей на группы локально выпуклых связных супервокселей, разделённые вогнутыми границами.
- Примечание
- Если вы используете этот алгоритм в научной работе, пожалуйста, укажите следующую публикацию: S. C. Stein, M. Schoeler, J. Papon, F. Woergoetter Объект Partitioning using Local Convexity In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2014
Определение в строке 57 файла lccp_segmentation.h.
Документация псевдонимов типов-членов
AdjacencyIterator
| using pcl::LCCPSegmentation< PointT >::AdjacencyIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::adjacency_iterator |
Определение в строке 82 файла lccp_segmentation.h.
EdgeID
| using pcl::LCCPSegmentation< PointT >::EdgeID = typename boost::graph_traits<SupervoxelAdjacencyList>::edge_descriptor |
Определение в строке 87 файла lccp_segmentation.h.
EdgeIterator
| using pcl::LCCPSegmentation< PointT >::EdgeIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::edge_iterator |
Определение в строке 85 файла lccp_segmentation.h.
OutEdgeIterator
| using pcl::LCCPSegmentation< PointT >::OutEdgeIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::out_edge_iterator |
Определение в строке 86 файла lccp_segmentation.h.
SupervoxelAdjacencyList
| using pcl::LCCPSegmentation< PointT >::SupervoxelAdjacencyList = boost::adjacency_list<boost::setS, boost::setS, boost::undirectedS, std::uint32_t, EdgeProperties> |
Определение в строке 80 файла lccp_segmentation.h.
VertexID
| using pcl::LCCPSegmentation< PointT >::VertexID = typename boost::graph_traits<SupervoxelAdjacencyList>::vertex_descriptor |
Определение в строке 84 файла lccp_segmentation.h.
VertexIterator
| using pcl::LCCPSegmentation< PointT >::VertexIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::vertex_iterator |
Определение в строке 81 файла lccp_segmentation.h.
Документация конструктора и деструктора
LCCPSegmentation()
| по умолчанию |
~LCCPSegmentation()
| виртуальныйпо умолчанию |
Документация функций-членов
applyKconvexity()
| защищённый |
Связи считаются выпуклыми, только если это верно как минимум для k_arg общих соседей двух участков.
Чтобы использовать эту функцию, вызовите setKFactor перед вызовом segment.
- Параметры
-
[in] k_arg Множитель, используемый для расширенной проверки выпуклости
Определение в строке 339 файла lccp_segmentation.hpp.
calculateConvexConnections()
| защищённый |
Вычисляет выпуклость рёбер и сохраняет её в графе смежности.
- Параметры
-
[in,out] adjacency_list_arg Список смежности супервокселей
Определение в строке 396 файла lccp_segmentation.hpp.
computeSegmentAdjacency()
| защищённый |
Вычисляет смежность сегментов.
Определение в строке 123 файла lccp_segmentation.hpp.
Используется в pcl::LCCPSegmentation< PointT >::getSegmentAdjacencyMap().
connIsConvex()
| защищённый |
Возвращает true, если связь между source и target является выпуклой.
- Параметры
-
[in] source_label_arg Метка одного из супервокселей, связанных с проверяемым ребром [in] target_label_arg Метка другого супервокселя, связанного с проверяемым ребром [out] normal_angle Угол между source и target
- Возвращает
- True, если связь выпуклая
Определение в строке 416 файла lccp_segmentation.hpp.
Ссылки: pcl::Supervoxel< PointT >::centroid_, pcl::getAngle3D() и pcl::Supervoxel< PointT >::normal_.
doGrouping()
| защищённый |
Выполняет поиск в глубину по графу и рекурсивно объединяет все супервоксели, соединённые выпуклыми связями.
- Примечание
- Вершинами списка смежности супервокселей являются центроиды супервокселей
Определение в строке 278 файла lccp_segmentation.hpp.
getConcavityToleranceThreshold()
| встроенный |
Возвращает пороговое значение для нормали.
- Возвращает
- Текущее установленное угловое значение допуска вогнутости в [градусах]
Определение в строке 174 файла lccp_segmentation.h.
Ссылка на pcl::LCCPSegmentation< PointT >::concavity_tolerance_threshold_.
getSegmentAdjacencyMap()
| inline |
Получить карту <SegmentID, std::set<Neighboring SegmentIDs> >
- Параметры
-
[out] segment_adjacency_map_arg Карта < SegmentID, std::set< Neighboring SegmentIDs> >. В случае ошибки карта пуста.
Определение в строке 156 файла 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> >
- Параметры
-
[out] segment_supervoxel_map_arg Выходной контейнер. В случае ошибки карта пуста.
Определение в строке 124 файла lccp_segmentation.h.
Ссылки: pcl::LCCPSegmentation< PointT >::grouping_data_valid_ и pcl::LCCPSegmentation< PointT >::seg_label_to_sv_list_map_.
getSupervoxelToSegmentMap()
| inline |
Получить карту<Supervoxel_ID, Segment_ID>
- Параметры
-
[out] supervoxel_segment_map_arg Выходной контейнер. В случае ошибки карта пуста.
Определение в строке 140 файла 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 Список смежности супервокселей с классифицированными (выпуклыми/вогнутыми) рёбрами. В случае ошибки список пуст.
Определение в строке 182 файла lccp_segmentation.h.
Ссылки: pcl::LCCPSegmentation< PointT >::grouping_data_valid_ и pcl::LCCPSegmentation< PointT >::sv_adjacency_list_.
mergeSmallSegments()
| protected |
Сегменты размером меньше min_segment_size_ объединяются с меткой самого большого соседнего сегмента.
Определение в строке 154 файла lccp_segmentation.hpp.
prepareSegmentation()
| protected |
Вызывается главным образом внутри setInputSupervoxels для резервирования необходимой памяти.
- Параметры
-
[in] supervoxel_clusters_arg Карта < метки супервокселей, супервоксели > [in] label_adjacency_arg Граф, задающий отношения смежности супервокселей
Определение в строке 228 файла lccp_segmentation.hpp.
Используется в: pcl::LCCPSegmentation< PointT >::setInputSupervoxels().
recursiveSegmentGrowing()
| protected |
Назначает соседям точки запроса ту же группу, что и самой точке запроса.
Рекурсивная часть doGrouping. Группировка выполняется обходом узлов графа смежности в глубину.
- Параметры
-
[in] queryPointID Идентификатор точки, соседи которой будут рассматриваться для группировки [in] group_label Идентификатор группы/сегмента, которому принадлежит запрашиваемая точка
Определение в строке 309 файла 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 Облако, которому нужно назначить новые метки
Определение в строке 98 файла lccp_segmentation.hpp.
reset()
| void pcl::LCCPSegmentation< PointT >::reset |
segment()
| void pcl::LCCPSegmentation< PointT >::segment |
Объединяет супервоксели на основе локальной выпуклости.
Входные параметры формируются с помощью класса SupervoxelClustering. Чтобы получить результат, используйте метод relabelCloud.
- Примечание
- После этого сегментацию можно получить тремя способами: relabelCloud, getSegmentToSupervoxelMap и getSupervoxelToSegmentMap.
Определение в строке 73 файла lccp_segmentation.hpp.
setConcavityToleranceThreshold()
| inline |
Задать порог для нормалей.
- Параметры
-
[in] concavity_tolerance_threshold_arg Задаваемый угол допуска вогнутости в [градусах]
Определение в строке 198 файла lccp_segmentation.h.
Ссылки: pcl::LCCPSegmentation< PointT >::concavity_tolerance_threshold_.
setInputSupervoxels()
| inline |
Задать кластеры супервокселей и граф смежности для сегментации. Эти параметры формируются с помощью класса SupervoxelClustering.
Чтобы получить результат, используйте метод segment.
- Параметры
-
[in] supervoxel_clusters_arg Карта < метки супервокселей, супервоксели > [in] label_adjacency_arg Граф, задающий отношения смежности супервокселей
- Примечание
- Неявно вызывает reset
Определение в строке 103 файла 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 Коэффициент для расширенной проверки выпуклости
Определение в строке 231 файла lccp_segmentation.h.
setMinSegmentSize()
| inline |
Задать значение min_segment_size_, используемое в mergeSmallSegments.
- Параметры
-
[in] min_segment_size_arg Сегменты меньшего размера будут объединены
Определение в строке 239 файла lccp_segmentation.h.
setSanityCheck()
| inline |
Определяет, следует ли использовать критерий корректности для исключения единичных связанных патчей.
- Параметры
-
[in] use_sanity_criterion_arg Определяет, выполняется ли проверка корректности
Определение в строке 223 файла lccp_segmentation.h.
setSmoothnessCheck()
| inline |
Определяет, выполняется ли при сегментации проверка гладкости, призванная исключать рёбра между негладко соединёнными участками (ступеньками).
Два супервокселя считаются негладкими, если расстояние между их плоскостями DIST > (ожидаемое расстояние + smoothness_threshold_*voxel_resolution_). Для параллельных супервокселей ожидаемое расстояние равно нулю.
- Параметры
-
[in] use_smoothness_check_arg Определяет, используется ли проверка гладкости [in] voxel_res_arg Разрешение вокселей, используемое для сегментируемых супервокселей [in] seed_res_arg Разрешение начальных точек, используемое для сегментируемых супервокселей [in] smoothness_threshold_arg Порог (коэффициент допуска) ограничения гладкости согласно приведённой выше формуле.
Определение в строке 209 файла 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], используемый при объединении
Определение в строке 297 файла 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_).
Определение в строке 300 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::getSegmentAdjacencyMap(), pcl::LCCPSegmentation< PointT >::getSegmentToSupervoxelMap(), pcl::LCCPSegmentation< PointT >::getSupervoxelToSegmentMap() и pcl::LCCPSegmentation< PointT >::getSVAdjacencyList().
k_factor_
| protected |
Фактор, используемый для k-выпуклости.
Определение в строке 321 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setKFactor().
min_segment_size_
| protected |
Минимальный размер сегмента.
Определение в строке 324 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setMinSegmentSize().
processed_
| protected |
Хранит информацию о том, какие метки супервокселей уже были посещены во время рекурсивной группировки.
- Примечание
- processed_[sv_Label] = false (по умолчанию)/true (уже обработано)
Определение в строке 328 файла lccp_segmentation.h.
seed_resolution_
| protected |
Разрешение семян супервокселей (используется только для проверки гладкости)
Определение в строке 315 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setSmoothnessCheck().
seg_label_to_neighbor_set_map_
| protected |
отображение < SegmentID, std::set< меток соседних сегментов> >
Определение в строке 344 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::getSegmentAdjacencyMap().
seg_label_to_sv_list_map_
| protected |
отображение меток сегментов в набор меток меток супервокселей
Определение в строке 341 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::getSegmentToSupervoxelMap().
smoothness_threshold_
| protected |
Два супервокселя считаются негладкими, если расстояние между их плоскостями DIST > (ожидаемое расстояние + smoothness_threshold_*voxel_resolution_).
Для параллельных супервокселей ожидаемое расстояние равно нулю.
Определение в строке 309 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setSmoothnessCheck().
supervoxels_set_
| protected |
Указывает, были ли заданы супервоксели вызовом setInputSupervoxels.
Определение в строке 303 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setInputSupervoxels().
sv_adjacency_list_
| protected |
Граф смежности, в котором узлами являются метки супервокселей, а рёбра соединяют соседние супервоксели.
Определение в строке 331 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::getSVAdjacencyList().
sv_label_to_seg_label_map_
| protected |
Хранит соответствие между исходными метками супервокселей и новыми метками сегментации.
- Примечание
- sv_label_to_seg_label_map_[old_labelID] = new_labelID
Определение в строке 338 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::getSupervoxelToSegmentMap().
sv_label_to_supervoxel_map_
| protected |
отображение меток супервокселей на объекты супервокселей
Определение в строке 334 файла lccp_segmentation.h.
use_sanity_check_
| protected |
Определяет, используется ли проверка корректности, которая пытается обнаружить и исключить отдельные связные участки.
Определение в строке 312 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setSanityCheck().
use_smoothness_check_
| protected |
Определяет, используется ли проверка гладкости при сегментации.
Определение в строке 306 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setSmoothnessCheck().
voxel_resolution_
| protected |
Разрешение вокселей, использованное для построения супервокселей (используется только для проверки гладкости)
Определение в строке 318 файла lccp_segmentation.h.
Используется в pcl::LCCPSegmentation< PointT >::setSmoothnessCheck().
Документация для этого класса сгенерирована из следующих файлов:
- 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