FPCSInitialAlignment вычисляет соответствующие конгруэнтные наборы из четырех точек, как описано в статье «4-points congruent sets for robust pairwise surface registration» (Конгруэнтные наборы из четырех точек для надежной попарной регистрации поверхностей), Dror Aiger, Niloy Mitra, Daniel Cohen-Or. Подробнее...
#include <pcl/registration/ia_fpcs.h>
Открытые функции-члены | |
| FPCSInitialAlignment () | |
| Конструктор. Подробнее... |
|
| ~FPCSInitialAlignment () override=default | |
| Деструктор. Подробнее... |
|
| void | setTargetIndices (const IndicesPtr &target_indices) |
| Предоставляет указатель на вектор индексов целевого облака. Подробнее... |
|
| IndicesPtr | getTargetIndices () const |
| void | setSourceNormals (const NormalsConstPtr &source_normals) |
| Предоставляет указатель на нормали исходного облака точек. Подробнее... |
|
| NormalsConstPtr | getSourceNormals () const |
| void | setTargetNormals (const NormalsConstPtr &target_normals) |
| Предоставляет указатель на нормали целевого облака точек. Подробнее... |
|
| NormalsConstPtr | getTargetNormals () const |
| void | setNumberOfThreads (int nr_threads) |
| Задает число используемых потоков, если активирован OpenMP. Подробнее... |
|
| int | getNumberOfThreads () const |
| void | setDelta (float delta, bool normalize=false) |
| Задает постоянный коэффициент delta, который задает вес параметров, вычисляемых внутри метода. Подробнее... |
|
| float | getDelta () const |
| void | setApproxOverlap (float approx_overlap) |
| Задает приблизительное перекрытие исходного и целевого облаков. Подробнее... |
|
| float | getApproxOverlap () const |
| void | setScoreThreshold (float score_threshold) |
| Задает пороговое значение оценки, используемое для досрочного завершения метода. Подробнее... |
|
| float | getScoreThreshold () const |
| void | setNumberOfSamples (int nr_samples) |
| Задает число образцов исходных данных, используемых при выравнивании. Подробнее... |
|
| int | getNumberOfSamples () const |
| void | setMaxNormalDifference (float max_norm_diff) |
| Задает максимальную разницу между нормалями соответствующих точек, выраженную в градусах. Подробнее... |
|
| float | getMaxNormalDifference () const |
| void | setMaxComputationTime (int max_runtime) |
| Задает максимальное время вычислений в секундах. Подробнее... |
|
| int | getMaxComputationTime () const |
| float | getFitnessScore () const |
|
| |
| Registration () | |
| Конструктор без параметров. Подробнее... |
|
| ~Registration () override=default | |
| Деструктор. Подробнее... |
|
| void | setTransformationEstimation (const TransformationEstimationPtr &te) |
| Предоставляет указатель на объект оценки преобразования. Подробнее... |
|
| void | setCorrespondenceEstimation (const CorrespondenceEstimationPtr &ce) |
| Предоставляет указатель на объект оценки соответствий. Подробнее... |
|
| virtual void | setInputSource (const PointCloudSourceConstPtr &cloud) |
| Предоставляет указатель на исходные входные данные (например, облако точек, которое требуется выровнять относительно целевого облака). Подробнее... |
|
| PointCloudSourceConstPtr const | getInputSource () |
| Возвращает указатель на целевой набор входных данных облака точек. Подробнее... |
|
| virtual void | setInputTarget (const PointCloudTargetConstPtr &cloud) |
| Предоставляет указатель на целевые входные данные (например, облако точек, относительно которого требуется выровнять исходное облако). Подробнее... |
|
| 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 shared pointer на 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 |
| Переопределить operator[] класса PointCloud для сокращения кода. Подробнее... |
|
Защищённые функции-члены | |
| void | computeTransformation (PointCloudSource &output, const Eigen::Matrix4f &guess) override |
| Метод вычисления жёсткого преобразования. Подробнее... |
|
| virtual bool | initCompute () |
| Инициализация внутренних вычислений. Подробнее... |
|
| int | selectBase (pcl::Indices &base_indices, float(&ratio)[2]) |
| Выбрать из исходного облака набор из четырёх приблизительно компланарных точек. Подробнее... |
|
| int | selectBaseTriangle (pcl::Indices &base_indices) |
| Случайным образом выбрать три точки с большими расстояниями между ними. Подробнее... |
|
| void | setupBase (pcl::Indices &base_indices, float(&ratio)[2]) |
| Подготовить базу (четыре компланарные точки), упорядочив точки и вычислив отношения точек пересечения и расстояния между отрезками диагоналей базы. Подробнее... |
|
| float | segmentToSegmentDist (const pcl::Indices &base_indices, float(&ratio)[2]) |
| Вычислить отношения точек пересечения и расстояния между отрезками диагоналей базы. Подробнее... |
|
| virtual int | bruteForceCorrespondences (int idx1, int idx2, pcl::Correspondences &pairs) |
| Найти соответствующие пары точек по расстоянию между двумя точками базы. Подробнее... |
|
| virtual int | determineBaseMatches (const pcl::Indices &base_indices, std::vector< pcl::Indices > &matches, const pcl::Correspondences &pairs_a, const pcl::Correspondences &pairs_b, const float(&ratio)[2]) |
| Определить соответствия для базы, объединяя кандидатов в пары точек и выполняя поиск совпадающих точек пересечения с использованием отношений отрезков диагоналей базы B. Подробнее... |
|
| int | checkBaseMatch (const pcl::Indices &match_indices, const float(&ds)[4]) |
| Проверить, соответствуют ли расстояния внешнего прямоугольника сопоставленных точек прямоугольнику базы. Подробнее... |
|
| virtual void | handleMatches (const pcl::Indices &base_indices, std::vector< pcl::Indices > &matches, MatchingCandidates &candidates) |
| Метод обработки текущих кандидатов на соответствие. Подробнее... |
|
| virtual void | linkMatchWithBase (const pcl::Indices &base_indices, pcl::Indices &match_indices, pcl::Correspondences &correspondences) |
| Устанавливает соответствия между базой B и совпадением M, используя расстояние каждой точки до центроида прямоугольника. Подробнее... |
|
| virtual int | validateMatch (const pcl::Indices &base_indices, const pcl::Indices &match_indices, const pcl::Correspondences &correspondences, Eigen::Matrix4f &transformation) |
| Проверить соответствие, вычислив преобразование между исходным и целевым облаками на основе четырёх сопоставленных точек и сравнив среднеквадратичную ошибку (MSE) с пороговым значением. Подробнее... |
|
| virtual int | validateTransformation (Eigen::Matrix4f &transformation, float &fitness_score) |
| Проверить преобразование, подсчитав количество внутренних точек после преобразования исходного облака. Подробнее... |
|
| virtual void | finalCompute (const std::vector< MatchingCandidates > &candidates) |
| Итоговый выбор наилучшего соответствия из вектора наилучших соответствий. Подробнее... |
|
|
| |
| 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 () |
| Этот метод следует вызывать после завершения фактических вычислений. Подробнее... |
|
Защищенные атрибуты | |
| NormalsConstPtr | source_normals_ |
| Нормали исходного облака точек. Подробнее... |
|
| NormalsConstPtr | target_normals_ |
| Нормали целевого облака точек. Подробнее... |
|
| int | nr_threads_ {1} |
| Количество потоков для распараллеливания (стандартное значение = 1). Подробнее... |
|
| float | approx_overlap_ {0.5f} |
| Оценочная степень перекрытия исходного и целевого облаков (стандартное значение = 0.5). Подробнее... |
|
| float | delta_ {1.f} |
| Значение delta алгоритма 4pcs (стандартное значение = 1.0). Подробнее... |
|
| float | score_threshold_ |
| Пороговое значение оценки, при достижении которого вычисления завершаются успешно. Подробнее... |
|
| int | nr_samples_ {0} |
| Количество точек для равномерной выборки из исходного облака точек. Подробнее... |
|
| float | max_norm_diff_ {90.f} |
| Максимальная разница нормалей соответствующих пар точек в градусах (стандартное значение = 90). Подробнее... |
|
| int | max_runtime_ {0} |
| Максимально допустимое время вычислений в секундах (стандартное значение = 0 => ~не ограничено). Подробнее... |
|
| float | fitness_score_ |
| Итоговая оценка качества наилучшего соответствия. Подробнее... |
|
| float | diameter_ {0.0f} |
| Оценочный диаметр целевого облака точек. Подробнее... |
|
| float | max_base_diameter_sqr_ {0.0f} |
| Оценочная степень метрического перекрытия исходного и целевого облаков в квадрате. Подробнее... |
|
| bool | use_normals_ {false} |
| Флаг использования нормалей. Подробнее... |
|
| bool | normalize_delta_ {true} |
| Флаг нормализации delta. Подробнее... |
|
| pcl::IndicesPtr | source_indices_ |
| Указатель на вектор индексов исходных точек, используемых после выборки. Подробнее... |
|
| pcl::IndicesPtr | target_indices_ |
| Указатель на вектор индексов целевых точек, используемых после выборки. Подробнее... |
|
| float | max_pair_diff_ {0.0f} |
| Максимальная разница между соответствующими парами точек в исходном и целевом облаках. Подробнее... |
|
| float | max_edge_diff_ {0.0f} |
| Максимальная разница между длинами рёбер базиса и рёбер допустимого соответствия. Подробнее... |
|
| float | coincidation_limit_ {0.0f} |
| Максимальное расстояние между совпадающими точками пересечения для поиска допустимых соответствий. Подробнее... |
|
| float | max_mse_ {0.0f} |
| Максимальная среднеквадратичная ошибка преобразования, вычисленного по кандидату на соответствие. Подробнее... |
|
| float | max_inlier_dist_sqr_ {0.0f} |
| Максимальное расстояние между исходными и целевыми точками в квадрате, при котором точка считается внутренней. Подробнее... |
|
| const float | small_error_ {0.00001f} |
| Определение малой ошибки. Подробнее... |
|
|
| |
| std::string | reg_name_ |
| Имя метода регистрации. Подробнее... |
|
| KdTreePtr | tree_ |
| Указатель на объект пространственного поиска. Подробнее... |
|
| KdTreeReciprocalPtr | tree_reciprocal_ |
| Указатель на объект пространственного поиска исходного облака. Подробнее... |
|
| int | nr_iterations_ |
| Количество итераций внутренней оптимизации (используется внутри алгоритма). Подробнее... |
|
| int | max_iterations_ |
| Максимальное количество итераций внутренней оптимизации. Подробнее... |
|
| int | ransac_iterations_ |
| Количество итераций алгоритма RANSAC. Подробнее... |
|
| PointCloudTargetConstPtr | target_ |
| Входной набор данных — целевое облако точек. Подробнее... |
|
| Matrix4 | final_transformation_ |
| Итоговая матрица преобразования, оценённая методом регистрации после N итераций. Подробнее... |
|
| Matrix4 | transformation_ |
| Матрица преобразования, оценённая методом регистрации. Подробнее... |
|
| Matrix4 | previous_transformation_ |
| Предыдущая матрица преобразования, оценённая методом регистрации (используется внутри алгоритма). Подробнее... |
|
| double | transformation_epsilon_ |
| Максимальная разница между двумя последовательными преобразованиями, при которой считается, что достигнута сходимость (задаётся пользователем). Подробнее... |
|
| double | transformation_rotation_epsilon_ |
| Максимальная разница вращения между двумя последовательными преобразованиями, при которой считается, что достигнута сходимость (задаётся пользователем). Подробнее... |
|
| double | euclidean_fitness_epsilon_ |
| Максимально допустимая евклидова ошибка между двумя последовательными шагами цикла ICP, при превышении которой считается, что алгоритм сошёлся. Подробнее... |
|
| double | corr_dist_threshold_ |
| Максимальный порог расстояния между двумя соответствующими точками в исходном и целевом облаках. Подробнее... |
|
| double | inlier_threshold_ |
| Порог расстояния для внутренних точек во внутреннем цикле отсева выбросов RANSAC. Подробнее... |
|
| bool | converged_ |
| Хранит внутреннее состояние сходимости с учётом параметров пользователя. Подробнее... |
|
| unsigned int | min_number_correspondences_ |
| Минимальное количество соответствий, необходимое алгоритму для оценки преобразования. Подробнее... |
|
| CorrespondencesPtr | correspondences_ |
| Набор соответствий, определённых на этом шаге ICP. Подробнее... |
|
| TransformationEstimationPtr | transformation_estimation_ |
| Объект TransformationEstimation, используемый для вычисления жёсткого преобразования 4x4. Подробнее... |
|
| CorrespondenceEstimationPtr | correspondence_estimation_ |
| Объект CorrespondenceEstimation, используемый для определения соответствий между исходным и целевым облаками. Подробнее... |
|
| std::vector< CorrespondenceRejectorPtr > | correspondence_rejectors_ |
| Список фильтров отклонения соответствий, которые следует использовать. Подробнее... |
|
| bool | target_cloud_updated_ |
| Переменная, хранящая информацию о том, получено ли новое целевое облако точек, что означает необходимость повторной предварительной обработки. Подробнее... |
|
| bool | source_cloud_updated_ |
| Переменная, хранящая информацию о том, получено ли новое исходное облако точек, что означает необходимость повторной предварительной обработки. Подробнее... |
|
| bool | force_no_recompute_ |
| Флаг, который при установке означает, что дерево, работающее с целевым облаком точек, никогда не будет пересчитываться. Подробнее... |
|
| bool | force_no_recompute_reciprocal_ |
| Флаг, который при установке означает, что дерево, работающее с исходным облаком точек, никогда не будет пересчитываться. Подробнее... |
|
| std::function< UpdateVisualizerCallbackSignature > | update_visualizer_ |
| Функция обратного вызова для обновления положения промежуточного исходного облака точек во время его регистрации относительно целевого облака точек. Подробнее... |
|
|
| |
| PointCloudConstPtr | input_ |
| Входной набор данных облака точек. Подробнее... |
|
| IndicesPtr | indices_ |
| Указатель на вектор используемых индексов точек. Подробнее... |
|
| bool | use_indices_ |
| Установите значение true, если используются индексы точек. Подробнее... |
|
| bool | fake_indices_ |
| Если набор индексов не задан, создаётся набор фиктивных индексов, соответствующий входному облаку точек. Подробнее... |
|
Подробное описание
template<typename PointSource, typename PointTarget, typename NormalT = pcl::Normal, typename Scalar = float>
class pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >
FPCSInitialAlignment вычисляет соответствующие конгруэнтные наборы из четырёх точек, как описано в статье: «4-points congruent sets for robust pairwise surface registration», Dror Aiger, Niloy Mitra, Daniel Cohen-Or.
ACM Transactions on Graphics, vol. 27(3), 2008
Документация конструкторов и деструкторов
FPCSInitialAlignment()
| pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::FPCSInitialAlignment |
Конструктор.
Сбрасывает максимальное число итераций в 0, тем самым принудительно запуская внутреннее вычисление, если значение не задано пользователем. Устанавливает число итераций RANSAC равным 1000, а стандартный метод оценки преобразования — TransformationEstimation3Point.
Определение в строке 124 файла ia_fpcs.hpp.
Ссылки: pcl::Registration< PointSource, PointTarget, float >::max_iterations_, pcl::Registration< PointSource, PointTarget, float >::ransac_iterations_, pcl::Registration< PointSource, PointTarget, float >::reg_name_ и pcl::Registration< PointSource, PointTarget, float >::transformation_estimation_.
~FPCSInitialAlignment()
| overridedefault |
Деструктор.
Документация функций-членов
bruteForceCorrespondences()
| protectedvirtual |
Поиск соответствующих пар точек по расстоянию между двумя базовыми точками.
- Параметры
-
[in] idx1 первый индекс текущего базового отрезка (в исходном облаке точек) [in] idx2 второй индекс текущего базового отрезка (в исходном облаке точек) [out] pairs найденные пары точек, расстояние между которыми близко к ref_dist
- Возвращает
-
- < 0 соответствующая пара точек не найдена
- = 0 найден хотя бы один кандидат в пары точек
Определение в строке 583 файла ia_fpcs.hpp.
Ссылки: pcl::euclideanDistance() и M_PI.
checkBaseMatch()
| protected |
Проверяет, соответствуют ли расстояния внешнего прямоугольника между сопоставленными точками базовому прямоугольнику.
- Параметры
-
[in] match_indices индексы сопоставления M [in] ds длины рёбер базы B
- Возвращает
-
- < 0 как минимум одно ребро сопоставления M не имеет соответствующего ребра в базе B
- = 0 рёбра сопоставления M соответствуют рёбрам базы B
Определение в строке 733 файла ia_fpcs.hpp.
См. ссылки: pcl::euclideanDistance().
computeTransformation()
| overrideprotected |
Метод вычисления жёсткого преобразования.
- Параметры
-
output набор входных облачных точек, преобразованный с помощью найденного жёсткого преобразования guess Вычисленное преобразование
Определение в строке 141 файла ia_fpcs.hpp.
См. ссылки: pcl::StopWatch::getTimeSeconds() и pcl::transformPointCloud().
determineBaseMatches()
| protectedvirtual |
Определяет сопоставления базы, объединяя кандидатов на соответствие пар точек и выполняя поиск совпадающих точек пересечения с использованием отношений диагональных отрезков базы B.
Порог совпадения вычисляется во время инициализации (coincidation_limit_).
- Параметры
-
[in] base_indices индексы базы B [out] matches вектор кандидатов на сопоставление относительно базы B [in] pairs_a пары точек, соответствующие точкам первой диагонали базы B [in] pairs_b пары точек, соответствующие точкам второй диагонали базы B [in] ratio отношения пересечения диагоналей для точек базы
- Возвращает
-
- < 0 сопоставление базы не найдено
- = 0 найдено хотя бы одно сопоставление базы
Определение в строке 637 файла ia_fpcs.hpp.
См. ссылки: pcl::euclideanDistance().
finalCompute()
| protectedvirtual |
Окончательный выбор наилучшего сопоставления из вектора лучших сопоставлений.
Чтобы избежать межпоточных зависимостей при параллельном выполнении, для каждой попытки вычислялось наилучшее сопоставление.
- Примечание
- Для обеспечения совместимости с будущими версиями кандидаты хранятся в векторах, содержащих «векторы размера 1».
- Параметры
-
[in] candidates вектор кандидатов на сопоставление
Переопределено в pcl::registration::KFPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >.
Определение в строке 922 файла ia_fpcs.hpp.
getApproxOverlap()
| inline |
- Возвращает
- приблизительную степень перекрытия исходного и целевого облаков.
Определение в строке 208 файла ia_fpcs.h.
См. ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::approx_overlap_.
getDelta()
| inline |
- Возвращает
- коэффициент delta, определяющий вес внутренних вычисляемых параметров.
Определение в строке 192 файла ia_fpcs.h.
См. ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::delta_.
getFitnessScore()
| inline |
- Возвращает
- оценку качества наилучшего сопоставления четырёх точек.
Определение в строке 280 файла ia_fpcs.h.
См. ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::fitness_score_.
getMaxComputationTime()
| inline |
- Возвращает
- максимальное время вычисления в секундах.
Определение в строке 273 файла ia_fpcs.h.
См. ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::max_runtime_.
getMaxNormalDifference()
| inline |
- Возвращает
- максимальную разницу между нормалями для допустимых соответствий точек в градусах.
Определение в строке 257 файла ia_fpcs.h.
См. ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::max_norm_diff_.
getNumberOfSamples()
| inline |
- Возвращает
- количество образцов исходного облака, используемых при выравнивании.
Определение в строке 240 файла ia_fpcs.h.
См. ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::nr_samples_.
getNumberOfThreads()
| inline |
- Возвращает
- количество используемых потоков, если включён OpenMP.
Определение в строке 173 файла ia_fpcs.h.
См. ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::nr_threads_.
getScoreThreshold()
| inline |
- Возвращает
- порог оценки, используемый для досрочного завершения метода.
Определение в строке 224 файла ia_fpcs.h.
См. ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::score_threshold_.
getSourceNormals()
| inline |
- Возвращает
- нормали исходного облака точек.
Определение в строке 141 файла ia_fpcs.h.
См. ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::source_normals_.
getTargetIndices()
| inline |
- Возвращает
- указатель на вектор индексов целевого облака.
Определение в строке 125 файла ia_fpcs.h.
См. ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::target_indices_.
getTargetNormals()
| inline |
- Возвращает
- нормали целевого облака точек.
Определение в строке 157 файла ia_fpcs.h.
См. ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::target_normals_.
handleMatches()
| protectedvirtual |
Метод обработки текущих кандидатов на сопоставление.
На этом этапе проверяются и оцениваются сопоставления относительно базы, а также сохраняется наилучшее подходящее сопоставление (вместе с его оценкой и расчётным преобразованием).
- Примечание
- Для обеспечения совместимости с будущими версиями результаты хранятся в «векторах размера 1».
- Параметры
-
[in] base_indices индексы базы B [in,out] matches вектор кандидатов на сопоставление относительно базы B. На этом этапе кандидаты на сопоставление меняют порядок. [out] candidates вектор, содержащий кандидатов на сопоставление M
Переопределено в pcl::registration::KFPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >.
Определение в строке 757 файла ia_fpcs.hpp.
initCompute()
| protectedvirtual |
Инициализация внутренних вычислений.
Переопределена в pcl::registration::KFPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >.
Определение в строке 224 файла ia_fpcs.hpp.
Ссылки: pcl::FilterIndices< PointT >::filter(), pcl::getMinMax3D(), pcl::PCLBase< PointT >::setIndices(), pcl::PCLBase< PointT >::setInputCloud(), pcl::RandomSample< PointT >::setSample() и pcl::RandomSample< PointT >::setSeed().
Используется в pcl::registration::KFPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::initCompute().
linkMatchWithBase()
| protectedvirtual |
Устанавливает соответствия между базой B и совпадением M, используя расстояние от каждой точки до центра прямоугольника.
- Параметры
-
[in] base_indices индексы базы B [in] match_indices индексы совпадения M [out] correspondences полученные соответствия
- Устарело:
- Запланировано к удалению в версии 1 . 18 : «эта функция содержит ошибку и обычно не нужна»
Определение в строке 795 файла ia_fpcs.hpp.
Ссылки: pcl::compute3DCentroid() и pcl::squaredEuclideanDistance().
segmentToSegmentDist()
| protected |
Вычисляет коэффициенты пересечения и расстояния между отрезками диагоналей базы.
- Параметры
-
[in] base_indices индексы базы B [out] ratio коэффициенты пересечения диагоналей для точек базы
- Возвращает
- значение качества пересечения диагоналей
Определение в строке 498 файла ia_fpcs.hpp.
selectBase()
| protected |
Выбирает из исходного облака точек приблизительно компланарный набор из четырёх точек.
- Параметры
-
[out] base_indices индексы выбранных точек исходного облака, далее используемые как база (B) [out] ratio два коэффициента пересечения диагоналей (r1,r2) для точек базы
- Возвращает
-
- < 0 не найдено компланарных наборов из четырёх точек с достаточно большим расстоянием выборки
- = 0 выбран набор из четырёх конгруэнтных точек
Определение в строке 351 файла ia_fpcs.hpp.
selectBaseTriangle()
| protected |
Случайным образом выбирает тройку точек с большими расстояниями между точками.
Минимальное расстояние выборки точек вычисляется на основе оценки перекрытия облаков точек во время инициализации.
- Параметры
-
[out] base_indices индексы базы B
- Возвращает
-
- < 0 не удалось выбрать треугольник с достаточно длинными сторонами
- = 0 базовый треугольник успешно выбран
Определение в строке 417 файла ia_fpcs.hpp.
setApproxOverlap()
| inline |
setDelta()
| inline |
Задаёт постоянный коэффициент delta, который задаёт веса параметров, вычисляемых внутри метода.
- Параметры
-
[in] delta весовой коэффициент delta [in] normalize флаг, указывающий, следует ли нормализовать delta в соответствии с плотностью облака точек
Определение в строке 183 файла ia_fpcs.h.
Ссылки: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::delta_ и pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::normalize_delta_.
setMaxComputationTime()
| inline |
Задаёт максимальное время вычислений в секундах.
- Параметры
-
[in] max_runtime максимальное время выполнения метода в секундах
Определение в строке 266 файла ia_fpcs.h.
Ссылка: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::max_runtime_.
setMaxNormalDifference()
| inline |
Задаёт максимальное различие нормалей между допустимыми соответствиями точек в градусах.
- Параметры
-
[in] max_norm_diff максимальное различие в градусах
Определение в строке 249 файла ia_fpcs.h.
Ссылка: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::max_norm_diff_.
setNumberOfSamples()
| inline |
Задаёт количество исходных выборок, используемых при совмещении.
- Параметры
-
[in] nr_samples количество исходных выборок
Определение в строке 233 файла ia_fpcs.h.
Ссылка: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::nr_samples_.
setNumberOfThreads()
| inline |
Задаёт количество используемых потоков, если активирован OpenMP.
- Параметры
-
[in] nr_threads количество используемых потоков
Определение в строке 166 файла ia_fpcs.h.
Ссылка: pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::nr_threads_.
setScoreThreshold()
| inline |
setSourceNormals()
| inline |
setTargetIndices()
| inline |
setTargetNormals()
| inline |
setupBase()
| protected |
Подготавливает базу (четыре компланарные точки), упорядочивая точки и вычисляя коэффициенты пересечения и расстояния между отрезками диагоналей базы.
- Параметры
-
[in,out] base_indices индексы базы B (будут переупорядочены) [out] ratio коэффициенты пересечения диагоналей для точек базы
Определение в строке 455 файла ia_fpcs.hpp.
validateMatch()
| protectedvirtual |
Проверяет соответствие, вычисляя преобразование между исходным и целевым облаками по четырём сопоставленным точкам и сравнивая среднеквадратичную ошибку (MSE) с пороговым значением.
Предел MSE вычисляется при инициализации (max_mse_).
- Параметры
-
[in] base_indices индексы базового набора B [in] match_indices индексы набора совпадений M [in] correspondences соответствия между исходным и целевым облаками [out] transformation полученная матрица преобразования
- Возвращает
-
- < 0 MSE больше max_mse_
- = 0 MSE меньше max_mse_
Определение находится в строке 848 файла ia_fpcs.hpp.
Ссылки: pcl::squaredEuclideanDistance() и pcl::transformPointCloud().
validateTransformation()
| protectedvirtual |
Проверяет преобразование, вычисляя число внутренних точек после преобразования исходного облака.
Полученная оценка соответствия впоследствии используется как критерий выбора наилучшего соответствия.
- Параметры
-
[out] transformation обновлённая матрица ориентации, рассчитанная с использованием всех внутренних точек [out] fitness_score текущая наилучшая оценка соответствия
- Примечание
- Оценка соответствия обновляется, только если оценка текущего преобразования превышает входное значение.
- Возвращает
-
- < 0 если предыдущий результат лучше текущего (оценка не меняется)
- = 0 текущий результат лучше предыдущего (оценка обновлена)
Переопределён в pcl::registration::KFPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >.
Определение находится в строке 880 файла ia_fpcs.hpp.
Ссылка: pcl::transformPointCloud().
Документация по данным-членам
approx_overlap_
| protected |
Оценка перекрытия исходного и целевого облаков (стандартное значение = 0.5).
Определение находится в строке 477 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::getApproxOverlap() и pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::setApproxOverlap().
coincidation_limit_
| protected |
delta_
| protected |
Значение delta алгоритма 4pcs (стандартное значение = 1.0).
Его можно использовать как:
- абсолютное значение (normalization = false): значение должно соответствовать точности точек, чтобы обеспечить поиск соседей между исходным и целевым облаками
- относительное значение (normalization = true): для корректировки точности точек (= плотности точек), вычисляемой внутри программы
Определение находится в строке 486 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::getDelta() и pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::setDelta().
diameter_
| protected |
fitness_score_
| protected |
Итоговая оценка соответствия для наилучшего совпадения.
Определение находится в строке 506 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::getFitnessScore().
max_base_diameter_sqr_
| protected |
Оценка квадрата перекрытия исходного и целевого облаков.
- Примечание
- Вычисляется внутри программы на основе оценки перекрытия и размеров исходного облака. Используется для определения минимального расстояния между выбираемыми базовыми точками, а также числа попыток, необходимых для надёжного поиска правильного соответствия.
max_edge_diff_
| protected |
max_inlier_dist_sqr_
| protected |
max_mse_
| protected |
max_norm_diff_
| protected |
Максимальная разница нормалей соответствующих пар точек в градусах (стандартное значение = 90).
Определение находится в строке 499 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::getMaxNormalDifference() и pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::setMaxNormalDifference().
max_pair_diff_
| protected |
max_runtime_
| protected |
Максимально допустимое время вычислений в секундах (стандартное значение = 0 => ~без ограничений).
Определение находится в строке 503 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::getMaxComputationTime() и pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::setMaxComputationTime().
normalize_delta_
| protected |
Флаг нормализации delta.
Определение находится в строке 522 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::setDelta().
nr_samples_
| protected |
Число точек для равномерной выборки из исходного облака точек.
(стандартное значение = 0 => всё облако).
Определение находится в строке 495 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::getNumberOfSamples() и pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::setNumberOfSamples().
nr_threads_
| protected |
Число потоков для параллельного выполнения (стандартное значение = 1).
- Примечание
- Используется только при компиляции с OpenMP.
Определение находится в строке 474 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::getNumberOfThreads() и pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::setNumberOfThreads().
score_threshold_
| protected |
Пороговое значение оценки для успешной остановки вычислений.
Если пользователь не задаёт его, значение зависит от размера приблизительно определённой области перекрытия.
Определение находится в строке 491 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::getScoreThreshold() и pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::setScoreThreshold().
small_error_
| protected |
source_indices_
| protected |
source_normals_
| protected |
Нормали исходного облака точек.
Определение в строке 466 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::getSourceNormals() и pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::setSourceNormals().
target_indices_
| protected |
Указатель на вектор индексов целевых точек, используемый после выборки.
Определение в строке 528 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::getTargetIndices() и pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::setTargetIndices().
target_normals_
| protected |
Нормали целевого облака точек.
Определение в строке 469 файла ia_fpcs.h.
Используется в pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::getTargetNormals() и pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::setTargetNormals().
use_normals_
| protected |
Документация для этого класса создана на основе следующих файлов:
- pcl/registration/ia_fpcs.h
- pcl/registration/impl/ia_fpcs.hpp
© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1registration_1_1_f_p_c_s_initial_alignment.html