#include <FuzzyCorrespondence.h>
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 PointCorrespondence * | NewInstance () 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. | |
Observable & | operator= (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 PointCorrespondence * | New (TypeId) |
Construct new instance of specified type. | |
static PointCorrespondence * | New (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) |
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.
Definition at line 49 of file FuzzyCorrespondence.h.
|
protected |
Common (re-)initialization steps of this class