Spec-Zone.ru › PointCloudLibrary

IterativeClosestPointNonLinear — это вариант ICP, использующий оптимизацию методом Левенберга — Марквардта в качестве серверной части. Подробнее...

#include <pcl/registration/icp_nl.h>

Inheritance graph
[легенда]
Collaboration graph
[легенда]

Общедоступные типы

using Ptr = shared_ptr< IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar > >
using ConstPtr = shared_ptr< const IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar > >
using Matrix4 = typename Registration< PointSource, PointTarget, Scalar >::Matrix4
- Общедоступные типы, унаследованные от pcl::IterativeClosestPoint< PointSource, PointTarget, float >
using PointCloudSource = typename Registration< PointSource, PointTarget, float >::PointCloudSource
using PointCloudSourcePtr = typename PointCloudSource::Ptr
using PointCloudSourceConstPtr = typename PointCloudSource::ConstPtr
using PointCloudTarget = typename Registration< PointSource, PointTarget, float >::PointCloudTarget
using PointCloudTargetPtr = typename PointCloudTarget::Ptr
using PointCloudTargetConstPtr = typename PointCloudTarget::ConstPtr
using PointIndicesPtr = PointIndices::Ptr
using PointIndicesConstPtr = PointIndices::ConstPtr
using Ptr = shared_ptr< IterativeClosestPoint< PointSource, PointTarget, float > >
using ConstPtr = shared_ptr< const IterativeClosestPoint< PointSource, PointTarget, float > >
using Matrix4 = typename Registration< PointSource, PointTarget, float >::Matrix4
- Общедоступные типы, унаследованные от pcl::Registration< PointSource, PointTarget, float >
using Matrix4 = Eigen::Matrix< float, 4, 4 >
using Ptr = shared_ptr< Registration< PointSource, PointTarget, float > >
using ConstPtr = shared_ptr< const Registration< PointSource, PointTarget, float > >
using CorrespondenceRejectorPtr = pcl::registration::CorrespondenceRejector::Ptr
using KdTree = pcl::search::KdTree< PointTarget >
using KdTreePtr = typename KdTree::Ptr
using KdTreeReciprocal = pcl::search::KdTree< PointSource >
using KdTreeReciprocalPtr = typename KdTreeReciprocal::Ptr
using PointCloudSource = pcl::PointCloud< PointSource >
using PointCloudSourcePtr = typename PointCloudSource::Ptr
using PointCloudSourceConstPtr = typename PointCloudSource::ConstPtr
using PointCloudTarget = pcl::PointCloud< PointTarget >
using PointCloudTargetPtr = typename PointCloudTarget::Ptr
using PointCloudTargetConstPtr = typename PointCloudTarget::ConstPtr
using PointRepresentationConstPtr = typename KdTree::PointRepresentationConstPtr
using TransformationEstimation = typename pcl::registration::TransformationEstimation< PointSource, PointTarget, float >
using TransformationEstimationPtr = typename TransformationEstimation::Ptr
using TransformationEstimationConstPtr = typename TransformationEstimation::ConstPtr
using CorrespondenceEstimation = pcl::registration::CorrespondenceEstimationBase< PointSource, PointTarget, float >
using CorrespondenceEstimationPtr = typename CorrespondenceEstimation::Ptr
using CorrespondenceEstimationConstPtr = typename CorrespondenceEstimation::ConstPtr
using UpdateVisualizerCallbackSignature = void(const pcl::PointCloud< PointSource > &, const pcl::Indices &, const pcl::PointCloud< PointTarget > &, const pcl::Indices &)
Сигнатура callback-функции, обновляющей положение промежуточного облака исходных точек во время его регистрации относительно целевого облака точек. Подробнее...
- Общедоступные типы, унаследованные от pcl::PCLBase< PointSource >
using PointCloud = pcl::PointCloud< PointSource >
using PointCloudPtr = typename PointCloud::Ptr
using PointCloudConstPtr = typename PointCloud::ConstPtr
using PointIndicesPtr = PointIndices::Ptr
using PointIndicesConstPtr = PointIndices::ConstPtr

Открытые функции-члены

IterativeClosestPointNonLinear ()
Конструктор без параметров. Подробнее...
- Открытые функции-члены, унаследованные от pcl::IterativeClosestPoint< PointSource, PointTarget, float >
IterativeClosestPoint ()
Конструктор без параметров. Подробнее...
IterativeClosestPoint (const IterativeClosestPoint &)=delete
Поскольку convergence_criteria_ хранит ссылки на члены класса, корректно реализовать операции копирования и перемещения непросто. Подробнее...
IterativeClosestPoint (IterativeClosestPoint &&)=delete
IterativeClosestPoint & operator= (const IterativeClosestPoint &)=delete
IterativeClosestPoint & operator= (IterativeClosestPoint &&)=delete
~IterativeClosestPoint () override=default
Пустой деструктор. Подробнее...
pcl::registration::DefaultConvergenceCriteria< float >::Ptr getConvergeCriteria ()
Возвращает указатель на DefaultConvergenceCriteria, используемый классом IterativeClosestPoint. Подробнее...
void setInputSource (const PointCloudSourceConstPtr &cloud) override
Задает указатель на исходные входные данные (например, облако точек, которое нужно выровнять относительно целевого облака). Подробнее...
void setInputTarget (const PointCloudTargetConstPtr &cloud) override
Задает указатель на целевые входные данные (например, облако точек, к которому нужно выровнять исходное входное облако). Подробнее...
void setUseReciprocalCorrespondences (bool use_reciprocal_correspondence)
Задает, следует ли использовать взаимные соответствия. Подробнее...
bool getUseReciprocalCorrespondences () const
Возвращает, используются ли взаимные соответствия. Подробнее...
void setNumberOfThreads (unsigned int nr_threads)
Задает количество используемых потоков. Подробнее...
- Открытые функции-члены, унаследованные от pcl::Registration< PointSource, PointTarget, float >
Registration ()
Конструктор без параметров. Подробнее...
~Registration () override=default
Деструктор. Подробнее...
void setTransformationEstimation (const TransformationEstimationPtr &te)
Задает указатель на объект оценки преобразования. Подробнее...
void setCorrespondenceEstimation (const CorrespondenceEstimationPtr &ce)
Задает указатель на объект оценки соответствий. Подробнее...
PointCloudSourceConstPtr const getInputSource ()
Возвращает указатель на набор входных данных целевого облака точек. Подробнее...
PointCloudTargetConstPtr const getInputTarget ()
Возвращает указатель на набор входных данных целевого облака точек. Подробнее...
void setSearchMethodTarget (const KdTreePtr &tree, bool force_no_recompute=false)
Задает указатель на объект поиска, используемый для нахождения соответствий в целевом облаке. Подробнее...
KdTreePtr getSearchMethodTarget () const
Возвращает указатель на метод поиска, используемый для нахождения соответствий в целевом облаке. Подробнее...
void setSearchMethodSource (const KdTreeReciprocalPtr &tree, bool force_no_recompute=false)
Задает указатель на объект поиска, используемый для нахождения соответствий в исходном облаке (обычно применяется при поиске взаимных соответствий). Подробнее...
KdTreeReciprocalPtr getSearchMethodSource () const
Возвращает указатель на метод поиска, используемый для нахождения соответствий в исходном облаке. Подробнее...
Matrix4 getFinalTransformation ()
Возвращает итоговую матрицу преобразования, вычисленную методом регистрации. Подробнее...
Matrix4 getLastIncrementalTransformation ()
Возвращает последнюю матрицу приращения преобразования, вычисленную методом регистрации. Подробнее...
void setMaximumIterations (int nr_iterations)
Задает максимальное число итераций внутренней оптимизации. Подробнее...
int getMaximumIterations ()
Возвращает заданное пользователем максимальное число итераций внутренней оптимизации. Подробнее...
void setRANSACIterations (int ransac_iterations)
Задает число итераций алгоритма RANSAC. Подробнее...
double getRANSACIterations ()
Возвращает заданное пользователем число итераций алгоритма RANSAC. Подробнее...
void setRANSACOutlierRejectionThreshold (double inlier_threshold)
Задает пороговое расстояние для точек-выбросов во внутреннем цикле отбрасывания выбросов RANSAC. Подробнее...
double getRANSACOutlierRejectionThreshold ()
Возвращает заданный пользователем порог расстояния для точек-выбросов во внутреннем цикле отбрасывания выбросов. Подробнее...
void setMaxCorrespondenceDistance (double distance_threshold)
Задает максимальный порог расстояния между двумя соответствующими точками исходного и целевого облаков. Подробнее...
double getMaxCorrespondenceDistance ()
Возвращает максимальный порог расстояния между двумя соответствующими точками исходного и целевого облаков. Подробнее...
void setTransformationEpsilon (double epsilon)
Задает эпсилон преобразования (максимально допустимую разность квадратов переносов двух последовательных преобразований), при которой оптимизация считается сошедшейся к окончательному решению. Подробнее...
double getTransformationEpsilon ()
Возвращает заданный пользователем эпсилон преобразования (максимально допустимую разность квадратов переносов двух последовательных преобразований). Подробнее...
void setTransformationRotationEpsilon (double epsilon)
Задает эпсилон вращения преобразования (максимально допустимую разность углов поворота двух последовательных преобразований), при которой оптимизация считается сошедшейся к окончательному решению. Подробнее...
double getTransformationRotationEpsilon ()
Возвращает заданный пользователем эпсилон вращения преобразования (максимально допустимую разность двух последовательных преобразований; эпсилон равен cos(угла) в представлении ось—угол). Подробнее...
void setEuclideanFitnessEpsilon (double epsilon)
Задать максимально допустимую евклидову ошибку между двумя последовательными шагами цикла ICP, при превышении которой алгоритм считается сошедшимся. Подробнее...
double getEuclideanFitnessEpsilon ()
Получить заданную пользователем максимально допустимую ошибку расстояния, при превышении которой алгоритм будет считаться сошедшимся. Подробнее...
void setPointRepresentation (const PointRepresentationConstPtr &point_representation)
Передать разделяемый указатель boost на PointRepresentation, который будет использоваться при сравнении точек. Подробнее...
bool registerVisualizationCallback (std::function< UpdateVisualizerCallbackSignature > &visualizerCallback)
Зарегистрировать пользовательскую функцию обратного вызова, которая будет вызываться из потока регистрации для обновления облака точек, полученного после каждой итерации. Подробнее...
double getFitnessScore (double max_range=std::numeric_limits< double >::max())
Получить евклидову оценку соответствия (например, среднее значение квадратов расстояний от исходного облака до целевого). Подробнее...
double getFitnessScore (const std::vector< float > &distances_a, const std::vector< float > &distances_b)
Получить евклидову оценку соответствия (например, среднее значение квадратов расстояний от исходного облака до целевого) по двум наборам расстояний между соответствующими точками (расстояний между точками исходного и целевого облаков). Подробнее...
bool hasConverged () const
Вернуть состояние сходимости после последнего запуска align. Подробнее...
void align (PointCloudSource &output)
Вызвать алгоритм регистрации, который оценивает преобразование и возвращает преобразованное исходное (входное) облако в output. Подробнее...
void align (PointCloudSource &output, const Matrix4 &guess)
Вызвать алгоритм регистрации, который оценивает преобразование и возвращает преобразованное исходное (входное) облако в output. Подробнее...
const std::string & getClassName () const
Метод получения имени абстрактного класса. Подробнее...
bool initCompute ()
Инициализация внутренних вычислений. Подробнее...
bool initComputeReciprocal ()
Внутренние вычисления, необходимые для обратного поиска. Подробнее...
void addCorrespondenceRejector (const CorrespondenceRejectorPtr &rejector)
Добавить новый фильтр соответствий в список. Подробнее...
std::vector< CorrespondenceRejectorPtr > getCorrespondenceRejectors ()
Получить список фильтров соответствий. Подробнее...
bool removeCorrespondenceRejector (unsigned int i)
Удалить i-й фильтр соответствий из списка. Подробнее...
void clearCorrespondenceRejectors ()
Очистить список фильтров соответствий. Подробнее...
- Общедоступные функции-члены, унаследованные от pcl::PCLBase< PointSource >
PCLBase ()
Конструктор без параметров. Подробнее...
PCLBase (const PCLBase &base)
Конструктор копирования. Подробнее...
virtual ~PCLBase ()=default
Деструктор. Подробнее...
virtual void setInputCloud (const PointCloudConstPtr &cloud)
Передать указатель на входной набор данных. Подробнее...
PointCloudConstPtr const getInputCloud () const
Получить указатель на входной набор облака точек. Подробнее...
virtual void setIndices (const IndicesPtr &indices)
Передать указатель на вектор индексов, задающий входные данные. Подробнее...
virtual void setIndices (const IndicesConstPtr &indices)
Передать указатель на вектор индексов, задающий входные данные. Подробнее...
virtual void setIndices (const PointIndicesConstPtr &indices)
Передать указатель на вектор индексов, задающий входные данные. Подробнее...
virtual void setIndices (std::size_t row_start, std::size_t col_start, std::size_t nb_rows, std::size_t nb_cols)
Задать индексы точек, расположенных в области интереса облака точек. Подробнее...
IndicesPtr getIndices ()
Получить указатель на используемый вектор индексов. Подробнее...
IndicesConstPtr const getIndices () const
Получить указатель на используемый вектор индексов. Подробнее...
const PointSource & operator[] (std::size_t pos) const
Переопределить operator[] класса PointCloud для сокращения кода. Подробнее...

Дополнительные унаследованные члены

- Открытые атрибуты, унаследованные от pcl::IterativeClosestPoint< PointSource, PointTarget, float >
pcl::registration::DefaultConvergenceCriteria< float >::Ptr convergence_criteria_
- Защищённые методы-члены, унаследованные от pcl::IterativeClosestPoint< PointSource, PointTarget, float >
virtual void transformCloud (const PointCloudSource &input, PointCloudSource &output, const Matrix4 &transform)
Применяет жёсткое преобразование к заданному набору данных. Подробнее...
void computeTransformation (PointCloudSource &output, const Matrix4 &guess) override
Метод вычисления жёсткого преобразования с начальным приближением. Подробнее...
virtual void determineRequiredBlobData ()
Проверяет оцениватели и фильтры отбраковки, чтобы определить, нужно ли вызывать их методы установки blob-данных. Подробнее...
- Защищённые методы-члены, унаследованные от pcl::Registration< PointSource, PointTarget, float >
bool searchForNeighbors (const PointCloudSource &cloud, int index, pcl::Indices &indices, std::vector< float > &distances)
Выполняет поиск ближайшего соседа для заданной точки. Подробнее...
virtual void computeTransformation (PointCloudSource &output, const Matrix4 &guess)=0
Абстрактный метод вычисления преобразования с начальным приближением. Подробнее...
- Защищённые методы-члены, унаследованные от pcl::PCLBase< PointSource >
bool initCompute ()
Этот метод следует вызывать перед началом собственно вычислений. Подробнее...
bool deinitCompute ()
Этот метод следует вызывать после завершения собственно вычислений. Подробнее...
- Защищённые атрибуты, унаследованные от pcl::IterativeClosestPoint< PointSource, PointTarget, float >
std::size_t x_idx_offset_
Смещение полей XYZ. Подробнее...
std::size_t y_idx_offset_
std::size_t z_idx_offset_
std::size_t nx_idx_offset_
Смещение полей нормалей. Подробнее...
std::size_t ny_idx_offset_
std::size_t nz_idx_offset_
bool use_reciprocal_correspondence_
Тип соответствий, используемый для оценки соответствий. Подробнее...
bool source_has_normals_
Внутренняя проверка наличия нормалей в исходном наборе данных. Подробнее...
bool target_has_normals_
Внутренняя проверка наличия нормалей в целевом наборе данных. Подробнее...
bool need_source_blob_
Проверяет, нужны ли оценивателям и фильтрам отбраковки различные данные. Подробнее...
bool need_target_blob_
- Защищённые атрибуты, унаследованные от pcl::Registration< PointSource, PointTarget, float >
std::string reg_name_
Название метода регистрации. Подробнее...
KdTreePtr tree_
Указатель на объект пространственного поиска. Подробнее...
KdTreeReciprocalPtr tree_reciprocal_
Указатель на объект пространственного поиска исходного набора данных. Подробнее...
int nr_iterations_
Количество итераций внутренней оптимизации (используется внутри класса). Подробнее...
int max_iterations_
Максимальное количество итераций внутренней оптимизации. Подробнее...
int ransac_iterations_
Количество итераций алгоритма RANSAC. Подробнее...
PointCloudTargetConstPtr target_
Целевой набор входных облаков точек. Подробнее...
Matrix4 final_transformation_
Итоговая матрица преобразования, оценённая методом регистрации после N итераций. Подробнее...
Matrix4 transformation_
Матрица преобразования, оценённая методом регистрации. Подробнее...
Matrix4 previous_transformation_
Предыдущая матрица преобразования, оценённая методом регистрации (используется внутри класса). Подробнее...
double transformation_epsilon_
Максимальная разница между двумя последовательными преобразованиями, при которой считается, что алгоритм сошёлся (задаётся пользователем). Подробнее...
double transformation_rotation_epsilon_
Максимальная разница углов поворота между двумя последовательными преобразованиями, при которой считается, что алгоритм сошёлся (задаётся пользователем). Подробнее...
double euclidean_fitness_epsilon_
Максимально допустимая евклидова ошибка между двумя последовательными шагами цикла ICP, при превышении которой алгоритм считается сошедшимся. Подробнее...
double corr_dist_threshold_
Максимальный порог расстояния между соответствующими точками исходного и целевого наборов. Подробнее...
double inlier_threshold_
Порог расстояния для внутренних точек во внутреннем цикле отбраковки выбросов RANSAC. Подробнее...
bool converged_
Хранит внутреннее состояние сходимости с учётом параметров, заданных пользователем. Подробнее...
unsigned int min_number_correspondences_
Минимальное количество соответствий, необходимое алгоритму для начала оценки преобразования. Подробнее...
CorrespondencesPtr correspondences_
Набор соответствий, определённых на этом шаге ICP. Подробнее...
TransformationEstimationPtr transformation_estimation_
Объект TransformationEstimation, используемый для вычисления жёсткого преобразования 4x4. Подробнее...
CorrespondenceEstimationPtr correspondence_estimation_
Объект CorrespondenceEstimation, используемый для оценки соответствий между исходным и целевым облаками. Подробнее...
std::vector< CorrespondenceRejectorPtr > correspondence_rejectors_
Список используемых фильтров соответствий. Подробнее...
bool target_cloud_updated_
Переменная, указывающая, появилось ли новое целевое облако, которое необходимо предварительно обработать повторно. Подробнее...
bool source_cloud_updated_
Переменная, указывающая, появилось ли новое исходное облако, которое необходимо предварительно обработать повторно. Подробнее...
bool force_no_recompute_
Флаг, который при установке запрещает повторное вычисление дерева, работающего с целевым облаком. Подробнее...
bool force_no_recompute_reciprocal_
Флаг, который при установке запрещает повторное вычисление дерева, работающего с исходным облаком. Подробнее...
std::function< UpdateVisualizerCallbackSignature > update_visualizer_
Функция обратного вызова для обновления положения промежуточного исходного облака точек во время его регистрации относительно целевого облака точек. Подробнее...
- защищённые атрибуты, унаследованные от pcl::PCLBase< PointSource >
PointCloudConstPtr input_
Входной набор данных облака точек. Подробнее...
IndicesPtr indices_
Указатель на вектор используемых индексов точек. Подробнее...
bool use_indices_
Установите значение true, если используются индексы точек. Подробнее...
bool fake_indices_
Если набор индексов не задан, создаётся набор фиктивных индексов, соответствующий входному облаку точек. Подробнее...

Подробное описание

template<typename PointSource, typename PointTarget, typename Scalar = float>
class pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >

IterativeClosestPointNonLinear — это вариант ICP, использующий в качестве механизма оптимизации алгоритм Левенберга — Марквардта.

Итоговое преобразование оптимизируется в виде кватерниона.

Алгоритм имеет несколько критериев завершения:

  1. Достигнуто заданное пользователем максимальное число итераций (с помощью setMaximumIterations)
  2. Эпсилон (разность) между предыдущим преобразованием и текущим оценённым преобразованием меньше заданного пользователем значения (с помощью setTransformationEpsilon)
  3. Сумма квадратов евклидовых ошибок меньше заданного пользователем порогового значения (с помощью setEuclideanFitnessEpsilon)
Автор
Radu B. Rusu, Michael Dixon

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

Документация псевдонимов типов-членов

ConstPtr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >::ConstPtr = shared_ptr< const IterativeClosestPointNonLinear<PointSource, PointTarget, Scalar> >

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

Matrix4

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >::Matrix4 = typename Registration<PointSource, PointTarget, Scalar>::Matrix4

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

Ptr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >::Ptr = shared_ptr<IterativeClosestPointNonLinear<PointSource, PointTarget, Scalar> >

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

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

IterativeClosestPointNonLinear()

template<typename PointSource , typename PointTarget , typename Scalar = float>
pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >::IterativeClosestPointNonLinear ( )
inline

Пустой конструктор.

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

Ссылки: pcl::Registration< PointSource, PointTarget, float >::min_number_correspondences_, pcl::Registration< PointSource, PointTarget, float >::reg_name_ и pcl::Registration< PointSource, PointTarget, float >::transformation_estimation_.


Документация для этого класса создана на основе следующего файла:
  • pcl/registration/icp_nl.h

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_iterative_closest_point_non_linear.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API