Public Types | Public Member Functions | Protected Member Functions | List of all members
mirtk::FuzzyCorrespondence Class Referenceabstract

#include <FuzzyCorrespondence.h>

Inheritance diagram for mirtk::FuzzyCorrespondence:
Inheritance graph
Collaboration diagram for mirtk::FuzzyCorrespondence:
Collaboration graph

Public Types

typedef GenericSparseMatrix< float > WeightMatrix
 Sparse matrix type used for fuzzy correspondence weights.
 
- Public Types inherited from mirtk::PointCorrespondence
enum  Direction
 Enumeration of correspondence mapping direction.
 
typedef PointLocator::FeatureInfo FeatureInfo
 Info structure of point feature to use for point matching.
 
typedef PointLocator::FeatureList FeatureList
 List of point features to use for point matching.
 
enum  TypeId {
  Unknown, FiducialMatch, ClosestPoint, ClosestPointLabel,
  ClosestCell, SpectralMatch, RobustClosestPoint, RobustPointMatch
}
 Enumeration of available point correspondence maps. More...
 

Public Member Functions

virtual bool GetInputSourcePoint (int, Point &) const
 Get untransformed source point corresponding to i-th target (sample) point.
 
virtual bool GetInputTargetPoint (int, Point &) const
 Get untransformed target point corresponding to i-th source (sample) point.
 
virtual bool GetSourcePoint (int, Point &) const
 Get (transformed) source point corresponding to i-th target (sample) point.
 
virtual bool GetTargetPoint (int, Point &) const
 Get (transformed) target point corresponding to i-th source (sample) point.
 
virtual void Initialize ()
 Initialize correspondence map.
 
virtual ParameterList Parameter () const
 Get parameter key/value as string map.
 
virtual void Reinitialize ()
 Reinitialize correspondence map after change of input topology.
 
virtual bool Set (const char *, const char *)
 Set parameter value from string.
 
virtual void Update ()
 Update correspondence map.
 
virtual bool Upgrade ()
 Update correspondence map after convergence.
 
virtual ~FuzzyCorrespondence ()
 Destructor.
 
- Public Member Functions inherited from mirtk::PointCorrespondence
bool AddFeature (const char *name, double weight=1.0, double slope=1.0, double intercept=.0)
 
int GetIndex (int) const
 
bool GetInputPoint (int, Point &) const
 Get untransformed output point corresponding to i-th input (sample) point.
 
bool GetPoint (int, Point &) const
 Get (transformed) output point corresponding to i-th input (sample) point.
 
virtual int GetSourceIndex (int) const
 
virtual int GetTargetIndex (int) const
 
virtual PointCorrespondenceNewInstance () const =0
 Copy construct a new instance.
 
void RemoveFeature (const char *name)
 
virtual TypeId Type () const =0
 Type enumeration value.
 
virtual void WriteSpectralPoints (const char *, vtkPointSet *) const
 Write first three spectral coordinates as polydata points.
 
virtual ~PointCorrespondence ()
 Destructor.
 
- Public Member Functions inherited from mirtk::Observable
void AddObserver (Observer &)
 Add observer.
 
void Broadcast (Event, const void *=NULL)
 Broadcast event to observers.
 
void ClearObservers ()
 Delete all observers.
 
void DeleteObserver (Observer &)
 Delete observer.
 
void NotifyObservers (Event, const void *=NULL)
 Notify all observers about given event if this object has changed.
 
int NumberOfObservers () const
 Number of current observers.
 
virtual ~Observable ()
 Destructor.
 
- Public Member Functions inherited from mirtk::Object
virtual const char * NameOfClass () const =0
 Get name of class, which this object is an instance of.
 
bool Parameter (const ParameterList &)
 Set parameters from name/value pairs.
 
virtual ~Object ()
 Destructor.
 

Protected Member Functions

virtual void AddGaussianNoise ()
 Add normally distributed noise to correspondence weights.
 
virtual void CalculateClusters ()
 (Re-)calculate cluster centers from correspondence weights
 
virtual void CalculateWeights ()=0
 (Re-)calculate correspondence weights with optional additional outlier row/column
 
 FuzzyCorrespondence ()
 Default constructor.
 
 FuzzyCorrespondence (const FuzzyCorrespondence &)
 Copy constructor.
 
void Init ()
 
 mirtkAttributeMacro (PointSet, InputTargetClusters)
 Untransformed target clusters corresponding to source points.
 
 mirtkAttributeMacro (PointSet, InputSourceClusters)
 Untransformed source clusters corresponding to target points.
 
 mirtkAttributeMacro (PointSet, TargetClusters)
 (Transformed) Target clusters corresponding to source points
 
 mirtkAttributeMacro (PointSet, SourceClusters)
 (Transformed) Source clusters corresponding to target points
 
 mirtkAttributeMacro (Array< bool >, TargetOutlier)
 Whether a given target cluster is an outlier.
 
 mirtkAttributeMacro (Array< bool >, SourceOutlier)
 Whether a given source cluster is an outlier.
 
 mirtkPublicAttributeMacro (double, MinWeight)
 Minimum correspondence weight (i.e., threshold used to truncate radial weight function)
 
 mirtkPublicAttributeMacro (double, GaussianNoise)
 Standard deviation of normally distributed noise with zero mean.
 
 mirtkReadOnlyAttributeMacro (WeightMatrix, Weight)
 Weight matrix of fuzzy point correspondences.
 
virtual void NormalizeWeights ()
 Normalize correspondence matrix using Sinkhorn-Knopp algorithm.
 
virtual void WriteDataSets (const char *, const char *, bool=true) const
 Write input of data fidelity term.
 
- Protected Member Functions inherited from mirtk::PointCorrespondence
void CompleteFeatureInfo (const RegisteredPointSet *, FeatureList &)
 
void Init ()
 
 mirtkAttributeMacro (int, M)
 Number of point (samples) in target data set.
 
 mirtkAttributeMacro (int, N)
 Number of point (samples) in source data set.
 
 mirtkAttributeMacro (Vector, TargetEigenvalues)
 Eigenvalues corresponding to spectral coordinates of target.
 
 mirtkAttributeMacro (Vector, SourceEigenvalues)
 Eigenvalues corresponding to spectral coordinates of source.
 
 mirtkPublicAggregateMacro (const RegisteredPointSet, Target)
 (Transformed) target data set
 
 mirtkPublicAggregateMacro (const Array< int >, TargetSample)
 Indices of target point samples or NULL if all points are considered.
 
 mirtkPublicAggregateMacro (const RegisteredPointSet, Source)
 (Transformed) source data set
 
 mirtkPublicAggregateMacro (const Array< int >, SourceSample)
 Indices of source point samples or NULL if all points are considered.
 
 mirtkPublicAttributeMacro (FeatureList, TargetFeatures)
 Indices and rescaling parameters of target point features.
 
 mirtkPublicAttributeMacro (FeatureList, SourceFeatures)
 Indices and rescaling parameters of source point features.
 
 mirtkPublicAttributeMacro (int, DimensionOfSpectralPoints)
 Number of eigenmodes used for spectral features if used.
 
 mirtkPublicAttributeMacro (bool, DiffeomorphicSpectralDecomposition)
 Whether to use diffeomorphic spectral matching for spectral decomposition.
 
 mirtkPublicAttributeMacro (bool, UpdateSpectralPoints)
 Whether to update spectral coordinates of moving dataset.
 
 mirtkPublicAttributeMacro (bool, FromTargetToSource)
 Whether target to source correspondences are needed (i.e., GetSourcePoint)
 
 mirtkPublicAttributeMacro (bool, FromSourceToTarget)
 Whether source to target correspondences are needed (i.e., GetTargetPoint)
 
 mirtkPublicAttributeMacro (Direction, DefaultDirection)
 Default direction (i.e., GetPoint)
 
 mirtkReadOnlyAttributeMacro (int, NumberOfFeatures)
 Dimension of feature vectors.
 
 PointCorrespondence (const RegisteredPointSet *=NULL, const RegisteredPointSet *=NULL)
 Constructor.
 
 PointCorrespondence (const PointCorrespondence &)
 Copy constructor.
 
- Protected Member Functions inherited from mirtk::Observable
 Observable ()
 Default constructor.
 
 Observable (const Observable &)
 Copy constructor.
 
Observableoperator= (const Observable &)
 Assignment operator.
 
- Protected Member Functions inherited from mirtk::Object
template<typename... Args>
void Throw (ErrorType err, const char *func, Args... args) const
 

Additional Inherited Members

- Static Public Member Functions inherited from mirtk::PointCorrespondence
static double Distance2BetweenPoints (const double *a, const double *b, int d=3)
 
static int GetNumberOfPoints (vtkPointSet *dataset, const Array< int > *sample=NULL)
 
static int GetNumberOfPoints (const RegisteredPointSet *dataset, const Array< int > *sample=NULL)
 
static void GetPoint (Point &point, vtkPointSet *dataset, const Array< int > *sample, int index)
 
static void GetPoint (Point &point, const RegisteredPointSet *dataset, const Array< int > *sample, int index)
 
static void GetPoint (double *point, vtkPointSet *dataset, const Array< int > *sample, int index, const FeatureList *feature=NULL)
 
static void GetPoint (double *point, const RegisteredPointSet *dataset, const Array< int > *sample, int index, const FeatureList *feature=NULL)
 
static int GetPointDataIndexByCaseInsensitiveName (vtkPointData *, const string &)
 Get index of point data array using case insensitive name.
 
static int GetPointDimension (vtkPointSet *dataset, const FeatureList *feature)
 
static int GetPointDimension (const RegisteredPointSet *dataset, const FeatureList *feature)
 
static int GetPointIndex (vtkPointSet *dataset, const Array< int > *sample, int index)
 
static int GetPointIndex (const RegisteredPointSet *dataset, const Array< int > *sample, int index)
 
static vtkSmartPointer< vtkPoints > GetPoints (vtkPointSet *dataset, const Array< int > *sample)
 
static vtkSmartPointer< vtkPoints > GetPoints (const RegisteredPointSet *dataset, const Array< int > *sample)
 
static vtkSmartPointer< vtkPointSet > GetPointSet (vtkPointSet *dataset, const Array< int > *sample)
 
static vtkSmartPointer< vtkPointSet > GetPointSet (const RegisteredPointSet *dataset, const Array< int > *sample)
 
static PointCorrespondenceNew (TypeId)
 Construct new instance of specified type.
 
static PointCorrespondenceNew (const char *)
 Construct new instance of specified type.
 
- Static Public Member Functions inherited from mirtk::Object
static const char * NameOfType ()
 Get name of this class type.
 
- Static Protected Member Functions inherited from mirtk::Object
template<typename... Args>
static void ThrowStatic (ErrorType err, const char *cls, const char *func, Args... args)
 

Detailed Description

Fuzzy point correspondences

The point correspondences realized by this class are inspired by the softassign approach as in particular employed by the Robust Point Matching (RPM) algorithm proposed in

Chui and Rangarajan, "A new point matching algorithm for non-rigid registration", Computer Vision and Image Understanding, 89(2-3), pp. 114–141, 2003.

This class is the common base of the different variants of softassign point correspondences, two of which implementing those presented in the MATLAB Demo by the authors of aforementioned paper.

See also
FiducialRegistrationError

Definition at line 49 of file FuzzyCorrespondence.h.

Member Function Documentation

§ Init()

void mirtk::FuzzyCorrespondence::Init ( )
protected

Common (re-)initialization steps of this class

Note
Must be a non-virtual function!

The documentation for this class was generated from the following file: