All Projects → JuliaHealth → DICOM.jl

JuliaHealth / DICOM.jl

Licence: MIT license
Julia package for reading and writing DICOM (Digital Imaging and Communications in Medicine) files

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to DICOM.jl

wolfpacs
WolfPACS is an DICOM load balancer written in Erlang.
Stars: ✭ 1 (-97.78%)
Mutual labels:  dicom, medical, pacs, radiology
dicomweb-pacs
Easy to use DICOMWEB enabled PACS with DIMSE services based on sqlite database
Stars: ✭ 42 (-6.67%)
Mutual labels:  dicom, medical, pacs, imaging
Niffler
Niffler: A DICOM Framework for Machine Learning and Processing Pipelines.
Stars: ✭ 52 (+15.56%)
Mutual labels:  dicom, pacs, radiology
AlizaMS
DICOM Viewer
Stars: ✭ 144 (+220%)
Mutual labels:  dicom, medical, dicom-files
rid-covid
Image-based COVID-19 diagnosis. Links to software, data, and other resources.
Stars: ✭ 74 (+64.44%)
Mutual labels:  images, medical, radiology
dicom-standard-chinese
Chinese translation of DICOM standard, DICOM协议中文版
Stars: ✭ 26 (-42.22%)
Mutual labels:  dicom, medical, pacs
dicom
C++11 and boost based implementation of the DICOM standard.
Stars: ✭ 14 (-68.89%)
Mutual labels:  dicom, medical
neurdicom
RESTful PACS server with plugins
Stars: ✭ 97 (+115.56%)
Mutual labels:  dicom, pacs
DICOMClient
DICOM utilities for anonymizing, viewing and uploading to a PACS
Stars: ✭ 40 (-11.11%)
Mutual labels:  dicom, pacs
Dicom
⚡High Performance DICOM Medical Image Parser in Go.
Stars: ✭ 643 (+1328.89%)
Mutual labels:  dicom, medical
clara-dicom-adapter
DICOM Adapter is a component of the Clara Deploy SDK which facilitates integration with DICOM compliant systems, enables ingestion of imaging data, helps triggering of jobs with configurable rules and offers pushing the output of jobs to PACS systems.
Stars: ✭ 31 (-31.11%)
Mutual labels:  dicom, medical
Medpy
Medical image processing in Python
Stars: ✭ 321 (+613.33%)
Mutual labels:  dicom, medical
Fo Dicom
Fellow Oak DICOM for .NET, .NET Core, Universal Windows, Android, iOS, Mono and Unity
Stars: ✭ 674 (+1397.78%)
Mutual labels:  dicom, medical
dicom-dimse-native
node js native addon for dimse services
Stars: ✭ 33 (-26.67%)
Mutual labels:  dicom, pacs
Mritopng
A simple python module to make it easy to batch convert DICOM files to PNG images.
Stars: ✭ 113 (+151.11%)
Mutual labels:  dicom, medical
monai-deploy
MONAI Deploy aims to become the de-facto standard for developing, packaging, testing, deploying and running medical AI applications in clinical production.
Stars: ✭ 56 (+24.44%)
Mutual labels:  dicom, radiology
Ami
AMI Medical Imaging (AMI) JS ToolKit
Stars: ✭ 569 (+1164.44%)
Mutual labels:  dicom, medical
bidscoin
BIDScoin converts your source-level neuroimaging data to BIDS
Stars: ✭ 75 (+66.67%)
Mutual labels:  dicom, imaging
Starviewer
Starviewer, a cross-platform open source medical imaging software
Stars: ✭ 83 (+84.44%)
Mutual labels:  dicom, medical
COVID-CT-MD
A COVID-19 CT Scan Dataset Applicable in Machine Learning and Deep Learning
Stars: ✭ 22 (-51.11%)
Mutual labels:  dicom, dicom-files

DICOM.jl

Julia interface for parsing/writing DICOM (Digital Imaging and Communications in Medicine) files

Build Status Coverage

Usage

Installation

To install the package:

julia> using Pkg
julia> Pkg.add("DICOM")

Load the package by

julia> using DICOM

Reading Data

Read a DICOM file by

julia> dcm_data = dcm_parse("path/to/dicom/file")

The data in dcm_data is structured as a dictionary, and individual DICOM elements can be accessed by their hex tag. For example, the hex tag of "Pixel Data" is 7FE0,0010, and it can be accessed in Julia by dcm_data[(0x7FE0,0x0010)] or by dcm_data[tag"PixelData"].

Multiple DICOM files in a folder can be read by

julia> dcm_data_array = dcmdir_parse("path/to/dicom/folder")

Writing Data

Data can be written to a DICOM file by

julia> dcm_write("path/to/output/file", dcm_data)

Additional Notes

DICOM files should begin with a 128-bytes (which are ignored) followed by the string DICM. If this preamble is missing, then the file can be parsed by dcm_parse(path/to/file, preamble = false).

DICOM files use either explicit or implicit value representation (VR). For implicit files, DICOM.jl will use a lookup table to guess the VR from the DICOM element's hex tag. For explicit files, DICOM.jl will read the VRs from the file.

  • An auxiliary user-defined dictionary can be supplied to override the default lookup table For example, the "Instance Number" - tag (0x0020,0x0013) - is an integer (default VR = "IS"). We can read this as a float by setting the VR to "DS" by:

    my_vrs = Dict( (0x0020,0x0013) => "DS" )
    dcm_data = dcm_parse("path/to/dicom/file", aux_vr = my_vrs)
    

    Now dcm_data[(0x0020,0x0013)] will return a float instead of an integer.

    • The parsed VRs are stored in dcm_data.vr
  • It is possible to skip an element by setting its VR to "". For example, we can skip reading the Instance Number by

    my_vrs = Dict( (0x0020,0x0013) => "" )
    dcm_data = dcm_parse("path/to/dicom/file", aux_vr = my_vr)
    

    and now dcm_data[(0x0020,0x0013)] will return an error because the key (0x0020,0x0013) doesn't exist - it was skipped during reading.

  • The user-supplied VR can contain a master VR with the tag (0x0000,0x0000) which will be used whenever DICOM.jl is unable to guess the VR on its own. This is convenient for reading older dicom files and skipping retired elements - i.e. where the VR lookup fails - by:

    my_vrs = Dict( (0x0000,0x0000) => "" )
    dcm_data = dcm_parse("path/to/dicom/file", aux_vr = my_vrs)
    
  • A user-supplied VR can also be supplied during writing, e.g.:

    julia> dcm_write("path/to/output/file", dcm_data, aux_vr = user_defined_vr)
    

    where user_defined_vr is a dictionary which maps the hex tag to the VR.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].