Алгоритм реконструкции поверхности методом marching cubes. Подробнее...
#include <pcl/surface/marching_cubes.h>
Общедоступные типы | |
| using | Ptr = shared_ptr< MarchingCubes< PointNT > > |
| using | ConstPtr = shared_ptr< const MarchingCubes< PointNT > > |
| using | PointCloudPtr = typename pcl::PointCloud< PointNT >::Ptr |
| using | KdTree = pcl::KdTree< PointNT > |
| using | KdTreePtr = typename KdTree::Ptr |
|
| |
| using | Ptr = shared_ptr< SurfaceReconstruction< PointNT > > |
| using | ConstPtr = shared_ptr< const SurfaceReconstruction< PointNT > > |
|
| |
| using | Ptr = shared_ptr< PCLSurfaceBase< PointInT > > |
| using | ConstPtr = shared_ptr< const PCLSurfaceBase< PointInT > > |
| using | KdTree = pcl::search::Search< PointInT > |
| using | KdTreePtr = typename KdTree::Ptr |
|
| |
| using | PointCloud = pcl::PointCloud< PointInT > |
| using | PointCloudPtr = typename PointCloud::Ptr |
| using | PointCloudConstPtr = typename PointCloud::ConstPtr |
| using | PointIndicesPtr = PointIndices::Ptr |
| using | PointIndicesConstPtr = PointIndices::ConstPtr |
Открытые функции-члены | |
| MarchingCubes (const float percentage_extend_grid=0.0f, const float iso_level=0.0f) | |
| Конструктор. Подробнее... |
|
| ~MarchingCubes () override | |
| Деструктор. Подробнее... |
|
| void | setIsoLevel (float iso_level) |
| Метод, задающий изоуровень извлекаемой поверхности. Подробнее... |
|
| float | getIsoLevel () |
| Метод, возвращающий изоуровень извлекаемой поверхности. Подробнее... |
|
| void | setGridResolution (int res_x, int res_y, int res_z) |
| Метод, задающий разрешение сетки алгоритма marching cubes. Подробнее... |
|
| void | getGridResolution (int &res_x, int &res_y, int &res_z) |
| Метод для получения разрешения сетки алгоритма marching cubes. Подробнее... |
|
| void | setPercentageExtendGrid (float percentage) |
| Метод, задающий параметр, определяющий, сколько свободного пространства следует оставить внутри сетки между ограничивающим параллелепипедом облака точек и границами сетки. Подробнее... |
|
| float | getPercentageExtendGrid () |
| Метод, возвращающий параметр, определяющий, сколько свободного пространства следует оставить внутри сетки между ограничивающим параллелепипедом облака точек и границами сетки, в процентах от ограничивающего параллелепипеда. Подробнее... |
|
|
| |
| SurfaceReconstruction ()=default | |
| Конструктор. Подробнее... |
|
| ~SurfaceReconstruction () override=default | |
| Деструктор. Подробнее... |
|
| void | reconstruct (pcl::PolygonMesh &output) override |
| Базовый метод восстановления поверхности для всех точек, заданных в <setInputCloud (), setIndices ()> Подробнее... |
|
| virtual void | reconstruct (pcl::PointCloud< PointNT > &points, std::vector< pcl::Vertices > &polygons) |
| Базовый метод восстановления поверхности для всех точек, заданных в <setInputCloud (), setIndices ()> Подробнее... |
|
|
| |
| PCLSurfaceBase () | |
| Пустой конструктор. Подробнее... |
|
| ~PCLSurfaceBase () override=default | |
| Пустой деструктор. Подробнее... |
|
| void | setSearchMethod (const KdTreePtr &tree) |
| Задать необязательный указатель на объект поиска. Подробнее... |
|
| KdTreePtr | getSearchMethod () |
| Получить указатель на используемый метод поиска. Подробнее... |
|
|
| |
| PCLBase () | |
| Пустой конструктор. Подробнее... |
|
| PCLBase (const PCLBase &base) | |
| Конструктор копирования. Подробнее... |
|
| virtual | ~PCLBase ()=default |
| Деструктор. Подробнее... |
|
| virtual void | setInputCloud (const PointCloudConstPtr &cloud) |
| Задать указатель на входной набор данных. Подробнее... |
|
| 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 PointInT & | operator[] (std::size_t pos) const |
| Переопределение оператора PointCloud operator[] для сокращения кода. Подробнее... |
|
Защищённые функции-члены | |
| virtual void | voxelizeData ()=0 |
| Преобразовать облако точек в воксельные данные. Подробнее... |
|
| void | interpolateEdge (Eigen::Vector3f &p1, Eigen::Vector3f &p2, float val_p1, float val_p2, Eigen::Vector3f &output) |
| Выполнить интерполяцию вдоль ребра вокселя. Подробнее... |
|
| void | createSurface (const std::vector< float > &leaf_node, const Eigen::Vector3i &index_3d, pcl::PointCloud< PointNT > &cloud) |
| Вычислить соответствующие многоугольники в листовом узле. Подробнее... |
|
| void | getBoundingBox () |
| Получить ограничивающий параллелепипед для входных точек. Подробнее... |
|
| virtual float | getGridValue (Eigen::Vector3i pos) |
| Метод, возвращающий скалярное значение в заданной позиции сетки. Подробнее... |
|
| void | getNeighborList1D (std::vector< float > &leaf, Eigen::Vector3i &index3d) |
| Метод, возвращающий скалярные значения соседних элементов для заданной 3D-позиции в сетке. Подробнее... |
|
| std::string | getClassName () const override |
| Метод получения имени класса. Подробнее... |
|
| void | performReconstruction (pcl::PolygonMesh &output) override |
| Извлечь поверхность. Подробнее... |
|
| void | performReconstruction (pcl::PointCloud< PointNT > &points, std::vector< pcl::Vertices > &polygons) override |
| Извлечь поверхность. Подробнее... |
|
|
| |
| bool | initCompute () |
| Этот метод следует вызывать перед началом фактических вычислений. Подробнее... |
|
| bool | deinitCompute () |
| Этот метод следует вызывать после завершения фактических вычислений. Подробнее... |
|
Защищённые атрибуты | |
| std::vector< float > | grid_ |
| Структура данных, в которой хранится трёхмерная сетка. Подробнее... |
|
| int | res_x_ = 32 |
| Разрешение сетки. Подробнее... |
|
| int | res_y_ = 32 |
| int | res_z_ = 32 |
| Eigen::Array3f | upper_boundary_ |
| Ограничивающий параллелепипед Подробнее... |
|
| Eigen::Array3f | lower_boundary_ |
| Eigen::Array3f | size_voxel_ |
| Размер вокселей Подробнее... |
|
| float | percentage_extend_grid_ |
| Параметр, определяющий, сколько свободного пространства в процентах от ограничивающего параллелепипеда следует оставить внутри сетки между ограничивающим параллелепипедом облака точек и границами сетки. Подробнее... |
|
| float | iso_level_ |
| Извлекаемый изоуровень. Подробнее... |
|
|
| |
| bool | check_tree_ |
| Флаг, указывающий, требуется ли производному алгоритму реконструкции объект поиска tree. Подробнее... |
|
|
| |
| KdTreePtr | tree_ |
| Указатель на объект пространственного поиска. Подробнее... |
|
|
| |
| PointCloudConstPtr | input_ |
| Входной набор данных облака точек. Подробнее... |
|
| IndicesPtr | indices_ |
| Указатель на вектор используемых индексов точек. Подробнее... |
|
| bool | use_indices_ |
| Установите значение true, если используются индексы точек. Подробнее... |
|
| bool | fake_indices_ |
| Если набор индексов не задан, создаётся набор фиктивных индексов, соответствующий входному облаку точек. Подробнее... |
|
Подробное описание
template<typename PointNT>
class pcl::MarchingCubes< PointNT >
Алгоритм восстановления поверхности методом marching cubes.
Это абстрактный класс, который принимает сетку и извлекает изоповерхность в виде сетки полигонов на основе оригинальной статьи о marching cubes:
Lorensen W.E., Cline H.E., "Marching cubes: A high resolution 3d surface construction algorithm", SIGGRAPH '87
- Параметры шаблона
-
PointNT Используйте pcl::PointNormalилиpcl::PointXYZRGBNormalилиpcl::PointXYZINormal
Определение в строке 364 файла marching_cubes.h.
Документация псевдонимов типов-членов
ConstPtr
| using pcl::MarchingCubes< PointNT >::ConstPtr = shared_ptr<const MarchingCubes<PointNT> > |
Определение в строке 368 файла marching_cubes.h.
KdTree
| using pcl::MarchingCubes< PointNT >::KdTree = pcl::KdTree<PointNT> |
Определение в строке 375 файла marching_cubes.h.
KdTreePtr
| using pcl::MarchingCubes< PointNT >::KdTreePtr = typename KdTree::Ptr |
Определение в строке 376 файла marching_cubes.h.
PointCloudPtr
| using pcl::MarchingCubes< PointNT >::PointCloudPtr = typename pcl::PointCloud<PointNT>::Ptr |
Определение в строке 373 файла marching_cubes.h.
Ptr
| using pcl::MarchingCubes< PointNT >::Ptr = shared_ptr<MarchingCubes<PointNT> > |
Определение в строке 367 файла marching_cubes.h.
Документация конструктора и деструктора
MarchingCubes()
| inline |
Конструктор.
Определение в строке 379 файла marching_cubes.h.
~MarchingCubes()
| overridedefault |
Деструктор.
Документация функций-членов
createSurface()
| protected |
Вычисляет соответствующие многоугольники в узле-листе.
- Параметры
-
leaf_node проверяемый узел-лист index_3d трёхмерный индекс проверяемого узла-листа cloud облако точек для хранения вершин многоугольника
Определение в строке 81 файла marching_cubes.hpp.
Ссылки: pcl::edgeTable, pcl::PointCloud< PointT >::push_back() и pcl::triTable.
getBoundingBox()
| protected |
Получает ограничивающий параллелепипед для входных точек данных.
Определение в строке 50 файла marching_cubes.hpp.
Ссылка: pcl::getMinMax3D().
getClassName()
| inlineoverrideprotectedvirtual |
Метод получения имени класса.
Переопределяет метод класса pcl::PCLSurfaceBase< PointInT >.
Определение в строке 505 файла marching_cubes.h.
getGridResolution()
| inline |
Метод получения разрешения сетки marching cubes.
- Параметры
-
[in] res_x разрешение сетки вдоль оси x [in] res_y разрешение сетки вдоль оси y [in] res_z разрешение сетки вдоль оси z
Определение в строке 417 файла marching_cubes.h.
Ссылки: pcl::MarchingCubes< PointNT >::res_x_, pcl::MarchingCubes< PointNT >::res_y_ и pcl::MarchingCubes< PointNT >::res_z_.
getGridValue()
| protectedvirtual |
Метод, возвращающий скалярное значение в заданной позиции сетки.
- Параметры
-
[in] pos трёхмерная позиция в сетке
TODO что возвращать?
Определение в строке 190 файла marching_cubes.hpp.
getIsoLevel()
| inline |
Метод, возвращающий изоуровень извлекаемой поверхности.
Определение в строке 399 файла marching_cubes.h.
getNeighborList1D()
| protected |
Метод, возвращающий скалярные значения соседних точек для заданной трёхмерной позиции в сетке.
- Параметры
-
[in] index3d точка в сетке [out] leaf набор значений
Определение в строке 163 файла marching_cubes.hpp.
getPercentageExtendGrid()
| inline |
Метод получения параметра, определяющего, сколько свободного пространства в процентах от ограничивающего параллелепипеда следует оставить внутри сетки между ограничивающим параллелепипедом облака точек и границами сетки.
Определение в строке 434 файла marching_cubes.h.
Ссылка: pcl::MarchingCubes< PointNT >::percentage_extend_grid_.
interpolateEdge()
| protected |
Интерполировать вдоль ребра вокселя.
- Параметры
-
[in] p1 Первая точка на ребре [in] p2 Вторая точка на ребре [in] val_p1 Скалярное значение в точке p1 [in] val_p2 Скалярное значение в точке p2 [out] output Интерполированная точка на ребре
Определение в строке 68 файла marching_cubes.hpp.
performReconstruction() [1/2]
| overrideprotectedvirtual |
Извлечь поверхность.
- Параметры
-
[out] points точки извлечённой сетки [out] polygons связность точек извлечённой сетки.
Реализует pcl::SurfaceReconstruction< PointNT >.
Определение в строке 218 файла marching_cubes.hpp.
Ссылки: pcl::PointCloud< PointT >::clear(), pcl::PointCloud< PointT >::points, pcl::PointCloud< PointT >::reserve(), pcl::PointCloud< PointT >::size(), pcl::PointCloud< PointT >::swap() и pcl::Vertices::vertices.
performReconstruction() [2/2]
| overrideprotectedvirtual |
Извлечь поверхность.
- Параметры
-
[out] output результирующая полигональная сетка
Реализует pcl::SurfaceReconstruction< PointNT >.
Определение в строке 206 файла marching_cubes.hpp.
Ссылки: pcl::PolygonMesh::cloud, pcl::PolygonMesh::polygons и pcl::toPCLPointCloud2().
setGridResolution()
| inline |
Метод, задающий разрешение сетки Marching Cubes.
- Параметры
-
[in] res_x разрешение сетки вдоль оси x [in] res_y разрешение сетки вдоль оси y [in] res_z разрешение сетки вдоль оси z
Определение в строке 408 файла marching_cubes.h.
Ссылки: pcl::MarchingCubes< PointNT >::res_x_, pcl::MarchingCubes< PointNT >::res_y_ и pcl::MarchingCubes< PointNT >::res_z_.
setIsoLevel()
| inline |
Метод, задающий изоуровень извлекаемой поверхности.
- Параметры
-
[in] iso_level изоуровень.
Определение в строке 394 файла marching_cubes.h.
setPercentageExtendGrid()
| inline |
Метод, задающий параметр, определяющий, сколько свободного пространства должно оставаться внутри сетки между ограничивающим параллелепипедом облака точек и границами сетки.
Не влияет на разрешение сетки, а только соответственно изменяет размер вокселя.
- Параметры
-
[in] percentage доля ограничивающего параллелепипеда, которая должна оставаться пустой между ограничивающим параллелепипедом и границами сетки.
Определение в строке 427 файла marching_cubes.h.
Ссылка: pcl::MarchingCubes< PointNT >::percentage_extend_grid_.
voxelizeData()
| protectedpure virtual |
Преобразовать облако точек в данные вокселей.
Реализовано в классах pcl::MarchingCubesRBF< PointNT > и pcl::MarchingCubesHoppe< PointNT >.
Описание данных-членов
grid_
| protected |
Структура данных, хранящая трёхмерную сетку.
Определение в строке 439 файла marching_cubes.h.
iso_level_
| protected |
Изоуровень, который необходимо извлечь.
Определение в строке 456 файла marching_cubes.h.
Используется в pcl::MarchingCubes< PointNT >::getIsoLevel() и pcl::MarchingCubes< PointNT >::setIsoLevel().
lower_boundary_
| protected |
Определение в строке 446 файла marching_cubes.h.
percentage_extend_grid_
| protected |
Параметр, определяющий, сколько свободного пространства должно оставаться внутри сетки между ограничивающим параллелепипедом облака точек и границами сетки, в процентах от ограничивающего параллелепипеда.
Определение в строке 453 файла marching_cubes.h.
Используется в pcl::MarchingCubes< PointNT >::getPercentageExtendGrid() и pcl::MarchingCubes< PointNT >::setPercentageExtendGrid().
res_x_
| protected |
Разрешение сетки.
Определение в строке 442 файла marching_cubes.h.
Используется в pcl::MarchingCubes< PointNT >::getGridResolution() и pcl::MarchingCubes< PointNT >::setGridResolution().
res_y_
| protected |
Определение в строке 442 файла marching_cubes.h.
Используется в pcl::MarchingCubes< PointNT >::getGridResolution() и pcl::MarchingCubes< PointNT >::setGridResolution().
res_z_
| protected |
Определение в строке 442 файла marching_cubes.h.
Используется в pcl::MarchingCubes< PointNT >::getGridResolution() и pcl::MarchingCubes< PointNT >::setGridResolution().
size_voxel_
| protected |
Размер вокселей
Определение в строке 449 файла marching_cubes.h.
upper_boundary_
| protected |
Ограничивающий параллелепипед
Определение в строке 445 файла marching_cubes.h.
Документация этого класса создана на основе следующих файлов:
- pcl/surface/marching_cubes.h
- pcl/surface/impl/marching_cubes.hpp
© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_marching_cubes.html