Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 

















SimpleITK







Add links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Developer(s)Insight Software Consortium
Stable release

2.3.0 / 13 September 2023; 10 months ago (2023-09-13)

Written inC++, Python, R, Java, C#, Lua, Ruby, Tcl
Operating systemCross-platform
TypeLibrary for image analysis
LicenseApache 2.0
Websitewww.simpleitk.org

SimpleITK is a simplified, open-source interface to the Insight Segmentation and Registration Toolkit (ITK). The SimpleITK image analysis library is available in multiple programming languages including C++, Python, R,[1] Java, C#, Lua, Ruby and Tcl. Binary distributions are available for all three major operating systems (Linux, macOS and Microsoft Windows).

Developed at the National Institutes of Health (NIH) as an open resource, its primary goal is to make the algorithms available in the ITK library accessible to the broadest range of scientists whose work includes image analysis, irrespective of their software development skills.[2] As a consequence, the SimpleITK interface exposes only the most commonly modified algorithmic settings of the ITK components. Additionally, the library provides both an object oriented and a procedural interface to most of the image processing filters. The latter enables image analysis workflows with concise syntax. A secondary goal of the library is to promote reproducible image analysis workflows[3] by using the SimpleITK library in conjunction with modern tools for reproducible computational workflows available in the Python (Jupyter notebooks) and R (knitr package ) programming languages.

Software development is centered on GitHub using a fork and pull model. The project is built using the CMake tool, with nightly builds posted to the project's quality dashboard.

Multiple medical image analysis applications and libraries incorporate SimpleITK as a key building block, as it provides a wide range of image filtering and image IO components with a user friendly interface. Examples include the pyOsirix[4] scripting tool for the popular Osirix application, the pyradiomics python package for extracting radiomic features from medical imaging,[5] the 3DSlicer image analysis application, the SimpleElastix medical image registration library,[6] and the NiftyNet deep learning library for medical imaging.[7]

History

[edit]

The initial development of SimpleITK was funded by the United States National Library of Medicine under the American Recovery and Reinvestment Act (ARRA) program as a collaboration between The Mayo Clinic, Kitware Inc, The University of Iowa and NLM's intramural program. The first major release of the toolkit was announced in April-May 2017. The second major release was announced in September 2020.

Between 2013 and 2019, SimpleITK development was primarily carried out as part of the intramural research program of the National Library of Medicine with collaborators at The University of Iowa and Monash University. Since 2019, SimpleITK development is primarily carried out under the Office of Cyber Infrastructure and Computational Biology at the National Institute of Allergy and Infectious Diseases. In April 2020 the toolkit changed its logo to a more modern design.

Examples

[edit]

Gaussian smoothing

[edit]

Short Python scripts illustrating image reading, blurring, and writing. Using the object oriented interface:

import SimpleITK as sitk
import sys

if len(sys.argv) < 4:
    print("Usage: SimpleGaussian <input> <sigma> <output>")
    sys.exit(1)

reader = sitk.ImageFileReader()
reader.SetFileName(sys.argv[1])
image = reader.Execute()

pixelID = image.GetPixelID()

gaussian = sitk.SmoothingRecursiveGaussianImageFilter()
gaussian.SetSigma(float(sys.argv[2]))
image = gaussian.Execute(image)

caster = sitk.CastImageFilter()
caster.SetOutputPixelType(pixelID)
image = caster.Execute(image)

writer = sitk.ImageFileWriter()
writer.SetFileName(sys.argv[3])
writer.Execute(image)

A more concise version using the procedural interface:

import SimpleITK as sitk
import sys

if len(sys.argv) < 4:
    print("Usage: SimpleGaussian <input> <sigma> <output>")
    sys.exit(1)

image = sitk.ReadImage(sys.argv[1])
pixelID = image.GetPixelID()
image = sitk.Cast(sitk.SmoothingRecursiveGaussian(image, float(sys.argv[2])), pixelID)
sitk.WriteImage(image, sys.argv[3])

Multi-modality Rigid Registration

[edit]

Short R script illustrating the use of the library's registration framework for rigid registration of two 3D images:

library(SimpleITK)

args = commandArgs( trailingOnly=TRUE )
if( length( args ) < 2 )
{
 cat( "Usage: registration <fixed_image> <moving_image> <output_transform>\n" )
 quit( save="no", status=1 )
}
fixed_image <- ReadImage( args[1], "sitkFloat32" )
moving_image <- ReadImage( args[2], "sitkFloat32" )

initial_transform <- CenteredTransformInitializer( fixed_image,
                                                   moving_image,
                                                   Euler3DTransform(),
                                                   "GEOMETRY" )
reg <- ImageRegistrationMethod()
reg$SetMetricAsMattesMutualInformation( numberOfHistogramBins=50 )
reg$SetMetricSamplingStrategy( "RANDOM" )
reg$SetMetricSamplingPercentage( 0.01 )
reg$SetInterpolator( "sitkLinear" )
reg$SetOptimizerAsGradientDescent( learningRate=1.0,
numberOfIterations=100 )
reg$SetOptimizerScalesFromPhysicalShift()
reg$SetInitialTransform( initial_transform, inPlace=FALSE )
final_transform <- reg$Execute( fixed_image, moving_image )

WriteTransform( final_transform, "final_transform.tfm" )

References

[edit]
  1. ^ R. Beare, B. C. Lowekamp, Z. Yaniv, “Image Segmentation, Registration and Characterization in R with SimpleITK”, J Stat Softw, 86(8), 2018, doi:10.18637/jss.v086.i08.
  • ^ B. C. Lowekamp, D. T. Chen, L. Ibáñez, D. Blezek, "The Design of SimpleITK", Front. Neuroinform.,7:45, 2013, 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., 31(3):290-303, 2018, doi: 10.1007/s10278-017-0037-8.
  • ^ M. D. Blackledge, D. J.Collins, D-M Koh, M. O. Leach, "Rapid development of image analysis research tools: Bridging the gap between researcher and clinician with pyOsiriX", Comput Biol Med., 69:203-212, 2016, doi: 10.1016/j.compbiomed.2015.12.002
  • ^ J. J. M. van Griethuysen, A. Fedorov, C. Parmar, A. Hosny, N. Aucoin, V. Narayan, R. G. H. Beets-Tan, J. C. Fillon-Robin, S. Pieper, H. J. W. L. Aerts, "Computational Radiomics System to Decode the Radiographic Phenotype", Cancer Research, 77(21): e104–e107, 2017, doi: 10.1158/0008-5472.CAN-17-0339
  • ^ K. Marstal, F. Berendsen, M. Staring, S. Klein, "SimpleElastix: A User-Friendly, Multi-lingual Library for Medical Image Registration", IEEE Conference on Computer Vision and Pattern Recognition Workshops (CVPRW), 574-582, 2016, doi:10.1109/CVPRW.2016.78
  • ^ E. Gibson, W. Li, C. Sudre, L. Fidon, D. I. Shakir, G. Wang, Z. Eaton-Rosen, R. Gray, T. Doel, Y. Hu, T. Whyntie, P. Nachev, M. Modat, D. C. Barratt, S. Ourselin, M. J. Cardoso, T. Vercauteren, "NiftyNet: a deep-learning platform for medical imaging", Comput Methods Programs Biomed., 158:113-122, 2018, doi: 10.1016/j.cmpb.2018.01.025
  • [edit]
    Retrieved from "https://en.wikipedia.org/w/index.php?title=SimpleITK&oldid=1226463902"

    Categories: 
    Python (programming language) libraries
    Image processing software
    R (programming language)
    Hidden categories: 
    Articles with short description
    Short description matches Wikidata
    Articles with example Python (programming language) code
    Articles with example R code
     



    This page was last edited on 30 May 2024, at 20:10 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki