Medical Imaging Interaction Toolkit  2024.12.99-0da743f6
Medical Imaging Interaction Toolkit
itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer > Class Template Reference

This class computes a run length matrix (histogram) from a given image and a mask image if provided. Run length matrces are used for image texture description. More...

#include <itkEnhancedScalarImageToRunLengthMatrixFilter.h>

Inheritance diagram for itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >:
Collaboration diagram for itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >:

Public Types

typedef EnhancedScalarImageToRunLengthMatrixFilter Self
 
typedef ProcessObject Superclass
 
typedef SmartPointer< SelfPointer
 
typedef SmartPointer< const SelfConstPointer
 
typedef TImageType ImageType
 
typedef ImageType::Pointer ImagePointer
 
typedef ImageType::ConstPointer ImageConstPointer
 
typedef ImageType::PixelType PixelType
 
typedef ImageType::IndexType IndexType
 
typedef ImageType::RegionType RegionType
 
typedef ImageType::SizeType RadiusType
 
typedef ImageType::OffsetType OffsetType
 
typedef VectorContainer< unsigned char, OffsetTypeOffsetVector
 
typedef OffsetVector::Pointer OffsetVectorPointer
 
typedef ImageType::PointType PointType
 
typedef NumericTraits< PixelType >::RealType MeasurementType
 
typedef NumericTraits< PixelType >::RealType RealType
 
typedef Histogram< MeasurementType, THistogramFrequencyContainer > HistogramType
 
typedef HistogramType::Pointer HistogramPointer
 
typedef HistogramType::ConstPointer HistogramConstPointer
 
typedef HistogramType::MeasurementVectorType MeasurementVectorType
 

Public Member Functions

virtual const char * GetClassName () const
 
 itkStaticConstMacro (ImageDimension, unsigned int, TImageType::ImageDimension)
 
 itkStaticConstMacro (DefaultBinsPerAxis, unsigned int, 256)
 
virtual void SetOffsets (OffsetVector *_arg)
 
void SetOffset (const OffsetType offset)
 
 itkGetModifiableObjectMacro (Offsets, OffsetVector)
 
virtual void SetNumberOfBinsPerAxis (unsigned int _arg)
 
virtual unsigned int GetNumberOfBinsPerAxis () const
 
void SetPixelValueMinMax (PixelType min, PixelType max)
 
virtual PixelType GetMin () const
 
virtual PixelType GetMax () const
 
void SetDistanceValueMinMax (RealType min, RealType max)
 
virtual RealType GetMinDistance () const
 
virtual RealType GetMaxDistance () const
 
void SetInput (const ImageType *image)
 
const ImageTypeGetInput () const
 
void SetMaskImage (const ImageType *image)
 
const ImageTypeGetMaskImage () const
 
const HistogramTypeGetOutput () const
 
virtual void SetInsidePixelValue (PixelType _arg)
 
virtual PixelType GetInsidePixelValue () const
 

Static Public Member Functions

static Pointer New ()
 

Protected Types

typedef DataObject::Pointer DataObjectPointer
 
typedef ProcessObject::DataObjectPointerArraySizeType DataObjectPointerArraySizeType
 

Protected Member Functions

 EnhancedScalarImageToRunLengthMatrixFilter ()
 
 ~EnhancedScalarImageToRunLengthMatrixFilter () override
 
void PrintSelf (std::ostream &os, Indent indent) const ITK_OVERRIDE
 
DataObjectPointer MakeOutput (DataObjectPointerArraySizeType idx) ITK_OVERRIDE
 
void GenerateData () ITK_OVERRIDE
 
void NormalizeOffsetDirection (OffsetType &offset)
 

Detailed Description

template<typename TImageType, typename THistogramFrequencyContainer = DenseFrequencyContainer2>
class itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >

This class computes a run length matrix (histogram) from a given image and a mask image if provided. Run length matrces are used for image texture description.

This filters creates a grey-level run length matrix from a N-D scalar image. This is another possible texture description. See the following references. M. M. Galloway. Texture analysis using gray level run lengths. Computer Graphics and Image Processing, 4:172-179, 1975.

A. Chu, C. M. Sehgal, and J. F. Greenleaf. Use of gray value distribution of run lengths for texture analysis. Pattern Recognition Letters, 11:415-420, 1990.

B. R. Dasarathy and E. B. Holder. Image characterizations based on joint gray-level run-length distributions. Pattern Recognition Letters, 12:490-502, 1991.

The basic idea is as follows: Given an image and an offset (e.g. (1, -1) for a 2-d image), each element in the joint histogram describes the frequency for a particular distance/ intensity pair within a given image. This distance/intensity pair can be described as follows: we start at a given voxel which has some intensity. We then "jump" to neighboring pixels in increments provided by the offset(s) as long as the pixel to which we are jumping is within the same intensity bin as the original voxel. The distance component is given by the distance from the original to the final voxel satisfying our jumping criteria.

The offset (or offsets) along which the co-occurences are calculated can be set by the user. Traditionally, only one offset is used per histogram, and offset components in the range [-1, 1] are used. For rotation-invariant features averages of features computed over several histograms with different offsets are generally used, instead of computing features from one histogram create with several offsets. Additionally, instead of using offsets of two or more pixels in any direction, multi-resolution techniques (e.g. image pyramids) are generally used to deal with texture at different spatial resolutions.

This class calculates a 2-d histogram of all the intensity/distance pairs in the given image's requested region, for a given set of offsets. That is, if a given offset falls outside of the requested region (or outside the mask) at a particular point, that distance/intensity pair will not be added to the matrix.

The number of histogram bins on each axis can be set (defaults to 256). Also, by default the histogram min and max corresponds to the largest and smallest possible pixel value of that pixel type. To customize the histogram bounds for a given image, the max and min pixel values that will be placed in the histogram can be set manually. NB: The min and max are INCLUSIVE.

Further, the type of histogram frequency container used is an optional template parameter. By default, a dense container is used, but for images with little texture or in cases where the user wants more histogram bins, a sparse container can be used for the histogram instead.

WARNING: This probably won't work for pixels of double or long-double type unless you set the histogram min and max manually. This is because the largest histogram bin by default has max value of the largest possible pixel value plus 1. For double and long-double types, whose "RealType" as defined by the NumericTraits class is the same, and thus cannot hold any larger values, this would cause a float overflow.

IJ article: https://hdl.handle.net/1926/1374

See also
ScalarImageToRunLengthFeaturesFilter
EnhancedScalarImageToRunLengthMatrixFilter
HistogramToRunLengthFeaturesFilter
Author
: Nick Tustison

Definition at line 117 of file itkEnhancedScalarImageToRunLengthMatrixFilter.h.

Member Typedef Documentation

◆ ConstPointer

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef SmartPointer<const Self> itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::ConstPointer

◆ DataObjectPointer

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef DataObject::Pointer itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::DataObjectPointer
protected

Standard itk::ProcessObject subclass method.

Definition at line 250 of file itkEnhancedScalarImageToRunLengthMatrixFilter.h.

◆ DataObjectPointerArraySizeType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef ProcessObject::DataObjectPointerArraySizeType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::DataObjectPointerArraySizeType
protected

◆ HistogramConstPointer

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef HistogramType::ConstPointer itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::HistogramConstPointer

◆ HistogramPointer

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef HistogramType::Pointer itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::HistogramPointer

◆ HistogramType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef Histogram<MeasurementType, THistogramFrequencyContainer> itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::HistogramType

◆ ImageConstPointer

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef ImageType::ConstPointer itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::ImageConstPointer

◆ ImagePointer

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef ImageType::Pointer itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::ImagePointer

◆ ImageType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef TImageType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::ImageType

◆ IndexType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef ImageType::IndexType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::IndexType

◆ MeasurementType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef NumericTraits<PixelType>::RealType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::MeasurementType

◆ MeasurementVectorType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef HistogramType::MeasurementVectorType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::MeasurementVectorType

◆ OffsetType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef ImageType::OffsetType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::OffsetType

◆ OffsetVector

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef VectorContainer<unsigned char, OffsetType> itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::OffsetVector

◆ OffsetVectorPointer

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef OffsetVector::Pointer itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::OffsetVectorPointer

◆ PixelType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef ImageType::PixelType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::PixelType

◆ Pointer

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef SmartPointer<Self> itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::Pointer

◆ PointType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef ImageType::PointType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::PointType

◆ RadiusType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef ImageType::SizeType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::RadiusType

◆ RealType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef NumericTraits<PixelType>::RealType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::RealType

◆ RegionType

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef ImageType::RegionType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::RegionType

◆ Self

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef EnhancedScalarImageToRunLengthMatrixFilter itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::Self

Standard typedefs

Definition at line 121 of file itkEnhancedScalarImageToRunLengthMatrixFilter.h.

◆ Superclass

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
typedef ProcessObject itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::Superclass

Constructor & Destructor Documentation

◆ EnhancedScalarImageToRunLengthMatrixFilter()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::EnhancedScalarImageToRunLengthMatrixFilter ( )
protected

◆ ~EnhancedScalarImageToRunLengthMatrixFilter()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::~EnhancedScalarImageToRunLengthMatrixFilter ( )
inlineoverrideprotected

Member Function Documentation

◆ GenerateData()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
void itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::GenerateData ( )
protected

This method causes the filter to generate its output.

◆ GetClassName()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
virtual const char* itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::GetClassName ( ) const
virtual

Run-time type information (and related methods).

◆ GetInput()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
const ImageType* itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::GetInput ( ) const

Method to get the input image

◆ GetInsidePixelValue()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
virtual PixelType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::GetInsidePixelValue ( ) const
virtual

◆ GetMaskImage()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
const ImageType* itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::GetMaskImage ( ) const

Method to get the mask image

◆ GetMax()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
virtual PixelType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::GetMax ( ) const
virtual

Get the max pixel value defining one dimension of the joint histogram.

◆ GetMaxDistance()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
virtual RealType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::GetMaxDistance ( ) const
virtual

Get the max distance value defining one dimension of the joint histogram.

◆ GetMin()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
virtual PixelType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::GetMin ( ) const
virtual

Get the min pixel value defining one dimension of the joint histogram.

◆ GetMinDistance()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
virtual RealType itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::GetMinDistance ( ) const
virtual

Get the min distance value defining one dimension of the joint histogram.

◆ GetNumberOfBinsPerAxis()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
virtual unsigned int itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::GetNumberOfBinsPerAxis ( ) const
virtual

Get number of histogram bins along each axis

◆ GetOutput()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
const HistogramType* itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::GetOutput ( ) const

method to get the Histogram

◆ itkGetModifiableObjectMacro()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::itkGetModifiableObjectMacro ( Offsets  ,
OffsetVector   
)

Get the current offset(s).

◆ itkStaticConstMacro() [1/2]

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::itkStaticConstMacro ( DefaultBinsPerAxis  ,
unsigned int  ,
256   
)

Specify the default number of bins per axis

◆ itkStaticConstMacro() [2/2]

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::itkStaticConstMacro ( ImageDimension  ,
unsigned int  ,
TImageType::ImageDimension   
)

ImageDimension constants

◆ MakeOutput()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
DataObjectPointer itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::MakeOutput ( DataObjectPointerArraySizeType  idx)
protected

◆ New()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
static Pointer itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::New ( )
static

standard New() method support

◆ NormalizeOffsetDirection()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
void itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::NormalizeOffsetDirection ( OffsetType offset)
protected

Normalize the direction of the offset before it is applied. The last non-zero dimension of the offset has to be positive in order to match to scanning order of the iterator. Only the sign is changed. For example, the input offset (-1, 0) will be normalized as (1, 0).

◆ PrintSelf()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
void itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
protected

◆ SetDistanceValueMinMax()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
void itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::SetDistanceValueMinMax ( RealType  min,
RealType  max 
)

Set the min and max (inclusive) pixel value that will be used in generating the histogram.

◆ SetInput()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
void itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::SetInput ( const ImageType image)

◆ SetInsidePixelValue()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
virtual void itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::SetInsidePixelValue ( PixelType  _arg)
virtual

Set the pixel value of the mask that should be considered "inside" the object. Defaults to 1.

◆ SetMaskImage()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
void itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::SetMaskImage ( const ImageType image)

Method to set the mask image

◆ SetNumberOfBinsPerAxis()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
virtual void itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::SetNumberOfBinsPerAxis ( unsigned int  _arg)
virtual

Set number of histogram bins along each axis

◆ SetOffset()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
void itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::SetOffset ( const OffsetType  offset)

Set offset over which the intensity/distance pairs will be computed. Invoking this function clears the previous offset(s). Note: for each individual offset, the rightmost non-zero offset element must be positive. For example, in the offset list of a 2D image, (1, 0) means the offset along x-axis. (1, 0) has to be set instead of (-1, 0). This is required from the iterating order of pixel iterator.

◆ SetOffsets()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
virtual void itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::SetOffsets ( OffsetVector _arg)
virtual

Set the offsets over which the intensity/distance pairs will be computed. Invoking this function clears the previous offsets. Note: for each individual offset in the OffsetVector, the rightmost non-zero offset element must be positive. For example, in the offset list of a 2D image, (1, 0) means the offset along x-axis. (1, 0) has to be set instead of (-1, 0). This is required from the iterating order of pixel iterator.

◆ SetPixelValueMinMax()

template<typename TImageType , typename THistogramFrequencyContainer = DenseFrequencyContainer2>
void itk::Statistics::EnhancedScalarImageToRunLengthMatrixFilter< TImageType, THistogramFrequencyContainer >::SetPixelValueMinMax ( PixelType  min,
PixelType  max 
)

Set the min and max (inclusive) pixel value that will be used in generating the histogram.


The documentation for this class was generated from the following file: