IntrinsicLeastEdgeLengthDistortionSurfaceMapper.h
1 /*
2  * Medical Image Registration ToolKit (MIRTK)
3  *
4  * Copyright 2016 Imperial College London
5  * Copyright 2016 Andreas Schuh
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 
20 #ifndef MIRTK_IntrinsicLeastEdgeLengthDistortionSurfaceMapper_H
21 #define MIRTK_IntrinsicLeastEdgeLengthDistortionSurfaceMapper_H
22 
23 #include "mirtk/NearOptimalIntrinsicSurfaceMapper.h"
24 
25 
26 namespace mirtk {
27 
28 
29 /**
30  * Compute a near-optimal intrinsic surface map which minimizes edge-length distortion
31  *
32  * - Desbrun, Meyer, and Alliez (2002). Intrinsic parameterizations of surface meshes.
33  * Computer Graphics Forum, 21(3), 209–218.
34  */
36 {
38 
39  // ---------------------------------------------------------------------------
40  // Attributes
41 
42  /// Copy attributes of this class from another instance
43  void CopyAttributes(const IntrinsicLeastEdgeLengthDistortionSurfaceMapper &);
44 
45  // ---------------------------------------------------------------------------
46  // Construction/Destruction
47 
48 public:
49 
50  /// Default constructor
52 
53  /// Copy constructor
56  );
57 
58  /// Assignment operator
61  );
62 
63  /// Destructor
65 
66  // ---------------------------------------------------------------------------
67  // Execution
68 
69 protected:
70 
71  /// Compute affine combination weight that minimizes a given distortion measure
72  ///
73  /// \param[in] u0 Discrete authalic surface map values, i.e., lambda=0.
74  /// \param[in] u1 Discrete conformal surface map values, i.e., lambda=1.
75  ///
76  /// \returns Affine combination weight \f$\lambda\f$, where final surface map values
77  /// are computed as \f$\lambda u1 + (1 - \lambda) * u0\f$.
78  virtual double ComputeLambda(vtkDataArray *u0, vtkDataArray *u1) const;
79 
80 };
81 
82 
83 } // namespace mirtk
84 
85 #endif // MIRTK_IntrinsicLeastEdgeLengthDistortionSurfaceMapper_H
Definition: IOConfig.h:41
IntrinsicLeastEdgeLengthDistortionSurfaceMapper & operator=(const IntrinsicLeastEdgeLengthDistortionSurfaceMapper &)
Assignment operator.
IntrinsicLeastEdgeLengthDistortionSurfaceMapper()
Default constructor.
virtual ~IntrinsicLeastEdgeLengthDistortionSurfaceMapper()
Destructor.
virtual double ComputeLambda(vtkDataArray *u0, vtkDataArray *u1) const