How rordenlab/dcm2niix works
dcm2niix converts vendor-specific DICOM neuroimaging data into NIfTI images and BIDS JSON sidecars, with optional compressed or alternate image formats. The main workflow is DICOM input → CLI/batch discovery → DICOM parsing and pixel decoding → image and metadata output. Documented extensions include physiological recordings, spectroscopy, ReproIn naming and post-processing, plus browser/WASM use. Paths for some capabilities are based on the repository tree and README; their internal wiring was not sampled, so uncertain links are omitted.
Main entry points: nii_dicom.cpp DICOM parser · main_console.cpp CLI entry · nii_dicom_batch.cpp Batch conversion · worker.js WASM worker
Components 25
Entry points
- CLI entry
console/main_console.cpp - Batch conversion
console/nii_dicom_batch.cpp - Python wrapper
dcm2niix/__init__.py
DICOM processing
- DICOM parser
console/nii_dicom.cpp - Fragment reassembly
console/dicom_fragments.cpp - JPEG decoding
console/ujpeg.cpp - JPEG-LS decoding
console/charls/jpegls.cpp - JPEG lossless
console/jpg_0XC3.cpp - Image codecs
console/nii_foreign.cpp
Conversion outputs
- NIfTI I/O
console/nifti1_io_core.cpp - Image orientation
console/nii_ortho.cpp - Metadata sidecars
console/nii_dicom.cpp
BIDS extensions
- Physiology export
console/nii_dicom.cpp - Spectroscopy export
console/nii_dicom.cpp - ReproIn naming
console/reproin.cpp - Cross-series BIDS
tools/reproinx.py
Browser runtime
- Browser API
js/src/index.js - WASM worker
js/src/worker.js - WASM converter
js/src/worker.js
Other components
- Operator
- DICOM files
- NIfTI and sidecars
- BIDS dataset
- Browser files
- Browser outputs
Connections 28
- Operator → CLI entry: runs
- DICOM files → Batch conversion: supplies
- CLI entry → Batch conversion: starts
- Batch conversion → DICOM parser: dispatches
- DICOM parser → Fragment reassembly: reassembles
- DICOM parser → JPEG decoding: decodes
- DICOM parser → JPEG-LS decoding: decodes
- DICOM parser → JPEG lossless: decodes
- DICOM parser → Image codecs: decodes
- DICOM parser → NIfTI I/O: writes images
- DICOM parser → Image orientation: transforms images
- DICOM parser → Metadata sidecars: writes metadata
- DICOM parser → Physiology export: extracts streams
- DICOM parser → Spectroscopy export: converts spectra
- NIfTI I/O → NIfTI and sidecars: writes images
- Metadata sidecars → NIfTI and sidecars: writes sidecars
- Physiology export → NIfTI and sidecars: writes recordings
- Spectroscopy export → NIfTI and sidecars: writes spectra
- DICOM parser → ReproIn naming: names outputs
- NIfTI and sidecars → Cross-series BIDS: post-processes
- Cross-series BIDS → BIDS dataset: updates dataset
- Operator → Python wrapper: invokes
- Python wrapper → CLI entry: runs binary
- Operator → Browser API: submits files
- Browser API → WASM worker: sends files and options
- Browser files → WASM worker: provides input
- WASM worker → WASM converter: invokes
- WASM converter → Browser outputs: produces files