To contact us with problems or questions, please post to this repository's GitHub issue reporting system (requires a GitHub user account).
SimpleITK is a simplified
programming interface to the algorithms and data structures of the
Insight Segmentation and Registration Toolkit (ITK).
It supports bindings for multiple programming languages including C++, Python,
R, Java, C#, Lua, Ruby and TCL. Combining SimpleITK's Python binding with the
Jupyter notebook web application creates an
environment which facilitates collaborative development of biomedical image
In this course, we will use a hands-on approach utilizing Python based SimpleITK
Jupyter notebooks to explore and experiment with various toolkit features.
Participants will follow along using their personal laptops, enabling them to
explore the effects of changes and settings not covered by the instructor. We
start by introducing the toolkit's two basic data elements, Images and
Transformations. We then combine the two, illustrating how to perform image
resampling. Having mastered the concept of resampling, we show how to use
SimpleITK as a tool for image preparation and data augmentation for deep
learning via spatial and intensity transformations. We then turn our focus to
the toolkit's registration framework, exploring various components including:
optimizer selection, the use of linear and deformable transformations, the
embedded multi-resolution framework, self-calibrating optimizers and the use of
callbacks for registration progress monitoring. Finally, we illustrate the use
of a variety of SimpleITK filters to implement an image analysis workflow that
includes segmentation and shape analysis.
Beyond the notebooks used in this course you can find the main SimpleITK notebooks repository on GitHub.
- Bradley C. Lowekamp, Medical Science & Computing and National Institutes of Health.
- Ziv Yaniv, Medical Science & Computing and National Institutes of Health.
If you encounter problems or have questions, please post using this repository's
reporting system (requires a GitHub user account).
In this course we will use the Anaconda Python distribution. Please follow the
instructions below to setup the environment we will use during the course. All
commands below are issued on the command line (Linux/Mac - terminal,
Windows - Anaconda Prompt).
Download and install the Fiji image viewer. This is the default image viewer used by SimpleITK:
On Windows: Install into your user directory (e.g. C:\Users\[your_user_name]\).
On Linux: Install into ~/bin/ .
On Mac: Install into /Applications/ .
Download and install the most
recent version of Anaconda for your operating system. We assume it is installed
in a directory named anaconda3. Regardless of the installer, we will be working
with Python 3.6
- On Windows: open the Anaconda Prompt (found under the Anaconda3 start menu).
- On Linux/Mac: on the command line
source path_to_anaconda3/bin/activate base
Update the root anaconda environment and install the git version control system into it.
conda update conda
conda update anaconda
conda install git
Clone this repository:
git clone https://github.com/SimpleITK/SPIE2019_COURSE.git
Create the virtual environment containing all packages required for the course:
conda env create -f SPIE2019_COURSE/environment.yml
Activate the virtual environment:
- On Windows: open the Anaconda Prompt (found under the Anaconda3 start menu)
- On Linux/Mac: on the command line
source path_to_anaconda3/bin/activate sitkpySPIE19
Go over the setup notebook (requires internet connectivity). This notebook checks the environment setup and downloads
all of the required data.
jupyter notebook setup.ipynb
- [1:30PM- 2:00PM] history and overview of SimpleITK. [ppt: setup and schedule, history, overview]
- [2:00PM- 2:40PM] spatial transformations [notebook html], images and resampling [notebook html].
- [2:40PM - 3:00PM] data augmentation for deep learning [notebook html].
- [3:00PM - 3:30PM] coffee break 
- [3:30PM - 4:40PM] basic registration [notebook html], advanced registration [notebook html].
- [4:40PM - 5:15PM] segmentation image analysis workflow [notebook html].
- [5:15PM - 5:30PM] notebook development and testing, concluding remarks [ppt: development].
For those interested in reading more about SimpleITK (Python and beyond):
R. Beare, B. C. Lowekamp, Z. Yaniv, "Image Segmentation, Registration and Characterization in R with SimpleITK", J Stat Softw, 86(8), 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, 2018.
B. C. Lowekamp, D. T. Chen, L. Ibáñez, D. Blezek, "The Design of SimpleITK", Front. Neuroinform., 7:45., 2013.