Spec-Zone.ru › PointCloudLibrary

Реализация регистрации методом преобразования нормального распределения (NDT) в 3D для облаков точек. Подробнее...

#include <pcl/registration/ndt.h>

Inheritance graph
[условные обозначения]
Collaboration graph
[условные обозначения]

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

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 >
- Общедоступные типы, унаследованные от 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 &)
Сигнатура обратного вызова функции, обновляющей положение исходного облака точек на промежуточном этапе его регистрации относительно целевого облака точек. Подробнее...
- Общедоступные типы, унаследованные от 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

Общедоступные функции-члены

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, созданной на основе целевого облака и содержащей средние значения точек и ковариации. Подробнее...
- Общедоступные функции-члены, унаследованные от pcl::Registration< PointSource, PointTarget, float >
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 ()
Очистить список фильтров соответствий. Подробнее...
- Общедоступные функции-члены, унаследованные от 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
Переопределить оператор 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
Обновить интервал возможных длин шага для метода Морэ—Туэнта, $ I $ в работе More-Thuente (1994) Подробнее...
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
Производная вспомогательной функции для определения конечных точек интервала метода Морэ—Туэнта. Подробнее...
- Защищённые функции-члены, унаследованные от 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 ()
Этот метод следует вызывать после завершения фактических вычислений. Подробнее...

Защищённые атрибуты

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_
Производная второго порядка преобразования точки относительно Подробнее...
- Защищённые атрибуты, унаследованные от 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::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.
Автор
Brian Okorn (Space and Naval Warfare Systems Center Pacific)

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

Описание псевдонимов типов-членов

Affine3

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::Affine3 = typename Eigen::Transform<Scalar, 3, Eigen::Affine>

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

ConstPtr

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

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

Matrix4

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

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

PointCloudSource

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointCloudSource = typename Registration<PointSource, PointTarget, Scalar>::PointCloudSource
protected

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

PointCloudSourceConstPtr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointCloudSourceConstPtr = typename PointCloudSource::ConstPtr
protected

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

PointCloudSourcePtr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointCloudSourcePtr = typename PointCloudSource::Ptr
protected

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

PointCloudTarget

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointCloudTarget = typename Registration<PointSource, PointTarget, Scalar>::PointCloudTarget
protected

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

PointCloudTargetConstPtr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointCloudTargetConstPtr = typename PointCloudTarget::ConstPtr
protected

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

PointCloudTargetPtr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointCloudTargetPtr = typename PointCloudTarget::Ptr
protected

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

PointIndicesConstPtr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointIndicesConstPtr = PointIndices::ConstPtr

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

PointIndicesPtr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::PointIndicesPtr = PointIndices::Ptr

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

Ptr

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

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

TargetGrid

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::TargetGrid = VoxelGridCovariance<PointTarget>

Имя типа сетки вокселей с возможностью поиска, содержащей среднее значение и ковариацию.

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

TargetGridConstPtr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::TargetGridConstPtr = const TargetGrid*

Имя типа константного указателя на сетку вокселей с возможностью поиска.

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

TargetGridLeafConstPtr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::TargetGridLeafConstPtr = typename TargetGrid::LeafConstPtr

Имя типа константного указателя на лист сетки вокселей с возможностью поиска.

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

TargetGridPtr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::TargetGridPtr = TargetGrid*

Имя типа указателя на сетку вокселей с возможностью поиска.

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

Vector3

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::Vector3 = typename Eigen::Matrix<Scalar, 3, 1>

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

Описание конструкторов и деструкторов

NormalDistributionsTransform()

template<typename PointSource , typename PointTarget , typename Scalar >
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()

template<typename PointSource , typename PointTarget , typename Scalar = float>
pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::~NormalDistributionsTransform ( )
overridedefault

Пустой деструктор.

Описание функций-членов

auxilaryFunction_dPsiMT()

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::auxilaryFunction_dPsiMT ( double g_a,
double g_0,
double mu = 1.e-4
) const
inlineprotected

Вспомогательная функция производной, используемая для определения конечных точек интервала More-Thuente.

Примечание
$ \psi'(\alpha) $, производная уравнения 1.6 (Moore, Thuente 1994)
Параметры
[in] g_a градиент функции при длине шага a, $ \phi'(\alpha) $ в More-Thuente (1994)
[in] g_0 начальный градиент функции, $ \phi'(0) $ в More-Thuente (1994)
[in] mu длина шага, константа $ \mu $ в уравнении 1.1 [More, Thuente 1994]
Возвращает
производную достаточного убывания

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

auxilaryFunction_PsiMT()

template<typename PointSource , typename PointTarget , typename Scalar = float>
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
inlineprotected

Вспомогательная функция, используемая для определения конечных точек интервала More-Thuente.

Примечание
$ \psi(\alpha) $ в уравнении 1.6 (Moore, Thuente 1994)
Параметры
[in] a длина шага, $ \alpha $ в More-Thuente (1994)
[in] f_a значение функции при длине шага a, $ \phi(\alpha) $ в More-Thuente (1994)
[in] f_0 начальное значение функции, $ \phi(0) $ в Moore-Thuente (1994)
[in] g_0 начальный градиент функции, $ \phi'(0) $ в More-Thuente (1994)
[in] mu длина шага, константа $ \mu $ в уравнении 1.1 [More, Thuente 1994]
Возвращает
значение достаточного убывания

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

computeAngleDerivatives()

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::computeAngleDerivatives ( const Eigen::Matrix< double, 6, 1 > & transform,
bool compute_hessian = true
)
protected

Предварительно вычисляет угловые составляющие производных.

Примечание
Уравнения 6.19 и 6.21 [Magnusson 2009].
Параметры
[in] transform текущий вектор преобразования
[in] compute_hessian флаг вычисления матрицы Гессе; для вычисления шага не требуется.

Определение в строке 245 файла ndt.hpp.

computeDerivatives()

template<typename PointSource , typename PointTarget , typename Scalar >
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::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
)
protected

Вычислить производные функции правдоподобия по отношению к

вектору преобразования.

Примечание
Уравнения 6.10, 6.12 и 6.13 [Magnusson 2009].
Параметры
[out] score_gradient вектор градиента функции правдоподобия по отношению к вектору преобразования
[out] hessian матрица Гессе функции правдоподобия по отношению к вектору преобразования
[in] trans_cloud преобразованное облако точек
[in] transform текущий вектор преобразования
[in] compute_hessian флаг вычисления матрицы Гессе; для вычисления шага не требуется.

Определение в строке 194 файла ndt.hpp.

computeHessian()

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::computeHessian ( Eigen::Matrix< double, 6, 6 > & hessian,
const PointCloudSource & trans_cloud
)
protected

Вычислить матрицу Гессе функции правдоподобия по отношению к

вектору преобразования.

Примечание
Уравнение 6.13 [Magnusson 2009].
Параметры
[out] hessian матрица Гессе функции правдоподобия по отношению к вектору преобразования
[in] trans_cloud преобразованное облако точек

Определение в строке 424 файла ndt.hpp.

computePointDerivatives()

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::computePointDerivatives ( const Eigen::Vector3d & x,
bool compute_hessian = true
)
protected

Вычислить производные точки.

Примечание
Уравнения 6.18–21 [Magnusson 2009].
Параметры
[in] x точка из входного облака
[in] compute_hessian флаг вычисления матрицы Гессе; для вычисления шага не требуется.

Определение в строке 330 файла ndt.hpp.

computeStepLengthMT()

template<typename PointSource , typename PointTarget , typename Scalar >
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::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
)
protected

Вычислить длину шага линейного поиска и обновить преобразование и производные правдоподобия с помощью метода Морэ—Туэнта.

Примечание
Алгоритм поиска [More, Thuente 1994]
Параметры
[in] transform начальный вектор преобразования, $ x $ в уравнении 1.3 (Moore, Thuente 1994) и $ \vec{p} $ в алгоритме 2 [Magnusson 2009]
[in] step_dir направление спуска, $ p $ в уравнении 1.3 (Moore, Thuente 1994) и $ \delta \vec{p} $ нормализовано в алгоритме 2 [Magnusson 2009]
[in] step_init начальная оценка длины шага, $ \alpha_0 $ у Moore-Thuente (1994) и норма $ \delta \vec{p} $ в алгоритме 2 [Magnusson 2009]
[in] step_max максимальная длина шага, $ \alpha_max $ у Moore-Thuente (1994)
[in] step_min минимальная длина шага, $ \alpha_min $ у Moore-Thuente (1994)
[out] score итоговое значение целевой функции, $ f(x + \alpha p) $ в уравнении 1.3 (Moore, Thuente 1994) и $ score $ в алгоритме 2 [Magnusson 2009]
[in,out] score_gradient градиент целевой функции по отношению к вектору преобразования, $ f'(x + \alpha p) $ у Moore-Thuente (1994) и $ \vec{g} $ в алгоритме 2 [Magnusson 2009]
[out] hessian матрица Гессе целевой функции по отношению к вектору преобразования, $ f''(x + \alpha p) $ у Moore-Thuente (1994) и $ H $ в алгоритме 2 [Magnusson 2009]
[in,out] trans_cloud преобразованное облако точек, $ X $ преобразованное с помощью $ T(\vec{p},\vec{x}) $ в алгоритме 2 [Magnusson 2009]
Возвращает
итоговую длину шага

Определение в строке 659 файла ndt.hpp.

Ссылки: pcl::transformPointCloud().

computeTransformation() [1/2]

template<typename PointSource , typename PointTarget , typename Scalar = float>
virtual void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::computeTransformation ( PointCloudSource & output )
inlineprotectedvirtual

Оценить преобразование и вернуть преобразованный исходный набор данных (входное облако) в качестве выходных данных.

Параметры
[out] output результирующий преобразованный входной набор данных облака точек

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

computeTransformation() [2/2]

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::computeTransformation ( PointCloudSource & output,
const Matrix4 & guess
)
overrideprotected

Оценить преобразование и вернуть преобразованный исходный набор данных (входное облако) в качестве выходных данных.

Параметры
[out] output результирующий преобразованный входной набор данных облака точек
[in] guess начальная грубая оценка преобразования

Определение в строке 68 файла ndt.hpp.

Ссылки: pcl::transformPointCloud().

convertTransform() [1/2]

template<typename PointSource , typename PointTarget , typename Scalar = float>
static void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::convertTransform ( const Eigen::Matrix< double, 6, 1 > & x,
Affine3 & trans
)
inlinestatic

Преобразовать шестикомпонентный вектор преобразования в аффинное преобразование.

Параметры
[in] x вектор преобразования вида [x, y, z, roll, pitch, yaw]
[out] trans аффинное преобразование, соответствующее заданному вектору преобразования

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

Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::convertTransform().

convertTransform() [2/2]

template<typename PointSource , typename PointTarget , typename Scalar = float>
static void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::convertTransform ( const Eigen::Matrix< double, 6, 1 > & x,
Matrix4 & trans
)
inlinestatic

Преобразовать шестикомпонентный вектор преобразования в матрицу преобразования.

Параметры
[in] x вектор преобразования вида [x, y, z, roll, pitch, yaw]
[out] trans матрица преобразования 4x4, соответствующая заданному вектору преобразования

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

Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::convertTransform().

getFinalNumIteration()

template<typename PointSource , typename PointTarget , typename Scalar = float>
int pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getFinalNumIteration ( ) const
inline

Получить количество итераций, необходимых для вычисления совмещения.

Возвращает
итоговое количество итераций

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

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

getOulierRatio()

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getOulierRatio ( ) const
inline

Получить долю выбросов в облаке точек.

Возвращает
доля выбросов
Устарело:
Планируется удалить в версии 1 . 18 : "Метод `getOulierRatio` переименован в " "`getOutlierRatio`."

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

Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_.

getOutlierRatio()

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getOutlierRatio ( ) const
inline

Получить долю выбросов в облаке точек.

Возвращает
доля выбросов

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

Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_.

getResolution()

template<typename PointSource , typename PointTarget , typename Scalar = float>
float pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getResolution ( ) const
inline

Получить разрешение воксельной сетки.

Возвращает
длина стороны вокселя

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

Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::resolution_.

getStepSize()

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getStepSize ( ) const
inline

Получить максимальную длину шага ньютоновского линейного поиска.

Возвращает
максимальная длина шага

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

Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::step_size_.

getTargetCells()

template<typename PointSource , typename PointTarget , typename Scalar = float>
const TargetGrid& pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getTargetCells ( ) const
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()

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getTransformationLikelihood ( ) const
inline

Получить правдоподобие совмещения при регистрации.

Возвращает
правдоподобие преобразования

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

Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_likelihood_.

getTransformationProbability()

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getTransformationProbability ( ) const
inline

Получить вероятность совмещения при регистрации.

Возвращает
вероятность преобразования
Устарело:
Планируется удалить в версии 1 . 16 : "Метод `getTransformationProbability` переименован в " "`getTransformationLikelihood`."

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

Ссылки: pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_likelihood_.

init()

template<typename PointSource , typename PointTarget , typename Scalar = float>
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::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()

template<typename PointSource , typename PointTarget , typename Scalar = float>
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setInputTarget ( const PointCloudTargetConstPtr & cloud )
inlineoverridevirtual

Передать указатель на целевое входное облако (например, облако точек, к которому требуется выровнять исходное входное облако).

Параметры
[in] cloud целевое входное облако точек

Переопределяет метод из pcl::Registration< PointSource, PointTarget, float >.

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

Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::init() и pcl::Registration< PointSource, PointTarget, Scalar >::setInputTarget().

setMinPointPerVoxel()

template<typename PointSource , typename PointTarget , typename Scalar = float>
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setMinPointPerVoxel ( unsigned int min_points_per_voxel )
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()

template<typename PointSource , typename PointTarget , typename Scalar = float>
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setOulierRatio ( double outlier_ratio )
inline

Задать или изменить долю выбросов в облаке точек.

Устарело:
Будет удалено в версии 1 . 18 : "Метод `setOulierRatio` переименован в " "`setOutlierRatio`."
Параметры
[in] outlier_ratio доля выбросов

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

Ссылка на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_.

setOutlierRatio()

template<typename PointSource , typename PointTarget , typename Scalar = float>
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setOutlierRatio ( double outlier_ratio )
inline

Задать или изменить долю выбросов в облаке точек.

Параметры
[in] outlier_ratio доля выбросов

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

Ссылка на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_.

setResolution()

template<typename PointSource , typename PointTarget , typename Scalar = float>
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setResolution ( float resolution )
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()

template<typename PointSource , typename PointTarget , typename Scalar = float>
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setStepSize ( double step_size )
inline

Задать или изменить максимальную длину шага для линейного поиска Ньютона.

Параметры
[in] step_size максимальная длина шага

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

Ссылка на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::step_size_.

trialValueSelectionMT()

template<typename PointSource , typename PointTarget , typename Scalar >
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::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
protected

Выбрать новое пробное значение для метода More-Thuente.

Примечание
Выбор пробного значения [More, Thuente 1994]: $ \psi(\alpha_k) $ используется для $ f_k $ и $ g_k $ до тех пор, пока некоторое значение не удовлетворит условиям $ \psi(\alpha_k) \leq 0 $ и $ \phi'(\alpha_k) \geq 0 $; после этого используется $ \phi(\alpha_k) $.
Уравнения интерполяции минимизатора из книги «Теория и методы оптимизации: нелинейное программирование» Вэнью Суна и Я-сяна Юаня (с. 89–100).
Параметры
[in] a_l первая граница интервала $ I $, $ \alpha_l $ в работе Moore-Thuente (1994)
[in] f_l значение в первой граничной точке, $ f_l $ в работе Moore-Thuente (1994)
[in] g_l производная в первой граничной точке, $ g_l $ в работе Moore-Thuente (1994)
[in] a_u вторая граница интервала $ I $, $ \alpha_u $ в работе Moore-Thuente (1994)
[in] f_u значение во второй граничной точке, $ f_u $ в работе Moore-Thuente (1994)
[in] g_u производная во второй граничной точке, $ g_u $ в работе Moore-Thuente (1994)
[in] a_t предыдущее пробное значение, $ \alpha_t $ в работе Moore-Thuente (1994)
[in] f_t значение в предыдущей пробной точке, $ f_t $ в работе Moore-Thuente (1994)
[in] g_t производная в предыдущей пробной точке, $ g_t $ в работе Moore-Thuente (1994)
Возвращает
новое пробное значение

Определение в строке 546 файла ndt.hpp.

updateDerivatives()

template<typename PointSource , typename PointTarget , typename Scalar >
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::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
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 флаг вычисления матрицы Гессе; для вычисления шага не требуется.

Определение в строке 376 файла ndt.hpp.

updateHessian()

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::updateHessian ( Eigen::Matrix< double, 6, 6 > & hessian,
const Eigen::Vector3d & x_trans,
const Eigen::Matrix3d & c_inv
) const
protected

Вычислить вклад каждой точки в матрицу Гессе функции правдоподобия по отношению к

вектору преобразования.

Примечание
Уравнение 6.13 [Magnusson 2009].
Параметры
[in,out] hessian матрица Гессе функции правдоподобия по отношению к вектору преобразования
[in] x_trans преобразованная точка минус среднее значение занятого ковариационного вокселя
[in] c_inv ковариация занятого ковариационного вокселя

Определение в строке 466 файла ndt.hpp.

updateIntervalMT()

template<typename PointSource , typename PointTarget , typename Scalar >
bool pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::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
protected

Обновить интервал возможных длин шага для метода More-Thuente, $ I $ в работе More-Thuente (1994)

Примечание
Алгоритм обновления используется до тех пор, пока некоторое значение не удовлетворит условиям $ \psi(\alpha_k) \leq 0 $ и $ \phi'(\alpha_k) \geq 0 $; после этого используется модифицированный алгоритм обновления [More, Thuente 1994].
Параметры
[in,out] a_l первая граница интервала $ I $, $ \alpha_l $ в работе Moore-Thuente (1994)
[in,out] f_l значение в первой граничной точке, $ f_l $ в работе Moore-Thuente (1994), $ \psi(\alpha_l) $ для алгоритма обновления и $ \phi(\alpha_l) $ для модифицированного алгоритма обновления
[in,out] g_l производная в первой граничной точке, $ g_l $ в работе Moore-Thuente (1994), $ \psi'(\alpha_l) $ для алгоритма обновления и $ \phi'(\alpha_l) $ для модифицированного алгоритма обновления
[in,out] a_u вторая граница интервала $ I $, $ \alpha_u $ в работе Moore-Thuente (1994)
[in,out] f_u значение во второй граничной точке, $ f_u $ в работе Moore-Thuente (1994), $ \psi(\alpha_u) $ для алгоритма обновления и $ \phi(\alpha_u) $ для модифицированного алгоритма обновления
[in,out] g_u производная во второй граничной точке, $ g_u $ в работе Moore-Thuente (1994), $ \psi'(\alpha_u) $ для алгоритма обновления и $ \phi'(\alpha_u) $ для модифицированного алгоритма обновления
[in] a_t пробное значение, $ \alpha_t $ в работе Moore-Thuente (1994)
[in] f_t значение в пробной точке, $ f_t $ в работе Moore-Thuente (1994), $ \psi(\alpha_t) $ для алгоритма обновления и $ \phi(\alpha_t) $ для модифицированного алгоритма обновления
[in] g_t производная в пробной точке, $ g_t $ в работе Moore-Thuente (1994), $ \psi'(\alpha_t) $ для алгоритма обновления и $ \phi'(\alpha_t) $ для модифицированного алгоритма обновления
Возвращает
признак сходимости интервала

Определение в строке 501 файла ndt.hpp.

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

union { ... }

Оценка правдоподобия преобразования, применённого к входному облаку; уравнения 6.9 и 6.10 [Magnusson 2009].

angular_hessian_

template<typename PointSource , typename PointTarget , typename Scalar = float>
Eigen::Matrix<double, 15, 4> pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::angular_hessian_
protected

Предварительно вычисленная угловая матрица Гессе.

Предварительно вычисленные угловые производные для матрицы Гессе вектора преобразования, уравнение 6.19 [Magnusson 2009].

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

angular_jacobian_

template<typename PointSource , typename PointTarget , typename Scalar = float>
Eigen::Matrix<double, 8, 4> pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::angular_jacobian_
protected

Предварительно вычисленный угловой градиент.

Предварительно вычисленные угловые производные для якобиана вектора преобразования, уравнение 6.19 [Magnusson 2009].

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

gauss_d1_

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::gauss_d1_ {0.0}
protected

Константы нормализации, используемые для аппроксимации распределения точек нормальным распределением, уравнение 6.8 [Magnusson 2009].

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

На этот метод ссылается pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::NormalDistributionsTransform().

gauss_d2_

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::gauss_d2_ {0.0}
protected

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

Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::NormalDistributionsTransform().

outlier_ratio_

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_ {0.55}
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_

template<typename PointSource , typename PointTarget , typename Scalar = float>
Eigen::Matrix<double, 18, 6> pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::point_hessian_
protected

Производная второго порядка преобразования точки относительно

вектора преобразования, $ H_E $ в уравнении 6.20 [Magnusson 2009].

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

point_jacobian_

template<typename PointSource , typename PointTarget , typename Scalar = float>
Eigen::Matrix<double, 3, 6> pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::point_jacobian_
protected

Производная первого порядка преобразования точки относительно

вектора преобразования, $ J_E $ в уравнении 6.18 [Magnusson 2009].

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

resolution_

template<typename PointSource , typename PointTarget , typename Scalar = float>
float pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::resolution_ {1.0f}
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_

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::step_size_ {0.1}
protected

Максимальная длина шага.

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

Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getStepSize() и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setStepSize().

target_cells_

template<typename PointSource , typename PointTarget , typename Scalar = float>
TargetGrid pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::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_

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_likelihood_ {0.0}

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

Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getTransformationLikelihood() и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getTransformationProbability().

trans_probability_

template<typename PointSource , typename PointTarget , typename Scalar = float>
double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_probability_
Устарело:
Планируется удалить в версии 1 . 16: "`trans_probability_` переименовано в `trans_likelihood_`."

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


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

© 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

Spec-Zone.ru

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