Spec-Zone.ru › PointCloudLibrary

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

Обзор

Библиотека pcl_segmentation содержит алгоритмы для сегментации облака точек на отдельные кластеры. Эти алгоритмы лучше всего подходят для обработки облака точек, состоящего из ряда пространственно изолированных областей. В таких случаях кластеризация часто используется для разделения облака на его составляющие части, которые затем могут быть обработаны независимо.

Требования

  • common
  • search
  • sample_consensus
  • kdtree
  • octree
  • features

Классы

class pcl::gpu::EuclideanClusterExtraction< PointT >
EuclideanClusterExtraction представляет класс сегментации для выделения кластеров в евклидовом смысле, в зависимости от pcl::gpu::octree Подробнее...
class pcl::gpu::EuclideanLabeledClusterExtraction< PointT >
EuclideanLabeledClusterExtraction представляет класс сегментации для выделения кластеров в евклидовом смысле, в зависимости от pcl::gpu::octree Подробнее...
class pcl::ConditionalEuclideanClustering< PointT >
ConditionalEuclideanClustering выполняет сегментацию на основе евклидова расстояния и пользовательского условия кластеризации. Подробнее...
class pcl::CPCSegmentation< PointT >
Алгоритм сегментации, разделяющий граф суперпикселей. Подробнее...
class pcl::EuclideanClusterExtraction< PointT >
EuclideanClusterExtraction представляет класс сегментации для выделения кластеров в евклидовом смысле. Подробнее...
class pcl::LabeledEuclideanClusterExtraction< PointT >
LabeledEuclideanClusterExtraction представляет класс сегментации для выделения кластеров в евклидовом смысле, с информацией о метке. Подробнее...
class pcl::ExtractPolygonalPrismData< PointT >
ExtractPolygonalPrismData использует набор индексов точек, которые представляют плоскую модель, и вместе с заданной высотой генерирует 3D многоугольный призму. Подробнее...
class pcl::GrabCut< PointT >
Реализация сегментации GrabCut в "GrabCut — Interactive Foreground Extraction using Iterated Graph Cuts" Карстена Ротера, Владимира Колмогорова и Эндрю Блейка. Подробнее...
class pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >
Многомерная сегментация графа с помощью случайных блужданий. Подробнее...
class pcl::LCCPSegmentation< PointT >
Простой алгоритм сегментации, разбивающий граф суперпикселей на группы локально выпуклых соединенных суперпикселей, разделенных вогнутыми границами. Подробнее...
class pcl::RegionGrowing< PointT, NormalT >
Реализует хорошо известный алгоритм Region Growing, используемый для сегментации. Подробнее...
class pcl::RegionGrowingRGB< PointT, NormalT >
Реализует хорошо известный алгоритм Region Growing, используемый для сегментации на основе цвета точек. Подробнее...
class pcl::SACSegmentation< PointT >
SACSegmentation представляет класс сегментации Nodelet для методов и моделей согласия выборок, в том смысле, что он просто создает обёртку Nodelet для сегментации на основе SAC общего назначения. Подробнее...
class pcl::SACSegmentationFromNormals< PointT, PointNT >
SACSegmentationFromNormals представляет класс PCL сегментации nodelet для методов и моделей согласия выборок, которые требуют использования нормалей поверхности для оценки. Подробнее...
class pcl::SeededHueSegmentation
SeededHueSegmentation. Подробнее...
class pcl::SegmentDifferences< PointT >
SegmentDifferences получает разницу между двумя пространственно выровненными облаками точек и возвращает разницу между ними для максимального заданного порога расстояния. Подробнее...
class pcl::SupervoxelClustering< PointT >
Реализует алгоритм суперпикселей, основанный на структуре вокселей, нормалях и значениях rgb. Подробнее...

Функции

bool pcl::gpu::comparePointClusters (const pcl::PointIndices &a, const pcl::PointIndices &b)
Метод сортировки кластеров (для std::sort). More...
bool pcl::gpu::compareLabeledPointClusters (const pcl::PointIndices &a, const pcl::PointIndices &b)
Метод сортировки кластеров (для std::sort). More...
template<typename PointT >
void pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const typename search::Search< PointT >::Ptr &tree, float tolerance, std::vector< PointIndices > &clusters, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)())
Разложить область пространства на кластеры на основе евклидова расстояния между точками. More...
template<typename PointT >
void pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const Indices &indices, const typename search::Search< PointT >::Ptr &tree, float tolerance, std::vector< PointIndices > &clusters, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)())
Разложить область пространства на кластеры на основе евклидова расстояния между точками. More...
template<typename PointT , typename Normal >
void pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const PointCloud< Normal > &normals, float tolerance, const typename KdTree< PointT >::Ptr &tree, std::vector< PointIndices > &clusters, double eps_angle, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)())
Разложить область пространства на кластеры на основе евклидова расстояния между точками и углового отклонения нормалей между точками. More...
template<typename PointT , typename Normal >
void pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const PointCloud< Normal > &normals, const Indices &indices, const typename KdTree< PointT >::Ptr &tree, float tolerance, std::vector< PointIndices > &clusters, double eps_angle, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)())
Разложить область пространства на кластеры на основе евклидова расстояния между точками и углового отклонения нормалей между точками. More...
bool pcl::comparePointClusters (const pcl::PointIndices &a, const pcl::PointIndices &b)
Метод сортировки кластеров (для std::sort). More...
template<typename PointT >
void pcl::extractLabeledEuclideanClusters (const PointCloud< PointT > &cloud, const typename search::Search< PointT >::Ptr &tree, float tolerance, std::vector< std::vector< PointIndices >> &labeled_clusters, unsigned int min_pts_per_cluster, unsigned int max_pts_per_cluster, unsigned int max_label)
Разложить область пространства на кластеры на основе евклидова расстояния между точками. More...
template<typename PointT >
void pcl::extractLabeledEuclideanClusters (const PointCloud< PointT > &cloud, const typename search::Search< PointT >::Ptr &tree, float tolerance, std::vector< std::vector< PointIndices >> &labeled_clusters, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=std::numeric_limits< unsigned int >::max())
Разложить область пространства на кластеры на основе евклидова расстояния между точками. More...
bool pcl::compareLabeledPointClusters (const pcl::PointIndices &a, const pcl::PointIndices &b)
Метод сортировки кластеров (для std::sort). Подробнее...
template<typename PointT >
bool pcl::isPointIn2DPolygon (const PointT &point, const pcl::PointCloud< PointT > &polygon)
Общий метод проверки, находится ли 3D-точка внутри или вне заданного 2D-многоугольника. Подробнее...
template<typename PointT >
bool pcl::isXYPointIn2DXYPolygon (const PointT &point, const pcl::PointCloud< PointT > &polygon)
Проверка, находится ли 2D-точка (рассматриваются только координаты X и Y) внутри или вне заданного многоугольника. Подробнее...
template<class Graph >
bool pcl::segmentation::randomWalker (Graph &graph)
Сегментация графа с помощью случайных блужданий. Подробнее...
template<class Graph , class EdgeWeightMap , class VertexColorMap >
bool pcl::segmentation::randomWalker (Graph &graph, EdgeWeightMap weights, VertexColorMap colors)
Сегментация графа с помощью случайных блужданий. Подробнее...
template<class Graph , class EdgeWeightMap , class VertexColorMap >
bool pcl::segmentation::randomWalker (Graph &graph, EdgeWeightMap weights, VertexColorMap colors, Eigen::Matrix< typename boost::property_traits< EdgeWeightMap >::value_type, Eigen::Dynamic, Eigen::Dynamic > &potentials, std::map< typename boost::property_traits< VertexColorMap >::value_type, std::size_t > &colors_to_columns_map)
Сегментация графа с помощью случайных блужданий. Подробнее...
void pcl::seededHueSegmentation (const PointCloud< PointXYZRGB > &cloud, const search::Search< PointXYZRGB >::Ptr &tree, float tolerance, PointIndices &indices_in, PointIndices &indices_out, float delta_hue=0.0)
Разбиение области пространства на кластеры на основе евклидова расстояния между точками. Подробнее...
void pcl::seededHueSegmentation (const PointCloud< PointXYZRGB > &cloud, const search::Search< PointXYZRGBL >::Ptr &tree, float tolerance, PointIndices &indices_in, PointIndices &indices_out, float delta_hue=0.0)
Разбиение области пространства на кластеры на основе евклидова расстояния между точками. Подробнее...
template<typename PointT >
void pcl::getPointCloudDifference (const pcl::PointCloud< PointT > &src, double threshold, const typename pcl::search::Search< PointT >::Ptr &tree, pcl::PointCloud< PointT > &output)
Получение разницы между двумя согласованными облаками точек как облако точек, заданное порогом расстояния. Подробнее...

Функция документации

compareLabeledPointClusters() [1/2]

bool pcl::gpu::compareLabeledPointClusters ( const pcl::PointIndices & a,
const pcl::PointIndices & b
)
inline

#include </__w/1/s/gpu/segmentation/include/pcl/gpu/segmentation/gpu_extract_labeled_clusters.h>

Метод сортировки кластеров (для std::sort).

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

Ссылки на pcl::PointIndices::indices.

Используется в pcl::gpu::EuclideanLabeledClusterExtraction< PointT >::extract().

compareLabeledPointClusters() [2/2]

bool pcl::compareLabeledPointClusters ( const pcl::PointIndices & a,
const pcl::PointIndices & b
)
inline

#include <pcl/segmentation/extract_labeled_clusters.h>

Метод сортировки кластеров (для std::sort).

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

Ссылки на pcl::PointIndices::indices.

comparePointClusters() [1/2]

bool pcl::gpu::comparePointClusters ( const pcl::PointIndices & a,
const pcl::PointIndices & b
)
inline

#include </__w/1/s/gpu/segmentation/include/pcl/gpu/segmentation/gpu_extract_clusters.h>

Метод сортировки кластеров (для std::sort).

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

Ссылки на pcl::PointIndices::indices.

Используется в pcl::EuclideanClusterExtraction< PointT >::extract() и pcl::LabeledEuclideanClusterExtraction< PointT >::extract().

comparePointClusters() [2/2]

bool pcl::comparePointClusters ( const pcl::PointIndices & a,
const pcl::PointIndices & b
)
inline

#include <pcl/segmentation/extract_clusters.h>

Метод сортировки кластеров (для std::sort).

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

Ссылки на pcl::PointIndices::indices.

extractEuclideanClusters() [1/4]

template<typename PointT >
void pcl::extractEuclideanClusters ( const PointCloud< PointT > & cloud,
const Indices & indices,
const typename search::Search< PointT >::Ptr & tree,
float tolerance,
std::vector< PointIndices > & clusters,
unsigned int min_pts_per_cluster = 1,
unsigned int max_pts_per_cluster = (std::numeric_limits<int>::max) ()
)

#include <pcl/segmentation/extract_clusters.h>

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

Параметры
cloud сообщение облака точек
indices список индексов точек для использования из cloud
tree пространственный локатор (например, kd-дерево), используемый для поиска ближайших соседей
Примечание
дерево должно быть создано как пространственный локатор для cloud и indices
Параметры
tolerance допуск пространственного кластера как мера в евклидовом пространстве L2
clusters результирующие кластеры, содержащие индексы точек (как вектор PointIndices)
min_pts_per_cluster минимальное количество точек, которые может содержать кластер (по умолчанию: 1)
max_pts_per_cluster максимальное количество точек, которые может содержать кластер (по умолчанию: максимальное значение int)

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

Ссылки на pcl::search::Search< PointT >::getIndices(), pcl::search::Search< PointT >::getInputCloud(), pcl::search::Search< PointT >::getSortedResults(), pcl::PointCloud< PointT >::header, pcl::PointIndices::header, pcl::PointIndices::indices, pcl::search::Search< PointT >::radiusSearch() и pcl::PointCloud< PointT >::size().

extractEuclideanClusters() [2/4]

template<typename PointT , typename Normal >
void pcl::extractEuclideanClusters ( const PointCloud< PointT > & облако_точек,
const PointCloud< Normal > & нормали,
const Indices & индексы,
const typename KdTree< PointT >::Ptr & дерево,
float толерантность,
std::vector< PointIndices > & кластеры,
double eps_угол,
unsigned int min_точек_в_кластере = 1,
unsigned int max_точек_в_кластере = (std::numeric_limits<int>::max) ()
)

#include <pcl/segmentation/extract_clusters.h>

Разбиение области пространства на кластеры на основе евклидова расстояния между точками и углового отклонения нормалей между точками.

Каждая точка, добавленная в кластер, является начальной точкой для поиска других точек в радиусе. Каждая точка в радиусе сравнивается с начальной точкой по нормальному углу и евклидовому расстоянию. Если оба значения меньше соответствующего порога, точка добавляется в кластер. В целом, алгоритм кластеризации останавливается на поверхностях с резкими границами, а не на гладких поверхностях.

Parameters
облако_точек сообщение облака точек
нормали сообщение облака точек, содержащее информацию о нормалях
индексы список индексов точек для использования из облако_точек
дерево пространственный локатор (например, kd-дерево), используемый для поиска ближайших соседей
Примечание
дерево должно быть создано как пространственный локатор для облако_точек
Parameters
толерантность пространственная толерантность кластера как мера в евклидовом пространстве L2
кластеры результирующие кластеры, содержащие индексы точек (как PointIndices)
eps_угол максимальное допустимое различие между нормалями в радианах для роста кластера/региона
min_точек_в_кластере минимальное количество точек, которые может содержать кластер (по умолчанию: 1)
max_точек_в_кластере максимальное количество точек, которые может содержать кластер (по умолчанию: максимальное целое число)

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

Ссылки на pcl::KdTree< PointT >::getIndices(), pcl::KdTree< PointT >::getInputCloud(), pcl::PointCloud< PointT >::header, pcl::PointIndices::header, pcl::PointIndices::indices, pcl::PointCloud< PointT >::push_back(), pcl::KdTree< PointT >::radiusSearch(), и pcl::PointCloud< PointT >::size().

extractEuclideanClusters() [3/4]

template<typename PointT , typename Normal >
void pcl::extractEuclideanClusters ( const PointCloud< PointT > & облако_точек,
const PointCloud< Normal > & нормали,
float толерантность,
const typename KdTree< PointT >::Ptr & дерево,
std::vector< PointIndices > & кластеры,
double eps_угол,
unsigned int min_точек_в_кластере = 1,
unsigned int max_точек_в_кластере = (std::numeric_limits<int>::max) ()
)

#include <pcl/segmentation/extract_clusters.h>

Разбиение области пространства на кластеры на основе евклидова расстояния между точками и углового отклонения нормалей между точками.

Каждая точка, добавленная в кластер, является начальной точкой для поиска других точек в радиусе. Каждая точка в радиусе сравнивается с начальной точкой по нормальному углу и евклидовому расстоянию. Если оба значения меньше соответствующего порога, точка добавляется в кластер. В целом, алгоритм кластеризации останавливается на поверхностях с резкими границами, а не на гладких поверхностях.

Parameters
облако_точек сообщение облака точек
нормали сообщение облака точек, содержащее информацию о нормалях
дерево пространственный локатор (например, kd-дерево), используемый для поиска ближайших соседей
Примечание
дерево должно быть создано как пространственный локатор для облако_точек
Parameters
толерантность пространственная толерантность кластера как мера в евклидовом пространстве L2
кластеры результирующие кластеры, содержащие индексы точек (как вектор PointIndices)
eps_угол максимальное допустимое различие между нормалями в радианах для роста кластера/региона
min_точек_в_кластере минимальное количество точек, которые может содержать кластер (по умолчанию: 1)
max_точек_в_кластере максимальное количество точек, которые может содержать кластер (по умолчанию: максимальное целое число)

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

Ссылки на pcl::KdTree< PointT >::getInputCloud(), pcl::PointCloud< PointT >::header, pcl::PointIndices::header, pcl::PointIndices::indices, pcl::PointCloud< PointT >::push_back(), pcl::KdTree< PointT >::radiusSearch(), и pcl::PointCloud< PointT >::size().

extractEuclideanClusters() [4/4]

template<typename PointT >
void pcl::extractEuclideanClusters ( const PointCloud< PointT > & облако,
const typename search::Search< PointT >::Ptr & дерево,
float tolerance,
std::vector< PointIndices > & кластеры,
unsigned int min_pts_per_cluster = 1,
unsigned int max_pts_per_cluster = (std::numeric_limits<int>::max) ()
)

#include <pcl/segmentation/extract_clusters.h>

Разбиение области пространства на кластеры на основе евклидового расстояния между точками.

Параметры
облако сообщение облака точек
дерево пространственный локатор (например, kd-дерево), используемый для поиска ближайших соседей
Примечание
дерево должно быть создано как пространственный локатор для облако
Параметры
tolerance пространственная толерантность кластеризации как мера в евклидовом пространстве L2
кластеры результирующие кластеры, содержащие индексы точек (как вектор PointIndices)
min_pts_per_cluster минимальное количество точек в кластере (по умолчанию: 1)
max_pts_per_cluster максимальное количество точек в кластере (по умолчанию: максимальное целое число)

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

Ссылки на pcl::search::Search< PointT >::getInputCloud(), pcl::search::Search< PointT >::getSortedResults(), pcl::PointCloud< PointT >::header, pcl::PointIndices::header, pcl::PointIndices::indices, pcl::search::Search< PointT >::radiusSearch(), и pcl::PointCloud< PointT >::size().

Ссылается на pcl::EuclideanClusterExtraction< PointT >::extract().

extractLabeledEuclideanClusters() [1/2]

template<typename PointT >
void pcl::extractLabeledEuclideanClusters ( const PointCloud< PointT > & облако,
const typename search::Search< PointT >::Ptr & дерево,
float tolerance,
std::vector< std::vector< PointIndices >> & мет_кластеры,
unsigned int min_pts_per_cluster,
unsigned int max_pts_per_cluster,
unsigned int max_label
)

#include <pcl/segmentation/extract_labeled_clusters.h>

Разбиение области пространства на кластеры на основе евклидового расстояния между точками.

Параметры
[in] облако сообщение облака точек
[in] дерево пространственный локатор (например, kd-дерево), используемый для поиска ближайших соседей
Примечание
дерево должно быть создано как пространственный локатор для облако
Параметры
[in] tolerance пространственная толерантность кластеризации как мера в евклидовом пространстве L2
[out] мет_кластеры результирующие кластеры, содержащие индексы точек (как вектор PointIndices)
[in] min_pts_per_cluster минимальное количество точек в кластере (по умолчанию: 1)
[in] max_pts_per_cluster максимальное количество точек в кластере (по умолчанию: максимальное целое число)
[in] max_label
Устарело:
Планируется к удалению в версии 1.14: "Использование max_label устарело"

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

Ссылается на pcl::LabeledEuclideanClusterExtraction< PointT >::extract().

extractLabeledEuclideanClusters() [2/2]

template<typename PointT >
void pcl::extractLabeledEuclideanClusters ( const PointCloud< PointT > & cloud,
const typename search::Search< PointT >::Ptr & tree,
float tolerance,
std::vector< std::vector< PointIndices >> & labeled_clusters,
unsigned int min_pts_per_cluster = 1,
unsigned int max_pts_per_cluster = std::numeric_limits<unsigned int>::max()
)

#include <pcl/segmentation/extract_labeled_clusters.h>

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

Параметры
[вход] cloud сообщение облака точек
[вход] tree пространственный локатор (например, kd-дерево), используемый для поиска ближайших соседей
Примечание
дерево должно быть создано как пространственный локатор для cloud
Параметры
[вход] tolerance пространственная пороговая величина кластеризации как мера в евклидовом пространстве L2
[выход] labeled_clusters результирующие кластеры, содержащие индексы точек (в виде вектора PointIndices)
[вход] min_pts_per_cluster минимальное количество точек, которое может содержать кластер (по умолчанию: 1)
[вход] max_pts_per_cluster максимальное количество точек, которое может содержать кластер (по умолчанию: максимальное целое число)

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

Ссылки на pcl::search::Search< PointT >::getInputCloud(), pcl::PointCloud< PointT >::header, pcl::PointIndices::header, pcl::PointIndices::indices, pcl::search::Search< PointT >::radiusSearch(), и pcl::PointCloud< PointT >::size().

getPointCloudDifference()

template<typename PointT >
void pcl::getPointCloudDifference ( const pcl::PointCloud< PointT > & src,
double threshold,
const typename pcl::search::Search< PointT >::Ptr & tree,
pcl::PointCloud< PointT > & output
)

#include <pcl/segmentation/segment_differences.h>

Получение разницы между двумя совмещенными облаками точек как облако точек, заданной пороговой величиной расстояния.

Параметры
src исходное облако точек
threshold пороговая величина расстояния (допуск) для соответствий точек. (например, проверить, если у точки p1 из src есть соответствие > порога с точкой p2 из tgt)
tree пространственный локатор (например, kd-дерево), построенный над целевым облаком точек
output результирующее выходное облако точек разности

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

Ссылки на pcl::copyPointCloud(), pcl::PointCloud< PointT >::is_dense, pcl::isFinite(), pcl::search::Search< PointT >::nearestKSearch(), и pcl::PointCloud< PointT >::size().

Ссылка на pcl::SegmentDifferences< PointT >::segment().

isPointIn2DPolygon()

template<typename PointT >
bool pcl::isPointIn2DPolygon ( const PointT & point,
const pcl::PointCloud< PointT > & polygon
)

#include <pcl/segmentation/extract_polygonal_prism_data.h>

Общий метод для проверки, находится ли 3D точка внутри или вне заданного 2D многоугольника.

Примечание
Этот метод принимает любую общую 3D точку, которая проецируется на 2D многоугольник, но выполняет внутреннюю проекцию XY как для многоугольника, так и для точки.
Параметры
point 3D точка, спроецированная на ту же плоскость, что и многоугольник
polygon многоугольник

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

Ссылки на pcl::computeMeanAndCovarianceMatrix(), pcl::eigen33(), pcl::isXYPointIn2DXYPolygon(), pcl::PointCloud< PointT >::resize(), и pcl::PointCloud< PointT >::size().

isXYPointIn2DXYPolygon()

template<typename PointT >
bool pcl::isXYPointIn2DXYPolygon ( const PointT & point,
const pcl::PointCloud< PointT > & polygon
)

#include <pcl/segmentation/extract_polygonal_prism_data.h>

Проверка, находится ли 2D-точка (учитываются только координаты X и Y) внутри или вне заданного многоугольника.

Этот метод предполагает, что и точка, и многоугольник спроецированы на плоскость XY.

Примечание
(Это высокооптимизированный код, взятый с http://www.visibone.com/inpoly/) Авторское право (с) 1995-1996 Galacticomm, Inc. Исходный код с открытым исходным кодом.
Параметры
point 2D-точка, спроецированная на ту же плоскость, что и многоугольник
polygon многоугольник

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

Ссылки на pcl::PointCloud< PointT >::size().

Используется в pcl::isPointIn2DPolygon() и pcl::ExtractPolygonalPrismData< PointT >::segment().

randomWalker() [1/3]

template<class Graph >
bool pcl::segmentation::randomWalker ( Graph & graph )

#include <pcl/segmentation/impl/random_walker.hpp>

Сегментация графа с помощью случайных блужданий.

Это реализация алгоритма, описанного в статье «Случайные блуждания для сегментации изображений» Лео Гради.

Учитывая взвешенный неориентированный граф и небольшое количество заданных пользователем меток, этот алгоритм аналитически определяет вероятность того, что случайный блуждающий процесс, начатый в каждой вершине без метки, впервые достигнет одной из предварительно помеченных вершин. Затем вершины без меток присваиваются метке, для которой вычисляется наибольшая вероятность.

На вход подаётся граф BGL, карта свойств, которая сопоставляет вес каждой дуге графа, и карта свойств, содержащая начальные цвета вершин (термин «цвет» используется взаимозаменяемо с «меткой»).

Примечание
Цвет вершин без меток должен быть установлен в 0, цвета помеченных вершин могут быть любыми положительными числами.
Пользователь несет ответственность за то, чтобы каждая связная компонента графа имела хотя бы одну помеченную вершину. Если пользователь этого не сделал, поведение алгоритма неопределенно, т.е. он может или не может преуспеть, а также может или не может сообщить об ошибке.

Результат алгоритма (т.е. присвоение меток) записывается обратно в карту цветов.

Параметры
[in] graph неориентированный граф с внутренней картой весов рёбер и картой свойств цвета вершин

Для удобства предоставлены несколько перегрузок функции randomWalker().

См. также
randomWalker(Graph&, EdgeWeightMap, VertexColorMap)
randomWalker(Graph&, EdgeWeightMap, VertexColorMap, Eigen::Matrix <typename boost::property_traits<EdgeWeightMap>::value_type, Eigen::Dynamic, Eigen::Dynamic>&, std::map<typename boost::property_traits <VertexColorMap>::value_type, std::size_t>&)
Автор
Sergey Alexandrov

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

randomWalker() [2/3]

template<class Graph , class EdgeWeightMap , class VertexColorMap >
bool pcl::segmentation::randomWalker ( Graph & graph,
EdgeWeightMap weights,
VertexColorMap colors
)

#include <pcl/segmentation/impl/random_walker.hpp>

Сегментация графа с помощью случайных блужданий.

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

Параметры
[in] graph неориентированный граф
[in] weights внешняя карта весов рёбер
[in,out] colors внешняя карта цвета вершин
Автор
Sergey Alexandrov

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

randomWalker() [3/3]

template<class Graph , class EdgeWeightMap , class VertexColorMap >
bool pcl::segmentation::randomWalker ( Graph & graph,
EdgeWeightMap weights,
VertexColorMap colors,
Eigen::Matrix< typename boost::property_traits< EdgeWeightMap >::value_type, Eigen::Dynamic, Eigen::Dynamic > & potentials,
std::map< typename boost::property_traits< VertexColorMap >::value_type, std::size_t > & colors_to_columns_map
)

#include <pcl/segmentation/impl/random_walker.hpp>

Сегментация графа с помощью случайных блужданий.

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

Параметры
[in] graph неориентированный граф
[in] weights внешняя карта весов рёбер
[in,out] colors внешняя карта цвета вершин
[out] potentials матрица с рассчитанными вероятностями, где строки соответствуют вершинам, а столбцы — цветам
[out] colors_to_columns_map отображение между цветами и столбцами в матрице potentials
Автор
Sergey Alexandrov

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

seededHueSegmentation() [1/2]

void pcl::seededHueSegmentation ( const PointCloud< PointXYZRGB > & cloud,
const search::Search< PointXYZRGB >::Ptr & tree,
float tolerance,
PointIndices & indices_in,
PointIndices & indices_out,
float delta_hue = 0.0
)

#include <pcl/segmentation/seeded_hue_segmentation.h>

Разбиение области пространства на кластеры на основе евклидового расстояния между точками.

Параметры
[вход] cloud сообщение облака точек
[вход] tree пространственный локатор (например, kd-дерево) используемый для поиска ближайших соседей
Примечание
дерево должно быть создано как пространственный локатор для cloud
Параметры
[вход] tolerance толерантность пространственного кластера как мера в L2 евклидовом пространстве
[вход] indices_in индексы кластера, содержащие точку-семя (как вектор PointIndices)
[выход] indices_out
[вход] delta_hue
Задача:
посмотреть как сделать это шаблонным!

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

Ссылки на pcl::search::Search< PointT >::getInputCloud(), pcl::_PointXYZHSV::h, pcl::PointIndices::indices, pcl::PointXYZRGBtoXYZHSV(), pcl::search::Search< PointT >::radiusSearch(), и pcl::PointCloud< PointT >::size().

Ссылается на pcl::SeededHueSegmentation::segment().

seededHueSegmentation() [2/2]

void pcl::seededHueSegmentation ( const PointCloud< PointXYZRGBL > & cloud,
const search::Search< PointXYZRGBL >::Ptr & tree,
float tolerance,
PointIndices & indices_in,
PointIndices & indices_out,
float delta_hue = 0.0
)

#include <pcl/segmentation/seeded_hue_segmentation.h>

Разбиение области пространства на кластеры на основе евклидового расстояния между точками.

Параметры
[вход] cloud сообщение облака точек
[вход] tree пространственный локатор (например, kd-дерево) используемый для поиска ближайших соседей
Примечание
дерево должно быть создано как пространственный локатор для cloud
Параметры
[вход] tolerance толерантность пространственного кластера как мера в L2 евклидовом пространстве
[вход] indices_in индексы кластера, содержащие точку-семя (как вектор PointIndices)
[выход] indices_out
[вход] delta_hue
Задача:
посмотреть как сделать это шаблонным!

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

Ссылки на pcl::search::Search< PointT >::getInputCloud(), pcl::_PointXYZHSV::h, pcl::PointIndices::indices, pcl::PointXYZRGBtoXYZHSV(), pcl::search::Search< PointT >::radiusSearch(), и pcl::PointCloud< PointT >::size().

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

Spec-Zone.ru

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