Loading...
Searching...
No Matches
elastix::MultiInputRandomCoordinateSampler< TElastix > Class Template Reference
Components » ImageSamplers

`#include <elxMultiInputRandomCoordinateSampler.h>`

## Detailed Description

template<class TElastix>
class elastix::MultiInputRandomCoordinateSampler< TElastix >

An interpolator based on the itk::MultiInputImageRandomCoordinateSampler.

This image sampler randomly samples 'NumberOfSamples' coordinates in the InputImageRegion. If a mask is given, the sampler tries to find samples within the mask. If the mask is very sparse, this may take some time. The MultiInputRandomCoordinate sampler samples not only positions that correspond to voxels, but also positions between voxels. An interpolator for the fixed image is thus required. A B-spline interpolator is used, the order of which can be specified by the user. Typically, the MultiInputRandomCoordinate gives a smoother cost function, because the so-called 'grid-effect' is avoided.

Compared to the elx::RandomCoordinateSampler this sampler takes into account the image regions and masks of multiple input images. Thus, only samples are selected that lie within all input images. This is useful when using the MultiResolutionRegistrationWithFeatures.

This sampler is suitable to used in combination with the NewSamplesEveryIteration parameter (defined in the elx::OptimizerBase).

The parameters used in this class are:

Parameters

  ImageSampler: Select this image sampler as follows:
  (ImageSampler "MultiInputRandomCoordinate")

  NumberOfSpatialSamples: The number of image voxels used for computing the metric value and its derivative in each iteration. Must be given for each resolution.
  example: (NumberOfSpatialSamples 2048 2048 4000)
  The default is 5000.

  UseRandomSampleRegion: Defines whether to randomly select a subregion of the image in each iteration. When set to "true", also specify the SampleRegionSize. By setting this option to "true", in combination with the NewSamplesEveryIteration parameter, a "localised" similarity measure is obtained. This can give better performance in case of the presence of large inhomogeneities in the image, for example.
  example: (UseRandomSampleRegion "true")
  Default: false.

  SampleRegionSize: the size of the subregions that are selected when using the UseRandomSampleRegion option. The size should be specified in mm, for each dimension. As a rule of thumb, you may try a value ~1/3 of the image size.
  example: (SampleRegionSize 50.0 50.0 50.0)
  You can also specify one number, which will be used for all dimensions. Also, you can specify different values for each resolution:
  example: (SampleRegionSize 50.0 50.0 50.0 30.0 30.0 30.0)
  In this example, in the first resolution 50mm is used for each of the 3 dimensions, and in the second resolution 30mm.
  Default: sampleRegionSize[i] = min ( fixedImageSize[i], max_i ( fixedImageSize[i]/3 ) ), with fixedImageSize in mm. So, approximately 1/3 of the fixed image size.

  FixedImageBSplineInterpolationOrder: When using a MultiInputRandomCoordinate sampler, the fixed image needs to be interpolated. This is done using a B-spline interpolator. With this option you can specify the order of interpolation.
  example: (FixedImageBSplineInterpolationOrder 0 0 1)
  Default value: 1. The parameter can be specified for each resolution.

See also
  MultiResolutionRegistrationWithFeatures

Definition at line 84 of file elxMultiInputRandomCoordinateSampler.h.

Inheritance diagram for elastix::MultiInputRandomCoordinateSampler< TElastix >:
[legend]

## Public Types

using | ConstPointer = itk::SmartPointer<const Self>
using | ITKBaseType = typename Superclass2::ITKBaseType
using | Pointer = itk::SmartPointer<Self>
using | Self = MultiInputRandomCoordinateSampler
using | Superclass1
using | Superclass2 = elx::ImageSamplerBase<TElastix>
Public Types inherited from itk::MultiInputImageRandomCoordinateSampler< TInputImage >
using | ConstPointer = SmartPointer<const Self>
using | CoordRepType = double
using | DefaultInterpolatorType = BSplineInterpolateImageFunction<InputImageType, CoordRepType, double>
using | ImageSampleContainerType
using | ImageSampleType
using | InputImageConstPointer
using | InputImagePixelType
using | InputImagePointer
using | InputImageRegionType
using | InputImageSpacingType = typename InputImageType::SpacingType
using | InputImageType
using | InterpolatorPointer = typename InterpolatorType::Pointer
using | InterpolatorType = InterpolateImageFunction<InputImageType, CoordRepType>
using | MaskType
using | Pointer = SmartPointer<Self>
using | RandomGeneratorPointer = typename RandomGeneratorType::Pointer
using | RandomGeneratorType = itk::Statistics::MersenneTwisterRandomVariateGenerator
using | Self = MultiInputImageRandomCoordinateSampler
using | Superclass = ImageRandomSamplerBase<TInputImage>
Public Types inherited from itk::ImageRandomSamplerBase< TInputImage >
using | ConstPointer = SmartPointer<const Self>
using | ImageSampleContainerPointer
using | ImageSampleContainerType
using | ImageSampleType
using | InputImageConstPointer
using | InputImagePixelType
using | InputImagePointer
using | InputImageRegionType
using | InputImageType
using | MaskType
using | Pointer = SmartPointer<Self>
using | SeedIntegerType = Statistics::MersenneTwisterRandomVariateGenerator::IntegerType
using | Self = ImageRandomSamplerBase
using | Superclass = ImageSamplerBase<TInputImage>
Public Types inherited from itk::ImageSamplerBase< TInputImage >
using | ConstPointer = SmartPointer<const Self>
using | ImageSampleContainerPointer = typename ImageSampleContainerType::Pointer
using | ImageSampleContainerType = VectorDataContainer<std::vcl_size_t, ImageSampleType>
using | ImageSampleType = ImageSample<InputImageType>
using | ImageSampleValueType = typename ImageSampleType::RealType
using | InputImageConstPointer = typename InputImageType::ConstPointer
using | InputImageIndexType = typename InputImageType::IndexType
using | InputImagePixelType = typename InputImageType::PixelType
using | InputImagePointer = typename InputImageType::Pointer
using | InputImagePointType = typename InputImageType::PointType
using | InputImagePointValueType = typename InputImagePointType::ValueType
using | InputImageRegionType = typename InputImageType::RegionType
using | InputImageRegionVectorType = std::vector<InputImageRegionType>
using | InputImageSizeType = typename InputImageType::SizeType
using | InputImageType = TInputImage
using | MaskConstPointer = typename MaskType::ConstPointer
using | MaskPointer = typename MaskType::Pointer
using | MaskType = ImageMaskSpatialObject<Self::InputImageDimension>
using | MaskVectorType = std::vector<MaskConstPointer>
using | OutputVectorContainerPointer
using | OutputVectorContainerType
using | Pointer = SmartPointer<Self>
using | Self = ImageSamplerBase
using | Superclass = VectorContainerSource<VectorDataContainer<std::vcl_size_t, ImageSample<TInputImage>>>
Public Types inherited from itk::VectorContainerSource< VectorDataContainer< std::vcl_size_t, ImageSample< TInputImage > > >
using | ConstPointer
using | OutputVectorContainerPointer
using | OutputVectorContainerType
using | Pointer
using | Self
using | Superclass
Public Types inherited from itk::ImageSamplerBase< TElastix >
using | ConstPointer
using | ImageSampleContainerPointer
using | ImageSampleContainerType
using | ImageSampleType
using | ImageSampleValueType
using | InputImageConstPointer
using | InputImageIndexType
using | InputImagePixelType
using | InputImagePointer
using | InputImagePointType
using | InputImagePointValueType
using | InputImageRegionType
using | InputImageRegionVectorType
using | InputImageSizeType
using | InputImageType
using | MaskConstPointer
using | MaskPointer
using | MaskType
using | MaskVectorType
typedef typename OutputVectorContainerType::Pointer | OutputVectorContainerPointer
typedef VectorDataContainer< std::vcl_size_t, ImageSample< TElastix > > | OutputVectorContainerType
using | Pointer
using | Self
using | Superclass
Public Types inherited from itk::VectorContainerSource< TOutputVectorContainer >
using | ConstPointer = SmartPointer<const Self>
using | OutputVectorContainerPointer = typename OutputVectorContainerType::Pointer
using | OutputVectorContainerType = TOutputVectorContainer
using | Pointer = SmartPointer<Self>
using | Self = VectorContainerSource
using | Superclass = ProcessObject

## Public Member Functions

void | BeforeEachResolution () override
| elxClassNameMacro ("MultiInputRandomCoordinate")
virtual const char * | GetClassName () const
| ITK_DISALLOW_COPY_AND_MOVE (MultiInputRandomCoordinateSampler)
| itkStaticConstMacro (InputImageDimension, unsigned int, Superclass1::InputImageDimension)
Public Member Functions inherited from itk::MultiInputImageRandomCoordinateSampler< TInputImage >
virtual const InputImageSpacingType & | GetSampleRegionSize ()
virtual bool | GetUseRandomSampleRegion () const
| ITK_DISALLOW_COPY_AND_MOVE (MultiInputImageRandomCoordinateSampler)
| itkGetModifiableObjectMacro (Interpolator, InterpolatorType)
| itkStaticConstMacro (InputImageDimension, unsigned int, Superclass::InputImageDimension)
virtual void | SetInterpolator (InterpolatorType *_arg)
virtual void | SetSampleRegionSize (InputImageSpacingType _arg)
virtual void | SetUseRandomSampleRegion (bool _arg)
Public Member Functions inherited from itk::ImageRandomSamplerBase< TInputImage >
std::optional< SeedIntegerType > | GetOptionalSeed () const
| ITK_DISALLOW_COPY_AND_MOVE (ImageRandomSamplerBase)
| itkStaticConstMacro (InputImageDimension, unsigned int, Superclass::InputImageDimension)
void | SetOptionalSeed (const std::optional< SeedIntegerType > arg)
void | SetSeed (const SeedIntegerType arg)
Public Member Functions inherited from itk::ImageSamplerBase< TInputImage >
virtual const InputImageRegionType & | GetCroppedInputImageRegion ()
const InputImageType * | GetInput ()
const InputImageType * | GetInput (unsigned int idx)
virtual const InputImageRegionType & | GetInputImageRegion () const
virtual const InputImageRegionType & | GetInputImageRegion (unsigned int pos) const
virtual const MaskType * | GetMask () const
virtual const MaskType * | GetMask (unsigned int pos) const
virtual unsigned int | GetNumberOfInputImageRegions () const
virtual unsigned int | GetNumberOfMasks () const
virtual unsigned long | GetNumberOfSamples () const
OutputVectorContainerType * | GetOutput ()
| ITK_DISALLOW_COPY_AND_MOVE (ImageSamplerBase)
| itkStaticConstMacro (InputImageDimension, unsigned int, InputImageType::ImageDimension)
DataObject::Pointer | MakeOutput (ProcessObject::DataObjectPointerArraySizeType idx) override
virtual bool | SelectingNewSamplesOnUpdateSupported () const
virtual bool | SelectNewSamplesOnUpdate ()
void | SetInput (const InputImageType *input)
void | SetInput (unsigned int idx, const InputImageType *input)
virtual void | SetInputImageRegion (const InputImageRegionType _arg)
virtual void | SetInputImageRegion (const InputImageRegionType _arg, unsigned int pos)
virtual void | SetMask (const MaskType *_arg)
virtual void | SetMask (const MaskType *_arg, unsigned int pos)
virtual void | SetNumberOfInputImageRegions (const unsigned int _arg)
virtual void | SetNumberOfMasks (const unsigned int _arg)
virtual void | SetNumberOfSamples (unsigned long _arg)
virtual void | SetUseMultiThread (bool _arg)
Public Member Functions inherited from itk::VectorContainerSource< VectorDataContainer< std::vcl_size_t, ImageSample< TInputImage > > >
OutputVectorContainerType * | GetOutput ()
OutputVectorContainerType * | GetOutput (unsigned int idx)
virtual void | GraftNthOutput (unsigned int idx, DataObject *output)
virtual void | GraftOutput (DataObject *output)
| ITK_DISALLOW_COPY_AND_MOVE (VectorContainerSource)
DataObjectPointer | MakeOutput (ProcessObject::DataObjectPointerArraySizeType idx) override
Public Member Functions inherited from itk::ImageSamplerBase< TElastix >
virtual const InputImageRegionType & | GetCroppedInputImageRegion ()
const InputImageType * | GetInput ()
const InputImageType * | GetInput (unsigned int idx)
virtual const InputImageRegionType & | GetInputImageRegion () const
virtual const InputImageRegionType & | GetInputImageRegion (unsigned int pos) const
virtual const MaskType * | GetMask () const
virtual const MaskType * | GetMask (unsigned int pos) const
virtual unsigned int | GetNumberOfInputImageRegions () const
virtual unsigned int | GetNumberOfMasks () const
virtual unsigned long | GetNumberOfSamples () const
OutputVectorContainerType * | GetOutput ()
| ITK_DISALLOW_COPY_AND_MOVE (ImageSamplerBase)
| itkStaticConstMacro (InputImageDimension, unsigned int, InputImageType::ImageDimension)
DataObject::Pointer | MakeOutput (ProcessObject::DataObjectPointerArraySizeType idx) override
virtual bool | SelectingNewSamplesOnUpdateSupported () const
virtual bool | SelectNewSamplesOnUpdate ()
void | SetInput (const InputImageType *input)
void | SetInput (unsigned int idx, const InputImageType *input)
virtual void | SetInputImageRegion (const InputImageRegionType _arg)
virtual void | SetInputImageRegion (const InputImageRegionType _arg, unsigned int pos)
virtual void | SetMask (const MaskType *_arg)
virtual void | SetMask (const MaskType *_arg, unsigned int pos)
virtual void | SetNumberOfInputImageRegions (const unsigned int _arg)
virtual void | SetNumberOfMasks (const unsigned int _arg)
virtual void | SetNumberOfSamples (unsigned long _arg)
virtual void | SetUseMultiThread (bool _arg)
Public Member Functions inherited from itk::VectorContainerSource< TOutputVectorContainer >
OutputVectorContainerType * | GetOutput ()
OutputVectorContainerType * | GetOutput (unsigned int idx)
virtual void | GraftNthOutput (unsigned int idx, DataObject *output)
virtual void | GraftOutput (DataObject *output)
| ITK_DISALLOW_COPY_AND_MOVE (VectorContainerSource)
DataObjectPointer | MakeOutput (ProcessObject::DataObjectPointerArraySizeType idx) override

## Static Public Member Functions

static Pointer | New ()
Static Public Member Functions inherited from itk::MultiInputImageRandomCoordinateSampler< TInputImage >
static Pointer | New ()
Static Public Member Functions inherited from itk::ImageRandomSamplerBase< TInputImage >
static Pointer | New ()
Static Public Member Functions inherited from itk::ImageSamplerBase< TInputImage >
static Pointer | New ()
Static Public Member Functions inherited from itk::VectorContainerSource< VectorDataContainer< std::vcl_size_t, ImageSample< TInputImage > > >
static Pointer | New ()
Static Public Member Functions inherited from itk::ImageSamplerBase< TElastix >
static Pointer | New ()
Static Public Member Functions inherited from itk::VectorContainerSource< TOutputVectorContainer >
static Pointer | New ()

## Protected Member Functions

| MultiInputRandomCoordinateSampler ()=default
| ~MultiInputRandomCoordinateSampler () override=default
Protected Member Functions inherited from itk::MultiInputImageRandomCoordinateSampler< TInputImage >
void | GenerateData () override
virtual void | GenerateRandomCoordinate (const InputImageContinuousIndexType &smallestContIndex, const InputImageContinuousIndexType &largestContIndex, InputImageContinuousIndexType &randomContIndex)
virtual void | GenerateSampleRegion (InputImageContinuousIndexType &smallestContIndex, InputImageContinuousIndexType &largestContIndex)
| MultiInputImageRandomCoordinateSampler ()=default
void | PrintSelf (std::ostream &os, Indent indent) const override
| ~MultiInputImageRandomCoordinateSampler () override=default
Protected Member Functions inherited from itk::ImageRandomSamplerBase< TInputImage >
void | GenerateRandomNumberList ()
| ImageRandomSamplerBase ()
void | PrintSelf (std::ostream &os, Indent indent) const override
| ~ImageRandomSamplerBase () override=default
Protected Member Functions inherited from itk::ImageSamplerBase< TInputImage >
virtual bool | CheckInputImageRegions ()
void | CropInputImageRegion ()
void | GenerateInputRequestedRegion () override
| ImageSamplerBase ()
virtual bool | IsInsideAllMasks (const InputImagePointType &point) const
void | PrintSelf (std::ostream &os, Indent indent) const override
virtual void | UpdateAllMasks ()
| ~ImageSamplerBase () override=default
Protected Member Functions inherited from itk::VectorContainerSource< VectorDataContainer< std::vcl_size_t, ImageSample< TInputImage > > >
void | PrintSelf (std::ostream &os, Indent indent) const override
| VectorContainerSource ()
| ~VectorContainerSource () override=default
Protected Member Functions inherited from itk::ImageSamplerBase< TElastix >
virtual bool | CheckInputImageRegions ()
void | CropInputImageRegion ()
void | GenerateInputRequestedRegion () override
| ImageSamplerBase ()
virtual bool | IsInsideAllMasks (const InputImagePointType &point) const
void | PrintSelf (std::ostream &os, Indent indent) const override
virtual void | UpdateAllMasks ()
| ~ImageSamplerBase () override=default
Protected Member Functions inherited from itk::VectorContainerSource< TOutputVectorContainer >
void | PrintSelf (std::ostream &os, Indent indent) const override
| VectorContainerSource ()
| ~VectorContainerSource () override=default

## Private Attributes

| elxOverrideGetSelfMacro

## Additional Inherited Members

Protected Types inherited from itk::MultiInputImageRandomCoordinateSampler< TInputImage >
using | InputImageContinuousIndexType = typename InterpolatorType::ContinuousIndexType
Static Protected Member Functions inherited from itk::ImageSamplerBase< TInputImage >
static std::vector< InputImageRegionType > | SplitRegion (const InputImageRegionType &inputRegion, const vcl_size_t requestedNumberOfSubregions)
Static Protected Member Functions inherited from itk::ImageSamplerBase< TElastix >
static std::vector< InputImageRegionType > | SplitRegion (const InputImageRegionType &inputRegion, const vcl_size_t requestedNumberOfSubregions)
Protected Attributes inherited from itk::MultiInputImageRandomCoordinateSampler< TInputImage >
InterpolatorPointer | m_Interpolator
RandomGeneratorPointer | m_RandomGenerator { RandomGeneratorType::GetInstance() }
InputImageSpacingType | m_SampleRegionSize { itk::MakeFilled<InputImageSpacingType>(1.0) }
Protected Attributes inherited from itk::ImageRandomSamplerBase< TInputImage >
std::vector< double > | m_RandomNumberList {}
Protected Attributes inherited from itk::ImageSamplerBase< TInputImage >
unsigned long | m_NumberOfSamples { 0 }
bool | m_UseMultiThread { true }
Protected Attributes inherited from itk::ImageSamplerBase< TElastix >
unsigned long | m_NumberOfSamples
bool | m_UseMultiThread

## Member Typedef Documentation

## ConstPointer

template<class TElastix>

using elastix::MultiInputRandomCoordinateSampler< TElastix >::ConstPointer = itk::SmartPointer<const Self>

Definition at line 97 of file elxMultiInputRandomCoordinateSampler.h.

## ITKBaseType

template<class TElastix>

using elastix::MultiInputRandomCoordinateSampler< TElastix >::ITKBaseType = typename Superclass2::ITKBaseType

Definition at line 142 of file elxMultiInputRandomCoordinateSampler.h.

## Pointer

template<class TElastix>

using elastix::MultiInputRandomCoordinateSampler< TElastix >::Pointer = itk::SmartPointer<Self>

Definition at line 96 of file elxMultiInputRandomCoordinateSampler.h.

## Self

template<class TElastix>

using elastix::MultiInputRandomCoordinateSampler< TElastix >::Self = MultiInputRandomCoordinateSampler

Standard ITK-stuff.

Definition at line 92 of file elxMultiInputRandomCoordinateSampler.h.

## Superclass1

template<class TElastix>

using elastix::MultiInputRandomCoordinateSampler< TElastix >::Superclass1

Initial value:
itk::MultiInputImageRandomCoordinateSampler<typename elx::ImageSamplerBase<TElastix>::InputImageType>
itk::MultiInputImageRandomCoordinateSampler
Samples an image by randomly composing a set of physical coordinates.
Definition itkMultiInputImageRandomCoordinateSampler.h:41

Definition at line 93 of file elxMultiInputRandomCoordinateSampler.h.

## Superclass2

template<class TElastix>

using elastix::MultiInputRandomCoordinateSampler< TElastix >::Superclass2 = elx::ImageSamplerBase<TElastix>

Definition at line 95 of file elxMultiInputRandomCoordinateSampler.h.

## Constructor & Destructor Documentation

## MultiInputRandomCoordinateSampler()

template<class TElastix>

elastix::MultiInputRandomCoordinateSampler< TElastix >::MultiInputRandomCoordinateSampler | ( |  | ) |

protected default

The constructor.

## ~MultiInputRandomCoordinateSampler()

template<class TElastix>

elastix::MultiInputRandomCoordinateSampler< TElastix >::~MultiInputRandomCoordinateSampler | ( |  | ) |

override protected default

The destructor.

## Member Function Documentation

## BeforeEachResolution()

template<class TElastix>

void elastix::MultiInputRandomCoordinateSampler< TElastix >::BeforeEachResolution | ( |  | ) |

override

Execute stuff before each resolution:

- Set the number of samples.
- Set the fixed image interpolation order
- Set the UseRandomSampleRegion flag and the SampleRegionSize

## elxClassNameMacro()

template<class TElastix>

elastix::MultiInputRandomCoordinateSampler< TElastix >::elxClassNameMacro | ( | "MultiInputRandomCoordinate" |  | ) |

Name of this class. Use this name in the parameter file to select this specific interpolator.
example: (ImageSampler "MultiInputRandomCoordinate")

## GetClassName()

template<class TElastix>

virtual const char * elastix::MultiInputRandomCoordinateSampler< TElastix >::GetClassName | ( |  | ) | const

virtual

Run-time type information (and related methods).

Reimplemented from itk::MultiInputImageRandomCoordinateSampler< TInputImage >.

## ITK_DISALLOW_COPY_AND_MOVE()

template<class TElastix>

elastix::MultiInputRandomCoordinateSampler< TElastix >::ITK_DISALLOW_COPY_AND_MOVE | ( | MultiInputRandomCoordinateSampler< TElastix > |  | ) |

## itkStaticConstMacro()

template<class TElastix>

elastix::MultiInputRandomCoordinateSampler< TElastix >::itkStaticConstMacro | ( | InputImageDimension | ,
|  | unsigned int | ,
|  | Superclass1::InputImageDimension | )

The input image dimension.

## New()

template<class TElastix>

Pointer elastix::MultiInputRandomCoordinateSampler< TElastix >::New | ( |  | ) |

static

Method for creation through the object factory.

## Field Documentation

## elxOverrideGetSelfMacro

template<class TElastix>

elastix::MultiInputRandomCoordinateSampler< TElastix >::elxOverrideGetSelfMacro

private

Definition at line 159 of file elxMultiInputRandomCoordinateSampler.h.

Generated on 1768596610 for elastix by 1.15.0 |