SimpleITK: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
 
(280 intermediate revisions by 13 users not shown)
Line 1: Line 1:
'''Simple ITK'''
{{SimpleITKMigrationHeader}}


= Goals =
[[Image: SimpleITK-SquareTransparentLogo.png|center]]


* Provide an easy-access layer to ITK for non-C++ expert developers
=Overview=


= Advisory Review Board (ARB) =
Welcome to the National Library of Medicine Insight Segmentation and Registration Toolkit (ITK). [http://www.itk.org/ ITK] is an open-source, cross-platform system that provides developers with an extensive suite of software tools for image analysis. Among them, SimpleITK is a simplified layer built on top of ITK, intended to facilitate its use in rapid prototyping, education, interpreted languages. SimpleITK has the following main characteristics:


* The Advisory Review Board is composed of groups and individual who are potential users of the Simple ITK Layer.  
* C++ library with wrappers for Python, Java, CSharp, R, Tcl and Ruby
* They provide advice to ITK developers of the simple layer regarding the design and implementation of the SimpleITK API.
* Object-oriented
* Provides a simplified, easy-to-use, procedural interface without templates
* Is distributed under an open source Apache 2.0 License
* Binary distributions for Python, Java and CSharp


* [[ITK_Release_4/SimpleITK/Advisory Review Board|Advisory Review Board]]
SimpleITK captures many of features available in ITK, and is under ongoing development. Earlier in the development process a set of [[SimpleITK/Goals|Specific Goals]] were outlined.


= Examples of Other Librarires =
= How to Cite =


* CIMG: http://cimg.sourceforge.net
If you find SimpleITK useful in your research, please cite the relevant publications:  


= Sandbox =
* Lowekamp BC, Chen DT, Ibáñez L and Blezek D (2013) [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3874546/pdf/fninf-07-00045.pdf The Design of SimpleITK]. Front. Neuroinform. 7:45. doi: 10.3389/fninf.2013.00045


* Dan's: http://github.com/dblezek/SimpleITK (This is currently the "unofficial" SimpleITK repository)
* 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., https://doi.org/10.1007/s10278-017-0037-8, 2017. (you can freely read the manuscript [http://em.rdcu.be/wf/click?upn=KP7O1RED-2BlD0F9LDqGVeSIWDx8-2B-2B8r81HkSA5fUW53U-3D_kZYp45lAKoeuSXKlMMKnLRu-2FO1jcvtAwo2UFz30PH9bPLAejS1IjjDkfGx8EIWfnvmrgAH2RF3xvrb1fezqultdVNEEAM7Fc2RGY-2BOVhjR-2BAN-2B7Wi6qUoM6BYtn1ZWsTzFdNZQxBXXJ2Nf0BaU5NhQLQVs2hoM2TXsKZ7pnKQXZVJEAOyLbQSvZkJOvdc7Gk36rdNDa3pn5vH17-2FvszYj4mKlZlgROxTE-2Be2yQ-2FOLAYsoDHZNvVuG4vJr4xNpQnmAI16Nz8h3GJi-2F9GKnpBsAg-3D-3D. here])  
* Gabe's: http://github.com/gabehart/SimpleITK (Experiments with multi-image filters, e.g. AddImage)
* Brad's: http://github.com/blowekamp/SimpleITK (Meta-programming experiment)


= Scope =
== Current open questions ==
* Internal execution mechanism
** switch statement, supported by macros
** Factory mechanism, new image types could be added at runtime
** Meta-programming
* Datatypes
** What to support "out of the box"?
** How easy/difficult to add new datatypes to a build?
* Compile times
** Templates radically extend CPU and memory requirements
* Library size / scope
** Custom SWIG files vs. automatically generated SWIG
** Automation for SimpleITK facade generation from ITK classes?


== Suggested Areas to Cover ==


* IO
= Getting Started =
* Basic Filters
* Registration
** Basic Framework
** Deformable registration
*** BSplines
*** Demons
* Segmentation
** Region Growing
** Level Sets
** Classifiers
* Meshes ? (Not Yet)


== Types ==
* [[SimpleITK/GettingStarted|Getting Started For Users]]
** [[SimpleITK/GettingStarted#Binaries|downloading the binaries]]
** [[SimpleITK/GettingStarted#Build_It_Yourself|build the code yourself]]
** [[SimpleITK/GettingStarted#Recommended_Software|additional software]] which is useful with SimpleITK
* [[SimpleITK/GettingStarted/Visual_guide_to_building_on_Linux|A Visual Guide to Building SimpleITK on Linux]]
* [[SimpleITK/GettingStarted/A_visual_guide_to_SimpleITK_in_Java|A Visual Guide to SimpleITK with Java and Eclipse]]
* [[SimpleITK/GettingStarted/A_visual_guide_to_SimpleITK_with_CSharp|A Visual Guide to SimpleITK with CSharp on Microsoft Visual Studio]]


* Image pixel types supported
== Download ==
** int8_t
** int16_t
** int32_t
** float
* Image dimensions supported
** 3D
** Is 2D managed as a 3D image of 1 slice ?
*** Performance penalty for neighborhood filters... ?
*** Could be "2D" versions of 3D filters, i.e. RecursiveGaussianFilter2D.  This would work on a slice-by-slice basis.


== Languages ==
SimpleITK currently provides binary distribution for Python, CSharp and Java language bindings.
Wrapped languages will be any that SWIG supports, if someone is willing to write tests / any needed glue code.
You can download the [https://sourceforge.net/projects/simpleitk/files/SimpleITK/1.0.0/ 1.0.0 release from SourceForge].
* C++ Layer
* Python
* Lua
* Java
* ?


= Implementation Details =
= Documentation =


* Coding Style
* [[SimpleITK/FAQ|Frequently Asked Questions (FAQ)]]
** Copyright Headers & License
* Const correctness (can we avoid using const's completely?)
* Testing
** C++ testing (Google Test?)
** Python tests (PyUnit?)
** Lua tests (?!?)
** Java tests (JUnit)
** ? other languages ?
* Managing basic types
** Arrays
** Regions
** Transforms
* Not so basic types (could these be enums passed as ivars?)
** Interpolators
** Optimizers
** Metrics


= Plan =
== API ==


* Image classes
* Nightly generated [https://www.itk.org/SimpleITKDoxygen/html/ Doxygen].
* IO
* Release 1.0 [https://www.itk.org/SimpleITKDoxygen100/html/index.html Doxygen].
* Release 0.10 [https://www.itk.org/SimpleITKDoxygen010/html/index.html Doxygen].
* Release 0.9 [https://www.itk.org/SimpleITKDoxygen09/html/index.html Doxygen].
* Release 0.8 [https://www.itk.org/SimpleITKDoxygen08/html/index.html Doxygen].
* Release 0.7 [https://www.itk.org/SimpleITKDoxygen07/html/index.html Doxygen].
* Release 0.6.1 [https://www.itk.org/SimpleITKDoxygen06/html/ Doxygen].


= TCons =
== Short Examples ==


* [[ITK_Release_4/SimpleITK/Tcon 2010 07 15|7/15/2010]]
Concise [https://itk.org/SimpleITKDoxygen/html/examples.html examples] illustrating the usage of various SimpleITK features. Examples are written in a variety of languages including Python, R, C++, Java...


* [[ITK_Release_4/SimpleITK/Tcon 2010 07 16|7/16/2010]]
== SimpleITK Notebooks ==


* [[ITK_Release_4/SimpleITK/Tcon 2010 07 22|7/22/2010]]
The SimpleITK Notebooks are examples and tutorials on how to use SimpleITK utilizing Jupyter Notebooks. This approach allows the user to create, edit and re-run scripts and view the results all within a web interface. The authoritative description of what Jupyter Notebooks are can be found on the [http://jupyter.org/ Jupyter website]. While SimpleITK supports a number of programming languages, the majority of notebooks are written in Python and some in R.


== Tcon topics 8/12/2010 ==
The main notebook repository is available on [https://github.com/InsightSoftwareConsortium/SimpleITK-Notebooks github].


Notes from discussions held during the tcon:
Additional repositories containing tutorial specific notebooks are listed in the [http://www.itk.org/Wiki/SimpleITK#SimpleITK_Tutorials Tutorials section] below.


* Gabe Hart reported on experiments with wrapping SimpleITK for Java
== SimpleITK Tutorials ==
** How to manage classpath ?
** How to organize ITK classes into jar file.
*** Should they follow the distribution of "modular ITK" ?
* Synergy between WrapITK and SimpleITK
** Could we use WrapITK infrastructure to generate the instantiations of SimpleITK ?
* Brad L. reported on experiments using template metaprogramming for selecting pixel types
** Example implemented: http://github.com/blowekamp/SimpleITK/network
* Discussion about what pixel types to provide
** Should they be extendable by a user ?
** How about "unsigned long" ? (or is it Label Maps what we really want ?)
* Label Maps
** We agree in that they should be a first class citizen object, at the pair of the image
** How to map LabelObjects from one image grid coordinates to another ?
*** Do we need a "resample label map" filter ?
* Procedural look and feel
** Should SimpleITK has a procedural look ? (ala Matlab ?)
** Or the sequence of "create object, set parameter, set parameter.... execute"
** Can we have both ?
*** Without one diminishing the other ?
* What to do with basic Arrat types ?
** Point, Vector, CovariantVector
*** How to hide their dimension ?
** Introduce a generic "Array" class at SimpleITK level ?
*** maybe with an internal enum indicating that it is a Point, Vector or CovariantVector ?
*** Manage Dimension dynamically (or hide it internally), just like the simple Image class.
* SimpleITK making it look natural in Wrapped languages
** Provide functionalities for converting ITK classes into classes of the target language
*** In Java: be able to convert a simpleImage into a [http://download-llnw.oracle.com/javase/6/docs/api/java/awt/image/BufferedImage.html Java BufferedImage class], and back.
*** In Python: be able to convert an simpleImage into a [http://www.pythonware.com/products/pil/ Python Image] or at least a python array.
* SimpleITK & Visualization
** Should we provide some simple visualization capabilities ?
** Easy conversion from ITK simpleImage to vtkImageData
** Basic Viewer example (maybe based on Qt+VTK: or [http://www.commontk.org/index.php/Main_Page CTK] for that matter) that takes origin, spacing and orientation into account.
* What pixel types to include ?
** Suggested for Microscopy
*** unsigned char (int8)
*** signed short (int16)
*** unsigned short (uint16)
*** signed int (int32)
*** unsigned int (uint32)
*** float (float32)
*** double


== Tcon topics 8/13/2010 ==
=== Upcoming ===


* How many classes to expose ?
* SPIE Medical Imaging 2018, Houston TX, USA: [https://spie.org/MI/course/simpleitk-jupyter-notebooks-biomedical-image-analysis-in-python SimpleITK Jupyter Notebooks: Biomedical Image Analysis in Python].
** Start with the classes exposed in v3d plugins (~80)
** Grow to about ~200 ~300 classes
** From there, listen to community feedback regarding new classes to add.
* Support for Large Data
** SimpleITK must be usable for building real applications.
** It must support image larger than the available RAM.
* Identify Target Customers for SimpleITK
** Groups that are not using ITK at this point, because this consider it too complicated
** Invite them to be early evaluators of the SimpleITK prototypes.
* Reviewing the MetaProgramming layer used by Brad L. to instantiate types
* How to manage multiple component images ?
** Have an array of simpleITK images ?
* How to manage time ?
** ND+t ?




== Tcon topics 8/17/2010 ==
=== Past ===
*Next ITKv4 Meeting - Potentially October 4-6
* The International Symposium on Biomedical Imaging (ISBI) 2016, Prague, Czech republic: [http://biomedicalimaging.org/2016/?page_id=572  SimpleITK: An Interactive, Python-Based Introduction to SimpleITK with the Insight Segmentation and Registration Toolkit (ITK)]
*Additional Conference Calls held last week
* SPIE Medical Imaging 2016, San Diego, USA: ITK in Biomedical Research and Commercial Applications
**'''SimpleITK'''
: Tutorial material: [https://github.com/InsightSoftwareConsortium/SimpleITKTutorialSPIE2016 git repository] [https://hdl.handle.net/10380/3542 additional presentations] .
**'''Microscopy'''
* Medical Image Computing and Computer Assisted Intervention (MICCAI) 2015, Munich, Germany: a Python based tutorial on the use of the [[SimpleITK/Tutorials/MICCAI2015 | ITKv4 registration framework via SimpleITK]].
***Summary: What changes to the ITK fundamentals required for large image sizes. There may be issues for video processing as well
: Tutorial material: [https://github.com/InsightSoftwareConsortium/SimpleITKTutorialMICCAI2015.git git repository].
****How to deal with time as a dimension
* ImageJ User & Developer Conference 2015, Madison, WI, USA: [http://imagej.net/Conference_2015_Program#Matt_McCormick_-_SimpleITK an introductory tutorial] in Python.
****Memory management (Streaming)
: Tutorial material: [https://github.com/InsightSoftwareConsortium/SimpleITKWorkshopImageJ2015 git repository]. 
***Possible changes to the image structure - Luis will make proposal to handle these issues and present to the group
* Medical Image Computing and Computer Assisted Intervention (MICCAI) 2011, Toronto, Canada: a general [[ITK_Release_4/Outreach/Conferences/MICCAI 2011/SimpleITK|tutorial on SimpleITK]].  
****Video processing may require a ring buffer structure
: Tutorial material: [https://github.com/SimpleITK/SimpleITK-MICCAI-2011-Tutorial/blob/master/Presentation/SimpleITK-MICCAI-2011.pdf?raw=true PDF of presentation], [http://midas.kitware.com/collection/view/175 virtual machine], and [https://github.com/SimpleITK/SimpleITK-MICCAI-2011-Tutorial  git repository].
****Iterators may need to be updated to avoid access to the buffer pointer
****Possibility of using image adapters
***Multi-resolution Images
****Possibility of support for this at the level of the image reader (JPEG2000: support for 2D images in files)
****Query image reader for different resolution images
***Non-regular image spacing
****Potential different time point for top and bottom of image
****VTK Rectilinear grid handles this
****What filters are required to handle non-uniform spacing. Can convolution be applied and then resample to regular spacing
****Does this cause a data explosion
***File formats
****Desire for more file format support: probably would benefit from just 2-3 formats
****64 bit TIFF reader, Vendor specific private tags
****Update to libTiff is required
****Streaming support exists for Meta, VTK, MRC. ImageSeriesReader will stream slice-by-slice
**'''WrapITK'''
*Sequestered reference applications
*Clean-up Releases
**Currently running behind
**Limited coverage for Windows machines on the Dashboard - Need to turn on BUILD_EXAMPLES for these machines
**Need to updated OpenJPEG (version 2) and libTiff
*DICOM
**Design for QR of PACS without writing to disk
***Currently requires to locally save a copy of the file(s) before reading as an ITK image
***How do you know what you are going to get (e.g. multi-planar scout images)
***Create a database or data structure to present to the programmer and then create an image from the bulk data
***What API is required to support this functionality
***Data structure to hold information (DOM specification - Larry Tarbox from XIP - Stephen Alyward)
***Potential to pass Metadata Dictionary


== Community Blogs ==


== Tcon topics 8/26/2010 ==
These are blog entries written by people who are not necessarily directly involved with SimpleITK. If you want us to link to your SimpleITK blog entry just let us know on the mailing list (community@itk.org).
* Gerrit
 
** What sort of work flow should we follow?
* General introduction of SimpleITK on the [http://news.iscas.co/simpleitk-a-simplified-multi-language-interface-to-the-insight-segmentation-and-registration-toolkit/  International Society for Computer Aided Surgery blog], 1 March 2017.
** How do we get this set up correctly with git and github?
* [http://zarquon42b.github.io/2015/05/22/SimpleITKandR/  SimpleITK and R], 22 May 2015.
* Interoperability with ITK
* [http://kevin-keraudren.blogspot.com/2014/12/medical-image-analysis-ipython-tutorials.html Medical Image Analysis Course], 20 December 2014.
** Are we all agreed that this is a top priority?
* [https://pyscience.wordpress.com/tag/simpleitk Image Segmentation with Python and SimpleITK], October/November 2014.
* Flexibility w.r.t. dimensions
 
** Are we all agreed that no more than 2D and 3D is needed?
=Support=
* Flexibility w.r.t. types
 
** Fixed set of types? (Just a thought)
SimpleITK is supported through the ITK community and the active developers. In addition to the resources listed above in the documentation section, the  [https://discourse.itk.org discourse forum]  can be used to ask questions and obtain additional help from the ITK community. The legacy [http://www.itk.org/ITK/help/mailing.html ITK mailing lists] is no longer prefered.
** Everything cast to doubles? (Again, just a thought)
 
** Typing system
== Issue Tracking And Feature Requests ==
*** PixelTypeID
 
*** Instantiation
We are currently using the [https://github.com/SimpleITK/SimpleITK/issues github issue tracker]. Before switching to github issue tracking we used an instance of the
*** Runtime choosing of methods
[https://itk.icts.uiowa.edu/jira/browse/SIMPLEITK Legacy Jira Issue Tracker ] hosted by the University of Iowa.
*** Macros
 
**** Not pretty
== Releases ==
**** Fairly intuitive
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=refs/tags/v1.0.1 v1.0.1] [https://github.com/SimpleITK/SimpleITK/releases/tag/v1.0.1 Release Notes]
*** Meta-Programming
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=refs/tags/v1.0.0 v1.0.0] [https://github.com/SimpleITK/SimpleITK/releases/tag/v1.0.0 Release Notes] [https://sourceforge.net/projects/simpleitk/files/SimpleITK/1.0.0 Downloads] [https://www.itk.org/SimpleITKDoxygen100/html/index.html Doxygen]
**** Hard to understand completely
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=4a3376df08f27162b4d2a90e4a0452a839ab3124 v0.10.0] [https://github.com/SimpleITK/SimpleITK/releases/tag/v0.10.0 Release Notes] [https://sourceforge.net/projects/simpleitk/files/SimpleITK/0.10.0 Downloads] [https://www.itk.org/SimpleITKDoxygen010/html/index.html Doxygen]
**** Adds ability for each filter to specify what types it works for
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=ec033f0be4f67b2e21483ed9bc3698f07dba9d06 v0.9.1] [https://github.com/SimpleITK/SimpleITK/releases/tag/v0.9.1 Release Notes] [https://sourceforge.net/projects/simpleitk/files/SimpleITK/0.9.1 Downloads]
* Dynamic casting
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=7f06e9fc7f3cda9c47e8b7d6d37885b1f425ea3b v0.9.0] [https://github.com/SimpleITK/SimpleITK/releases/tag/v0.9.0 Release Notes] [https://sourceforge.net/projects/simpleitk/files/SimpleITK/0.9.0 Downloads] [https://www.itk.org/SimpleITKDoxygen09/html/index.html Doxygen]
** Should there be convenience methods to do this?
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=d0a90983877b46631e69a398bd8341889912c8c2 v0.8.1] [https://github.com/SimpleITK/SimpleITK/releases/tag/v0.8.1 Release Notes]  [https://sourceforge.net/projects/simpleitk/files/SimpleITK/0.8.1/ Downloads]  [https://www.itk.org/SimpleITKDoxygen08/html/index.html Doxygen]
** Should the user have to do it themselves?
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=11bff587f8a930bbca02813595aa3d08388af979 v0.8.0] [https://github.com/SimpleITK/SimpleITK/releases/tag/v0.8.0  Release Notes]  [https://sourceforge.net/projects/simpleitk/files/SimpleITK/0.8.0/ Downloads]
* User seeing templates
* [https://itk.org/gitweb?p=SimpleITK.git;a=commit;h=a2b29110771a1eb0b09d18ff8e98a784dc6e6451 v0.7.1]  [https://github.com/SimpleITK/SimpleITK/releases/tag/v0.7.1  Release Notes]  [https://sourceforge.net/projects/simpleitk/files/SimpleITK/0.7.1/ Downloads]
** Are we all agreed that the user should never see templates?
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=6fecf5ae5859295082b9016c97bf4bd68a961a62 v0.7.0] [https://github.com/SimpleITK/SimpleITK/releases/tag/v0.7.0  Release Notes]  [https://sourceforge.net/projects/simpleitk/files/SimpleITK/0.7.0/ Downloads]  [https://www.itk.org/SimpleITKDoxygen07/html/index.html Doxygen]
** image creation without templates?
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=fc17df598cac97d344c875fed117f03ae7d1aacd v0.6.1]  [https://sourceforge.net/projects/simpleitk/files/SimpleITK/0.6.1/ Downloads] [http://www.itk.org/SimpleITKDoxygen06/html/index.html Doxygen]
* Documentation
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=c055ef4e4cd2802c56e169084d9dd1bc655b4e93 v0.6.0]  [https://sourceforge.net/projects/simpleitk/files/SimpleITK/0.6.0/ Downloads]
** Doxygen
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=41fbb6d69f88fa1c8ab3b9d710b7ae57bb975721 v0.5.1]  [https://sourceforge.net/projects/simpleitk/files/SimpleITK/0.5.1/ Downloads]
** Tutorial?
* [https://itk.org/gitweb?p=SimpleITK.git;a=tag;h=35ccfd2b99b4b5675d4d0894bb870574396408b6 v0.5.0]  [https://sourceforge.net/projects/simpleitk/files/SimpleITK/0.5.0/ Downloads]
 
= Development =
 
SimpleITK has moved to a [https://github.com/SimpleITK/SimpleITK Github] based work flow for issues tracking and contribution.
 
 
SimpleITK utilizes an additional "next" branch to merge and test changes before merging into the master branch. This makes our "master" branch more stable and reliable. This follows the CMake development process:
 
* [http://www.cmake.org/Wiki/CMake/Git/Develop CMake Development Process ]
 
 
== Source Code Repository ==
 
SimpleITK uses git as the revision control system.  The official repository is hosted along side ITK as http://itk.org/SimpleITK.git  [http://public.kitware.com/gitweb?p=SimpleITK.git]. It is also mirrored on  [https://github.com/SimpleITK/SimpleITK Github ].
 
Development is currently following the branchy workflow with the Kitware stage repository. This workflow is described here:
*http://public.kitware.com/Wiki/Git/Workflow/Stage
*http://public.kitware.com/Wiki/Git/Workflow/Topic
 
Contributions from github will be pushed to the stage repo and merged into the next branch by a SimpleITK developer.
 
== [[SimpleITK/Design_And_Proposals | Design And Proposals]] ==

Latest revision as of 18:17, 13 December 2019

NOTICE
This page is being migrated to Read The Docs!

For the up to date version please see this page!

SimpleITK-SquareTransparentLogo.png

Overview

Welcome to the National Library of Medicine Insight Segmentation and Registration Toolkit (ITK). ITK is an open-source, cross-platform system that provides developers with an extensive suite of software tools for image analysis. Among them, SimpleITK is a simplified layer built on top of ITK, intended to facilitate its use in rapid prototyping, education, interpreted languages. SimpleITK has the following main characteristics:

  • C++ library with wrappers for Python, Java, CSharp, R, Tcl and Ruby
  • Object-oriented
  • Provides a simplified, easy-to-use, procedural interface without templates
  • Is distributed under an open source Apache 2.0 License
  • Binary distributions for Python, Java and CSharp

SimpleITK captures many of features available in ITK, and is under ongoing development. Earlier in the development process a set of Specific Goals were outlined.

How to Cite

If you find SimpleITK useful in your research, please cite the relevant publications:

  • Lowekamp BC, Chen DT, Ibáñez L and Blezek D (2013) The Design of SimpleITK. Front. Neuroinform. 7:45. doi: 10.3389/fninf.2013.00045
  • 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., https://doi.org/10.1007/s10278-017-0037-8, 2017. (you can freely read the manuscript here)


Getting Started

Download

SimpleITK currently provides binary distribution for Python, CSharp and Java language bindings. You can download the 1.0.0 release from SourceForge.

Documentation

API

Short Examples

Concise examples illustrating the usage of various SimpleITK features. Examples are written in a variety of languages including Python, R, C++, Java...

SimpleITK Notebooks

The SimpleITK Notebooks are examples and tutorials on how to use SimpleITK utilizing Jupyter Notebooks. This approach allows the user to create, edit and re-run scripts and view the results all within a web interface. The authoritative description of what Jupyter Notebooks are can be found on the Jupyter website. While SimpleITK supports a number of programming languages, the majority of notebooks are written in Python and some in R.

The main notebook repository is available on github.

Additional repositories containing tutorial specific notebooks are listed in the Tutorials section below.

SimpleITK Tutorials

Upcoming


Past

Tutorial material: git repository additional presentations .
Tutorial material: git repository.
Tutorial material: git repository.
  • Medical Image Computing and Computer Assisted Intervention (MICCAI) 2011, Toronto, Canada: a general tutorial on SimpleITK.
Tutorial material: PDF of presentation, virtual machine, and git repository.

Community Blogs

These are blog entries written by people who are not necessarily directly involved with SimpleITK. If you want us to link to your SimpleITK blog entry just let us know on the mailing list (community@itk.org).

Support

SimpleITK is supported through the ITK community and the active developers. In addition to the resources listed above in the documentation section, the discourse forum can be used to ask questions and obtain additional help from the ITK community. The legacy ITK mailing lists is no longer prefered.

Issue Tracking And Feature Requests

We are currently using the github issue tracker. Before switching to github issue tracking we used an instance of the Legacy Jira Issue Tracker hosted by the University of Iowa.

Releases

Development

SimpleITK has moved to a Github based work flow for issues tracking and contribution.


SimpleITK utilizes an additional "next" branch to merge and test changes before merging into the master branch. This makes our "master" branch more stable and reliable. This follows the CMake development process:


Source Code Repository

SimpleITK uses git as the revision control system. The official repository is hosted along side ITK as http://itk.org/SimpleITK.git [1]. It is also mirrored on Github .

Development is currently following the branchy workflow with the Kitware stage repository. This workflow is described here:

Contributions from github will be pushed to the stage repo and merged into the next branch by a SimpleITK developer.

Design And Proposals