Point Cloud Library (PCL)
1.14.1-dev
|
Data structure used to store the results of the MLS fitting. More...
#include <pcl/surface/mls.h>
Classes | |
struct | MLSProjectionResults |
Data structure used to store the MLS projection results. More... | |
struct | PolynomialPartialDerivative |
Data structure used to store the MLS polynomial partial derivatives. More... | |
Public Types | |
enum | ProjectionMethod { NONE , SIMPLE , ORTHOGONAL } |
Public Member Functions | |
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 |
Given a point calculate its 3D location in the MLS frame. More... | |
void | getMLSCoordinates (const Eigen::Vector3d &pt, double &u, double &v) const |
Given a point calculate its 2D location in the MLS frame. More... | |
double | getPolynomialValue (const double u, const double v) const |
Calculate the polynomial. More... | |
PolynomialPartialDerivative | getPolynomialPartialDerivative (const double u, const double v) const |
Calculate the polynomial's first and second partial derivatives. More... | |
Eigen::Vector2f | calculatePrincipalCurvatures (const double u, const double v) const |
Calculate the principal curvatures using the polynomial surface. More... | |
MLSProjectionResults | projectPointOrthogonalToPolynomialSurface (const double u, const double v, const double w) const |
Project a point orthogonal to the polynomial surface. More... | |
MLSProjectionResults | projectPointToMLSPlane (const double u, const double v) const |
Project a point onto the MLS plane. More... | |
MLSProjectionResults | projectPointSimpleToPolynomialSurface (const double u, const double v) const |
Project a point along the MLS plane normal to the polynomial surface. More... | |
MLSProjectionResults | projectPoint (const Eigen::Vector3d &pt, ProjectionMethod method, int required_neighbors=0) const |
Project a point using the specified method. More... | |
MLSProjectionResults | projectQueryPoint (ProjectionMethod method, int required_neighbors=0) const |
Project the query point used to generate the mls surface about using the specified method. More... | |
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={}) |
Smooth a given point and its neighborhood using Moving Least Squares. More... | |
Public Attributes | |
Eigen::Vector3d | query_point |
The query point about which the mls surface was generated. More... | |
Eigen::Vector3d | mean |
The mean point of all the neighbors. More... | |
Eigen::Vector3d | plane_normal |
The normal of the local plane of the query point. More... | |
Eigen::Vector3d | u_axis |
The axis corresponding to the u-coordinates of the local plane of the query point. More... | |
Eigen::Vector3d | v_axis |
The axis corresponding to the v-coordinates of the local plane of the query point. More... | |
Eigen::VectorXd | c_vec |
The polynomial coefficients Example: 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. More... | |
int | num_neighbors |
The number of neighbors used to create the mls surface. More... | |
float | curvature |
The curvature at the query point. More... | |
int | order |
The order of the polynomial. More... | |
bool | valid |
If True, the mls results data is valid, otherwise False. More... | |
|
inline |
Eigen::Vector2f pcl::MLSResult::calculatePrincipalCurvatures | ( | const double | u, |
const double | v | ||
) | const |
Calculate the principal curvatures using the polynomial surface.
[in] | u | The u-coordinate of the point in local MLS frame. |
[in] | v | The v-coordinate of the point in local MLS frame. |
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 = {} |
||
) |
Smooth a given point and its neighborhood using Moving Least Squares.
[in] | cloud | the input cloud, used together with index and nn_indices |
[in] | index | the index of the query point in the input cloud |
[in] | nn_indices | the set of nearest neighbors indices for pt |
[in] | search_radius | the search radius used to find nearest neighbors for pt |
[in] | polynomial_order | the order of the polynomial to fit to the nearest neighbors |
[in] | weight_func | defines the weight function for the polynomial fit |
Definition at line 692 of file mls.hpp.
References pcl::compute3DCentroid(), pcl::computeCovarianceMatrix(), pcl::geometry::distance(), and pcl::eigen33().
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Project a point using the specified method.
[in] | pt | The point to be project. |
[in] | method | The projection method to be used. |
[in] | required_neighbors | The minimum number of neighbors required. |
|
inline |
Project a point orthogonal to the polynomial surface.
[in] | u | The u-coordinate of the point in local MLS frame. |
[in] | v | The v-coordinate of the point in local MLS frame. |
[in] | w | The w-coordinate of the point in local MLS frame. |
Definition at line 539 of file mls.hpp.
References 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, and pcl::MLSResult::PolynomialPartialDerivative::z_vv.
|
inline |
Project a point along the MLS plane normal to the polynomial surface.
[in] | u | The u-coordinate of the point in local MLS frame. |
[in] | v | The v-coordinate of the point in local MLS frame. |
Definition at line 616 of file mls.hpp.
References 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, and pcl::MLSResult::PolynomialPartialDerivative::z_v.
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal().
|
inline |
Project a point onto the MLS plane.
[in] | u | The u-coordinate of the point in local MLS frame. |
[in] | v | The v-coordinate of the point in local MLS frame. |
Definition at line 604 of file mls.hpp.
References pcl::MLSResult::MLSProjectionResults::normal, pcl::MLSResult::MLSProjectionResults::point, pcl::MLSResult::MLSProjectionResults::u, and pcl::MLSResult::MLSProjectionResults::v.
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal().
|
inline |
Project the query point used to generate the mls surface about using the specified method.
[in] | method | The projection method to be used. |
[in] | required_neighbors | The minimum number of neighbors required. |
Definition at line 661 of file mls.hpp.
References pcl::MLSResult::MLSProjectionResults::normal, and pcl::MLSResult::MLSProjectionResults::point.
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal().
Eigen::VectorXd pcl::MLSResult::c_vec |
float pcl::MLSResult::curvature |
The curvature at the query point.
Definition at line 222 of file mls.h.
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal().
Eigen::Vector3d pcl::MLSResult::mean |
int pcl::MLSResult::num_neighbors |
The number of neighbors used to create the mls surface.
Definition at line 221 of file mls.h.
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal().
int pcl::MLSResult::order |
Eigen::Vector3d pcl::MLSResult::plane_normal |
Eigen::Vector3d pcl::MLSResult::query_point |
Eigen::Vector3d pcl::MLSResult::u_axis |
Eigen::Vector3d pcl::MLSResult::v_axis |
bool pcl::MLSResult::valid |