This article, aimed at doctors or those interested in writing open source healthcare applications, focuses on the two most significant open source software toolkits available for medical imaging processing and visualisation Insight Segmentation and Registration Toolkit (ITK) as well as Visualization Toolkit (VTK). These have been the backbone of popular software like OsiriX, ITK-SNAP, ParaView and so on. Readers can learn more about these two toolkits, the differences between them and how to use or contribute to these projects.
In the medical software domain, constant improvements are required to find out new imaging analysis techniques and to develop custom applications. These types of software are often developed as public collaborations, and are then made available for use, alteration and redistribution. The overall intent in this article is to show the benefits of open source libraries for the rapid development of biomedical applications, and also to compare the different software.
Insight Toolkit (ITK)
In 1999, the National Library of Medicine (USA) was awarded a three-year contract to develop an open source registration and segmentation toolkit, which came to be known as Insight Toolkit (ITK). Segmentation is performed for the recognition and categorisation of data coming from medical instruments such as CT and MRI scans; images gained from these can be used to get yet more information, by the registration process. The kit has innovative algorithms to support multi-dimensional views.
ITK can run on multiple computer platforms; its cross-compilation is handled by CMake software. ITK was coded using C++, which also allows it to interact with other languages like Python and Java. Developers followed generic programming concepts and efficient memory management techniques. Smart pointers were used to increase memory efficiency. ITK supports many file formats like DICOM, PNG, VTK, BMP, JPEG, Siemens, Tiff, RAW, GE4x, and others. It can be downloaded from http://www.itk.org/HTML/Download.php.
The Concurrent Version System (CVS) tool is also used to access ITK. It should be only accessed when the status of the code is shown as stable in the ITK Quality Dashboard. Detailed descriptions of the ITK modules can be found at http://www.itk.org/Doxygen/html/modules.html.
Whether to generate 3D computer graphics and image processing, or for scientific visualisation or even volume rendering, Visualization Toolkit (VTK) is widely used and quite popular. Initially, the core of this open source software was written by three researchers, Will Schroeder, Ken Martin and Bill Lorensen (with the permission of GE), as companion software for the book, The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics published by Prentice-Hall. After gaining world wide attention, Kitware Inc was formed to support the software community. Now VTK has become a permanent feature in academic, commercial and R&D sectors. Its framework is the backbone of several other visualisation applications like ParaView, MayaVi and OsiriX.
Like ITK, VTK is implemented in C++ and is cross-platform. It can be expanded in other languages like Python and Java, as it is possible to wrap those languages’ interpreters. VTK can be downloaded from http://www.vtk.org/VTK/resources/software.html.
ITK vs VTK
Apart from both being implemented in C++, and having the same pipeline architecture, ITK and VTK are quite different. First, ITK is an image-processing software; VTK has only visualisation capabilities. The algorithms supported also differ. ITK worships segmentation and registration algorithms, whereas VTK follows various visualisation algorithms, which also include scalar, vector and other methods. Besides this, VTK provides users the ability to wrap other interpreters like Python.
How to use ITK and VTK
As both toolkits consist of C++ libraries, a suitable compiler is required, depending on the platform you use. ITK uses the CMake open source build system, which you can get from: http://www.cmake.org/.
To write a simple program using ITK or VTK:
Make a directory for your program.
A file named CmakeLists.txt has to be made to generate the Makefile (if you are using UNIX) or Visual Studio Workspace (if you are using MS-Windows).
Now create a source file of the extension .cxx.
Configure CMake for make for the target directory that contains your code. If you are in the target directory, just use “.”, else specify the directory name.
Build the program you made, and
Execute the program.
Contributing to ITK
There can be several levels at which you can contribute to ITK, like new classes, internal modules, bridge modules, etc. Each level has its own method; the details are at http://www.itk.org/Wiki/ITK_Release_4/New_Code_Contribution_Process.
Contributing to VTK
The simplest way to contribute is to report bugs via the bug tracker (http://www.vtk.org/Bug/my_view_page.php). Before writing and submitting code, one must be well aware of VTK’s Quality Dashboard (http://open.cdash.org/index.php?project=VTK). To subscribe to the VTK developer mailing list, visit http://public.kitware.com/mailman/listinfo/VTK-developers. To subscribe to the VTK user mailing list, visit http://www.vtk.org/VTK/help/vtkusers.html. You can find information about VTK coding standards at http://www.vtk.org/Wiki/VTK_Coding_Standards.
 ITK: http://www.itk.org/
 VTK: http://www.vtk.org/