Реализация регистрации 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 | getOulierRatio () const |
| Получить отношение выбросов облака точек. Подробнее... |
|
| void | setOulierRatio (double outlier_ratio) |
| Установить/изменить отношение выбросов облака точек. Подробнее... |
|
| double | getTransformationLikelihood () const |
| Получить вероятность выравнивания регистрации. Подробнее... |
|
| double | getTransformationProbability () const |
| Получить вероятность выравнивания регистрации. Подробнее... |
|
| int | getFinalNumIteration () const |
| Получить количество итераций, необходимых для вычисления выравнивания. Подробнее... |
|
|
| |
| 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[] для сокращения кода. Подробнее... |
|
Статические публичные методы | |
| 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 | computeHessian (Eigen::Matrix< double, 6, 6 > &hessian, const PointCloudSource &trans_cloud, const Eigen::Matrix< double, 6, 1 > &transform) |
| Вычислить гессиан функции правдоподобия относительно Подробнее... |
|
| 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 |
| Вспомогательная функция производной, используемая для определения конечных точек интервала More-Thuente. Подробнее... |
|
|
| |
| 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_ |
| Длина стороны ячеек. Подробнее... |
|
| double | step_size_ |
| Максимальная длина шага. Подробнее... |
|
| double | outlier_ratio_ |
| Коэффициент выбросов точек по отношению к Подробнее... |
|
| double | gauss_d1_ |
| Постоянные нормализации, используемые для подгонки распределения точек к нормальному распределению, уравнение 6.8 [Magnusson 2009]. Подробнее... |
|
| double | gauss_d2_ |
| union { | |
| double trans_probability_ | |
| double trans_likelihood_ | |
| }; | |
| Вероятность преобразования, применённого к входному облаку, уравнение 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_ |
| Если набор индексов не задан, создается набор фиктивных индексов, имитирующих входное облако точек. Подробнее... |
|
Подробное описание
шаблон<typename PointSource, typename PointTarget, typename Scalar = float>
класс pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >
Реализация 3D регистрации с помощью преобразования нормального распределения для данных облаков точек.
- Примечание
- Дополнительную информацию можно найти в статье Magnusson, M. (2009). The Three-Dimensional Normal-Distributions Transform — an Efficient Representation for Регистрацию, анализ поверхности и обнаружение петель. Диссертация, Университет Оребро. Оребро Исследования в области технологии 36., More, J., and Thuente, D. (1994). Алгоритм поиска линии с гарантированным достаточным уменьшением в ACM Transactions on Mathematical Software. и Sun, W. и Yuan, Y, (2006) Теория оптимизации и методы: Нелинейное программирование. 89-100
- Переработка математики выполнена Тодором Стояновым.
Документация по определению типа члена
Affine3
| используется 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> > |
Матрица4
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::Matrix4 = typename Registration<PointSource, PointTarget, Scalar>::Matrix4 |
ИсточникОбъектовТочек
| protected |
ИсточникОбъектовТочекConstPtr
| protected |
ИсточникОбъектовТочекPtr
| protected |
ЦелеваяТочкаОбъектов
| protected |
ЦелеваяТочкаОбъектовConstPtr
| protected |
ЦелеваяТочкаОбъектовPtr
| protected |
ИндексыТочекConstPtr
| protected |
ИндексыТочекPtr
| protected |
Ptr
| using pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::Ptr = shared_ptr<NormalDistributionsTransform<PointSource, PointTarget, Scalar> > |
TargetGrid
| protected |
TargetGridConstPtr
| protected |
TargetGridLeafConstPtr
| protected |
TargetGridPtr
| protected |
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
~NormalDistributionsTransform()
| overridedefault |
Пустой деструктор.
Документация по функциям-членам
auxilaryFunction_dPsiMT()
| inlineprotected |
Производная вспомогательной функции, используемой для определения конечных точек интервала Мора-Тьюента.
- Примечание
-
, производная уравнения 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()
| inlineprotected |
Вспомогательная функция, используемая для определения конечных точек интервала Мора-Тьюента.
- Примечание
-
в уравнении 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()
| protected |
computeDerivatives()
| protected |
Вычисление производных функции правдоподобия относительно
вектора преобразования.
- Примечание
- Уравнение 6.10, 6.12 и 6.13 [Magnusson 2009].
- Параметры
-
[out] score_gradient вектор градиента функции правдоподобия относительно вектора преобразования [out] hessian матрица гессиана функции правдоподобия относительно вектора преобразования [in] trans_cloud преобразованное облако точек [in] transform вектор текущего преобразования [in] compute_hessian флаг для вычисления гессиана, не требуется для расчёта шага.
computeHessian() [1/2]
| protected |
Вычисление гессиана функции правдоподобия относительно
вектора преобразования.
- Примечание
- Уравнение 6.13 [Magnusson 2009].
- Параметры
-
[out] hessian матрица гессиана функции правдоподобия относительно вектора преобразования [in] trans_cloud преобразованное облако точек
Определение в строке 421 файла ndt.hpp.
Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::computeHessian().
computeHessian() [2/2]
| inlineprotected |
Вычислить гессиан функции правдоподобия по отношению к
вектору преобразования.
- Примечание
- Уравнение 6.13 [Magnusson 2009].
- Параметры
-
[out] hessian матрица гессиана функции правдоподобия по отношению к вектору преобразования [in] trans_cloud преобразованное облако точек [in] transform текущий вектор преобразования
- Устаревшее:
- Планируется к удалению в версии 1.15: "Параметр `transform` не требуется"
Определение в строке 375 файла ndt.h.
Ссылается на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::computeHessian() и pcl::utils::ignore().
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]
- Возвращает
- конечная длина шага
Определение в строке 656 файла ndt.hpp.
Ссылается на pcl::transformPointCloud().
computeTransformation() [1/2]
| inlineprotectedvirtual |
computeTransformation() [2/2]
| overrideprotected |
Оцените преобразование и верните преобразованный исходный (входной) как выход.
- Parameters
-
[out] output результирующее преобразованное облако точек входных данных [in] guess начальная грубая оценка преобразования
Определение в строке 74 файла ndt.hpp.
Ссылки на pcl::transformPointCloud().
convertTransform() [1/2]
| inlinestatic |
Преобразовать вектор преобразования из 6 элементов в аффинное преобразование.
- Parameters
-
[in] x вектор преобразования вида [x, y, z, roll, pitch, yaw] [out] trans аффинное преобразование, соответствующее данному вектору преобразования
Определение в строке 228 файла ndt.h.
Ссылка на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::convertTransform().
convertTransform() [2/2]
| inlinestatic |
Преобразовать вектор преобразования из 6 элементов в матрицу преобразования.
- Parameters
-
[in] x вектор преобразования вида [x, y, z, roll, pitch, yaw] [out] trans матрица преобразования 4x4, соответствующая данному вектору преобразования
Определение в строке 242 файла ndt.h.
Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::convertTransform().
getFinalNumIteration()
| inline |
Получить количество итераций, необходимое для вычисления выравнивания.
- Возвращает
- конечное количество итераций
Определение в строке 217 файла ndt.h.
Ссылки на pcl::Registration< PointSource, PointTarget, float >::nr_iterations_.
getOulierRatio()
| inline |
Получить отношение выбросов облака точек.
- Возвращает
- отношение выбросов
Определение в строке 177 файла ndt.h.
Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_.
getResolution()
| inline |
Получить разрешение воксельного сетки.
- Возвращает
- длина стороны вокселей
Определение в строке 150 файла ndt.h.
Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::resolution_.
getStepSize()
| inline |
Получить максимальную длину шага поиска по прямой Ньютона.
- Возвращает
- максимальная длина шага
Определение в строке 159 файла ndt.h.
Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::step_size_.
getTransformationLikelihood()
| inline |
Получить вероятность выравнивания регистрации.
- Возвращает
- вероятность выравнивания
Определение в строке 195 файла ndt.h.
Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_likelihood_.
getTransformationProbability()
| inline |
Получить вероятность выравнивания регистрации.
- Возвращает
- вероятность выравнивания
- Устаревшее:
- Планируется к удалению в версии 1.16: «Метод `getTransformationProbability` был переименован в `getTransformationLikelihood`.»
Определение в строке 208 файла ndt.h.
Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_likelihood_.
init()
| inlineprotected |
Инициализировать структуру ячеек ковариации.
Определение в строке 288 файла ndt.h.
Ссылки на pcl::VoxelGridCovariance< PointT >::filter(), 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 >.
Определение в строке 113 файла 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 минимальное количество точек, требуемых для ячейки
Определение в строке 141 файла ndt.h.
Ссылки на pcl::VoxelGridCovariance< PointT >::setMinPointPerVoxel(), и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::target_cells_.
setOulierRatio()
| inline |
Установить/изменить коэффициент выбросов облака точек.
- Параметры
-
[in] outlier_ratio коэффициент выбросов
Определение в строке 186 файла ndt.h.
Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::outlier_ratio_.
setResolution()
| inline |
Установить/изменить разрешение воксельного сетки.
- Parameters
-
[in] resolution длина стороны вокселей
Определение в строке 123 файла ndt.h.
Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::init(), pcl::PCLBase< PointSource >::input_ и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::resolution_.
setStepSize()
| inline |
Установить/изменить максимальную длину шага поиска Ньютона по прямой линии.
- Parameters
-
[in] step_size максимальная длина шага
Определение в строке 168 файла ndt.h.
Ссылки на pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::step_size_.
trialValueSelectionMT()
| protected |
Выбор нового пробного значения для метода Мора-Тьюента.
- Примечание
- Используется выбор пробного значения [More, Thuente 1994],
для
и
до тех пор, пока некоторое значение не удовлетворит условию
и
, затем используется
.
- Уравнения интерполяционного минимизатора из теории оптимизации и методов: Нелинейное программирование Венью Сун, Я-сянь Юань (89-100).
- Parameters
-
[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].
- Parameters
-
[in,out] score_gradient вектор градиента функции правдоподобия относительно вектора преобразования [in,out] hessian матрица Гессе функции правдоподобия относительно вектора преобразования [in] x_trans преобразованная точка минус среднее значение занятого вокселя ковариации [in] c_inv ковариация занятого вокселя ковариации [in] compute_hessian флаг для вычисления матрицы Гессе, не нужен для вычисления шага.
updateHessian()
| protected |
Вычисление индивидуальных вкладов точек в гессиан функции правдоподобия относительно
вектора преобразования.
- Примечание
- Уравнение 6.13 [Magnusson 2009].
- Параметры
-
[вход/выход] hessian матрица гессиана функции правдоподобия относительно вектора преобразования [вход] x_trans преобразованная точка минус среднее значение занятого вокселя ковариации [вход] c_inv ковариация занятого вокселя ковариации
updateIntervalMT()
| protected |
Обновление интервала возможных длин шага для метода Мора-Тьюента, в More-Thuente (1994)
- Примечание
- Обновление алгоритма до тех пор, пока какое-то значение не удовлетворит
и
, и измененный алгоритм обновления оттуда [More, Thuente 1994].
- Параметры
-
[вход/выход] a_l первая конечная точка интервала ,
в Moore-Thuente (1994)
[вход/выход] f_l значение в первой конечной точке, в Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
[вход/выход] g_l производная в первой конечной точке, в Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
[вход/выход] a_u вторая конечная точка интервала ,
в Moore-Thuente (1994)
[вход/выход] f_u значение во второй конечной точке, в Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
[вход/выход] g_u производная во второй конечной точке, в Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
[вход] a_t пробное значение, в Moore-Thuente (1994)
[вход] f_t значение в пробном значении, в Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
[вход] g_t производная в пробном значении, в Moore-Thuente (1994),
для алгоритма обновления и
для модифицированного алгоритма обновления
- Возвращает
- если интервал сходится
Документация по данным члена
| union { ... } |
Оценка правдоподобия преобразования, примененного к входному облаку, уравнения 6.9 и 6.10 [Magnusson 2009].
angular_hessian_
| protected |
angular_jacobian_
| protected |
gauss_d1_
| protected |
gauss_d2_
| protected |
Определение в строке 570 файла ndt.h.
Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::NormalDistributionsTransform().
outlier_ratio_
| protected |
Отношение выбросов точек по отношению к нормальному распределению, уравнение 6.7 [Magnusson 2009].
Определение в строке 566 файла ndt.h.
Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getOulierRatio(), pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::NormalDistributionsTransform() и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setOulierRatio().
point_hessian_
| protected |
point_jacobian_
| protected |
resolution_
| protected |
Длина стороны объёма.
Определение в строке 559 файла 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 |
Максимальная длина шага.
Определение в строке 562 файла ndt.h.
Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::getStepSize() и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setStepSize().
target_cells_
| protected |
Решётка объёмов, сгенерированная из целевого облака, содержащая средние значения точек и ковариации.
Определение в строке 556 файла ndt.h.
Используется в pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::init() и pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::setMinPointPerVoxel().
trans_likelihood_
| double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_likelihood_ |
trans_probability_
| double pcl::NormalDistributionsTransform< PointSource, PointTarget, Scalar >::trans_probability_ |
- Устаревшее:
- Планируется к удалению в версии 1 . 16 : "`trans_probability_` переименовано в `trans_likelihood_`."
Документация для этого класса была сгенерирована из следующих файлов:
© 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
