1 2 1 kaspermarstal/ 2 SimpleElastix SimpleElas*x: A user ......transformix. Figure 2. Example of...
Transcript of 1 2 1 kaspermarstal/ 2 SimpleElastix SimpleElas*x: A user ......transformix. Figure 2. Example of...
SimpleElas*x:Auser-friendly,mul*-linguallibraryformedicalimageregistra*on
https://github.com/kaspermarstal/SimpleElastix
Protyping in Python import SimpleITK as sitk fixedImage = sitk.ReadImage('fixed.nii') movingImage = sitk.ReadImage('moving.nii') resultImage = sitk.Elastix(fixedImage, movingImage)
Prototyping in R library(SimpleITK) fixedImage <- ReadImage('fixed.nii', 'sitkFloat32') movingImage <- ReadImage('moving.nii', 'sitkFloat32') resultImage <- Elastix(fixedImage, movingImage)
K.Marstal1,F.F.Berendsen2,M.Staring2,S.Klein11BiomedicalImagingGroupRoFerdam,ErasmusMedicalCenter2DivisionofImageProcessing,LeidenUniversityMedicalCenter
DutchTechnologyFounda1onSTW
Introduc*onIn the past decade a significant amount of research hasfocused on developing new registra1on algorithms.However, less research has focused on accessibility,interoperability and extensibility of such algorithms andtheir implementa1ons. This is a problem since imageregistra1on is a prerequisite for awide range ofmedicalimageanalysistasksandakeyalgorithmiccomponentforimage-basedstudies.Open source, user-friendly implementa1ons of scien1ficsoGware make state-of-the-art methods accessible to awider audience, promote opportuni1es for scien1ficadvancement, and support the fundamental scien1ficprincipleofreproducibility.Tothisend,wehavedevelopedtheSimpleElas1xsoGwarepackage.
Take-homemessages• Incorporate elastix and transformix in
your image processing pipeline with few lines of code.
• Download athttps://github.com/kaspermarstal/SimpleElastix.
• Documentation available at https://simpleelastix.readthedocs.io.
• Project website at https://simpleelastix.github.io
Examples:Imageregistra*oninPython,RandJavaParallel processing with Java 8 parallel streams import org.itk.simple.* Image fixedImage = ReadImage(“fixed.nii”) List<Image> movingImageFileNames = Arrays.asList(“moving0.nii”, “moving1.nii”) movingImages.parallelStream.forEach( movingImageFileName -> Elastix(fixedImage, ReadImage(movingImageFileName)) )
WhatisSimpleElas*x?SimpleElas1x extends the SimpleITK imageprocessing library by including the elas1x imageregistra1ontoolbox.Elas1x isamodularcollec1onof high-performance medical image registra1onalgorithms. With SimpleElas1x, all of elas1x’funcitonalitybecomesavailablemanyprogramminglanguages,makingelas1xeasytouseinanyofthefollowingenvrionments:
Figure 1. Schema1c depic1on of soGwarearchitecture.AnITKFilter-stylewrapperanda SimpleITK-style facade interface connectse l a s1x w i th t he S imp l e I TK bu i l d -infrastructure, allowing SimpleITK to becompiled with support for elas1x andtransformix.
Figure 2. Example of two registered imagesfromtheHammersmith83datasetusing thePythoncodebelow.CheckerboardpaSernoffixedand result images (leG)andoverlayofassociatedsegmenta1ons(right).
SimpleElas*x supports C++,C#, Python, R, Java, TCL,Ruby, Octave and Lua onLinux,MacandWindows.