2017-06-02 8 views
5

Ich möchte DICOM-Datei mit photometrischen Interpretation MONOCHROME2 anzeigen.Display DICOM monochrom2 mit Bits weniger als Bits reserviert

einige der Spezifikationen der Bild sind-

Rows:   1024 
Columns:  1024 
No of Frames: 622 
Bits Allocated: 16 
Bits Stored: 10 
High Bit:  9 
Pixel Representation: 0 
Sample per pixel: 1 

I gdcmRegionReader bin mit Einzelbildern Byte-Array in der folgenden Art und Weise zu extrahieren.

gdcm.ImageRegionReader _regionReader = new gdcm.ImageRegionReader(); 
_regionReader.SetRegion(_boxRegion); // _boxRegion is some region 
_regionReader.ReadIntoBuffer(Result, (uint)Result.Length); 
Marshal.Copy(Result.ToArray(), 0, _imageData.GetScalarPointer(), 
Result.ToArray().Length); 
_viewer.SetInput(_imageData); // _viewer = vtkImageViewer 

Aber wenn ich zeigen, dass die Datei wird wie folgt angezeigt wird .. MONOCHROME2 dicom when I display using gdcmRegionReader

aber das Originalbild ist dies wie .. Original Image

So jemand mir helfen kann, wie und Anzeige laden MONOCHROME2 dicom Bilder.

+0

Sie sind alle Toolkit Bild anzuzeigen? ODER Sie möchten nur Bild auf einem Steuerelement (WinForm, Panal usw.) von Byte-Array mit C# anzeigen? –

+0

Ich zeige dieses Bild in einem Panel mit VTK an. – Namrata

+0

Was genau ist das Problem dabei? Bearbeiten Sie Ihre Frage, um weitere Informationen hinzuzufügen. Es ist eine aktuelle Form, die Frage ist zu breit und schwer zu beantworten. Machen Sie es spezifisch. –

Antwort

1

Haftungsausschluss: Ich habe das fragliche Toolkit nie benutzt. Ich versuche zu antworten, basierend auf meinem Verständnis von DICOM. Nach meiner Erfahrung mit DICOM war Syntax selten das Problem. Ein echtes Problem war das Konzept und die Begriffe.

Ich sehe zwei Probleme in der Ausgabe.

Man ist über einen Teil des Bildes gerendert. Beachten Sie, dass die gesamten Daten in Ihrer Ausgabe nicht gerendert werden. Überprüfen Sie das Toolkit-Dokument, um zu sehen, wie die Abmessungen/Grenzen beim Rendern des Bildes festgelegt werden.

Ein anderes Problem ist die Ausgabequalität. Anfangs vermutete ich, dass die Übertragungssyntax das Problem sein könnte. Ich denke nicht, dass es ist, aber stellen Sie sicher, dass Sie das Bild kompromisslos vor dem Rendern sind. Ich bin mir nicht sicher, wie Ihr Toolkit die Komprimierung beim Rendern handhabt.

Es gibt eine andere Möglichkeit, Pixeldaten im Toolkit zu rendern.

_ImageViewer.SetRenderWindow(renderWindow); 
_ImageViewer.GetRenderer().AddActor2D(sliceStatusActor); 
_ImageViewer.GetRenderer().AddActor2D(usageTextActor); 
_ImageViewer.SetSlice(_MinSlice); 
_ImageViewer.Render(); 

Above-Code wird von "http://www.vtk.org/Wiki/VTK/Examples/CSharp/IO/ReadDICOMSeries" kopiert. Detaillierter Code ist dort verfügbar.

folgenden Links können auch hilfreich sein:
http://vtk.1045678.n5.nabble.com/How-to-map-negative-grayscale-to-color-td5737080.html

https://www.codeproject.com/Articles/31581/Displaying-bit-Images-Using-C

+0

Danke Amit! Ich habe Scalar-Typ von Bilddaten zu kurz geändert und jetzt ist das Problem gelöst. – Namrata

1

Sie wirklich vtkGDCMImageReader2 stattdessen in Ihrem Code verwenden sollten. vtkGDCMImageReader2 präzise gdcm::RegionReader zum Binden mit VTK einkapseln.

Wenn Sie aus irgendeinem Grund diese Klasse nicht direkt verwenden können, kopieren Sie einfach den C++ - Code aus der Hauptfunktion in Ihren C# -Code.

Siehe:

+0

danke Malat für schnelle Antwort! Ich habe vtkImageViewer2 zum Rendern verwendet und das Problem wurde behoben. Und der skalare Typ von ImageData sollte kurz sein. – Namrata