Spec-Zone.ru › PointCloudLibrary

Метод реконструкции поверхности проекции на сетку. Подробнее...

#include <pcl/surface/grid_projection.h>

Inheritance graph
[легенда]
Collaboration graph
[легенда]

Вложенные классы

структура Лист
Данные листа. Подробнее...

Публичные типы

using Ptr = shared_ptr< GridProjection< PointNT > >
using ConstPtr = shared_ptr< const GridProjection< PointNT > >
using PointCloudPtr = typename pcl::PointCloud< PointNT >::Ptr
using KdTree = pcl::KdTree< PointNT >
using KdTreePtr = typename KdTree::Ptr
using HashMap = std::unordered_map< int, Leaf, std::hash< int >, std::equal_to<>, Eigen::aligned_allocator< std::pair< const int, Leaf > >>
- Публичные типы, унаследованные от pcl::SurfaceReconstruction< PointNT >
using Ptr = shared_ptr< SurfaceReconstruction< PointNT > >
using ConstPtr = shared_ptr< const SurfaceReconstruction< PointNT > >
- Публичные типы, унаследованные от pcl::PCLSurfaceBase< PointInT >
using Ptr = shared_ptr< PCLSurfaceBase< PointInT > >
using ConstPtr = shared_ptr< const PCLSurfaceBase< PointInT > >
using KdTree = pcl::search::Search< PointInT >
using KdTreePtr = typename KdTree::Ptr
- Публичные типы, унаследованные от pcl::PCLBase< PointInT >
using PointCloud = pcl::PointCloud< PointInT >
using PointCloudPtr = typename PointCloud::Ptr
using PointCloudConstPtr = typename PointCloud::ConstPtr
using PointIndicesPtr = PointIndices::Ptr
using PointIndicesConstPtr = PointIndices::ConstPtr

Публичные члены-функции

GridProjection ()
Конструктор. Подробнее...
GridProjection (double in_resolution)
Конструктор. Подробнее...
~GridProjection () override
Деструктор. Подробнее...
void setResolution (double resolution)
Устанавливает размер ячейки сетки. Подробнее...
double getResolution () const
void setPaddingSize (int padding_size)
При усреднении векторов находится объединение всех точек входных данных в области с заданным отступом, и вычисляется взвешенное среднее значение. Подробнее...
int getPaddingSize () const
void setNearestNeighborNum (int k)
Устанавливается только при использовании поиска k ближайших соседей вместо поиска объединения точек. Подробнее...
int getNearestNeighborNum () const
void setMaxBinarySearchLevel (int max_binary_search_level)
Двоичный поиск используется в проекции. Подробнее...
int getMaxBinarySearchLevel () const
const HashMap & getCellHashMap () const
const std::vector< Eigen::Vector3f, Eigen::aligned_allocator< Eigen::Vector3f > > & getVectorAtDataPoint () const
const std::vector< Eigen::Vector4f, Eigen::aligned_allocator< Eigen::Vector4f > > & getSurface () const
- Публичные члены-функции унаследованные от pcl::SurfaceReconstruction< PointNT >
SurfaceReconstruction ()
Конструктор. Подробнее...
~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 ()> Подробнее...
- Публичные члены-функции унаследованные от pcl::PCLSurfaceBase< PointInT >
PCLSurfaceBase ()
Пустой конструктор. Подробнее...
~PCLSurfaceBase () override=default
Пустой деструктор. Подробнее...
void setSearchMethod (const KdTreePtr &tree)
Укажите необязательный указатель на объект поиска. Подробнее...
KdTreePtr getSearchMethod ()
Получить указатель на метод поиска. Подробнее...
- Public Member Functions inherited from pcl::PCLBase< PointInT >
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[] для сокращения кода. Подробнее...

Защищенные члены-функции

void getBoundingBox ()
Получить рамку ограничивающего прямоугольника для входных точек данных, а также рассчитать размер ячейки и коэффициент масштабирования Гаусса. Подробнее...
bool reconstructPolygons (std::vector< pcl::Vertices > &polygons)
Фактический метод реконструкции поверхности. Подробнее...
void performReconstruction (pcl::PolygonMesh &output) override
Создать поверхность. Подробнее...
void performReconstruction (pcl::PointCloud< PointNT > &points, std::vector< pcl::Vertices > &polygons) override
Создать поверхность. Подробнее...
void scaleInputDataPoint (double scale_factor)
Если входные точки данных не заполняют ячейку 1*1*1, масштабировать их, чтобы они могли заполнить единичную ячейку. Подробнее...
void getCellIndex (const Eigen::Vector4f &p, Eigen::Vector3i &index) const
Получить 3d индекс (x,y,z) ячейки на основе ее расположения. Подробнее...
void getCellCenterFromIndex (const Eigen::Vector3i &index, Eigen::Vector4f &center) const
По заданному 3d индексу (x, y, z) ячейки получить координаты центра ячейки. Подробнее...
void getVertexFromCellCenter (const Eigen::Vector4f &cell_center, std::vector< Eigen::Vector4f, Eigen::aligned_allocator< Eigen::Vector4f > > &pts) const
По заданному центру ячейки, вычислить координаты восьми вершин ячейки. Подробнее...
int getIndexIn1D (const Eigen::Vector3i &index) const
По заданному индексу (x, y, z) в 3d, преобразовать его в индекс в 1d. Подробнее...
void getIndexIn3D (int index_1d, Eigen::Vector3i &index_3d) const
По заданному индексу в 1d, преобразовать его в индекс (x, y, z) в 3d. Подробнее...
void fillPad (const Eigen::Vector3i &index)
Для заданного 3d индекса ячейки, проверить, существуют ли ячейки в области ее заполнения в хеш-таблице. Если нет, создать запись для этой ячейки. Подробнее...
void getDataPtsUnion (const Eigen::Vector3i &index, pcl::Indices &pt_union_indices)
Получить индекс ячейки и размер заполнения. Подробнее...
void createSurfaceForCell (const Eigen::Vector3i &index, pcl::Indices &pt_union_indices)
По заданному индексу ячейки, проверить грани сверху, слева, спереди и добавить вершины в список m_surface. Грани сверху, слева, спереди делят только 4 точки, сначала получаем векторы в этих 4 точках и проверяем, пересекаются ли эти три грани с поверхностью. Подробнее...
void getProjection (const Eigen::Vector4f &p, pcl::Indices &pt_union_indices, Eigen::Vector4f &projection)
По заданным координатам точки, спроецировать ее на поверхность, вернуть спроецированную точку. Подробнее...
void getProjectionWithPlaneFit (const Eigen::Vector4f &p, pcl::Indices &pt_union_indices, Eigen::Vector4f &projection)
По заданным координатам точки, спроецировать ее на поверхность, вернуть спроецированную точку. Подробнее...
void getVectorAtPoint (const Eigen::Vector4f &p, pcl::Indices &pt_union_indices, Eigen::Vector3f &vo)
Дано положение точки, получить ее вектор. Подробнее...
void getVectorAtPointKNN (const Eigen::Vector4f &p, pcl::Indices &k_indices, std::vector< float > &k_squared_distances, Eigen::Vector3f &vo)
Дано положение точки, получить ее вектор. Подробнее...
double getMagAtPoint (const Eigen::Vector4f &p, const pcl::Indices &pt_union_indices)
Получить величину вектора, суммируя расстояние. Подробнее...
double getD1AtPoint (const Eigen::Vector4f &p, const Eigen::Vector3f &vec, const pcl::Indices &pt_union_indices)
Получить 1-ю производную. Подробнее...
double getD2AtPoint (const Eigen::Vector4f &p, const Eigen::Vector3f &vec, const pcl::Indices &pt_union_indices)
Получить 2-ю производную. Подробнее...
bool isIntersected (const std::vector< Eigen::Vector4f, Eigen::aligned_allocator< Eigen::Vector4f > > &end_pts, std::vector< Eigen::Vector3f, Eigen::aligned_allocator< Eigen::Vector3f > > &vect_at_end_pts, pcl::Indices &pt_union_indices)
Проверить, пересекается ли отрезок с поверхностью, выполнив скалярное произведение векторов в двух конечных точках. Подробнее...
void findIntersection (int level, const std::vector< Eigen::Vector4f, Eigen::aligned_allocator< Eigen::Vector4f > > &end_pts, const std::vector< Eigen::Vector3f, Eigen::aligned_allocator< Eigen::Vector3f > > &vect_at_end_pts, const Eigen::Vector4f &start_pt, pcl::Indices &pt_union_indices, Eigen::Vector4f &intersection)
Найти точку, где отрезок пересекает поверхность. Подробнее...
void storeVectAndSurfacePoint (int index_1d, const Eigen::Vector3i &index_3d, pcl::Indices &pt_union_indices, const Leaf &cell_data)
Пройти по всем записям в хеш-таблице и обновить cellData. Подробнее...
void storeVectAndSurfacePointKNN (int index_1d, const Eigen::Vector3i &index_3d, const Leaf &cell_data)
Пройти по всем записям в хеш-таблице и обновить cellData. Подробнее...
- Защищенные члены-функции унаследованные от pcl::PCLBase< PointInT >
bool initCompute ()
Этот метод должен быть вызван перед началом фактического вычисления. Подробнее...
bool deinitCompute ()
Этот метод должен быть вызван после завершения фактического вычисления. Подробнее...

Дополнительные унаследованные члены

- Защищенные атрибуты, унаследованные от pcl::SurfaceReconstruction< PointNT >
bool check_tree_
Флаг, указывающий, требуется ли алгоритму реконструкции производного объекта поиска tree. Подробнее...
- Защищенные атрибуты, унаследованные от pcl::PCLSurfaceBase< PointInT >
KdTreePtr tree_
Указатель на объект пространственного поиска. Подробнее...
- Защищенные атрибуты, унаследованные от pcl::PCLBase< PointInT >
PointCloudConstPtr input_
Набор входных данных облака точек. Подробнее...
IndicesPtr indices_
Указатель на вектор индексов точек для использования. Подробнее...
bool use_indices_
Устанавливается в true, если используются индексы точек. Подробнее...
bool fake_indices_
Если набор индексов не задан, мы создаём набор фиктивных индексов, имитирующих входное облако точек. Подробнее...

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

шаблон<typename PointNT>
класс pcl::GridProjection< PointNT >

Метод реконструкции поверхности проекцией на сетку.

Автор
Rosie Li
Примечание
Если вы используете этот код в любой академической работе, пожалуйста, укажите:
  • Ruosi Li, Lu Liu, Ly Phan, Sasakthi Abeysinghe, Cindy Grimm, Tao Ju. Polygonizing extremal surfaces with manifold guarantees. В материалах 14-й ACM-симпозиум по твердотельным и физическим моделям, 2010.

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

Документация по перечислениям типов членов

ConstPtr

шаблон<typename PointNT >
используя pcl::GridProjection< PointNT >::ConstPtr = shared_ptr<const GridProjection<PointNT> >

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

HashMap

шаблон<typename PointNT >
используя pcl::GridProjection< PointNT >::HashMap = std::unordered_map<int, Leaf, std::hash<int>, std::equal_to<>, Eigen::aligned_allocator<std::pair<const int, Leaf> >>

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

KdTree

шаблон<typename PointNT >
используя pcl::GridProjection< PointNT >::KdTree = pcl::KdTree<PointNT>

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

KdTreePtr

шаблон<typename PointNT >
используя pcl::GridProjection< PointNT >::KdTreePtr = typename KdTree::Ptr

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

PointCloudPtr

шаблон<typename PointNT >
используя pcl::GridProjection< PointNT >::PointCloudPtr = typename pcl::PointCloud<PointNT>::Ptr

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

Ptr

template<typename PointNT >
using pcl::GridProjection< PointNT >::Ptr = shared_ptr<GridProjection<PointNT> >

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

Документация конструктора и деструктора

GridProjection() [1/2]

template<typename PointNT >
pcl::GridProjection< PointNT >::GridProjection

Конструктор.

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

GridProjection() [2/2]

template<typename PointNT >
pcl::GridProjection< PointNT >::GridProjection ( double in_resolution )

Конструктор.

Параметры
in_resolution установить разрешение сетки

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

~GridProjection()

template<typename PointNT >
pcl::GridProjection< PointNT >::~GridProjection
override

Деструктор.

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

Документация по членам-функциям

createSurfaceForCell()

template<typename PointNT >
void pcl::GridProjection< PointNT >::createSurfaceForCell ( const Eigen::Vector3i & index,
pcl::Indices & pt_union_indices
)
protected

Принимая индекс ячейки, проверяет грани сверху, слева, спереди и добавляет вершины в список m_surface. Грани сверху, слева, спереди делят только 4 точки. Сначала мы получаем векторы в этих 4 точках и проверяем, пересекают ли эти три грани поверхность.

Параметры
index входной индекс
pt_union_indices объединение входных точек данных в ячейке и ячейках заполнения

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

Ссылки на pcl::I_SHIFT_EDGE и pcl::I_SHIFT_PT.

fillPad()

template<typename PointNT >
void pcl::GridProjection< PointNT >::fillPad ( const Eigen::Vector3i & index )
protected

Для заданного 3d индекса ячейки проверяет, существуют ли ячейки в области заполнения в таблице хеширования. Если нет, создаёт запись для этой ячейки.

Параметры
index индекс ячейки в формате (x,y,z)

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

findIntersection()

template<typename PointNT >
void pcl::GridProjection< PointNT >::findIntersection ( int level,
const std::vector< Eigen::Vector4f, Eigen::aligned_allocator< Eigen::Vector4f > > & end_pts,
const std::vector< Eigen::Vector3f, Eigen::aligned_allocator< Eigen::Vector3f > > & vect_at_end_pts,
const Eigen::Vector4f & start_pt,
pcl::Indices & pt_union_indices,
Eigen::Vector4f & intersection
)
protected

Нахождение точки пересечения ребра с поверхностью.

Параметры
level уровень бинарного поиска
end_pts две конечные точки на ребре
vect_at_end_pts векторы в двух конечных точках
start_pt начальная точка, которую мы используем для бинарного поиска
pt_union_indices объединение входных точек данных в ячейке и ячейках заполнения
intersection результирующая точка пересечения

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

getBoundingBox()

template<typename PointNT >
void pcl::GridProjection< PointNT >::getBoundingBox
protected

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

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

Ссылки на pcl::getMinMax3D().

getCellCenterFromIndex()

template<typename PointNT >
void pcl::GridProjection< PointNT >::getCellCenterFromIndex ( const Eigen::Vector3i & index,
Eigen::Vector4f & center
) const
inlineprotected

Учитывая 3d индекс (x, y, z) ячейки, получить координаты центра ячейки.

Parameters
index выходной 3d индекс
center результирующий центр ячейки

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

getCellHashMap()

template<typename PointNT >
const HashMap& pcl::GridProjection< PointNT >::getCellHashMap ( ) const
inline

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

getCellIndex()

template<typename PointNT >
void pcl::GridProjection< PointNT >::getCellIndex ( const Eigen::Vector4f & p,
Eigen::Vector3i & index
) const
inlineprotected

Получить 3d индекс (x,y,z) ячейки на основе местоположения ячейки.

Parameters
p координата входной точки
index выходной 3d индекс

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

getD1AtPoint()

template<typename PointNT >
double pcl::GridProjection< PointNT >::getD1AtPoint ( const Eigen::Vector4f & p,
const Eigen::Vector3f & vec,
const pcl::Indices & pt_union_indices
)
protected

Получить первую производную.

Parameters
p координата входной точки
vec вектор в точке p
pt_union_indices объединение входных точек данных в ячейке и ячейках заполнения

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

getD2AtPoint()

template<typename PointNT >
double pcl::GridProjection< PointNT >::getD2AtPoint ( const Eigen::Vector4f & p,
const Eigen::Vector3f & vec,
const pcl::Indices & pt_union_indices
)
protected

Получить вторую производную.

Parameters
p координата входной точки
vec вектор в точке p
pt_union_indices объединение входных точек данных в ячейке и ячейках заполнения

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

getDataPtsUnion()

template<typename PointNT >
void pcl::GridProjection< PointNT >::getDataPtsUnion ( const Eigen::Vector3i & index,
pcl::Indices & pt_union_indices
)
protected

Получить индекс ячейки и размер заполнения.

Parameters
index входной индекс
pt_union_indices объединение входных точек данных в ячейке и ячейках заполнения

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

getIndexIn1D()

template<typename PointNT >
int pcl::GridProjection< PointNT >::getIndexIn1D ( const Eigen::Vector3i & index ) const
inlineprotected

Учитывая индекс (x, y, z) в 3d, перевести его в индекс в 1d.

Parameters
index индекс ячейки в формате 3d (x,y,z)

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

getIndexIn3D()

template<typename PointNT >
void pcl::GridProjection< PointNT >::getIndexIn3D ( int index_1d,
Eigen::Vector3i & index_3d
) const
inlineprotected

При заданном индексе в 1D, преобразуйте его в индекс (x, y, z) в 3D.

Parameters
index_1d входной индекс 1D
index_3d результирующий индекс 3D

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

getMagAtPoint()

template<typename PointNT >
double pcl::GridProjection< PointNT >::getMagAtPoint ( const Eigen::Vector4f & p,
const pcl::Indices & pt_union_indices
)
protected

Получить величину вектора, суммируя расстояние.

Parameters
p координаты входной точки
pt_union_indices объединение входных точек данных внутри ячейки и ячеек заполнения

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

Ссылки на M_E.

getMaxBinarySearchLevel()

template<typename PointNT >
int pcl::GridProjection< PointNT >::getMaxBinarySearchLevel ( ) const
inline

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

getNearestNeighborNum()

template<typename PointNT >
int pcl::GridProjection< PointNT >::getNearestNeighborNum ( ) const
inline

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

getPaddingSize()

template<typename PointNT >
int pcl::GridProjection< PointNT >::getPaddingSize ( ) const
inline

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

getProjection()

template<typename PointNT >
void pcl::GridProjection< PointNT >::getProjection ( const Eigen::Vector4f & p,
pcl::Indices & pt_union_indices,
Eigen::Vector4f & projection
)
protected

Выполнить проекцию точки на поверхность и вернуть проецированную точку.

Выполнить двоичный поиск между p и p+projection_distance для поиска проецированной точки

Parameters
p координаты входной точки
pt_union_indices объединение входных точек данных внутри ячейки и ячеек заполнения
projection результирующая проецированная точка

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

getProjectionWithPlaneFit()

template<typename PointNT >
void pcl::GridProjection< PointNT >::getProjectionWithPlaneFit ( const Eigen::Vector4f & p,
pcl::Indices & pt_union_indices,
Eigen::Vector4f & projection
)
protected

Выполнить проекцию точки на поверхность и вернуть проецированную точку.

Найти плоскость, которая подходит для всех точек в pt_union_indices, спроецировать p на плоскость, чтобы получить проецированную точку.

Parameters
p координаты входной точки
pt_union_indices объединение входных точек данных внутри ячейки и ячеек заполнения
projection результирующая проецированная точка
Remarks
итеративные взвешенные наименьшие квадраты или SAC могут дать лучшие результаты

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

Ссылки на pcl::computeMeanAndCovarianceMatrix(), pcl::geometry::distance(), и pcl::eigen33().

getResolution()

template<typename PointNT >
double pcl::GridProjection< PointNT >::getResolution ( ) const
inline

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

getSurface()

template<typename PointNT >
const std::vector<Eigen::Vector4f, Eigen::aligned_allocator<Eigen::Vector4f> >& pcl::GridProjection< PointNT >::getSurface ( ) const
inline

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

getVectorAtDataPoint()

template<typename PointNT >
const std::vector<Eigen::Vector3f, Eigen::aligned_allocator<Eigen::Vector3f> >& pcl::GridProjection< PointNT >::getVectorAtDataPoint ( ) const
inline

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

getVectorAtPoint()

template<typename PointNT >
void pcl::GridProjection< PointNT >::getVectorAtPoint ( const Eigen::Vector4f & p,
pcl::Indices & pt_union_indices,
Eigen::Vector3f & vo
)
protected

Получение вектора точки по ее координатам.

Parameters
p координаты входной точки
pt_union_indices объединение входных точек данных в ячейке и смежных ячейках
vo результирующий вектор

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

Ссылки на pcl::VectorAverage< real, dimension >::add(), pcl::VectorAverage< real, dimension >::getMean() и M_E.

getVectorAtPointKNN()

template<typename PointNT >
void pcl::GridProjection< PointNT >::getVectorAtPointKNN ( const Eigen::Vector4f & p,
pcl::Indices & k_indices,
std::vector< float > & k_squared_distances,
Eigen::Vector3f & vo
)
protected

Получение вектора точки по ее координатам.

Parameters
p координаты входной точки
k_indices k ближайших соседей точки запроса
k_squared_distances квадраты расстояний k ближайших соседей от точки запроса
vo результирующий вектор

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

Ссылки на pcl::VectorAverage< real, dimension >::add(), pcl::VectorAverage< real, dimension >::getEigenVector1() и M_E.

getVertexFromCellCenter()

template<typename PointNT >
void pcl::GridProjection< PointNT >::getVertexFromCellCenter ( const Eigen::Vector4f & cell_center,
std::vector< Eigen::Vector4f, Eigen::aligned_allocator< Eigen::Vector4f > > & pts
) const
protected

Вычисление координат восьми вершин ячейки по координатам центра ячейки.

Parameters
cell_center координаты центра ячейки
pts координаты 8 вершин

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

isIntersected()

template<typename PointNT >
bool pcl::GridProjection< PointNT >::isIntersected ( const std::vector< Eigen::Vector4f, Eigen::aligned_allocator< Eigen::Vector4f > > & end_pts,
std::vector< Eigen::Vector3f, Eigen::aligned_allocator< Eigen::Vector3f > > & vect_at_end_pts,
pcl::Indices & pt_union_indices
)
protected

Проверка пересечения ребра с поверхностью с помощью скалярного произведения векторов в двух конечных точках.

Также проверяется пересечение ребра с максимальной поверхностью путем анализа второго производного пересечения.

Parameters
end_pts две точки ребра
vect_at_end_pts
pt_union_indices объединение входных точек данных в ячейке и смежных ячейках

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

performReconstruction() [1/2]

template<typename PointNT >
void pcl::GridProjection< PointNT >::performReconstruction ( pcl::PointCloud< PointNT > & points,
std::vector< pcl::Vertices > & polygons
)
overrideprotectedvirtual

Создать поверхность.

Первый шаг — заполнение области обрезки, чтобы все ячейки в области обрезки находились в хеш-таблице. Второй шаг — сохранение вектора и спроецированной точки. Третий шаг — нахождение всех ребер, пересекающих поверхность, и создание поверхности.

Параметры
[out] points результирующие точки, лежащие на поверхности
[out] polygons результирующие полигоны в виде набора вершин. Структура Vertices содержит массив индексов точек.

Реализует pcl::SurfaceReconstruction< PointNT >.

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

Ссылки на pcl::PointCloud< PointT >::header, pcl::PointCloud< PointT >::height, pcl::PointCloud< PointT >::is_dense, pcl::PointCloud< PointT >::resize(), pcl::PointCloud< PointT >::size() и pcl::PointCloud< PointT >::width.

performReconstruction() [2/2]

template<typename PointNT >
void pcl::GridProjection< PointNT >::performReconstruction ( pcl::PolygonMesh & output )
overrideprotectedvirtual

Создать поверхность.

Первый шаг — заполнение области обрезки, чтобы все ячейки в области обрезки находились в хеш-таблице. Второй шаг — сохранение вектора и спроецированной точки. Третий шаг — нахождение всех ребер, пересекающих поверхность, и создание поверхности.

Параметры
[out] output результирующая полигональная сетка

Реализует pcl::SurfaceReconstruction< PointNT >.

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

Ссылки на pcl::PolygonMesh::cloud, pcl::PolygonMesh::header, pcl::PointCloud< PointT >::height, pcl::PointCloud< PointT >::is_dense, pcl::PolygonMesh::polygons, pcl::PointCloud< PointT >::resize(), pcl::PointCloud< PointT >::size(), pcl::toPCLPointCloud2() и pcl::PointCloud< PointT >::width.

reconstructPolygons()

template<typename PointNT >
bool pcl::GridProjection< PointNT >::reconstructPolygons ( std::vector< pcl::Vertices > & polygons )
protected

Фактический метод реконструкции поверхности.

Параметры
[out] polygons результирующие полигоны в виде набора вершин. Структура Vertices содержит массив индексов точек.

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

Ссылки на pcl::GridProjection< PointNT >::Leaf::data_indices, pcl::GridProjection< PointNT >::Leaf::pt_on_surface и pcl::Vertices::vertices.

scaleInputDataPoint()

template<typename PointNT >
void pcl::GridProjection< PointNT >::scaleInputDataPoint ( double scale_factor )
protected

Когда входные точки данных не заполняют куб 1*1*1, масштабировать их, чтобы они могли быть заполнены в единичном кубе.

В противном случае при визуализации могут возникнуть проблемы с отрисовкой.

Параметры
scale_factor масштабировать все входные точки данных на scale_factor

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

setMaxBinarySearchLevel()

template<typename PointNT >
void pcl::GridProjection< PointNT >::setMaxBinarySearchLevel ( int max_binary_search_level )
inline

В проекции используется двоичный поиск.

Для данной точки x мы находим другую точку, которая находится на расстоянии 3*cell_size_ от x. Затем мы выполняем двоичный поиск между этими двумя точками, чтобы определить, где должна находиться спроецированная точка.

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

setNearestNeighborNum()

template<typename PointNT >
void pcl::GridProjection< PointNT >::setNearestNeighborNum ( int k )
inline

Устанавливается только при использовании поиска k ближайших соседей вместо поиска объединённой точки.

Параметры
k Количество ближайших соседей, которые необходимо найти

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

setPaddingSize()

template<typename PointNT >
void pcl::GridProjection< PointNT >::setPaddingSize ( int padding_size )
inline

При усреднении векторов мы находим объединение всех точек входных данных в области заполнения и выполняем взвешенное усреднение.

Предположим, что размер заполнения равен 1. При обработке ячейки (x,y,z) мы найдем объединение точек входных данных от (x-1) до (x+1), от (y-1) до (y+1), от (z-1) до (z+1) (всего 27 ячеек). Таким образом, даже если сами ячейки не содержат точек данных, мы все равно обработаем их, поскольку в области заполнения есть точки данных. Это может помочь нам исправить отверстия, которые меньше размера заполнения.

Параметры
padding_size Количество ячеек заполнения, которые мы хотим создать

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

setResolution()

template<typename PointNT >
void pcl::GridProjection< PointNT >::setResolution ( double resolution )
inline

Устанавливает размер ячейки сетки.

Параметры
resolution размер ячейки сетки

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

storeVectAndSurfacePoint()

template<typename PointNT >
void pcl::GridProjection< PointNT >::storeVectAndSurfacePoint ( int index_1d,
const Eigen::Vector3i & index_3d,
pcl::Indices & pt_union_indices,
const Leaf & cell_data
)
protected

Проходим по всем записям в хеш-таблице и обновляем cellData.

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

Параметры
index_1d индекс ячейки после её 3d индекса в одномерный массив
index_3d индекс ячейки в формате (x,y,z) 3d
pt_union_indices объединение точек входных данных внутри ячейки и областей заполнения
cell_data информация, хранящаяся в ячейке

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

Ссылки на pcl::GridProjection< PointNT >::Leaf::pt_on_surface.

storeVectAndSurfacePointKNN()

template<typename PointNT >
void pcl::GridProjection< PointNT >::storeVectAndSurfacePointKNN ( int index_1d,
const Eigen::Vector3i & index_3d,
const Leaf & cell_data
)
protected

Проходим по всем записям в хеш-таблице и обновляем cellData.

При создании хеш-таблицы поле pt_on_surface хранит центральную точку ячейки. После вызова этой функции оператор проекции спроецирует центральную точку на поверхность, и поле pt_on_surface будет обновлено с помощью спроецированной точки. Также поле vect_at_grid_pt будет обновлено с использованием вектора в вершине ячейки в верхнем левом переднем углу. При проекции точки и вычислении вектора используются k ближайших соседей вместо объединения точки входных данных внутри ячейки и областей заполнения.

Параметры
index_1d индекс ячейки после её 3d индекса в одномерный массив
index_3d индекс ячейки в формате (x,y,z) 3d
cell_data информация, хранящаяся в ячейке

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

Ссылки на pcl::GridProjection< PointNT >::Leaf::pt_on_surface.


Документация для этого класса была сгенерирована из следующих файлов:
  • pcl/surface/grid_projection.h
  • pcl/surface/impl/grid_projection.hpp

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

Spec-Zone.ru

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