ITK  5.1.0
Insight Toolkit
itkParameterizationQuadEdgeMeshFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef itkParameterizationQuadEdgeMeshFilter_h
19 #define itkParameterizationQuadEdgeMeshFilter_h
20 
23 
24 namespace itk
25 {
26 
56 template <typename TInputMesh, typename TOutputMesh, typename TSolverTraits>
57 class ITK_TEMPLATE_EXPORT ParameterizationQuadEdgeMeshFilter
58  : public QuadEdgeMeshToQuadEdgeMeshFilter<TInputMesh, TOutputMesh>
59 {
60 public:
61  ITK_DISALLOW_COPY_AND_ASSIGN(ParameterizationQuadEdgeMeshFilter);
62 
68 
70  using InputMeshType = TInputMesh;
71  using InputMeshPointer = typename InputMeshType::Pointer;
72  using InputMeshConstPointer = typename InputMeshType::ConstPointer;
73  using InputCoordRepType = typename InputMeshType::CoordRepType;
76  using InputPointIdentifier = typename InputMeshType::PointIdentifier;
77  using InputQEType = typename InputMeshType::QEType;
79  using InputEdgeListType = typename InputMeshType::EdgeListType;
80  using InputPixelType = typename InputMeshType::PixelType;
81  using InputTraits = typename InputMeshType::Traits;
82 
83  static constexpr unsigned int InputVDimension = InputMeshType::PointDimension;
84 
85  using InputPointsContainer = typename InputMeshType::PointsContainer;
86  using InputPointsContainerConstIterator = typename InputMeshType::PointsContainerConstIterator;
87 
88  using InputCellsContainerConstIterator = typename InputMeshType::CellsContainerConstIterator;
89  using InputEdgeCellType = typename InputMeshType::EdgeCellType;
90  using InputPolygonCellType = typename InputMeshType::PolygonCellType;
91  using InputPointIdList = typename InputMeshType::PointIdList;
92 
93  using InputQEIterator = typename InputQEType::IteratorGeom;
94 
95  using InputMapPointIdentifier = std::map<InputPointIdentifier, InputPointIdentifier>;
96  using InputMapPointIdentifierIterator = typename InputMapPointIdentifier::iterator;
97 
99  using OutputMeshType = TOutputMesh;
100  using OutputMeshPointer = typename OutputMeshType::Pointer;
101  using OutputMeshConstPointer = typename OutputMeshType::ConstPointer;
102  using OutputCoordRepType = typename OutputMeshType::CoordRepType;
104  using OutputPointIdentifier = typename OutputMeshType::PointIdentifier;
105  using OutputQEType = typename OutputMeshType::QEType;
107  using OutputQEIterator = typename OutputQEType::IteratorGeom;
108  using OutputPointsContainerIterator = typename OutputMeshType::PointsContainerIterator;
109 
110  static constexpr unsigned int OutputVDimension = OutputMeshType::PointDimension;
111 
112  using SolverTraits = TSolverTraits;
113  using ValueType = typename SolverTraits::ValueType;
114  using MatrixType = typename SolverTraits::MatrixType;
116 
119 
121 
122 public:
123  void
125  {
126  this->m_CoefficientsMethod = iMethod;
127  }
128 
129  itkNewMacro(Self);
131 
132  itkSetObjectMacro(BorderTransform, MeshBorderTransform);
133  itkGetModifiableObjectMacro(BorderTransform, MeshBorderTransform);
134 
135 protected:
137  ~ParameterizationQuadEdgeMeshFilter() override = default;
138  void
139  PrintSelf(std::ostream & os, Indent indent) const override;
140 
142 
144 
145  // first is the id of the input mesh and second is the corresponding id
146  // in m_BoundaryPtMap
148 
149  // first is the id of the input mesh and second is the corresponding id
150  // in m_InternalPtList
152 
153  std::vector<OutputPointType> m_Border;
154 
155  void
156  CopyToOutputBorder();
157 
167  void
168  ComputeListOfInteriorVertices();
169 
177  void
178  FillMatrix(MatrixType & iM, VectorType & ioBx, VectorType & ioBy);
179 
190  void
191  SolveLinearSystems(const MatrixType & iM,
192  const VectorType & iBx,
193  const VectorType & iBy,
194  VectorType & oX,
195  VectorType & oY);
196 
197  void
198  GenerateData() override;
199 
200 private:
201 };
202 } // end namespace itk
203 
204 #include "itkParameterizationQuadEdgeMeshFilter.hxx"
205 
206 #endif
itk::ParameterizationQuadEdgeMeshFilter::m_BoundaryPtMap
InputMapPointIdentifier m_BoundaryPtMap
Definition: itkParameterizationQuadEdgeMeshFilter.h:147
itk::ParameterizationQuadEdgeMeshFilter::SolverTraits
TSolverTraits SolverTraits
Definition: itkParameterizationQuadEdgeMeshFilter.h:112
itk::MeshSource::OutputMeshPointer
typename OutputMeshType::Pointer OutputMeshPointer
Definition: itkMeshSource.h:69
itk::ParameterizationQuadEdgeMeshFilter::InputPointsContainer
typename InputMeshType::PointsContainer InputPointsContainer
Definition: itkParameterizationQuadEdgeMeshFilter.h:85
itk::MeshToMeshFilter::InputMeshPointer
typename InputMeshType::Pointer InputMeshPointer
Definition: itkMeshToMeshFilter.h:66
itk::GTest::TypedefsAndConstructors::Dimension2::VectorType
ImageBaseType::SpacingType VectorType
Definition: itkGTestTypedefsAndConstructors.h:53
itk::GTest::TypedefsAndConstructors::Dimension2::PointType
ImageBaseType::PointType PointType
Definition: itkGTestTypedefsAndConstructors.h:51
itk::QuadEdgeMeshToQuadEdgeMeshFilter::InputPointsContainerConstIterator
typename InputMeshType::PointsContainerConstIterator InputPointsContainerConstIterator
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:62
itk::ParameterizationQuadEdgeMeshFilter::ValueType
typename SolverTraits::ValueType ValueType
Definition: itkParameterizationQuadEdgeMeshFilter.h:113
itk::SmartPointer< Self >
itk::Indent
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itk::ParameterizationQuadEdgeMeshFilter::m_InternalPtMap
InputMapPointIdentifier m_InternalPtMap
Definition: itkParameterizationQuadEdgeMeshFilter.h:151
itk::MeshToMeshFilter::InputMeshType
TInputMesh InputMeshType
Definition: itkMeshToMeshFilter.h:65
itk::QuadEdgeMeshToQuadEdgeMeshFilter::InputMeshConstPointer
typename InputMeshType::ConstPointer InputMeshConstPointer
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:51
itk::QuadEdgeMeshToQuadEdgeMeshFilter::InputPointType
typename InputMeshType::PointType InputPointType
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:53
itk::LightObject
Light weight base class for most itk classes.
Definition: itkLightObject.h:59
itk::ParameterizationQuadEdgeMeshFilter::VectorType
typename SolverTraits::VectorType VectorType
Definition: itkParameterizationQuadEdgeMeshFilter.h:115
BorderTransform
itk::QuadEdgeMeshToQuadEdgeMeshFilter::InputPointIdList
typename InputMeshType::PointIdList InputPointIdList
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:69
itk::QuadEdgeMeshToQuadEdgeMeshFilter::InputPointIdentifier
typename InputMeshType::PointIdentifier InputPointIdentifier
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:54
itk::BorderQuadEdgeMeshFilter
Transform one border of a QuadEdgeMesh into either a circle (conformal) or a square (arclength-wise).
Definition: itkBorderQuadEdgeMeshFilter.h:82
itk::ParameterizationQuadEdgeMeshFilter::MeshBorderTransformPointer
typename MeshBorderTransform::Pointer MeshBorderTransformPointer
Definition: itkParameterizationQuadEdgeMeshFilter.h:118
itk::QuadEdgeMeshToQuadEdgeMeshFilter::OutputVectorType
typename OutputMeshType::VectorType OutputVectorType
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:83
itk::QuadEdgeMeshToQuadEdgeMeshFilter
Duplicates the content of a Mesh.
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:37
itkQuadEdgeMeshParamMatrixCoefficients.h
itk::ParameterizationQuadEdgeMeshFilter::InputPixelType
typename InputMeshType::PixelType InputPixelType
Definition: itkParameterizationQuadEdgeMeshFilter.h:80
itk::ParameterizationQuadEdgeMeshFilter::InputQEType
typename InputMeshType::QEType InputQEType
Definition: itkParameterizationQuadEdgeMeshFilter.h:77
itk::QuadEdgeMeshToQuadEdgeMeshFilter::OutputCoordRepType
typename OutputMeshType::CoordRepType OutputCoordRepType
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:79
itk::ParameterizationQuadEdgeMeshFilter::MatrixType
typename SolverTraits::MatrixType MatrixType
Definition: itkParameterizationQuadEdgeMeshFilter.h:114
itk::ParameterizationQuadEdgeMeshFilter::SetCoefficientsMethod
void SetCoefficientsMethod(CoefficientsComputation *iMethod)
Definition: itkParameterizationQuadEdgeMeshFilter.h:124
itk::QuadEdgeMeshToQuadEdgeMeshFilter::InputEdgeCellType
typename InputMeshType::EdgeCellType InputEdgeCellType
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:67
itk::ParameterizationQuadEdgeMeshFilter
Compute a planar parameterization of the input mesh.
Definition: itkParameterizationQuadEdgeMeshFilter.h:57
itk::ParameterizationQuadEdgeMeshFilter::InputEdgeListType
typename InputMeshType::EdgeListType InputEdgeListType
Definition: itkParameterizationQuadEdgeMeshFilter.h:79
itkBorderQuadEdgeMeshFilter.h
itk::ParameterizationQuadEdgeMeshFilter::InputTraits
typename InputMeshType::Traits InputTraits
Definition: itkParameterizationQuadEdgeMeshFilter.h:81
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkArray.h:26
itk::QuadEdgeMeshToQuadEdgeMeshFilter::InputCoordRepType
typename InputMeshType::CoordRepType InputCoordRepType
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:52
itk::ParameterizationQuadEdgeMeshFilter::m_Border
std::vector< OutputPointType > m_Border
Definition: itkParameterizationQuadEdgeMeshFilter.h:153
itk::MatrixCoefficients
Superclass for all the matrix coefficients computation classes.
Definition: itkQuadEdgeMeshParamMatrixCoefficients.h:33
itk::ParameterizationQuadEdgeMeshFilter::OutputQEType
typename OutputMeshType::QEType OutputQEType
Definition: itkParameterizationQuadEdgeMeshFilter.h:105
itk::QuadEdgeMeshToQuadEdgeMeshFilter::InputPolygonCellType
typename InputMeshType::PolygonCellType InputPolygonCellType
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:68
itk::ParameterizationQuadEdgeMeshFilter::m_CoefficientsMethod
CoefficientsComputation * m_CoefficientsMethod
Definition: itkParameterizationQuadEdgeMeshFilter.h:141
itk::MeshSource::OutputMeshType
TOutputMesh OutputMeshType
Definition: itkMeshSource.h:68
itk::ParameterizationQuadEdgeMeshFilter::InputPointVectorType
typename InputPointType::VectorType InputPointVectorType
Definition: itkParameterizationQuadEdgeMeshFilter.h:75
itk::QuadEdgeMeshToQuadEdgeMeshFilter::InputVectorType
typename InputMeshType::VectorType InputVectorType
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:56
itk::QuadEdgeMeshToQuadEdgeMeshFilter::OutputQEIterator
typename OutputQEPrimal::IteratorGeom OutputQEIterator
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:84
itk::ParameterizationQuadEdgeMeshFilter::InputMapPointIdentifier
std::map< InputPointIdentifier, InputPointIdentifier > InputMapPointIdentifier
Definition: itkParameterizationQuadEdgeMeshFilter.h:95
itk::QuadEdgeMeshToQuadEdgeMeshFilter::OutputPointIdentifier
typename OutputMeshType::PointIdentifier OutputPointIdentifier
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:81
itk::QuadEdgeMeshToQuadEdgeMeshFilter::OutputPointType
typename OutputMeshType::PointType OutputPointType
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:80
itk::QuadEdgeMeshToQuadEdgeMeshFilter::OutputMeshConstPointer
typename OutputMeshType::ConstPointer OutputMeshConstPointer
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:78
itk::ParameterizationQuadEdgeMeshFilter::InputMapPointIdentifierIterator
typename InputMapPointIdentifier::iterator InputMapPointIdentifierIterator
Definition: itkParameterizationQuadEdgeMeshFilter.h:96
itk::QuadEdgeMeshToQuadEdgeMeshFilter::OutputPointsContainerIterator
typename OutputMeshType::PointsContainerIterator OutputPointsContainerIterator
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:85
itk::QuadEdgeMeshToQuadEdgeMeshFilter::InputCellsContainerConstIterator
typename InputMeshType::CellsContainerConstIterator InputCellsContainerConstIterator
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:64
itk::ParameterizationQuadEdgeMeshFilter::m_BorderTransform
MeshBorderTransformPointer m_BorderTransform
Definition: itkParameterizationQuadEdgeMeshFilter.h:143
itk::QuadEdgeMeshToQuadEdgeMeshFilter::InputQEIterator
typename InputQEPrimal::IteratorGeom InputQEIterator
Definition: itkQuadEdgeMeshToQuadEdgeMeshFilter.h:73