DICOMMLUTATTRIBS

typedef struct tagDICOMMLUTATTRIBS
{
   L_UINT uStructSize;
   L_BOOL bIsModalityLUTSequence;
   DICOMLUTDESCRIPTOR LUTDescriptor;
   L_CHAR pszLUTExplanation[DICOM_VR_LO_LENGTH+1];
   L_CHAR szModalityLUTType[DICOM_VR_LO_LENGTH+1];
   L_BOOL bIsRescaleSlopeIntercept;
   L_DOUBLE fRescaleIntercept;
   L_DOUBLE fRescaleSlope;
   L_CHAR szRescaleType[DICOM_VR_LO_LENGTH+1];
} DICOMMLUTATTRIBS, * pDICOMMLUTATTRIBS;

This structure is used by the functions LDicomDS::GetModalityLUTAttributes and LDicomDS::SetModalityLUT to get and set the attributes that describe the Modality LUT.

Member

Description

uStructSize

The size of the structure (use sizeof (DICOMMLUTATTRIBS) )

bIsModalityLUTSequence

Flag that indicates whether a "Modality LUT Sequence" (0028,3000) exists in the DICOM dataset or not. When this flag is set the members LUTDescriptor, pszLUTExplanation and szModalityLUTType will be valid. Otherwise, their values are undefined. Also, if this flag is set the function LDicomDS::GetModalityLUTData can be called to retrieve the "LUT Data" for a "Modality LUT Sequence". Otherwise, this data will be missing.

LUTDescriptor

Value of the "LUT Descriptor" (0028,3002) element under the "Modality LUT Sequence" (0028,3000). This member is only defined when bIsModalityLUTSequence is set to TRUE.

pszLUTExplanation

Value of the "LUT Explanation" (0028,3003) element under the "Modality LUT Sequence" (0028,3000). This member is only defined when bIsModalityLUTSequence is set to TRUE.

 

The maximum length of this string is DICOM_VR_LO_LENGTH, which is defined as 64.

szModalityLUTType

Value of the "Modality LUT Type" (0028,3004) element under the "Modality LUT Sequence" (0028,3000). This member is only defined when bIsModalityLUTSequence is set to TRUE.

 

The maximum length of this string is DICOM_VR_LO_LENGTH, which is defined as 64.

bIsRescaleSlopeIntercept

Flag that indicates whether Rescale Intercept(0028,1052) and Rescale Slope(0028,1053) exist in the DICOM dataset or not. When this flag is set the members fRescaleIntercept, fRescaleSlope and szRescaleType will be valid. Otherwise, their values are undefined.

fRescaleIntercept

Value of the "Rescale Intercept" (0028,1052) element. This member is only defined when bIsRescaleSlopeIntercept is set to TRUE.

fRescaleSlope

Value of the "Rescale Slope" (0028,1053) element. This member is only defined when bIsRescaleSlopeIntercept is set to TRUE.

szRescaleType

Value of the "Rescale Type" (0028,1054) element. This member is only defined when bIsRescaleSlopeIntercept is set to TRUE. The maximum length of this string is DICOM_VR_LO_LENGTH, which is defined as 64.

Comments

The members of this structure are based on the attributes of the "Modality LUT Module". Please see "Modality LUT Module Attributes" in the DICOM standard for more details.

The DICOM standard states that:

"Either a Modality LUT Sequence containing a single Item or Rescale Slope and Intercept values shall be present, but not both."

For this reason, both bIsModalityLUTSequence and bIsRescaleSlopeIntercept cannot be set to TRUE at the same time.

When using this structure with the LDicomDS::SetModalityLUT function make sure to initialize uStructSize to be sizeof(DICOMMLUTATTRIBS).Then you must set one of the flags, either bIsModalityLUTSequence or bIsRescaleSlopeIntercept. If you set bIsModalityLUTSequence, you must populate LUTDescriptor, pszLUTExplanation and szModalityLUTType with valid values. If you set bIsRescaleSlopeIntercept, you must populate fRescaleIntercept,fRescaleSlope and szRescaleType with valid values.

According to the DICOM standard when the number of table entries under the "LUT Data" (0028,3006) element is equal to 2^16 then the value of LUTDescriptor.uNumberOfEntries shall be 0. However, the 2 functions, LDicomDS::GetModalityLUTAttributes and LDicomDS::SetModalityLUT, do NOT have this limitation. When you call LDicomDS::GetModalityLUTAttributes, it will automatically set value in the dataset to 0 if LUTDescriptor.uNumberOfEntries is equal to 2^16. The same applies to LDicomDS::SetModalityLUT.