2016-04-04 3 views
1

Ich verwende derzeit DCMTK in C++. Ich bin ziemlich neu in diesem Toolkit, aber, wie ich es verstehe, sollte ich in der Lage sein, die Fenstermitte und Breite für Normalisierungszwecke zu lesen.Dicom Toolkit (DCMTK) - Wie bekomme ich Fenstermitte und Breite

Ich habe ein DicomImage DCM_image-Objekt mit meinen Dicom-Daten. Ich lese die Werte zu einem opencv Mat-Objekt. Ich möchte sie jedoch jetzt normalisieren. Das folgende zeigt, wie ich die Daten auf eine opencv-Matte lese und übertrage.

DicomImage DCM_image("test.dcm"); 
    uchar *pixelData = (uchar *)(DCM_image.getOutputData(8)); 
    cv::Mat image(int(DCM_image.getHeight()), int(DCM_image.getWidth()), CV_8U, pixelData); 

Jede Hilfe wird geschätzt. Danke

Antwort

0

Lesen Fenster Mitte und Breite ist nicht schwierig, jedoch müssen Sie einen anderen Konstruktor verwenden und ein DcmDataset an das Bild übergeben.

DcmFileFormat file; 
file.loadFile("test.dcm"); 
DcmDataset* dataset = file.getDataset() 
DicomImage image(dataset); 
double windowCenter, windowWidth; 
dataset->findAndGetFloat64(DcmTagKey(0x0010, 0x1050), windowCenter); 
dataset->findAndGetFloat64(DcmTagKey(0x0010, 0x1051), windowWidth); 

Aber eigentlich glaube ich nicht es eine gute Idee ist es, den Windowing auf das Bild beim Laden anzuwenden. Windowing ist etwas, das vom Benutzer einstellbar sein sollte. Die Attribute Fenstermitte und Fensterbreite erlauben mehrere Werte, die angewendet werden können, um das Fenster an den interessierenden Graustufenbereich anzupassen ("VOI", Werte von Interesse).

Wenn Sie wirklich nur ein Fensterbild erstellen möchten, können Sie mit Ihrem Code das Bild aus dem Dateiinhalt erstellen und eine der von DicomImage bereitgestellten createXXXImage-Methoden verwenden.

HTH

+0

Ich sehe. Was wäre, wenn ich ein Dicom-Bild mit dem Fensterbereich und der Fensterbreite erstellen wollte, die durch den obigen Code gefunden wurden? Kann es getan werden? – user3126802

+0

DicomImage hat eine setWindow-Methode, dann können Sie createMonochromeImage() verwenden, um das Ergebnis zu erhalten. Vielleicht möchten Sie einen Blick auf den Quellcode von dcm2pnm werfen –

+0

Vielen Dank @kritzel_sw, löste das Problem mit Ihren Vorschlägen! – user3126802

Verwandte Themen