Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ykuo2/dicom2jpg
A simple Python function tool to convert DICOM files into jpg/png/bmp/tiff files and numpy.ndarray
https://github.com/ykuo2/dicom2jpg
converter dicom dicom-files dicom-images image image-processing medical-image-processing medical-imaging
Last synced: 3 months ago
JSON representation
A simple Python function tool to convert DICOM files into jpg/png/bmp/tiff files and numpy.ndarray
- Host: GitHub
- URL: https://github.com/ykuo2/dicom2jpg
- Owner: ykuo2
- License: mit
- Created: 2021-05-31T08:50:28.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-01-03T17:44:55.000Z (about 2 years ago)
- Last Synced: 2024-10-01T20:51:27.824Z (4 months ago)
- Topics: converter, dicom, dicom-files, dicom-images, image, image-processing, medical-image-processing, medical-imaging
- Language: Jupyter Notebook
- Homepage:
- Size: 30.9 MB
- Stars: 37
- Watchers: 2
- Forks: 13
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dicom2jpg
Converts DICOM to `JPG/PNG/BMP/TIFF` and `numpy.ndarray`# Installation
```
pip install dicom2jpg
```# Introdunction
```
import dicom2jpgdicom_img_01 = "/Users/user/Desktop/img01.dcm"
dicom_dir = "/Users/user/Desktop/Patient_01"
export_location = "/Users/user/Desktop/BMP_files"# convert single DICOM file to jpg format
dicom2jpg.dicom2jpg(dicom_img_01)# convert all DICOM files in dicom_dir folder to png format
dicom2jpg.dicom2png(dicom_dir)# convert all DICOM files in dicom_dir folder to bmp, to a specified location
dicom2jpg.dicom2bmp(dicom_dir, target_root=export_location)# convert single DICOM file to numpy.ndarray for further use
img_data = dicom2jpg.dicom2img(dicom_img_01)# convert DICOM ByteIO to numpy.ndarray
img_data = dicom2jpg.io2img(dicomIO)```
**dicom2jpg**
converts DICOM images to `JPG/PNG/BMP/TIFF` formats and to `numpy.ndarray`.
It piplines the lookup transformations by applying Modality LUT, VOI LUT, and Presentation LUT to the images,
which makes output files looks like what we see on standard DICOM viewers.`dicom2jpg.dicom2jpg(origin, target_root=None, anonymous=False, multiprocessing=True)`
`dicom2jpg.dicom2png(origin, target_root=None, anonymous=False, multiprocessing=True)`
`dicom2jpg.dicom2bmp(origin, target_root=None, anonymous=False, multiprocessing=True)`
`dicom2jpg.dicom2tiff(origin, target_root=None, anonymous=False, multiprocessing=True)`
- origin can be a single DICOM file, a folder, or a list/tuple of file/folder
- target_root would be the root folder of the first file/folder if not specified
- exported files paths would be> *target_root / Today / PatientID_Filetype / StudyDate_StudyTime_Modality_AccNum / Ser_Img.Filetype*
- anonymous files paths would be
> *target_root / Today / Patient_SerialNum / ModalitySerialNum_Modality / Ser_Img.Filetype*
`dicom2jpg.dicom2img(origin)`
`dicom2jpg.io2img(dicomIO)`
- converting dicom files or ByteIO to ndarray
- ndarray is in 8 bit; RGB format if it's a color image# Image examples
| CT | MR |CXR|
|------------|-------------|------------|
||||# Todo
- Support multi-frame images
- Image compression
- Support overlays
# Performance
- Environment: Windows10, Jupyter Notebook, Python 3.8.10
- 598MB 1873 files {'CT': 1528, 'CR': 52, 'MR': 174, 'DX': 36}
- Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz. 4 Cores (hyper-threading off)
- Tested on Ramdisk (no physical HDD was tortured :P)| multiprocessing | anonymous | duration (seconds) |
|------------|-------------|------------|
|False|True|154.6-159.7|
|True|True|79.2-82.9|
|False|False|157.9-162.8|
|True|False|56-58.5|