ITK
5.0.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 https://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 } |
using | CoefficientsComputationType = MatrixCoefficients< OutputMeshType > |
using | ConstPointer = SmartPointer< const Self > |
using | InputMeshType = TInputMesh |
using | InputPointType = typename Superclass::InputPointType |
using | MatrixType = typename SolverTraits::MatrixType |
using | OutputCoordRepType = typename Superclass::OutputCoordRepType |
using | OutputMeshType = TOutputMesh |
using | OutputPointIdentifier = typename Superclass::OutputPointIdentifier |
using | OutputPointType = typename Superclass::OutputPointType |
using | OutputQEIterator = typename Superclass::OutputQEIterator |
using | OutputQEPrimal = typename Superclass::OutputQEPrimal |
using | OutputVectorType = typename Superclass::OutputVectorType |
using | Pointer = SmartPointer< Self > |
using | Self = LaplacianDeformationQuadEdgeMeshFilter |
using | SolverTraits = TSolverTraits |
using | Superclass = QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh > |
using | TriangleType = TriangleHelper< OutputPointType > |
using | ValueType = typename SolverTraits::ValueType |
using | VectorType = typename SolverTraits::VectorType |
Public Types inherited from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh > | |
using | ConstPointer = SmartPointer< const Self > |
using | InputCellDataContainer = typename InputMeshType::CellDataContainer |
using | InputCellsContainerConstIterator = typename InputMeshType::CellsContainerConstIterator |
using | InputCellsContainerConstPointer = typename InputMeshType::CellsContainerConstPointer |
using | InputCellTraits = typename InputMeshType::CellTraits |
using | InputCoordRepType = typename InputMeshType::CoordRepType |
using | InputEdgeCellType = typename InputMeshType::EdgeCellType |
using | InputMeshConstPointer = typename InputMeshType::ConstPointer |
using | InputMeshPointer = typename InputMeshType::Pointer |
using | InputMeshType = TInputMesh |
using | InputPointDataContainer = typename InputMeshType::PointDataContainer |
using | InputPointDataContainerConstPointer = typename InputPointDataContainer::ConstPointer |
using | InputPointIdentifier = typename InputMeshType::PointIdentifier |
using | InputPointIdList = typename InputMeshType::PointIdList |
using | InputPointsContainerConstIterator = typename InputMeshType::PointsContainerConstIterator |
using | InputPointsContainerConstPointer = typename InputMeshType::PointsContainerConstPointer |
using | InputPointsIdInternalIterator = typename InputCellTraits::PointIdInternalIterator |
using | InputPointType = typename InputMeshType::PointType |
using | InputPolygonCellType = typename InputMeshType::PolygonCellType |
using | InputQEIterator = typename InputQEPrimal::IteratorGeom |
using | InputQEPrimal = typename InputMeshType::QEPrimal |
using | InputVectorType = typename InputMeshType::VectorType |
using | OutputCellDataContainer = typename OutputMeshType::CellDataContainer |
using | OutputCoordRepType = typename OutputMeshType::CoordRepType |
using | OutputMeshConstPointer = typename OutputMeshType::ConstPointer |
using | OutputMeshPointer = typename OutputMeshType::Pointer |
using | OutputMeshType = TOutputMesh |
using | OutputPointDataContainer = typename OutputMeshType::PointDataContainer |
using | OutputPointIdentifier = typename OutputMeshType::PointIdentifier |
using | OutputPointsContainerConstPointer = typename OutputMeshType::PointsContainerConstPointer |
using | OutputPointsContainerIterator = typename OutputMeshType::PointsContainerIterator |
using | OutputPointsContainerPointer = typename OutputMeshType::PointsContainerPointer |
using | OutputPointType = typename OutputMeshType::PointType |
using | OutputQEIterator = typename OutputQEPrimal::IteratorGeom |
using | OutputQEPrimal = typename OutputMeshType::QEPrimal |
using | OutputVectorType = typename OutputMeshType::VectorType |
using | Pointer = SmartPointer< Self > |
using | Self = QuadEdgeMeshToQuadEdgeMeshFilter |
using | Superclass = MeshToMeshFilter< TInputMesh, TOutputMesh > |
Public Types inherited from itk::MeshToMeshFilter< TInputMesh, TOutputMesh > | |
using | ConstPointer = SmartPointer< const Self > |
using | InputMeshPointer = typename InputMeshType::Pointer |
using | InputMeshType = TInputMesh |
using | OutputMeshPointer = typename OutputMeshType::Pointer |
using | OutputMeshType = TOutputMesh |
using | Pointer = SmartPointer< Self > |
using | Self = MeshToMeshFilter |
using | Superclass = MeshSource< TOutputMesh > |
Public Types inherited from itk::MeshSource< TOutputMesh > | |
using | ConstPointer = SmartPointer< const Self > |
using | DataObjectIdentifierType = Superclass::DataObjectIdentifierType |
using | DataObjectPointer = DataObject::Pointer |
using | OutputMeshPointer = typename OutputMeshType::Pointer |
using | OutputMeshType = TOutputMesh |
using | Pointer = SmartPointer< Self > |
using | Self = MeshSource |
using | Superclass = ProcessObject |
using | DataObjectPointerArraySizeType = ProcessObject::DataObjectPointerArraySizeType |
Public Types inherited from itk::ProcessObject | |
using | ConstPointer = SmartPointer< const Self > |
using | DataObjectIdentifierType = DataObject::DataObjectIdentifierType |
using | DataObjectPointer = DataObject::Pointer |
using | DataObjectPointerArray = std::vector< DataObjectPointer > |
using | DataObjectPointerArraySizeType = DataObjectPointerArray::size_type |
using | MultiThreaderType = MultiThreaderBase |
using | NameArray = std::vector< DataObjectIdentifierType > |
using | Pointer = SmartPointer< Self > |
using | Self = ProcessObject |
using | Superclass = Object |
Public Types inherited from itk::Object | |
using | ConstPointer = SmartPointer< const Self > |
using | Pointer = SmartPointer< Self > |
using | Self = Object |
using | Superclass = LightObject |
Public Types inherited from itk::LightObject | |
using | ConstPointer = SmartPointer< const Self > |
using | Pointer = SmartPointer< Self > |
using | Self = LightObject |
Static Public Attributes | |
static constexpr unsigned int | InputPointDimension = InputMeshType::PointDimension |
static constexpr unsigned int | OutputPointDimension = OutputMeshType::PointDimension |
Protected Types | |
using | AreaMapConstIterator = typename AreaMapType::const_iterator |
using | AreaMapType = itksys::hash_map< OutputPointIdentifier, OutputCoordRepType > |
using | CoefficientMapConstIterator = typename CoefficientMapType::const_iterator |
using | CoefficientMapType = itksys::hash_map< OutputQEPrimal *, OutputCoordRepType, HashOutputQEPrimal > |
using | ConstraintMapConstIterator = typename ConstraintMapType::const_iterator |
using | ConstraintMapType = itksys::hash_map< OutputPointIdentifier, OutputVectorType > |
using | OutputMapPointIdentifier = itksys::hash_map< OutputPointIdentifier, OutputPointIdentifier > |
using | OutputMapPointIdentifierConstIterator = typename OutputMapPointIdentifier::const_iterator |
using | OutputMapPointIdentifierIterator = typename OutputMapPointIdentifier::iterator |
using | RowConstIterator = typename RowType::const_iterator |
using | RowIterator = typename RowType::iterator |
using | RowType = itksys::hash_map< OutputPointIdentifier, OutputCoordRepType > |
Protected Attributes | |
AreaType | m_AreaComputationType |
CoefficientMapType | m_CoefficientMap |
CoefficientsComputationType * | m_CoefficientsMethod |
ConstraintMapType | m_Constraints |
OutputMapPointIdentifier | m_InternalMap |
AreaMapType | m_MixedAreaMap |
unsigned int | m_Order {1} |
Protected Attributes inherited from itk::ProcessObject | |
TimeStamp | m_OutputInformationMTime |
bool | m_Updating |
Protected Attributes inherited from itk::LightObject | |
std::atomic< int > | m_ReferenceCount |
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 207 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 206 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 204 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 203 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::CoefficientsComputationType = MatrixCoefficients< OutputMeshType > |
Definition at line 129 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::ConstPointer = SmartPointer< const Self > |
Definition at line 103 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 193 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 192 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::InputMeshType = TInputMesh |
Input types.
Definition at line 108 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::InputPointType = typename Superclass::InputPointType |
Definition at line 109 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::MatrixType = typename SolverTraits::MatrixType |
Definition at line 126 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputCoordRepType = typename Superclass::OutputCoordRepType |
Definition at line 115 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 188 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 190 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 189 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputMeshType = TOutputMesh |
Output types.
Definition at line 114 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputPointIdentifier = typename Superclass::OutputPointIdentifier |
Definition at line 117 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputPointType = typename Superclass::OutputPointType |
Definition at line 116 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputQEIterator = typename Superclass::OutputQEIterator |
Definition at line 120 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputQEPrimal = typename Superclass::OutputQEPrimal |
Definition at line 118 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::OutputVectorType = typename Superclass::OutputVectorType |
Definition at line 119 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::Pointer = SmartPointer< Self > |
Definition at line 102 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 211 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 210 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 209 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::Self = LaplacianDeformationQuadEdgeMeshFilter |
Basic types.
Definition at line 100 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::SolverTraits = TSolverTraits |
Definition at line 124 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::Superclass = QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh > |
Definition at line 101 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::TriangleType = TriangleHelper< OutputPointType > |
Definition at line 139 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::ValueType = typename SolverTraits::ValueType |
Definition at line 125 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
using itk::LaplacianDeformationQuadEdgeMeshFilter< TInputMesh, TOutputMesh, TSolverTraits >::VectorType = typename SolverTraits::VectorType |
Definition at line 127 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
enum itk::LaplacianDeformationQuadEdgeMeshFilter::AreaType |
Enumerator | |
---|---|
NONE |
Do not use any area information |
MIXEDAREA |
Use a mixed area |
Definition at line 160 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Default constructor
|
overrideprotecteddefault |
Default constructor
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::LaplacianDeformationQuadEdgeMeshFilterWithSoftConstraints< TInputMesh, TOutputMesh, TSolverTraits >, and itk::LaplacianDeformationQuadEdgeMeshFilterWithHardConstraints< TInputMesh, TOutputMesh, TSolverTraits >.
|
virtual |
Set/Get the Laplacian order
|
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 132 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
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 |
|
static |
Definition at line 111 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 221 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 215 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 218 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 214 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 213 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 216 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
protected |
Definition at line 220 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.
|
static |
Definition at line 122 of file itkLaplacianDeformationQuadEdgeMeshFilter.h.