go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itk::ImageGridSampler< TInputImage > Class Template Reference

#include <itkImageGridSampler.h>

Detailed Description

template<class TInputImage>
class itk::ImageGridSampler< TInputImage >

Samples image voxels on a regular grid.

This ImageSampler samples voxels that lie on a regular grid. The grid can be specified by an integer downsampling factor for each dimension.

Parameters
SampleGridSpacing: This parameter controls the spacing of the uniform grid in all dimensions. This should be given in index coordinates.
example: (SampleGridSpacing 4 4 4)
Default is 2 in each dimension.

Definition at line 45 of file itkImageGridSampler.h.

Inheritance diagram for itk::ImageGridSampler< TInputImage >:

Data Structures

struct  UserData
 
struct  WorkUnit
 

Public Types

using ConstPointer = SmartPointer<const Self>
 
using ImageSampleContainerPointer
 
using ImageSampleContainerType
 
using ImageSampleType
 
using InputImageConstPointer
 
using InputImageIndexType
 
using InputImagePixelType
 
using InputImagePointer
 
using InputImagePointType
 
using InputImageRegionType
 
using InputImageSizeType = typename InputImageType::SizeType
 
using InputImageType
 
using MaskType = typename Superclass::MaskType
 
using Pointer = SmartPointer<Self>
 
using SampleGridIndexType = InputImageIndexType
 
using SampleGridSizeType = typename InputImageType::SizeType
 
using SampleGridSpacingType = typename InputImageType::OffsetType
 
using SampleGridSpacingValueType = typename SampleGridSpacingType::OffsetValueType
 
using Self = ImageGridSampler
 
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 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 Member Functions

virtual const char * GetClassName () const
 
virtual const SampleGridSpacingTypeGetSampleGridSpacing ()
 
 ITK_DISALLOW_COPY_AND_MOVE (ImageGridSampler)
 
 itkStaticConstMacro (InputImageDimension, unsigned int, Superclass::InputImageDimension)
 
bool SelectingNewSamplesOnUpdateSupported () const override
 
bool SelectNewSamplesOnUpdate () override
 
void SetNumberOfSamples (unsigned long nrofsamples) override
 
void SetSampleGridSpacing (const SampleGridSpacingType &arg)
 
- Public Member Functions inherited from itk::ImageSamplerBase< TInputImage >
virtual const InputImageRegionTypeGetCroppedInputImageRegion ()
 
const InputImageTypeGetInput ()
 
const InputImageTypeGetInput (unsigned int idx)
 
virtual const InputImageRegionTypeGetInputImageRegion () const
 
virtual const InputImageRegionTypeGetInputImageRegion (unsigned int pos) const
 
virtual const MaskTypeGetMask () const
 
virtual const MaskTypeGetMask (unsigned int pos) const
 
virtual unsigned int GetNumberOfInputImageRegions () const
 
virtual unsigned int GetNumberOfMasks () const
 
virtual unsigned long GetNumberOfSamples () const
 
OutputVectorContainerTypeGetOutput ()
 
 ITK_DISALLOW_COPY_AND_MOVE (ImageSamplerBase)
 
 itkStaticConstMacro (InputImageDimension, unsigned int, InputImageType::ImageDimension)
 
DataObject::Pointer MakeOutput (ProcessObject::DataObjectPointerArraySizeType idx) override
 
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 SetUseMultiThread (bool _arg)
 
- Public Member Functions inherited from itk::VectorContainerSource< VectorDataContainer< std::vcl_size_t, ImageSample< TInputImage > > >
OutputVectorContainerTypeGetOutput ()
 
OutputVectorContainerTypeGetOutput (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::ImageSamplerBase< TInputImage >
static Pointer New ()
 
- Static Public Member Functions inherited from itk::VectorContainerSource< VectorDataContainer< std::vcl_size_t, ImageSample< TInputImage > > >
static Pointer New ()
 

Protected Member Functions

void GenerateData () override
 
 ImageGridSampler ()=default
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ~ImageGridSampler () 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
 

Static Private Member Functions

static std::pair< SampleGridIndexType, SampleGridSizeTypeDetermineGridIndexAndSize (const InputImageRegionType &croppedInputImageRegion, const SampleGridSpacingType &gridSpacing)
 
template<elastix::MaskCondition VMaskCondition>
static void GenerateDataForWorkUnit (WorkUnit &, const InputImageType &, const MaskType *, const SampleGridSpacingType &)
 
static std::vector< WorkUnitGenerateWorkUnits (const ThreadIdType numberOfWorkUnits, const InputImageRegionType &croppedInputImageRegion, const SampleGridIndexType gridIndex, const SampleGridSpacingType gridSpacing, std::vector< ImageSampleType > &samples)
 
template<unsigned int VIndex>
static unsigned int GetGridSizeValue (const SampleGridSizeType &gridSize)
 
template<unsigned int VIndex>
static void JumpToNextGridPosition (SampleGridIndexType &index, const SampleGridIndexType &gridIndex, const SampleGridSpacingType &gridSpacing)
 
static void MultiThreadedGenerateData (MultiThreaderBase &multiThreader, const ThreadIdType numberOfWorkUnits, const TInputImage &inputImage, const MaskType *const mask, const InputImageRegionType &croppedInputImageRegion, const SampleGridSpacingType &gridSpacing, std::vector< ImageSampleType > &samples)
 
static void SingleThreadedGenerateData (const TInputImage &inputImage, const MaskType *const mask, const InputImageRegionType &croppedInputImageRegion, const SampleGridSpacingType &gridSpacing, std::vector< ImageSampleType > &samples)
 
template<elastix::MaskCondition VMaskCondition>
static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION ThreaderCallback (void *arg)
 

Private Attributes

unsigned long m_RequestedNumberOfSamples { 0 }
 
SampleGridSpacingType m_SampleGridSpacing { itk::MakeFilled<SampleGridSpacingType>(1) }
 

Additional Inherited Members

- Static Protected Member Functions inherited from itk::ImageSamplerBase< TInputImage >
static std::vector< InputImageRegionTypeSplitRegion (const InputImageRegionType &inputRegion, const vcl_size_t requestedNumberOfSubregions)
 
- Protected Attributes inherited from itk::ImageSamplerBase< TInputImage >
unsigned long m_NumberOfSamples { 0 }
 
bool m_UseMultiThread { true }
 

Member Typedef Documentation

◆ ConstPointer

template<class TInputImage >
using itk::ImageGridSampler< TInputImage >::ConstPointer = SmartPointer<const Self>

Definition at line 54 of file itkImageGridSampler.h.

◆ ImageSampleContainerPointer

template<class TInputImage >
using itk::ImageSamplerBase< TInputImage >::ImageSampleContainerPointer

Definition at line 78 of file itkImageSamplerBase.h.

◆ ImageSampleContainerType

template<class TInputImage >
using itk::ImageSamplerBase< TInputImage >::ImageSampleContainerType

Definition at line 77 of file itkImageSamplerBase.h.

◆ ImageSampleType

template<class TInputImage >
using itk::ImageSamplerBase< TInputImage >::ImageSampleType

Other typdefs.

Definition at line 76 of file itkImageSamplerBase.h.

◆ InputImageConstPointer

template<class TInputImage >
using itk::ImageSamplerBase< TInputImage >::InputImageConstPointer

Definition at line 68 of file itkImageSamplerBase.h.

◆ InputImageIndexType

template<class TInputImage >
using itk::ImageSamplerBase< TInputImage >::InputImageIndexType

Definition at line 80 of file itkImageSamplerBase.h.

◆ InputImagePixelType

template<class TInputImage >
using itk::ImageSamplerBase< TInputImage >::InputImagePixelType

Definition at line 70 of file itkImageSamplerBase.h.

◆ InputImagePointer

template<class TInputImage >
using itk::ImageSamplerBase< TInputImage >::InputImagePointer

Definition at line 67 of file itkImageSamplerBase.h.

◆ InputImagePointType

template<class TInputImage >
using itk::ImageSamplerBase< TInputImage >::InputImagePointType

Definition at line 81 of file itkImageSamplerBase.h.

◆ InputImageRegionType

template<class TInputImage >
using itk::ImageSamplerBase< TInputImage >::InputImageRegionType

Definition at line 69 of file itkImageSamplerBase.h.

◆ InputImageSizeType

template<class TInputImage >
using itk::ImageGridSampler< TInputImage >::InputImageSizeType = typename InputImageType::SizeType

Definition at line 92 of file itkImageGridSampler.h.

◆ InputImageType

template<class TInputImage >
using itk::ImageSamplerBase< TInputImage >::InputImageType

Some Image related typedefs.

Definition at line 66 of file itkImageSamplerBase.h.

◆ MaskType

template<class TInputImage >
using itk::ImageGridSampler< TInputImage >::MaskType = typename Superclass::MaskType

Definition at line 77 of file itkImageGridSampler.h.

◆ Pointer

template<class TInputImage >
using itk::ImageGridSampler< TInputImage >::Pointer = SmartPointer<Self>

Definition at line 53 of file itkImageGridSampler.h.

◆ SampleGridIndexType

template<class TInputImage >
using itk::ImageGridSampler< TInputImage >::SampleGridIndexType = InputImageIndexType

Definition at line 91 of file itkImageGridSampler.h.

◆ SampleGridSizeType

template<class TInputImage >
using itk::ImageGridSampler< TInputImage >::SampleGridSizeType = typename InputImageType::SizeType

Definition at line 90 of file itkImageGridSampler.h.

◆ SampleGridSpacingType

template<class TInputImage >
using itk::ImageGridSampler< TInputImage >::SampleGridSpacingType = typename InputImageType::OffsetType

Typedefs for support of user defined grid spacing for the spatial samples.

Definition at line 88 of file itkImageGridSampler.h.

◆ SampleGridSpacingValueType

template<class TInputImage >
using itk::ImageGridSampler< TInputImage >::SampleGridSpacingValueType = typename SampleGridSpacingType::OffsetValueType

Definition at line 89 of file itkImageGridSampler.h.

◆ Self

template<class TInputImage >
using itk::ImageGridSampler< TInputImage >::Self = ImageGridSampler

Standard ITK-stuff.

Definition at line 51 of file itkImageGridSampler.h.

◆ Superclass

template<class TInputImage >
using itk::ImageGridSampler< TInputImage >::Superclass = ImageSamplerBase<TInputImage>

Definition at line 52 of file itkImageGridSampler.h.

Constructor & Destructor Documentation

◆ ImageGridSampler()

template<class TInputImage >
itk::ImageGridSampler< TInputImage >::ImageGridSampler ( )
protecteddefault

The constructor.

◆ ~ImageGridSampler()

template<class TInputImage >
itk::ImageGridSampler< TInputImage >::~ImageGridSampler ( )
overrideprotecteddefault

The destructor.

Member Function Documentation

◆ DetermineGridIndexAndSize()

template<class TInputImage >
static std::pair< SampleGridIndexType, SampleGridSizeType > itk::ImageGridSampler< TInputImage >::DetermineGridIndexAndSize ( const InputImageRegionType & croppedInputImageRegion,
const SampleGridSpacingType & gridSpacing )
staticprivate

Determine the grid.

◆ GenerateData()

template<class TInputImage >
void itk::ImageGridSampler< TInputImage >::GenerateData ( )
overrideprotected

Function that does the work.

◆ GenerateDataForWorkUnit()

template<class TInputImage >
template<elastix::MaskCondition VMaskCondition>
static void itk::ImageGridSampler< TInputImage >::GenerateDataForWorkUnit ( WorkUnit & ,
const InputImageType & ,
const MaskType * ,
const SampleGridSpacingType &  )
staticprivate

Generates the data for one specific work unit.

◆ GenerateWorkUnits()

template<class TInputImage >
static std::vector< WorkUnit > itk::ImageGridSampler< TInputImage >::GenerateWorkUnits ( const ThreadIdType numberOfWorkUnits,
const InputImageRegionType & croppedInputImageRegion,
const SampleGridIndexType gridIndex,
const SampleGridSpacingType gridSpacing,
std::vector< ImageSampleType > & samples )
staticprivate

Generates the work units, to be processed when doing multi-threading.

◆ GetClassName()

template<class TInputImage >
virtual const char * itk::ImageGridSampler< TInputImage >::GetClassName ( ) const
virtual

Run-time type information (and related methods).

Reimplemented from itk::ImageSamplerBase< TInputImage >.

Reimplemented in elastix::GridSampler< TElastix >.

◆ GetGridSizeValue()

template<class TInputImage >
template<unsigned int VIndex>
static unsigned int itk::ImageGridSampler< TInputImage >::GetGridSizeValue ( const SampleGridSizeType & gridSize)
inlinestaticprivate

Retrieves the sample grid size along the axis, specified by VIndex

Definition at line 184 of file itkImageGridSampler.h.

◆ GetSampleGridSpacing()

template<class TInputImage >
virtual const SampleGridSpacingType & itk::ImageGridSampler< TInputImage >::GetSampleGridSpacing ( )
virtual

◆ ITK_DISALLOW_COPY_AND_MOVE()

template<class TInputImage >
itk::ImageGridSampler< TInputImage >::ITK_DISALLOW_COPY_AND_MOVE ( ImageGridSampler< TInputImage > )

◆ itkStaticConstMacro()

template<class TInputImage >
itk::ImageGridSampler< TInputImage >::itkStaticConstMacro ( InputImageDimension ,
unsigned int ,
Superclass::InputImageDimension  )

The input image dimension.

◆ JumpToNextGridPosition()

template<class TInputImage >
template<unsigned int VIndex>
static void itk::ImageGridSampler< TInputImage >::JumpToNextGridPosition ( SampleGridIndexType & index,
const SampleGridIndexType & gridIndex,
const SampleGridSpacingType & gridSpacing )
inlinestaticprivate

Jumps to the next grid position along the axis, specified by VIndex

Definition at line 199 of file itkImageGridSampler.h.

◆ MultiThreadedGenerateData()

template<class TInputImage >
static void itk::ImageGridSampler< TInputImage >::MultiThreadedGenerateData ( MultiThreaderBase & multiThreader,
const ThreadIdType numberOfWorkUnits,
const TInputImage & inputImage,
const MaskType *const mask,
const InputImageRegionType & croppedInputImageRegion,
const SampleGridSpacingType & gridSpacing,
std::vector< ImageSampleType > & samples )
staticprivate

◆ New()

template<class TInputImage >
static Pointer itk::ImageGridSampler< TInputImage >::New ( )
static

Method for creation through the object factory.

◆ PrintSelf()

template<class TInputImage >
void itk::ImageGridSampler< TInputImage >::PrintSelf ( std::ostream & os,
Indent indent ) const
overrideprotected

PrintSelf.

◆ SelectingNewSamplesOnUpdateSupported()

template<class TInputImage >
bool itk::ImageGridSampler< TInputImage >::SelectingNewSamplesOnUpdateSupported ( ) const
inlineoverridevirtual

Returns whether the sampler supports SelectNewSamplesOnUpdate().

Reimplemented from itk::ImageSamplerBase< TInputImage >.

Definition at line 133 of file itkImageGridSampler.h.

◆ SelectNewSamplesOnUpdate()

template<class TInputImage >
bool itk::ImageGridSampler< TInputImage >::SelectNewSamplesOnUpdate ( )
inlineoverridevirtual

Selecting new samples makes no sense if nothing changed. The same samples would be selected anyway.

Reimplemented from itk::ImageSamplerBase< TInputImage >.

Definition at line 125 of file itkImageGridSampler.h.

◆ SetNumberOfSamples()

template<class TInputImage >
void itk::ImageGridSampler< TInputImage >::SetNumberOfSamples ( unsigned long nrofsamples)
overridevirtual

Define an isotropic SampleGridSpacing such that the desired number of samples is approximately realized. The following formula is used:

spacing = max[ 1, round( (availablevoxels / nrofsamples)^(1/dimension) ) ], with availablevoxels = nr of voxels in bounding box of the mask.

The InputImageRegion needs to be specified beforehand. However, the sample grid spacing is recomputed in the update phase, when the bounding box of the mask is known. Supplying nrofsamples=0 turns off the (re)computation of the SampleGridSpacing. Once nrofsamples=0 has been given, the last computed SampleGridSpacing is simply considered as a user parameter, which is not modified automatically anymore.

This function overrules any previous calls to SetSampleGridSpacing.

Reimplemented from itk::ImageSamplerBase< TInputImage >.

◆ SetSampleGridSpacing()

template<class TInputImage >
void itk::ImageGridSampler< TInputImage >::SetSampleGridSpacing ( const SampleGridSpacingType & arg)

Set/Get the sample grid spacing for each dimension (only integer factors) This function overrules previous calls to SetNumberOfSamples. Moreover, it calls SetNumberOfSamples(0) (see below), to make sure that the user-set sample grid spacing is never overruled.

◆ SingleThreadedGenerateData()

template<class TInputImage >
static void itk::ImageGridSampler< TInputImage >::SingleThreadedGenerateData ( const TInputImage & inputImage,
const MaskType *const mask,
const InputImageRegionType & croppedInputImageRegion,
const SampleGridSpacingType & gridSpacing,
std::vector< ImageSampleType > & samples )
staticprivate

◆ ThreaderCallback()

template<class TInputImage >
template<elastix::MaskCondition VMaskCondition>
static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION itk::ImageGridSampler< TInputImage >::ThreaderCallback ( void * arg)
staticprivate

Field Documentation

◆ m_RequestedNumberOfSamples

template<class TInputImage >
unsigned long itk::ImageGridSampler< TInputImage >::m_RequestedNumberOfSamples { 0 }
private

The number of samples entered in the SetNumberOfSamples method

Definition at line 250 of file itkImageGridSampler.h.

◆ m_SampleGridSpacing

template<class TInputImage >
SampleGridSpacingType itk::ImageGridSampler< TInputImage >::m_SampleGridSpacing { itk::MakeFilled<SampleGridSpacingType>(1) }
private

An array of integer spacing factors

Definition at line 247 of file itkImageGridSampler.h.



Generated on 2024-07-17 for elastix by doxygen 1.11.0 (9b424b03c9833626cd435af22a444888fbbb192d) elastix logo