ITK/Examples: Difference between revisions

From KitwarePublic
< ITK
Jump to navigationJump to search
(Deprecated content that is moved to sphinx)
(Deprecated content that is moved to sphinx)
Line 96: Line 96:
==Image Registration==
==Image Registration==
{{ITKExamplesTable}}
{{ITKExamplesTable}}
|-
| [[ITK/Examples/Registration/LandmarkBasedTransformInitializer | Rigidly register one image to another using manually specified landmarks ]] || {{ITKDoxygenURL|LandmarkBasedTransformInitializer}} ||
|-
|-
| [[ITK/Examples/Registration/DeformationFieldTransform | Register one image to another using manually specified landmarks ]] || {{ITKDoxygenURL|DeformationFieldTransform}} ||
| [[ITK/Examples/Registration/DeformationFieldTransform | Register one image to another using manually specified landmarks ]] || {{ITKDoxygenURL|DeformationFieldTransform}} ||
|-
| [[ITK/Examples/Registration/ImageRegistrationMethod | A basic global registration of two images ]] || {{ITKDoxygenURL|ImageRegistrationMethod}}, {{ITKDoxygenURL|TranslationTransform}} || Translation only transform.
|-
| [[ITK/Examples/Registration/ImageRegistrationMethodAffine | A global registration of two images ]] || {{ITKDoxygenURL|ImageRegistrationMethod}}, {{ITKDoxygenURL|AffineTransform}} || Full affine transform.
|-
| [[ITK/Examples/Registration/ImageRegistrationMethodBSpline | A global registration of two images ]] || {{ITKDoxygenURL|ImageRegistrationMethod}}, {{ITKDoxygenURL|BSplineDeformableTransform}} || BSpline transform.
|-
| [[ITK/Examples/Registration/MutualInformation | Mutual Information ]] || {{ITKDoxygenURL|MutualInformationImageToImageMetric}}, {{ITKDoxygenURL|TranslationTransform}}  || Global registration by maximizing the mutual information and using a translation only transform
|-
| [[ITK/Examples/Registration/MutualInformationAffine | Mutual Information Affine]] || {{ITKDoxygenURL|MutualInformationImageToImageMetric}}, {{ITKDoxygenURL|AffineTransform}}  || Global registration by maximizing the mutual information and using an affine transform
|-
| [[ITK/Examples/Registration/ExhaustiveOptimizer | ExhaustiveOptimizer ]] || {{ITKDoxygenURL|ExhaustiveOptimizer}}  || An optimizer that fully samples a grid on the parametric space
|-
| [[ITK/Examples/Registration/WatchRegistration | WatchRegistration ]] || {{ITKDoxygenURL|MattesMutualInformationImageToImageMetric}}  || Watch the iterations of a registration using VTK.
|}
|}



Revision as of 15:22, 7 June 2019

Warning: The media wiki content on this page is no longer maintained. The examples presented on the https://itk.org/Wiki/* pages likely require ITK version 4.13 or earlier releases. In many cases, the examples on this page no longer conform to the best practices for modern ITK versions. Recent examples that are up to date with ITK version 5 can be found at ITK Examples

CMake Techniques

Example Name ITK Classes Demonstrated Description
Check if a specific module is present
Check for ITK4

Visualization

Example Name ITK Classes Demonstrated Description
Display an image QuickView

Simple Operations

Example Name ITK Classes Demonstrated Description

Mathematical Operations

Example Name ITK Classes Demonstrated Description

Trigonometric Filters

Example Name ITK Classes Demonstrated Description

Image Functions

Example Name ITK Classes Demonstrated Description

Input/Output (IO)

Example Name ITK Classes Demonstrated Description
Display an ITK image ImageToVTKImageFilter
Create a 3D volume from a series of 2D images ImageSeriesReader Uses NumericSeriesFileNames to generate a list of file names

DICOM

Example Name ITK Classes Demonstrated Description

Blob Detection, Labeling, and Properties

Example Name ITK Classes Demonstrated Description

Iterating Over (Traversing) An Image

Example Name ITK Classes Demonstrated Description

Image Edges, Gradients, and Derivatives

Example Name ITK Classes Demonstrated Description

Spectral Analysis

Example Name ITK Classes Demonstrated Description
Compute the FFT of an image VnlFFTRealToComplexConjugateImageFilter
Compute the cross-correlation of two images in the Fourier domain VnlFFTRealToComplexConjugateImageFilterVnlFFTComplexConjugateToRealImageFilter

Statistics

Example Name ITK Classes Demonstrated Description
Compute a histogram from an RGB image. ImageToHistogramFilterRGB
Compute a histogram from a itk::VectorImage. ImageToHistogramFilterVectorImage
1D KMeans Clustering KdTreeBasedKMeansClustering
3D KMeans Clustering KdTreeBasedKMeansClustering
Compute kmeans clusters KdTreeBasedKmeansEstimator
Extract texture features using GLCM ScalarImageToCooccurrenceMatrixFilter

Spatial Objects

Example Name ITK Classes Demonstrated Description
Plane spatial object PlaneSpatialObject

Inspection

Example Name ITK Classes Demonstrated Description
Printing a pixel value to the console GetPixel

Image Registration

Example Name ITK Classes Demonstrated Description
Register one image to another using manually specified landmarks DeformationFieldTransform

Image Segmentation

Example Name ITK Classes Demonstrated Description
Extract contours from an image ContourExtractor2DImageFilter
Morphological Watershed segmentation MorphologicalWatershedImageFilter
Mean shift clustering SampleMeanShiftClusteringFilter
Voronoi diagram VoronoiDiagram2DGenerator, VoronoiDiagram2D
Label connected components in a binary image ConnectedComponentImageFilter
Label connected components in a grayscale image ScalarConnectedComponentImageFilter
Assign contiguous labels to connected regions of an image RelabelComponentImageFilter
Label the contours of connected components LabelContourImageFilter
Segment pixels with similar statistics using connectivity ConfidenceConnectedImageFilter
Convert an itk::Image consisting of labeled regions to a LabelMap

LabelImageToLabelMapFilter ||

Extract the largest connected component from a Binary Image
Simple implementation of Snakes
Extract the largest connected component from a Binary Image
Demonstrate available threshold algorithms
Demonstrate connected component algorithm using available threshold algorithms

Meshes

Example Name ITK Classes Demonstrated Description
Decimation
Add points and edges
Subdivide an itk::QuadEdgeMesh LoopTriangleCellSubdivisionQuadEdgeMeshFilter Perform a loop triangle cell subdivision on a spherical quad edge mesh.
Calculate Area and Volume of an itk::SimplexMesh SimplexMeshVolumeCalculator Calculate the area and volume of an itk::SimplexMesh.
Convert an itk::Mesh to a vtkUnstructuredGrid
Write an itk::Mesh to a vtp (vtkPolyData) file VTKPolyDataWriter
Working with PointData and CellData Mesh Associate point and cell data with a mesh.

Need Demo

This section consists of examples which compile and work, but a good demonstration image must be selected and added.

Example Name ITK Classes Demonstrated Description

Wish List

Example Name ITK Classes Demonstrated Description
Match feature points (hierarchically?) BlockMatchingImageFilter Segfault.
Uses a custom user matrix to align the image with DICOM physical space ImageToVTKImageFilter Need demo image.
Compute a PCA shape model from a training sample ImagePCAShapeModelEstimator

Estimate the principal modes of variation of a shape from a training sample. Useful for shape guide segmentation. Need example input files and arguments.

Multiphase Chan And Vese Sparse Field Level Set Segmentation ScalarChanAndVeseSparseLevelSetImageFilter, ScalarChanAndVeseLevelSetFunction Need example input files and arguments.
Single-phase Chan And Vese Sparse Field Level Set Segmentation ScalarChanAndVeseSparseLevelSetImageFilter, ScalarChanAndVeseLevelSetFunction Need example input files and arguments.
KMeans Clustering Need example input files and arguments.
Single-phase Chan And Vese Dense Field Level Set Segmentation ScalarChanAndVeseDenseLevelSetImageFilter, ScalarChanAndVeseLevelSetFunction Need example input files and arguments.
DisconnectPipeline
ConditionalConstIterator ConditionalConstIterator
Compute texture features ScalarImageToTextureFeaturesFilter How to interpret the output?
Resample an itk::VectorImage
Compute the histogram of a masked region of an image MaskedImageToHistogramFilter
Fit a spline to a point set BSplineScatteredDataPointSetToImageFilter
BinaryPruningImageFilter BinaryPruningImageFilter
Compute distributions of image pixels using GMM EM GaussianMixtureModelComponent
LevenbergMarquart
IterativeClosestPoints
Demonstrate all operators NeighborhoodOperator
Color Normalized Correlation NormalizedCorrelationImageFilter
ContourSpatialObject ContourSpatialObject
Store non-pixel associated data in an image MetaDataDictionary
Level Sets
Region Growing
Separate foreground and background using Otsu's method OtsuThresholdImageFilter
Extract contours from an image SimpleContourExtractorImageFilter
Present an image of RGBPixel pixels as an image of vectors RGBToVectorImageAdaptor
HoughTransform2DCirclesImageFilter HoughTransform2DCirclesImageFilter
HoughTransform2DLinesImageFilter HoughTransform2DLinesImageFilter
Write data from Matlab in a format readable by ITK
Write data from ITK in a format readable by Matlab
Compute edge potential EdgePotentialImageFilter

Included in the ITK Repository

Example Name ITK Classes Demonstrated Description
Image registration

Matlab

Example Name ITK Classes Demonstrated Description

Developer Examples

Example Name ITK Classes Demonstrated Description
Throw an exception
Produce an image programmatically. ImageSource Nothing in, image out.
Filter an image ImageToImageFilter Image in, same type of image out.
Filter an image without copying its data InPlaceImageFilter
Filter an image using multiple threads ImageToImageFilter
Multi-threaded oil painting image filter ImageToImageFilter and MinimumMaximumImageCalculator A simple multi-threaded scenario (oil painting artistic filter). You can also use this class as-is (copy .h and .txx files into your project and use them).
Write a filter with multiple inputs of the same type. ImageToImageFilter Two images in (same type), same type of image out.
Write a filter with multiple inputs of different types. ImageToImageFilter Two images in (different type), image (same type as first input) out.
Write a filter with multiple outputs of the same type. ImageToImageFilter Images in, two images out (same type as first input).
Write a filter with multiple outputs of different types. ImageToImageFilter Images in, two images out (different types).
Get or set a member variable of an ITK class. SetMacro, GetMacro
Output an error, a warning, or debug information. DebugMacro, ErrorMacro, WarningMacro
MiniPipeline

Problems

Small Problems

Example Name ITK Classes Demonstrated Description
Compute kmeans clusters of pixels in an image ImageKmeansModelEstimator Segfault.
Iterate over an image starting at a seed and following a rule for connectivity decisions FloodFilledImageFunctionConditionalIterator
Traverse a region using a flood fill iterator FloodFilledSpatialFunctionConditionalIterator How to do this?
Compute the gradient of a vector image GradientImageFilter How to do this?
Compute distributions of image pixels using GMM EM ExpectationMaximizationMixtureModelEstimator
Compute distributions of samples using GMM EM ExpectationMaximizationMixtureModelEstimator Someone please confirm that this outputs the mean and the variance (i.e. I used a standard deviation of 30 to create the samples and the second estimated parameter is near 1000 (~30^2) . Is this correct?)
Compute the histogram of an image Statistics_1_1ImageToHistogramFilter The last entry of the red histogram should contain several values, but it is 0?
Classifying pixels using KMeans KmeansModelEstimator How to apply the labels of the filter to the input image?
Basic region growing RegionGrowImageFilter Just getting started with demo...
Find connected components in an image ConnectedThresholdImageFilter Just need to finish it.
Convert an image from one type to another ConvertPixelBuffer
In-place filtering of an image InPlaceImageFilter This only works for filters which derive from itkInPlaceImageFilter
Convert a VTK image to an ITK image VTKImageToImageFilter Seems to expect an input image with only 1 component? (i.e. greyscale)

Big Problems

Example Name ITK Classes Demonstrated Description
Find the best position of the moving image in the fixed image. MeanSquaresImageToImageMetric Output (0,0) is incorrect.
Compute and display the gradient of an image GradientImageFilter Blank output on the screen (the filter works fine). There should be a "DisplayVectorImage" added to itkQuickView that draws vector glyphs at specified pixels of an image.