Подробное описание
Обзор
Библиотека pcl_sample_consensus содержит методы согласования случайных выборок (SAC), такие как RANSAC, и модели, например плоскости и цилиндры. Их можно свободно комбинировать для обнаружения заданных моделей и их параметров в облаках точек.
В библиотеке реализованы следующие модели: линии, плоскости, цилиндры и сферы. Подгонка плоскости часто применяется для обнаружения распространённых внутренних поверхностей, таких как стены, полы и столешницы. Другие модели можно использовать для обнаружения и сегментации объектов с типичной геометрической структурой (например, для подгонки модели цилиндра к кружке).
Поддерживаются следующие модели:
- SACMODEL_PLANE — используется для определения моделей плоскостей. Четыре коэффициента плоскости задаются в нормальной форме Гессе: [normal_x normal_y normal_z d]
- SACMODEL_LINE — используется для определения моделей линий. Шесть коэффициентов линии задаются точкой на линии и её направлением: [point_on_line.x point_on_line.y point_on_line.z line_direction.x line_direction.y line_direction.z]
- SACMODEL_CIRCLE2D — используется для определения двумерных окружностей в плоскости. Три коэффициента окружности задаются её центром и радиусом: [center.x center.y radius]
- SACMODEL_CIRCLE3D — используется для определения трёхмерных окружностей в плоскости. Семь коэффициентов окружности задаются её центром, радиусом и нормалью: [center.x, center.y, center.z, radius, normal.x, normal.y, normal.z]
- SACMODEL_SPHERE — используется для определения моделей сфер. Четыре коэффициента сферы задаются её трёхмерным центром и радиусом: [center.x center.y center.z radius]
- SACMODEL_CYLINDER — используется для определения моделей цилиндров. Семь коэффициентов цилиндра задаются точкой на его оси, направлением оси и радиусом: [point_on_axis.x point_on_axis.y point_on_axis.z axis_direction.x axis_direction.y axis_direction.z radius]
- SACMODEL_CONE — используется для определения моделей конусов. Семь коэффициентов конуса задаются точкой его вершины, направлением оси и углом раскрытия: [apex.x, apex.y, apex.z, axis_direction.x, axis_direction.y, axis_direction.z, opening_angle]
- SACMODEL_TORUS — используется для определения моделей тора. Восемь коэффициентов тора задаются внутренним и внешним радиусами, центральной точкой и осью тора.
- SACMODEL_PARALLEL_LINE — модель для определения линии, параллельной заданной оси, с максимальным допустимым отклонением по углу. Коэффициенты линии аналогичны коэффициентам SACMODEL_LINE .
- SACMODEL_PERPENDICULAR_PLANE — модель для определения плоскости, перпендикулярной заданной пользователем оси, с максимальным допустимым отклонением по углу. Коэффициенты плоскости аналогичны коэффициентам SACMODEL_PLANE .
- SACMODEL_PARALLEL_LINES — пока не реализована
- SACMODEL_NORMAL_PLANE — модель для определения моделей плоскостей с дополнительным ограничением: нормали поверхности в каждой точке-выбросе должны быть параллельны нормали поверхности результирующей плоскости с максимальным допустимым отклонением по углу. Коэффициенты плоскости аналогичны коэффициентам SACMODEL_PLANE .
- SACMODEL_NORMAL_SPHERE — аналогична SACMODEL_SPHERE , но с дополнительными ограничениями на нормали поверхности.
- SACMODEL_PARALLEL_PLANE — модель для определения плоскости, параллельной заданной пользователем оси, с максимальным допустимым отклонением по углу. Коэффициенты плоскости аналогичны коэффициентам SACMODEL_PLANE .
- SACMODEL_NORMAL_PARALLEL_PLANE задаёт модель сегментации трёхмерной плоскости с использованием дополнительных ограничений на нормали поверхности. Нормаль плоскости должна быть параллельна заданной пользователем оси. Поэтому SACMODEL_NORMAL_PARALLEL_PLANE эквивалентна SACMODEL_NORMAL_PLANE + SACMODEL_PERPENDICULAR_PLANE. Коэффициенты плоскости аналогичны коэффициентам SACMODEL_PLANE .
- SACMODEL_STICK — модель сегментации трёхмерных стержней. Стержень представляет собой линию с заданной пользователем минимальной и максимальной шириной.
- SACMODEL_ELLIPSE3D — используется для определения трёхмерных эллипсов в плоскости. Одиннадцать коэффициентов эллипса задаются его центром и радиусами: [center.x, center.y, center.z, semi_axis.u, semi_axis.v, normal.x, normal.y, normal.z, u.x, u.y, u.z]
Ниже перечислены реализованные устойчивые оцениватели согласования выборок:
- SAC_RANSAC — согласование случайных выборок
- SAC_LMEDS — медиана квадратов наименьших отклонений
- SAC_MSAC — согласование выборок с M-оценивателем
- SAC_RRANSAC — рандомизированный RANSAC
- SAC_RMSAC — рандомизированный MSAC
- SAC_MLESAC — согласование выборок с оценкой максимального правдоподобия
- SAC_PROSAC — прогрессивное согласование выборок
По умолчанию, если вы не знакомы с большинством перечисленных оценивателей и принципами их работы, используйте RANSAC для проверки гипотез.
Требования
Классы | |
| класс | pcl::LeastMedianSquares< PointT > |
|
LeastMedianSquares представляет собой реализацию алгоритма LMedS (медиана квадратов наименьших отклонений). Подробнее... |
|
| класс | pcl::MaximumLikelihoodSampleConsensus< PointT > |
|
MaximumLikelihoodSampleConsensus представляет собой реализацию алгоритма MLESAC (согласование выборок с оценивателем максимального правдоподобия), описанного в работе «MLESAC: новый устойчивый оцениватель с применением для определения геометрии изображений», P.H.S. Подробнее... |
|
| класс | pcl::MEstimatorSampleConsensus< PointT > |
|
MEstimatorSampleConsensus представляет собой реализацию алгоритма MSAC (согласование выборок с M-оценивателем), описанного в работе «MLESAC: новый устойчивый оцениватель с применением для определения геометрии изображений», P.H.S. Подробнее... |
|
| класс | pcl::ProgressiveSampleConsensus< PointT > |
|
ProgressiveSampleConsensus представляет собой реализацию алгоритма PROSAC (прогрессивное согласование выборок), описанного в работе «Сопоставление с PROSAC — прогрессивное согласование выборок», Chum, O. Подробнее... |
|
| класс | pcl::RandomSampleConsensus< PointT > |
|
RandomSampleConsensus представляет собой реализацию алгоритма RANSAC (согласование случайных выборок), описанного в работе «Метод согласования случайных выборок: парадигма подгонки моделей с применением для анализа изображений и автоматизированного картографирования», Martin A. Подробнее... |
|
| класс | pcl::RandomizedMEstimatorSampleConsensus< PointT > |
|
RandomizedMEstimatorSampleConsensus представляет собой реализацию алгоритма RMSAC (рандомизированное согласование выборок с M-оценивателем), который, по сути, добавляет тест Td,d (см. RandomizedRandomSampleConsensus) к оценивателю MSAC (см. MEstimatorSampleConsensus). Подробнее... |
|
| класс | pcl::RandomizedRandomSampleConsensus< PointT > |
|
RandomizedRandomSampleConsensus представляет собой реализацию RRANSAC (рандомизированного согласования случайных выборок), описанного в работе «Рандомизированный RANSAC с тестом Td,d», O. Подробнее... |
|
| класс | pcl::SampleConsensus< T > |
|
SampleConsensus представляет базовый класс. Подробнее... |
|
| класс | pcl::SampleConsensusModel< PointT > |
|
SampleConsensusModel представляет базовый класс модели. Подробнее... |
|
| класс | pcl::SampleConsensusModelFromNormals< PointT, PointNT > |
|
SampleConsensusModelFromNormals представляет базовый класс моделей, для оценивания которых требуются нормали поверхности. Подробнее... |
|
| класс | pcl::SampleConsensusModelCircle2D< PointT > |
|
SampleConsensusModelCircle2D задаёт модель для сегментации двумерных окружностей в плоскости X-Y. Подробнее... |
|
| класс | pcl::SampleConsensusModelCircle3D< PointT > |
|
SampleConsensusModelCircle3D задаёт модель для сегментации трёхмерных окружностей. Подробнее... |
|
| класс | pcl::SampleConsensusModelCone< PointT, PointNT > |
|
SampleConsensusModelCone задаёт модель для сегментации трёхмерных конусов. Подробнее... |
|
| класс | pcl::SampleConsensusModelCylinder< PointT, PointNT > |
|
SampleConsensusModelCylinder задаёт модель для сегментации трёхмерных цилиндров. Подробнее... |
|
| класс | pcl::SampleConsensusModelEllipse3D< PointT > |
|
SampleConsensusModelEllipse3D задаёт модель для сегментации трёхмерных эллипсов. Подробнее... |
|
| класс | pcl::SampleConsensusModelLine< PointT > |
|
SampleConsensusModelLine задаёт модель для сегментации трёхмерных линий. Подробнее... |
|
| класс | pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT > |
|
SampleConsensusModelNormalParallelPlane задаёт модель для сегментации трёхмерных плоскостей с использованием дополнительных ограничений на нормали поверхности. Подробнее... |
|
| класс | pcl::SampleConsensusModelNormalPlane< PointT, PointNT > |
|
SampleConsensusModelNormalPlane задаёт модель для сегментации трёхмерных плоскостей с использованием дополнительных ограничений на нормали поверхности. Подробнее... |
|
| класс | pcl::SampleConsensusModelNormalSphere< PointT, PointNT > |
|
SampleConsensusModelNormalSphere задаёт модель для сегментации трёхмерных сфер с использованием дополнительных ограничений на нормали поверхности. Подробнее... |
|
| класс | pcl::SampleConsensusModelParallelLine< PointT > |
|
SampleConsensusModelParallelLine задаёт модель для сегментации трёхмерных линий с использованием дополнительных угловых ограничений. Подробнее... |
|
| класс | pcl::SampleConsensusModelParallelPlane< PointT > |
|
SampleConsensusModelParallelPlane задаёт модель для сегментации трёхмерных плоскостей с использованием дополнительных угловых ограничений. Подробнее... |
|
| класс | pcl::SampleConsensusModelPerpendicularPlane< PointT > |
|
SampleConsensusModelPerpendicularPlane задаёт модель для сегментации трёхмерных плоскостей с использованием дополнительных угловых ограничений. Подробнее... |
|
| класс | pcl::SampleConsensusModelPlane< PointT > |
|
SampleConsensusModelPlane задаёт модель для сегментации трёхмерных плоскостей. Подробнее... |
|
| класс | pcl::SampleConsensusModelRegistration< PointT > |
|
SampleConsensusModelRegistration задаёт модель для отбраковки выбросов при попарной регистрации точек. Подробнее... |
|
| класс | pcl::SampleConsensusModelRegistration2D< PointT > |
|
SampleConsensusModelRegistration2D задаёт модель для отбраковки выбросов при попарной регистрации точек с использованием расстояний между двумерными пикселями. Подробнее... |
|
| класс | pcl::SampleConsensusModelSphere< PointT > |
|
SampleConsensusModelSphere задаёт модель для сегментации трёхмерных сфер. Подробнее... |
|
| класс | pcl::SampleConsensusModelStick< PointT > |
|
SampleConsensusModelStick задаёт модель для сегментации трёхмерных стержней. Подробнее... |
|
| класс | pcl::SampleConsensusModelTorus< PointT, PointNT > |
|
SampleConsensusModelTorus задаёт модель для сегментации трёхмерных торов. Подробнее... |
|
Функции | |
| template<typename Point > | |
| double | pcl::pointToPlaneDistanceSigned (const Point &p, double a, double b, double c, double d) |
| Получить расстояние от точки до плоскости (со знаком), заданной уравнением ax+by+cz+d=0. Подробнее... |
|
| template<typename Point > | |
| double | pcl::pointToPlaneDistanceSigned (const Point &p, const Eigen::Vector4f &plane_coefficients) |
| Получить расстояние от точки до плоскости (со знаком), заданной уравнением ax+by+cz+d=0. Подробнее... |
|
| template<typename Point > | |
| double | pcl::pointToPlaneDistance (const Point &p, double a, double b, double c, double d) |
| Получить расстояние от точки до плоскости (без знака), заданной уравнением ax+by+cz+d=0. Подробнее... |
|
| template<typename Point > | |
| double | pcl::pointToPlaneDistance (const Point &p, const Eigen::Vector4f &plane_coefficients) |
| Получить расстояние от точки до плоскости (без знака), заданной уравнением ax+by+cz+d=0. Подробнее... |
|
Документация функций
pointToPlaneDistance() [1/2]
| inline |
#include <pcl/sample_consensus/sac_model_plane.h>
Получить расстояние от точки до плоскости (без знака), заданной уравнением ax+by+cz+d=0.
- Параметры
-
p точка plane_coefficients нормированные коэффициенты (a, b, c, d) плоскости
Определение в строке 125 файла sac_model_plane.h.
Ссылки на pcl::pointToPlaneDistanceSigned().
pointToPlaneDistance() [2/2]
| inline |
#include <pcl/sample_consensus/sac_model_plane.h>
Получить расстояние от точки до плоскости (без знака), заданной уравнением ax+by+cz+d=0.
- Параметры
-
p точка a нормированный коэффициент a плоскости b нормированный коэффициент b плоскости c нормированный коэффициент c плоскости d нормированный коэффициент d плоскости
Определение в строке 114 файла sac_model_plane.h.
Ссылки на pcl::pointToPlaneDistanceSigned().
pointToPlaneDistanceSigned() [1/2]
| inline |
#include <pcl/sample_consensus/sac_model_plane.h>
Получить расстояние от точки до плоскости (со знаком), заданной уравнением ax+by+cz+d=0.
- Параметры
-
p точка plane_coefficients нормированные коэффициенты (a, b, c, d) плоскости
Определение в строке 100 файла sac_model_plane.h.
pointToPlaneDistanceSigned() [2/2]
| inline |
#include <pcl/sample_consensus/sac_model_plane.h>
Получить расстояние от точки до плоскости (со знаком), заданной уравнением ax+by+cz+d=0.
- Параметры
-
p точка a нормированный коэффициент a плоскости b нормированный коэффициент b плоскости c нормированный коэффициент c плоскости d нормированный коэффициент d плоскости
Определение в строке 89 файла sac_model_plane.h.
Используется в pcl::pointToPlaneDistance() и pcl::ExtractPolygonalPrismData< PointT >::segment().
© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/group__sample__consensus.html