21 #ifndef otbFineRegistrationImageFilter_h
22 #define otbFineRegistrationImageFilter_h
24 #include "itkImageToImageFilter.h"
25 #include "itkInterpolateImageFunction.h"
26 #include "itkContinuousIndex.h"
28 #include "itkTranslationTransform.h"
29 #include "itkImageToImageMetric.h"
73 template <
class TInputImage,
class T0utputCorrelation,
class TOutputDisplacementField>
79 typedef itk::ImageToImageFilter<TInputImage, T0utputCorrelation>
Superclass;
94 typedef typename TInputImage::SizeType
SizeType;
102 typedef itk::ImageToImageMetric<TInputImage, TInputImage>
MetricType;
120 void SetFixedInput(
const TInputImage* image);
123 void SetMovingInput(
const TInputImage* image);
126 const TInputImage* GetFixedInput();
127 const TInputImage* GetMovingInput();
131 TOutputDisplacementField* GetOutputDisplacementField();
144 itkSetMacro(ConvergenceAccuracy,
double);
145 itkGetMacro(ConvergenceAccuracy,
double);
149 itkSetMacro(SubPixelAccuracy,
double);
150 itkGetMacro(SubPixelAccuracy,
double);
154 itkSetMacro(MaxIter,
int);
155 itkGetMacro(MaxIter,
int);
159 itkSetMacro(Minimize,
bool);
160 itkBooleanMacro(Minimize);
164 itkSetMacro(UseSpacing,
bool);
165 itkBooleanMacro(UseSpacing);
181 m_Radius.Fill(radius);
187 m_SearchRadius.Fill(radius);
193 m_GridStep.Fill(step);
209 void GenerateData()
override;
212 void GenerateInputRequestedRegion(
void)
override;
215 void GenerateOutputInformation(
void)
override;
221 inline double callMetric(
double val1,
double val2,
double& oldRes,
bool& flag);
222 inline void updateOptParams(
double potBestVal,
double parx,
double pary,
223 double& bestVal,
typename TranslationType::ParametersType& optParams);
224 inline void updatePoints(
double& gn,
double& in1,
double& in2,
double& in3,
225 double& out1,
double& out2,
double& out3,
double& out4);
226 inline void updateMinimize(
double& a,
double& b);
268 #ifndef OTB_MANUAL_INSTANTIATION
Computes a displacement field between two images using a given metric.
TInputImage::PointType PointType
InterpolatorPointerType m_Interpolator
itk::Transform< double, 2, 2 > TransformType
MetricType::Pointer MetricPointerType
void SetSearchRadius(unsigned int radius)
FineRegistrationImageFilter Self
itk::ImageToImageMetric< TInputImage, TInputImage > MetricType
itk::SmartPointer< Self > Pointer
void SetGridStep(unsigned int step)
double m_ConvergenceAccuracy
TransformPointerType m_Transform
void SetRadius(unsigned int radius)
~FineRegistrationImageFilter() override
MetricPointerType m_Metric
TranslationType::Pointer TranslationPointerType
TInputImage::SizeType SizeType
TInputImage::IndexType IndexType
TransformType::Pointer TransformPointerType
TOutputDisplacementField::PixelType DisplacementValueType
itk::TranslationTransform< double, 2 > TranslationType
double m_SubPixelAccuracy
itk::InterpolateImageFunction< TInputImage, double > InterpolatorType
T0utputCorrelation::RegionType OutputImageRegionType
TInputImage::SpacingType SpacingType
TInputImage::Pointer InputImagePointerType
void operator=(const Self &)=delete
FineRegistrationImageFilter(const Self &)=delete
itkGetObjectMacro(Metric, MetricType)
InterpolatorType::Pointer InterpolatorPointerType
itkGetObjectMacro(Interpolator, InterpolatorType)
SpacingType m_InitialOffset
TInputImage::RegionType InputImageRegionType
itk::ImageToImageFilter< TInputImage, T0utputCorrelation > Superclass
itk::SmartPointer< const Self > ConstPointer
itk::ContinuousIndex< double, 2 > ContinuousIndexType
TInputImage::OffsetType OffsetType
TranslationPointerType m_Translation
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.