ITK is a powerful toolkit for image analysis. It has been designed with distinct, layered interfaces that address the needs of the developers, application writers and users of the toolkit. At its core ITK is implemented in C++ using many advanced programming features to deliver performance, flexibility and efficiency. However, many application developers prefer to develop in interpreted languages or other programming languages such as Python and Java, which the WrapITK module enables. Finally, many users wish to take advantage of the power of ITK with minimal complexity. For these users, SimpleITK has been provided and is described in the web pages here. Please note that WrapITK is under active development and will be broadly released shortly. More information on WrapITK is available here.

SimpleITK is a cross-language programming interface to the open-source Insight Toolkit (ITK), whose primary goal is to provide a high level of usability. SimpleITK facilitates rapid prototyping and use of ITK's algorithms from an interactive interpreter.

In order to expose a simplified version of ITK functionalities, SimpleITK is built internally by a code generation infrastructure comprising CMake, Lua, and JSON. A large set of commonly used ITK image processing filters are presented at the SimpleITK level as C++ classes that perform the equivalent image processing operations.

SimpleITK provides support for 2D and 3D images, and a selected set of pixel types for them. Different image filters may support a different collection of pixel types, in many cases due to computational requirements. The library is wrapped for interpreted languages by using SWIG. In particular, the following wrappings are available: Python, Java, Tcl, Lua, R and Ruby.

For the purpose of simplification, SimpleITK does not expose all the features of ITK. In particular it does not expose the pipeline architecture, support for streaming, and support for very large images. It is anticipated that once users become sophisticated enough to need these features, they will be ready to take advantage of ITK proper.

Just as ITK, the SimpleITK library is copyrighted by the Insight Software Consortium and it is distributed under the Apache 2.0 License. See the License page for more details. Because SimpleITK is an open-source project, developers from around the world can use, debug, maintain, and extend the software. ITK uses a model of software development referred to as extreme programming. Extreme programming collapses the usual software creation methodology into a simultaneous and iterative process of design-implement-test-release. The key features of extreme programming are communication and testing. Communication among the members of the SimpleITK community is what helps manage the rapid evolution of the software. Testing is what keeps the software stable. In SimpleITK, an extensive testing process (using CDash) is in place that measures the quality on a daily basis. The SimpleITK Testing Dashboard is posted continuously, reflecting the quality of the software.

What are SimpleITK's origins

SimpleITK was created as part of a concerted effort to simplify the use of the ITK toolkit and make it more accessible to a wider audience. In particular, it aims to satisfy the needs of a community interested in rapid prototyping, education and use of image analysis from interpreted languages. SimpleITK was funded by the National Library of Medicine under the American Recovery and Reinvestment Act (ARRA), along with many other improvement to ITK that were part of the ITKv4 revision, simplification and refactoring initiative.

Click here for information on the technical features of NLM's Insight Toolkit (ITK).