Структура данных для хранения результатов аппроксимации методом MLS. Подробнее...
#include <pcl/surface/mls.h>
|
| |
MLSResult () |
| |
MLSResult (const Eigen::Vector3d &a_query_point, const Eigen::Vector3d &a_mean, const Eigen::Vector3d &a_plane_normal, const Eigen::Vector3d &a_u, const Eigen::Vector3d &a_v, const Eigen::VectorXd &a_c_vec, const int a_num_neighbors, const float a_curvature, const int a_order) |
| void |
getMLSCoordinates (const Eigen::Vector3d &pt, double &u, double &v, double &w) const |
| |
Вычисляет трехмерные координаты точки в системе координат MLS. Подробнее...
|
| void |
getMLSCoordinates (const Eigen::Vector3d &pt, double &u, double &v) const |
| |
Вычисляет двумерные координаты точки в системе координат MLS. Подробнее...
|
| double |
getPolynomialValue (const double u, const double v) const |
| |
Вычисляет значение полинома. Подробнее...
|
|
PolynomialPartialDerivative |
getPolynomialPartialDerivative (const double u, const double v) const |
| |
Вычисляет первые и вторые частные производные полинома. Подробнее...
|
| Eigen::Vector2f |
calculatePrincipalCurvatures (const double u, const double v) const |
| |
Вычисляет главные кривизны с использованием полиномиальной поверхности. Подробнее...
|
|
MLSProjectionResults |
projectPointOrthogonalToPolynomialSurface (const double u, const double v, const double w) const |
| |
Проецирует точку по нормали к полиномиальной поверхности. Подробнее...
|
|
MLSProjectionResults |
projectPointToMLSPlane (const double u, const double v) const |
| |
Проецирует точку на плоскость MLS. Подробнее...
|
|
MLSProjectionResults |
projectPointSimpleToPolynomialSurface (const double u, const double v) const |
| |
Проецирует точку на полиномиальную поверхность вдоль нормали к плоскости MLS. Подробнее...
|
|
MLSProjectionResults |
projectPoint (const Eigen::Vector3d &pt, ProjectionMethod method, int required_neighbors=0) const |
| |
Проецирует точку указанным методом. Подробнее...
|
|
MLSProjectionResults |
projectQueryPoint (ProjectionMethod method, int required_neighbors=0) const |
| |
Проецирует точку запроса, относительно которой была построена поверхность MLS, указанным методом. Подробнее...
|
| template<typename PointT > |
| void |
computeMLSSurface (const pcl::PointCloud< PointT > &cloud, pcl::index_t index, const pcl::Indices &nn_indices, double search_radius, int polynomial_order=2, std::function< double(const double)> weight_func={}) |
| |
Сглаживает заданную точку и ее окрестность методом наименьших квадратов с движущимся окном (MLS). Подробнее...
|
Структура данных для хранения результатов аппроксимации методом MLS.
Определение в строке 59 файла mls.h.
ProjectionMethod
| Элемент перечисления |
|
NONE |
Проецирование на плоскость MLS. |
|
SIMPLE |
Проецирование на полиномиальную поверхность вдоль нормали к плоскости MLS. |
|
ORTHOGONAL |
Проецирование в ближайшую точку полиномиальной поверхности. |
Определение в строке 61 файла mls.h.
MLSResult() [1/2]
| pcl::MLSResult::MLSResult | ( | |
) | | | inline |
Определение в строке 92 файла mls.h.
MLSResult() [2/2]
| pcl::MLSResult::MLSResult | ( | const Eigen::Vector3d & |
a_query_point, | | | const Eigen::Vector3d & |
a_mean, | | | const Eigen::Vector3d & |
a_plane_normal, | | | const Eigen::Vector3d & |
a_u, | | | const Eigen::Vector3d & |
a_v, | | | const Eigen::VectorXd & |
a_c_vec, | | | const int |
a_num_neighbors, | | | const float |
a_curvature, | | | const int |
a_order | | ) | |
| | inline |
calculatePrincipalCurvatures()
| Eigen::Vector2f pcl::MLSResult::calculatePrincipalCurvatures | ( | const double |
u, |
| | const double |
v |
| ) | |
const |
Вычисляет главные кривизны с использованием полиномиальной поверхности.
- Параметры
-
| [in] |
u |
Координата u точки в локальной системе координат MLS. |
| [in] |
v |
Координата v точки в локальной системе координат MLS. |
- Возвращает
- Главные кривизны [k1, k2] в заданных координатах uv.
- Примечание
- При возникновении ошибки возвращается значение 1e-5.
computeMLSSurface()
template<typename PointT >
| void pcl::MLSResult::computeMLSSurface | ( | const pcl::PointCloud< PointT > & |
cloud, |
| |
pcl::index_t |
index, |
| | const pcl::Indices & |
nn_indices, |
| | double |
search_radius, |
| | int |
polynomial_order = 2, |
| | std::function< double(const double)> |
weight_func = {} |
| ) | |
|
getMLSCoordinates() [1/2]
| void pcl::MLSResult::getMLSCoordinates | ( | const Eigen::Vector3d & |
pt, | | | double & |
u, | | | double & |
v | | ) | |
const | | inline |
Вычисляет двумерные координаты заданной точки в системе координат MLS.
- Параметры
-
| [in] |
pt |
Точка. |
| [out] |
u |
Координата u точки в локальной системе координат MLS. |
| [out] |
v |
Координата v точки в локальной системе координат MLS. |
Определение в строке 464 файла mls.hpp.
getMLSCoordinates() [2/2]
| void pcl::MLSResult::getMLSCoordinates | ( | const Eigen::Vector3d & |
pt, | | | double & |
u, | | | double & |
v, | | | double & |
w | | ) | |
const | | inline |
Вычисляет трехмерные координаты заданной точки в системе координат MLS.
- Параметры
-
| [in] |
pt |
Точка. |
| [out] |
u |
Координата u точки в локальной системе координат MLS. |
| [out] |
v |
Координата v точки в локальной системе координат MLS. |
| [out] |
w |
Координата w точки в локальной системе координат MLS. |
Определение в строке 455 файла mls.hpp.
getPolynomialPartialDerivative()
Вычислить первые и вторые частные производные полинома.
- Параметры
-
| [in] |
u |
Координата u точки в локальной системе координат MLS. |
| [in] |
v |
Координата v точки в локальной системе координат MLS. |
- Возвращает
- Частные производные полинома в заданных координатах uv.
Определение в строке 494 файла mls.hpp.
getPolynomialValue()
| double pcl::MLSResult::getPolynomialValue | ( | const double |
u, | | | const double |
v | | ) | |
const | | inline |
Вычислить значение полинома.
- Параметры
-
| [in] |
u |
Координата u точки в локальной системе координат MLS. |
| [in] |
v |
Координата v точки в локальной системе координат MLS. |
- Возвращает
- Значение полинома в заданных координатах uv.
Определение в строке 472 файла mls.hpp.
projectPoint()
Спроецировать точку указанным способом.
- Параметры
-
| [in] |
pt |
Проецируемая точка. |
| [in] |
method |
Используемый метод проецирования. |
| [in] |
required_neighbors |
Минимальное требуемое количество соседей. |
- Примечание
- Если required_neighbors равен 0, допускается любое количество соседей.
- Если требуемое значение required_neighbors не достигнуто, точка проецируется на плоскость mls.
- Возвращает
- MLSProjectionResults для входных данных.
Определение в строке 639 файла mls.hpp.
projectPointOrthogonalToPolynomialSurface()
Спроецировать точку по нормали к полиномиальной поверхности.
- Параметры
-
| [in] |
u |
Координата u точки в локальной системе координат MLS. |
| [in] |
v |
Координата v точки в локальной системе координат MLS. |
| [in] |
w |
Координата w точки в локальной системе координат MLS. |
- Возвращает
- MLSProjectionResults для входных данных.
- Примечание
- Если MLSResults не содержит данных полинома, точка проецируется на плоскость mls.
- Если оптимизация расходится, выполняется простое проецирование на полиномиальную поверхность.
- Реализация основана на этом источнике: https://math.stackexchange.com/questions/1497093/shortest-distance-between-point-and-surface
Определение в строке 539 файла mls.hpp.
Ссылки: pcl::MLSResult::MLSProjectionResults::normal, pcl::MLSResult::MLSProjectionResults::point, pcl::MLSResult::MLSProjectionResults::u, pcl::MLSResult::MLSProjectionResults::v, pcl::MLSResult::PolynomialPartialDerivative::z, pcl::MLSResult::PolynomialPartialDerivative::z_u, pcl::MLSResult::PolynomialPartialDerivative::z_uu, pcl::MLSResult::PolynomialPartialDerivative::z_uv, pcl::MLSResult::PolynomialPartialDerivative::z_v и pcl::MLSResult::PolynomialPartialDerivative::z_vv.
projectPointSimpleToPolynomialSurface()
projectPointToMLSPlane()
projectQueryPoint()
c_vec
| Eigen::VectorXd pcl::MLSResult::c_vec |
Коэффициенты полинома. Пример: z = c_vec[0] + c_vec[1]*v + c_vec[2]*v^2 + c_vec[3]*u + c_vec[4]*u*v + c_vec[5]*u^2.
Определение в строке 220 файла mls.h.
curvature
| float pcl::MLSResult::curvature |
mean
| Eigen::Vector3d pcl::MLSResult::mean |
Средняя точка всех соседей.
Определение в строке 216 файла mls.h.
num_neighbors
| int pcl::MLSResult::num_neighbors |
order
| int pcl::MLSResult::order |
Порядок полинома.
Если order > 1, используется аппроксимация полиномом.
Определение в строке 223 файла mls.h.
plane_normal
| Eigen::Vector3d pcl::MLSResult::plane_normal |
Нормаль локальной плоскости точки запроса.
Определение в строке 217 файла mls.h.
query_point
| Eigen::Vector3d pcl::MLSResult::query_point |
Точка запроса, вокруг которой была построена поверхность mls.
Определение в строке 215 файла mls.h.
u_axis
| Eigen::Vector3d pcl::MLSResult::u_axis |
Ось, соответствующая координатам u локальной плоскости точки запроса.
Определение в строке 218 файла mls.h.
v_axis
| Eigen::Vector3d pcl::MLSResult::v_axis |
Ось, соответствующая координатам v локальной плоскости точки запроса.
Определение в строке 219 файла mls.h.
valid
| bool pcl::MLSResult::valid |
Если значение равно True, данные результата mls действительны; в противном случае — False.
Определение в строке 224 файла mls.h.
Документация для этой структуры сгенерирована на основе следующих файлов: