00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef __itkPointSetToPointSetRegistrationMethod_h
00018
#define __itkPointSetToPointSetRegistrationMethod_h
00019
00020
#include "itkProcessObject.h"
00021
#include "itkPointSetToPointSetMetric.h"
00022
#include "itkMultipleValuedNonLinearOptimizer.h"
00023
00024
namespace itk
00025 {
00026
00060
template <
typename TFixedPo
intSet,
typename TMovingPo
intSet>
00061 class ITK_EXPORT PointSetToPointSetRegistrationMethod :
public ProcessObject
00062 {
00063
public:
00065 typedef PointSetToPointSetRegistrationMethod
Self;
00066 typedef ProcessObject Superclass;
00067 typedef SmartPointer<Self> Pointer;
00068 typedef SmartPointer<const Self> ConstPointer;
00069
00071
itkNewMacro(
Self);
00072
00074
itkTypeMacro(PointSetToPointSetRegistrationMethod,
ProcessObject);
00075
00077 typedef TFixedPointSet
FixedPointSetType;
00078 typedef typename FixedPointSetType::ConstPointer
FixedPointSetConstPointer;
00079
00081 typedef TMovingPointSet
MovingPointSetType;
00082 typedef typename MovingPointSetType::ConstPointer
MovingPointSetConstPointer;
00083
00085
typedef PointSetToPointSetMetric<
FixedPointSetType,
00086 MovingPointSetType >
MetricType;
00087 typedef typename MetricType::Pointer
MetricPointer;
00088
00090 typedef typename MetricType::TransformType
TransformType;
00091 typedef typename TransformType::Pointer
TransformPointer;
00092
00094 typedef MultipleValuedNonLinearOptimizer OptimizerType;
00095
00098 typedef typename MetricType::TransformParametersType
ParametersType;
00099
00101
void StartRegistration(
void);
00102
00104
itkSetConstObjectMacro( FixedPointSet,
FixedPointSetType );
00105
itkGetConstObjectMacro( FixedPointSet,
FixedPointSetType );
00106
00108
itkSetConstObjectMacro( MovingPointSet,
MovingPointSetType );
00109
itkGetConstObjectMacro( MovingPointSet,
MovingPointSetType );
00110
00112
itkSetObjectMacro(
Optimizer,
OptimizerType );
00113
itkGetObjectMacro(
Optimizer,
OptimizerType );
00114
00116
itkSetObjectMacro( Metric,
MetricType );
00117
itkGetObjectMacro( Metric,
MetricType );
00118
00120
itkSetObjectMacro(
Transform,
TransformType );
00121
itkGetObjectMacro(
Transform,
TransformType );
00122
00124
virtual void SetInitialTransformParameters(
const ParametersType & param );
00125
itkGetConstReferenceMacro( InitialTransformParameters,
ParametersType );
00126
00129
itkGetConstReferenceMacro( LastTransformParameters,
ParametersType );
00130
00132
void Initialize() throw (ExceptionObject);
00133
00134 protected:
00135 PointSetToPointSetRegistrationMethod();
00136 virtual ~PointSetToPointSetRegistrationMethod() {};
00137
void PrintSelf(std::ostream& os,
Indent indent)
const;
00138
00139
private:
00140 PointSetToPointSetRegistrationMethod(
const Self&);
00141
void operator=(
const Self&);
00142
00143
MetricPointer m_Metric;
00144 OptimizerType::Pointer m_Optimizer;
00145
00146
MovingPointSetConstPointer m_MovingPointSet;
00147
FixedPointSetConstPointer m_FixedPointSet;
00148
00149
TransformPointer m_Transform;
00150
00151
ParametersType m_InitialTransformParameters;
00152
ParametersType m_LastTransformParameters;
00153
00154 };
00155
00156
00157 }
00158
00159
00160
#ifndef ITK_MANUAL_INSTANTIATION
00161
#include "itkPointSetToPointSetRegistrationMethod.txx"
00162
#endif
00163
00164
#endif
00165
00166
00167