Spec-Zone.ru › PointCloudLibrary

Обобщённый класс для вычисления центроида переданных ему точек. Подробнее...

#include <pcl/common/centroid.h>

Общедоступные функции-члены

CentroidPoint ()=default
void add (const PointT &point)
Добавляет новую точку для вычисления центроида. Подробнее...
template<typename PointOutT >
void get (PointOutT &point) const
Возвращает текущий центроид. Подробнее...
std::size_t getSize () const
Возвращает общее количество добавленных точек. Подробнее...

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

template<typename PointT>
class pcl::CentroidPoint< PointT >

Обобщённый класс для вычисления центроида переданных ему точек.

Здесь под «центроидом» понимается не только среднее значение координат трёхмерных точек, но и средние значения в других полях данных. Универсальная функция computeNDCentroid() также реализует эту функциональность, однако делает это «вслепую»: независимо от семантики данных в поле она просто усредняет значения. В некоторых случаях (например, для полей x, y, z, intensity) такое поведение разумно, однако в других случаях (например, для полей rgb, rgba, label) оно не приводит к осмысленным результатам.

Этот класс позволяет вычислять центроид «разумным» способом, то есть с учётом смысла данных в полях. В настоящее время поддерживаются следующие поля:

Данные Поля точки Алгоритм
XYZ x, y, z Среднее значение (отдельно для каждого поля)
Нормаль normal_x, normal_y, normal_z Среднее значение (отдельно для каждого поля), результирующий вектор нормализуется
Кривизна curvature Среднее значение
Цвет rgb или rgba Среднее значение (отдельно для каналов R, G, B и альфа-канала)
Интенсивность intensity Среднее значение
Метка label Голосование большинством; если несколько меток имеют одинаковую наибольшую поддержку, выбирается метка с меньшим значением

Параметр шаблона задаёт тип точек, которые можно накапливать с помощью этого класса. Это может быть произвольный тип точки PCL; центроид будет вычисляться только для присутствующих в нём поддерживаемых полей.

Текущий центроид можно получить в любой момент с помощью get(). Обратите внимание, что функция является шаблонной по типу точки, поэтому центроид можно получить в переменную типа точки, отличного от типа накапливаемых точек. Все «дополнительные» поля, для которых центроид не вычисляется, останутся без изменений.

Пример использования:

// Create and accumulate points
CentroidPoint<pcl::PointXYZ> centroid;
centroid.add (pcl::PointXYZ (1, 2, 3);
centroid.add (pcl::PointXYZ (5, 6, 7);
// Fetch centroid using `get()`
pcl::PointXYZ c1;
centroid.get (c1);
// The expected result is: c1.x == 3, c1.y == 4, c1.z == 5
// It is also okay to use `get()` with a different point type
pcl::PointXYZRGB c2;
centroid.get (c2);
// The expected result is: c2.x == 3, c2.y == 4, c2.z == 5,
// and c2.rgb is left untouched
pcl::PointXYZA point structure representing Euclidean xyz coordinates.Definition: point_types.hpp:322
pcl::PointXYZ
A point structure representing Euclidean xyz coordinates.
Definition: point_types.hpp:322
pcl::PointXYZRGBA point structure representing Euclidean xyz coordinates, and the RGB color.Definition: point_types.hpp:594
pcl::PointXYZRGB
A point structure representing Euclidean xyz coordinates, and the RGB color.
Definition: point_types.hpp:594
Примечание
Предполагается, что добавляемые точки являются допустимыми.
Этот шаблон класса можно успешно инстанцировать для любого типа точки PCL. Разумеется, среднее значение для каждого поля вычисляется только в том случае, если тип точки содержит соответствующее поле.
Автор
Sergey Alexandrov

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

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

CentroidPoint()

template<typename PointT >
pcl::CentroidPoint< PointT >::CentroidPoint ( )
default

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

add()

template<typename PointT >
void pcl::CentroidPoint< PointT >::add ( const PointT & point )

Добавляет новую точку для вычисления центроида.

Эта функция обновляет только аккумуляторы и счётчик точек; фактическое вычисление центроида происходит при вызове get().

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

Используется в pcl::VoxelGrid< PointT >::applyFilter().

get()

template<typename PointT >
template<typename PointOutT >
void pcl::CentroidPoint< PointT >::get ( PointOutT & point ) const

Возвращает текущий центроид.

В этой функции выполняются вычисления: накопленные значения делятся на количество точек и, если применимо, нормализуются. Результат не кэшируется, поэтому каждый последующий вызов этой функции приводит к повторному вычислению.

Если количество накопленных точек равно нулю, точка останется без изменений.

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

Используется в pcl::VoxelGrid< PointT >::applyFilter().

getSize()

template<typename PointT >
std::size_t pcl::CentroidPoint< PointT >::getSize ( ) const
inline

Возвращает общее количество добавленных точек.

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


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

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

Spec-Zone.ru

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