Overview
VTK - Visualization
Handles 3D rendering, volume visualization, and graphics pipeline management
ITK - Processing
Provides medical image processing algorithms including segmentation and registration
VTK (Visualization Toolkit)
What is VTK?
VTK is an open-source software system for 3D computer graphics, image processing, and visualization. In medical imaging, it provides:- Volume Rendering: Direct visualization of 3D medical image volumes
- Surface Rendering: Extracting and displaying 3D surfaces from medical data
- 2D/3D Graphics: Multi-planar reconstruction (MPR) views
- Interactive Widgets: Tools for measuring, annotating, and manipulating images
Version Configuration
Build Configuration
VTK is configured with these important settings:build.sh:411-430
Key VTK Options
| Option | Purpose |
|---|---|
VTK_RENDERING_BACKEND=OpenGL2 | Use modern OpenGL for hardware acceleration |
VTK_USE_SYSTEM_TIFF=ON | Use our compiled TIFF library |
VTK_USE_SYSTEM_JPEG=ON | Use our compiled JPEG library |
VTK_LEGACY_REMOVE=OFF | Keep legacy APIs for compatibility |
BUILD_SHARED_LIBS=OFF | Build static libraries |
VTK includes bundled versions of TIFF and JPEG, but we use our own compiled versions to ensure consistency across all libraries.
VTK Modules
VTK is modular. Key modules used by Miele-LXIV include:- VTK::CommonCore: Basic data structures
- VTK::RenderingCore: Rendering pipeline
- VTK::RenderingOpenGL2: OpenGL implementation
- VTK::RenderingVolume: Volume rendering
- VTK::InteractionWidgets: Interactive tools
- VTK::IOImage: Image file I/O
Library Collapsing
VTK produces over 100 individual library files. The build system collapses them into a single archive:build.sh:449-458
libVTK.a, combining all VTK modules into one file for easier linking.
The collapsed library can be quite large (500+ MB) because it includes all rendering, filtering, and I/O modules.
ITK (Insight Toolkit)
What is ITK?
ITK is an open-source toolkit for medical image analysis. It provides:- Image Segmentation: Identifying regions of interest in medical images
- Image Registration: Aligning images from different time points or modalities
- Image Filtering: Noise reduction, edge detection, morphological operations
- Statistical Analysis: Quantitative measurements from images
Version Configuration
Build Configuration
ITK depends on VTK and is configured after VTK is built:build.sh:479-495
Key ITK Options
| Option | Purpose |
|---|---|
Module_ITKVtkGlue=ON | Enable ITK-VTK integration |
Module_ITKOpenJPEG=OFF | Use our OpenJPEG build instead |
VTK_DIR | Point to VTK installation for integration |
BUILD_SHARED_LIBS=OFF | Build static libraries |
The
ITKVtkGlue module is critical - it allows ITK to convert its image data structures to VTK formats for visualization.ITK Modules
ITK has a modular architecture with 200+ modules. Key modules include:- ITKCommon: Core data structures and algorithms
- ITKIOImageBase: Image file I/O
- ITKImageFilterBase: Basic filtering operations
- ITKSegmentation: Segmentation algorithms
- ITKRegistration: Image registration methods
- ITKVtkGlue: VTK integration
Library Collapsing
Like VTK, ITK produces many individual libraries:build.sh:510-519
libITK.a, combining all ITK modules.
VTK-ITK Integration
VTK and ITK work together in Miele-LXIV:Workflow Example
- ITK loads a DICOM series into an
itk::Image - ITK processes the image (e.g., applies filters, performs segmentation)
- ITKVtkGlue converts the ITK image to a
vtkImageData - VTK renders the image using volume rendering or surface extraction
- User interacts with the visualization through VTK widgets
Build Time Considerations
Parallel Building
The build script uses all available CPU cores:build.sh:118
Dependencies
Both VTK and ITK depend on image format libraries:Configuration in Kconfig
Kconfig-miele:41-48
Kconfig-miele:243-259
Common Use Cases in Medical Imaging
Volume Rendering (VTK)
Image Filtering (ITK)
ITK to VTK Conversion
Further Reading
VTK Documentation
Official VTK guides and API reference
ITK Software Guide
Comprehensive ITK textbook (PDF)
VTK Examples
Hundreds of VTK code examples
ITK Examples
ITK example code and tutorials