18 #ifndef sitkSymmetricForcesDemonsRegistrationFilter_h
19 #define sitkSymmetricForcesDemonsRegistrationFilter_h
83 SITK_RETURN_SELF_TYPE_HEADER
SetStandardDeviations (
const std::vector<double> & StandardDeviations ) { this->m_StandardDeviations = StandardDeviations;
return *
this; }
86 SITK_RETURN_SELF_TYPE_HEADER
SetStandardDeviations(
double value ) { this->m_StandardDeviations = std::vector<double>(3, value);
return *
this; }
104 SITK_RETURN_SELF_TYPE_HEADER
SetMaximumRMSError (
double MaximumRMSError ) { this->m_MaximumRMSError = MaximumRMSError;
return *
this; }
113 SITK_RETURN_SELF_TYPE_HEADER
SetSmoothDisplacementField (
bool SmoothDisplacementField ) { this->m_SmoothDisplacementField = SmoothDisplacementField;
return *
this; }
127 SITK_RETURN_SELF_TYPE_HEADER
SetSmoothUpdateField (
bool SmoothUpdateField ) { this->m_SmoothUpdateField = SmoothUpdateField;
return *
this; }
141 SITK_RETURN_SELF_TYPE_HEADER
SetUpdateFieldStandardDeviations (
const std::vector<double> & UpdateFieldStandardDeviations ) { this->m_UpdateFieldStandardDeviations = UpdateFieldStandardDeviations;
return *
this; }
155 SITK_RETURN_SELF_TYPE_HEADER
SetMaximumKernelWidth (
unsigned int MaximumKernelWidth ) { this->m_MaximumKernelWidth = MaximumKernelWidth;
return *
this; }
165 SITK_RETURN_SELF_TYPE_HEADER
SetMaximumError (
double MaximumError ) { this->m_MaximumError = MaximumError;
return *
this; }
175 SITK_RETURN_SELF_TYPE_HEADER
SetIntensityDifferenceThreshold (
double IntensityDifferenceThreshold ) { this->m_IntensityDifferenceThreshold = IntensityDifferenceThreshold;
return *
this; }
183 SITK_RETURN_SELF_TYPE_HEADER
SetUseImageSpacing (
bool UseImageSpacing ) { this->m_UseImageSpacing = UseImageSpacing;
return *
this; }
216 double GetMetric()
const {
return this->m_pfGetMetric(); };
219 std::string
GetName()
const {
return std::string (
"SymmetricForcesDemonsRegistrationFilter"); }
222 std::string ToString()
const;
226 Image Execute (
const Image & fixedImage,
const Image & movingImage,
const Image & initialDisplacementField );
231 Image Execute (
const Image & fixedImage,
const Image & movingImage,
const Image & initialDisplacementField,
const std::vector<double> & standardDeviations,
uint32_t numberOfIterations,
double maximumRMSError,
bool smoothDisplacementField,
bool smoothUpdateField,
const std::vector<double> & updateFieldStandardDeviations,
unsigned int maximumKernelWidth,
double maximumError,
double intensityDifferenceThreshold,
bool useImageSpacing );
232 Image Execute (
const Image & fixedImage,
const Image & movingImage,
const std::vector<double> & standardDeviations,
uint32_t numberOfIterations,
double maximumRMSError,
bool smoothDisplacementField,
bool smoothUpdateField,
const std::vector<double> & updateFieldStandardDeviations,
unsigned int maximumKernelWidth,
double maximumError,
double intensityDifferenceThreshold,
bool useImageSpacing );
239 typedef Image (Self::*MemberFunctionType)(
const Image * fixedImage,
const Image * movingImage,
const Image * initialDisplacementField );
240 template <
class TImageType>
Image ExecuteInternal (
const Image * fixedImage,
const Image * movingImage,
const Image * initialDisplacementField );
bool m_SmoothDisplacementField
bool GetUseImageSpacing() const
Self & SetUpdateFieldStandardDeviations(const std::vector< double > &UpdateFieldStandardDeviations)
nsstd::function< uint32_t()> m_pfGetElapsedIterations
uint32_t GetElapsedIterations() const
Number of iterations run.
BasicPixelIDTypeList PixelIDTypeList
#define SITKBasicFilters_EXPORT
std::vector< double > m_StandardDeviations
Self & SetStandardDeviations(double value)
Self & UseImageSpacingOff()
double m_IntensityDifferenceThreshold
typelist::MakeTypeList< BasicPixelID< int8_t >, BasicPixelID< uint8_t >, BasicPixelID< int16_t >, BasicPixelID< uint16_t >, BasicPixelID< int32_t >, BasicPixelID< uint32_t >, BasicPixelID< float >, BasicPixelID< double > >::Type BasicPixelIDTypeList
double GetIntensityDifferenceThreshold() const
Self & SmoothUpdateFieldOff()
Self & SmoothDisplacementFieldOn()
uint32_t GetNumberOfIterations() const
uint32_t m_NumberOfIterations
Self & SetUpdateFieldStandardDeviations(double value)
double GetRMSChange() const
Deformably register two images using the demons algorithm.
std::vector< double > m_UpdateFieldStandardDeviations
nsstd::auto_ptr< detail::MemberFunctionFactory< MemberFunctionType > > m_MemberFactory
unsigned int m_MaximumKernelWidth
double GetMaximumRMSError() const
Self & SmoothUpdateFieldOn()
Self & SetNumberOfIterations(uint32_t NumberOfIterations)
Self & SetMaximumError(double MaximumError)
std::vector< double > GetStandardDeviations() const
std::string GetName() const
std::vector< double > GetUpdateFieldStandardDeviations() const
Self & SetStandardDeviations(const std::vector< double > &StandardDeviations)
Self & SetIntensityDifferenceThreshold(double IntensityDifferenceThreshold)
unsigned int GetMaximumKernelWidth() const
itk::ProcessObject * m_Filter
SymmetricForcesDemonsRegistrationFilter Self
The main Image class for SimpleITK.
double GetMaximumError() const
Self & SetSmoothUpdateField(bool SmoothUpdateField)
Self & SetSmoothDisplacementField(bool SmoothDisplacementField)
nsstd::function< double()> m_pfGetMetric
Self & SetMaximumKernelWidth(unsigned int MaximumKernelWidth)
bool GetSmoothDisplacementField() const
Self & SetMaximumRMSError(double MaximumRMSError)
Self & SmoothDisplacementFieldOff()
The base interface for SimpleITK filters that take one input image.
bool GetSmoothUpdateField() const
Self & UseImageSpacingOn()
Self & SetUseImageSpacing(bool UseImageSpacing)