00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef __itkPointSetToImageRegistrationMethod_h
00018
#define __itkPointSetToImageRegistrationMethod_h
00019
00020
#include "itkProcessObject.h"
00021
#include "itkImage.h"
00022
#include "itkPointSetToImageMetric.h"
00023
#include "itkSingleValuedNonLinearOptimizer.h"
00024
00025
namespace itk
00026 {
00027
00061
template <
typename TFixedPo
intSet,
typename TMovingImage>
00062 class ITK_EXPORT PointSetToImageRegistrationMethod :
public ProcessObject
00063 {
00064
public:
00066 typedef PointSetToImageRegistrationMethod
Self;
00067 typedef ProcessObject Superclass;
00068 typedef SmartPointer<Self> Pointer;
00069 typedef SmartPointer<const Self> ConstPointer;
00070
00072
itkNewMacro(
Self);
00073
00075
itkTypeMacro(PointSetToImageRegistrationMethod,
ProcessObject);
00076
00078 typedef TFixedPointSet
FixedPointSetType;
00079 typedef typename FixedPointSetType::ConstPointer
FixedPointSetConstPointer;
00080
00082 typedef TMovingImage
MovingImageType;
00083 typedef typename MovingImageType::ConstPointer
MovingImageConstPointer;
00084
00086
typedef PointSetToImageMetric<
FixedPointSetType,
00087 MovingImageType >
MetricType;
00088 typedef typename MetricType::Pointer
MetricPointer;
00089
00091 typedef typename MetricType::TransformType
TransformType;
00092 typedef typename TransformType::Pointer
TransformPointer;
00093
00095 typedef typename MetricType::InterpolatorType
InterpolatorType;
00096 typedef typename InterpolatorType::Pointer
InterpolatorPointer;
00097
00099 typedef SingleValuedNonLinearOptimizer OptimizerType;
00100
00103 typedef typename MetricType::TransformParametersType
ParametersType;
00104
00106
void StartRegistration(
void);
00107
00109
itkSetConstObjectMacro( FixedPointSet,
FixedPointSetType );
00110
itkGetConstObjectMacro( FixedPointSet,
FixedPointSetType );
00111
00113
itkSetConstObjectMacro( MovingImage,
MovingImageType );
00114
itkGetConstObjectMacro( MovingImage,
MovingImageType );
00115
00117
itkSetObjectMacro(
Optimizer,
OptimizerType );
00118
itkGetObjectMacro(
Optimizer,
OptimizerType );
00119
00121
itkSetObjectMacro( Metric,
MetricType );
00122
itkGetObjectMacro( Metric,
MetricType );
00123
00125
itkSetObjectMacro(
Transform,
TransformType );
00126
itkGetObjectMacro(
Transform,
TransformType );
00127
00129
itkSetObjectMacro( Interpolator,
InterpolatorType );
00130
itkGetObjectMacro( Interpolator,
InterpolatorType );
00131
00133
virtual void SetInitialTransformParameters(
const ParametersType & param );
00134
itkGetConstReferenceMacro( InitialTransformParameters,
ParametersType );
00135
00138
itkGetConstReferenceMacro( LastTransformParameters,
ParametersType );
00139
00140
00142
void Initialize() throw (ExceptionObject);
00143
00144 protected:
00145 PointSetToImageRegistrationMethod();
00146 virtual ~PointSetToImageRegistrationMethod() {};
00147
void PrintSelf(std::ostream& os,
Indent indent)
const;
00148
00149
private:
00150 PointSetToImageRegistrationMethod(
const Self&);
00151
void operator=(
const Self&);
00152
00153 MetricPointer m_Metric;
00154 OptimizerType::Pointer m_Optimizer;
00155
00156
MovingImageConstPointer m_MovingImage;
00157
FixedPointSetConstPointer m_FixedPointSet;
00158
00159
TransformPointer m_Transform;
00160
InterpolatorPointer m_Interpolator;
00161
00162
ParametersType m_InitialTransformParameters;
00163
ParametersType m_LastTransformParameters;
00164
00165 };
00166
00167
00168 }
00169
00170
00171
#ifndef ITK_MANUAL_INSTANTIATION
00172
#include "itkPointSetToImageRegistrationMethod.txx"
00173
#endif
00174
00175
#endif
00176
00177
00178