Quadratic surface fit and local axes estimation. More...

List of all members.

Public Member Functions

void findTaubinNormalAxis (const std::vector< int > &indices, const Eigen::VectorXi &cam_source)
Estimate the local axes for the quadric fitted to the point neighborhood.
void fitQuadric (const std::vector< int > &indices)
Fit a quadratic surface to a point neighborhood.
const Eigen::Vector3d & getBinormal () const
Return the binormal for the quadric fitted to the point neighborhood.
const Eigen::Vector3d & getCurvatureAxis () const
Return the curvature axis for the quadric fitted to the point neighborhood.
const Eigen::Vector3d & getNormal () const
Return the normal for the quadric fitted to the point neighborhood.
const Eigen::Vector3d & getSample () const
Return the sample for which the point neighborhood was found.
void plotAxes (void *viewer_void, int id) const
Plot the local axes.
void print ()
Print a description of the quadric to the system's standard output.
Standard constructor.
Quadric (const std::vector< Eigen::Matrix4d, Eigen::aligned_allocator< Eigen::Matrix4d > > &T_cams, const pcl::PointCloud< pcl::PointXYZ >::Ptr &input, const Eigen::Vector3d &sample, bool is_deterministic)
Constructor.
void setInputCloud (const pcl::PointCloud< pcl::PointXYZ >::Ptr &input)
Set the input point cloud.

Private Member Functions

void findAverageNormalAxis (const Eigen::MatrixXd &normals)
Estimate the average normal axis for the quadric fitted to the point neighborhood.
bool solveGeneralizedEigenProblem (const Eigen::MatrixXd &A, const Eigen::MatrixXd &B, Eigen::MatrixXd &v, Eigen::MatrixXd &lambda)
Solve the generalized Eigen problem A * v(j) = lambda(j) * B * v(j), where v are the Eigen vectors, and lambda are the Eigen values. The eigenvalues are stored as: (lambda(:, 1) + lambda(:, 2)*i)./lambda(:, 3). This method returns true if the Eigen problem is solved successfully.
Unpack the parameters of the quadric.

Private Attributes

Eigen::Vector3d binormal_
the curvature, normal, and binormal axis
Eigen::Matrix3Xd cam_origins_
the camera positions
Eigen::Vector3d centroid_
Eigen::Matrix3d covariance_matrix_
the covariance matrix of the quadric
Eigen::Vector3d curvature_axis_
pcl::PointCloud< pcl::PointXYZ >
::Ptr
input_
the input point cloud
bool is_deterministic_
whether the local axes estimation is deterministic
int majority_cam_source_
the majority camera source
Eigen::Vector3d normal_
double normals_ratio_
the ratio between the normals of the quadric
Eigen::Matrix< double, 10, 1 > parameters_
the parameters of the quadric (implicit form)
Eigen::Vector3d sample_
the sample for which the point neighborhood was found

Static Private Attributes

static const int TAUBIN_MATRICES_SIZE = 10
size of matrices in Taubin Quadric Fitting

Detailed Description

Quadratic surface fit and local axes estimation.

This class fits a quadratic surface to a point neighborhood and estimates the curvature axis, normal, and binormal for the surface fitted to a point neighborhood. To fit the quadratic surface, a method from the LAPACK library is used.

Definition at line 55 of file quadric.h.

Constructor & Destructor Documentation

Standard constructor.

Definition at line 62 of file quadric.h.

 Quadric::Quadric ( const std::vector< Eigen::Matrix4d, Eigen::aligned_allocator< Eigen::Matrix4d > > & T_cams, const pcl::PointCloud< pcl::PointXYZ >::Ptr & input, const Eigen::Vector3d & sample, bool is_deterministic )

Constructor.

Parameters:
 T_cams the camera poses input the input point cloud sample the sample for which the point neighborhood was found is_deterministic_ whether the local axes estimation is deterministic

Definition at line 3 of file quadric.cpp.

Member Function Documentation

 void Quadric::findAverageNormalAxis ( const Eigen::MatrixXd & normals ) [private]

Estimate the average normal axis for the quadric fitted to the point neighborhood.

Parameters:
 normals the 3xn matrix of normals found for points in the point neighborhood

Definition at line 263 of file quadric.cpp.

 void Quadric::findTaubinNormalAxis ( const std::vector< int > & indices, const Eigen::VectorXi & cam_source )

Estimate the local axes for the quadric fitted to the point neighborhood.

Parameters:
 indices the list of point cloud indices that belong to the point neighborhood cam_source the camera source for each point in the point cloud

Definition at line 159 of file quadric.cpp.

Fit a quadratic surface to a point neighborhood.

Parameters:
 indices the list of point cloud indices that belong to the point neighborhood

Definition at line 14 of file quadric.cpp.

 const Eigen::Vector3d& Quadric::getBinormal ( ) const [inline]

Return the binormal for the quadric fitted to the point neighborhood.

Returns:
the 3x1 binormal for the quadric fitted to the point neighborhood

Definition at line 123 of file quadric.h.

 const Eigen::Vector3d& Quadric::getCurvatureAxis ( ) const [inline]

Return the curvature axis for the quadric fitted to the point neighborhood.

Returns:
the 3x1 curvature axis for the quadric fitted to the point neighborhood

Definition at line 132 of file quadric.h.

 const Eigen::Vector3d& Quadric::getNormal ( ) const [inline]

Return the normal for the quadric fitted to the point neighborhood.

Returns:
the 3x1 normal for the quadric fitted to the point neighborhood

Definition at line 141 of file quadric.h.

 const Eigen::Vector3d& Quadric::getSample ( ) const [inline]

Return the sample for which the point neighborhood was found.

Returns:
the 3x1 sample for which the point neighborhood was found

Definition at line 114 of file quadric.h.

 void Quadric::plotAxes ( void * viewer_void, int id ) const

Plot the local axes.

Parameters:
 viewer_void a pointer to a PCL visualizer id an identifier number for the axes

Definition at line 365 of file quadric.cpp.

Print a description of the quadric to the system's standard output.

Definition at line 253 of file quadric.cpp.

 void Quadric::setInputCloud ( const pcl::PointCloud< pcl::PointXYZ >::Ptr & input ) [inline]

Set the input point cloud.

Parameters:
 input the input point cloud

Definition at line 93 of file quadric.h.

 bool Quadric::solveGeneralizedEigenProblem ( const Eigen::MatrixXd & A, const Eigen::MatrixXd & B, Eigen::MatrixXd & v, Eigen::MatrixXd & lambda ) [private]

Solve the generalized Eigen problem A * v(j) = lambda(j) * B * v(j), where v are the Eigen vectors, and lambda are the Eigen values. The eigenvalues are stored as: (lambda(:, 1) + lambda(:, 2)*i)./lambda(:, 3). This method returns true if the Eigen problem is solved successfully.

Parameters:
 A the matrix A in the problem B the matrix B in the problem v the resultant Eigen vectors lambda the resultant Eigen vectors (see above)
Returns:
true if the solution process worked properly, false otherwise

Definition at line 330 of file quadric.cpp.

Unpack the parameters of the quadric.

Definition at line 307 of file quadric.cpp.

Member Data Documentation

the curvature, normal, and binormal axis

Definition at line 178 of file quadric.h.

the camera positions

Definition at line 174 of file quadric.h.

Definition at line 180 of file quadric.h.

the covariance matrix of the quadric

Definition at line 181 of file quadric.h.

Definition at line 178 of file quadric.h.

the input point cloud

Definition at line 177 of file quadric.h.

whether the local axes estimation is deterministic

Definition at line 173 of file quadric.h.

the majority camera source

Definition at line 176 of file quadric.h.

Definition at line 178 of file quadric.h.

the ratio between the normals of the quadric

Definition at line 182 of file quadric.h.

the parameters of the quadric (implicit form)

Definition at line 179 of file quadric.h.

the sample for which the point neighborhood was found

Definition at line 175 of file quadric.h.

 const int Quadric::TAUBIN_MATRICES_SIZE = 10 [static, private]

size of matrices in Taubin Quadric Fitting

Definition at line 184 of file quadric.h.

The documentation for this class was generated from the following files:

agile_grasp
Author(s):
autogenerated on Thu Aug 27 2015 12:01:28