rad.dicom.dcm
beinhaltet Klassen zur Bearbeitung
von DICOM composite IOD's, die jeweils in eine Instanz der Klasse DcmDataObject
abstrahiert werden.
Die zentrale Klasse ist DcmDataObject
. Diese repräsentiert
eine composite IOD. Für jede Instanz eines DcmDataObject wird die Transfer
Syntax für das externe I/O definiert. Das I/O wird mit den Klassen DcmInputStream
und DcmOutputStream
über Java Streams abgewickelt. Das Package
unterstuetzt alle in DICOM definierten Transfer Syntaces.
Jedes Data Element innerhalb der IOD wird durch ein DcmValue
abgebildet. Darin sind die Daten, unabhängig von der zu Grunde liegenden Transfer
Syntax, als Byte-Array in der little Endian Darstellung abgelegt.
DcmDataObject :
Entspricht einer DICOM composite IOD (Information Object Definition)
Die Klasse enthält Zugriffsmethoden auf DcmValues über die Java-Datentypen short, int, float, double und String |
|||
DcmValue : Entspricht
einer DICOM Data Element
Daten werden in einem Byte-Array in der little Endian Bytefolge abgelegt. Die Klasse beinhaltet statische Methoden zur Konvertierung von Byte-Arrays in Java-Datentypen. |
|||
DcmValue |
DcmValue | DcmValue | DcmValue |
DcmInputStream extendes FilteredInputStream
Zentrale Methoden: |
DcmOutputStream extendes FilteredOutputStream
Zentrale Methode: |
||
BufferedInputStream |
OutputStream |
||
Java I/O Streams |
In der Klasse DcmUID
sind Definitionen von UID's (Unique
Indentifier) zusammengefasst, über die DICOM viele Objekte beschreibt.
In der Klasse DcmDDE
ist ein Dictionary aller in DICOM definierten
Data Element's abgebildet. Hier finden sich auch Methoden, um über die Angabe
eines Gruppennummer/Elementnummer Paares ein DICOM Data Element zu identifizieren.
In der DICOM Norm (Part 6) werden für die in der folgenden Tabelle zusammengestellten
Datenelemente verschiedene Value Representations zugelassen. Da innerhalb
der Library aber nur mit eindeutigen Definitionen gearbeitet werden kann,
liefert das Dictionary für diese Elemente den in der Spalte "Eindeutiger
VR-Code" angegebenen Wert. Dieser wird auch für die Initialisierung eines
DcmValue
verwendet. Dort kann er mit der Methode setVR
jederzeit korrigiert werden.
Gruppe | Element | DICOM VR-Code | Eindeutiger VR-Code | Beschreibung | Type-Code |
0x0028 | 0x0106 | VRCODE_US_or_SS | VRCODE_US | Smallest Image Pixel Value | DD_SmallestImagePixelValue |
0x0028 | 0x0107 | VRCODE_US_or_SS | VRCODE_US | Largest Image Pixel Value | DD_LargestImagePixelValue |
0x0028 | 0x0108 | VRCODE_US_or_SS | VRCODE_US | Smallest Pixel Value in Series | DD_SmallestPixelValueInSeries |
0x0028 | 0x0109 | VRCODE_US_or_SS | VRCODE_US | Largest Pixel Value in Series | DD_LargestPixelValueInSeries |
0x0028 | 0x0110 | VRCODE_US_or_SS | VRCODE_US | Smallest Image Pixel Value in Plane | DD_SmallestImagePixelValueInPlane |
0x0028 | 0x0111 | VRCODE_US_or_SS | VRCODE_US | Largest Image Pixel Value in Plane | DD_LargestImagePixelValueInPlane |
0x0028 | 0x0120 | VRCODE_US_or_SS | VRCODE_US | Pixel Padding Value | DD_PixelPaddingValue |
0x0028 | 0x1101 | VRCODE_US_US_or_SS_US | VRCODE_US | Red Palette Color Lookup Table Descriptor | DD_RedPaletteColorLookupTableDescriptor |
0x0028 | 0x1102 | VRCODE_US_US_or_SS_US | VRCODE_US | Green Palette Color Lookup Table Descriptor | DD_GreenPaletteColorLookupTableDescriptor |
0x0028 | 0x1103 | VRCODE_US_US_or_SS_US | VRCODE_US | Blue Palette Color Lookup Table Descriptor | DD_BluePaletteColorLookupTableDescriptor |
0x0028 | 0x1201 | VRCODE_US_or_SS_or_OW | VRCODE_US | Red Palette Color Lookup Table Data | DD_RedPaletteColorLookupTableData |
0x0028 | 0x1202 | VRCODE_US_or_SS_or_OW | VRCODE_US | Green Palette Color Lookup Table Data | DD_GreenPaletteColorLookupTableData |
0x0028 | 0x1203 | VRCODE_US_or_SS_or_OW | VRCODE_US | Blue Palette Color Lookup Table Data | DD_BluePaletteColorLookupTableData |
0x0028 | 0x3002 | VRCODE_US_US_or_SS_US | VRCODE_US | LUT Descriptor | DD_LUTDescriptor |
0x0028 | 0x3006 | VRCODE_US_or_SS | VRCODE_US | LUT Data | DD_LUTData |
0x0060 | 0x3004 | VRCODE_US_or_SS | VRCODE_US | Histogram First Bin Value | DD_HistogramFirstBinValue |
0x0060 | 0x3006 | VRCODE_US_or_SS | VRCODE_US | Histogram Last Bin Value | DD_HistogramLastBinValue |
0x5000 | 0x200C | VRCODE_OW_or_OB | VRCODE_OW | Audio Sample Data | DD_AudioSampleData |
0x5000 | 0x3000 | VRCODE_OW_or_OB | VRCODE_OW | Curve Data | DD_CurveData_5000 |
0x7FE0 | 0x0010 | VRCODE_OW_or_OB | VRCODE_OW | Pixel Data | DD_PixelData |
Es können zwei Arten von Streams bearbeitet werden: 1. Mit einem Meta-Header, der einen Meta File Information Block entsprechend DICOM 3 (PS 3.10) beinhalten. 2. Mit einem Meta-Header. Dies könnten z.B. ACR-Nema Dateien sein.
Es werden Datenelemente mit allen Value Representations außer "SQ" unterstützt (PS 3.5-7.5).
Es werden alle drei in DICOM definierten Transfer Syntaces (PS 3.5) unterstützt:Das Image Pixel Module (PS 3.3-C.7.6.3) der Bilder muß folgende Bedingungen erfüllen:
Photometric Interpretation | Bits Allocated | Bits Stored | Pixel Representation |
PI_MONOCHROME1 | 8 oder 16 Bit/Pixel | 1-16 Bit/Pixel | signed oder unsigned |
PI_MONOCHROME2 | 8 oder 16 Bit/Pixel | 1-16 Bit/Pixel | signed oder unsigned |
PI_PALETTE_COLOR | 8 Bit/Pixel reserviert | 1-8 Bit/Pixel | unsigned |
Das package benötigt Java 1.1. Getestet wurde es unter JDK 1.1.8 (Windows, von IBM für Linux), JDK 1.2.2.1 (Windows, Linux), JDK 1.3 (Windows), JDK 1.4 (Windows) und MRJ 2.1 (Macintosh).
2002.5.12 |
Kommentare in der Source geändert
Version: |
2000.10.9 | Änderungen im Package rad.dicom.ima das mit diesem
Package die Versionsnummer teilt.
Version: |
2000.8.23 | Änderungen im Package rad.dicom.ima das mit diesem
Package die Versionsnummer teilt.
Version: |
2000.7.6 | In DcmValue.toString die Methode trim
eingefügt.
Version: |
2000.5.8 | DcmDataDictionaryElemente entsprechend PS 3.6 Data
Dictionary (Version 1999, Final Draft) neu definiert.
Statische Methoden loadDDO zum einfachen Einlesen eines Version: |
2000.3.3 | Die erste freigegebene Version: DcmUID.DCM_VERSION = "2.1" |
Keine.
Keine.
In DICOM werden Objekte der realen Welt in sogenannten "Information Object Definitions" (IOD, PS 3.4-6.1) abgebildet. Jede Eigenschaft eines Objektes der realen Welt wird über ein "Attribute" beschrieben. Mehrere Attributes können zu einer "Information Entity" (IE) zusammengefasst werden.
Beinhaltet die IOD nur eine IE, spricht man von einer "normalized IOD", sonst von einer "composite IOD".
Eine IE enthält eine odere mehre Attributes. Innerhalb einer IE können inhaltlich zusammengehörige Attributes zu IOM's (Information Object Modules) zusammengefasst werden.
Für jedes Attribute ist eine VR (Value Representation) definiert (PS 3.6). Die Datenübertragung und Speicherung der VR's wird durch eine Transfer Syntax geregelt. Diese muß zwischen den Kommunikationspartnern vereinbart werden (PS 3.5).
In der "realen Welt" entspricht ein Information Object einem "Data Set". Dieses setzt sich aus "Data Elements" (entsprechend den Attributes) zusammen. Jedes Data Element setzt sich aus
Für Datenträger definiert DICOM (PS 3.10) eine Dateistruktur. Diese Dateien beinhalten vor dem DICOM Data Set einen Block mit File Meta Information.
Alle Fehlerberichte, Anregungen und Wünsche bitte an die Adresse reply@thomas-hacklaender.de.
Das Package unterliegt der "GNU General Public License".