ITK/Examples
These are fully independent, compilable examples. There is significant overlap in the examples, but they are each intended to illustrate a different concept and be fully stand alone compilable. Please add examples in your areas of expertise! You can checkout the entire set of examples from this repository: http://gitorious.org/itkwikiexamples/itkwikiexamples
git clone git://gitorious.org/itkwikiexamples/itkwikiexamples.git ITKWikiExamples
About the Examples
ItkVtkGlue
ITK and VTK are very separate toolkits - ITK for image processing and VTK for data visualization. It is often convenient to use the two together - namely, to display an ITK image on the screen. The ItkVtkGlue kit serves exactly this purpose. Also provided inside ItkVtkGlue is a QuickView class to allow a 2 line display of an ITK image.
If you download the entire ITK Wiki Examples Collection, the ItkVtkGlue directory will be included and configured. If you wish to just build a few examples, then you will need to download ItkVtkGlue and build it.
Information for Wiki Examples Users
If you just want to use the Wiki Examples, go here. You will learn how to search for examples, build a few examples and build all of the examples.
Information for Wiki Examples Developers
If you want to contribute examples go here. You will learn how to add a new example and the guidelines for writing an example.
Information for Wiki Examples Administrators
If you are a Wiki Example Administrator or want to learn more about the process go here. You will learn how the Wiki Examples repository is organized, how the repository is synced to the wiki and how to add new topics, tests and regression baselines.
Simple Operations
Mathematical Operations
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Create a covariant vector | CovariantVector | This is the object which should be used to represent a mathematical vector. |
Compute the norm of a covariant vector | CovariantVector | In-place and non-inplace norms. |
Matrix | Matrix | |
Mathematical constant pi = 3.14 | Math | |
Dot product (inner product) of two vectors | Vector |
Trigonometric Filters
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Compute the sine of each pixel. | SinImageFilter | |
Compute the arctangent of each pixel. | Atan2ImageFilter |
Image Functions
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
GaussianBlurImageFunction | GaussianBlurImageFunction | |
GaussianBlurImageFunctionFilter | GaussianBlurImageFunction |
Point Set
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Create a PointSet | PointSet | |
Read a PointSet | PointSet | |
Write a PointSet | PointSet | |
Get the bounding box of a PointSet | PointSet |
Input/Output (IO)
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Read an image file with an unknown number of components | ImageFileReader,VectorImage | |
Convert a C-style array to an itkImage | ImportImageFilter | |
Read an image file without knowing its type before hand | ImageFileReader | |
Write an image | ImageFileWriter | |
Read an image | ImageFileReader | |
Write a TIFF image | TIFFImageIO | This is a general demonstration of how to use a specific writer rather than relying on the ImageFileWriter to choose for you. |
Display an ITK image | ImageToVTKImageFilter | |
Write a transform to a file | TransformFileWriter | |
Read a transform from a file | TransformFileReader | |
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 |
---|---|---|
Resample a DICOM series | GDCMImageIO | Resample a DICOM series with user-specified spacing. |
Blob Detection, Labeling, and Properties
Image Processing
Vector Images
Iterating Over (Traversing) An Image
Kernels
Image Edges, Gradients, and Derivatives
Smoothing
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Anti alias a binary image | AntiAliasBinaryImageFilter | |
Mean filter an image | MeanImageFilter | Replace each pixel by the mean of its neighborhood |
Median filter an image | MedianImageFilter | Replace each pixel by the median of its neighborhood |
Median filter an RGB image | MedianImageFilter | Replace each pixel by the median of its neighborhood |
Smooth an image with a discrete Gaussian filter | DiscreteGaussianImageFilter | |
Blur an image | BinomialBlurImageFilter | |
Bilateral filter an image | BilateralImageFilter | Edge preserving smoothing. |
Smooth an image using curvature flow | CurvatureFlowImageFilterType | |
Smooth an image using min/max curvature flow | MinMaxCurvatureFlowImageFilterType | |
Gaussian smoothing that works with image adaptors | SmoothingRecursiveGaussianImageFilter | |
Smooth an image | VectorGradientAnisotropicDiffusionImageFilter |
Morphology
Curves
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Compute the mean distance between all points of two curves | ContourMeanDistanceImageFilter |
Spectral Analysis
Utilities
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Create a list of file names | NumericSeriesFileNames | |
Copy a filter | Object | Copy/duplicate a filter |
Cartesian to AzimuthElevation and vice-versa | AzimuthElevationToCartesianTransform | |
C-style array | FixedArray | |
Deep copy an image | ||
Permute a sequence of indices | ImageRandomNonRepeatingConstIteratorWithIndex | |
Random number generator | MersenneTwisterRandomVariateGenerator | |
Map scalars into a jet colormap | JetColormapFunctor | |
Monitor a filter | SimpleFilterWatcher | See debug style information. |
Time probe | TimeProbe | Compute the time between points in code. |
Observe an event | Command | |
Vector container | VectorContainer |
Statistics
Spatial Objects
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Convert a spatial object to an image | SpatialObjectToImageFilter | |
Ellipse | EllipseSpatialObject | |
Line spatial object | LineSpatialObject, LineSpatialObjectPoint | Specify a piecewise-linear object by specifying points along the line. |
Plane spatial object | PlaneSpatialObject | |
Blob | BlobSpatialObject |
Inspection
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Combine two images by alternating blocks of a checkerboard pattern | CheckerBoardImageFilter | |
Printing a pixel value to the console | GetPixel |
Image Registration
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Warp one image to another using manually specified landmarks | WarpImageFilter | |
Rigidly register one image to another using manually specified landmarks | LandmarkBasedTransformInitializer | |
Register one image to another using manually specified landmarks | DeformationFieldTransform | |
A basic global registration of two images | ImageRegistrationMethod, TranslationTransform | Translation only transform. |
A global registration of two images | ImageRegistrationMethod, AffineTransform | Full affine transform. |
A global registration of two images | ImageRegistrationMethod, BSplineDeformableTransform | BSpline transform. |
Mutual Information | MutualInformationImageToImageMetric, TranslationTransform | Global registration by maximizing the mutual information and using a translation only transform |
Mutual Information Affine | MutualInformationImageToImageMetric, AffineTransform | Global registration by maximizing the mutual information and using an affine transform |
Image Segmentation
Meshes
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Decimation | ||
Add points and edges | ||
Compute normals of a mesh | QuadEdgeMeshNormalFilter | |
Planar parameterization of a mesh | ParameterizationQuadEdgeMeshFilter | Compute linear parameterization of a mesh homeomorphic to a disk on the plane |
Convert an itk::Mesh to a vtkUnstructuredGrid | ||
Write an itk::Mesh to a vtp (vtkPolyData) file | VTKPolyDataWriter |
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 |
---|---|---|
Adaptive histogram equalization | AdaptiveHistogramEqualizationImageFilter |
Wish List
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. |
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). |
Get or set a member variable of an ITK class. | SetMacro, GetMacro | |
Output an error, a warning, or debug information. | DebugMacro, ErrorMacro, WarningMacro |
Problems
Small Problems
Example Name | ITK Classes Demonstrated | Description |
---|---|---|
Scale an image | ScaleTransform | No matching function call to SetTransform. |
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?) |
Find edges in an image | CannyEdgeDetectionImageFilter | How to set a reasonable Threshold for the output edges? |
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 |
Pad an image | MirrorPadImageFilter | Not sure how to specify the final output size/extent. The documentation should be improved. |
Pad an image by wrapping | WrapPadImageFilter | Not sure how to specify the final output size/extent. The documentation should be improved. |
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. |