This repository contains a tool that converts whole slide images (WSIs) to DICOM. To read the underlying whole slide images (WSIs), this tool relies on OpenSlide, which supports a variety of file formats.
To download the latest release, on the Releases tab, download the installer for your operating system and then run it. For example, if you're running on a Debian-based system, download the wsi2dcm_x.y.z.deb file and then run:
sudo apt install ./wsi2dcm_x.y.z.deb
Note: if you get an error about missing shared libraries, run sudo ldconfig or make sure that /usr/local/lib is in your LD_LIBRARY_PATH.
You may also need to install the following packages and their dependencies with sudo apt-get install:
libtiff-devlibxml2-devlibcairo-devgtk2-engines-pixbuf
brew install wsi2dcm.rb
If an installer isn't available for your operating system, see Compiling from source.
After you have installed the WSI to DICOM converter, to convert a file, run the following command:
wsi2dcm --input <wsiFile> --outFolder <folder for generated files> --seriesDescription <text description>
Test data is freely available from OpenSlide.
To see all available options, run: wsi2dcm --help.
Input wsi file, supported by openslide.
Folder to store dcm files
Tile height px.
Tile width px.
Number of levels to generate, levels == 0 means number of levels will be read from wsi file.
Size factor for each level for each level, downsample is size factor for each level.
eg: if base level size is 100x100 and downsamples is (1, 2, 10) then
- level0 100x100
- level1 50x50
- level2 10x10
Level to start generation.
Level to stop generation.
Use TILED_SPARSE frame organization, by default it's TILED_FULL http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.17.3.html
Compression, supported compressions: jpeg, jpeg2000, raw.
(0008,103E) [LO] SeriesDescription Dicom tag.
(0020,000D) [UI] StudyInstanceUID Dicom tag.
(0020,000E) [UI] SeriesInstanceUID Dicom tag.
Dicom json file with additional tags https://www.dicomstandard.org/dicomweb/dicom-json-format/
Maximum frames in one file, as limit is exceeded new files is started.
eg: 3 files will be generated if batch is 10 and 30 frames in level
Threads to consume during execution.
Print debug messages: dimensions of levels, size of frames.
Drop first row and column of the source image in order to workaround bug openslide/openslide#268
Using docker is the most reliable way to build from source.
docker build .If you're using Debian 12, run the following command to download the dependencies and build the tool:
sudo ./cloud_build/debianBuild.shOtherwise, follow these steps:
- Download the source from the Releases tab or check out the repo.
- Make sure that you have the following dependencies installed:
- g++ >=8
- cmake >=3
- boost >=1.69: https://www.boost.org/users/history/version_1_69_0.html
- dcmtk source ==3.6.6: https://github.com/DCMTK/dcmtk/archive/refs/tags/DCMTK-3.6.6.zip
- openslide >=3.4.1
- libjpeg_turbo >= 2.1.2 https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/2.1.2.zip
- openjpeg >= 2.3.0
- jsoncpp >= 1.8.0
- OpenCV >= 4.5.4. https://github.com/opencv/opencv/archive/refs/tags/4.5.4.zip
- abseil >= 20211102.0 https://github.com/abseil/abseil-cpp/archive/refs/tags/20211102.0.zip
- Run the following commands:
mkdir build
cd build
cp -R %dcmtkDir% ./dcmtk-3.6.6
cmake ..
make -j%threads%