Реализация сегментации GrabCut из статьи «GrabCut — Interactive Foreground Extraction using Iterated Graph Cuts» Карстена Ротера, Владимира Колмогорова и Эндрю Блейка. Подробнее...
#include <pcl/segmentation/grabcut_segmentation.h>
Классы | |
| struct | NLinks |
Открытые типы | |
| using | KdTree = pcl::search::Search< PointT > |
| using | KdTreePtr = typename KdTree::Ptr |
| using | PointCloudConstPtr = typename PCLBase< PointT >::PointCloudConstPtr |
| using | PointCloudPtr = typename PCLBase< PointT >::PointCloudPtr |
|
| |
| using | PointCloud = pcl::PointCloud< PointT > |
| using | PointCloudPtr = typename PointCloud::Ptr |
| using | PointCloudConstPtr = typename PointCloud::ConstPtr |
| using | PointIndicesPtr = PointIndices::Ptr |
| using | PointIndicesConstPtr = PointIndices::ConstPtr |
Открытые функции-члены | |
| GrabCut (std::uint32_t K=5, float lambda=50.f) | |
| Конструктор. Подробнее... |
|
| ~GrabCut () override=default | |
| Деструктор. Подробнее... |
|
| void | setInputCloud (const PointCloudConstPtr &cloud) override |
| Предоставляет указатель на входной набор данных. Подробнее... |
|
| void | setBackgroundPoints (const PointCloudConstPtr &background_points) |
| Задаёт точки фона; точки переднего плана = точки \ точки фона. Подробнее... |
|
| void | setBackgroundPointsIndices (int x1, int y1, int x2, int y2) |
| Задаёт индексы фона; индексы переднего плана = индексы \ индексы фона. Подробнее... |
|
| void | setBackgroundPointsIndices (const PointIndicesConstPtr &indices) |
| Задаёт индексы фона; индексы переднего плана = индексы \ индексы фона. Подробнее... |
|
| virtual void | refine () |
| Выполняет уточнение GrabCut для жёсткой сегментации. Подробнее... |
|
| virtual int | refineOnce () |
| float | getLambda () |
| void | setLambda (float lambda) |
| Задаёт параметр lambda указанным пользователем значением. Подробнее... |
|
| std::uint32_t | getK () |
| void | setK (std::uint32_t K) |
| Задаёт параметр K указанным пользователем значением. Подробнее... |
|
| void | setSearchMethod (const KdTreePtr &tree) |
| Предоставляет указатель на объект поиска. Подробнее... |
|
| KdTreePtr | getSearchMethod () |
| Возвращает указатель на используемый метод поиска. Подробнее... |
|
| void | setNumberOfNeighbours (int nb_neighbours) |
| Позволяет задать количество искомых соседей. Подробнее... |
|
| int | getNumberOfNeighbours () const |
| Возвращает количество искомых соседей. Подробнее... |
|
| void | extract (std::vector< pcl::PointIndices > &clusters) |
| Запускает алгоритм сегментации и возвращает кластеры, полученные в ходе сегментации. Подробнее... |
|
|
| |
| PCLBase () | |
| Конструктор без параметров. Подробнее... |
|
| PCLBase (const PCLBase &base) | |
| Конструктор копирования. Подробнее... |
|
| virtual | ~PCLBase ()=default |
| Деструктор. Подробнее... |
|
| 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 | vertex_descriptor = pcl::segmentation::grabcut::BoykovKolmogorov::vertex_descriptor |
Защищённые функции-члены | |
| bool | initCompute () |
| void | computeBetaOrganized () |
| Вычислить бета по изображению. Подробнее... |
|
| void | computeBetaNonOrganized () |
| Вычислить бета по облаку. Подробнее... |
|
| void | computeL () |
| Вычислить параметр L по заданному значению lambda. Подробнее... |
|
| void | computeNLinksOrganized () |
| Вычислить NLinks по изображению. Подробнее... |
|
| void | computeNLinksNonOrganized () |
| Вычислить NLinks по облаку. Подробнее... |
|
| void | setTrimap (const PointIndicesConstPtr &indices, segmentation::grabcut::TrimapValue t) |
| Изменить тримап. Подробнее... |
|
| int | updateHardSegmentation () |
| virtual void | fitGMMs () |
| Аппроксимировать гауссовы смеси. Подробнее... |
|
| void | initGraph () |
| Построить граф для GraphCut. Подробнее... |
|
| void | addEdge (vertex_descriptor v1, vertex_descriptor v2, float capacity, float rev_capacity) |
| Добавить ребро в граф; граф должен быть ориентированным, поэтому добавляются ребро и обратное ему. Подробнее... |
|
| void | setTerminalWeights (vertex_descriptor v, float source_capacity, float sink_capacity) |
| Задать веса SOURCE --> v и v --> SINK. Подробнее... |
|
| bool | isSource (vertex_descriptor v) |
|
| |
| bool | initCompute () |
| Этот метод следует вызывать перед началом фактического вычисления. Подробнее... |
|
| bool | deinitCompute () |
| Этот метод следует вызывать после завершения фактического вычисления. Подробнее... |
|
Защищённые атрибуты | |
| std::uint32_t | width_ {0} |
| ширина изображения Подробнее... |
|
| std::uint32_t | height_ {0} |
| высота изображения Подробнее... |
|
| std::uint32_t | K_ |
| Количество компонент GMM. Подробнее... |
|
| float | lambda_ |
| lambda = 50. Это значение рекомендовано в статье о GrabCut. Подробнее... |
|
| float | beta_ {0.0f} |
| beta = 1/2 * среднее значение квадратов цветовых расстояний между всеми парами пикселей, являющихся 8-соседями. Подробнее... |
|
| float | L_ {0.0f} |
| L = большое значение, принудительно задающее для пикселя принадлежность к переднему или заднему плану. Подробнее... |
|
| KdTreePtr | tree_ {nullptr} |
| Указатель на объект пространственного поиска. Подробнее... |
|
| int | nb_neighbours_ {9} |
| Количество соседей. Подробнее... |
|
| bool | initialized_ {false} |
| инициализирована ли сегментация Подробнее... |
|
| std::vector< NLinks > | n_links_ {} |
| Предварительно вычисленные веса N-связей. Подробнее... |
|
| segmentation::grabcut::Image::Ptr | image_ |
| Преобразованные входные данные. Подробнее... |
|
| std::vector< segmentation::grabcut::TrimapValue > | trimap_ {} |
| std::vector< std::size_t > | GMM_component_ {} |
| std::vector< segmentation::grabcut::SegmentationValue > | hard_segmentation_ {} |
| std::vector< float > | soft_segmentation_ {} |
| segmentation::grabcut::GMM | background_GMM_ |
| segmentation::grabcut::GMM | foreground_GMM_ |
| pcl::segmentation::grabcut::BoykovKolmogorov | graph_ |
| Граф для Graphcut. Подробнее... |
|
| std::vector< vertex_descriptor > | graph_nodes_ {} |
| Узлы графа. Подробнее... |
|
|
| |
| PointCloudConstPtr | input_ |
| Входной набор облака точек. Подробнее... |
|
| IndicesPtr | indices_ |
| Указатель на вектор индексов используемых точек. Подробнее... |
|
| bool | use_indices_ |
| Установить значение true, если используются индексы точек. Подробнее... |
|
| bool | fake_indices_ |
| Если набор индексов не задан, создаётся набор фиктивных индексов, соответствующий входному PointCloud. Подробнее... |
|
Подробное описание
template<typename PointT>
class pcl::GrabCut< PointT >
Реализация сегментации GrabCut из статьи «GrabCut — Interactive Foreground Extraction using Iterated Graph Cuts» авторов Carsten Rother, Vladimir Kolmogorov и Andrew Blake.
Определение в строке 317 файла grabcut_segmentation.h.
Документация псевдонимов типов-членов
KdTree
| using pcl::GrabCut< PointT >::KdTree = pcl::search::Search<PointT> |
Определение в строке 320 файла grabcut_segmentation.h.
KdTreePtr
| using pcl::GrabCut< PointT >::KdTreePtr = typename KdTree::Ptr |
Определение в строке 321 файла grabcut_segmentation.h.
PointCloudConstPtr
| using pcl::GrabCut< PointT >::PointCloudConstPtr = typename PCLBase<PointT>::PointCloudConstPtr |
Определение в строке 322 файла grabcut_segmentation.h.
PointCloudPtr
| using pcl::GrabCut< PointT >::PointCloudPtr = typename PCLBase<PointT>::PointCloudPtr |
Определение в строке 323 файла grabcut_segmentation.h.
vertex_descriptor
| protected |
Определение в строке 404 файла grabcut_segmentation.h.
Документация конструкторов и деструкторов
GrabCut()
| inline |
Конструктор.
Определение в строке 329 файла grabcut_segmentation.h.
~GrabCut()
| overridedefault |
Деструктор.
Описание функций-членов
addEdge()
| protected |
Добавляет ребро в граф; граф должен быть ориентированным, поэтому добавляются ребро и обратное ему ребро.
Определение в строке 150 файла grabcut_segmentation.hpp.
computeBetaNonOrganized()
| protected |
Вычисляет beta по облаку точек.
Определение в строке 387 файла grabcut_segmentation.hpp.
Ссылки: pcl::GrabCut< PointT >::NLinks::dists, pcl::GrabCut< PointT >::NLinks::indices, pcl::isFinite(), pcl::GrabCut< PointT >::NLinks::nb_links, pcl::squaredEuclideanDistance() и pcl::GrabCut< PointT >::NLinks::weights.
computeBetaOrganized()
| protected |
Вычисляет beta по изображению.
Определение в строке 426 файла grabcut_segmentation.hpp.
Ссылки: pcl::GrabCut< PointT >::NLinks::dists, pcl::GrabCut< PointT >::NLinks::indices, pcl::GrabCut< PointT >::NLinks::nb_links, pcl::squaredEuclideanDistance() и pcl::GrabCut< PointT >::NLinks::weights.
computeL()
| protected |
Вычисляет параметр L по заданному lambda.
Определение в строке 496 файла grabcut_segmentation.hpp.
computeNLinksNonOrganized()
| protected |
Вычисляет NLinks по облаку точек.
Определение в строке 334 файла grabcut_segmentation.hpp.
Ссылки: pcl::GrabCut< PointT >::NLinks::dists, pcl::GrabCut< PointT >::NLinks::indices, pcl::GrabCut< PointT >::NLinks::nb_links и pcl::GrabCut< PointT >::NLinks::weights.
computeNLinksOrganized()
| protected |
Вычисляет NLinks по изображению.
Определение в строке 360 файла grabcut_segmentation.hpp.
Ссылки: pcl::GrabCut< PointT >::NLinks::dists и pcl::GrabCut< PointT >::NLinks::weights.
extract()
| void pcl::GrabCut< PointT >::extract | ( | std::vector< pcl::PointIndices > & | clusters | ) |
Этот метод запускает алгоритм сегментации и возвращает кластеры, полученные в ходе сегментации.
Индексы точек, принадлежащих объекту, будут сохранены в кластере с индексом 1, остальные индексы будут сохранены в кластере с индексом 0.
- Параметры
-
[out] clusters полученные кластеры. Каждый кластер представляет собой массив индексов точек.
Определение в строке 502 файла grabcut_segmentation.hpp.
fitGMMs()
| protectedvirtual |
Подгоняет модели гауссовых смесей.
Определение в строке 185 файла grabcut_segmentation.hpp.
getK()
| inline |
- Возвращает
- количество компонент в GMM
Определение в строке 361 файла grabcut_segmentation.h.
Ссылки: pcl::GrabCut< PointT >::K_.
getLambda()
| inline |
- Возвращает
- lambda
Определение в строке 353 файла grabcut_segmentation.h.
Ссылки: pcl::GrabCut< PointT >::lambda_.
getNumberOfNeighbours()
| inline |
Возвращает количество соседей, которых необходимо найти.
Определение в строке 382 файла grabcut_segmentation.h.
getSearchMethod()
| inline |
Возвращает указатель на используемый метод поиска.
Определение в строке 374 файла grabcut_segmentation.h.
Ссылки: pcl::GrabCut< PointT >::tree_.
initCompute()
| protected |
Определение в строке 87 файла grabcut_segmentation.hpp.
Ссылки: pcl::segmentation::grabcut::SegmentationBackground и pcl::segmentation::grabcut::TrimapUnknown.
initGraph()
| protected |
Строит граф для GraphCut.
Определение в строке 269 файла grabcut_segmentation.hpp.
Ссылки: pcl::GrabCut< PointT >::NLinks::indices, pcl::GrabCut< PointT >::NLinks::nb_links, pcl::segmentation::grabcut::TrimapBackground, pcl::segmentation::grabcut::TrimapUnknown, pcl::UNAVAILABLE и pcl::GrabCut< PointT >::NLinks::weights.
isSource()
| inlineprotected |
- Возвращает
- true, если v находится в дереве источника
Определение в строке 439 файла grabcut_segmentation.h.
Ссылки: pcl::GrabCut< PointT >::graph_ и pcl::segmentation::grabcut::BoykovKolmogorov::inSourceTree().
refine()
| virtual |
Выполняет уточнение GrabCut для жесткой сегментации.
Определение в строке 212 файла grabcut_segmentation.hpp.
refineOnce()
| virtual |
- Возвращает
- количество пикселей, перешедших из переднего плана в фон или наоборот
Определение в строке 195 файла grabcut_segmentation.hpp.
setBackgroundPoints()
| void pcl::GrabCut< PointT >::setBackgroundPoints | ( | const PointCloudConstPtr & | background_points | ) |
Задает точки фона; точки переднего плана = точки \ точки фона.
setBackgroundPointsIndices() [1/2]
| void pcl::GrabCut< PointT >::setBackgroundPointsIndices | ( | const PointIndicesConstPtr & | indices | ) |
Задает индексы фона; индексы переднего плана = индексы \ индексы фона.
Определение в строке 163 файла grabcut_segmentation.hpp.
Ссылки: pcl::segmentation::grabcut::SegmentationBackground, pcl::segmentation::grabcut::SegmentationForeground, pcl::segmentation::grabcut::TrimapBackground и pcl::segmentation::grabcut::TrimapUnknown.
setBackgroundPointsIndices() [2/2]
| void pcl::GrabCut< PointT >::setBackgroundPointsIndices | ( | int | x1, |
| int | y1, | ||
| int | x2, | ||
| int | y2 | ||
| ) |
Задает индексы фона; индексы переднего плана = индексы \ индексы фона.
setInputCloud()
| overridevirtual |
Задает указатель на входной набор данных.
- Параметры
-
[in] cloud константный разделяемый указатель boost на сообщение PointCloud
Переопределено из pcl::PCLBase< PointT >.
Определение в строке 81 файла grabcut_segmentation.hpp.
setK()
| inline |
Установить параметр K в заданное пользователем значение.
Авторы рекомендуют значение 5
- Параметры
-
[in] K количество компонентов, используемых в GMM
Определение в строке 366 файла grabcut_segmentation.h.
Ссылки: pcl::K и pcl::GrabCut< PointT >::K_.
setLambda()
| inline |
Установить параметр lambda в заданное пользователем значение.
Авторы рекомендуют значение 50
- Параметры
-
[in] lambda
Определение в строке 358 файла grabcut_segmentation.h.
Ссылка: pcl::GrabCut< PointT >::lambda_.
setNumberOfNeighbours()
| inline |
Позволяет задать количество соседей для поиска.
- Параметры
-
[in] nb_neighbours новое количество соседей
Определение в строке 379 файла grabcut_segmentation.h.
setSearchMethod()
| inline |
Передать указатель на объект поиска.
- Параметры
-
tree указатель на объект пространственного поиска.
Определение в строке 371 файла grabcut_segmentation.h.
Ссылка: pcl::GrabCut< PointT >::tree_.
setTerminalWeights()
| protected |
Задать веса дуг SOURCE --> v и v --> SINK.
Определение в строке 156 файла grabcut_segmentation.hpp.
setTrimap()
| protected |
Изменить тримап.
Определение в строке 252 файла grabcut_segmentation.hpp.
Ссылки: pcl::segmentation::grabcut::SegmentationBackground, pcl::segmentation::grabcut::SegmentationForeground, pcl::segmentation::grabcut::TrimapBackground и pcl::segmentation::grabcut::TrimapForeground.
updateHardSegmentation()
| protected |
Описание данных-членов
background_GMM_
| protected |
Определение в строке 468 файла grabcut_segmentation.h.
beta_
| protected |
beta = 1/2 * среднее значение квадратов цветовых расстояний между всеми парами пикселей, соседствующих в пределах 8-связности.
Определение в строке 450 файла grabcut_segmentation.h.
foreground_GMM_
| protected |
Определение в строке 468 файла grabcut_segmentation.h.
GMM_component_
| protected |
Определение в строке 464 файла grabcut_segmentation.h.
graph_
| protected |
Граф для Graphcut.
Определение в строке 471 файла grabcut_segmentation.h.
Используется в pcl::GrabCut< PointT >::isSource().
graph_nodes_
| protected |
Узлы графа.
Определение в строке 473 файла grabcut_segmentation.h.
hard_segmentation_
| protected |
Определение в строке 465 файла grabcut_segmentation.h.
height_
| protected |
высота изображения
Определение в строке 443 файла grabcut_segmentation.h.
image_
| protected |
Преобразованные входные данные.
Определение в строке 462 файла grabcut_segmentation.h.
initialized_
| protected |
инициализирована ли сегментация
Определение в строке 458 файла grabcut_segmentation.h.
K_
| protected |
Количество компонентов GMM.
Определение в строке 446 файла grabcut_segmentation.h.
Используется в pcl::GrabCut< PointT >::getK() и pcl::GrabCut< PointT >::setK().
L_
| protected |
L = большое значение, принудительно задающее принадлежность пикселя к переднему или заднему плану.
Определение в строке 452 файла grabcut_segmentation.h.
lambda_
| protected |
lambda = 50. Это значение рекомендовано в статье о GrabCut.
Определение в строке 448 файла grabcut_segmentation.h.
Используется в pcl::GrabCut< PointT >::getLambda() и pcl::GrabCut< PointT >::setLambda().
n_links_
| protected |
Предварительно вычисленные веса N-связей.
Определение в строке 460 файла grabcut_segmentation.h.
nb_neighbours_
| protected |
Количество соседей.
Определение в строке 456 файла grabcut_segmentation.h.
Используется в pcl::GrabCut< PointT >::getNumberOfNeighbours() и pcl::GrabCut< PointT >::setNumberOfNeighbours().
soft_segmentation_
| protected |
Определение в строке 467 файла grabcut_segmentation.h.
tree_
| protected |
Указатель на объект пространственного поиска.
Определение в строке 454 файла grabcut_segmentation.h.
Используется в pcl::GrabCut< PointT >::getSearchMethod() и pcl::GrabCut< PointT >::setSearchMethod().
trimap_
| protected |
Определение в строке 463 файла grabcut_segmentation.h.
width_
| protected |
ширина изображения
Определение в строке 441 файла grabcut_segmentation.h.
Документация для этого класса создана на основе следующих файлов:
- pcl/segmentation/grabcut_segmentation.h
- pcl/segmentation/impl/grabcut_segmentation.hpp
© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_grab_cut.html