SampleConsensusModelNormalParallelPlane определяет модель для сегментации 3D-плоскости с использованием дополнительных ограничений на нормали поверхности. Подробнее...
#include <pcl/sample_consensus/sac_model_normal_parallel_plane.h>
| using | PointCloudPtr = typename PointCloud::Ptr |
| using | SearchPtr = typename pcl::search::Search< PointT >::Ptr |
| using | Ptr = shared_ptr< SampleConsensusModel< PointT > > |
| using | ConstPtr = shared_ptr< const SampleConsensusModel< PointT > > |
|
| |
| using | PointCloudNConstPtr = typename pcl::PointCloud< PointNT >::ConstPtr |
| using | PointCloudNPtr = typename pcl::PointCloud< PointNT >::Ptr |
| using | Ptr = shared_ptr< SampleConsensusModelFromNormals< PointT, PointNT > > |
| using | ConstPtr = shared_ptr< const SampleConsensusModelFromNormals< PointT, PointNT > > |
Общедоступные функции-члены | |
| SampleConsensusModelNormalParallelPlane (const PointCloudConstPtr &cloud, bool random=false) | |
| Конструктор базового класса SampleConsensusModelNormalParallelPlane. Подробнее... |
|
| SampleConsensusModelNormalParallelPlane (const PointCloudConstPtr &cloud, const Indices &indices, bool random=false) | |
| Конструктор базового класса SampleConsensusModelNormalParallelPlane. Подробнее... |
|
| ~SampleConsensusModelNormalParallelPlane () override=default | |
| Пустой деструктор. Подробнее... |
|
| void | setAxis (const Eigen::Vector3f &ax) |
| Задать ось, вдоль которой нужно искать перпендикулярную плоскость. Подробнее... |
|
| Eigen::Vector3f | getAxis () const |
| Получить ось, вдоль которой нужно искать перпендикулярную плоскость. Подробнее... |
|
| void | setEpsAngle (const double ea) |
| Задать пороговое значение углового эпсилон (дельта). Подробнее... |
|
| double | getEpsAngle () const |
| Получить пороговое значение углового эпсилон (дельта). Подробнее... |
|
| void | setDistanceFromOrigin (const double d) |
| Задать предполагаемое расстояние от плоскости до начала координат. Подробнее... |
|
| double | getDistanceFromOrigin () const |
| Получить расстояние от плоскости до начала координат. Подробнее... |
|
| void | setEpsDist (const double delta) |
| Задать пороговое значение эпсилон расстояния (дельта). Подробнее... |
|
| double | getEpsDist () const |
| Получить пороговое значение эпсилон расстояния (дельта). Подробнее... |
|
| pcl::SacModel | getModelType () const override |
| Вернуть уникальный идентификатор этой модели (SACMODEL_NORMAL_PARALLEL_PLANE). Подробнее... |
|
|
| |
| SampleConsensusModelNormalPlane (const PointCloudConstPtr &cloud, bool random=false) | |
| Конструктор базового класса SampleConsensusModelNormalPlane. Подробнее... |
|
| SampleConsensusModelNormalPlane (const PointCloudConstPtr &cloud, const Indices &indices, bool random=false) | |
| Конструктор базового класса SampleConsensusModelNormalPlane. Подробнее... |
|
| ~SampleConsensusModelNormalPlane () override=default | |
| Пустой деструктор. Подробнее... |
|
| void | selectWithinDistance (const Eigen::VectorXf &model_coefficients, const double threshold, Indices &inliers) override |
| Выбрать все точки, которые согласно заданным коэффициентам модели являются внутренними точками. Подробнее... |
|
| std::size_t | countWithinDistance (const Eigen::VectorXf &model_coefficients, const double threshold) const override |
| Подсчитать все точки, которые согласно заданным коэффициентам модели являются внутренними точками. Подробнее... |
|
| void | getDistancesToModel (const Eigen::VectorXf &model_coefficients, std::vector< double > &distances) const override |
| Вычислить расстояния от всех точек облака до заданной модели плоскости. Подробнее... |
|
| pcl::SacModel | getModelType () const override |
| Возвращает уникальный идентификатор этой модели (SACMODEL_NORMAL_PLANE). Подробнее... |
|
|
| |
| SampleConsensusModelPlane (const PointCloudConstPtr &cloud, bool random=false) | |
| Конструктор базового класса SampleConsensusModelPlane. Подробнее... |
|
| SampleConsensusModelPlane (const PointCloudConstPtr &cloud, const Indices &indices, bool random=false) | |
| Конструктор базового класса SampleConsensusModelPlane. Подробнее... |
|
| ~SampleConsensusModelPlane () override=default | |
| Пустой деструктор. Подробнее... |
|
| bool | computeModelCoefficients (const Indices &samples, Eigen::VectorXf &model_coefficients) const override |
| Проверяет, могут ли заданные индексы образовать допустимую модель плоскости, вычисляет коэффициенты модели по этим образцам и сохраняет их внутри объекта в model_coefficients_. Подробнее... |
|
| void | getDistancesToModel (const Eigen::VectorXf &model_coefficients, std::vector< double > &distances) const override |
| Вычисляет расстояния от всех точек облака данных до заданной модели плоскости. Подробнее... |
|
| void | selectWithinDistance (const Eigen::VectorXf &model_coefficients, const double threshold, Indices &inliers) override |
| Выбирает все точки, соответствующие заданным коэффициентам модели, в качестве внутренних точек. Подробнее... |
|
| std::size_t | countWithinDistance (const Eigen::VectorXf &model_coefficients, const double threshold) const override |
| Подсчитывает все точки, соответствующие заданным коэффициентам модели, в качестве внутренних точек. Подробнее... |
|
| void | optimizeModelCoefficients (const Indices &inliers, const Eigen::VectorXf &model_coefficients, Eigen::VectorXf &optimized_coefficients) const override |
| Повторно вычисляет коэффициенты плоскости по заданному набору внутренних точек и возвращает их пользователю. Подробнее... |
|
| void | projectPoints (const Indices &inliers, const Eigen::VectorXf &model_coefficients, PointCloud &projected_points, bool copy_data_fields=true) const override |
| Создает новое облако точек, проецируя внутренние точки на модель плоскости. Подробнее... |
|
| bool | doSamplesVerifyModel (const std::set< index_t > &indices, const Eigen::VectorXf &model_coefficients, const double threshold) const override |
| Проверяет, соответствуют ли заданным коэффициентам модели плоскости индексы из подмножества. Подробнее... |
|
| pcl::SacModel | getModelType () const override |
| Возвращает уникальный идентификатор этой модели (SACMODEL_PLANE). Подробнее... |
|
|
| |
| SampleConsensusModel (const PointCloudConstPtr &cloud, bool random=false) | |
| Конструктор базового класса SampleConsensusModel. Подробнее... |
|
| SampleConsensusModel (const PointCloudConstPtr &cloud, const Indices &indices, bool random=false) | |
| Конструктор базового класса SampleConsensusModel. Подробнее... |
|
| virtual | ~SampleConsensusModel ()=default |
| Деструктор базового класса SampleConsensusModel. Подробнее... |
|
| virtual void | getSamples (int &iterations, Indices &samples) |
| Получить набор случайных образцов данных и вернуть их в виде индексов точек. Подробнее... |
|
| virtual void | setInputCloud (const PointCloudConstPtr &cloud) |
| Предоставить указатель на входной набор данных. Подробнее... |
|
| PointCloudConstPtr | getInputCloud () const |
| Получить указатель на входной набор точек. Подробнее... |
|
| void | setIndices (const IndicesPtr &indices) |
| Предоставить указатель на вектор индексов, представляющий входные данные. Подробнее... |
|
| void | setIndices (const Indices &indices) |
| Предоставить вектор индексов, представляющий входные данные. Подробнее... |
|
| IndicesPtr | getIndices () const |
| Получить указатель на используемый вектор индексов. Подробнее... |
|
| const std::string & | getClassName () const |
| Получить строковое представление имени этого класса. Подробнее... |
|
| unsigned int | getSampleSize () const |
| Вернуть размер выборки, по которой вычисляется модель. Подробнее... |
|
| unsigned int | getModelSize () const |
| Вернуть количество коэффициентов модели. Подробнее... |
|
| void | setRadiusLimits (const double &min_radius, const double &max_radius) |
| Задать допустимые минимальное и максимальное значения радиуса модели (применимо к моделям, оценивающим радиус). Подробнее... |
|
| void | getRadiusLimits (double &min_radius, double &max_radius) const |
| Получить заданные пользователем допустимые минимальное и максимальное значения радиуса модели. Подробнее... |
|
| void | setModelConstraints (std::function< bool(const Eigen::VectorXf &)> function) |
| Этот метод позволяет накладывать на модель ограничения любого типа, например Подробнее... |
|
| void | setSamplesMaxDist (const double &radius, SearchPtr search) |
| Задать максимальное расстояние, допустимое при выборе случайных образцов. Подробнее... |
|
| void | getSamplesMaxDist (double &radius) const |
| Получить максимальное расстояние, допустимое при выборе случайных образцов. Подробнее... |
|
| double | computeVariance (const std::vector< double > &error_sqr_dists) const |
| Вычислить дисперсию ошибок модели. Подробнее... |
|
| double | computeVariance () const |
| Вычислить дисперсию ошибок модели на основе внутреннего вектора оценённых расстояний. Подробнее... |
|
|
| |
| SampleConsensusModelFromNormals () | |
| Пустой конструктор базового класса SampleConsensusModelFromNormals. Подробнее... |
|
| virtual | ~SampleConsensusModelFromNormals ()=default |
| Деструктор. Подробнее... |
|
| void | setNormalDistanceWeight (const double w) |
| Задать вес углового расстояния нормали. Подробнее... |
|
| double | getNormalDistanceWeight () const |
| Получить вес углового расстояния нормали. Подробнее... |
|
| void | setInputNormals (const PointCloudNConstPtr &normals) |
| Передать указатель на входной набор данных, содержащий нормали точек набора данных XYZ. Подробнее... |
|
| PointCloudNConstPtr | getInputNormals () const |
| Получить указатель на нормали входного облака точек XYZ. Подробнее... |
|
Защищённые функции-члены | |
| bool | isModelValid (const Eigen::VectorXf &model_coefficients) const override |
| Проверить, удовлетворяет ли модель пользовательским ограничениям. Подробнее... |
|
|
| |
| std::size_t | countWithinDistanceStandard (const Eigen::VectorXf &model_coefficients, const double threshold, std::size_t i=0) const |
| В этой реализации не используются инструкции SIMD. Подробнее... |
|
|
| |
| std::size_t | countWithinDistanceStandard (const Eigen::VectorXf &model_coefficients, const double threshold, std::size_t i=0) const |
| В этой реализации не используются инструкции SIMD. Подробнее... |
|
|
| |
| SampleConsensusModel (bool random=false) | |
| Пустой конструктор базового класса SampleConsensusModel. Подробнее... |
|
| void | drawIndexSample (Indices &sample) |
| Заполняет массив выборки случайными элементами из вектора indices_. Подробнее... |
|
| void | drawIndexSampleRadius (Indices &sample) |
| Заполняет массив выборки одним случайным элементом из вектора indices_ и другими случайными элементами, расположенными ближе, чем samples_radius_. Подробнее... |
|
| int | rnd () |
| Генератор случайных чисел на основе Boost. Подробнее... |
|
Дополнительные унаследованные члены | |
|
| |
| std::string | model_name_ |
| Имя модели. Подробнее... |
|
| PointCloudConstPtr | input_ |
| Разделяемый указатель Boost на массив данных облака точек. Подробнее... |
|
| IndicesPtr | indices_ |
| Указатель на вектор используемых индексов точек. Подробнее... |
|
| double | radius_min_ |
| Минимальное и максимальное ограничения радиуса для модели. Подробнее... |
|
| double | radius_max_ |
| double | samples_radius_ |
| Максимальное расстояние от первой точки до последующих точек выборки (поиск по радиусу). Подробнее... |
|
| SearchPtr | samples_radius_search_ |
| Объект поиска для выбора последующих точек выборки с использованием поиска по радиусу. Подробнее... |
|
| Indices | shuffled_indices_ |
| Данные, содержащие перемешанную последовательность индексов. Подробнее... |
|
| boost::mt19937 | rng_alg_ |
| Алгоритм генератора случайных чисел на основе Boost. Подробнее... |
|
| std::shared_ptr< boost::uniform_int<> > | rng_dist_ |
| Распределение генератора случайных чисел на основе Boost. Подробнее... |
|
| std::shared_ptr< boost::variate_generator< boost::mt19937 &, boost::uniform_int<> > > | rng_gen_ |
| Генератор случайных чисел на основе Boost. Подробнее... |
|
| std::vector< double > | error_sqr_dists_ |
| Вектор, содержащий расстояния до вычисленной модели. Подробнее... |
|
| unsigned int | sample_size_ |
| Размер выборки, по которой вычисляется модель. Подробнее... |
|
| unsigned int | model_size_ |
| Количество коэффициентов модели. Подробнее... |
|
| std::function< bool(const Eigen::VectorXf &)> | custom_model_constraints_ |
| Определённая пользователем функция, которая принимает коэффициенты модели и возвращает признак того, является ли модель допустимой. Подробнее... |
|
|
| |
| double | normal_distance_weight_ {0.0} |
| Относительный вес (от 0 до 1), присваиваемый угловому расстоянию (от 0 до pi/2) между нормалями точек и нормалью плоскости. Подробнее... |
|
| PointCloudNConstPtr | normals_ |
| Указатель на входной набор данных, содержащий нормали точек набора данных XYZ. Подробнее... |
|
|
| |
| static const unsigned int | max_sample_checks_ = 1000 |
| Максимальное количество проб, которые нужно выполнить, прежде чем будет найдена подходящая. Подробнее... |
|
Подробное описание
template<typename PointT, typename PointNT>
class pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >
SampleConsensusModelNormalParallelPlane задаёт модель для сегментации плоскости в 3D с использованием дополнительных ограничений на нормали поверхности.
В основном это означает, что при проверке точек на принадлежность к модели учитывается не только критерий «расстояние до модели», но и дополнительное «максимальное угловое отклонение» между нормалью плоскости и нормалями точек-кандидатов. Кроме того, нормаль плоскости должна быть параллельна заданной пользователем оси. Это означает, что сама плоскость будет перпендикулярна этой оси, как и в случае SACMODEL_PERPENDICULAR_PLANE .
Коэффициенты модели определяются следующим образом:
- a : координата X нормали плоскости (нормализованной)
- b : координата Y нормали плоскости (нормализованной)
- c : координата Z нормали плоскости (нормализованной)
- d : четвёртая компонента Гессе уравнения плоскости
Чтобы задать влияние нормалей поверхности на процесс определения точек-кандидатов, установите вес нормали (0.0-1.0), например:
SampleConsensusModelNormalPlane<pcl::PointXYZ, pcl::Normal> sac_model; ... sac_model.setNormalDistanceWeight (0.1); ...
Кроме того, пользователь может задать дополнительные ограничения, например:
- ось, перпендикулярно которой нужно искать плоскость (setAxis);
- порог допуска угла между нормалью плоскости и указанной выше осью (setEpsAngle);
- ожидаемое расстояние от плоскости до начала координат (setDistanceFromOrigin);
- допуск по расстоянию, задающий максимально допустимое отклонение от указанного выше расстояния до начала координат (setEpsDist).
- Примечание
- Помните, что для активации ограничения по углу между осью и нормалью необходимо указать угол > 0!
Определение в строке 86 файла sac_model_normal_parallel_plane.h.
Документация псевдонимов типов-членов
ConstPtr
| using pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::ConstPtr = shared_ptr<const SampleConsensusModelNormalParallelPlane<PointT, PointNT> > |
Определение в строке 104 файла sac_model_normal_parallel_plane.h.
PointCloud
| using pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::PointCloud = typename SampleConsensusModel<PointT>::PointCloud |
Определение в строке 96 файла sac_model_normal_parallel_plane.h.
PointCloudConstPtr
| using pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::PointCloudConstPtr = typename SampleConsensusModel<PointT>::PointCloudConstPtr |
Определение в строке 98 файла sac_model_normal_parallel_plane.h.
PointCloudNConstPtr
| using pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::PointCloudNConstPtr = typename SampleConsensusModelFromNormals<PointT, PointNT>::PointCloudNConstPtr |
Определение в строке 101 файла sac_model_normal_parallel_plane.h.
PointCloudNPtr
| using pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::PointCloudNPtr = typename SampleConsensusModelFromNormals<PointT, PointNT>::PointCloudNPtr |
Определение в строке 100 файла sac_model_normal_parallel_plane.h.
PointCloudPtr
| using pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::PointCloudPtr = typename SampleConsensusModel<PointT>::PointCloudPtr |
Определение в строке 97 файла sac_model_normal_parallel_plane.h.
Ptr
| using pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::Ptr = shared_ptr<SampleConsensusModelNormalParallelPlane<PointT, PointNT> > |
Определение в строке 103 файла sac_model_normal_parallel_plane.h.
Документация конструкторов и деструктора
SampleConsensusModelNormalParallelPlane() [1/2]
| inline |
Конструктор базовой модели SampleConsensusModelNormalParallelPlane.
- Параметры
-
[in] cloud входной набор облака точек [in] random если true, установить начальное значение генератора случайных чисел по текущему времени, иначе установить 12345 (по умолчанию: false)
Определение в строке 110 файла sac_model_normal_parallel_plane.h.
Ссылки на pcl::SampleConsensusModel< PointT >::model_name_, pcl::SampleConsensusModel< PointT >::model_size_ и pcl::SampleConsensusModel< PointT >::sample_size_.
SampleConsensusModelNormalParallelPlane() [2/2]
| inline |
Конструктор базового класса SampleConsensusModelNormalParallelPlane.
- Параметры
-
[in] cloud входной набор данных облака точек [in] indices вектор индексов точек из cloud, которые следует использовать [in] random если true, установить начальное значение генератора случайных чисел в соответствии с текущим временем, иначе установить его в 12345 (по умолчанию: false)
Определение в строке 129 файла sac_model_normal_parallel_plane.h.
Ссылки: pcl::SampleConsensusModel< PointT >::model_name_, pcl::SampleConsensusModel< PointT >::model_size_ и pcl::SampleConsensusModel< PointT >::sample_size_.
~SampleConsensusModelNormalParallelPlane()
| overridedefault |
Пустой деструктор.
Документация функций-членов
getAxis()
| inline |
Получить ось, перпендикулярно которой требуется искать плоскость.
Определение в строке 155 файла sac_model_normal_parallel_plane.h.
Используется в pcl::SACSegmentationFromNormals< PointT, PointNT >::initSACModel().
getDistanceFromOrigin()
| inline |
Получить расстояние от плоскости до начала координат.
Определение в строке 176 файла sac_model_normal_parallel_plane.h.
Используется в pcl::SACSegmentationFromNormals< PointT, PointNT >::initSACModel().
getEpsAngle()
| inline |
Получить пороговое значение угла эпсилон (дельта).
Определение в строке 166 файла sac_model_normal_parallel_plane.h.
Используется в pcl::SACSegmentationFromNormals< PointT, PointNT >::initSACModel().
getEpsDist()
| inline |
Получить пороговое значение расстояния эпсилон (дельта).
Определение в строке 186 файла sac_model_normal_parallel_plane.h.
getModelType()
| inlineoverridevirtual |
Возвращает уникальный идентификатор этой модели (SACMODEL_NORMAL_PARALLEL_PLANE).
Реализует pcl::SampleConsensusModel< PointT >.
Определение в строке 190 файла sac_model_normal_parallel_plane.h.
Ссылка: pcl::SACMODEL_NORMAL_PARALLEL_PLANE.
isModelValid()
| overrideprotectedvirtual |
Проверить, соответствует ли модель ограничениям, заданным пользователем.
- Параметры
-
[in] model_coefficients набор коэффициентов модели
Переопределяет метод pcl::SampleConsensusModel< PointT >.
Определение в строке 48 файла sac_model_normal_parallel_plane.hpp.
setAxis()
| inline |
Задать ось, перпендикулярно которой требуется искать плоскость.
- Параметры
-
[in] ax ось, перпендикулярно которой требуется искать плоскость
Определение в строке 151 файла sac_model_normal_parallel_plane.h.
Используется в pcl::SACSegmentationFromNormals< PointT, PointNT >::initSACModel().
setDistanceFromOrigin()
| inline |
Задать ожидаемое расстояние плоскости от начала координат.
- Параметры
-
[in] d расстояние от эталонной плоскости до начала координат
Определение в строке 172 файла sac_model_normal_parallel_plane.h.
Используется в pcl::SACSegmentationFromNormals< PointT, PointNT >::initSACModel().
setEpsAngle()
| inline |
Задать пороговое значение угловой погрешности (дельты).
- Параметры
-
[in] ea максимально допустимое отклонение от 90 градусов между нормалью плоскости и заданной осью.
- Примечание
- Чтобы активировать ограничение по углу между осью и плоскостью, необходимо задать угол > 0!
Определение в строке 162 файла sac_model_normal_parallel_plane.h.
Используется в pcl::SACSegmentationFromNormals< PointT, PointNT >::initSACModel().
setEpsDist()
| inline |
Задать пороговое значение погрешности расстояния (дельты).
- Параметры
-
[in] delta максимально допустимое отклонение от эталонного расстояния до начала координат
Определение в строке 182 файла sac_model_normal_parallel_plane.h.
Документация этого класса создана на основе следующих файлов:
- pcl/sample_consensus/sac_model_normal_parallel_plane.h
- pcl/sample_consensus/impl/sac_model_normal_parallel_plane.hpp
© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_sample_consensus_model_normal_parallel_plane.html