How to create a DICOM image from a tiff file
- DICOM-izer une image
-
Si l'objectif est de DICOM-izer une image sans avoir le "deep zoom",
l'API REST d'Orthanc a la route "/tools/create-dicom" pour ce faire
-
(il n'y a pas de nécessité de passer par PIL/pydicom, donc) :
https://api.orthanc-server.com/index.html#tag/System/paths/~1tools~1create-dicom/post - le plugin WSI permet d'introduire le support du standard IIIF même pour les images qui ne sont pas créées avec "OrthancWSIDicomizer" mais sans le "deep zoom"
https://book.orthanc-server.com/plugins/wsi.html#support-of-iiif
-
- DICOM-izer une image mutli résolution "deep zoom"
-
Utilise la version du plugin WSI 2.0
-
l'outil en ligne de commande "OrthancWSIDicomizer" est disponible pour créer du DICOM au départ de fichiers TIFF/JPEG/PNG.Son le fonctionnement est décrit ici :
-
Voici un fichier de configuration minimal
-
{
"Plugins" : [ "." ],
"WholeSlideImaging" : {
"EnableIIIF" : true,
"ServeMirador" : true,
"ServeOpenSeadragon" : true
}
}-
- les dimensions de l'image en pixels doivent divisibles par des puissances de 2.
-
À noter que IIIF ne supporte pas efficacement une image de dimension de 9451x8635, ce qui n'est pas divisible par les puissances de deux (2, 4, 8, 16...).Or, il s'agit d'une restriction dans la spécification de IIIF (rien de spécifique à Orthanc, donc).
-
-
-
Pour pallier ce souci, avant de DICOM-izer l'image JPEG, il suffirait de lui ajouter un padding (une bande sur le pourtour de l'image) pour arriver, par exemple, à une dimension de 9456x8640.C'est très facile à faire avec ImageMagick :$ convert -extent 9456x8640 carte.jpg -gravity center resized.jpgSi "convert" se plaint avec une erreur du type "convert-im6.q16: cache resources exhausted", il faut changer les fichiers de configuration d'ImageMagick pour augmenter l'usage mémoire : https://stackoverflow.com/a/69114403
-
-
La restriction "hauteur/largeur divisibles par des puissances de deux" n'est nécessaire que si on veut avoir des capacités de "deep zoom" à travers le IIIF, ce qui nécessite par ailleurs le passage par l'application "OrthancWSIDicomizer" afin de créer la pyramide multi-résolution :
L'outil "OrthancWSIDicomizer" propose
-
-
- 3 types de compression avec l'option "--compression" : "none" (lossless), "jpeg" (lossy) et "jpeg2000" (lossless).
-
Voici les tailles des séries DICOM par exemple les tailles obtenues avec ces trois types de compression, tous les autres paramètres de la DICOM-ization restant à leur valeur par défaut :
- "none" : 339MB,
- "jpeg" : 17MB,
- "jpeg2000" : 122MB.
Si l'image de départ est une image JPEG, utiliser du JPEG lossy fait sens.
Le fait que la version DICOM-isée est de 17MB là où l'image originale fait 8MB s'explique par le fait qu'il faut stocker la pyramide multi-résolution et les tags DICOM.
-
-
- Les options "--levels" et "--jpeg-quality"
-
permettent de réduire l'espace nécessaire, respectivement en limitant le nombre de niveaux dans la pyramide et en réduisant la qualité de la compression JPEG pour chaque tuile. Par exemple, en utilisant
"OrthancWSIDicomizer --compression jpeg --levels 3 --jpeg-quality 80 carte-geologique-du-congo-belge-feuilles-14-7-et-15-watsa.jpg",
on obtiens un espace de 11MB sans perte significative de détails.
- GUI
Il est certainement faisable de créer un GUI desktop pour créer des images DICOM au départ d'images PNG/JPEG/TIFF.
-
- L'outil à la ligne de commande "OrthancWSIDicomizer" le permet déjà pour des images tuilées multi-résolution, et je pourrais parfaitement développer un outil équivalent en ligne de commande pour les images non-tuilées.
- Si l'objectif est de faciliter au maximum la distribution d'un GUI desktop sur des PC, Sébastien conseille toutefois d'utiliser Qt en C++, ce qui évite le cauchemar de déploiement/maintenance lié au Python, singulièrement sur les machines Windows. Dans ce cas, je vous recommande d'utiliser la librairie DCMTK pour le DICOM en C++.