Recent Developments In Free Medical Imaging Software

Transcription

Recent Developments inFree Medical Imaging SoftwareOrthancCon I, 2019Andrew CrabbThe Johns Hopkins UniversityI Do Imaging

Why Free Medical Imaging Software?Why Use It?Why Write It?Medical imaging is well-served by free softwareRecognition and publicityBenefits from collaborative imaging communityFree testing by demanding usersSource code often availableCan address specialist/niche/research needsContributions and improvementsSometimes required by sponsorImaging software is competing for the user’s most valuable asset: timeToday’s users are accustomed to high-quality free softwareMany imaging areas are served by multiple free applicationsOnly the best software becomes self-sustaining

DistributionsSourceGitHub/BitBucket repoVirtual MachinesDocker/DockerHub hg clone bitbucket.org/sjodogne/orthanc docker runjodogne/orthancVagrant/VirtualBoxPlatform Specific git clone xnat.git;./run xnat setupHomeBrew (Mac) brew install dcmtkapt/yum (Linux) apt-get installpython-dicomzypper (openSUSE) zypper installorthancChocolatey (Windows)Language SpecificPip (Python) pip search nifti# (12 results)npm/yarn (Node JS) npm search dicom# (24 results)

DICOM LibrariesDCMTK (OFFIS) C ‘reference’ DICOM library Steady enhancements since 2003 Command line utilitiesdcm4che (dcm4che.org) Java DICOM toolkit since ca. 2000 Many command line applications Adding DICOMWeb capabilitiesGDCM (Mathieu Malaterre) Grassroots DICOM C , binds to Python, C#, Java, PHP SCU network operations

DICOM LibrariesdicomParser (Cornerstone Project) Lightweight JavaScript library for parsingDICOM byte streams For HTML5 browsers, Node, Meteorpydicom (Darcy Mason) Pure Python library, no dependencies Read pixel data with NumPy, PillowRuby DICOM (Christoffer Lervåg) Full Ruby DICOM implementation

RadiAnt Windows DICOM viewer from PolandSteady enhancements since its introductionMultiplanar reconstructionPET-CT image fusionHigh performance GPU-based 3D renderingPACS query/send/retrieve

Horos

WeasisDisplayLong-term project (Nicolas Roduit)RenderDesktop java imaging, PACS deploymentProcessWeb access using weasis:// protocolDICOM send, query, retrieveDICOMWeb capabilities CMStore80TransferHTTP104PACS Server

Oviyam(Raster Images) Web-based DICOM viewer Fronts any DICOM server with WADO Displays images as JPG in TPWADOPluginDCM 104StorePACS Server

TrendsDICOMWebCloudJavaScriptPython

Language TrendsTrending:Python, NodePost-tending:Javascript, JavaSteady:C , C

Luasitk SimpleITKgauss sitk.GaussianSource (size, sigma,center);deriv sitk.Derivative(gauss);function IncomingHttpRequestFilter(method, uri, ip, u-- Only allow GET requests for non-admin usersif method 'GET' thenreturn trueelseif username ‘heyitsme' then--------@usage nmap -p4242 --script dicom-ping target @outputPORTSTATE SERVICE REASON4242/tcp open dicomsyn-ack dicom-ping: dicom: DICOM Service Provider discovered!

Cornerstone(Chris Hafey) Javascript library for building interactive image viewers Display in web browsers using HTML5 Canvas Independent of image container, transport Not constrained to an interaction paradigm Format-specific image loaders: WADO Image Loader (WADO-RS) Web Image Loader

OHIF Viewer Zero-footprint DICOM viewer Supports DICOMWeb Extensions for: Cornerstone,microscopy, VTK

Nextcloud DICOM viewer

VTK-JS and ITK-JS(Kitware)JavaScript ports of foundation packages used in dozens of imaging applicationsVTK-JSVTK: Visualization Toolkit3D scientific data manipulation andvisualizationJavaScript port of core VTK features3D data rendering in a browserCoding similar to VTK C /PythonITK-JSITK Insight ToolkitImage analysis library in C Compiled to asm.js and WebAssemblySpatial analysis in a browser or Node.jsSupports all file formats of ITK

DICOMWeb DICOM: Proprietary transport Nodes identified by three fields: Address (DNS or IP) Application Entity (AE) Title – 16 character string Port number (Port 104 reserved for DICOM)C-FIND“Locate study matching these criteria”C-GET uid ”Send this study to my IP”C-MOVE uid source AET dest AET “Send this study from source to dest”C-STORE data “Store this study/series”

DICOMWebProvides standard REST interface to DICOM image storeRemoves much of the complexity of DICOM transportQueryDICOMC-FINDRetrieve C-GETStoreDICOMwebQIDO-RSQuery on ID for DICOM objectsWADO-RSWeb access of DICOM objectsC-STORE STOW-RSStore over the webGET /studies?.GET /studies/id/series?GET /studies/idGET /studies/id/series/idPOST /studies/id

DICOMWeb ServersDCM4CHEE (dcm4che.org)Comprehensive DICOM archive in JavaFull implementation of DICOM standard HL7Requires Wildfly (JBoss), database, LDAPAvailable on Docker containers

Dicoogle (University of Aveiro)Platform-independent PACS (Java)Implemented on dcm4cheHighly modular: Major functions(store/index/search) by pluginsWebUI plugins: Front-endpluggable components in JSImplements DICOMWebComplex querying: Free textStrong developer support

Dicoogle

DICOMWeb clientsOsirixDicomweb Client (dcmjs.org)

DICOMcloud (Zaid Safadi)DICOMweb ServerOpen source DICOMweb server thatimplements RESTful servicesImplements QIDO-RS, STOW-RS,WADO-RS, WADO-URI‘Azure friendly’ – written in C#Uses Fellow Oak .NET DICOM libraryLive demo on AzureDICOMweb-js ClientJavaScript image viewerWorks with any DICOMweb server

Imaging without DICOM?More usual in: research, smaller imaging modalities Frequent conversion to and from DICOMWorking at the file level is common Often working away from clinical PACS systemsSpecialized file formats for simplicity (NIFTI, MINC) Popular with investigators and developers for ease of adoptionLack DICOM’s specialized transport protocolDI CO MNifti

NIPY: Neuroimaging in PythonNIPY.org: Python processing of neuroimaging dataProjects in pipeline processing, computational anatomy, file I/O,functional MRI, machine learning, electrophysiology, data visualizationNipype: A uniform interface to existing neuroimaging softwareNibabel: Read/write access to (neuro)imaging file formatsNIFTI, GIFTI, Analyze, MINC, MGHFull coverage of coordinate systems and affines

BIDS: Brain Imaging Data StructureA data exchange format using simple file formats and a defined directory structurePrimarily MRI/fMRI, with extensions for PET, EEG, MEGImages in NIfTI, tabular data in TSV, key-value pairs in JSON{my-experimentparticipants.tsvsub-01anatsub-01 t1.nii.gzsub-01 t1.jsonfuncsub01 task bold.nii.gzsub01 task bold.jsondwisub-01 dwi.nii.gz"TaskName": "NBack”,"RepetitionTime":0.8,BIDS AppsPortable neuroimaging pipelines that understandBIDS datasetsApps are stored in Docker HubRun in Docker or SingularityEach has the same core command line argumentsIntegrate into automated platforms

What’s next?Web-native serverless PACSHighly granular, highly scalable, highly availableNoSQL databasesMay suit formats with a sparsely populated dictionaryNon-DICOM storage, transportWould eliminate DICOM dependency and translationMeta-PACSTagging, multiple identities, de-identification, errorhandling, grouping

Desktop java imaging, PACS deployment Web access using weasis:// protocol DICOM send, query, retrieve DICOMWeb capabilities (Orthanc, DCM4CHEE) Store Process Render Display Transfer Client Transfer HTTP PACS Server PACS Plugin DCM 104 DCM 80 WADO. Oviyam (Raster Images) Web-based DICOM viewer