Vous pouvez utiliser ImageMagick pour lire des fichiers DICOM. Il est gratuit et multi-plateforme, généralement installé sur les distributions Linux et disponible pour OSX et Windows.
Exemple pour la version 6.x suit ...
////////////////////////////////////////////////////////////////////////////////
// sample.cpp
// Mark Setchell
//
// ImageMagick Magick++ sample code
//
// Compile with:
// g++ sample.cpp -o sample $(Magick++-config --cppflags --cxxflags --ldflags --libs)
////////////////////////////////////////////////////////////////////////////////
#include <Magick++.h>
#include <iostream>
using namespace std;
using namespace Magick;
int main(int argc,char **argv)
{
// Initialise ImageMagick library
InitializeMagick(*argv);
// Create Image object and read in DICOM image
Image image("sample.dcm");
// Get dimensions
int w = image.columns();
int h = image.rows();
cout << "Dimensions: " << w << "x" << h << endl;
PixelPacket *pixels = image.getPixels(0, 0, w, h);
for(int y=0; y<h; y++){
for(int x=0; x<w; x++){
Color color = pixels[w * y + x];
cout << x << "," << y << ":" << color.redQuantum() << "/" << color.greenQuantum() << "/" << color.blueQuantum() << endl;
}
}
}
Exemple de sortie
Dimensions: 512x512
0,0:0/0/0
1,0:0/0/0
2,0:0/0/0
3,0:0/0/0
4,0:0/0/0
5,0:0/0/0
6,0:0/0/0
7,0:0/0/0
8,0:0/0/0
9,0:0/0/0
10,0:0/0/0
11,0:0/0/0
12,0:0/0/0
13,0:0/0/0
14,0:0/0/0
15,0:0/0/0
16,0:0/0/0
17,0:0/0/0
18,0:0/0/0
19,0:0/0/0
20,0:0/0/0
21,0:0/0/0
22,0:0/0/0
23,0:0/0/0
24,0:0/0/0
25,0:0/0/0
...
...
260,18:80/80/80
261,18:144/144/144
262,18:192/192/192
263,18:80/80/80
264,18:32/32/32
265,18:144/144/144
...
...
Si vous souhaitez utiliser la version 7.x, voir la technique d'Eric here.
Ou, à la ligne de commande dans le Terminal, vous pouvez convertir un fichier aux données binaires brutes RVB 8 bits comme ceci:
# Convert 512x512 image to 8-bit RGB binary file
convert sample.dcm -depth 8 rgb:image.bin
ls -l image.bin
-rw-r--r-- 1 mark staff 786432 30 Jun 15:29 image.bin
Espérons que vous pouvez voir à partir de la taille du fichier que l'image est maintenant 786432 octets, ce qui est 3 octets pour chacun des 512x512 pixels, de sorte que vous pouvez lire directement les données dans votre programme C++ en sachant que vous obtiendrez:
RGB RGB RGB RGB ... RGB
Ou, à la ligne de commande dans le Terminal, vous pouvez vider l'image data as hex:
convert sample.dcm -depth 8 txt: | more
Exemple de sortie
# ImageMagick pixel enumeration: 512,512,65535,gray
0,0: (0,0,0) #000000 gray(0)
1,0: (0,0,0) #000000 gray(0)
2,0: (0,0,0) #000000 gray(0)
Vous pourriez être en mesure d'obtenir de l'aide si vous pourriez être plus précis que « cela ne fonctionne pas ». (Basé sur ma connaissance limitée de DICOM, "léger" est quelque chose que vous ne trouverez pas, même DCMTK prétend seulement implémenter "de grandes parties" de la norme.) – molbdnilo
ce que je voulais dire par ne pas travailler, c'est que je ne savais pas pour l'utiliser, j'ai installé dcmtk.3.6.0 sur ubuntu mais je ne savais pas par où commencer, comment puis-je l'utiliser pour lire les fichiers dcm? –
Que diriez-vous de regarder dans la documentation de DCMTK (par exemple: http: // support. dcmtk.org/docs-snapshot/mod_dcmdata.html#Examples) et/ou dans les nombreux exemples d'outils (dans les sous-répertoires "apps" du paquet de code source). –