Sie können ImageMagick verwenden, um DICOM-Dateien zu lesen, und es ist kostenlos und plattformübergreifend, normalerweise auf Linux-Distributionen installiert und für OSX und Windows verfügbar.
Beispiel für Version 6.x folgt ...
////////////////////////////////////////////////////////////////////////////////
// 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;
}
}
}
Beispielausgabe
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
...
...
Wenn Sie Version 7.x verwenden möchten, finden Sie Erics Technik here.
Oder in der Befehlszeile im Terminal, eine Datei auf rohe 8-Bit-RGB-Binär-Daten wie folgt umwandeln:
# 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
Sie hoffentlich von der Dateigröße sehen, dass das Bild jetzt 786.432 Bytes, die für jede der 512x512 Pixel 3 Bytes ist, so dass Sie direkt zu wissen, lesen die Daten in Ihrem C++ Programm erhalten Sie:
RGB RGB RGB RGB ... RGB
Oder in der Befehlszeile im Terminal, können Sie das Bild Dump Daten als Hex:
convert sample.dcm -depth 8 txt: | more
Beispielausgabe
# 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)
Sie könnten in der Lage sein, etwas Hilfe zu bekommen, wenn Sie das konkretisieren könnte, als „es funktioniert nicht“. (Aufgrund meiner begrenzten Kenntnisse von DICOM ist "Leichtbau" etwas, was Sie einfach nicht finden werden. Selbst DCMTK behauptet nur, "große Teile" des Standards zu implementieren.) – molbdnilo
was ich damit meinte, dass ich nicht funktionierte, war, dass ich nicht wusste wie um es zu benutzen, habe ich dcmtk.3.6.0 auf ubuntu installiert, wusste aber nicht wo ich anfangen soll, wie kann ich es verwenden, um dcm files zu lesen. –
Wie sieht es mit der Dokumentation von DCMTK aus (zB hier: http: // support. dcmtk.org/docs-snapshot/mod_dcmdata.html#Examples) und/oder in die zahlreichen Beispiel-Tools (in den "apps" -Unterverzeichnissen des Quellcode-Pakets). –