Das Package rad.dicom.dcm beinhaltet Klassen zur Bearbeitung von  DICOM composite IOD's, die jeweils in eine Instanz der Klasse DcmDataObject abstrahiert werden.

 

  1. Beschreibung des Package
  2. Conformance-Statement
  3. Kompatibilität
  4. Versionshinweise
  5. Bekannte Fehler
  6. To-Do Liste
  7. Begriffserläuterungen
  8. Fehlerberichte / Anregungen

  9. Lizenz

 

Beschreibung des Package

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:
readDDO(DcmDataObject)
static DcmDataObject loadDDO(File f)
static DcmDataObject loadDDO(InputStream is)

DcmOutputStream
extendes FilteredOutputStream

Zentrale Methode:
writeDDO(DcmDataObject)

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

 

 

Conformance-Statement

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:
  • (Default) Implicit VR, Little Endian Transfer, UID = 1.2.840.10008.1.2
  • Explicit VR, Little Endian Transfer, UID = 1.2.840.10008.1.2.1
  • Explicit VR, Big Endian Transfer, UID = 1.2.840.10008.1.2.2
  • 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

     

    Kompatibilität

    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).

     

    Versionshinweise

    2002.5.12
    Kommentare in der Source geändert

    Version: DcmUID.DCM_VERSION = "2.5"

    2000.10.9 Änderungen im Package rad.dicom.ima das mit diesem Package die Versionsnummer teilt.

    Version: DcmUID.DCM_VERSION = "2.4.2"

    2000.8.23 Änderungen im Package rad.dicom.ima das mit diesem Package die Versionsnummer teilt.

    Version: DcmUID.DCM_VERSION = "2.4.1"

    2000.7.6 In DcmValue.toString die Methode trim eingefügt.

    Version: DcmUID.DCM_VERSION = "2.3.1"

    2000.5.8 DcmDataDictionaryElemente entsprechend PS 3.6 Data Dictionary (Version 1999, Final Draft) neu definiert.

    Statische Methoden loadDDO zum einfachen Einlesen eines DcmDataObjects aus einem File oder InputStream implementiert.

    Version: DcmUID.DCM_VERSION = "2.3"

    2000.3.3 Die erste freigegebene Version: DcmUID.DCM_VERSION = "2.1"

     

    Bekannte Fehler

    Keine.

     

    To-Do Liste

    Keine.

     

    Begriffserläuterungen

    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

    zusammen. In der Transfersyntax wird die "Structure" und das "Encoding" eines Data Elements festgelegt. Die Standard Transfersyntax, die von allen Implementationen unterstützte werden muß, ist "implicite VR" und "little Endian".

    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.

     

    Fehlerberichte / Anregungen

    Alle Fehlerberichte, Anregungen und Wünsche bitte an die Adresse reply@thomas-hacklaender.de

     

    Lizenz

    Das Package unterliegt der "GNU General Public License".