Spec-Zone.ru › PointCloudLibrary

Grid — метод реконструкции поверхности проекцией на сетку. Подробнее...

#include <pcl/surface/grid_projection.h>

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

Классы

struct Leaf
Лист данных. Подробнее...

Открытые типы

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 ()=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 ()> Подробнее...
- Открытые функции-члены, унаследованные от pcl::PCLSurfaceBase< PointInT >
PCLSurfaceBase ()
Пустой конструктор. Подробнее...
~PCLSurfaceBase () override=default
Пустой деструктор. Подробнее...
void setSearchMethod (const KdTreePtr &tree)
Передать необязательный указатель на объект поиска. Подробнее...
KdTreePtr getSearchMethod ()
Получить указатель на используемый метод поиска. Подробнее...
- Открытые функции-члены, унаследованные от 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 operator[] для сокращения кода. Подробнее...

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

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
Преобразовать заданный 3D-индекс (x, y, z) в одномерный индекс. Подробнее...
void getIndexIn3D (int index_1d, Eigen::Vector3i &index_3d) const
Преобразовать заданный одномерный индекс в 3D-индекс (x, y, z). Подробнее...
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)
Получить первую производную. Подробнее...
double getD2AtPoint (const Eigen::Vector4f &p, const Eigen::Vector3f &vec, const pcl::Indices &pt_union_indices)
Получить вторую производную. Подробнее...
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_
Если набор индексов не задан, создаётся набор фиктивных индексов, имитирующий входное облако точек. Подробнее...

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

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

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

Автор
Rosie Li
Примечание
Если вы используете этот код в научной работе, пожалуйста, укажите следующую публикацию:
  • Ruosi Li, Lu Liu, Ly Phan, Sasakthi Abeysinghe, Cindy Grimm, Tao Ju. Polygonizing extremal surfaces with manifold guarantees. In Proceedings of the 14th ACM Symposium on Solid and Physical Modeling, 2010.

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

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

ConstPtr

template<typename PointNT >
using pcl::GridProjection< PointNT >::ConstPtr = shared_ptr<const GridProjection<PointNT> >

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

HashMap

template<typename PointNT >
using 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

template<typename PointNT >
using pcl::GridProjection< PointNT >::KdTree = pcl::KdTree<PointNT>

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

KdTreePtr

template<typename PointNT >
using pcl::GridProjection< PointNT >::KdTreePtr = typename KdTree::Ptr

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

PointCloudPtr

template<typename PointNT >
using 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)

Определение в строке 555 файла 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 результирующая точка пересечения

Определение в строке 507 файла 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) получает координаты центра ячейки.

Параметры
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) на основе положения ячейки.

Параметры
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

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

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

Определение в строке 446 файла 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

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

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

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

getDataPtsUnion()

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

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

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

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

getIndexIn1D()

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

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

Параметры
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

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

Параметры
index_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

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

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

Определение в строке 430 файла 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, чтобы найти спроецированную точку

Параметры
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 на эту плоскость, чтобы получить спроецированную точку.

Параметры
p координаты входной точки
pt_union_indices объединение входных точек данных в ячейке и ячейках дополнения
projection результирующая спроецированная точка
Примечание
итеративный взвешенный метод наименьших квадратов или 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

По заданному положению точки получить её вектор.

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

Определение в строке 351 файла 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

По заданному положению точки получить её вектор.

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

Определение в строке 396 файла 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

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

Параметры
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

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

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

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

Определение в строке 472 файла 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 >.

Определение в строке 745 файла 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 >.

Определение в строке 719 файла 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 содержит массив индексов точек.

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

Ссылки: pcl::GridProjection< PointNT >::Leaf::data_indices, pcl::isXYZFinite(), 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 индекс ячейки в 3D-формате (x,y,z)
pt_union_indices объединение индексов входных точек данных внутри ячейки и дополнительных областей
cell_data информация, хранящаяся в ячейке

Определение в строке 578 файла 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 индекс ячейки в 3D-формате (x,y,z)
cell_data информация, хранящаяся в ячейке

Определение в строке 596 файла 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