Подробное описание
Обзор
Библиотека pcl_filters содержит механизмы удаления выбросов и шума для приложений фильтрации данных трёхмерных облаков точек.
Пример удаления шума представлен на рисунке ниже. Из-за ошибок измерения в некоторых наборах данных присутствует большое количество теневых точек. Это затрудняет оценку локальных трёхмерных признаков облака точек. Некоторые из этих выбросов можно отфильтровать, выполнив статистический анализ окрестности каждой точки и удалив точки, не соответствующие определённому критерию. Реализация удаления разреженных выбросов в PCL основана на вычислении распределения расстояний от точек до их соседей во входном наборе данных. Для каждой точки вычисляется среднее расстояние от неё до всех её соседей. Предполагая, что полученное распределение является гауссовым и имеет среднее значение и стандартное отклонение, все точки, средние расстояния до которых находятся за пределами интервала, заданного глобальным средним расстоянием и стандартным отклонением, можно считать выбросами и удалить из набора данных.
Требования
Классы | |
| класс | pcl::ApproximateVoxelGrid< PointT > |
|
ApproximateVoxelGrid формирует локальную 3D-сетку над заданным PointCloud, а затем уменьшает плотность и фильтрует данные. Подробнее... |
|
| класс | pcl::BilateralFilter< PointT > |
| Реализация двустороннего фильтра для данных облака точек. Подробнее... |
|
| класс | pcl::BoxClipper3D< PointT > |
| Реализация отсекателя по параллелепипеду в 3D. Фактически он поддерживает аффинные преобразования, поэтому позволяет задавать произвольно расположенный параллелепипед. Аффинное преобразование применяется к точке перед отсечением кубом с центром в начале координат и границами от -1 до +1 по каждому измерению. Подробнее... |
|
| класс | pcl::Clipper3D< PointT > |
| Базовый класс для объектов отсечения в 3D. Подробнее... |
|
| класс | pcl::ConditionalRemoval< PointT > |
|
ConditionalRemoval фильтрует данные, удовлетворяющие заданным условиям. Подробнее... |
|
| класс | pcl::filters::Convolution< PointIn, PointOut > |
|
Convolution — это математическая операция над двумя функциями f и g, в результате которой получается третья функция, обычно рассматриваемая как модифицированная версия одной из исходных функций. Подробнее... |
|
| класс | pcl::filters::ConvolvingKernel< PointInT, PointOutT > |
| Базовый класс ConvolvingKernel для всех свёрточных ядер. Подробнее... |
|
| класс | pcl::filters::GaussianKernel< PointInT, PointOutT > |
| Интерфейс реализации ядра Гаусса. Используйте его как образец реализации. Подробнее... |
|
| класс | pcl::filters::GaussianKernelRGB< PointInT, PointOutT > |
| Интерфейс реализации ядра Гаусса с обработкой канала RGB. Используйте его как образец реализации. Подробнее... |
|
| класс | pcl::CovarianceSampling< PointT, PointNT > |
| Выборка точек облака на основе 6D-ковариаций. Подробнее... |
|
| класс | pcl::CropBox< PointT > |
|
CropBox — это фильтр, позволяющий пользователю отфильтровать все данные внутри заданного параллелепипеда. Подробнее... |
|
| класс | pcl::CropBox< pcl::PCLPointCloud2 > |
|
CropBox — это фильтр, позволяющий пользователю отфильтровать все данные внутри заданного параллелепипеда. Подробнее... |
|
| класс | pcl::CropHull< PointT > |
|
Filter отбирает точки, расположенные внутри или снаружи замкнутой 3D-поверхности либо замкнутого 2D-многоугольника, сформированных классами ConvexHull или ConcaveHull. Подробнее... |
|
| класс | pcl::experimental::advanced::FunctorFilter< PointT, FunctionObject > |
|
Filter фильтрует облака точек и индексы на основе функционального объекта, переданного в конструктор. Подробнее... |
|
| класс | pcl::ExtractIndices< PointT > |
|
ExtractIndices извлекает набор индексов из облака точек. Подробнее... |
|
| класс | pcl::ExtractIndices< pcl::PCLPointCloud2 > |
|
ExtractIndices извлекает набор индексов из облака точек. Подробнее... |
|
| класс | pcl::FarthestPointSampling< PointT > |
|
FarthestPointSampling выполняет выборку наиболее удалённых точек по евклидову расстоянию, начиная со случайной точки и используя наивный метод. Подробнее... |
|
| класс | pcl::Filter< PointT > |
|
Filter представляет базовый класс фильтров. Подробнее... |
|
| класс | pcl::Filter< pcl::PCLPointCloud2 > |
|
Filter представляет базовый класс фильтров. Подробнее... |
|
| класс | pcl::FilterIndices< PointT > |
|
FilterIndices представляет базовый класс фильтров, выполняющих двоичное удаление точек. Подробнее... |
|
| класс | pcl::FilterIndices< pcl::PCLPointCloud2 > |
|
FilterIndices представляет базовый класс фильтров, выполняющих двоичное удаление точек. Подробнее... |
|
| класс | pcl::FrustumCulling< PointT > |
|
FrustumCulling фильтрует точки внутри усечённой пирамиды, заданной положением и полем зрения камеры. Подробнее... |
|
| класс | pcl::GridMinimum< PointT > |
|
GridMinimum формирует локальную 2D-сетку над заданным PointCloud и уменьшает плотность данных. Подробнее... |
|
| класс | pcl::LocalMaximum< PointT > |
|
LocalMaximum уменьшает плотность облака, удаляя точки, являющиеся локальными максимумами. Подробнее... |
|
| класс | pcl::MedianFilter< PointT > |
| Реализация медианного фильтра. Подробнее... |
|
| класс | pcl::ModelOutlierRemoval< PointT > |
|
ModelOutlierRemoval фильтрует точки облака на основе расстояния между моделью и точкой. Подробнее... |
|
| класс | pcl::NormalRefinement< NormalT > |
| Класс уточнения векторов нормалей Подробнее... |
|
| класс | pcl::NormalSpaceSampling< PointT, NormalT > |
|
NormalSpaceSampling выбирает точки входного облака в пространстве направлений нормалей, вычисленных в каждой точке. Подробнее... |
|
| класс | pcl::PassThrough< PointT > |
|
PassThrough пропускает точки облака на основе ограничений, заданных для одного поля типа точки. Подробнее... |
|
| класс | pcl::PassThrough< pcl::PCLPointCloud2 > |
|
PassThrough использует методы базового класса Filter, чтобы пропускать все данные, удовлетворяющие заданным пользователем ограничениям. Подробнее... |
|
| класс | pcl::PlaneClipper3D< PointT > |
| Реализация отсекателя плоскостью в 3D. Подробнее... |
|
| класс | pcl::ProjectInliers< PointT > |
|
ProjectInliers использует модель и набор индексов точек-выбросов из PointCloud, чтобы спроецировать их в отдельный PointCloud. Подробнее... |
|
| класс | pcl::ProjectInliers< pcl::PCLPointCloud2 > |
|
ProjectInliers использует модель и набор индексов точек-выбросов из PointCloud, чтобы спроецировать их в отдельный PointCloud. Подробнее... |
|
| класс | pcl::RadiusOutlierRemoval< PointT > |
|
RadiusOutlierRemoval фильтрует точки облака на основе количества их соседей. Подробнее... |
|
| класс | pcl::RadiusOutlierRemoval< pcl::PCLPointCloud2 > |
|
RadiusOutlierRemoval — простой фильтр, удаляющий выбросы, если число соседей в заданном радиусе поиска меньше указанного значения K. Подробнее... |
|
| класс | pcl::RandomSample< PointT > |
|
RandomSample выполняет случайную выборку с равномерной вероятностью. Подробнее... |
|
| класс | pcl::RandomSample< pcl::PCLPointCloud2 > |
|
RandomSample выполняет случайную выборку с равномерной вероятностью. Подробнее... |
|
| класс | pcl::SamplingSurfaceNormal< PointT > |
|
SamplingSurfaceNormal делит входное пространство на сетки так, чтобы в каждой сетке находилось не более N точек, и случайным образом выбирает точки в каждой сетке. Подробнее... |
|
| класс | pcl::ShadowPoints< PointT, NormalT > |
|
ShadowPoints удаляет фантомные точки, возникающие на разрывах границ Подробнее... |
|
| класс | pcl::StatisticalOutlierRemoval< PointT > |
|
StatisticalOutlierRemoval использует статистику окрестностей точек для фильтрации выбросов. Подробнее... |
|
| класс | pcl::StatisticalOutlierRemoval< pcl::PCLPointCloud2 > |
|
StatisticalOutlierRemoval использует статистику окрестностей точек для фильтрации выбросов. Подробнее... |
|
| класс | pcl::UniformSampling< PointT > |
|
UniformSampling формирует локальную 3D-сетку над заданным PointCloud, а затем уменьшает плотность и фильтрует данные. Подробнее... |
|
| класс | pcl::VoxelGrid< PointT > |
|
VoxelGrid формирует локальную 3D-сетку над заданным PointCloud, а затем уменьшает плотность и фильтрует данные. Подробнее... |
|
| класс | pcl::VoxelGrid< pcl::PCLPointCloud2 > |
|
VoxelGrid формирует локальную 3D-сетку над заданным PointCloud, а затем уменьшает плотность и фильтрует данные. Подробнее... |
|
| класс | pcl::VoxelGridOcclusionEstimation< PointT > |
|
VoxelGrid для оценки закрытого пространства в сцене. Подробнее... |
|
Функции | |
| template<typename PointT > | |
| void | pcl::removeNaNFromPointCloud (const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, Indices &index) |
| Удаляет точки, у которых координата x, y или z равна NaN. Подробнее... |
|
| template<typename PointT > | |
| void | pcl::removeNaNNormalsFromPointCloud (const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, Indices &index) |
| Удаляет точки с недопустимыми нормалями (т. е. равными NaN). Подробнее... |
|
| template<typename PointT > | |
| void | pcl::removeNaNFromPointCloud (const pcl::PointCloud< PointT > &cloud_in, Indices &index) |
| Удаляет точки, у которых координата x, y или z равна NaN (пробный запуск). Подробнее... |
|
| template<typename PointT > | |
| PCL_EXPORTS void | pcl::applyMorphologicalOperator (const typename pcl::PointCloud< PointT >::ConstPtr &cloud_in, float resolution, const int morphological_operator, pcl::PointCloud< PointT > &cloud_out) |
| Применяет морфологический оператор к координате z входного облака точек. Подробнее... |
|
| template<typename NormalT > | |
| std::vector< float > | pcl::assignNormalWeights (const PointCloud< NormalT > &cloud, index_t index, const Indices &k_indices, const std::vector< float > &k_sqr_distances) |
| Назначает веса соседним нормалям, используемым для уточнения. Подробнее... |
|
| template<typename NormalT > | |
| bool | pcl::refineNormal (const PointCloud< NormalT > &cloud, int index, const Indices &k_indices, const std::vector< float > &k_sqr_distances, NormalT &point) |
| Уточняет точку с заданным индексом на основе её соседей; эта функция записывает данные только в поля normal_*. Подробнее... |
|
| Eigen::MatrixXi | pcl::getHalfNeighborCellIndices () |
| Возвращает относительные индексы ячеек для 13 соседей из «верхней половины». Подробнее... |
|
| Eigen::MatrixXi | pcl::getAllNeighborCellIndices () |
| Возвращает относительные индексы ячеек для всех 26 соседей. Подробнее... |
|
| template<typename PointT > | |
| void | pcl::getMinMax3D (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const std::string &distance_field_name, float min_distance, float max_distance, Eigen::Vector4f &min_pt, Eigen::Vector4f &max_pt, bool limit_negative=false) |
| Возвращает минимальные и максимальные значения по каждой из трёх координат (x-y-z) заданного облака точек, не учитывая точки, удалённые от начала координат лазера больше заданного порога. Подробнее... |
|
| template<typename PointT > | |
| void | pcl::getMinMax3D (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const Indices &indices, const std::string &distance_field_name, float min_distance, float max_distance, Eigen::Vector4f &min_pt, Eigen::Vector4f &max_pt, bool limit_negative=false) |
| Возвращает минимальные и максимальные значения по каждой из трёх координат (x-y-z) заданного облака точек, не учитывая точки, удалённые от начала координат лазера больше заданного порога. Подробнее... |
|
Описание функций
applyMorphologicalOperator()
| PCL_EXPORTS void pcl::applyMorphologicalOperator | ( | const typename pcl::PointCloud< PointT >::ConstPtr & | cloud_in, |
| float | resolution, | ||
| const int | morphological_operator, | ||
| pcl::PointCloud< PointT > & | cloud_out | ||
| ) |
#include <pcl/filters/morphological_filter.h>
Применяет морфологический оператор к координате z входного облака точек.
- Параметры
-
[in] cloud_in входной набор данных облака точек [in] resolution размер окна для морфологической операции [in] morphological_operator применяемый морфологический оператор (открытие, закрытие, расширение, эрозия) [out] cloud_out результирующий выходной набор данных облака точек
Определение в строке 57 файла morphological_filter.hpp.
См. также pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >::addPointsFromInputCloud(), pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::boxSearch(), pcl::copyPointCloud(), pcl::PointCloud< PointT >::empty(), pcl::MORPH_CLOSE, pcl::MORPH_DILATE, pcl::MORPH_ERODE, pcl::MORPH_OPEN, pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >::setInputCloud(), pcl::PointCloud< PointT >::size() и pcl::PointCloud< PointT >::swap().
assignNormalWeights()
| inline |
#include <pcl/filters/normal_refinement.h>
Назначает веса соседним нормалям, используемым для уточнения.
- Задача:
- В настоящее время эта функция присваивает всем весам значение 1
- Параметры
-
cloud данные облака точек index допустимый индекс в cloud, представляющий допустимую (т. е. конечную) точку запроса k_indices индексы соседних точек k_sqr_distances квадраты расстояний до соседних точек
- Возвращает
- веса
Определение в строке 56 файла normal_refinement.h.
См. также pcl::utils::ignore().
Используется в pcl::refineNormal().
getAllNeighborCellIndices()
| inline |
#include <pcl/filters/voxel_grid.h>
Возвращает относительные индексы ячеек для всех 26 соседей.
- Примечание
- Полезно использовать вместе с getNeighborCentroidIndices() из VoxelGrid
Определение в строке 153 файла voxel_grid.h.
См. также pcl::getHalfNeighborCellIndices().
Используется в pcl::VoxelGridCovariance< PointT >::getAllNeighborsAtPoint() и pcl::VoxelGridCovariance< PointTarget >::getFaceNeighborsAtPoint().
getHalfNeighborCellIndices()
| inline |
#include <pcl/filters/voxel_grid.h>
Возвращает относительные индексы ячеек для 13 соседей из «верхней половины».
- Примечание
- Полезно использовать вместе с getNeighborCentroidIndices() из VoxelGrid
Определение в строке 116 файла voxel_grid.h.
Используется в pcl::getAllNeighborCellIndices().
getMinMax3D() [1/2]
| void pcl::getMinMax3D | ( | const typename pcl::PointCloud< PointT >::ConstPtr & | cloud, |
| const Indices & | indices, | ||
| const std::string & | distance_field_name, | ||
| float | min_distance, | ||
| float | max_distance, | ||
| Eigen::Vector4f & | min_pt, | ||
| Eigen::Vector4f & | max_pt, | ||
| bool |
limit_negative = false | ||
| ) |
#include <pcl/filters/voxel_grid.h>
Возвращает минимальные и максимальные значения по каждой из трёх координат (x-y-z) заданного облака точек, не учитывая точки, удалённые от начала координат лазера больше заданного порога.
- Параметры
-
[in] cloud сообщение с данными облака точек [in] indices вектор используемых индексов [in] distance_field_name имя поля, содержащего значения расстояний [in] min_distance минимальное расстояние, начиная с которого учитывается точка [in] max_distance максимальное расстояние, до которого учитывается точка [out] min_pt результирующие минимальные границы [out] max_pt результирующие максимальные границы [in] limit_negative если задано значение true, учитываются все точки за пределами интервала (min_distance;max_distace)
Определение в строке 132 файла voxel_grid.hpp.
См. также pcl::PointCloud< PointT >::is_dense.
getMinMax3D() [2/2]
| void pcl::getMinMax3D | ( | const typename pcl::PointCloud< PointT >::ConstPtr & | cloud, |
| const std::string & | distance_field_name, | ||
| float | min_distance, | ||
| float | max_distance, | ||
| Eigen::Vector4f & | min_pt, | ||
| Eigen::Vector4f & | max_pt, | ||
| bool |
limit_negative = false | ||
| ) |
#include <pcl/filters/voxel_grid.h>
Возвращает минимальные и максимальные значения по каждой из трёх координат (x-y-z) заданного облака точек, не учитывая точки, удалённые от начала координат лазера больше заданного порога.
- Параметры
-
[in] cloud сообщение с данными облака точек [in] distance_field_name имя поля, содержащего значения расстояний [in] min_distance минимальное расстояние, начиная с которого учитывается точка [in] max_distance максимальное расстояние, до которого учитывается точка [out] min_pt результирующие минимальные границы [out] max_pt результирующие максимальные границы [in] limit_negative если задано значение true, учитываются все точки за пределами интервала (min_distance;max_distace)
Определение в строке 51 файла voxel_grid.hpp.
См. также pcl::PointCloud< PointT >::is_dense и pcl::isXYZFinite().
refineNormal()
| inline |
#include <pcl/filters/normal_refinement.h>
Уточняет точку с заданным индексом на основе её соседей; эта функция записывает данные только в поля normal_*.
- Примечание
- Если среди соседей индексированной точки есть только значения NaN, результирующая нормаль будет нулевой.
- Параметры
-
cloud данные облака точек index допустимый индекс в cloud, представляющий допустимую (т. е. конечную) точку запроса k_indices индексы соседних точек k_sqr_distances квадраты расстояний до соседних точек point выходная точка; записываются только поля normal_*
- Возвращает
- false, если произошла ошибка (норма суммы нормалей равна нулю или все соседи имеют значение NaN)
Определение в строке 87 файла normal_refinement.h.
См. также pcl::assignNormalWeights().
Используется в pcl::NormalRefinement< NormalT >::applyFilter().
removeNaNFromPointCloud() [1/2]
| void pcl::removeNaNFromPointCloud | ( | const pcl::PointCloud< PointT > & | cloud_in, |
| Indices & | index | ||
| ) |
#include <pcl/filters/filter_indices.h>
Удаляет точки, у которых x, y или z равны NaN (пробный запуск).
Эта функция только вычисляет соответствие между точками входного облака и облака, которое получилось бы после фильтрации. Она не создает и не выводит отфильтрованное облако.
- Примечание
- Эта функция не изменяет входное облако точек!
- Параметры
-
cloud_in входное облако точек index соответствие (упорядоченное): filtered_cloud[i] = cloud_in[index[i]]
- См. также
- removeNaNFromPointCloud
Определение в строке 44 файла filter_indices.hpp.
Ссылки на pcl::PointCloud< PointT >::is_dense и pcl::PointCloud< PointT >::size().
removeNaNFromPointCloud() [2/2]
| void pcl::removeNaNFromPointCloud | ( | const pcl::PointCloud< PointT > & | cloud_in, |
| pcl::PointCloud< PointT > & | cloud_out, | ||
| Indices & | index | ||
| ) |
#include <pcl/filters/filter.h>
Удаляет точки, у которых x, y или z равны NaN.
- Параметры
-
[in] cloud_in входное облако точек [out] cloud_out выходное облако точек [out] index соответствие (упорядоченное): cloud_out[i] = cloud_in[index[i]]
- Примечание
- Плотность облака точек теряется.
- Можно вызвать с cloud_in == cloud_out
Определение в строке 46 файла filter.hpp.
Ссылки на pcl::PointCloud< PointT >::header, pcl::PointCloud< PointT >::height, pcl::PointCloud< PointT >::is_dense, pcl::PointCloud< PointT >::resize(), pcl::PointCloud< PointT >::sensor_orientation_, pcl::PointCloud< PointT >::sensor_origin_, pcl::PointCloud< PointT >::size() и pcl::PointCloud< PointT >::width.
Используется в pcl::kinfuLS::WorldModel< PointT >::cleanWorldFromNans() и pcl::kinfuLS::WorldModel< PointT >::getWorldAsCubes().
removeNaNNormalsFromPointCloud()
| void pcl::removeNaNNormalsFromPointCloud | ( | const pcl::PointCloud< PointT > & | cloud_in, |
| pcl::PointCloud< PointT > & | cloud_out, | ||
| Indices & | index | ||
| ) |
#include <pcl/filters/filter.h>
Удаляет точки с недопустимыми нормалями (то есть равными NaN).
- Параметры
-
[in] cloud_in входное облако точек [out] cloud_out выходное облако точек [out] index соответствие (упорядоченное): cloud_out[i] = cloud_in[index[i]]
- Примечание
- Плотность облака точек теряется.
- Можно вызвать с cloud_in == cloud_out
Определение в строке 99 файла filter.hpp.
Ссылки на pcl::PointCloud< PointT >::header, pcl::PointCloud< PointT >::height, pcl::PointCloud< PointT >::is_dense, pcl::isFinite(), pcl::PointCloud< PointT >::resize(), pcl::PointCloud< PointT >::sensor_orientation_, pcl::PointCloud< PointT >::sensor_origin_, pcl::PointCloud< PointT >::size() и pcl::PointCloud< PointT >::width.
© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/group__filters.html