go home Home | Main Page | Topics | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elastix::StatisticalShapePenalty< TElastix > Class Template Reference

#include <elxStatisticalShapePenalty.h>

Detailed Description

template<typename TElastix>
class elastix::StatisticalShapePenalty< TElastix >

An metric based on the itk::StatisticalShapePointPenalty.

The parameters used in this class are:

Parameters

Metric: Select this metric as follows:
(Metric "StatisticalShapePenalty")

ShrinkageIntensity: The mixing ratio ($\beta$) of the provided covariance matrix and an identity matrix. $\Sigma' = (1-\beta)\Sigma + \beta \sigma_0^2 I$ Can be defined for each resolution
example: (ShrinkageIntensity 0.2)

BaseVariance: The width ($\sigma_0^2$) of the non-informative prior. Can be defined for each resolution
example: (BaseVariance 1000.0)

Author
F.F. Berendsen, Image Sciences Institute, UMC Utrecht, The Netherlands
Note
This work was funded by the projects Care4Me and Mediate.
If you use the StatisticalShapePenalty anywhere we would appreciate if you cite the following article:
F.F. Berendsen et al., Free-form image registration regularized by a statistical shape model: application to organ segmentation in cervical MR, Comput. Vis. Image Understand. (2013), http://dx.doi.org/10.1016/j.cviu.2012.12.006

Definition at line 58 of file elxStatisticalShapePenalty.h.

Inheritance diagram for elastix::StatisticalShapePenalty< TElastix >:

Public Types

using CombinationTransformType = itk::AdvancedCombinationTransform<CoordinateType, Self::FixedImageDimension>
using ConstPointer = SmartPointer<const Self>
using CoordinateType = typename OutputPointType::CoordinateType
using FixedImageType
using ImageType = FixedImageType
using InitialTransformType = typename CombinationTransformType::InitialTransformType
using ITKBaseType = typename Superclass2::ITKBaseType
using MovingImageType
using Pointer = SmartPointer<Self>
using PointSetType = FixedPointSetType
using Self = StatisticalShapePenalty
using Superclass1
using Superclass2 = MetricBase<TElastix>
using VnlVectorType = vnl_vector<CoordinateType>
Public Types inherited from itk::StatisticalShapePointPenalty< TFixedPointSet, TMovingPointSet >
using ConstPointer = SmartPointer<const Self>
using CoordinateType = typename OutputPointType::CoordinateType
using DerivativeValueType
using FixedPointSetConstPointer
using FixedPointSetType
using InputPointType
using MovingPointSetConstPointer
using MovingPointSetType
using NonZeroJacobianIndicesType
using OutputPointType
using PCACovarianceType = vnl_svd_economy<CoordinateType>
using Pointer = SmartPointer<Self>
using PointIterator
using ProposalDerivativeType = typename std::vector<VnlVectorType *>
using Self = StatisticalShapePointPenalty
using Superclass = SingleValuedPointSetToPointSetMetric<TFixedPointSet, TMovingPointSet>
using TransformJacobianType
using TransformPointer
using TransformType
using VnlMatrixType = vnl_matrix<CoordinateType>
using VnlVectorType = vnl_vector<CoordinateType>
Public Types inherited from itk::SingleValuedPointSetToPointSetMetric< TFixedPointSet, TMovingPointSet >
using ConstPointer = SmartPointer<const Self>
using CoordinateRepresentationType = Superclass::ParametersValueType
using DerivativeValueType = typename DerivativeType::ValueType
using FixedImageMaskConstPointer = typename FixedImageMaskType::ConstPointer
using FixedImageMaskPointer = typename FixedImageMaskType::Pointer
using FixedImageMaskType = ImageMaskSpatialObject<Self::FixedPointSetDimension>
using FixedPointSetConstPointer = typename FixedPointSetType::ConstPointer
using FixedPointSetType = TFixedPointSet
using InputPointType = typename TransformType::InputPointType
using MovingImageMaskConstPointer = typename MovingImageMaskType::ConstPointer
using MovingImageMaskPointer = typename MovingImageMaskType::Pointer
using MovingImageMaskType = ImageMaskSpatialObject<Self::MovingPointSetDimension>
using MovingPointSetConstPointer = typename MovingPointSetType::ConstPointer
using MovingPointSetType = TMovingPointSet
using NonZeroJacobianIndicesType = typename TransformType::NonZeroJacobianIndicesType
using OutputPointType = typename TransformType::OutputPointType
using Pointer = SmartPointer<Self>
using PointIterator = typename FixedPointSetType::PointsContainer::ConstIterator
using Self = SingleValuedPointSetToPointSetMetric
using Superclass = SingleValuedCostFunction
using TransformJacobianType = typename TransformType::JacobianType
using TransformParametersType = typename TransformType::ParametersType
using TransformPointer = typename TransformType::Pointer
using TransformType
Public Types inherited from elastix::MetricBase< TElastix >
using AdvancedMetricType = itk::AdvancedImageToImageMetric<FixedImageType, MovingImageType>
using CoordinateRepresentationType = typename ITKBaseType::ParametersValueType
using ElastixType
using FixedImageType = typename ElastixType::FixedImageType
using FixedPointSetType
using FixedPointType = typename FixedImageType::PointType
using FixedPointValueType = typename FixedPointType::ValueType
using ImageSamplerBaseType = typename AdvancedMetricType::ImageSamplerType
using ITKBaseType = itk::SingleValuedCostFunction
using MeasureType = typename ITKBaseType::MeasureType
using MovingImageDerivativeScalesType = typename AdvancedMetricType::MovingImageDerivativeScalesType
using MovingImageType = typename ElastixType::MovingImageType
using MovingPointSetType
using MovingPointType = typename MovingImageType::PointType
using MovingPointValueType = typename MovingPointType::ValueType
using RegistrationType
using Self = MetricBase
using Superclass = BaseComponentSE<TElastix>
Public Types inherited from elastix::BaseComponentSE< TElastix >
using ElastixType = TElastix
using RegistrationType = typename ElastixType::RegistrationBaseType
using Self = BaseComponentSE
using Superclass = BaseComponent

Public Member Functions

void BeforeEachResolution () override
void BeforeRegistration () override
 elxClassNameMacro ("StatisticalShapePenalty")
void Initialize () override
 ITK_DISALLOW_COPY_AND_MOVE (StatisticalShapePenalty)
 itkOverrideGetNameOfClassMacro (StatisticalShapePenalty)
 itkStaticConstMacro (FixedImageDimension, unsigned int, FixedImageType::ImageDimension)
 itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension)
unsigned int ReadShape (const std::string &ShapeFileName, typename PointSetType::Pointer &pointSet)
void SelectNewSamples () override
Public Member Functions inherited from itk::StatisticalShapePointPenalty< TFixedPointSet, TMovingPointSet >
virtual void BaseVarianceNeedsUpdateOff ()
virtual void BaseVarianceNeedsUpdateOn ()
virtual MeasureType GetBaseVariance () const
virtual MeasureType GetCentroidXVariance () const
virtual MeasureType GetCentroidYVariance () const
virtual MeasureType GetCentroidZVariance () const
virtual MeasureType GetCutOffSharpness () const
virtual MeasureType GetCutOffValue () const
void GetDerivative (const ParametersType &parameters, DerivativeType &Derivative) const override
virtual const boolGetNormalizedShapeModel ()
virtual const intGetShapeModelCalculation ()
virtual MeasureType GetShrinkageIntensity () const
virtual MeasureType GetSizeVariance () const
MeasureType GetValue (const ParametersType &parameters) const override
void GetValueAndDerivative (const ParametersType &parameters, MeasureType &Value, DerivativeType &Derivative) const override
void Initialize () override
 ITK_DISALLOW_COPY_AND_MOVE (StatisticalShapePointPenalty)
 itkOverrideGetNameOfClassMacro (StatisticalShapePointPenalty)
virtual void NormalizedShapeModelOff ()
virtual void NormalizedShapeModelOn ()
virtual void SetBaseVariance (MeasureType _arg)
virtual void SetBaseVarianceNeedsUpdate (bool _arg)
virtual void SetCentroidXVariance (MeasureType _arg)
virtual void SetCentroidYVariance (MeasureType _arg)
virtual void SetCentroidZVariance (MeasureType _arg)
virtual void SetCovarianceMatrix (const vnl_matrix< double > *_arg)
virtual void SetCutOffSharpness (MeasureType _arg)
virtual void SetCutOffValue (MeasureType _arg)
virtual void SetEigenValues (const vnl_vector< double > *_arg)
virtual void SetEigenVectors (const vnl_matrix< double > *_arg)
virtual void SetMeanVector (const vnl_vector< double > *_arg)
virtual void SetNormalizedShapeModel (bool _arg)
virtual void SetShapeModelCalculation (int _arg)
virtual void SetShrinkageIntensity (MeasureType _arg)
virtual void SetShrinkageIntensityNeedsUpdate (bool _arg)
virtual void SetSizeVariance (MeasureType _arg)
virtual void SetVariancesNeedsUpdate (bool _arg)
virtual void ShrinkageIntensityNeedsUpdateOff ()
virtual void ShrinkageIntensityNeedsUpdateOn ()
virtual void VariancesNeedsUpdateOff ()
virtual void VariancesNeedsUpdateOn ()
Public Member Functions inherited from itk::SingleValuedPointSetToPointSetMetric< TFixedPointSet, TMovingPointSet >
virtual void BeforeThreadedGetValueAndDerivative (const TransformParametersType &parameters) const
virtual const FixedImageMaskTypeGetFixedImageMask ()
virtual const FixedPointSetTypeGetFixedPointSet ()
virtual const MovingImageMaskTypeGetMovingImageMask ()
virtual const MovingPointSetTypeGetMovingPointSet ()
unsigned int GetNumberOfParameters () const override
virtual const TransformTypeGetTransform ()
virtual const boolGetUseMetricSingleThreaded ()
 ITK_DISALLOW_COPY_AND_MOVE (SingleValuedPointSetToPointSetMetric)
 itkOverrideGetNameOfClassMacro (SingleValuedPointSetToPointSetMetric)
 itkStaticConstMacro (FixedPointSetDimension, unsigned int, TFixedPointSet::PointDimension)
 itkStaticConstMacro (MovingPointSetDimension, unsigned int, TMovingPointSet::PointDimension)
virtual void SetFixedImageMask (const FixedImageMaskType *_arg)
virtual void SetFixedPointSet (const FixedPointSetType *_arg)
virtual void SetMovingImageMask (const MovingImageMaskType *_arg)
virtual void SetMovingPointSet (const MovingPointSetType *_arg)
virtual void SetTransform (TransformType *_arg)
void SetTransformParameters (const ParametersType &parameters) const
virtual void SetUseMetricSingleThreaded (bool _arg)
virtual void UseMetricSingleThreadedOff ()
virtual void UseMetricSingleThreadedOn ()
Public Member Functions inherited from elastix::MetricBase< TElastix >
void AfterEachIterationBase () override
void BeforeEachResolutionBase () override
void BeforeRegistrationBase () override
virtual ImageSamplerBaseTypeGetAdvancedMetricImageSampler () const
virtual bool GetAdvancedMetricUseImageSampler () const
ITKBaseTypeGetAsITKBaseType ()
const ITKBaseTypeGetAsITKBaseType () const
virtual MeasureType GetCurrentExactMetricValue () const
virtual bool GetShowExactMetricValue () const
 ITK_DISALLOW_COPY_AND_MOVE (MetricBase)
 itkOverrideGetNameOfClassMacro (MetricBase)
 itkStaticConstMacro (FixedImageDimension, unsigned int, FixedImageType::ImageDimension)
 itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension)
virtual void SetAdvancedMetricImageSampler (ImageSamplerBaseType *sampler)
Public Member Functions inherited from elastix::BaseComponentSE< TElastix >
void AddTargetCellToIterationInfo (const char *const name)
const ConfigurationGetConfiguration () const
ElastixTypeGetElastix () const
auto & GetIterationInfoAt (const char *const name)
itk::Statistics::MersenneTwisterRandomVariateGenerator & GetRandomVariateGenerator ()
RegistrationTypeGetRegistration () const
 ITK_DISALLOW_COPY_AND_MOVE (BaseComponentSE)
void RemoveTargetCellFromIterationInfo (const char *const name)
void SetConfiguration (const Configuration *_arg)
void SetElastix (ElastixType *_arg)
Public Member Functions inherited from elastix::BaseComponent
virtual void AfterEachIteration ()
virtual void AfterEachResolution ()
virtual void AfterEachResolutionBase ()
virtual void AfterRegistration ()
virtual void AfterRegistrationBase ()
virtual int BeforeAll ()
virtual int BeforeAllBase ()
virtual const char * elxGetClassName () const
const char * GetComponentLabel () const
 ITK_DISALLOW_COPY_AND_MOVE (BaseComponent)
 itkVirtualGetNameOfClassMacro (BaseComponent)
void SetComponentLabel (const char *label, unsigned int idx)

Static Public Member Functions

static Pointer New ()
Static Public Member Functions inherited from itk::StatisticalShapePointPenalty< TFixedPointSet, TMovingPointSet >
static Pointer New ()
Static Public Member Functions inherited from elastix::BaseComponent
template<typename TBaseComponent>
static auto AsITKBaseType (TBaseComponent *const baseComponent) -> decltype(baseComponent->GetAsITKBaseType())
static void InitializeElastixExecutable ()
static bool IsElastixLibrary ()

Protected Member Functions

 StatisticalShapePenalty ()=default
 ~StatisticalShapePenalty () override=default
Protected Member Functions inherited from itk::StatisticalShapePointPenalty< TFixedPointSet, TMovingPointSet >
void PrintSelf (std::ostream &os, Indent indent) const override
 StatisticalShapePointPenalty ()
 ~StatisticalShapePointPenalty () override
Protected Member Functions inherited from itk::SingleValuedPointSetToPointSetMetric< TFixedPointSet, TMovingPointSet >
const auto & GetFixedPoints () const
const auto & GetMovingPoints () const
void PrintSelf (std::ostream &os, Indent indent) const override
 SingleValuedPointSetToPointSetMetric ()=default
 ~SingleValuedPointSetToPointSetMetric () override=default
Protected Member Functions inherited from elastix::MetricBase< TElastix >
virtual MeasureType GetExactValue (const ParametersType &parameters)
 MetricBase ()=default
 ~MetricBase () override=default
Protected Member Functions inherited from elastix::BaseComponentSE< TElastix >
 BaseComponentSE ()=default
 ~BaseComponentSE () override=default
Protected Member Functions inherited from elastix::BaseComponent
 BaseComponent ()=default
virtual ~BaseComponent ()=default

Private Attributes

 elxOverrideGetSelfMacro

Additional Inherited Members

Protected Types inherited from elastix::MetricBase< TElastix >
using ExactMetricImageSamplerPointer = typename ExactMetricImageSamplerType::Pointer
using ExactMetricImageSamplerType = itk::ImageGridSampler<FixedImageType>
using ExactMetricSampleGridSpacingType = typename ExactMetricImageSamplerType::SampleGridSpacingType
using ParametersType = typename ITKBaseType::ParametersType
Protected Attributes inherited from itk::SingleValuedPointSetToPointSetMetric< TFixedPointSet, TMovingPointSet >
FixedImageMaskConstPointer m_FixedImageMask { nullptr }
FixedPointSetConstPointer m_FixedPointSet { nullptr }
MovingImageMaskConstPointer m_MovingImageMask { nullptr }
MovingPointSetConstPointer m_MovingPointSet { nullptr }
unsigned int m_NumberOfPointsCounted { 0 }
TransformPointer m_Transform { nullptr }
bool m_UseMetricSingleThreaded { true }
Protected Attributes inherited from elastix::MetricBase< TElastix >
MeasureType m_CurrentExactMetricValue { 0.0 }
unsigned int m_ExactMetricEachXNumberOfIterations { 1 }
ExactMetricSampleGridSpacingType m_ExactMetricSampleGridSpacing
ExactMetricImageSamplerPointer m_ExactMetricSampler { nullptr }
bool m_ShowExactMetricValue { false }
Protected Attributes inherited from elastix::BaseComponentSE< TElastix >
Configuration::ConstPointer m_Configuration {}
itk::WeakPointer< TElastix > m_Elastix {}
RegistrationTypem_Registration {}

Member Typedef Documentation

◆ CombinationTransformType

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::CombinationTransformType = itk::AdvancedCombinationTransform<CoordinateType, Self::FixedImageDimension>

Other typedef's.

Definition at line 117 of file elxStatisticalShapePenalty.h.

◆ ConstPointer

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::ConstPointer = SmartPointer<const Self>

Definition at line 72 of file elxStatisticalShapePenalty.h.

◆ CoordinateType

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::CoordinateType = typename OutputPointType::CoordinateType

Definition at line 108 of file elxStatisticalShapePenalty.h.

◆ FixedImageType

template<typename TElastix>
using elastix::MetricBase< TElastix >::FixedImageType

Other typedef's.

Definition at line 94 of file elxMetricBase.h.

◆ ImageType

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::ImageType = FixedImageType

Definition at line 137 of file elxStatisticalShapePenalty.h.

◆ InitialTransformType

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::InitialTransformType = typename CombinationTransformType::InitialTransformType

Definition at line 118 of file elxStatisticalShapePenalty.h.

◆ ITKBaseType

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::ITKBaseType = typename Superclass2::ITKBaseType

Definition at line 123 of file elxStatisticalShapePenalty.h.

◆ MovingImageType

template<typename TElastix>
using elastix::MetricBase< TElastix >::MovingImageType

Definition at line 97 of file elxMetricBase.h.

◆ Pointer

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::Pointer = SmartPointer<Self>

Definition at line 71 of file elxStatisticalShapePenalty.h.

◆ PointSetType

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::PointSetType = FixedPointSetType

Assuming fixed and moving pointsets are of equal type, which implicitly assumes that the fixed and moving image are of the same type.

Definition at line 136 of file elxStatisticalShapePenalty.h.

◆ Self

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::Self = StatisticalShapePenalty

Standard ITK-stuff.

Definition at line 67 of file elxStatisticalShapePenalty.h.

◆ Superclass1

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::Superclass1
Initial value:
itk::PointSet< CoordinateRepresentationType, MovingImageDimension, itk::DefaultStaticMeshTraits< CoordinateRepresentationType, MovingImageDimension, MovingImageDimension, CoordinateRepresentationType, CoordinateRepresentationType, CoordinateRepresentationType > > MovingPointSetType

Definition at line 68 of file elxStatisticalShapePenalty.h.

◆ Superclass2

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::Superclass2 = MetricBase<TElastix>

Definition at line 70 of file elxStatisticalShapePenalty.h.

◆ VnlVectorType

template<typename TElastix>
using elastix::StatisticalShapePenalty< TElastix >::VnlVectorType = vnl_vector<CoordinateType>

Definition at line 109 of file elxStatisticalShapePenalty.h.

Constructor & Destructor Documentation

◆ StatisticalShapePenalty()

template<typename TElastix>
elastix::StatisticalShapePenalty< TElastix >::StatisticalShapePenalty ( )
protecteddefault

The constructor.

◆ ~StatisticalShapePenalty()

template<typename TElastix>
elastix::StatisticalShapePenalty< TElastix >::~StatisticalShapePenalty ( )
overrideprotecteddefault

The destructor.

Member Function Documentation

◆ BeforeEachResolution()

template<typename TElastix>
void elastix::StatisticalShapePenalty< TElastix >::BeforeEachResolution ( )
overridevirtual

Reimplemented from elastix::BaseComponent.

◆ BeforeRegistration()

template<typename TElastix>
void elastix::StatisticalShapePenalty< TElastix >::BeforeRegistration ( )
overridevirtual

Do some things before registration:

  • Load and set the pointsets.

Reimplemented from elastix::BaseComponent.

◆ elxClassNameMacro()

template<typename TElastix>
elastix::StatisticalShapePenalty< TElastix >::elxClassNameMacro ( "StatisticalShapePenalty< TElastix >" )

Name of this class. Use this name in the parameter file to select this specific metric.
example: (Metric "StatisticalShapePenalty")

◆ Initialize()

template<typename TElastix>
void elastix::StatisticalShapePenalty< TElastix >::Initialize ( )
overridevirtual

Sets up a timer to measure the initialization time and calls the Superclass' implementation.

Reimplemented from itk::SingleValuedPointSetToPointSetMetric< TFixedPointSet, TMovingPointSet >.

◆ ITK_DISALLOW_COPY_AND_MOVE()

template<typename TElastix>
elastix::StatisticalShapePenalty< TElastix >::ITK_DISALLOW_COPY_AND_MOVE ( StatisticalShapePenalty< TElastix > )

◆ itkOverrideGetNameOfClassMacro()

template<typename TElastix>
elastix::StatisticalShapePenalty< TElastix >::itkOverrideGetNameOfClassMacro ( StatisticalShapePenalty< TElastix > )

Run-time type information (and related methods).

◆ itkStaticConstMacro() [1/2]

template<typename TElastix>
elastix::StatisticalShapePenalty< TElastix >::itkStaticConstMacro ( FixedImageDimension ,
unsigned int ,
FixedImageType::ImageDimension  )

The fixed image dimension.

◆ itkStaticConstMacro() [2/2]

template<typename TElastix>
elastix::StatisticalShapePenalty< TElastix >::itkStaticConstMacro ( MovingImageDimension ,
unsigned int ,
MovingImageType::ImageDimension  )

The moving image dimension.

◆ New()

template<typename TElastix>
Pointer elastix::StatisticalShapePenalty< TElastix >::New ( )
static

Method for creation through the object factory.

◆ ReadShape()

template<typename TElastix>
unsigned int elastix::StatisticalShapePenalty< TElastix >::ReadShape ( const std::string & ShapeFileName,
typename PointSetType::Pointer & pointSet )

◆ SelectNewSamples()

template<typename TElastix>
void elastix::StatisticalShapePenalty< TElastix >::SelectNewSamples ( )
inlineoverridevirtual

Overwrite to silence warning.

Reimplemented from elastix::MetricBase< TElastix >.

Definition at line 160 of file elxStatisticalShapePenalty.h.

Member Data Documentation

◆ elxOverrideGetSelfMacro

template<typename TElastix>
elastix::StatisticalShapePenalty< TElastix >::elxOverrideGetSelfMacro
private

Definition at line 170 of file elxStatisticalShapePenalty.h.



Generated on 26-02-2026 for elastix by doxygen 1.16.1 (669aeeefca743c148e2d935b3d3c69535c7491e6) elastix logo