SimpleITK is a free, open source photo & video editors project written in C++ and released under Apache-2.0. It has 1,092 GitHub stars, 235 forks and 101 open issues, and was last pushed 6 hours ago. On this registry it ranks #68 of 81 tracked projects in Photo & Video Editors, with 5 head-to-head comparisons available.

What is SimpleITK?

SimpleITK is an open-source, Apache-2.0 image analysis toolkit that places a simplified interface over the Insight Segmentation and Registration Toolkit (ITK), aimed at researchers, educators and developers who want ITK's filtering, segmentation and registration algorithms from Python, R, Java, C#, Lua, TCL or Ruby instead of writing C++.

What it is

SimpleITK is an image analysis toolkit with a large number of components supporting general filtering operations, image segmentation and registration. It is written in C++ and built on top of the Insight Segmentation and Registration Toolkit (ITK) with the explicit intent of providing a simplified interface to that library; the C++ code is exposed to other languages through SWIG. The project is part of the Insight Software Consortium, a non-profit educational consortium for open-source bio-medical image analysis, with copyright held by NumFOCUS, and it is distributed under the Apache License 2.0.

The problem it solves is one of access. ITK is a large C++ library, and using it directly is a poor fit for rapid prototyping, for teaching, and for interpreted languages where most imaging research is actually written. SimpleITK replaces hand-written ITK C++ in those settings with a uniform interface available in Python, R, Java, C#, Lua, TCL and Ruby, so a segmentation or registration pipeline can be assembled interactively and still call the same underlying algorithms. It also narrows scope deliberately: unlike ITK's support of n-dimensional spatio-temporal images, SimpleITK supports 2D, 3D and 4D images, where the dimensionality refers to spatio-temporal dimensions and voxels may themselves be n-dimensional vectors.

Key capabilities

  • General filtering operations, image segmentation and registration components exposed through a single toolkit interface.
  • SWIG-generated bindings for Python, R, Java, C#, Lua, TCL and Ruby, with the stated principle that any language wrapped by SWIG should be applicable.
  • Support for 2D, 3D and 4D spatio-temporal images, with n-dimensional vector voxels.
  • Image-analysis notebooks documented as a collaborative environment for education and reproducible research, described in the Journal of Digital Imaging (2018).
  • Layered documentation, including Doxygen-generated API documentation plus Read the Docs builds published separately for the release and main branches.
  • A GitHub Actions "Batch Build and Test" workflow running against both the release and main branches, covering the multi-language build matrix.

Who uses it and how

  • Researchers working in Python, R, Ruby, Lua or TCL who need ITK's algorithms without leaving their language of choice.
  • R users performing image segmentation, registration and characterization, the workflow documented in the J Stat Software paper on SimpleITK in R (2018).
  • Educators and research groups building reproducible, notebook-based teaching and analysis material rather than one-off scripts.
  • Java and C# developers in environments where a compiled language binding is required but a C++ ITK integration is impractical.
  • Biomedical imaging teams working within the Insight Software Consortium and ITK user and developer communities.

Getting started

The README excerpt provided here does not name a package-manager command or container image, so the documented starting points are the project site at simpleitk.org, the Read the Docs builds at simpleitk.readthedocs.io for the release and main branches, and the linked Doxygen API documentation.

How it compares

Within this registry the only named relative is ITK itself, the library SimpleITK is built on: ITK is the C++ engine with n-dimensional spatio-temporal image support, while SimpleITK is the simplified, SWIG-wrapped layer over it, restricted to 2D, 3D and 4D images. The two share a licence lineage and community rather than competing, and the choice between them is a choice between full ITK generality in C++ and portable, scriptable access across seven languages.

When to use it — and when not to

Choose SimpleITK when the work is prototyping, teaching or scripting in an interpreted language and a 2D, 3D or 4D image model is sufficient. Do not choose it if a pipeline genuinely needs ITK's n-dimensional spatio-temporal support, since that generality is intentionally not carried over, or if the team needs an install command stated up front, because the README excerpt here is sparse on packaging and defers to external documentation. The layered documentation and the 101 open issues also suggest a project whose surface is large enough that newcomers should expect to consult the API reference rather than rely on a quick start alone.

project readme (upstream, from github) — read inline

SimpleITK

GithubActions ReadTheDocs
release Batch Build and Test ReadTheDoc
main Batch Build and Test ReadTheDoc

SimpleITK is an image analysis toolkit with a large number of components supporting general filtering operations, image segmentation and registration. It is built on top of the Insight Segmentation and Registration Toolkit ITK with the intent of providing a simplified interface to ITK. SimpleITK itself is written in C++ but is available for a large number of programming languages. Currently, these include:

Wrapping of the C++ code is accomplished through SWIG, in principle, any language wrapped by SWIG should be applicable to SimpleITK.

Unlike ITK's support of n-dimensional spatio-temporal images, SimpleITK supports 2D, 3D and 4D images. The dimensionality refers to spatio-temporal dimensions, the voxels can be n-dimensional vectors.

SimpleITK is licensed under the Apache License.

Acknowledgments

SimpleITK development has been supported by:

  • The Intramural Research Program of the National Institutes of Health, National Institute of Allergy and Infectious Diseases.

  • The US National Library of Medicine under the American Recovery and Reinvestment Act (ARRA) and under the Intramural Research Program of the U.S. National Institutes of Health.

  • The Insight Software Consortium and the ITK user and developer communities.

License and Copyright

The SimpleITK project is part of the Insight Software Consortium(ISC) a non-profit educational consortium dedicated to promoting and maintaining open-source, freely available software for bio-medical image analysis. The copyright is held by NumFOCUS. The SimpleITK software is distributed under the Apache License 2.0.

How to Cite

If you found SimpleITK useful in your research, support our efforts by citing the relevant publication(s):

R. Beare, B. C. Lowekamp, Z. Yaniv, "Image Segmentation, Registration and Characterization in R with SimpleITK", J Stat Software, 86(8), https://doi.org/10.18637/jss.v086.i08, 2018.

Z. Yaniv, B. C. Lowekamp, H. J. Johnson, R. Beare, "SimpleITK Image-Analysis Notebooks: a Collaborative Environment for Education and Reproducible Research", J Digit Imaging., 31(3): 290-303, https://doi.org/10.1007/s10278-017-0037-8, 2018.

B. C. Lowekamp, D. T. Chen, L. Ibáñez, D. Blezek, "The Design of SimpleITK", Front. Neuroinform., 7:45. https://doi.org/10.3389/fninf.2013.00045, 2013.

Documentation

With massive libraries like SimpleITK, good documentation is a must. The documentation for SimpleITK is split up into multiple levels:

  1. API Documentation - This contains class and function documentation. The descriptions for functions and classes are primarily borrowed from the original ITK C++ classes.
  2. SimpleITK Documentation - This site contains high-level guides (fundamental SimpleITK concepts, common conventions, etc.), details with respect to the toolkit's binary distributions, instructions for building the toolkit, as well as SimpleITK examples in all supported programming languages.
  3. Jupyter Notebook Repository - This repository contains a collection of Jupyter Notebooks illustrating the use of SimpleITK for educational and research activities. The notebooks demonstrate the use of SimpleITK for interactive image analysis using the Python and R programming languages. Recommended reading, if you are starting with SimpleITK.

Support

SimpleITK provides access to most of the ITK components, but not all. If you are looking for something specific and can't find it, open an issue on GitHub or ask for support on the forum.

Report an Issue or Request a Feature

Please use the issue tracker to report problems or request features.

Frequently asked questions

Is SimpleITK free to use?

SimpleITK is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does SimpleITK do?

SimpleITK: a layer built on top of the Insight Toolkit (ITK), intended to simplify and facilitate ITK's use in rapid prototyping, education and interpreted lang

What is SimpleITK written in?

SimpleITK is primarily written in C++. Its source is publicly available at https://github.com/SimpleITK/SimpleITK, and it has 1,092 GitHub stars.