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 >

Общий класс, вычисляющий центр тяжести точек, поданных на вход.

Здесь под "центром тяжести" мы понимаем не только среднее арифметическое 3D-координат точек, но и среднее арифметическое значений в других полях данных. Общецелевая функция 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:351
pcl::PointXYZ
A point structure representing Euclidean xyz coordinates.
Definition: point_types.hpp:351
pcl::PointXYZRGBA point structure representing Euclidean xyz coordinates, and the RGB color.Definition: point_types.hpp:623
pcl::PointXYZRGB
A point structure representing Euclidean xyz coordinates, and the RGB color.
Definition: point_types.hpp:623
Примечание
Предполагает, что вставляемые точки действительны.
Этот шаблон класса может быть успешно проинициализирован для любого типа точки PCL. Конечно, каждое из средних значений поля вычисляется только в том случае, если тип точки имеет соответствующее поле.
Автор
Sergey Alexandrov

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

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

CentroidPoint()

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

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

add()

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

Добавление новой точки в вычисление центра тяжести.

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

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

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

get()

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

Получение текущего центра тяжести.

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

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

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

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

getSize()

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

Получить общее количество добавленных точек.

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