/usr/include/IGSTK/igstkLandmark3DRegistrationErrorEstimator.h is in libigstk4-dev 4.4.0-2build2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | /*=========================================================================
Program: Image Guided Surgery Software Toolkit
Module: $RCSfile: igstkLandmark3DRegistrationErrorEstimator.h,v $
Language: C++
Date: $Date: 2008-06-05 14:54:59 $
Version: $Revision: 1.12 $
Copyright (c) ISC Insight Software Consortium. All rights reserved.
See IGSTKCopyright.txt or http://www.igstk.org/copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __igstkLandmark3DRegistrationErrorEstimator_h
#define __igstkLandmark3DRegistrationErrorEstimator_h
#include "igstkStateMachine.h"
#include "igstkMacros.h"
#include "igstkObject.h"
#include "igstkEvents.h"
#include "itkPoint.h"
#include "itkVersor.h"
#include <vector>
namespace igstk
{
/** \class Landmark3DRegistrationErrorEstimator
*
* \brief This class estimates error in point-based
* rigid-body landmark registration .
*
* The error estimation is based on the work by West et al.
*
* J.B West et al, "Fiducial Point Placement and the Accuracy of Point-based,
* Rigid Body Registration", Neurosurgery, pp 810-816, Vol.48, No.4,
* April 2001.
*
*\image html igstkLandmark3DRegistrationErrorEstimator.png "State Machine"
*
*\image latex igstkLandmark3DRegistrationErrorEstimator.eps "State Machine"
*
* \ingroup Registration
*/
class Landmark3DRegistrationErrorEstimator : public Object
{
public:
/** Macro with standard traits declarations. */
igstkStandardClassTraitsMacro( Landmark3DRegistrationErrorEstimator, Object )
public:
/** Typedefs */
typedef itk::Point<double, 3> TargetPointType;
typedef itk::Point<double, 3> LandmarkPointType;
typedef std::vector< LandmarkPointType > LandmarkContainerType;
/** Error parameter Typedefs */
typedef double ErrorType;
/** Method to set the landmark container */
void RequestSetLandmarkContainer( const LandmarkContainerType & );
/** Method to set the target point */
void RequestSetTargetPoint ( const TargetPointType & );
/** Method to set the landmark registration error */
void RequestSetLandmarkRegistrationError ( const ErrorType & );
/** Method to request target registration estimation */
void RequestEstimateTargetPointRegistrationError( );
/** Request target point registration error event */
void RequestGetTargetPointRegistrationErrorEstimate();
protected:
Landmark3DRegistrationErrorEstimator ( void );
~Landmark3DRegistrationErrorEstimator ( void );
/** Print the object information in a stream. */
void PrintSelf( std::ostream& os, itk::Indent indent ) const;
private:
typedef itk::Vector<double, 3> VectorType;
typedef LandmarkContainerType::const_iterator PointsContainerConstIterator;
typedef double DistanceType;
typedef itk::Versor<double> VersorType;
/** Compute Landmarks centroid */
void ComputeLandmarksCentroid();
/** Compute landmark principal axes */
void ComputeLandmarkPrincipalAxes();
/** Compute RMS distance of landmarks from the principal axes */
void ComputeRMSDistanceLandmarksFromPrincipalAxes();
/** Set landmark container */
void SetLandmarkContainerProcessing();
/** Set target point */
void SetTargetPointProcessing();
/** Set landmark registration error */
void SetLandmarkRegistrationErrorProcessing( );
void ComputeErrorParameters( );
/** Estimate target point registration error */
void EstimateTargetPointRegistrationErrorProcessing( );
/** Report any invalid request to the logger */
void ReportInvalidRequestProcessing();
/** Report success in target point registration error estimation */
void ReportSuccessInTargetPointRegistrationErrorEstimationProcessing();
/** Report failure in target point registration error estimation */
void ReportFailureInTargePointRegistrationErrorEstimationProcessing();
/** This method throws an event loaded with the landmark registration
* error */
void GetTargetPointRegistrationErrorEstimateProcessing();
/** List of States */
igstkDeclareStateMacro( Idle );
igstkDeclareStateMacro( LandmarkContainerSet );
igstkDeclareStateMacro( LandmarkRegistrationErrorSet );
igstkDeclareStateMacro( TargetPointSet );
igstkDeclareStateMacro( AttemptingToEstimateTargetRegstirationError );
igstkDeclareStateMacro( TargetRegistrationErrorEstimated );
/** List of Inputs */
igstkDeclareInputMacro( LandmarkContainer );
igstkDeclareInputMacro( LandmarkRegistrationError );
igstkDeclareInputMacro( TargetPoint );
igstkDeclareInputMacro( EstimateTargetPointRegistrationError );
igstkDeclareInputMacro( TargetPointRegistrationErrorEstimationSuccess );
igstkDeclareInputMacro( TargetPointRegistrationErrorEstimationFailure );
igstkDeclareInputMacro( GetTargetPointRegistrationErrorEstimate );
/** These two methods must be declared and note be implemented
* in order to enforce the protocol of smart pointers. */
Landmark3DRegistrationErrorEstimator(const Self&); //purposely not implemented
void operator=(const Self&); //purposely not implemented
LandmarkContainerType m_LandmarkContainer;
LandmarkContainerType m_LandmarkContainerToBeSet;
TargetPointType m_TargetPoint;
TargetPointType m_TargetPointToBeSet;
ErrorType m_LandmarkRegistrationError;
ErrorType m_LandmarkRegistrationErrorToBeSet;
ErrorType m_TargetPointRegistrationError;
/** Landmark configuration */
itk::Matrix<double,3,3> m_LandmarkPrincipalAxes;
/** RMS distance from the landmarks to the principal axes of the
* landmark configuration */
VectorType m_RMSDistanceFromLandmarkToPrincipalAxes;
/** Landmarks centroid */
LandmarkPointType m_LandmarkCentroid;
};
} // end namespace igstk
#endif // __igstkLandmark3DRegistrationErrorEstimator_h
|