Tag | (0028,1221) |
---|---|
Type | Conditionally Required (1C) |
Keyword | SegmentedRedPaletteColorLookupTableData |
Value Multiplicity | 1 |
Value Representation | Other Word String (OW) |
Segmented Red Palette Color Lookup Table Data. Required if segmented data is used in an Image IOD or Color Palette IOD; shall not be present in a Presentation State IOD. See Section C.7.9.2 for further explanation.
A Color Palette entity specifies a color palette suitable for application to a grayscale image or parametric map.
A Color Palette is not related to other Information Entities of the DICOM real-world model, as it is not associated with a specific Patient. The E-R model for the Color Palette IOD is shown in Figure A.58.2-1.
Figure A.58.2-1. Color Palette IOD E-R Model
Table A.58.3-1 lists the Modules that make up the Color Palette IOD.
Table A.58.3-1. Color Palette IOD Modules
The number of bits for each entry in the Lookup Table Data is constrained in the Palette Color Lookup Table Module to be 8 in this IOD.
The Segmented Palette Color Lookup Table Data (0028,1221-1223) is stored as a series of segments, see Table C.7-23. When the segments are expanded into the actual lookup table data, it shall have the number of table entries specified by the first value of the Palette Color Lookup Table Descriptors (0028,1101-1103), Number of Table Entries.
These lookup tables shall be used only when segmented lookup table data use is desirable and there is a single sample per pixel (single image plane) in the image.
Table C.7-23. Compressed Palette Color Lookup Table Data
Segment 0 |
Segment 1 |
… |
Segment n |
There are currently three types of segments: discrete, linear, and indirect. The segments type is identified by the opcodes in Table C.7-24.
Table C.7-24. Segment Types
Opcode |
Segment type |
---|---|
0 |
Discrete |
1 |
Linear |
2 |
Indirect |
3 & above |
reserved |
The discrete segment is used to represent a series of palette components that are not monotonic with respect to their predecessors or successors. The Segment Length indicates the number of lookup table entries.
The format of the Discrete Segment Type shall be as in Table C.7-25.
Table C.7-25. Discrete Segment Type
Segment Opcode = 0 |
Segment Length |
Segment Length number of lookup table entries |
The linear segment represents a series of palette components whose values may be represented by a straight line.
X = palette address, Y = Value contained in the palette.
(X0, Y0) = end of the previous segment
(X0 + Segment Length, Y1) = end of this linear segment
Where: Y1 is contained in the data portion of this segment.
During expansion, the application should "connect" the previous segment's endpoint, (X0, Y0), with this segment's endpoint, (X0 + Segment Length, Y1) using a straight line, by computing the values for each point between the endpoints.
Because the linear segment uses the end point from the previous segment, a linear segment can not be the first segment.
The linear segment's format shall be as in Table C.7-26.
Table C.7-26. Linear Segment Type
Segment Opcode = 1 |
Segment Length |
Y1 |
The indirect segment allows the re-use of repetitive regions within lookup table without respecifying the segment. The opcode is followed by the number of segments to copy and one offset pointer to the first segment to copy. The byte offset is relative to the beginning of the lookup table. For example, if an indirect segment wants to point to the first segment, then the offset will be zero. The offset is a 32 bit value but is stored in the segment as a least significant 16 bit value followed by a most significant 16 bit value. An indirect segment shall not point to or copy another indirect segment. This avoids the need for recursion and also avoids the possibility of infinite loops.
The indirect segment's format shall be as follows:
Table C.7-27. Indirect Segment Type
Segment Opcode = 2 |
Number of segments to copy |
Least significant 16 bits of byte offset to first segment to copy |
Most significant 16 bits of byte offset to first segment to copy |