Fitting a B-Spline surface to 3D point-clouds using tangent-distance-minimization Based on paper: TODO. More...
#include <fitting_surface_tdm.h>
Classes | |
struct | ParameterTDM |
Parameters with TDM extensions for fitting. More... | |
Public Member Functions | |
virtual void | assemble (ParameterTDM param=ParameterTDM()) |
Assemble the system of equations for fitting. | |
FittingSurfaceTDM (NurbsDataSurface *data, const ON_NurbsSurface &ns) | |
Constructor initializing with the B-Spline surface given in argument 2. | |
FittingSurfaceTDM (int order, NurbsDataSurface *data, Eigen::Vector3d z=Eigen::Vector3d(0.0, 0.0, 1.0)) | |
Constructor initializing B-Spline surface using initNurbsPCA(...). | |
virtual void | solve (double damp=1.0) |
Solve system of equations using Eigen or UmfPack (can be defined in on_nurbs.cmake), and updates B-Spline surface if a solution can be obtained. | |
virtual void | updateSurf (double damp) |
Update surface according to the current system of equations. | |
Protected Member Functions | |
virtual void | addBoundaryRegularisation (int, int, int, double, unsigned &) |
Add minimization constraint: boundary smoothness by derivatives regularisation. | |
virtual void | addCageBoundaryRegularisation (double weight, int side, unsigned &row) |
Add minimization constraint: boundary smoothness by control point regularisation. | |
virtual void | addCageCornerRegularisation (double weight, unsigned &row) |
Add minimization constraint: corner smoothness by control point regularisation. | |
virtual void | addCageInteriorRegularisation (double weight, unsigned &row) |
Add minimization constraint: interior smoothness by control point regularisation. | |
virtual void | addInteriorRegularisation (int, int, int, double, unsigned &) |
Add minimization constraint: interior smoothness by derivatives regularisation. | |
virtual void | addPointConstraint (const Eigen::Vector2d ¶ms, const Eigen::Vector3d &point, const Eigen::Vector3d &normal, const Eigen::Vector3d &tu, const Eigen::Vector3d &tv, double tangent_weight, double weight, unsigned &row) |
Add minimization constraint: point-to-surface distance (point-distance-minimization). | |
virtual void | assembleBoundary (double wBnd, double wTangent, unsigned &row) |
Assemble point-to-surface constraints for boundary points. | |
virtual void | assembleInterior (double wInt, double wTangent, unsigned &row) |
Assemble point-to-surface constraints for interior points. |
Fitting a B-Spline surface to 3D point-clouds using tangent-distance-minimization Based on paper: TODO.
Definition at line 51 of file fitting_surface_tdm.h.
FittingSurfaceTDM::FittingSurfaceTDM | ( | NurbsDataSurface * | data, |
const ON_NurbsSurface & | ns | ||
) |
Constructor initializing with the B-Spline surface given in argument 2.
[in] | data | pointer to the 3D point-cloud data to be fit. |
[in] | ns | B-Spline surface used for fitting. |
Definition at line 45 of file fitting_surface_tdm.cpp.
FittingSurfaceTDM::FittingSurfaceTDM | ( | int | order, |
NurbsDataSurface * | data, | ||
Eigen::Vector3d | z = Eigen::Vector3d (0.0, 0.0, 1.0) |
||
) |
Constructor initializing B-Spline surface using initNurbsPCA(...).
[in] | order | the polynomial order of the B-Spline surface. |
[in] | data | pointer to the 2D point-cloud data to be fit. |
[in] | z | vector defining front face of surface. |
Definition at line 49 of file fitting_surface_tdm.cpp.
virtual void pcl::on_nurbs::FittingSurfaceTDM::addBoundaryRegularisation | ( | int | order, |
int | resU, | ||
int | resV, | ||
double | weight, | ||
unsigned & | row | ||
) | [inline, protected, virtual] |
Add minimization constraint: boundary smoothness by derivatives regularisation.
Reimplemented from pcl::on_nurbs::FittingSurface.
Definition at line 130 of file fitting_surface_tdm.h.
void FittingSurfaceTDM::addCageBoundaryRegularisation | ( | double | weight, |
int | side, | ||
unsigned & | row | ||
) | [protected, virtual] |
Add minimization constraint: boundary smoothness by control point regularisation.
Reimplemented from pcl::on_nurbs::FittingSurface.
Definition at line 302 of file fitting_surface_tdm.cpp.
void FittingSurfaceTDM::addCageCornerRegularisation | ( | double | weight, |
unsigned & | row | ||
) | [protected, virtual] |
Add minimization constraint: corner smoothness by control point regularisation.
Reimplemented from pcl::on_nurbs::FittingSurface.
Definition at line 364 of file fitting_surface_tdm.cpp.
void FittingSurfaceTDM::addCageInteriorRegularisation | ( | double | weight, |
unsigned & | row | ||
) | [protected, virtual] |
Add minimization constraint: interior smoothness by control point regularisation.
Reimplemented from pcl::on_nurbs::FittingSurface.
Definition at line 267 of file fitting_surface_tdm.cpp.
virtual void pcl::on_nurbs::FittingSurfaceTDM::addInteriorRegularisation | ( | int | order, |
int | resU, | ||
int | resV, | ||
double | weight, | ||
unsigned & | row | ||
) | [inline, protected, virtual] |
Add minimization constraint: interior smoothness by derivatives regularisation.
Reimplemented from pcl::on_nurbs::FittingSurface.
Definition at line 126 of file fitting_surface_tdm.h.
void FittingSurfaceTDM::addPointConstraint | ( | const Eigen::Vector2d & | params, |
const Eigen::Vector3d & | point, | ||
const Eigen::Vector3d & | normal, | ||
const Eigen::Vector3d & | tu, | ||
const Eigen::Vector3d & | tv, | ||
double | tangent_weight, | ||
double | weight, | ||
unsigned & | row | ||
) | [protected, virtual] |
Add minimization constraint: point-to-surface distance (point-distance-minimization).
Definition at line 226 of file fitting_surface_tdm.cpp.
void FittingSurfaceTDM::assemble | ( | ParameterTDM | param = ParameterTDM () | ) | [virtual] |
Assemble the system of equations for fitting.
Definition at line 55 of file fitting_surface_tdm.cpp.
void FittingSurfaceTDM::assembleBoundary | ( | double | wBnd, |
double | wTangent, | ||
unsigned & | row | ||
) | [protected, virtual] |
Assemble point-to-surface constraints for boundary points.
Definition at line 184 of file fitting_surface_tdm.cpp.
void FittingSurfaceTDM::assembleInterior | ( | double | wInt, |
double | wTangent, | ||
unsigned & | row | ||
) | [protected, virtual] |
Assemble point-to-surface constraints for interior points.
Definition at line 139 of file fitting_surface_tdm.cpp.
void FittingSurfaceTDM::solve | ( | double | damp = 1.0 | ) | [virtual] |
Solve system of equations using Eigen or UmfPack (can be defined in on_nurbs.cmake), and updates B-Spline surface if a solution can be obtained.
Reimplemented from pcl::on_nurbs::FittingSurface.
Definition at line 107 of file fitting_surface_tdm.cpp.
void FittingSurfaceTDM::updateSurf | ( | double | damp | ) | [virtual] |
Update surface according to the current system of equations.
[in] | damp | damping factor from one iteration to the other. |
Reimplemented from pcl::on_nurbs::FittingSurface.
Definition at line 114 of file fitting_surface_tdm.cpp.