template<class TElastix>
class elastix::PCAMetric< TElastix >
- This metric is based on the AdvancedImageToImageMetric. It is templated over the type of the fixed and moving images to be compared.
This metric computes the sum of variances over the slowest varying dimension in the moving image. The spatial positions of the moving image are established through a Transform. Pixel values are taken from the Moving image.
This implementation is based on the AdvancedImageToImageMetric, which means that:
- It uses the ImageSampler-framework
- It makes use of the compact support of B-splines, in case of B-spline transforms.
- Image derivatives are computed using either the B-spline interpolator's implementation or by nearest neighbor interpolation of a precomputed central difference image.
- A minimum number of samples that should map within the moving image (mask) can be specified.
- Parameters
SampleLastDimensionRandomly: randomly sample a number of time points to to compute the variance from. When set to "false", all time points are taken into account. When set to "true", a random number of time points is selected, which can be set with parameter NumSamplesLastDimension.
NumSamplesLastDimension: the number of random samples to take in the time time direction of the data when SampleLastDimensionRandomly is set to true.
UseZeroAverageDisplacementConstraint: uses the zero average displacement constraint, as described in Nonrigid registration of dynamic medical imaging data using nD+t B-splines and a groupwise optimization approach, Metz et al., Medical Image Analysis, 2011. Subtract the over time computed mean parameter value from each parameter. This should be used when registration is performed directly on the moving image, without using a fixed image. Possible values are "true" or "false". Default is "true".
NumEigenValues: number of eigenvalues used in the metric: sum(e) - e, where sum(e) is the sum of all eigenvalues and e is the sum of the first highest NumEigenValues eigenvalues.
Definition at line 65 of file elxPCAMetric.h.
|
using | BSplineTransformBaseType = itk::AdvancedBSplineDeformableTransformBase<ScalarType, FixedImageDimension> |
|
using | CombinationTransformType = itk::AdvancedCombinationTransform<ScalarType, FixedImageDimension> |
|
using | ConstPointer = itk::SmartPointer<const Self> |
|
using | FixedImageSizeType |
|
using | ITKBaseType = typename Superclass2::ITKBaseType |
|
using | Pointer = itk::SmartPointer<Self> |
|
using | ReducedDimensionBSplineTransformBaseType |
|
using | Self = PCAMetric |
|
using | StackTransformType = itk::StackTransform<ScalarType, FixedImageDimension, MovingImageDimension> |
|
using | Superclass1 |
|
using | Superclass2 = MetricBase<TElastix> |
|
using | ConstPointer = SmartPointer<const Self> |
|
using | DerivativeMatrixType = vnl_matrix<DerivativeValueType> |
|
using | DerivativeValueType |
|
using | FixedImageLimiterOutputType |
|
using | FixedImageLimiterType |
|
using | FixedImageMaskPointer |
|
using | FixedImageMaskType |
|
using | FixedImagePixelType |
|
using | FixedImageSizeType = typename FixedImageRegionType::SizeType |
|
using | ImageSampleContainerPointer |
|
using | ImageSampleContainerType |
|
using | ImageSamplerPointer |
|
using | ImageSamplerType |
|
using | MatrixType = vnl_matrix<RealType> |
|
using | MovingImageDerivativeScalesType |
|
using | MovingImageLimiterOutputType |
|
using | MovingImageLimiterType |
|
using | MovingImageMaskPointer |
|
using | MovingImageMaskType |
|
using | MovingImageRegionType |
|
using | Pointer = SmartPointer<Self> |
|
using | Self = PCAMetric |
|
using | Superclass = AdvancedImageToImageMetric<TFixedImage, TMovingImage> |
|
using | ThreadInfoType |
|
using | AdvancedTransformType = AdvancedTransform<ScalarType, FixedImageDimension, MovingImageDimension> |
|
using | BSplineOrder1TransformPointer = typename BSplineOrder1TransformType::Pointer |
|
using | BSplineOrder1TransformType = AdvancedBSplineDeformableTransform<ScalarType, FixedImageDimension, 1> |
|
using | BSplineOrder2TransformPointer = typename BSplineOrder2TransformType::Pointer |
|
using | BSplineOrder2TransformType = AdvancedBSplineDeformableTransform<ScalarType, FixedImageDimension, 2> |
|
using | BSplineOrder3TransformPointer = typename BSplineOrder3TransformType::Pointer |
|
using | BSplineOrder3TransformType = AdvancedBSplineDeformableTransform<ScalarType, FixedImageDimension, 3> |
|
using | CombinationTransformType = AdvancedCombinationTransform<ScalarType, FixedImageDimension> |
|
using | ConstPointer = SmartPointer<const Self> |
|
using | DerivativeValueType = typename DerivativeType::ValueType |
|
using | FixedImageLimiterOutputType = typename FixedImageLimiterType::OutputType |
|
using | FixedImageLimiterPointer = typename FixedImageLimiterType::Pointer |
|
using | FixedImageLimiterType = LimiterFunctionBase<RealType, FixedImageDimension> |
|
using | FixedImageMaskConstPointer = SmartPointer<const FixedImageMaskType> |
|
using | FixedImageMaskPointer = SmartPointer<FixedImageMaskType> |
|
using | FixedImageMaskType = ImageMaskSpatialObject<Self::FixedImageDimension> |
|
using | FixedImagePixelType = typename FixedImageType::PixelType |
|
using | FixedImagePointer = typename FixedImageType::Pointer |
|
using | ImageSampleContainerPointer = typename ImageSamplerType::OutputVectorContainerPointer |
|
using | ImageSampleContainerType = typename ImageSamplerType::OutputVectorContainerType |
|
using | ImageSamplerPointer = typename ImageSamplerType::Pointer |
|
using | ImageSamplerType = ImageSamplerBase<FixedImageType> |
|
using | MovingImageDerivativeScalesType = FixedArray<double, Self::MovingImageDimension> |
|
using | MovingImageLimiterOutputType = typename MovingImageLimiterType::OutputType |
|
using | MovingImageLimiterPointer = typename MovingImageLimiterType::Pointer |
|
using | MovingImageLimiterType = LimiterFunctionBase<RealType, MovingImageDimension> |
|
using | MovingImageMaskConstPointer = SmartPointer<const MovingImageMaskType> |
|
using | MovingImageMaskPointer = SmartPointer<MovingImageMaskType> |
|
using | MovingImageMaskType = ImageMaskSpatialObject<Self::MovingImageDimension> |
|
using | MovingImagePointer = typename MovingImageType::Pointer |
|
using | MovingImageRegionType = typename MovingImageType::RegionType |
|
using | NumberOfParametersType = typename AdvancedTransformType::NumberOfParametersType |
|
using | Pointer = SmartPointer<Self> |
|
using | ScalarType = typename TransformType::ScalarType |
|
using | Self = AdvancedImageToImageMetric |
|
using | Superclass = ImageToImageMetric<TFixedImage, TMovingImage> |
|
using | ThreadInfoType = MultiThreaderBase::WorkUnitInfo |
|
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> |
|
using | ElastixType = TElastix |
|
using | RegistrationType = typename ElastixType::RegistrationBaseType |
|
using | Self = BaseComponentSE |
|
using | Superclass = BaseComponent |
|
|
void | BeforeEachResolution () override |
|
void | BeforeRegistration () override |
|
| elxClassNameMacro ("PCAMetric") |
|
virtual const char * | GetClassName () const |
|
void | Initialize () override |
|
| ITK_DISALLOW_COPY_AND_MOVE (PCAMetric) |
|
| itkStaticConstMacro (FixedImageDimension, unsigned int, FixedImageType::ImageDimension) |
|
| itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension) |
|
void | GetDerivative (const TransformParametersType ¶meters, DerivativeType &derivative) const override |
|
MeasureType | GetValue (const TransformParametersType ¶meters) const override |
|
void | GetValueAndDerivative (const TransformParametersType ¶meters, MeasureType &Value, DerivativeType &Derivative) const override |
|
void | GetValueAndDerivativeSingleThreaded (const TransformParametersType ¶meters, MeasureType &Value, DerivativeType &Derivative) const |
|
void | Initialize () override |
|
| ITK_DISALLOW_COPY_AND_MOVE (PCAMetric) |
|
| itkStaticConstMacro (FixedImageDimension, unsigned int, FixedImageType::ImageDimension) |
|
| itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension) |
|
virtual void | SetGridSize (FixedImageSizeType _arg) |
|
virtual void | SetNumEigenValues (unsigned int _arg) |
|
virtual void | SetTransformIsStackTransform (bool _arg) |
|
virtual void | SetUseZeroAverageDisplacementConstraint (bool _arg) |
|
virtual void | BeforeThreadedGetValueAndDerivative (const TransformParametersType ¶meters) const |
|
virtual const FixedImageLimiterType * | GetFixedImageLimiter () |
|
const FixedImageMaskType * | GetFixedImageMask () const override |
|
virtual double | GetFixedLimitRangeRatio () const |
|
ImageSamplerType * | GetImageSampler () const |
|
virtual const MovingImageDerivativeScalesType & | GetMovingImageDerivativeScales () |
|
virtual const MovingImageLimiterType * | GetMovingImageLimiter () |
|
const MovingImageMaskType * | GetMovingImageMask () const override |
|
virtual double | GetMovingLimitRangeRatio () const |
|
virtual double | GetRequiredRatioOfValidSamples () const |
|
virtual bool | GetScaleGradientWithRespectToMovingImageOrientation () const |
|
const AdvancedTransformType * | GetTransform () const override |
|
AdvancedTransformType * | GetTransform () override |
|
virtual bool | GetUseFixedImageLimiter () const |
|
virtual bool | GetUseImageSampler () const |
|
virtual const bool & | GetUseMetricSingleThreaded () |
|
virtual bool | GetUseMovingImageDerivativeScales () const |
|
virtual bool | GetUseMovingImageLimiter () const |
|
virtual const bool & | GetUseMultiThread () |
|
void | Initialize () override |
|
| ITK_DISALLOW_COPY_AND_MOVE (AdvancedImageToImageMetric) |
|
| itkStaticConstMacro (FixedImageDimension, unsigned int, TFixedImage::ImageDimension) |
|
| itkStaticConstMacro (MovingImageDimension, unsigned int, TMovingImage::ImageDimension) |
|
virtual void | SetFixedImageLimiter (FixedImageLimiterType *_arg) |
|
virtual void | SetFixedImageMask (const FixedImageMaskType *const arg) |
|
virtual void | SetFixedLimitRangeRatio (double _arg) |
|
virtual void | SetImageSampler (ImageSamplerType *_arg) |
|
virtual void | SetMovingImageDerivativeScales (MovingImageDerivativeScalesType _arg) |
|
virtual void | SetMovingImageLimiter (MovingImageLimiterType *_arg) |
|
virtual void | SetMovingImageMask (const MovingImageMaskType *const arg) |
|
virtual void | SetMovingLimitRangeRatio (double _arg) |
|
virtual void | SetRequiredRatioOfValidSamples (double _arg) |
|
virtual void | SetScaleGradientWithRespectToMovingImageOrientation (bool _arg) |
|
virtual void | SetTransform (AdvancedTransformType *arg) |
|
virtual void | SetUseMetricSingleThreaded (bool _arg) |
|
virtual void | SetUseMovingImageDerivativeScales (bool _arg) |
|
virtual void | SetUseMultiThread (bool _arg) |
|
virtual void | UseMetricSingleThreadedOff () |
|
virtual void | UseMetricSingleThreadedOn () |
|
virtual void | UseMultiThreadOff () |
|
virtual void | UseMultiThreadOn () |
|
void | AfterEachIterationBase () override |
|
void | BeforeEachResolutionBase () override |
|
virtual ImageSamplerBaseType * | GetAdvancedMetricImageSampler () const |
|
virtual bool | GetAdvancedMetricUseImageSampler () const |
|
ITKBaseType * | GetAsITKBaseType () |
|
const ITKBaseType * | GetAsITKBaseType () const |
|
virtual MeasureType | GetCurrentExactMetricValue () const |
|
virtual bool | GetShowExactMetricValue () const |
|
| ITK_DISALLOW_COPY_AND_MOVE (MetricBase) |
|
| itkStaticConstMacro (FixedImageDimension, unsigned int, FixedImageType::ImageDimension) |
|
| itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension) |
|
virtual void | SelectNewSamples () |
|
virtual void | SetAdvancedMetricImageSampler (ImageSamplerBaseType *sampler) |
|
void | AddTargetCellToIterationInfo (const char *const name) |
|
const Configuration * | GetConfiguration () const |
|
ElastixType * | GetElastix () const |
|
auto & | GetIterationInfoAt (const char *const name) |
|
RegistrationType * | GetRegistration () const |
|
| ITK_DISALLOW_COPY_AND_MOVE (BaseComponentSE) |
|
void | RemoveTargetCellFromIterationInfo (const char *const name) |
|
void | SetConfiguration (const Configuration *_arg) |
|
void | SetElastix (ElastixType *_arg) |
|
virtual void | AfterEachIteration () |
|
virtual void | AfterEachResolution () |
|
virtual void | AfterEachResolutionBase () |
|
virtual void | AfterRegistration () |
|
virtual void | AfterRegistrationBase () |
|
virtual int | BeforeAll () |
|
virtual int | BeforeAllBase () |
|
virtual void | BeforeRegistrationBase () |
|
virtual const char * | elxGetClassName () const |
|
const char * | GetComponentLabel () const |
|
| ITK_DISALLOW_COPY_AND_MOVE (BaseComponent) |
|
| itkTypeMacroNoParent (BaseComponent) |
|
void | SetComponentLabel (const char *label, unsigned int idx) |
|
|
| PCAMetric ()=default |
|
| ~PCAMetric () override=default |
|
void | AfterThreadedComputeDerivative (DerivativeType &derivative) const |
|
void | AfterThreadedGetSamples (MeasureType &value) const |
|
void | EvaluateTransformJacobianInnerProduct (const TransformJacobianType &jacobian, const MovingImageDerivativeType &movingImageDerivative, DerivativeType &imageJacobian) const override |
|
void | InitializeThreadingParameters () const override |
|
void | LaunchComputeDerivativeThreaderCallback () const |
|
void | LaunchGetSamplesThreaderCallback () const |
|
| PCAMetric () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
void | ThreadedComputeDerivative (ThreadIdType threadID) |
|
void | ThreadedGetSamples (ThreadIdType threadID) |
|
| ~PCAMetric () override=default |
|
| AdvancedImageToImageMetric () |
|
virtual void | AfterThreadedGetValue (MeasureType &) const |
|
virtual void | AfterThreadedGetValueAndDerivative (MeasureType &, DerivativeType &) const |
|
void | CheckForAdvancedTransform () |
|
void | CheckForBSplineInterpolator () |
|
void | CheckForBSplineTransform () const |
|
void | CheckNumberOfSamples (unsigned long wanted, unsigned long found) const |
|
virtual bool | EvaluateMovingImageValueAndDerivative (const MovingImagePointType &mappedPoint, RealType &movingImageValue, MovingImageDerivativeType *gradient) const |
|
bool | EvaluateTransformJacobian (const FixedImagePointType &fixedImagePoint, TransformJacobianType &jacobian, NonZeroJacobianIndicesType &nzji) const |
|
bool | FastEvaluateMovingImageValueAndDerivative (const MovingImagePointType &mappedPoint, RealType &movingImageValue, MovingImageDerivativeType *gradient, const ThreadIdType threadId) const |
|
virtual void | InitializeImageSampler () |
|
void | InitializeLimiters () |
|
virtual bool | IsInsideMovingMask (const MovingImagePointType &point) const |
|
| itkAlignedTypedef (ITK_CACHE_LINE_ALIGNMENT, PaddedGetValueAndDerivativePerThreadStruct, AlignedGetValueAndDerivativePerThreadStruct) |
|
| itkPadStruct (ITK_CACHE_LINE_ALIGNMENT, GetValueAndDerivativePerThreadStruct, PaddedGetValueAndDerivativePerThreadStruct) |
|
void | LaunchGetValueAndDerivativeThreaderCallback () const |
|
void | LaunchGetValueThreaderCallback () const |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
void | SetFixedImageMask (const typename Superclass::FixedImageMaskType *) final |
|
void | SetFixedImageMask (typename Superclass::FixedImageMaskType *) final |
|
void | SetMovingImageMask (const typename Superclass::MovingImageMaskType *) final |
|
void | SetMovingImageMask (typename Superclass::MovingImageMaskType *) final |
|
virtual void | SetUseFixedImageLimiter (bool _arg) |
|
virtual void | SetUseImageSampler (bool _arg) |
|
virtual void | SetUseMovingImageLimiter (bool _arg) |
|
virtual void | ThreadedGetValue (ThreadIdType) const |
|
virtual void | ThreadedGetValueAndDerivative (ThreadIdType) const |
|
MovingImagePointType | TransformPoint (const FixedImagePointType &fixedImagePoint) const |
|
| ~AdvancedImageToImageMetric () override=default |
|
virtual MeasureType | GetExactValue (const ParametersType ¶meters) |
|
| MetricBase ()=default |
|
| ~MetricBase () override=default |
|
| BaseComponentSE ()=default |
|
| ~BaseComponentSE () override=default |
|
| BaseComponent ()=default |
|
virtual | ~BaseComponent ()=default |
|