A.2 Abstract Multi-Dimensional Image Model
Prev | A Data Exchange Models | Next

## A.2 Abstract Multi-Dimensional Image Model

### A.2.1 Usage

The Abstract Multi-Dimensional Image Model can be used to refer to a discretely-sampled, multi-dimensional image data. The sample values may either be single-valued (a scalar) or a vector of values (a vector). An example would be a time varying series of three dimensional images set at multiple energy levels. The Abstract Multi-Dimensional Image Model is patterned after the Enhanced Multi-frame family of DICOM objects. In mathematical terms, this is any data set that is defined by a function I (x,y,z,t,…), where (x,y,z,t,…) are the dimensions, and the sample value of I is either a vector of components or a scalar (i.e., a single component). The primary purpose of this model is to allow applications to process image data without concern as to the underlying format of the data.

When converting DICOM SOP Instances into Abstract Multi-Dimensional Image Models, a provider of data shall follow these rules as closely as it practically can:

### Note

Deterministic behavior is not expected nor guaranteed when making conversions between DICOM SOP Instances and Abstract Multi-Dimensional Image Models. For example, given the same DICOM SOP Instances, different Hosting Systems may create Abstract Multi-Dimensional Image Models that differ in some details, such as the Units of the Component values or in the Dimensions.

1. Multiple DICOM SOP Instances from the same series that have the same Frame of Reference UID shall be combined into a single instance of the Abstract Multi-Dimensional Image Model. DICOM SOP Instances from multiple series that have the same Frame of Reference UUID may be combined into a single instance of the Abstract Multi-Dimensional Image Model, if appropriate.

2. A single DICOM SOP Instance shall not be divided into multiple instances of the Abstract Multi-Dimensional Image Model.

3. The coordinate system utilized within the Abstract Multi-Dimensional Image Model shall use the coordinate system defined by the DICOM objects utilized in the creation of the Abstract Multi-Dimensional Image Model instance if applicable. Where practical, the coordinate system and Dimension definitions utilized within the Abstract Multi-Dimensional Image Model shall be chosen such that interpolation is not required to covert the source data into the Abstract Multi-Dimensional Image Model.

   ### Note

   Interpolation may be necessary if the source data is not laid out on a frame-based Cartesian coordinate grid.

4. Spatial coordinates, such as Image Position (Patient) (0020,0032), shall be transformed into the coordinate system utilized within the Abstract Multi-Dimensional Image Model instance.

5. The Pixel Data shall be spatially transformed as needed to match the Semantics and Units of the Dimensions of the Abstract Multi-Dimensional Image Model into which the pixels values are being placed.

6. Any embedded overlays within the Pixel Data (7FE0,0010) Attribute shall be stripped out of the pixel values and the pixel values sign extended or converted as needed to match the datatype of the Component of the Abstract Multi-Dimensional Image Model into which the pixels values are being placed.

7. The pixel values of the Pixel Data shall be transformed as needed to match the Semantics and Units of the Component of the Abstract Multi-Dimensional Image Model into which the pixels values are being placed.

   ### Note

   Typically presentation settings such as VOI and Presentation LUTs are not used in creating Abstract Multi-Dimensional Image Models from DICOM SOP Instances. The exception is when the application of such LUTs is needed to match the Semantics and Units of the Component. Modality LUTs or Rescale Slope and Intercept often must be applied to match the Semantics and Units of the Abstract Multi-Dimensional Image Model.

8. Any pixel values that correspond to the pixel padding values shall be stripped out (i.e., set to zero or other suitable replacement value) and the spatially corresponding values in the PixelMapOfValidData shall be set to the outValue or something other than the inValue, as appropriate.

When converting data within an instance of the Abstract Multi-Dimensional Image Models into DICOM SOP Instances, the recipient of an abstract model instance shall convert the pixel data back into values compatible with the native form of the DICOM SOP Instances being created. This conversion may include recreating Modality LUT information, inserting pixel padding values, converting pixel spacing and origins, etc. as dictated by the SOP Class the data is being converted to. When converting a single Abstract Multi-Dimensional Image Model into multiple DICOM SOP Instances, the DICOM SOP Instances shall all have the same Frame of Reference UID (0020,0052), if permitted by the SOP Class.

### A.2.2 Identification

The ObjectDescriptors MIME content type for the Abstract Multi-Dimensional Image Model is "application/x-dicom.abstract".

### Note

This is an experimental MIME type. A formal MIME type will be applied for. Implementations will be expected to support both the experimental and formal MIME type going forward without a version change to the interface.

The ObjectDescriptors class UID for the Abstract Multi-Dimensional Image Model is "1.2.840.10008.7.1.2".

### A.2.3 Support

Support of the Abstract Multi-Dimensional Image Model as both a data source and a data recipient is required of all Hosting Systems implementing the interface.

Support of the Abstract Multi-Dimensional Image Model as either a data source or a data recipient is optional for all Hosted Applications implementing the interface.

### A.2.4 Information Model

A diagram of the Abstract Multi-Dimensional Image Model appears in Figure A.2.4-1.

Figure A.2.4-1. Abstract Multi-Dimensional Image Model

### A.2.5 Description

Table A.2.5-1. Abstract Image Model

Name | Optionality | Cardinality | Description
--- | --- | --- | ---
AbstractImageDataSet | R | 1 | The top level element required of all abstract image models, holding the entire abstract image Data Set.
>Component | R | 1-n | Describes a component of the function output. If the output is a scalar, there is only one Component. Vector outputs require a Component for each position in the vector. When there are multiple components, the components appear in each value in the order defined by their respective idNumbers.
>>idNumber | R | A | Identifies this particular component, with numbering monotonically increasing from 1.
>>datatype | R | A | Describes how this component value is represented. Enumerated values are: SIGNED_INT8 SIGNED_INT16 SIGNED_INT32 UNSIGNED_INT8 UNSIGNED_INT16 UNSIGNED_INT32 FLOAT32 FLOAT64
>>minValue | O | A | The minimum value that this component takes on. If this XML Attribute is missing, this is the minimum value that can be represented by the Datatype.
>>maxValue | O | A | The maximum value that this component takes on. If this XML Attribute is missing, this is the maximum value that can be represented by the Datatype.
>>Semantics | R | 1 | A coded value describing what this component represents.
>>>Include Table 10.1-1 “Coded Terminology Macro” | Defined CID 7180 “Abstract Multi-dimensional Image Model Component Semantics”.
>>Unit | R | 1 | A coded value describing what units this dimension is in.
>>>Include Table 10.1-1 “Coded Terminology Macro” | Defined CID 7181 “Abstract Multi-dimensional Image Model Component Units”.
>Dimension | R | 1-n | Describes a dimension.
>>idNumber | R | A | Identifies this particular dimension, with numbering starting from 1. Dimensions with a lower idNumber vary faster than those with a higher idNumber.
>>numberOfSamples | R | A | The number of samples in this dimension, for example:the number of columns along the X-axis,the number of rows along the Y-axis,the number of slices along the Z-axis,the number of qualitative descriptions.
>>Semantics | R | 1 | A coded value describing what this dimension represents.
>>>Include Table 10.1-1 “Coded Terminology Macro” | Defined CID 7182 “Abstract Multi-dimensional Image Model Dimension Semantics”
>> Regular | C | 1 | Used to describe regularly spaced samples in this dimension. Required if neither Irregular nor Qualitative are present. Shall not be present otherwise.
>>>width | R | A | The sample width.
>>>spacing | R | A | The sample spacing.
>>>Unit | R | 1 | A coded value describing what units the sample width and spacing are in.
>>>>Include Table 10.1-1 “Coded Terminology Macro” | Defined CID 7183 “Abstract Multi-dimensional Image Model Dimension Units”.
>>>AxisDirection | O | 1 | The direction of the axis of this dimension. ### Note This XML Element might only be applicable to spatial dimensions, such as those dealing with linear displacement. Typically this is in relationship to the patient.
>>>>Include Table 10.1-1 “Coded Terminology Macro” | Defined CID 7184 “Abstract Multi-dimensional Image Model Axis Direction”
>>>AxisOrientation | O | 1 | The orientation of the axis of this dimension along which values are increasing. ### Note This XML Element might only be applicable to spatial dimensions, such as those dealing with linear displacement. Typically this is in relationship to the patient.
>>>>Include Table 10.1-1 “Coded Terminology Macro” | Defined CID 7185 “Abstract Multi-dimensional Image Model Axis Orientation”
>>Irregular | C | 1 | Used to describe irregularly spaced samples in this dimension. Required if neither Regular nor Qualitative are present. Shall not be present otherwise.
>>>origin | R | A | The reference location from which each of the sample locations are measured.
>>>SampleLocation | R | 1-n | Describes the locations of each sample as an offset from the origin. There shall be numberOfSamples SampleLocation XML Elements in this sequence.
>>>>index | R | A | The index value of this sample location, with numbering starting from 1 and incrementing to numberOfSamples.
>>>>width | R | A | The sample width.
>>>>distanceToOrigin | R | A | The distance of this sample location from the Origin location.
>>>Unit | R | 1 | A coded value describing what units the sample widths and locations are in.
>>>>Include Table 10.1-1 “Coded Terminology Macro” | Defined CID 7183 “Abstract Multi-dimensional Image Model Dimension Units”.
>>>AxisDirection | O | 1 | The direction of the axis of this dimension. ### Note This XML Element might only be applicable to spatial dimensions, such as those dealing with linear displacement. Typically this is in relationship to the patient.
>>>>Include Table 10.1-1 “Coded Terminology Macro” | Defined CID 7184 “Abstract Multi-dimensional Image Model Axis Direction”
>>>AxisOrientation | O | 1 | The orientation of the axis of this dimension along which values are increasing. ### Note This XML Element might only be applicable to spatial dimensions, such as those dealing with linear displacement. Typically this is in relationship to the patient.
>>>>Include Table 10.1-1 “Coded Terminology Macro” | Defined CID 7185 “Abstract Multi-dimensional Image Model Axis Orientation”
>>Qualitative | C | 1 | Used to describe a qualitative dimension. Required if neither Regular nor Irregular are present. Shall not be present otherwise.
>>>Sample | R | 1-n | Description of what each sample along this dimension represents. There shall be numberOfSamples Sample XML Elements in this sequence.
>>>>index | R | A | The index value of this sample, with numbering starting from 1 and increasing to numberOfSamples.
>>>>Semantics | R | 1 | A coded value describing what this sample represents.
>>>>>Include Table 10.1-1 “Coded Terminology Macro” | Defined CID 7186 “Abstract Multi-dimensional Image Model Qualitative Dimension Sample Semantics”
>>Origin | O | 0-n | Specifies the spatial position in the coordinate system of the Abstract Multi-Dimensional Image Model of the spatial frames or volumes of image data values. Different frames or volumes may either share an origin, or have a different origin for each frame or volume. If there is only a single Origin XML element within this Dimension, then this Origin applies to all samples along this Dimension. Otherwise, there shall be numberOfSamples Origin XML elements, one for each sample along this Dimension. Sample index values for Dimensions whose idNumbers are less than this Dimension's idNumber, are all equal to 1.
>>>index | R | A | Index of the sample to which this Origin,. If this is a single Origin that applies to all samples along this Dimension, then index shall either be left out or given a value of "0" (zero). Otherwise, the value shall be the appropriate number between 1 and nubmerOfSamples.
>>>xCoord | R | A | The X position of this Origin in the coordinate system of the Abstract Multi-Dimensional Image Model.
>>>yCoord | R | A | The Y position of this Origin in the coordinate system of the Abstract Multi-Dimensional Image Model.
>>>zCoord | R | A | The Z position of this Origin in the coordinate system of the Abstract Multi-Dimensional Image Model.
>>DirectionCosines | O | 0-n | Specifies the direction in the coordinate system of the Abstract Multi-Dimensional Image Model of the Dimension whose idNumber is given in concernedSpatialDimension. The idNumber of the concernedSpatialDimension shall be less than the idNumber of this Dimension. If there is only a single DirectionCosines XML element within this Dimension XML element with a particular concernedSpatialDimension, then this Direction Cosine applies to all samples along this Dimension. Otherwise, there shall be numberOfSamples DirectionCosines XML elements with this particular concernedSpatialDimension, one for each sample along this Dimension.
>>>concernedSpatialDimension | R | A | The idNumber of the particular Dimension for which this DirectionCosines XML element applies. The value of concernedSpatialDimension shall be less than the idNumber of this Dimension.
>>>index | C | A | Index of this direction specification, with numbering starting from 1. If this is a single-valued DirectionCosines that applies to all samples along this Dimension then index shall either be left out or given a value of "0" (zero). Otherwise, the value of index refers to the DirectionCosines of a particular sample value along this Dimension.
>>>cosAlongX | R | A | The direction cosine along the X axis of the coordinate system of the Abstract Multi-Dimensional Image Model for this concernedSpatialDimension.
>>>cosAlongY | R | A | The direction cosine along the Y axis of the coordinate system of the Abstract Multi-Dimensional Image Model for this concernedSpatialDimension.
>>>cosAlongZ | R | A | The direction cosine along the Z axis of the coordinate system of the Abstract Multi-Dimensional Image Model for this concernedSpatialDimension.
>PixelData | R | 1 | Structure that defines where the pixel data is located, organized along dimensional lines.
>>Include Table A.2.5-2 “Dimensional Data Macro”
>PixelMapOfValidData | O | 0-1 | A pixel map that identifies which pixels either belong in or out of the Data Set. The dimensions of the pixel map match the dimensions of the image data, i.e., there is a one-to-one correspondence between samples in the image data and samples in the pixel map. The pointers to the pixel map data are included one of the Dimension XML elements.
>>datatype | R | A | Describes how samples in the pixel map are encoded. Enumerated values are: BIT1 UNSIGNED_INT8 For BIT1, the bit ordering starts from the least significant bit going to the most significant bit within an UNSIGNED_INT8 (i.e., 8 bit) byte. The bits are zero-padded to make a full 8-bit byte at the end of the most rapidly changing dimension (i.e., the Dimension whose idNumber is 1).
>>inValue | C | A | The value within the pixel map that indicates that this sample shall be considered as part of the Data Set. All samples whose pixel map values do not match inValue shall not be considered as part of the Data Set. Required if outValue is not present. Shall not be present if outValue is present.
>>outValue | C | A | The value within the pixel map that indicates that this sample shall not be considered as part of the Data Set. All samples whose pixel map values do not match outValue shall be considered as part of the Data Set. Required if inValue is not present. Shall not be present if inValue is present.
>>Include Table A.2.5-2 “Dimensional Data Macro”

Table A.2.5-2. Dimensional Data Macro

>dimensionID | R | A | The idNumber of the Dimension in this AbstractImageDataSet to which this DimensionalData refers.
>DataAt | O | 1-n | References to where the image data is located. Only one Dimension XML Element within this AbstractImageDataSet shall have UUIDs for bulk pixel data (i.e., all bulk data references are at the same dimensional level). ### Note If the source of the data, as part of the model preparation, creates a single file for pixel data from multiple smaller native objects, then in order to provide the descriptorUUID XML Attributes the source may need to create multiple bulkDataUUIDs referring to different offsets within that single pixel data file.
>>indexWithinDimension | R | A | The ordinal position (e.g., index number) of this sample point in the array of data at this level. Numbering starts from 1.
>>descriptorUUID | C | A | A UUID that refers to the ObjectDescriptor from which this data is drawn, formatted in the hexadecimal representation defined by ITU-T Recommendation X.667. Required at the level of the nested tree structure where the source added the data from the descriptorUUID into the Abstract Multi-Dimensional Image Model.
>>bulkDataUUID | C | A | The identifier that the recipient of the data may use in a getData() call to gain access to the bulk pixel data formatted as a UUID using the hexadecimal representation defined in ITU-T Recommendation X.667. Required if the Dimensional Data Macro is not present at this level of the nested tree structure. Shall not be present otherwise.
>>Conditionally include Table A.2.5-2 “Dimensional Data Macro” | Only one of bulkDataUUID or Dimensional Data shall be included at each level. If Dimensional Data is included, it shall be the next lower level of the nested tree structure, that is the Dimension with an idNumber one less than the Dimension referred to by the enclosing DimensionalData.

### A.2.6 Schema

The Relax NG Compact schema for the Abstract Multi-Dimensional Image Model follows:

    default namespace = "http://dicom.nema.org/PS3.19/models/AbstractImage"

    start = AbstractImageDataSet
    AbstractImageDataSet =

     element AbstractImageDataSet {
        element Component{
          attribute idNumber { xsd:positiveInteger },
          attribute datatype { ComponentDatatype },
          attribute minValue { xsd:double }?,
          attribute maxValue { xsd:double }?,
          element Semantics { CodedTerm },
          element Unit { CodedTerm  },
          element RealWordMapping {
            attribute rescaleSlope { xsd:double },
            attribute rescaleIntercept { xsd:double },
            element Unit { CodedTerm },
            element Semantics { CodedTerm }
          }*
        }+,
        element Dimension {
          attribute idNumber { xsd:positiveInteger },
          attribute numberOfSamples { xsd:positiveInteger },
          element Semantics { CodedTerm },
          (element Regular {
             attribute width { xsd:double },
             attribute spacing { xsd:double },
             element Unit { CodedTerm  },
             element AxisDirection { CodedTerm  }?,
             element AxisOrientation { CodedTerm  }?
           }
           | element Irregular {
               element origin { xsd:double },
               element SampleLocation {
                 attribute index { xsd:positiveInteger },
                 attribute width { xsd:double },
                 attribute distanceToOrigin { xsd:double }
               }+,
             element Unit { CodedTerm  },
             element AxisDirection { CodedTerm  }?,
             element AxisOrientation { CodedTerm  }?
             }
           | element Qualitative {
               element Sample {
                 attribute index { xsd:positiveInteger },
                 element Semantics { CodedTerm }
               }+
             }),
          element Origin {
            attribute index { xsd:positiveInteger }?,
            attribute xCoord { xsd:double },
            attribute yCoord { xsd:double },
            attribute zCoord { xsd:double }
          }*,
          element DirectionCosines {
            attribute concernedSpatialDimension { xsd:positiveInteger },
            attribute index { xsd:positiveInteger }?,
            attribute cosAlongX { xsd:double },
            attribute cosAlongY { xsd:double },
            attribute cosAlongZ { xsd:double }
          }*
        }+,
        element PixelData { DimensionalData },
        element PixelMapOfValidData {
          attribute datatype { PixelMapDatatype },
          (
            attribute inValue { xsd:positiveInteger }
            | attribute outValue { xsd:positiveInteger }
          ),
          DimensionalData
        }?
      }

    ComponentDatatype =
        "SIGNED_INT8"
        | "SIGNED_INT16"
        | "SIGNED_INT32"
        | "UNSIGNED_CHAR8"
        | "UNSIGNED_INT16"
        | "UNSIGNED_INT32"
        | "FLOAT32"
        | "FLOAT64"

    PixelMapDatatype =
        "BIT1"
        | "UNSIGNED_INT8"

    DimensionalData =
      element DimensionalData {
        attribute dimensionID { xsd:positiveInteger },
        element DataAt
        {
          attribute sampleNumber { xsd:positiveInteger },
          attribute descriptorUUID { xsd:string }?,
          (DimensionalData | BulkDataPointer)
        }+
      }

    BulkDataPointer =
        attribute UUID { xsd:string }

    CodedTerm =
        element CodeValue { xsd:string },
        element CodingSchemeDesignator { xsd:string },
        element CodingSchemeVersion { xsd:string }?,
        element CodeMeaning { xsd:string }?,
        (
          element ContextIdentifier { xsd:string },
          element MappingResource { xsd:string },
          element ContextGroupVersion { xsd:string }
        )?,
        (
          element ContextGroupExtensionFlag { xsd:string },
          element ContextGroupLocalVersion { xsd:string }?,
          element ContextGroupExtensionCreatorUID { xsd:string }?
        )?

### A.2.7 Examples

#### A.2.7.1 Simple 3D Volume

Figure A.2.7.1-1. Simple 3D Volume Example

#### A.2.7.2 Simple 4D Volume

Figure A.2.7.2-1. Simple 4D Volume Example

#### A.2.7.3 2D Ultrasound

Figure A.2.7.3-1. 2D Ultrasound Example

- In this particular case, we have three dimensions, numbered #1 for displacements along X, #2 for displacements along Y, and #3 to index the time series. If we have 200 images along time (i.e., the numberOfSamples XML Attribute is set to 200), we will then have 400 occurrences of the DirectionCosines XML Element within the Dimension XML Element whose idNumber XML Attribute is set to #3 (the dimension referring to time). The 200 first occurrences will have the XML Attribute concernedSpatialDimension with value #1 (to specify direction cosines along the X axis) and will be indexed by the XML Attribute index varying from 1 to 200 corresponding to the 200 images along time. The 200 following occurrences will have the XML Attribute concernedSpatialDimension with value #2 (to specify direction cosines along the Y axis), and will also be indexed by the XML Attribute index varying from 1 to 200.

- Similarly, in this example we will have 200 occurrences of the Origin XML Element within the Dimension XML Element that has the idNumber XML Attribute set to the value 3, and of course by the XML Attribute index varying from 1 to 200.

#### A.2.7.4 3D MR Metabolite Map - Single Component

Figure A.2.7.4-1. Single Component 3D MR Metabolite Example

#### A.2.7.5 3D MR Metabolite Map - Multiple Component

Figure A.2.7.5-1. Multiple Component 3D MR Metabolite Map Example

Prev | Up | Next
A Data Exchange Models | Home | B Interface Definitions