RobustClosestPoint.h
1 /*
2  * Medical Image Registration ToolKit (MIRTK)
3  *
4  * Copyright 2013-2015 Imperial College London
5  * Copyright 2013-2015 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_RobustClosestPoint_H
21 #define MIRTK_RobustClosestPoint_H
22 
23 #include "mirtk/FuzzyCorrespondence.h"
24 
25 
26 namespace mirtk {
27 
28 
29 /**
30  * Improved (iterative) closest point (ICP) correspondences
31  *
32  * The point correspondences returned by an instance of this class implement
33  * an improvied iterative closest point matching with outlier rejection, the
34  * reference method used by
35  *
36  * Chui and Rangarajan, "A new point matching algorithm for non-rigid registration",
37  * Computer Vision and Image Understanding, 89(2-3), pp. 114–141, 2003.
38  *
39  * for comparison to the proposed robust point matching (RPM) algorithm.
40  * This algorithm is realized by RobustPointMatch.
41  *
42  * \sa FiducialRegistrationError
43  */
45 {
46  mirtkObjectMacro(RobustClosestPoint);
47 
48  // ---------------------------------------------------------------------------
49  // Attributes
50 protected:
51 
52  /// Factor by which standard deviation of point distances is multiplied
53  /// for outlier rejection during (iterative) closest point matching
54  mirtkPublicAttributeMacro(double, Sigma);
55 
56  // ---------------------------------------------------------------------------
57  // Construction/Destruction
58 public:
59 
60  /// Default constructor
62 
63  /// Construct correspondence map and initialize it
65  const RegisteredPointSet *);
66 
67  /// Copy constructor
69 
70  /// Copy construct a new instance
71  virtual PointCorrespondence *NewInstance() const;
72 
73  /// Destructor
74  virtual ~RobustClosestPoint();
75 
76  /// Type enumeration value
77  virtual TypeId Type() const;
78 
79  // ---------------------------------------------------------------------------
80  // Parameters
81 
82  // Import other overloads
84 
85  /// Set parameter value from string
86  virtual bool Set(const char *, const char *);
87 
88  /// Get parameter key/value as string map
89  virtual ParameterList Parameter() const;
90 
91  // ---------------------------------------------------------------------------
92  // Correspondences
93 protected:
94 
95  /// (Re-)calculate weights of correspondence links
96  virtual void CalculateWeights();
97 
98 };
99 
100 
101 } // namespace mirtk
102 
103 #endif // MIRTK_RobustClosestPoint_H
TypeId
Enumeration of available point correspondence maps.
virtual PointCorrespondence * NewInstance() const
Copy construct a new instance.
mirtkPublicAttributeMacro(double, Sigma)
virtual ~RobustClosestPoint()
Destructor.
virtual ParameterList Parameter() const
Get parameter key/value as string map.
Array< Pair< string, string > > ParameterList
Ordered list of parameter name/value pairs.
Definition: Object.h:38
virtual TypeId Type() const
Type enumeration value.
virtual bool Set(const char *, const char *)
Set parameter value from string.
Definition: IOConfig.h:41
virtual ParameterList Parameter() const
Get parameter key/value as string map.
RobustClosestPoint()
Default constructor.
virtual void CalculateWeights()
(Re-)calculate weights of correspondence links