Подробное описание
Обзор
Библиотека pcl_filters содержит механизмы удаления выбросов и шума для приложений фильтрации данных облаков точек 3D.
Пример удаления шума представлен на рисунке ниже. Из-за ошибок измерения некоторые наборы данных содержат большое количество точек-теней. Это затрудняет оценку локальных 3D-признаков облака точек. Некоторые из этих выбросов можно отфильтровать, выполнив статистический анализ окрестностей каждой точки и удалив те, которые не удовлетворяют определенным критериям. Реализация удаления разреженных выбросов в 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::CropBox< PointT > |
|
CropBox — фильтр, позволяющий пользователю отфильтровать все данные внутри заданного параллелепипеда. Подробнее... |
|
| класс | pcl::CropBox< pcl::PCLPointCloud2 > |
|
CropBox — фильтр, позволяющий пользователю отфильтровать все данные внутри заданного параллелепипеда. Подробнее... |
|
| класс | pcl::CropHull< PointT > |
|
Фильтр точек, лежащих внутри или вне 3D замкнутой поверхности или 2D замкнутого многоугольника, сгенерированных классами ConvexHull или ConcaveHull. Подробнее... |
|
| класс | pcl::experimental::advanced::FunctorFilter< PointT, FunctionObject > |
|
Фильтр облаков точек и индексов на основе объекта функции, переданного в конструктор. Подробнее... |
|
| класс | pcl::ExtractIndices< PointT > |
|
ExtractIndices извлекает набор индексов из облака точек. Подробнее... |
|
| класс | pcl::ExtractIndices< pcl::PCLPointCloud2 > |
|
ExtractIndices извлекает набор индексов из облака точек. Подробнее... |
|
| класс | pcl::FarthestPointSampling< PointT > |
|
FarthestPointSampling выполняет сэмплирование наибольшего расстояния, используя евклидово расстояние, начиная с произвольной точки, используя наивный метод. Подробнее... |
|
| класс | pcl::Filter< PointT > |
|
Фильтр представляет собой базовый класс фильтра. Подробнее... |
|
| класс | pcl::Filter< pcl::PCLPointCloud2 > |
|
Фильтр представляет собой базовый класс фильтра. Подробнее... |
|
| class | pcl::FilterIndices< PointT > |
|
FilterIndices представляет базовый класс для фильтров, связанных с удалением точек по бинарному принципу. Подробнее... |
|
| class | pcl::FilterIndices< pcl::PCLPointCloud2 > |
|
FilterIndices представляет базовый класс для фильтров, связанных с удалением точек по бинарному принципу. Подробнее... |
|
| class | pcl::FrustumCulling< PointT > |
|
FrustumCulling фильтрует точки, находящиеся внутри усеченной пирамиды, заданной положением и полем зрения камеры. Подробнее... |
|
| class | pcl::GridMinimum< PointT > |
|
GridMinimum собирает локальную 2D сетку над заданным PointCloud и уменьшает объём данных. Подробнее... |
|
| class | pcl::LocalMaximum< PointT > |
|
LocalMaximum уменьшает объём облака, удаляя локально максимальные точки. Подробнее... |
|
| class | pcl::MedianFilter< PointT > |
| Реализация медианного фильтра. Подробнее... |
|
| class | pcl::NormalRefinement< NormalT > |
| Класс уточнения векторов нормалей Подробнее... |
|
| class | pcl::NormalSpaceSampling< PointT, NormalT > |
|
NormalSpaceSampling производит выборку входного облака точек в пространстве направлений нормалей, вычисленных для каждой точки. Подробнее... |
|
| class | pcl::PassThrough< PointT > |
|
PassThrough пропускает точки в облаке на основе ограничений для одного конкретного поля типа точки. Подробнее... |
|
| class | pcl::PassThrough< pcl::PCLPointCloud2 > |
|
PassThrough использует методы базового класса Filter для пропуска всех данных, соответствующих заданным пользователем ограничениям. Подробнее... |
|
| class | pcl::PlaneClipper3D< PointT > |
| Реализация обрезателя плоскости в 3D. Подробнее... |
|
| class | pcl::ProjectInliers< PointT > |
|
ProjectInliers использует модель и набор индексов внутренних точек из PointCloud для проекции их в отдельное PointCloud. Подробнее... |
|
| class | pcl::ProjectInliers< pcl::PCLPointCloud2 > |
|
ProjectInliers использует модель и набор индексов внутренних точек из PointCloud для проекции их в отдельное PointCloud. Подробнее... |
|
| class | pcl::RadiusOutlierRemoval< PointT > |
|
RadiusOutlierRemoval фильтрует точки в облаке на основе количества соседей, которые они имеют. Подробнее... |
|
| class | pcl::RadiusOutlierRemoval< pcl::PCLPointCloud2 > |
|
RadiusOutlierRemoval — простой фильтр, который удаляет выбросы, если количество соседей в определённом радиусе меньше заданного K. Подробнее... |
|
| class | pcl::RandomSample< PointT > |
|
RandomSample применяет случайную выборку с равномерной вероятностью. Подробнее... |
|
| class | pcl::RandomSample< pcl::PCLPointCloud2 > |
|
RandomSample применяет случайную выборку с равномерной вероятностью. Подробнее... |
|
| class | pcl::SamplingSurfaceNormal< PointT > |
|
SamplingSurfaceNormal делит входное пространство на сетки до тех пор, пока каждая сетка не будет содержать максимального количества N точек, и случайным образом выбирает точки внутри каждой сетки. Подробнее... |
|
| class | pcl::ShadowPoints< PointT, NormalT > |
|
ShadowPoints удаляет точки-призраки, появляющиеся на границах разрывов. Подробнее... |
|
| class | pcl::StatisticalOutlierRemoval< PointT > |
|
StatisticalOutlierRemoval использует статистику соседних точек для фильтрации выбросов. Подробнее... |
|
| class | pcl::StatisticalOutlierRemoval< pcl::PCLPointCloud2 > |
|
StatisticalOutlierRemoval использует статистику соседних точек для фильтрации выбросов. Подробнее... |
|
| class | pcl::UniformSampling< PointT > |
|
UniformSampling собирает локальную 3D сетку над заданным PointCloud и производит выборку + фильтрацию данных. Подробнее... |
|
| class | pcl::VoxelGrid< PointT > |
|
VoxelGrid собирает локальную 3D сетку над заданным PointCloud и производит выборку + фильтрацию данных. Подробнее... |
|
| class | pcl::VoxelGrid< pcl::PCLPointCloud2 > |
|
VoxelGrid собирает локальную 3D сетку над заданным PointCloud и производит выборку + фильтрацию данных. Подробнее... |
|
| class | pcl::VoxelGridOcclusionEstimation< PointT > |
|
VoxelGrid для оценки скрытых областей в сцене. Подробнее... |
|
Функции | |
| шаблон<typename PointT > | |
| void | pcl::removeNaNFromPointCloud (const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, Indices &index) |
| Удаляет точки с x, y или z, равными NaN. Подробнее... |
|
| шаблон<typename PointT > | |
| void | pcl::removeNaNNormalsFromPointCloud (const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, Indices &index) |
| Удаляет точки, у которых нормали недействительны (т.е., равны NaN) Подробнее... |
|
| шаблон<typename PointT > | |
| void | pcl::removeNaNFromPointCloud (const pcl::PointCloud< PointT > &cloud_in, Indices &index) |
| Удаляет точки с x, y или z, равными NaN (проверка). Подробнее... |
|
| шаблон<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-измерению входного облака точек. Подробнее... |
|
| шаблон<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) |
| Назначает веса соседних нормалей, используемых для уточнения. Подробнее... |
|
| шаблон<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 соседей. Подробнее... |
|
| шаблон<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) |
| Получить минимальное и максимальное значения по каждой из 3-х (x-y-z) осей в заданном облаке точек, не учитывая точки, находящиеся вне порога расстояния от начала координат лазера. Подробнее... |
|
| шаблон<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) |
| Получить минимальное и максимальное значения по каждой из 3-х (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 входного облака точек.
- Параметры
-
[вход] cloud_in набор входных данных облака точек [вход] resolution размер окна, используемого для морфологической операции [вход] morphological_operator применяемый морфологический оператор (открытие, закрытие, расширение, сужение) [выход] 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>
Назначение весов соседних нормалей, используемых для уточнения.
- Todo:
- В настоящее время эта функция выравнивает все веса до 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
Определение в строке 120 файла voxel_grid.h.
Ссылки на pcl::getHalfNeighborCellIndices().
Обращается к pcl::VoxelGridCovariance< PointT >::getAllNeighborsAtPoint() и pcl::VoxelGridCovariance< PointT >::getNeighborhoodAtPoint().
getHalfNeighborCellIndices()
| inline |
#include <pcl/filters/voxel_grid.h>
Получение относительных индексов ячеек 13 соседей "верхней половины".
- Примечание
- Полезно в сочетании с getNeighborCentroidIndices() из VoxelGrid
Определение в строке 83 файла voxel_grid.h.
Обращается к pcl::getAllNeighborCellIndices().
getMinMax3D() [1/2]
| void pcl::getMinMax3D | ( | const typename pcl::PointCloud< PointT >::ConstPtr & | облако, |
| const Indices & | индексы, | ||
| const std::string & | название_поля_расстояния, | ||
| float | мин_расстояние, | ||
| float | макс_расстояние, | ||
| Eigen::Vector4f & | мин_точка, | ||
| Eigen::Vector4f & | макс_точка, | ||
| bool |
ограничить_отрицательные = false | ||
| ) |
#include <pcl/filters/voxel_grid.h>
Получить минимальные и максимальные значения по каждой из 3 (x-y-z) осей в заданном облаке точек, не учитывая точки, находящиеся за пределами порогового расстояния от начала координат лазера.
- Parameters
-
[in] облако данные облака точек [in] индексы вектор индексов для использования [in] название_поля_расстояния имя поля, содержащего значения расстояния [in] мин_расстояние минимальное расстояние, с которого точка будет рассматриваться [in] макс_расстояние максимальное расстояние, до которого точка будет рассматриваться [out] мин_точка результирующие минимальные границы [out] макс_точка результирующие максимальные границы [in] ограничить_отрицательные если установлено в true, то все точки вне интервала (мин_расстояние;макс_расстояние) рассматриваются
Определение в строке 132 файла voxel_grid.hpp.
Ссылки на pcl::PointCloud< PointT >::is_dense.
getMinMax3D() [2/2]
| void pcl::getMinMax3D | ( | const typename pcl::PointCloud< PointT >::ConstPtr & | облако, |
| const std::string & | название_поля_расстояния, | ||
| float | мин_расстояние, | ||
| float | макс_расстояние, | ||
| Eigen::Vector4f & | мин_точка, | ||
| Eigen::Vector4f & | макс_точка, | ||
| bool |
ограничить_отрицательные = false | ||
| ) |
#include <pcl/filters/voxel_grid.h>
Получить минимальные и максимальные значения по каждой из 3 (x-y-z) осей в заданном облаке точек, не учитывая точки, находящиеся за пределами порогового расстояния от начала координат лазера.
- Parameters
-
[in] облако данные облака точек [in] название_поля_расстояния имя поля, содержащего значения расстояния [in] мин_расстояние минимальное расстояние, с которого точка будет рассматриваться [in] макс_расстояние максимальное расстояние, до которого точка будет рассматриваться [out] мин_точка результирующие минимальные границы [out] макс_точка результирующие максимальные границы [in] ограничить_отрицательные если установлено в true, то все точки вне интервала (мин_расстояние;макс_расстояние) рассматриваются
Определение в строке 51 файла voxel_grid.hpp.
Ссылки на pcl::PointCloud< PointT >::is_dense и pcl::isXYZFinite().
уточнитьНормаль()
| inline |
#include <pcl/filters/normal_refinement.h>
Уточнить нормаль для индексированной точки, основываясь на её соседях. Эта функция записывает данные только в поля нормаль_*.
- Примечание
- Если у индексированной точки в окрестности только значения NaN, результирующая нормаль будет нулевой.
- Parameters
-
облако данные облака точек индекс корректный индекс в облаке, представляющий корректную (т.е., конечную) точку запроса k_индексы индексы соседних точек k_квадраты_расстояний квадраты расстояний до соседних точек точка выходная точка, записываются только поля нормаль_*
- Возвращает
- false, если произошла ошибка (норма суммарных нормалей равна нулю или все соседи NaN)
Определение в строке 83 файла normal_refinement.h.
Ссылки на pcl::assignNormalWeights().
Используется в pcl::NormalRefinement< NormalT >::applyFilter().
удалитьNaNИзОблака() [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