Slicer
4.8
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
|
Interpolates contours between slices. Based on a paper by Albu et al. More...
#include <Libs/vtkITK/itkMorphologicalContourInterpolator.h>
Public Types | |
typedef itksys::hash_map< typename TImage::PixelType, SliceSetType > | LabeledSlicesType |
typedef SmartPointer< Self > | Pointer |
typedef MorphologicalContourInterpolator | Self |
typedef std::vector< LabeledSlicesType > | SliceIndicesType |
typedef std::set< typename TImage::IndexValueType > | SliceSetType |
typedef Image< typename TImage::PixelType, TImage::ImageDimension - 1 > | SliceType |
typedef ImageToImageFilter< TImage, TImage > | Superclass |
Public Member Functions | |
void | ClearLabeledSliceIndices () |
void | DetermineSliceOrientations () |
SliceSetType | GetLabeledSliceIndices (unsigned int axis, typename TImage::PixelType label) |
SliceIndicesType | GetLabeledSliceIndices () |
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 | |
typedef BinaryThresholdImageFilter< SliceType, BoolSliceType > | BinarizerType |
typedef Image< bool, TImage::ImageDimension > | BoolImageType |
typedef Image< bool, TImage::ImageDimension - 1 > | BoolSliceType |
typedef itksys::hash_map< typename TImage::PixelType, typename TImage::RegionType > | BoundingBoxesType |
typedef ConnectedComponentImageFilter< BoolSliceType, SliceType > | ConnectedComponentsType |
typedef Image< float, TImage::ImageDimension - 1 > | FloatSliceType |
typedef std::vector< typename TImage::PixelType > | PixelList |
typedef ExtractImageFilter< TImage, SliceType > | RoiType |
Protected Member Functions | |
SliceType::IndexType | Align (typename SliceType::Pointer &iConn, typename TImage::PixelType iRegionId, typename SliceType::Pointer &jConn, const PixelList &jRegionIds) |
virtual void | AllocateOutputs () ITK_OVERRIDE |
SliceType::RegionType | BoundingBox (itk::SmartPointer< SliceType > image) |
IdentifierType | CardSymDifference (typename BoolSliceType::Pointer &shape1, typename BoolSliceType::Pointer &shape2) |
SliceType::IndexType | Centroid (typename SliceType::Pointer &conn, const PixelList ®ionIds) |
BoolSliceType::Pointer | Dilate1 (typename BoolSliceType::Pointer &seed, typename BoolSliceType::Pointer &mask, ThreadIdType threadId) |
template<typename T2 > | |
void | ExpandRegion (typename T2::RegionType ®ion, 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, ThreadIdType threadId) |
BoolSliceType::Pointer | FindMedianImageDilations (typename BoolSliceType::Pointer &intersection, typename BoolSliceType::Pointer &iMask, typename BoolSliceType::Pointer &jMask, ThreadIdType threadId) |
BoolSliceType::Pointer | FindMedianImageDistances (typename BoolSliceType::Pointer &intersection, typename BoolSliceType::Pointer &iMask, typename BoolSliceType::Pointer &jMask, ThreadIdType threadId) |
virtual void | GenerateData () ITK_OVERRIDE |
std::vector< typename BoolSliceType::Pointer > | GenerateDilationSequence (typename BoolSliceType::Pointer &begin, typename BoolSliceType::Pointer &end, ThreadIdType threadId) |
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, ThreadIdType threadId) |
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, ThreadIdType threadId) |
void | InterpolateAlong (int axis, TImage *out) |
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, ThreadIdType threadId) |
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, ThreadIdType threadId) |
MorphologicalContourInterpolator () | |
SliceType::Pointer | RegionedConnectedComponents (const typename TImage::RegionType ®ion, typename TImage::PixelType label, IdentifierType &objectCount) |
SliceType::Pointer | TranslateImage (typename SliceType::Pointer &image, const typename SliceType::IndexType &translation, typename SliceType::RegionType newRegion) |
~MorphologicalContourInterpolator () | |
Protected Attributes | |
int | m_Axis |
BinarizerType::Pointer | m_Binarizer |
BoundingBoxesType | m_BoundingBoxes |
ConnectedComponentsType::Pointer | m_ConnectedComponents |
bool | m_HeuristicAlignment |
TImage::PixelType | m_Label |
SliceIndicesType | m_LabeledSlices |
IdentifierType | m_MaxAlignIters |
IdentifierType | m_MinAlignIters |
RoiType::Pointer | m_RoI |
IdentifierType | m_ThreadCount |
bool | m_UseBallStructuringElement |
bool | m_UseCustomSlicePositions |
bool | m_UseDistanceTransform |
Friends | |
template<typename T > | |
class | MorphologicalContourInterpolatorParallelInvoker |
Interpolates contours between slices. Based on a paper by Albu et al.
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.
|
protected |
Definition at line 397 of file itkMorphologicalContourInterpolator.h.
|
protected |
Derived image typedefs.
Definition at line 231 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 233 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 370 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 400 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 232 of file itkMorphologicalContourInterpolator.h.
typedef itksys::hash_map< typename TImage::PixelType, SliceSetType > itk::MorphologicalContourInterpolator< TImage >::LabeledSlicesType |
Definition at line 206 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 313 of file itkMorphologicalContourInterpolator.h.
typedef SmartPointer< Self > itk::MorphologicalContourInterpolator< TImage >::Pointer |
Definition at line 75 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 394 of file itkMorphologicalContourInterpolator.h.
typedef MorphologicalContourInterpolator itk::MorphologicalContourInterpolator< TImage >::Self |
Standard class typedefs.
Definition at line 73 of file itkMorphologicalContourInterpolator.h.
typedef std::vector< LabeledSlicesType > itk::MorphologicalContourInterpolator< TImage >::SliceIndicesType |
Definition at line 207 of file itkMorphologicalContourInterpolator.h.
typedef std::set< typename TImage::IndexValueType > itk::MorphologicalContourInterpolator< TImage >::SliceSetType |
An std::set of slice indices which need to be interpolated.
Definition at line 167 of file itkMorphologicalContourInterpolator.h.
typedef Image< typename TImage::PixelType, TImage::ImageDimension - 1 > itk::MorphologicalContourInterpolator< TImage >::SliceType |
Definition at line 76 of file itkMorphologicalContourInterpolator.h.
typedef ImageToImageFilter< TImage, TImage > itk::MorphologicalContourInterpolator< TImage >::Superclass |
Definition at line 74 of file itkMorphologicalContourInterpolator.h.
|
protected |
|
inlineprotected |
Definition at line 218 of file itkMorphologicalContourInterpolator.h.
|
protected |
How much j needs to be translated to best align with i
|
protectedvirtual |
Copied from ImageSource and changed to allocate a cleared buffer.
|
protected |
Calculates a bounding box of non-zero pixels.
|
protected |
The returns cardingal of the symmetric distance between images. The images must cover the same region
|
protected |
Returns the centroid of given regions
|
inline |
Clears all custom slice positions.
Definition at line 171 of file itkMorphologicalContourInterpolator.h.
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.
|
protected |
Seed and mask must cover the same region (size and index the same).
|
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.
|
protected |
Slice i has a region, slice j does not
|
protected |
Finds an interpolating mask for these two aligned masks
|
protected |
Finds an interpolating mask for these two aligned masks
|
protectedvirtual |
Does the real work.
|
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)
|
inline |
Slice indices between which interpolation is done.
Definition at line 200 of file itkMorphologicalContourInterpolator.h.
|
inline |
Slice indices between which interpolation is done.
Definition at line 211 of file itkMorphologicalContourInterpolator.h.
|
protected |
Are these two slices equal?
|
protected |
Build transition sequence and pick the median
|
protected |
Splits the bigger region and does N 1-to-1 interpolations
|
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
|
protected |
Determines correspondances between two slices and calls apropriate methods.
|
protected |
Returns number of intersecting pixels
|
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::MorphologicalContourInterpolator< TImage >::itkGetConstMacro | ( | Label | , |
typename TImage::PixelType | |||
) |
Which label is interpolated. 0 means all labels (default).
itk::MorphologicalContourInterpolator< TImage >::itkGetConstMacro | ( | Axis | , |
int | |||
) |
Axis of interpolation. -1 means interpolation along all axes (default).
itk::MorphologicalContourInterpolator< TImage >::itkGetConstMacro | ( | HeuristicAlignment | , |
bool | |||
) |
Heuristic alignment of regions for interpolation is faster than optimal alignment. Default is heuristic.
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).
itk::MorphologicalContourInterpolator< TImage >::itkGetConstMacro | ( | UseCustomSlicePositions | , |
bool | |||
) |
Use custom slice positions (not slice auto-detection). SetLabeledSliceIndices has to be called prior to Update().
itk::MorphologicalContourInterpolator< TImage >::itkGetConstMacro | ( | UseBallStructuringElement | , |
bool | |||
) |
Use ball instead of default cross structuring element for repeated dilations.
itk::MorphologicalContourInterpolator< TImage >::itkGetMacro | ( | Label | , |
typename TImage::PixelType | |||
) |
Which label is interpolated. 0 means all labels (default).
itk::MorphologicalContourInterpolator< TImage >::itkGetMacro | ( | Axis | , |
int | |||
) |
Axis of interpolation. -1 means interpolation along all axes (default).
itk::MorphologicalContourInterpolator< TImage >::itkGetMacro | ( | HeuristicAlignment | , |
bool | |||
) |
Heuristic alignment of regions for interpolation is faster than optimal alignment. Default is heuristic.
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).
itk::MorphologicalContourInterpolator< TImage >::itkGetMacro | ( | UseCustomSlicePositions | , |
bool | |||
) |
Use custom slice positions (not slice auto-detection). SetLabeledSliceIndices has to be called prior to Update().
itk::MorphologicalContourInterpolator< TImage >::itkGetMacro | ( | UseBallStructuringElement | , |
bool | |||
) |
Use ball instead of default cross structuring element for repeated dilations.
itk::MorphologicalContourInterpolator< TImage >::itkNewMacro | ( | Self | ) |
Method for creation through the object factory.
itk::MorphologicalContourInterpolator< TImage >::itkSetMacro | ( | Label | , |
typename TImage::PixelType | |||
) |
Interpolate only this label. Interpolates all labels if set to 0 (default).
itk::MorphologicalContourInterpolator< TImage >::itkSetMacro | ( | Axis | , |
int | |||
) |
Interpolate only along this axis. Interpolates along all axes if set to -1 (default).
itk::MorphologicalContourInterpolator< TImage >::itkSetMacro | ( | HeuristicAlignment | , |
bool | |||
) |
Heuristic alignment of regions for interpolation is faster than optimal alignment. Default is heuristic.
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).
itk::MorphologicalContourInterpolator< TImage >::itkSetMacro | ( | UseCustomSlicePositions | , |
bool | |||
) |
Use custom slice positions (not slice auto-detection). SetLabeledSliceIndices has to be called prior to Update().
itk::MorphologicalContourInterpolator< TImage >::itkTypeMacro | ( | MorphologicalContourInterpolator< TImage > | , |
ImageToImageFilter | |||
) |
Run-time type information (and related methods).
|
protected |
Creates a signed distance field image.
|
protected |
Connected components of a specified region.
|
inline |
If default slice detection is not wanted, slice indices between which interpolation is done can be set using this method.
Definition at line 181 of file itkMorphologicalContourInterpolator.h.
|
inline |
If default slice detection is not wanted, slice indices between which interpolation is done can be set using this method.
Definition at line 192 of file itkMorphologicalContourInterpolator.h.
|
inline |
Use ball instead of default cross structuring element for repeated dilations.
Definition at line 143 of file itkMorphologicalContourInterpolator.h.
|
protected |
Crates a translated copy of part of the image which fits in the newRegion.
|
friend |
Definition at line 69 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 220 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 398 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 371 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 401 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 221 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 219 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 228 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 226 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 225 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 395 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 227 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 223 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 224 of file itkMorphologicalContourInterpolator.h.
|
protected |
Definition at line 222 of file itkMorphologicalContourInterpolator.h.