Реализация регистрации методом преобразования нормального распределения (NDT) в 3D для облаков точек. Подробнее...
#include <pcl/registration/ndt.h>
Общедоступные типы | |
| using | Ptr = shared_ptr< NormalDistributionsTransform< PointSource, PointTarget, Scalar > > |
| using | ConstPtr = shared_ptr< const NormalDistributionsTransform< PointSource, PointTarget, Scalar > > |
| using | Vector3 = typename Eigen::Matrix< Scalar, 3, 1 > |
| using | Matrix4 = typename Registration< PointSource, PointTarget, Scalar >::Matrix4 |
| using | Affine3 = typename Eigen::Transform< Scalar, 3, Eigen::Affine > |
|
| |
| 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 &) |
| Сигнатура обратного вызова функции, обновляющей положение исходного облака точек на промежуточном этапе его регистрации относительно целевого облака точек. Подробнее... |
|
|
| |
| using | PointCloud = pcl::PointCloud< PointSource > |
| using | PointCloudPtr = typename PointCloud::Ptr |
| using | PointCloudConstPtr = typename PointCloud::ConstPtr |
| using | PointIndicesPtr = PointIndices::Ptr |
| using | PointIndicesConstPtr = PointIndices::ConstPtr |
Общедоступные функции-члены | |
| NormalDistributionsTransform () | |
| Конструктор. Подробнее... |
|
| ~NormalDistributionsTransform () override=default | |
| Пустой деструктор. Подробнее... |
|
| void | setInputTarget (const PointCloudTargetConstPtr &cloud) override |
| Передать указатель на целевое входное облако (например, облако точек, к которому требуется привязать исходное входное облако). Подробнее... |
|
| void | setResolution (float resolution) |
| Задать/изменить разрешение воксельной сетки. Подробнее... |
|
| void | setMinPointPerVoxel (unsigned int min_points_per_voxel) |
| Задать минимальное количество точек, необходимое для использования ячейки (для вычисления ковариации требуется не менее 3 точек). Подробнее... |
|
| float | getResolution () const |
| Получить разрешение воксельной сетки. Подробнее... |
|
| double | getStepSize () const |
| Получить максимальную длину шага в линейном поиске Ньютона. Подробнее... |
|
| void | setStepSize (double step_size) |
| Задать/изменить максимальную длину шага в линейном поиске Ньютона. Подробнее... |
|
| double | getOutlierRatio () const |
| Получить долю выбросов в облаке точек. Подробнее... |
|
| double | getOulierRatio () const |
| Получить долю выбросов в облаке точек. Подробнее... |
|
| void | setOutlierRatio (double outlier_ratio) |
| Задать/изменить долю выбросов в облаке точек. Подробнее... |
|
| void | setOulierRatio (double outlier_ratio) |
| Задать/изменить долю выбросов в облаке точек. Подробнее... |
|
| double | getTransformationLikelihood () const |
| Получить правдоподобие совмещения при регистрации. Подробнее... |
|
| double | getTransformationProbability () const |
| Получить вероятность совмещения при регистрации. Подробнее... |
|
| int | getFinalNumIteration () const |
| Получить количество итераций, необходимых для вычисления совмещения. Подробнее... |
|
| const TargetGrid & | getTargetCells () const |
Получить доступ к VoxelGridCovariance, созданной на основе целевого облака и содержащей средние значения точек и ковариации. Подробнее... |
|
|
| |
| Registration () | |
| Пустой конструктор. Подробнее... |
|
| ~Registration () override=default | |
| Деструктор. Подробнее... |
|
| void | setTransformationEstimation (const TransformationEstimationPtr &te) |
| Передать указатель на объект оценки преобразования. Подробнее... |
|
| void | setCorrespondenceEstimation (const CorrespondenceEstimationPtr &ce) |
| Передать указатель на объект оценки соответствий. Подробнее... |
|
| virtual void | setInputSource (const PointCloudSourceConstPtr &cloud) |
| Передать указатель на исходное входное облако (например, облако точек, которое требуется совместить с целевым). Подробнее... |
|
| 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 |
| Вернуть состояние сходимости после последнего запуска выравнивания. Подробнее... |
|
| 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 |
| Переопределить оператор PointCloud operator[] для сокращения кода. Подробнее... |
|
Статические общедоступные функции-члены | |
| static void | convertTransform (const Eigen::Matrix< double, 6, 1 > &x, Affine3 &trans) |
| Преобразовать вектор преобразования из 6 элементов в аффинное преобразование. Подробнее... |
|
| static void | convertTransform (const Eigen::Matrix< double, 6, 1 > &x, Matrix4 &trans) |
| Преобразовать вектор преобразования из 6 элементов в матрицу преобразования. Подробнее... |
|
Защищённые типы | |
| using | PointCloudSource = typename Registration< PointSource, PointTarget, Scalar >::PointCloudSource |
| using | PointCloudSourcePtr = typename PointCloudSource::Ptr |
| using | PointCloudSourceConstPtr = typename PointCloudSource::ConstPtr |
| using | PointCloudTarget = typename Registration< PointSource, PointTarget, Scalar >::PointCloudTarget |
| using | PointCloudTargetPtr = typename PointCloudTarget::Ptr |
| using | PointCloudTargetConstPtr = typename PointCloudTarget::ConstPtr |
| using | PointIndicesPtr = PointIndices::Ptr |
| using | PointIndicesConstPtr = PointIndices::ConstPtr |
| using | TargetGrid = VoxelGridCovariance< PointTarget > |
| Имя типа поисковой воксельной сетки, содержащей среднее значение и ковариацию. Подробнее... |
|
| using | TargetGridPtr = TargetGrid * |
| Имя типа указателя на поисковую воксельную сетку. Подробнее... |
|
| using | TargetGridConstPtr = const TargetGrid * |
| Имя типа константного указателя на поисковую воксельную сетку. Подробнее... |
|
| using | TargetGridLeafConstPtr = typename TargetGrid::LeafConstPtr |
| Имя типа константного указателя на лист поисковой воксельной сетки. Подробнее... |
|
Защищённые функции-члены | |
| virtual void | computeTransformation (PointCloudSource &output) |
| Оценить преобразование и вернуть преобразованный исходный набор данных (входные данные) в качестве результата. Подробнее... |
|
| void | computeTransformation (PointCloudSource &output, const Matrix4 &guess) override |
| Оценить преобразование и вернуть преобразованный исходный набор данных (входные данные) в качестве результата. Подробнее... |
|
| void | init () |
| Инициализировать структуру вокселей ковариации. Подробнее... |
|
| double | computeDerivatives (Eigen::Matrix< double, 6, 1 > &score_gradient, Eigen::Matrix< double, 6, 6 > &hessian, const PointCloudSource &trans_cloud, const Eigen::Matrix< double, 6, 1 > &transform, bool compute_hessian=true) |
| Вычислить производные функции правдоподобия по отношению к. Подробнее... |
|
| double | updateDerivatives (Eigen::Matrix< double, 6, 1 > &score_gradient, Eigen::Matrix< double, 6, 6 > &hessian, const Eigen::Vector3d &x_trans, const Eigen::Matrix3d &c_inv, bool compute_hessian=true) const |
| Вычислить вклад отдельной точки в производные функции правдоподобия по отношению к. Подробнее... |
|
| void | computeAngleDerivatives (const Eigen::Matrix< double, 6, 1 > &transform, bool compute_hessian=true) |
| Предварительно вычислить угловые составляющие производных. Подробнее... |
|
| void | computePointDerivatives (const Eigen::Vector3d &x, bool compute_hessian=true) |
| Вычислить производные для точки. Подробнее... |
|
| void | computeHessian (Eigen::Matrix< double, 6, 6 > &hessian, const PointCloudSource &trans_cloud) |
| Вычислить матрицу Гессе функции правдоподобия по отношению к. Подробнее... |
|
| void | updateHessian (Eigen::Matrix< double, 6, 6 > &hessian, const Eigen::Vector3d &x_trans, const Eigen::Matrix3d &c_inv) const |
| Вычислить вклад отдельной точки в матрицу Гессе функции правдоподобия по отношению к. Подробнее... |
|
| double | computeStepLengthMT (const Eigen::Matrix< double, 6, 1 > &transform, Eigen::Matrix< double, 6, 1 > &step_dir, double step_init, double step_max, double step_min, double &score, Eigen::Matrix< double, 6, 1 > &score_gradient, Eigen::Matrix< double, 6, 6 > &hessian, PointCloudSource &trans_cloud) |
| Вычислить длину шага линейного поиска и обновить преобразование и производные функции правдоподобия с использованием метода Морэ—Туэнта. Подробнее... |
|
| bool | updateIntervalMT (double &a_l, double &f_l, double &g_l, double &a_u, double &f_u, double &g_u, double a_t, double f_t, double g_t) const |
| Обновить интервал возможных длин шага для метода Морэ—Туэнта, |
|
| double | trialValueSelectionMT (double a_l, double f_l, double g_l, double a_u, double f_u, double g_u, double a_t, double f_t, double g_t) const |
| Выбрать новое пробное значение для метода Морэ—Туэнта. Подробнее... |
|
| double | auxilaryFunction_PsiMT (double a, double f_a, double f_0, double g_0, double mu=1.e-4) const |
| Вспомогательная функция для определения конечных точек интервала метода Морэ—Туэнта. Подробнее... |
|
| double | auxilaryFunction_dPsiMT (double g_a, double g_0, double mu=1.e-4) const |
| Производная вспомогательной функции для определения конечных точек интервала метода Морэ—Туэнта. Подробнее... |
|
|
| |
| 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 () |
| Этот метод следует вызывать после завершения фактических вычислений. Подробнее... |
|
Защищённые атрибуты | |
| TargetGrid | target_cells_ |
| Воксельная сетка, построенная по целевому облаку точек и содержащая средние значения и ковариационные матрицы точек. Подробнее... |
|
| float | resolution_ {1.0f} |
| Длина стороны вокселей. Подробнее... |
|
| double | step_size_ {0.1} |
| Максимальная длина шага. Подробнее... |
|
| double | outlier_ratio_ {0.55} |
| Доля выбросов среди точек относительно Подробнее... |
|
| double | gauss_d1_ {0.0} |
| Нормировочные константы, используемые для аппроксимации распределения точек нормальным распределением; уравнение 6.8 [Magnusson 2009]. Подробнее... |
|
| double | gauss_d2_ {0.0} |
| union { | |
| double trans_probability_ | |
| double trans_likelihood_ {0.0} | |
| }; | |
| Оценка правдоподобия преобразования, применённого к входному облаку точек; уравнения 6.9 и 6.10 [Magnusson 2009]. Подробнее... |
|
| Eigen::Matrix< double, 8, 4 > | angular_jacobian_ |
| Предварительно вычисленный угловой градиент. Подробнее... |
|
| Eigen::Matrix< double, 15, 4 > | angular_hessian_ |
| Предварительно вычисленная угловая матрица Гессе. Подробнее... |
|
| Eigen::Matrix< double, 3, 6 > | point_jacobian_ |
| Производная первого порядка преобразования точки относительно Подробнее... |
|
| Eigen::Matrix< double, 18, 6 > | point_hessian_ |
| Производная второго порядка преобразования точки относительно Подробнее... |
|
|
| |
| 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::NormalDistributionsTransform< PointSource, PointTarget, Scalar >
Реализация трёхмерного алгоритма регистрации облаков точек на основе нормального преобразования распределений.
- Примечание
- Дополнительную информацию см. в работах: Magnusson, M. (2009). The Three-Dimensional Normal-Distributions Transform — an Efficient Representation for регистрации, анализа поверхностей и обнаружения циклов. PhD thesis, Orebro University. Orebro Studies in Technology 36.; More, J., and Thuente, D. (1994). Line Search Algorithm with Guaranteed Sufficient Decrease In ACM Transactions on Mathematical Software.; а также Sun, W. and Yuan, Y, (2006) Optimization Theory and Methods: Nonlinear Programming. 89-100
- Математические формулы переработаны Todor Stoyanov.
Описание псевдонимов типов-членов
Affine3
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::Affine3 = typename Eigen::Transform<Scalar, 3, Eigen::Affine> |
ConstPtr
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::ConstPtr = shared_ptr<const NormalDistributionsTransform<PointSource, PointTarget, Scalar> > |
Matrix4
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::Matrix4 = typename Registration<PointSource, PointTarget, Scalar>::Matrix4 |
PointCloudSource
| protected |
PointCloudSourceConstPtr
| protected |
PointCloudSourcePtr
| protected |
PointCloudTarget
| protected |
PointCloudTargetConstPtr
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointCloudTargetConstPtr = typename PointCloudTarget::ConstPtr |
PointCloudTargetPtr
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointCloudTargetPtr = typename PointCloudTarget::Ptr |
PointIndicesConstPtr
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointIndicesConstPtr = PointIndices::ConstPtr |
PointIndicesPtr
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointIndicesPtr = PointIndices::Ptr |
Ptr
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::Ptr = shared_ptr<NormalDistributionsTransform<PointSource, PointTarget, Scalar> > |
TargetGrid
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::TargetGrid = VoxelGridCovariance<PointTarget> |
TargetGridConstPtr
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::TargetGridConstPtr = const TargetGrid* |
TargetGridLeafConstPtr
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::TargetGridLeafConstPtr = typename TargetGrid::LeafConstPtr |
TargetGridPtr
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::TargetGridPtr = TargetGrid* |
Vector3
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::Vector3 = typename Eigen::Matrix<Scalar, 3, 1> |
Описание конструкторов и деструкторов
NormalDistributionsTransform()
| pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::NormalDistributionsTransform |
Конструктор.
Устанавливает outlier_ratio_ в значение 0.55, step_size_ в значение 0.1 и resolution_ в значение 1.0
Определение в строке 47 файла ndt.hpp.
Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::gauss_d1_, pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::gauss_d2_, pcl::Registration< PointSource, PointTarget, float >::max_iterations_, pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_, pcl::Registration< PointSource, PointTarget, float >::reg_name_, pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::resolution_ и pcl::Registration< PointSource, PointTarget, float >::transformation_epsilon_.
~NormalDistributionsTransform()
| pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::~NormalDistributionsTransform | ( | ) |
Пустой деструктор.
Описание функций-членов
auxilaryFunction_dPsiMT()
| double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::auxilaryFunction_dPsiMT | ( | double | g_a, |
| double | g_0, | ||
| double |
mu = 1.e-4 | ||
| ) | const |
Вспомогательная функция производной, используемая для определения конечных точек интервала More-Thuente.
- Примечание
-
, производная уравнения 1.6 (Moore, Thuente 1994)
- Параметры
-
[in] g_a градиент функции при длине шага a, в More-Thuente (1994)
[in] g_0 начальный градиент функции, в More-Thuente (1994)
[in] mu длина шага, константа в уравнении 1.1 [More, Thuente 1994]
- Возвращает
- производную достаточного убывания
auxilaryFunction_PsiMT()
| double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::auxilaryFunction_PsiMT | ( | double | a, |
| double | f_a, | ||
| double | f_0, | ||
| double | g_0, | ||
| double |
mu = 1.e-4 | ||
| ) | const |
Вспомогательная функция, используемая для определения конечных точек интервала More-Thuente.
- Примечание
-
в уравнении 1.6 (Moore, Thuente 1994)
- Параметры
-
[in] a длина шага, в More-Thuente (1994)
[in] f_a значение функции при длине шага a, в More-Thuente (1994)
[in] f_0 начальное значение функции, в Moore-Thuente (1994)
[in] g_0 начальный градиент функции, в More-Thuente (1994)
[in] mu длина шага, константа в уравнении 1.1 [More, Thuente 1994]
- Возвращает
- значение достаточного убывания
computeAngleDerivatives()
| void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::computeAngleDerivatives | ( | const Eigen::Matrix< double, 6, 1 > & | transform, |
| bool |
compute_hessian = true | ||
| ) |
computeDerivatives()
| protected |
Вычислить производные функции правдоподобия по отношению к
вектору преобразования.
- Примечание
- Уравнения 6.10, 6.12 и 6.13 [Magnusson 2009].
- Параметры
-
[out] score_gradient вектор градиента функции правдоподобия по отношению к вектору преобразования [out] hessian матрица Гессе функции правдоподобия по отношению к вектору преобразования [in] trans_cloud преобразованное облако точек [in] transform текущий вектор преобразования [in] compute_hessian флаг вычисления матрицы Гессе; для вычисления шага не требуется.
computeHessian()
| protected |
Вычислить матрицу Гессе функции правдоподобия по отношению к
вектору преобразования.
- Примечание
- Уравнение 6.13 [Magnusson 2009].
- Параметры
-
[out] hessian матрица Гессе функции правдоподобия по отношению к вектору преобразования [in] trans_cloud преобразованное облако точек
computePointDerivatives()
| protected |
computeStepLengthMT()
| protected |
Вычислить длину шага линейного поиска и обновить преобразование и производные правдоподобия с помощью метода Морэ—Туэнта.
- Примечание
- Алгоритм поиска [More, Thuente 1994]
- Параметры
-
[in] transform начальный вектор преобразования, в уравнении 1.3 (Moore, Thuente 1994) и
в алгоритме 2 [Magnusson 2009]
[in] step_dir направление спуска, в уравнении 1.3 (Moore, Thuente 1994) и
нормализовано в алгоритме 2 [Magnusson 2009]
[in] step_init начальная оценка длины шага, у Moore-Thuente (1994) и норма
в алгоритме 2 [Magnusson 2009]
[in] step_max максимальная длина шага, у Moore-Thuente (1994)
[in] step_min минимальная длина шага, у Moore-Thuente (1994)
[out] score итоговое значение целевой функции, в уравнении 1.3 (Moore, Thuente 1994) и
в алгоритме 2 [Magnusson 2009]
[in,out] score_gradient градиент целевой функции по отношению к вектору преобразования, у Moore-Thuente (1994) и
в алгоритме 2 [Magnusson 2009]
[out] hessian матрица Гессе целевой функции по отношению к вектору преобразования, у Moore-Thuente (1994) и
в алгоритме 2 [Magnusson 2009]
[in,out] trans_cloud преобразованное облако точек, преобразованное с помощью
в алгоритме 2 [Magnusson 2009]
- Возвращает
- итоговую длину шага
Определение в строке 659 файла ndt.hpp.
Ссылки: pcl::transformPointCloud().
computeTransformation() [1/2]
| inlineprotectedvirtual |
computeTransformation() [2/2]
| overrideprotected |
Оценить преобразование и вернуть преобразованный исходный набор данных (входное облако) в качестве выходных данных.
- Параметры
-
[out] output результирующий преобразованный входной набор данных облака точек [in] guess начальная грубая оценка преобразования
Определение в строке 68 файла ndt.hpp.
Ссылки: pcl::transformPointCloud().
convertTransform() [1/2]
| inlinestatic |
Преобразовать шестикомпонентный вектор преобразования в аффинное преобразование.
- Параметры
-
[in] x вектор преобразования вида [x, y, z, roll, pitch, yaw] [out] trans аффинное преобразование, соответствующее заданному вектору преобразования
Определение в строке 269 файла ndt.h.
Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::convertTransform().
convertTransform() [2/2]
| inlinestatic |
Преобразовать шестикомпонентный вектор преобразования в матрицу преобразования.
- Параметры
-
[in] x вектор преобразования вида [x, y, z, roll, pitch, yaw] [out] trans матрица преобразования 4x4, соответствующая заданному вектору преобразования
Определение в строке 283 файла ndt.h.
Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::convertTransform().
getFinalNumIteration()
| inline |
Получить количество итераций, необходимых для вычисления совмещения.
- Возвращает
- итоговое количество итераций
Определение в строке 244 файла ndt.h.
Ссылки: pcl::Registration< PointSource, PointTarget, float >::nr_iterations_.
getOulierRatio()
| inline |
Получить долю выбросов в облаке точек.
- Возвращает
- доля выбросов
- Устарело:
- Планируется удалить в версии 1 . 18 : "Метод `getOulierRatio` переименован в " "`getOutlierRatio`."
Определение в строке 191 файла ndt.h.
Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_.
getOutlierRatio()
| inline |
Получить долю выбросов в облаке точек.
- Возвращает
- доля выбросов
Определение в строке 178 файла ndt.h.
Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_.
getResolution()
| inline |
Получить разрешение воксельной сетки.
- Возвращает
- длина стороны вокселя
Определение в строке 151 файла ndt.h.
Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::resolution_.
getStepSize()
| inline |
Получить максимальную длину шага ньютоновского линейного поиска.
- Возвращает
- максимальная длина шага
Определение в строке 160 файла ndt.h.
Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::step_size_.
getTargetCells()
| inline |
Получить доступ к VoxelGridCovariance, созданной на основе целевого облака и содержащей средние значения и ковариации точек.
Перед вызовом задайте входное целевое облако. Полезно, например, для отладки.
pcl::PointCloud<PointXYZ> visualize_cloud; ndt.getTargetCells().getDisplayCloud(visualize_cloud); pcl::PointCloudPointCloud represents the base class in PCL for storing collections of 3D points.Definition: point_cloud.h:173 pcl::PointCloud PointCloud represents the base class in PCL for storing collections of 3D points. Definition: point_cloud.h:173
Определение в строке 258 файла ndt.h.
Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::target_cells_.
getTransformationLikelihood()
| inline |
Получить правдоподобие совмещения при регистрации.
- Возвращает
- правдоподобие преобразования
Определение в строке 222 файла ndt.h.
Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_likelihood_.
getTransformationProbability()
| inline |
Получить вероятность совмещения при регистрации.
- Возвращает
- вероятность преобразования
- Устарело:
- Планируется удалить в версии 1 . 16 : "Метод `getTransformationProbability` переименован в " "`getTransformationLikelihood`."
Определение в строке 235 файла ndt.h.
Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_likelihood_.
init()
| inlineprotected |
Инициализировать структуру ковариационных вокселей.
Определение в строке 329 файла ndt.h.
Ссылки на pcl::VoxelGridCovariance< PointT >::filter(), pcl::VoxelGridCovariance< PointT >::getCentroids(), pcl::Registration< PointSource, PointTarget, float >::getClassName(), pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::resolution_, pcl::PCLBase< PointT >::setInputCloud(), pcl::VoxelGrid< PointT >::setLeafSize(), pcl::Registration< PointSource, PointTarget, float >::target_ и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::target_cells_.
На этот метод ссылаются pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setInputTarget() и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setResolution().
setInputTarget()
| inlineoverridevirtual |
Передать указатель на целевое входное облако (например, облако точек, к которому требуется выровнять исходное входное облако).
- Параметры
-
[in] cloud целевое входное облако точек
Переопределяет метод из pcl::Registration< PointSource, PointTarget, float >.
Определение в строке 114 файла ndt.h.
Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::init() и pcl::Registration< PointSource, PointTarget, Scalar >::setInputTarget().
setMinPointPerVoxel()
| inline |
Задать минимальное количество точек, необходимое для использования ячейки (для вычисления ковариации требуется не менее 3 точек).
Вызывает функцию базового класса VoxelGridCovariance. Эту функцию необходимо вызвать до setInputTarget и setResolution.
- Параметры
-
[in] min_points_per_voxel минимальное количество точек, необходимое для использования вокселя
Определение в строке 142 файла ndt.h.
Ссылки на pcl::VoxelGridCovariance< PointT >::setMinPointPerVoxel() и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::target_cells_.
setOulierRatio()
| inline |
Задать или изменить долю выбросов в облаке точек.
- Устарело:
- Будет удалено в версии 1 . 18 : "Метод `setOulierRatio` переименован в " "`setOutlierRatio`."
- Параметры
-
[in] outlier_ratio доля выбросов
Определение в строке 213 файла ndt.h.
Ссылка на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_.
setOutlierRatio()
| inline |
Задать или изменить долю выбросов в облаке точек.
- Параметры
-
[in] outlier_ratio доля выбросов
Определение в строке 200 файла ndt.h.
Ссылка на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_.
setResolution()
| inline |
Задать или изменить разрешение воксельной сетки.
- Параметры
-
[in] resolution длина ребра вокселя
Определение в строке 124 файла ndt.h.
Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::init(), pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::resolution_ и pcl::Registration< PointSource, PointTarget, float >::target_.
setStepSize()
| inline |
Задать или изменить максимальную длину шага для линейного поиска Ньютона.
- Параметры
-
[in] step_size максимальная длина шага
Определение в строке 169 файла ndt.h.
Ссылка на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::step_size_.
trialValueSelectionMT()
| protected |
Выбрать новое пробное значение для метода More-Thuente.
- Примечание
- Выбор пробного значения [More, Thuente 1994]:
используется для
и
до тех пор, пока некоторое значение не удовлетворит условиям
и
; после этого используется
.
- Уравнения интерполяции минимизатора из книги «Теория и методы оптимизации: нелинейное программирование» Вэнью Суна и Я-сяна Юаня (с. 89–100).
- Параметры
-
[in] a_l первая граница интервала ,
в работе Moore-Thuente (1994)
[in] f_l значение в первой граничной точке, в работе Moore-Thuente (1994)
[in] g_l производная в первой граничной точке, в работе Moore-Thuente (1994)
[in] a_u вторая граница интервала ,
в работе Moore-Thuente (1994)
[in] f_u значение во второй граничной точке, в работе Moore-Thuente (1994)
[in] g_u производная во второй граничной точке, в работе Moore-Thuente (1994)
[in] a_t предыдущее пробное значение, в работе Moore-Thuente (1994)
[in] f_t значение в предыдущей пробной точке, в работе Moore-Thuente (1994)
[in] g_t производная в предыдущей пробной точке, в работе Moore-Thuente (1994)
- Возвращает
- новое пробное значение
updateDerivatives()
| protected |
Вычислить вклад каждой точки в производные функции правдоподобия по отношению к
вектору преобразования.
- Примечание
- Уравнения 6.10, 6.12 и 6.13 [Magnusson 2009].
- Параметры
-
[in,out] score_gradient вектор градиента функции правдоподобия по отношению к вектору преобразования [in,out] hessian матрица Гессе функции правдоподобия по отношению к вектору преобразования [in] x_trans преобразованная точка минус среднее значение занятого ковариационного вокселя [in] c_inv ковариация занятого ковариационного вокселя [in] compute_hessian флаг вычисления матрицы Гессе; для вычисления шага не требуется.
updateHessian()
| protected |
Вычислить вклад каждой точки в матрицу Гессе функции правдоподобия по отношению к
вектору преобразования.
- Примечание
- Уравнение 6.13 [Magnusson 2009].
- Параметры
-
[in,out] hessian матрица Гессе функции правдоподобия по отношению к вектору преобразования [in] x_trans преобразованная точка минус среднее значение занятого ковариационного вокселя [in] c_inv ковариация занятого ковариационного вокселя
updateIntervalMT()
| protected |
Обновить интервал возможных длин шага для метода More-Thuente, в работе More-Thuente (1994)
- Примечание
- Алгоритм обновления используется до тех пор, пока некоторое значение не удовлетворит условиям
и
; после этого используется модифицированный алгоритм обновления [More, Thuente 1994].
- Параметры
-
[in,out] a_l первая граница интервала ,
в работе Moore-Thuente (1994)
[in,out] f_l значение в первой граничной точке, в работе Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
[in,out] g_l производная в первой граничной точке, в работе Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
[in,out] a_u вторая граница интервала ,
в работе Moore-Thuente (1994)
[in,out] f_u значение во второй граничной точке, в работе Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
[in,out] g_u производная во второй граничной точке, в работе Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
[in] a_t пробное значение, в работе Moore-Thuente (1994)
[in] f_t значение в пробной точке, в работе Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
[in] g_t производная в пробной точке, в работе Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
- Возвращает
- признак сходимости интервала
Документация данных-членов
| union { ... } |
Оценка правдоподобия преобразования, применённого к входному облаку; уравнения 6.9 и 6.10 [Magnusson 2009].
angular_hessian_
| protected |
angular_jacobian_
| protected |
gauss_d1_
| protected |
Константы нормализации, используемые для аппроксимации распределения точек нормальным распределением, уравнение 6.8 [Magnusson 2009].
Определение в строке 597 файла ndt.h.
На этот метод ссылается pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::NormalDistributionsTransform().
gauss_d2_
| protected |
Определение в строке 597 файла ndt.h.
Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::NormalDistributionsTransform().
outlier_ratio_
| protected |
Доля выбросов среди точек относительно
нормального распределения, уравнение 6.7 [Magnusson 2009].
Определение в строке 593 файла ndt.h.
Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getOulierRatio(), pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getOutlierRatio(), pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::NormalDistributionsTransform(), pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setOulierRatio() и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setOutlierRatio().
point_hessian_
| protected |
point_jacobian_
| protected |
resolution_
| protected |
Длина стороны вокселей.
Определение в строке 586 файла ndt.h.
Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getResolution(), pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::init(), pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::NormalDistributionsTransform() и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setResolution().
step_size_
| protected |
Максимальная длина шага.
Определение в строке 589 файла ndt.h.
Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getStepSize() и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setStepSize().
target_cells_
| protected |
Воксельная сетка, созданная из целевого облака и содержащая средние значения и ковариации точек.
Определение в строке 583 файла ndt.h.
Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getTargetCells(), pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::init() и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setMinPointPerVoxel().
trans_likelihood_
| double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_likelihood_ {0.0} |
trans_probability_
| double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_probability_ |
Документация этого класса создана на основе следующих файлов:
© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_normal_distributions_transform.html
