IterativeClosestPointNonLinear — это вариант ICP, использующий оптимизацию методом Левенберга — Марквардта в качестве серверной части. Подробнее...
#include <pcl/registration/icp_nl.h>
Общедоступные типы | |
| 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 |
|
| |
| 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 |
|
| |
| 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-функции, обновляющей положение промежуточного облака исходных точек во время его регистрации относительно целевого облака точек. Подробнее... |
|
|
| |
| using | PointCloud = pcl::PointCloud< PointSource > |
| using | PointCloudPtr = typename PointCloud::Ptr |
| using | PointCloudConstPtr = typename PointCloud::ConstPtr |
| using | PointIndicesPtr = PointIndices::Ptr |
| using | PointIndicesConstPtr = PointIndices::ConstPtr |
Открытые функции-члены | |
| IterativeClosestPointNonLinear () | |
| Конструктор без параметров. Подробнее... |
|
|
| |
| 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) |
| Задает количество используемых потоков. Подробнее... |
|
|
| |
| 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 () |
| Очистить список фильтров соответствий. Подробнее... |
|
|
| |
| 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::registration::DefaultConvergenceCriteria< float >::Ptr | convergence_criteria_ |
|
| |
| virtual void | transformCloud (const PointCloudSource &input, PointCloudSource &output, const Matrix4 &transform) |
| Применяет жёсткое преобразование к заданному набору данных. Подробнее... |
|
| void | computeTransformation (PointCloudSource &output, const Matrix4 &guess) override |
| Метод вычисления жёсткого преобразования с начальным приближением. Подробнее... |
|
| virtual void | determineRequiredBlobData () |
| Проверяет оцениватели и фильтры отбраковки, чтобы определить, нужно ли вызывать их методы установки blob-данных. Подробнее... |
|
|
| |
| bool | searchForNeighbors (const PointCloudSource &cloud, int index, pcl::Indices &indices, std::vector< float > &distances) |
| Выполняет поиск ближайшего соседа для заданной точки. Подробнее... |
|
| virtual void | computeTransformation (PointCloudSource &output, const Matrix4 &guess)=0 |
| Абстрактный метод вычисления преобразования с начальным приближением. Подробнее... |
|
|
| |
| bool | initCompute () |
| Этот метод следует вызывать перед началом собственно вычислений. Подробнее... |
|
| bool | deinitCompute () |
| Этот метод следует вызывать после завершения собственно вычислений. Подробнее... |
|
|
| |
| 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_ |
|
| |
| 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_ |
| Функция обратного вызова для обновления положения промежуточного исходного облака точек во время его регистрации относительно целевого облака точек. Подробнее... |
|
|
| |
| 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, использующий в качестве механизма оптимизации алгоритм Левенберга — Марквардта.
Итоговое преобразование оптимизируется в виде кватерниона.
Алгоритм имеет несколько критериев завершения:
- Достигнуто заданное пользователем максимальное число итераций (с помощью setMaximumIterations)
- Эпсилон (разность) между предыдущим преобразованием и текущим оценённым преобразованием меньше заданного пользователем значения (с помощью setTransformationEpsilon)
- Сумма квадратов евклидовых ошибок меньше заданного пользователем порогового значения (с помощью setEuclideanFitnessEpsilon)
Документация псевдонимов типов-членов
ConstPtr
| using pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >::ConstPtr = shared_ptr< const IterativeClosestPointNonLinear<PointSource, PointTarget, Scalar> > |
Matrix4
| using pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >::Matrix4 = typename Registration<PointSource, PointTarget, Scalar>::Matrix4 |
Ptr
| using pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >::Ptr = shared_ptr<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