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-dev
libxml2-dev
libcairo-dev
gtk2-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
If you're using Ubuntu, run the following command to download the dependencies and build the tool:
sudo ./cloud_build/ubuntuBuild.sh
Otherwise, 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%