ProsteITK

ProsteITK
Deweloperzy Konsorcjum oprogramowania Insight
Wersja stabilna
2.2.1 / 1 grudnia 2022 r . ; 3 miesiące temu ( 2022-12-01 )
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 www.simpleitk.org _ _

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