ProsteITK
Deweloperzy | Konsorcjum oprogramowania Insight |
---|---|
Wersja stabilna | 2.2.1 / 1 grudnia 2022 r
|
Napisane w | C++ , Python , R , Java , C# , Lua , Ruby , Tcl |
System operacyjny | Międzyplatformowe |
Typ | Biblioteka do analizy obrazu |
Licencja | Apache 2.0 |
Strona internetowa |
SimpleITK to uproszczony interfejs typu open source do zestawu Insight Segmentation and Registration Toolkit (ITK). Biblioteka analizy obrazu SimpleITK jest dostępna w wielu językach programowania, w tym C++ , Python , R , Java , C# , Lua , Ruby i Tcl . Dystrybucje binarne są dostępne dla wszystkich trzech głównych systemów operacyjnych ( Linux , macOS i Microsoft Windows ).
Opracowany w Narodowym Instytucie Zdrowia (NIH) jako otwarty zasób, jego głównym celem jest udostępnienie algorytmów dostępnych w bibliotece ITK jak najszerszemu gronu naukowców zajmujących się analizą obrazu , niezależnie od ich umiejętności programistycznych. W konsekwencji interfejs SimpleITK eksponuje tylko najczęściej modyfikowane ustawienia algorytmiczne komponentów ITK. Dodatkowo biblioteka zapewnia zarówno zorientowanie obiektowe , jak i proceduralne interfejs do większości filtrów przetwarzania obrazu. Ta ostatnia umożliwia przepływy pracy związane z analizą obrazu ze zwięzłą składnią. Drugim celem biblioteki jest promowanie powtarzalnych przepływów pracy związanych z analizą obrazu przy użyciu biblioteki SimpleITK w połączeniu z nowoczesnymi narzędziami do powtarzalnych przepływów obliczeniowych dostępnych w językach programowania Python ( notatniki Jupyter ) i R ( pakiet knitr ).
Rozwój oprogramowania koncentruje się na GitHub przy użyciu modelu fork and pull . Projekt jest tworzony przy użyciu CMake , a conocne kompilacje są publikowane na pulpicie nawigacyjnym jakości projektu .
Wiele aplikacji i bibliotek do analizy obrazów medycznych zawiera SimpleITK jako kluczowy element konstrukcyjny, ponieważ zapewnia szeroki zakres filtrów obrazów i komponentów IO obrazu z przyjaznym dla użytkownika interfejsem. Przykłady obejmują narzędzie skryptowe pyOsirix dla popularnej Osirix , pakiet pyradiomics python do wydobywania cech radiomicznych z obrazowania medycznego, aplikację do analizy obrazu 3DSlicer , bibliotekę rejestracji obrazów medycznych SimpleElastix oraz bibliotekę głębokiego uczenia NiftyNet do obrazowania medycznego.
Historia
Początkowy rozwój SimpleITK został sfinansowany przez Narodową Bibliotekę Medyczną Stanów Zjednoczonych w ramach programu American Recovery and Reinvestment Act (ARRA) w ramach współpracy między The Mayo Clinic, Kitware Inc, University of Iowa i programem stacjonarnym NLM. Pierwsze główne wydanie zestawu narzędzi zostało ogłoszone w kwietniu-maju 2017 r . Drugie główne wydanie zostało ogłoszone we wrześniu 2020 roku.
W latach 2013-2019 rozwój SimpleITK był prowadzony głównie w ramach stacjonarnego programu badawczego National Library of Medicine ze współpracownikami z University of Iowa i Monash University. Od 2019 roku rozwój SimpleITK jest prowadzony przede wszystkim w ramach Biura Cyberinfrastruktury i Biologii Obliczeniowej w Narodowym Instytucie Alergii i Chorób Zakaźnych . W kwietniu 2020 zestaw narzędzi zmienił logo na bardziej nowoczesny.
Przykłady
Wygładzanie Gaussa
Krótkie skrypty w języku Python ilustrujące czytanie, rozmycie i pisanie obrazów. Korzystanie z interfejsu zorientowanego obiektowo:
import SimpleITK as sitk import sys if len ( sys . argv ) < 4 : print ( "Użycie: SimpleGaussian <input> <sigma> <output>" ) sys . wyjdź ( 1 ) czytnik = sitk . Czytnik ImageFileReader () . SetFileName ( sys . argv [ 1
]) obraz = czytelnik . Wykonaj () pixelID = obraz . GetPixelID () gaussian = sitk . WygładzanieRekurencyjneGaussianImageFilter () gaussowski . SetSigma ( float ( sys . argv [ 2 ])) image = gaussowski . Wykonaj ( obraz ) rzucający = sitk .
CastImageFilter () rzucający . SetOutputPixelType ( identyfikator piksela ) obraz = rzucający . Wykonaj ( obraz ) pisarz = sitk . ImageFileWriter () pisarz . SetFileName ( sys . argv [ 3 ]) pisarz . Wykonaj ( obraz )
Bardziej zwięzła wersja wykorzystująca interfejs proceduralny:
import SimpleITK as sitk import sys if len ( sys . argv ) < 4 : print ( "Użycie: SimpleGaussian <input> <sigma> <output>" ) sys . wyjdź ( 1 ) obraz = usiądź . Odczyt obrazu ( sys . argv [ 1 ]) identyfikator piksela = obraz .
GetPixelID () obraz = sitk . Cast ( sitk . SmoothingRecursiveGaussian ( obraz , float ( sys . argv [ 2 ])), pixelID ) sitk . WriteImage ( obraz , sys . argv [ 3 ])
Wielomodalna sztywna rejestracja
Krótki skrypt R ilustrujący wykorzystanie frameworka rejestracji biblioteki do sztywnej rejestracji dwóch obrazów 3D:
library ( SimpleITK ) args = commandArgs ( trailingOnly = TRUE ) if ( length ( args ) < 2 ) { cat ( "Użycie: rejestracja <fixed_image> <moving_image> <output_transform>\n" ) exit ( save = "no" , status = 1 ) } stały_obraz <-
ReadImage ( args [ 1 ], "sitkFloat32" ) move_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 = 1 00 )
reg $ SetOptimizerScalesFromPhysicalShift () reg $ SetInitialTransform ( transformacja_początkowa , inPlace = FAŁSZ ) transformacja końcowa <- reg $ Wykonaj ( obraz stały , obraz ruchomy ) WriteTransform ( transformacja_końcowa , "transformacja_końcowa.tfm" )
Linki zewnętrzne
- Oficjalna strona internetowa
- Organizacja na GitHub
- Krótkie przykłady ilustrujące sposób korzystania z niektórych komponentów biblioteki są dostępne na stronie read thedocs .
- Dokumentacja klas i procedur jest dostępna za pośrednictwem Doxygen .
- Notatniki Jupyter w serwisie GitHub z długimi i obszernie udokumentowanymi przykładami, przydatne do nauki i nauczania pracy z SimpleITK.
- Uzyskaj pomoc, zadawaj pytania na forum dyskusyjnym ITK .