SimpleITK - SimpleITK

SimpleITK
Logo SimpleITK
Logo SimpleITK
Vývojáři Insight Software Consortium
Stabilní uvolnění
2.1.0 / 30. července 2021 ; Před 0 dny ( 2021-07-30 )
Napsáno C ++ , Python , R , Java , C# , Lua , Ruby , Tcl
Operační systém Cross-platform
Typ Knihovna pro analýzu obrazu
Licence Apache 2.0
webová stránka www .simpleitk .org

SimpleITK je zjednodušené, open-source rozhraní k Insight Segmentation and Registration Toolkit (ITK). Knihovna pro analýzu obrázků SimpleITK je k dispozici ve více programovacích jazycích včetně C ++ , Python , R , Java , C# , Lua , Ruby a Tcl . Binární distribuce jsou k dispozici pro všechny tři hlavní operační systémy ( Linux , macOS a Microsoft Windows ).

Vyvinuto v National Institutes of Health (NIH) jako otevřený zdroj, jeho primárním cílem je zpřístupnit algoritmy dostupné v knihovně ITK nejširšímu okruhu vědců, jejichž práce zahrnuje analýzu obrazu , bez ohledu na jejich dovednosti v oblasti vývoje softwaru. V důsledku toho rozhraní SimpleITK vystavuje pouze nejčastěji upravované algoritmické nastavení komponent ITK. Knihovna navíc poskytuje objektově orientované i procedurální rozhraní pro většinu filtrů pro zpracování obrazu. Ten umožňuje pracovní toky analýzy obrazu se stručnou syntaxí. Sekundárním cílem knihovny je podpora pracovních toků reprodukovatelné analýzy obrazu pomocí knihovny SimpleITK ve spojení s moderními nástroji pro reprodukovatelné výpočetní pracovní toky dostupné v programovacích jazycích Python ( notebooky Jupyter ) a R ( balíček knitr ).

Vývoj softwaru je zaměřen na GitHub pomocí modelu vidlice a tahu . Projekt je vytvořen pomocí nástroje CMake , přičemž noční sestavení jsou zveřejněna na hlavním panelu kvality projektu .

Více aplikací a knihoven pro analýzu lékařského obrazu obsahuje SimpleITK jako klíčový stavební blok, protože poskytuje širokou škálu filtrování obrazu a komponent IO obrazu s uživatelsky přívětivým rozhraním. Jako příklady lze uvést skriptovacího nástroje pyOsirix pro populární Osirix žádosti, balíček pyradiomics python pro extrakci radiomic funkce z lékařské zobrazování se 3DSlicer analýza obrazu aplikace se SimpleElastix medicínských obrazových registrace knihovna, a NiftyNet hluboká učení knihovny pro lékařské zobrazování.

Dějiny

Počáteční vývoj SimpleITK byl financován Národní lékařskou knihovnou Spojených států v rámci programu American Recovery and Reinvestment Act (ARRA) jako spolupráce mezi The Mayo Clinic, Kitware Inc, The University of Iowa a NLM's intramural program. První hlavní vydání sady nástrojů bylo oznámeno v dubnu až květnu 2017 . Druhé hlavní vydání bylo oznámeno v září 2020.

Mezi lety 2013 a 2019 byl vývoj SimpleITK primárně prováděn jako součást programu intramurálního výzkumu Národní lékařské knihovny se spolupracovníky z University of Iowa a Monash University. Od roku 2019 se vývoj SimpleITK primárně provádí pod Úřadem pro kybernetickou infrastrukturu a výpočetní biologii v Národním ústavu pro alergie a infekční choroby . V dubnu 2020 sada nástrojů změnila své logo na modernější design.

Příklady

Gaussovské vyhlazování

Krátké skripty Pythonu ilustrující čtení obrázků, rozmazání a psaní. Pomocí objektově orientovaného rozhraní:

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)

Stručnější verze pomocí procedurálního rozhraní:

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])

Multimodální tuhá registrace

Krátký skript R ilustrující použití registračního rámce knihovny pro rigidní registraci dvou 3D obrazů:

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" )

Reference

externí odkazy