Point Cloud Library (PCL)
1.9.1
|
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 it's 3D location in the MLS frame. More... | |
void | getMLSCoordinates (const Eigen::Vector3d &pt, double &u, double &v) const |
Given a point calculate it's 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 | calculatePrincipleCurvatures (const double u, const double v) const |
Calculate the principle 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, int index, const std::vector< int > &nn_indices, double search_radius, int polynomial_order=2, boost::function< double(const double)> weight_func=0) |
Smooth a given point and its neighborghood 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 |
Definition at line 91 of file mls.h.
References calculatePrincipleCurvatures(), computeMLSSurface(), getMLSCoordinates(), getPolynomialPartialDerivative(), getPolynomialValue(), projectPoint(), projectPointOrthogonalToPolynomialSurface(), projectPointSimpleToPolynomialSurface(), projectPointToMLSPlane(), and projectQueryPoint().
|
inline |
|
inline |
Calculate the principle 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. |
Definition at line 533 of file mls.hpp.
References c_vec, getPolynomialPartialDerivative(), pcl::K, order, 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.
Referenced by MLSResult().
void pcl::MLSResult::computeMLSSurface | ( | const pcl::PointCloud< PointT > & | cloud, |
int | index, | ||
const std::vector< int > & | nn_indices, | ||
double | search_radius, | ||
int | polynomial_order = 2 , |
||
boost::function< double(const double)> | weight_func = 0 |
||
) |
Smooth a given point and its neighborghood using Moving Least Squares.
[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 718 of file mls.hpp.
References c_vec, pcl::compute3DCentroid(), pcl::computeCovarianceMatrix(), curvature, pcl::geometry::distance(), pcl::eigen33(), pcl::EIGEN_ALIGN16, mean, num_neighbors, order, plane_normal, pcl::PointCloud< PointT >::points, query_point, u_axis, v_axis, and valid.
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal(), and MLSResult().
|
inline |
Given a point calculate it's 3D location in the MLS frame.
[in] | pt | The point |
[out] | u | The u-coordinate of the point in local MLS frame. |
[out] | v | The v-coordinate of the point in local MLS frame. |
[out] | w | The w-coordinate of the point in local MLS frame. |
Definition at line 448 of file mls.hpp.
References mean, plane_normal, u_axis, and v_axis.
Referenced by MLSResult(), projectPoint(), and projectQueryPoint().
|
inline |
|
inline |
Calculate the polynomial's first and second partial derivatives.
[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 488 of file mls.hpp.
References c_vec, order, 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.
Referenced by calculatePrincipleCurvatures(), MLSResult(), projectPointOrthogonalToPolynomialSurface(), and projectPointSimpleToPolynomialSurface().
|
inline |
Calculate the polynomial.
[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 465 of file mls.hpp.
Referenced by MLSResult().
|
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. |
Definition at line 665 of file mls.hpp.
References c_vec, getMLSCoordinates(), NONE, num_neighbors, order, ORTHOGONAL, projectPointOrthogonalToPolynomialSurface(), projectPointSimpleToPolynomialSurface(), and projectPointToMLSPlane().
Referenced by MLSResult().
|
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 565 of file mls.hpp.
References c_vec, getPolynomialPartialDerivative(), mean, pcl::MLSResult::MLSProjectionResults::normal, order, plane_normal, pcl::MLSResult::MLSProjectionResults::point, pcl::MLSResult::MLSProjectionResults::u, u_axis, pcl::MLSResult::MLSProjectionResults::v, v_axis, 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.
Referenced by MLSResult(), projectPoint(), and projectQueryPoint().
|
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 642 of file mls.hpp.
References c_vec, getPolynomialPartialDerivative(), mean, pcl::MLSResult::MLSProjectionResults::normal, order, plane_normal, pcl::MLSResult::MLSProjectionResults::point, pcl::MLSResult::MLSProjectionResults::u, u_axis, pcl::MLSResult::MLSProjectionResults::v, v_axis, pcl::MLSResult::PolynomialPartialDerivative::z, pcl::MLSResult::PolynomialPartialDerivative::z_u, and pcl::MLSResult::PolynomialPartialDerivative::z_v.
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal(), MLSResult(), and projectPoint().
|
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 630 of file mls.hpp.
References mean, pcl::MLSResult::MLSProjectionResults::normal, plane_normal, pcl::MLSResult::MLSProjectionResults::point, pcl::MLSResult::MLSProjectionResults::u, u_axis, pcl::MLSResult::MLSProjectionResults::v, and v_axis.
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal(), MLSResult(), and projectPoint().
|
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 687 of file mls.hpp.
References c_vec, getMLSCoordinates(), mean, NONE, pcl::MLSResult::MLSProjectionResults::normal, num_neighbors, order, ORTHOGONAL, plane_normal, pcl::MLSResult::MLSProjectionResults::point, projectPointOrthogonalToPolynomialSurface(), query_point, u_axis, and v_axis.
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal(), and MLSResult().
Eigen::VectorXd pcl::MLSResult::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.
Definition at line 218 of file mls.h.
Referenced by calculatePrincipleCurvatures(), computeMLSSurface(), getPolynomialPartialDerivative(), getPolynomialValue(), projectPoint(), projectPointOrthogonalToPolynomialSurface(), projectPointSimpleToPolynomialSurface(), and projectQueryPoint().
float pcl::MLSResult::curvature |
The curvature at the query point.
Definition at line 220 of file mls.h.
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal(), computeMLSSurface(), and pcl::MovingLeastSquares< PointInT, PointOutT >::searchForNeighbors().
Eigen::Vector3d pcl::MLSResult::mean |
The mean point of all the neighbors.
Definition at line 214 of file mls.h.
Referenced by computeMLSSurface(), getMLSCoordinates(), projectPointOrthogonalToPolynomialSurface(), projectPointSimpleToPolynomialSurface(), projectPointToMLSPlane(), and projectQueryPoint().
int pcl::MLSResult::num_neighbors |
The number of neighbors used to create the mls surface.
Definition at line 219 of file mls.h.
Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal(), computeMLSSurface(), projectPoint(), and projectQueryPoint().
int pcl::MLSResult::order |
The order of the polynomial.
If order > 1 then use polynomial fit
Definition at line 221 of file mls.h.
Referenced by calculatePrincipleCurvatures(), computeMLSSurface(), getPolynomialPartialDerivative(), getPolynomialValue(), projectPoint(), projectPointOrthogonalToPolynomialSurface(), projectPointSimpleToPolynomialSurface(), projectQueryPoint(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setPolynomialOrder().
Eigen::Vector3d pcl::MLSResult::plane_normal |
The normal of the local plane of the query point.
Definition at line 215 of file mls.h.
Referenced by computeMLSSurface(), getMLSCoordinates(), projectPointOrthogonalToPolynomialSurface(), projectPointSimpleToPolynomialSurface(), projectPointToMLSPlane(), and projectQueryPoint().
Eigen::Vector3d pcl::MLSResult::query_point |
The query point about which the mls surface was generated.
Definition at line 213 of file mls.h.
Referenced by computeMLSSurface(), and projectQueryPoint().
Eigen::Vector3d pcl::MLSResult::u_axis |
The axis corresponding to the u-coordinates of the local plane of the query point.
Definition at line 216 of file mls.h.
Referenced by computeMLSSurface(), getMLSCoordinates(), projectPointOrthogonalToPolynomialSurface(), projectPointSimpleToPolynomialSurface(), projectPointToMLSPlane(), and projectQueryPoint().
Eigen::Vector3d pcl::MLSResult::v_axis |
The axis corresponding to the v-coordinates of the local plane of the query point.
Definition at line 217 of file mls.h.
Referenced by computeMLSSurface(), getMLSCoordinates(), projectPointOrthogonalToPolynomialSurface(), projectPointSimpleToPolynomialSurface(), projectPointToMLSPlane(), and projectQueryPoint().
bool pcl::MLSResult::valid |
If True, the mls results data is valid, otherwise False.
Definition at line 222 of file mls.h.
Referenced by computeMLSSurface().