To contact us with problems or questions, please post to this repository's GitHub issue reporting system (requires a GitHub user account).

Overview

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 analysis workflows.

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.

Organizers

  • Bradley C. Lowekamp, Medical Science & Computing and National Institutes of Health.
  • Ziv Yaniv, Medical Science & Computing and National Institutes of Health.

Prerequisites

If you encounter problems or have questions, please post using this repository's GitHub issue 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).

  1. 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/ .
  2. 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
  3. Update the root anaconda environment and install the git version control system into it.
    conda update conda
    conda update anaconda
    conda install git
    
  4. Clone this repository:
    git clone https://github.com/SimpleITK/SPIE2019_COURSE.git
    
  5. Create the virtual environment containing all packages required for the course:
    conda env create -f SPIE2019_COURSE/environment.yml
    
  6. Activate the virtual environment:
    • On Windows: open the Anaconda Prompt (found under the Anaconda3 start menu)
      activate sitkpySPIE19.
    • On Linux/Mac: on the command line
      source path_to_anaconda3/bin/activate sitkpySPIE19
  7. Go over the setup notebook (requires internet connectivity). This notebook checks the environment setup and downloads all of the required data.
    cd SPIE2019_COURSE
    jupyter notebook setup.ipynb
    

Program

  • [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 [coffee]
  • [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].

Supplementary Material

For those interested in reading more about SimpleITK (Python and beyond):