Реализация сегментации 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) |
| Установить параметр лямбда на заданное пользователем значение. Подробнее... |
|
| 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 operator[] для сокращения кода. Подробнее... |
|
Защищенные типы | |
| using | vertex_descriptor = pcl::segmentation::grabcut::BoykovKolmogorov::vertex_descriptor |
Защищенные члены-функции | |
| bool | initCompute () |
| void | computeBetaOrganized () |
| Вычисление beta из изображения. Подробнее... |
|
| void | computeBetaNonOrganized () |
| Вычисление beta из облака точек. Подробнее... |
|
| 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_ |
| Ширина изображения Подробнее... |
|
| std::uint32_t | height_ |
| Высота изображения Подробнее... |
|
| std::uint32_t | K_ |
| Количество компонент GMM. Подробнее... |
|
| float | lambda_ |
| lambda = 50. Это значение было предложено в статье по GrabCut. Подробнее... |
|
| float | beta_ |
| beta = 1/2 * среднее значение квадратов расстояний цветов между всеми парами пикселей 8-соседних пикселей. Подробнее... |
|
| float | L_ |
| L = большое значение, чтобы принудительно назначить пиксель к фоновому или переднему плану. Подробнее... |
|
| KdTreePtr | tree_ |
| Указатель на объект пространственного поиска. Подробнее... |
|
| int | nb_neighbours_ |
| Количество соседей. Подробнее... |
|
| bool | initialized_ |
| инициализировано ли сегментирование Подробнее... |
|
| 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. Подробнее... |
|
Подробное описание
шаблон<typename PointT>
класс pcl::GrabCut< PointT >
Реализация сегментации GrabCut в статье "GrabCut — Interactive Foreground Extraction using Iterated Graph Cuts" Карстена Ротера, Владимира Кольмогорова и Эндрю Блейка.
Определение в строке 320 файла grabcut_segmentation.h.
Документация по переопределенным типам членов
KdTree
| using pcl::GrabCut< PointT >::KdTree = pcl::search::Search<PointT> |
Определение в строке 323 файла grabcut_segmentation.h.
KdTreePtr
| using pcl::GrabCut< PointT >::KdTreePtr = typename KdTree::Ptr |
Определение в строке 324 файла grabcut_segmentation.h.
PointCloudConstPtr
| using pcl::GrabCut< PointT >::PointCloudConstPtr = typename PCLBase<PointT>::PointCloudConstPtr |
Определение в строке 325 файла grabcut_segmentation.h.
PointCloudPtr
| using pcl::GrabCut< PointT >::PointCloudPtr = typename PCLBase<PointT>::PointCloudPtr |
Определение в строке 326 файла grabcut_segmentation.h.
vertex_descriptor
| protected |
Определение в строке 411 файла grabcut_segmentation.h.
Конструктор и деструктор
GrabCut()
| inline |
Конструктор.
Определение в строке 332 файла grabcut_segmentation.h.
~GrabCut()
| overridedefault |
Деструктор.
Документация по членам-функциям
addEdge()
| protected |
Добавить ребро в граф, граф должен быть ориентирован, поэтому мы добавляем ребро и его обратное ребро.
Определение в строке 150 файла grabcut_segmentation.hpp.
computeBetaNonOrganized()
| protected |
Вычислить бета из облака.
Определение в строке 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 |
Вычисление бета из изображения.
Определение в строке 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 из заданного лямбда.
Определение в строке 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.
Ссылается на pcl::segmentation::grabcut::SegmentationForeground.
fitGMMs()
| protectedvirtual |
Подгонка многомерных гауссовых моделей.
Определение в строке 185 файла grabcut_segmentation.hpp.
Ссылается на pcl::segmentation::grabcut::buildGMMs().
getK()
| inline |
- Возвращает
- число компонент в GMM
Определение в строке 368 файла grabcut_segmentation.h.
Ссылается на pcl::GrabCut< PointT >::K_.
getLambda()
| inline |
- Возвращает
- лямбда
Определение в строке 360 файла grabcut_segmentation.h.
Ссылается на pcl::GrabCut< PointT >::lambda_.
getNumberOfNeighbours()
| inline |
Возвращает количество соседей для поиска.
Определение в строке 389 файла grabcut_segmentation.h.
Ссылки на pcl::GrabCut< PointT >::nb_neighbours_.
getSearchMethod()
| inline |
Получить указатель на используемый метод поиска.
Определение в строке 381 файла 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 находится в исходном дереве
Определение в строке 446 файла 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.
Ссылается на pcl::segmentation::grabcut::learnGMMs().
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
Определение в строке 373 файла grabcut_segmentation.h.
Ссылки на pcl::K и pcl::GrabCut< PointT >::K_.
setLambda()
| inline |
Установить параметр lambda заданным пользователем значением.
Предлагаемое значение авторами — 50.
- Параметры
-
[in] lambda
Определение в строке 365 файла grabcut_segmentation.h.
Ссылки на pcl::GrabCut< PointT >::lambda_.
setNumberOfNeighbours()
| inline |
Разрешает установить количество соседей для поиска.
- Parameters
-
[in] nb_neighbours новое количество соседей
Определение в строке 386 файла grabcut_segmentation.h.
Ссылки на pcl::GrabCut< PointT >::nb_neighbours_.
setSearchMethod()
| inline |
Предоставьте указатель на объект поиска.
- Параметры
-
tree указатель на объект пространственного поиска.
Определение в строке 378 файла 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 |
Определение в строке 475 файла grabcut_segmentation.h.
beta_
| protected |
beta = 1/2 * среднее значение квадратов цветовых расстояний между всеми парами пикселей с 8-соседними пикселями.
Определение в строке 457 файла grabcut_segmentation.h.
foreground_GMM_
| protected |
Определение в строке 475 файла grabcut_segmentation.h.
GMM_component_
| protected |
Определение в строке 471 файла grabcut_segmentation.h.
graph_
| protected |
Граф для Graphcut.
Определение в строке 478 файла grabcut_segmentation.h.
Используется в pcl::GrabCut< PointT >::isSource().
graph_nodes_
| protected |
Узлы графа.
Определение в строке 480 файла grabcut_segmentation.h.
hard_segmentation_
| protected |
Определение в строке 472 файла grabcut_segmentation.h.
height_
| protected |
Высота изображения
Определение в строке 450 файла grabcut_segmentation.h.
image_
| protected |
Преобразованный входной параметр.
Определение в строке 469 файла grabcut_segmentation.h.
initialized_
| protected |
Инициализирована ли сегментация.
Определение в строке 465 файла grabcut_segmentation.h.
K_
| protected |
Количество компонент GMM.
Определение в строке 453 файла grabcut_segmentation.h.
Используется в pcl::GrabCut< PointT >::getK() и pcl::GrabCut< PointT >::setK().
L_
| protected |
L = большое значение для принудительного назначения пикселя к фоновому или переднему плану.
Определение в строке 459 файла grabcut_segmentation.h.
lambda_
| protected |
lambda = 50. Это значение было предложено статьёй GrabCut.
Определение в строке 455 файла grabcut_segmentation.h.
Используется в pcl::GrabCut< PointT >::getLambda() и pcl::GrabCut< PointT >::setLambda().
n_links_
| protected |
Вычисленные веса N-связей.
Определение в строке 467 файла grabcut_segmentation.h.
nb_neighbours_
| protected |
Количество соседей.
Определение в строке 463 файла grabcut_segmentation.h.
Используется в pcl::GrabCut< PointT >::getNumberOfNeighbours() и pcl::GrabCut< PointT >::setNumberOfNeighbours().
soft_segmentation_
| protected |
Определение в строке 474 файла grabcut_segmentation.h.
tree_
| protected |
Указатель на объект пространственного поиска.
Определение в строке 461 файла grabcut_segmentation.h.
Используется в pcl::GrabCut< PointT >::getSearchMethod() и pcl::GrabCut< PointT >::setSearchMethod().
trimap_
| protected |
Определение в строке 470 файла grabcut_segmentation.h.
width_
| protected |
ширина изображения
Определение в строке 448 файла 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