1 2 1 kaspermarstal/ 2 SimpleElastix SimpleElas*x: A user ......transformix. Figure 2. Example of...

1
SimpleElas*x: A user-friendly, mul*-lingual library for medical image registra*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. Marstal 1 , F.F. Berendsen 2 , M. Staring 2 , S. Klein 1 1 Biomedical Imaging Group RoFerdam, Erasmus Medical Center 2 Division of Image Processing, Leiden University Medical Center Dutch Technology Founda1on STW Introduc*on In the past decade a significant amount of research has focused on developing new registra1on algorithms. However, less research has focused on accessibility, interoperability and extensibility of such algorithms and their implementa1ons. This is a problem since image registra1on is a prerequisite for a wide range of medical image analysis tasks and a key algorithmic component for image-based studies. Open source, user-friendly implementa1ons of scien1fic soGware make state-of-the-art methods accessible to a wider audience, promote opportuni1es for scien1fic advancement, and support the fundamental scien1fic principle of reproducibility. To this end, we have developed the SimpleElas1x soGware package. Take-home messages Incorporate elastix and transformix in your image processing pipeline with few lines of code. Download at https ://github.com/kaspermarstal/ SimpleElastix . Documentation available at https://simpleelastix.readthedocs.io . Project website at https://simpleelastix.github.io Examples: Image registra*on in Python, R and Java Parallel 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)) ) What is SimpleElas*x? SimpleElas1x extends the SimpleITK image processing library by including the elas1x image registra1on toolbox. Elas1x is a modular collec1on of high-performance medical image registra1on algorithms. With SimpleElas1x, all of elas1x’ funcitonality becomes available many programming languages, making elas1x easy to use in any of the following envrionments: Figure 1. Schema1c depic1on of soGware architecture. An ITK Filter-style wrapper and a SimpleITK-style facade interface connects elas1x with the SimpleITK build- infrastructure, allowing SimpleITK to be compiled with support for elas1x and transformix. Figure 2. Example of two registered images from the Hammersmith83 dataset using the Python code below. Checkerboard paSern of fixed and result images (leG) and overlay of associated segmenta1ons (right). SimpleElas*x supports C++, C#, Python, R, Java, TCL, Ruby, Octave and Lua on Linux, Mac and Windows.

Transcript of 1 2 1 kaspermarstal/ 2 SimpleElastix SimpleElas*x: A user ......transformix. Figure 2. Example of...

Page 1: 1 2 1 kaspermarstal/ 2 SimpleElastix SimpleElas*x: A user ......transformix. Figure 2. Example of two registered images from the Hammersmith83 dataset using the Python code below.

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.