Slicer  4.11
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
List of all members | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends
itk::MorphologicalContourInterpolator< TImage > Class Template Reference

Interpolates contours between slices. Based on a paper by Albu et al. More...

#include <Libs/vtkITK/itkMorphologicalContourInterpolator.h>

Inheritance diagram for itk::MorphologicalContourInterpolator< TImage >:
Inheritance graph
[legend]
Collaboration diagram for itk::MorphologicalContourInterpolator< TImage >:
Collaboration graph
[legend]

Public Types

using LabeledSlicesType = itksys::hash_map< typename TImage::PixelType, SliceSetType >
 
using Pointer = SmartPointer< Self >
 
using Self = MorphologicalContourInterpolator
 
using SliceIndicesType = std::vector< LabeledSlicesType >
 
using SliceSetType = std::set< typename TImage::IndexValueType >
 
using SliceType = Image< typename TImage::PixelType, TImage::ImageDimension - 1 >
 
using Superclass = ImageToImageFilter< TImage, TImage >
 

Public Member Functions

void ClearLabeledSliceIndices ()
 
void DetermineSliceOrientations ()
 
SliceSetType GetLabeledSliceIndices (unsigned int axis, typename TImage::PixelType label)
 
SliceIndicesType GetLabeledSliceIndices ()
 
 ITK_DISALLOW_COPY_AND_ASSIGN (MorphologicalContourInterpolator)
 
 itkGetConstMacro (Label, typename TImage::PixelType)
 
 itkGetConstMacro (Axis, int)
 
 itkGetConstMacro (HeuristicAlignment, bool)
 
 itkGetConstMacro (UseDistanceTransform, bool)
 
 itkGetConstMacro (UseCustomSlicePositions, bool)
 
 itkGetConstMacro (UseBallStructuringElement, bool)
 
 itkGetMacro (Label, typename TImage::PixelType)
 
 itkGetMacro (Axis, int)
 
 itkGetMacro (HeuristicAlignment, bool)
 
 itkGetMacro (UseDistanceTransform, bool)
 
 itkGetMacro (UseCustomSlicePositions, bool)
 
 itkGetMacro (UseBallStructuringElement, bool)
 
 itkNewMacro (Self)
 
 itkSetMacro (Label, typename TImage::PixelType)
 
 itkSetMacro (Axis, int)
 
 itkSetMacro (HeuristicAlignment, bool)
 
 itkSetMacro (UseDistanceTransform, bool)
 
 itkSetMacro (UseCustomSlicePositions, bool)
 
 itkTypeMacro (MorphologicalContourInterpolator, ImageToImageFilter)
 
void SetLabeledSliceIndices (unsigned int axis, typename TImage::PixelType label, const std::vector< typename TImage::IndexValueType > &indices)
 
void SetLabeledSliceIndices (unsigned int axis, typename TImage::PixelType label, const SliceSetType &indices)
 
void SetUseBallStructuringElement (bool useBall)
 

Protected Types

using BinarizerType = BinaryThresholdImageFilter< SliceType, BoolSliceType >
 
using BoolImageType = Image< bool, TImage::ImageDimension >
 
using BoolSliceType = Image< bool, TImage::ImageDimension - 1 >
 
using BoundingBoxesType = itksys::hash_map< typename TImage::PixelType, typename TImage::RegionType >
 
using ConnectedComponentsType = ConnectedComponentImageFilter< BoolSliceType, SliceType >
 
using FloatSliceType = Image< float, TImage::ImageDimension - 1 >
 
using PixelList = std::vector< typename TImage::PixelType >
 
using RoiType = ExtractImageFilter< TImage, SliceType >
 

Protected Member Functions

SliceType::IndexType Align (typename SliceType::Pointer &iConn, typename TImage::PixelType iRegionId, typename SliceType::Pointer &jConn, const PixelList &jRegionIds)
 
void AllocateOutputs () override
 
SliceType::RegionType BoundingBox (itk::SmartPointer< SliceType > image)
 
IdentifierType CardinalSymmetricDifference (typename BoolSliceType::Pointer &shape1, typename BoolSliceType::Pointer &shape2)
 
SliceType::IndexType Centroid (typename SliceType::Pointer &conn, const PixelList &regionIds)
 
BoolSliceType::Pointer Dilate1 (typename BoolSliceType::Pointer &seed, typename BoolSliceType::Pointer &mask)
 
template<typename T2 >
void ExpandRegion (typename T2::RegionType &region, const typename T2::IndexType &index)
 
void Extrapolate (int axis, TImage *out, typename TImage::PixelType label, typename TImage::IndexValueType i, typename TImage::IndexValueType j, typename SliceType::Pointer &iConn, typename TImage::PixelType iRegionId)
 
BoolSliceType::Pointer FindMedianImageDilations (typename BoolSliceType::Pointer &intersection, typename BoolSliceType::Pointer &iMask, typename BoolSliceType::Pointer &jMask)
 
BoolSliceType::Pointer FindMedianImageDistances (typename BoolSliceType::Pointer &intersection, typename BoolSliceType::Pointer &iMask, typename BoolSliceType::Pointer &jMask)
 
void GenerateData () override
 
std::vector< typename BoolSliceType::Pointer > GenerateDilationSequence (typename BoolSliceType::Pointer &begin, typename BoolSliceType::Pointer &end)
 
bool ImagesEqual (typename BoolSliceType::Pointer &a, typename BoolSliceType::Pointer &b)
 
void Interpolate1to1 (int axis, TImage *out, typename TImage::PixelType label, typename TImage::IndexValueType i, typename TImage::IndexValueType j, typename SliceType::Pointer &iConn, typename TImage::PixelType iRegionId, typename SliceType::Pointer &jConn, typename TImage::PixelType jRegionId, const typename SliceType::IndexType &translation, bool recursive)
 
void Interpolate1toN (int axis, TImage *out, typename TImage::PixelType label, typename TImage::IndexValueType i, typename TImage::IndexValueType j, typename SliceType::Pointer &iConn, typename TImage::PixelType iRegionId, typename SliceType::Pointer &jConn, const PixelList &jRegionIds, const typename SliceType::IndexType &translation)
 
void InterpolateAlong (int axis, TImage *out, float startProgress, float endProgress)
 
void InterpolateBetweenTwo (int axis, TImage *out, typename TImage::PixelType label, typename TImage::IndexValueType i, typename TImage::IndexValueType j, typename SliceType::Pointer &iconn, typename SliceType::Pointer &jconn)
 
IdentifierType Intersection (typename SliceType::Pointer &iConn, typename TImage::PixelType iRegionId, typename SliceType::Pointer &jConn, const PixelList &jRegionIds, const typename SliceType::IndexType &translation)
 
void IntersectionRegions (const typename SliceType::IndexType &translation, typename SliceType::RegionType &iRegion, typename SliceType::RegionType &jRegion)
 
FloatSliceType::Pointer MaurerDM (typename BoolSliceType::Pointer &inImage)
 
 MorphologicalContourInterpolator ()
 
SliceType::Pointer RegionedConnectedComponents (const typename TImage::RegionType &region, typename TImage::PixelType label, IdentifierType &objectCount)
 
SliceType::Pointer TranslateImage (typename SliceType::Pointer &image, const typename SliceType::IndexType &translation, typename SliceType::RegionType newRegion)
 
 ~MorphologicalContourInterpolator () override=default
 

Protected Attributes

int m_Axis { -1 }
 
BinarizerType::Pointer m_Binarizer
 
BoundingBoxesType m_BoundingBoxes
 
ConnectedComponentsType::Pointer m_ConnectedComponents
 
bool m_HeuristicAlignment { true }
 
TImage::PixelType m_Label
 
SliceIndicesType m_LabeledSlices
 
IdentifierType m_MaxAlignIters
 
IdentifierType m_MinAlignIters
 
RoiType::Pointer m_RoI
 
IdentifierType m_ThreadCount
 
bool m_UseBallStructuringElement { false }
 
bool m_UseCustomSlicePositions { false }
 
bool m_UseDistanceTransform { true }
 

Friends

template<typename T >
class MorphologicalContourInterpolatorParallelInvoker
 

Detailed Description

template<typename TImage>
class itk::MorphologicalContourInterpolator< TImage >

Interpolates contours between slices. Based on a paper by Albu et al.

Inputs and Outputs
This is an image-to-image filter. The dimensionality is 3D or higher. Input contains an image with some slices segmented, usually manually. The output has all in-between slices also segmented.
Parameters
Slices are detected at positions where a pixel exists with same labeled neighbors in slice and only clear (0) neighbors perpendicular to the slice. If default behaviour is unwanted, contour indices can be set by enabling UseCustomSlicePositions and calling SetLabeledSliceIndices.

Filter can be restricted to run along only one axis, and/or to interpolate just one label.

Since optimal alignment between slices would require exhaustive search, the default is to use heuristic (breadth first search starting from centroid).

There is also an alternative algorithm based on distance transform approach. It is slightly faster, but it can jump across a twisty shape (not geodesic).

Reference: Albu AB, Beugeling T, Laurendeau D. "A morphology-based approach for interslice interpolation of anatomical slices from volumetric images." IEEE Trans Biomed Eng. 2008 Aug;55(8):2022-38. DOI:10.1109/TBME.2008.921158

Acknowledgement: This work is supported by NIH grant R01 EB014346, "Continued development and maintenance of the ITK-SNAP 3D image segmentation software."

Definition at line 65 of file itkMorphologicalContourInterpolator.h.

Member Typedef Documentation

◆ BinarizerType

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::BinarizerType = BinaryThresholdImageFilter< SliceType, BoolSliceType >
protected

Definition at line 394 of file itkMorphologicalContourInterpolator.h.

◆ BoolImageType

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::BoolImageType = Image< bool, TImage::ImageDimension >
protected

Derived image type alias.

Definition at line 235 of file itkMorphologicalContourInterpolator.h.

◆ BoolSliceType

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::BoolSliceType = Image< bool, TImage::ImageDimension - 1 >
protected

Definition at line 237 of file itkMorphologicalContourInterpolator.h.

◆ BoundingBoxesType

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::BoundingBoxesType = itksys::hash_map< typename TImage::PixelType, typename TImage::RegionType >
protected

Definition at line 367 of file itkMorphologicalContourInterpolator.h.

◆ ConnectedComponentsType

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::ConnectedComponentsType = ConnectedComponentImageFilter< BoolSliceType, SliceType >
protected

Definition at line 397 of file itkMorphologicalContourInterpolator.h.

◆ FloatSliceType

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::FloatSliceType = Image< float, TImage::ImageDimension - 1 >
protected

Definition at line 236 of file itkMorphologicalContourInterpolator.h.

◆ LabeledSlicesType

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::LabeledSlicesType = itksys::hash_map< typename TImage::PixelType, SliceSetType >

Definition at line 210 of file itkMorphologicalContourInterpolator.h.

◆ PixelList

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::PixelList = std::vector< typename TImage::PixelType >
protected

Definition at line 311 of file itkMorphologicalContourInterpolator.h.

◆ Pointer

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::Pointer = SmartPointer< Self >

Definition at line 77 of file itkMorphologicalContourInterpolator.h.

◆ RoiType

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::RoiType = ExtractImageFilter< TImage, SliceType >
protected

Definition at line 391 of file itkMorphologicalContourInterpolator.h.

◆ Self

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::Self = MorphologicalContourInterpolator

Standard class type alias.

Definition at line 75 of file itkMorphologicalContourInterpolator.h.

◆ SliceIndicesType

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::SliceIndicesType = std::vector< LabeledSlicesType >

Definition at line 211 of file itkMorphologicalContourInterpolator.h.

◆ SliceSetType

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::SliceSetType = std::set< typename TImage::IndexValueType >

An std::set of slice indices which need to be interpolated.

Definition at line 169 of file itkMorphologicalContourInterpolator.h.

◆ SliceType

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::SliceType = Image< typename TImage::PixelType, TImage::ImageDimension - 1 >

Definition at line 78 of file itkMorphologicalContourInterpolator.h.

◆ Superclass

template<typename TImage >
using itk::MorphologicalContourInterpolator< TImage >::Superclass = ImageToImageFilter< TImage, TImage >

Definition at line 76 of file itkMorphologicalContourInterpolator.h.

Constructor & Destructor Documentation

◆ MorphologicalContourInterpolator()

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::MorphologicalContourInterpolator ( )
protected

◆ ~MorphologicalContourInterpolator()

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::~MorphologicalContourInterpolator ( )
overrideprotecteddefault

Member Function Documentation

◆ Align()

template<typename TImage >
SliceType::IndexType itk::MorphologicalContourInterpolator< TImage >::Align ( typename SliceType::Pointer &  iConn,
typename TImage::PixelType  iRegionId,
typename SliceType::Pointer &  jConn,
const PixelList jRegionIds 
)
protected

How much j needs to be translated to best align with i

◆ AllocateOutputs()

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::AllocateOutputs ( )
overrideprotected

Copied from ImageSource and changed to allocate a cleared buffer.

◆ BoundingBox()

template<typename TImage >
SliceType::RegionType itk::MorphologicalContourInterpolator< TImage >::BoundingBox ( itk::SmartPointer< SliceType image)
protected

Calculates a bounding box of non-zero pixels.

◆ CardinalSymmetricDifference()

template<typename TImage >
IdentifierType itk::MorphologicalContourInterpolator< TImage >::CardinalSymmetricDifference ( typename BoolSliceType::Pointer &  shape1,
typename BoolSliceType::Pointer &  shape2 
)
protected

The returns cardingal of the symmetric distance between images. The images must cover the same region.

◆ Centroid()

template<typename TImage >
SliceType::IndexType itk::MorphologicalContourInterpolator< TImage >::Centroid ( typename SliceType::Pointer &  conn,
const PixelList regionIds 
)
protected

Returns the centroid of given regions

◆ ClearLabeledSliceIndices()

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::ClearLabeledSliceIndices ( )
inline

Clears all custom slice positions.

Definition at line 173 of file itkMorphologicalContourInterpolator.h.

◆ DetermineSliceOrientations()

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::DetermineSliceOrientations ( )

If there is a pixel whose all 4-way neighbors belong the the same label except along one axis, and along that axis its neighbors are 0 (background), then that axis should be interpolated along. Interpolation is possible along more than one axis. Updates LabeledSliceIndices.

◆ Dilate1()

template<typename TImage >
BoolSliceType::Pointer itk::MorphologicalContourInterpolator< TImage >::Dilate1 ( typename BoolSliceType::Pointer &  seed,
typename BoolSliceType::Pointer &  mask 
)
protected

Seed and mask must cover the same region (size and index the same).

◆ ExpandRegion()

template<typename TImage >
template<typename T2 >
void itk::MorphologicalContourInterpolator< TImage >::ExpandRegion ( typename T2::RegionType &  region,
const typename T2::IndexType &  index 
)
protected

Expands a region to incorporate the provided index. Assumes both a valid region and a valid index. It can be invoked with 2D or 3D region, hence the additional template parameter.

◆ Extrapolate()

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::Extrapolate ( int  axis,
TImage *  out,
typename TImage::PixelType  label,
typename TImage::IndexValueType  i,
typename TImage::IndexValueType  j,
typename SliceType::Pointer &  iConn,
typename TImage::PixelType  iRegionId 
)
protected

Slice i has a region, slice j does not

◆ FindMedianImageDilations()

template<typename TImage >
BoolSliceType::Pointer itk::MorphologicalContourInterpolator< TImage >::FindMedianImageDilations ( typename BoolSliceType::Pointer &  intersection,
typename BoolSliceType::Pointer &  iMask,
typename BoolSliceType::Pointer &  jMask 
)
protected

Finds an interpolating mask for these two aligned masks

◆ FindMedianImageDistances()

template<typename TImage >
BoolSliceType::Pointer itk::MorphologicalContourInterpolator< TImage >::FindMedianImageDistances ( typename BoolSliceType::Pointer &  intersection,
typename BoolSliceType::Pointer &  iMask,
typename BoolSliceType::Pointer &  jMask 
)
protected

Finds an interpolating mask for these two aligned masks

◆ GenerateData()

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::GenerateData ( )
overrideprotected

Does the real work.

◆ GenerateDilationSequence()

template<typename TImage >
std::vector< typename BoolSliceType::Pointer > itk::MorphologicalContourInterpolator< TImage >::GenerateDilationSequence ( typename BoolSliceType::Pointer &  begin,
typename BoolSliceType::Pointer &  end 
)
protected

A sequence of conditional dilations starting with begin and reaching end. begin and end must cover the same region (size and index the same)

◆ GetLabeledSliceIndices() [1/2]

template<typename TImage >
SliceSetType itk::MorphologicalContourInterpolator< TImage >::GetLabeledSliceIndices ( unsigned int  axis,
typename TImage::PixelType  label 
)
inline

Slice indices between which interpolation is done.

Definition at line 204 of file itkMorphologicalContourInterpolator.h.

◆ GetLabeledSliceIndices() [2/2]

template<typename TImage >
SliceIndicesType itk::MorphologicalContourInterpolator< TImage >::GetLabeledSliceIndices ( )
inline

Slice indices between which interpolation is done.

Definition at line 215 of file itkMorphologicalContourInterpolator.h.

◆ ImagesEqual()

template<typename TImage >
bool itk::MorphologicalContourInterpolator< TImage >::ImagesEqual ( typename BoolSliceType::Pointer &  a,
typename BoolSliceType::Pointer &  b 
)
protected

Are these two slices equal?

◆ Interpolate1to1()

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::Interpolate1to1 ( int  axis,
TImage *  out,
typename TImage::PixelType  label,
typename TImage::IndexValueType  i,
typename TImage::IndexValueType  j,
typename SliceType::Pointer &  iConn,
typename TImage::PixelType  iRegionId,
typename SliceType::Pointer &  jConn,
typename TImage::PixelType  jRegionId,
const typename SliceType::IndexType &  translation,
bool  recursive 
)
protected

Build transition sequence and pick the median

◆ Interpolate1toN()

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::Interpolate1toN ( int  axis,
TImage *  out,
typename TImage::PixelType  label,
typename TImage::IndexValueType  i,
typename TImage::IndexValueType  j,
typename SliceType::Pointer &  iConn,
typename TImage::PixelType  iRegionId,
typename SliceType::Pointer &  jConn,
const PixelList jRegionIds,
const typename SliceType::IndexType &  translation 
)
protected

Splits the bigger region and does N 1-to-1 interpolations

◆ InterpolateAlong()

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::InterpolateAlong ( int  axis,
TImage *  out,
float  startProgress,
float  endProgress 
)
protected

If interpolation is done along more than one axis, the interpolations are merged using a modified "or" rule: -if all interpolated images have 0 for a given pixel, the output is 0 -if just one image has a non-zero label, then that label is chosen -if more than one image has a non-zero label, last written label is chosen

◆ InterpolateBetweenTwo()

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::InterpolateBetweenTwo ( int  axis,
TImage *  out,
typename TImage::PixelType  label,
typename TImage::IndexValueType  i,
typename TImage::IndexValueType  j,
typename SliceType::Pointer &  iconn,
typename SliceType::Pointer &  jconn 
)
protected

Determines correspondances between two slices and calls apropriate methods.

◆ Intersection()

template<typename TImage >
IdentifierType itk::MorphologicalContourInterpolator< TImage >::Intersection ( typename SliceType::Pointer &  iConn,
typename TImage::PixelType  iRegionId,
typename SliceType::Pointer &  jConn,
const PixelList jRegionIds,
const typename SliceType::IndexType &  translation 
)
protected

Returns number of intersecting pixels

◆ IntersectionRegions()

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::IntersectionRegions ( const typename SliceType::IndexType &  translation,
typename SliceType::RegionType &  iRegion,
typename SliceType::RegionType &  jRegion 
)
protected

Calculates maximum intersection region for both slices given a translation. Both inputs are modified so that jRegion is a translated version of iRegion.

◆ ITK_DISALLOW_COPY_AND_ASSIGN()

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::ITK_DISALLOW_COPY_AND_ASSIGN ( MorphologicalContourInterpolator< TImage >  )

◆ itkGetConstMacro() [1/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetConstMacro ( Label  ,
typename TImage::PixelType   
)

Which label is interpolated. 0 means all labels (default).

◆ itkGetConstMacro() [2/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetConstMacro ( Axis  ,
int   
)

Axis of interpolation. -1 means interpolation along all axes (default).

◆ itkGetConstMacro() [3/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetConstMacro ( HeuristicAlignment  ,
bool   
)

Heuristic alignment of regions for interpolation is faster than optimal alignment. Default is heuristic.

◆ itkGetConstMacro() [4/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetConstMacro ( UseDistanceTransform  ,
bool   
)

Using distance transform instead of repeated dilations to calculate the median contour is slightly faster, but produces lower quality interpolations. Default is OFF (that is, use repeated dilations).

◆ itkGetConstMacro() [5/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetConstMacro ( UseCustomSlicePositions  ,
bool   
)

Use custom slice positions (not slice auto-detection). SetLabeledSliceIndices has to be called prior to Update().

◆ itkGetConstMacro() [6/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetConstMacro ( UseBallStructuringElement  ,
bool   
)

Use ball instead of default cross structuring element for repeated dilations.

◆ itkGetMacro() [1/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetMacro ( Label  ,
typename TImage::PixelType   
)

Which label is interpolated. 0 means all labels (default).

◆ itkGetMacro() [2/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetMacro ( Axis  ,
int   
)

Axis of interpolation. -1 means interpolation along all axes (default).

◆ itkGetMacro() [3/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetMacro ( HeuristicAlignment  ,
bool   
)

Heuristic alignment of regions for interpolation is faster than optimal alignment. Default is heuristic.

◆ itkGetMacro() [4/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetMacro ( UseDistanceTransform  ,
bool   
)

Using distance transform instead of repeated dilations to calculate the median contour is slightly faster, but produces lower quality interpolations. Default is OFF (that is, use repeated dilations).

◆ itkGetMacro() [5/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetMacro ( UseCustomSlicePositions  ,
bool   
)

Use custom slice positions (not slice auto-detection). SetLabeledSliceIndices has to be called prior to Update().

◆ itkGetMacro() [6/6]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkGetMacro ( UseBallStructuringElement  ,
bool   
)

Use ball instead of default cross structuring element for repeated dilations.

◆ itkNewMacro()

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkNewMacro ( Self  )

Method for creation through the object factory.

◆ itkSetMacro() [1/5]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkSetMacro ( Label  ,
typename TImage::PixelType   
)

Interpolate only this label. Interpolates all labels if set to 0 (default).

◆ itkSetMacro() [2/5]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkSetMacro ( Axis  ,
int   
)

Interpolate only along this axis. Interpolates along all axes if set to -1 (default).

◆ itkSetMacro() [3/5]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkSetMacro ( HeuristicAlignment  ,
bool   
)

Heuristic alignment of regions for interpolation is faster than optimal alignment. Default is heuristic.

◆ itkSetMacro() [4/5]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkSetMacro ( UseDistanceTransform  ,
bool   
)

Using distance transform instead of repeated dilations to calculate the median contour is slightly faster, but produces lower quality interpolations. Default is OFF (that is, use repeated dilations).

◆ itkSetMacro() [5/5]

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkSetMacro ( UseCustomSlicePositions  ,
bool   
)

Use custom slice positions (not slice auto-detection). SetLabeledSliceIndices has to be called prior to Update().

◆ itkTypeMacro()

template<typename TImage >
itk::MorphologicalContourInterpolator< TImage >::itkTypeMacro ( MorphologicalContourInterpolator< TImage >  ,
ImageToImageFilter   
)

Run-time type information (and related methods).

◆ MaurerDM()

template<typename TImage >
FloatSliceType::Pointer itk::MorphologicalContourInterpolator< TImage >::MaurerDM ( typename BoolSliceType::Pointer &  inImage)
protected

Creates a signed distance field image.

◆ RegionedConnectedComponents()

template<typename TImage >
SliceType::Pointer itk::MorphologicalContourInterpolator< TImage >::RegionedConnectedComponents ( const typename TImage::RegionType &  region,
typename TImage::PixelType  label,
IdentifierType &  objectCount 
)
protected

Connected components of a specified region.

◆ SetLabeledSliceIndices() [1/2]

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::SetLabeledSliceIndices ( unsigned int  axis,
typename TImage::PixelType  label,
const std::vector< typename TImage::IndexValueType > &  indices 
)
inline

If default slice detection is not wanted, slice indices between which interpolation is done can be set using this method.

Definition at line 183 of file itkMorphologicalContourInterpolator.h.

◆ SetLabeledSliceIndices() [2/2]

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::SetLabeledSliceIndices ( unsigned int  axis,
typename TImage::PixelType  label,
const SliceSetType indices 
)
inline

If default slice detection is not wanted, slice indices between which interpolation is done can be set using this method.

Definition at line 196 of file itkMorphologicalContourInterpolator.h.

◆ SetUseBallStructuringElement()

template<typename TImage >
void itk::MorphologicalContourInterpolator< TImage >::SetUseBallStructuringElement ( bool  useBall)
inline

Use ball instead of default cross structuring element for repeated dilations.

Definition at line 145 of file itkMorphologicalContourInterpolator.h.

◆ TranslateImage()

template<typename TImage >
SliceType::Pointer itk::MorphologicalContourInterpolator< TImage >::TranslateImage ( typename SliceType::Pointer &  image,
const typename SliceType::IndexType &  translation,
typename SliceType::RegionType  newRegion 
)
protected

Crates a translated copy of part of the image which fits in the newRegion.

Friends And Related Function Documentation

◆ MorphologicalContourInterpolatorParallelInvoker

template<typename TImage >
template<typename T >
friend class MorphologicalContourInterpolatorParallelInvoker
friend

Definition at line 69 of file itkMorphologicalContourInterpolator.h.

Member Data Documentation

◆ m_Axis

template<typename TImage >
int itk::MorphologicalContourInterpolator< TImage >::m_Axis { -1 }
protected

Definition at line 224 of file itkMorphologicalContourInterpolator.h.

◆ m_Binarizer

template<typename TImage >
BinarizerType::Pointer itk::MorphologicalContourInterpolator< TImage >::m_Binarizer
protected

Definition at line 395 of file itkMorphologicalContourInterpolator.h.

◆ m_BoundingBoxes

template<typename TImage >
BoundingBoxesType itk::MorphologicalContourInterpolator< TImage >::m_BoundingBoxes
protected

Definition at line 368 of file itkMorphologicalContourInterpolator.h.

◆ m_ConnectedComponents

template<typename TImage >
ConnectedComponentsType::Pointer itk::MorphologicalContourInterpolator< TImage >::m_ConnectedComponents
protected

Definition at line 398 of file itkMorphologicalContourInterpolator.h.

◆ m_HeuristicAlignment

template<typename TImage >
bool itk::MorphologicalContourInterpolator< TImage >::m_HeuristicAlignment { true }
protected

Definition at line 225 of file itkMorphologicalContourInterpolator.h.

◆ m_Label

template<typename TImage >
TImage::PixelType itk::MorphologicalContourInterpolator< TImage >::m_Label
protected

Definition at line 223 of file itkMorphologicalContourInterpolator.h.

◆ m_LabeledSlices

template<typename TImage >
SliceIndicesType itk::MorphologicalContourInterpolator< TImage >::m_LabeledSlices
protected

Definition at line 232 of file itkMorphologicalContourInterpolator.h.

◆ m_MaxAlignIters

template<typename TImage >
IdentifierType itk::MorphologicalContourInterpolator< TImage >::m_MaxAlignIters
protected

Definition at line 230 of file itkMorphologicalContourInterpolator.h.

◆ m_MinAlignIters

template<typename TImage >
IdentifierType itk::MorphologicalContourInterpolator< TImage >::m_MinAlignIters
protected

Definition at line 229 of file itkMorphologicalContourInterpolator.h.

◆ m_RoI

template<typename TImage >
RoiType::Pointer itk::MorphologicalContourInterpolator< TImage >::m_RoI
protected

Definition at line 392 of file itkMorphologicalContourInterpolator.h.

◆ m_ThreadCount

template<typename TImage >
IdentifierType itk::MorphologicalContourInterpolator< TImage >::m_ThreadCount
protected

Definition at line 231 of file itkMorphologicalContourInterpolator.h.

◆ m_UseBallStructuringElement

template<typename TImage >
bool itk::MorphologicalContourInterpolator< TImage >::m_UseBallStructuringElement { false }
protected

Definition at line 227 of file itkMorphologicalContourInterpolator.h.

◆ m_UseCustomSlicePositions

template<typename TImage >
bool itk::MorphologicalContourInterpolator< TImage >::m_UseCustomSlicePositions { false }
protected

Definition at line 228 of file itkMorphologicalContourInterpolator.h.

◆ m_UseDistanceTransform

template<typename TImage >
bool itk::MorphologicalContourInterpolator< TImage >::m_UseDistanceTransform { true }
protected

Definition at line 226 of file itkMorphologicalContourInterpolator.h.


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