ITK
4.9.0
Insight Segmentation and Registration Toolkit
|
#include <itkLaplacianDeformationQuadEdgeMeshFilter.h>
(abstract) base class for laplacian surface mesh deformation.
Laplacian mesh deformation offers the ability to deform 3D surface mesh while preserving local details.
Laplacian-based approaches represent the surface by the so-called differential coordinates or Laplacian coordinates . These coordinates are obtained by applying the Laplacian operator to the mesh vertices:
where is the mean curvature at the vertex .
The deformation can be formulated by minimizing the difference from the input surface coordinates . With a continuous formulation, this would lead to the minimization of the following energy:
The Euler-Lagrange equation derived:
When considering the input surface as the parameter domain, the Laplace operator turns out into the Laplace-Beltrami operator :
which can be separated into 3 coordinate components.
Then users can add positional constraints on some vertices:
If output positions must exactly match set constraints, see LaplacianDeformationQuadEdgeMeshFilterWithHardConstraints. Else see LaplacianDeformationQuadEdgeMeshFilterWithSoftConstraints
To make the deformation as generic as possible, user can provide/choose:
TInputMesh | Input Mesh Type |
TOutputMesh | Output Mesh Type |
TSolverTraits | Linear Sparse Solver Traits see VNLIterativeSparseSolverTraits and VNLSparseLUSolverTraits |
For details, see http://hdl.handle.net/10380/3410
Definition at line 93 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
Classes | |
struct | HashOutputQEPrimal |
struct | Triple |
Public Types | |
enum | AreaType { NONE = 0, MIXEDAREA } |
typedef MatrixCoefficients < OutputMeshType > | CoefficientsComputationType |
typedef SmartPointer< const Self > | ConstPointer |
typedef TInputMesh | InputMeshType |
typedef Superclass::InputPointType | InputPointType |
typedef SolverTraits::MatrixType | MatrixType |
typedef Superclass::OutputCoordRepType | OutputCoordRepType |
typedef TOutputMesh | OutputMeshType |
typedef Superclass::OutputPointIdentifier | OutputPointIdentifier |
typedef Superclass::OutputPointType | OutputPointType |
typedef Superclass::OutputQEIterator | OutputQEIterator |
typedef Superclass::OutputQEPrimal | OutputQEPrimal |
typedef Superclass::OutputVectorType | OutputVectorType |
typedef SmartPointer< Self > | Pointer |
typedef LaplacianDeformationQuadEdgeMeshFilter | Self |
typedef TSolverTraits | SolverTraits |
typedef QuadEdgeMeshToQuadEdgeMeshFilter < TInputMesh, TOutputMesh > | Superclass |
typedef TriangleHelper < OutputPointType > | TriangleType |
typedef SolverTraits::ValueType | ValueType |
typedef SolverTraits::VectorType | VectorType |
Public Types inherited from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh > | |
typedef SmartPointer< const Self > | ConstPointer |
typedef InputMeshType::CellDataContainer | InputCellDataContainer |
typedef InputMeshType::CellsContainerConstIterator | InputCellsContainerConstIterator |
typedef InputMeshType::CellsContainerConstPointer | InputCellsContainerConstPointer |
typedef InputMeshType::CellTraits | InputCellTraits |
typedef InputMeshType::CoordRepType | InputCoordRepType |
typedef InputMeshType::EdgeCellType | InputEdgeCellType |
typedef InputMeshType::ConstPointer | InputMeshConstPointer |
typedef InputMeshType::Pointer | InputMeshPointer |
typedef TInputMesh | InputMeshType |
typedef InputMeshType::PointDataContainer | InputPointDataContainer |
typedef InputPointDataContainer::ConstPointer | InputPointDataContainerConstPointer |
typedef InputMeshType::PointIdentifier | InputPointIdentifier |
typedef InputMeshType::PointIdList | InputPointIdList |
typedef InputMeshType::PointsContainerConstIterator | InputPointsContainerConstIterator |
typedef InputMeshType::PointsContainerConstPointer | InputPointsContainerConstPointer |
typedef InputCellTraits::PointIdInternalIterator | InputPointsIdInternalIterator |
typedef InputMeshType::PointType | InputPointType |
typedef InputMeshType::PolygonCellType | InputPolygonCellType |
typedef InputQEPrimal::IteratorGeom | InputQEIterator |
typedef InputMeshType::QEPrimal | InputQEPrimal |
typedef InputMeshType::VectorType | InputVectorType |
typedef OutputMeshType::CellDataContainer | OutputCellDataContainer |
typedef OutputMeshType::CoordRepType | OutputCoordRepType |
typedef OutputMeshType::ConstPointer | OutputMeshConstPointer |
typedef OutputMeshType::Pointer | OutputMeshPointer |
typedef TOutputMesh | OutputMeshType |
typedef OutputMeshType::PointDataContainer | OutputPointDataContainer |
typedef OutputMeshType::PointIdentifier | OutputPointIdentifier |
typedef OutputMeshType::PointsContainerConstPointer | OutputPointsContainerConstPointer |
typedef OutputMeshType::PointsContainerIterator | OutputPointsContainerIterator |
typedef OutputMeshType::PointsContainerPointer | OutputPointsContainerPointer |
typedef OutputMeshType::PointType | OutputPointType |
typedef OutputQEPrimal::IteratorGeom | OutputQEIterator |
typedef OutputMeshType::QEPrimal | OutputQEPrimal |
typedef OutputMeshType::VectorType | OutputVectorType |
typedef SmartPointer< Self > | Pointer |
typedef QuadEdgeMeshToQuadEdgeMeshFilter | Self |
typedef MeshToMeshFilter < TInputMesh, TOutputMesh > | Superclass |
Public Types inherited from itk::MeshToMeshFilter< TInputMesh, TOutputMesh > | |
typedef SmartPointer< const Self > | ConstPointer |
typedef InputMeshType::Pointer | InputMeshPointer |
typedef TInputMesh | InputMeshType |
typedef OutputMeshType::Pointer | OutputMeshPointer |
typedef TOutputMesh | OutputMeshType |
typedef SmartPointer< Self > | Pointer |
typedef MeshToMeshFilter | Self |
typedef MeshSource< TOutputMesh > | Superclass |
Public Types inherited from itk::MeshSource< TOutputMesh > | |
typedef SmartPointer< const Self > | ConstPointer |
typedef Superclass::DataObjectIdentifierType | DataObjectIdentifierType |
typedef DataObject::Pointer | DataObjectPointer |
typedef OutputMeshType::Pointer | OutputMeshPointer |
typedef TOutputMesh | OutputMeshType |
typedef SmartPointer< Self > | Pointer |
typedef MeshSource | Self |
typedef ProcessObject | Superclass |
typedef ProcessObject::DataObjectPointerArraySizeType | DataObjectPointerArraySizeType |
Public Types inherited from itk::ProcessObject | |
typedef SmartPointer< const Self > | ConstPointer |
typedef DataObject::DataObjectIdentifierType | DataObjectIdentifierType |
typedef DataObject::Pointer | DataObjectPointer |
typedef std::vector < DataObjectPointer > | DataObjectPointerArray |
typedef DataObjectPointerArray::size_type | DataObjectPointerArraySizeType |
typedef std::vector < DataObjectIdentifierType > | NameArray |
typedef SmartPointer< Self > | Pointer |
typedef ProcessObject | Self |
typedef Object | Superclass |
Public Types inherited from itk::Object | |
typedef SmartPointer< const Self > | ConstPointer |
typedef SmartPointer< Self > | Pointer |
typedef Object | Self |
typedef LightObject | Superclass |
Public Types inherited from itk::LightObject | |
typedef SmartPointer< const Self > | ConstPointer |
typedef SmartPointer< Self > | Pointer |
typedef LightObject | Self |
Static Public Attributes | |
static const unsigned int | InputPointDimension = InputMeshType::PointDimension |
static const unsigned int | OutputPointDimension = OutputMeshType::PointDimension |
Protected Types | |
typedef AreaMapType::const_iterator | AreaMapConstIterator |
typedef itksys::hash_map < OutputPointIdentifier, OutputCoordRepType > | AreaMapType |
typedef CoefficientMapType::const_iterator | CoefficientMapConstIterator |
typedef itksys::hash_map < OutputQEPrimal *, OutputCoordRepType, HashOutputQEPrimal > | CoefficientMapType |
typedef ConstraintMapType::const_iterator | ConstraintMapConstIterator |
typedef itksys::hash_map < OutputPointIdentifier, OutputVectorType > | ConstraintMapType |
typedef itksys::hash_map < OutputPointIdentifier, OutputPointIdentifier > | OutputMapPointIdentifier |
typedef OutputMapPointIdentifier::const_iterator | OutputMapPointIdentifierConstIterator |
typedef OutputMapPointIdentifier::iterator | OutputMapPointIdentifierIterator |
typedef RowType::const_iterator | RowConstIterator |
typedef RowType::iterator | RowIterator |
typedef itksys::hash_map < OutputPointIdentifier, OutputCoordRepType > | RowType |
Protected Attributes | |
AreaType | m_AreaComputationType |
CoefficientMapType | m_CoefficientMap |
CoefficientsComputationType * | m_CoefficientsMethod |
ConstraintMapType | m_Constraints |
OutputMapPointIdentifier | m_InternalMap |
AreaMapType | m_MixedAreaMap |
unsigned int | m_Order |
Protected Attributes inherited from itk::ProcessObject | |
TimeStamp | m_OutputInformationMTime |
bool | m_Updating |
Protected Attributes inherited from itk::LightObject | |
AtomicInt< int > | m_ReferenceCount |
Private Member Functions | |
LaplacianDeformationQuadEdgeMeshFilter (const Self &) ITK_DELETE_FUNCTION | |
void | operator= (const Self &) ITK_DELETE_FUNCTION |
Additional Inherited Members | |
Static Public Member Functions inherited from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh > | |
static Pointer | New () |
Static Public Member Functions inherited from itk::MeshToMeshFilter< TInputMesh, TOutputMesh > | |
static Pointer | New () |
Static Public Member Functions inherited from itk::MeshSource< TOutputMesh > | |
static Pointer | New () |
Static Public Member Functions inherited from itk::Object | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool flag) |
Static Public Member Functions inherited from itk::LightObject | |
static void | BreakOnError () |
static Pointer | New () |
|
protected |
Definition at line 204 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 203 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 201 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 200 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef MatrixCoefficients< OutputMeshType > itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::CoefficientsComputationType |
Definition at line 127 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef SmartPointer< const Self > itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::ConstPointer |
Definition at line 101 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 190 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 189 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef TInputMesh itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::InputMeshType |
Input types.
Definition at line 106 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef Superclass::InputPointType itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::InputPointType |
Definition at line 107 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef SolverTraits::MatrixType itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::MatrixType |
Definition at line 124 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef Superclass::OutputCoordRepType itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputCoordRepType |
Definition at line 113 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 185 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 187 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 186 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef TOutputMesh itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputMeshType |
Output types.
Definition at line 112 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef Superclass::OutputPointIdentifier itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputPointIdentifier |
Definition at line 115 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef Superclass::OutputPointType itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputPointType |
Definition at line 114 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef Superclass::OutputQEIterator itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputQEIterator |
Definition at line 118 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef Superclass::OutputQEPrimal itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputQEPrimal |
Definition at line 116 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef Superclass::OutputVectorType itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputVectorType |
Definition at line 117 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef SmartPointer< Self > itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::Pointer |
Definition at line 100 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 208 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 207 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 206 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef LaplacianDeformationQuadEdgeMeshFilter itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::Self |
Basic types.
Definition at line 98 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef TSolverTraits itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::SolverTraits |
Definition at line 122 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh > itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::Superclass |
Definition at line 99 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef TriangleHelper< OutputPointType > itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::TriangleType |
Definition at line 137 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef SolverTraits::ValueType itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::ValueType |
Definition at line 123 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
typedef SolverTraits::VectorType itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::VectorType |
Definition at line 125 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
enum itk::LaplacianDeformationQuadEdgeMeshFilter::AreaType |
Enumerator | |
---|---|
NONE |
Do not use any area information |
MIXEDAREA |
Use a mixed area |
Definition at line 158 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Default constructor
|
inlineprotectedvirtual |
Definition at line 183 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
private |
void itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::ClearConstraints | ( | ) |
Clear all constraints added by the means of SetConstrainedNode or SetDisplacement.
|
protected |
|
protected |
|
protected |
|
protectedvirtual |
|
protected |
Fill matrix iM and vectors Bx, m_By and m_Bz depending on if one vertex is on the border or not.
|
protected |
|
virtual |
Set/Get the area normalization type
bool itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::GetDisplacement | ( | OutputPointIdentifier | vId, |
OutputVectorType & | oV | ||
) | const |
Get the displacement vector oV for the vertex vId. Returns true if the vertex vId is a constraint, else false.
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh >.
Reimplemented in itk::LaplacianDeformationQuadEdgeMeshFilterWithHardConstraints< TInputMesh, TOutputMesh, TSolverTraits >, and itk::LaplacianDeformationQuadEdgeMeshFilterWithSoftConstraints< TInputMesh, TOutputMesh, TSolverTraits >.
|
virtual |
Set/Get the Laplacian order
|
private |
|
overrideprotectedvirtual |
Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from itk::MeshSource< TOutputMesh >.
Reimplemented in itk::LaplacianDeformationQuadEdgeMeshFilterWithSoftConstraints< TInputMesh, TOutputMesh, TSolverTraits >, and itk::LaplacianDeformationQuadEdgeMeshFilterWithHardConstraints< TInputMesh, TOutputMesh, TSolverTraits >.
|
virtual |
Set/Get the area normalization type
|
inline |
Set the coefficient method to compute the Laplacian matrix of the input mesh
Definition at line 130 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
References itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::m_CoefficientsMethod, and itk::Object::Modified().
void itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::SetConstrainedNode | ( | OutputPointIdentifier | vId, |
const OutputPointType & | iP | ||
) |
Constrain vertex vId to the given location iP
void itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::SetDisplacement | ( | OutputPointIdentifier | vId, |
const OutputVectorType & | iV | ||
) |
Set the displacement vector iV for the vertex vId
|
virtual |
Set/Get the Laplacian order
|
protected |
Solve linears systems : and and .
[in] | iM | |
[in] | iBx | |
[in] | iBy | |
[in] | iBz | |
[out] | oX | |
[out] | oY | |
[out] | oZ |
itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::typedef | ( | Concept::SameDimension< InputPointDimension, OutputPointDimension > | ) |
This class requires SameDimensionCheck1 in the form of ( Concept::SameDimension< InputPointDimension, OutputPointDimension > )
itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::typedef | ( | Concept::SameDimension< InputPointDimension, 3 > | ) |
This class requires SameDimensionCheck2 in the form of ( Concept::SameDimension< InputPointDimension, 3 > )
|
static |
Definition at line 109 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 218 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 212 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 215 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
Referenced by itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::SetCoefficientsMethod().
|
protected |
Definition at line 211 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 210 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 213 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 217 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
static |
Definition at line 120 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.