LEADTOOLS DICOM C++ Class Library Help > LEADTOOLS DICOM Features > DICOM Files > LUT Encoding Overview > Used Structures > DICOMMLUTATTRIBS |
typedef struct tagDICOMMLUTATTRIBS
{
L_UINT uStructSize;
L_BOOL bIsModalityLUTSequence;
DICOMLUTDESCRIPTOR LUTDescriptor;
L_TCHAR pszLUTExplanation[DICOM_VR_LO_LENGTH+1];
L_TCHAR szModalityLUTType[DICOM_VR_LO_LENGTH+1];
L_BOOL bIsRescaleSlopeIntercept;
L_DOUBLE fRescaleIntercept;
L_DOUBLE fRescaleSlope;
L_TCHAR 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.