# include“Ltdic.h”
L_LTDIC_APIL_UINT16L_DicomInsertImageList(hDS, pElement, hList, nIndex, nCompression, nPhotometric, nBitsPerPixel, nQFactor, uFlags)
在像素数据元素中插入位图列表。
DICOM手柄。
指针指向DICOMELEMENT数据集中的结构。
位图列表的句柄。
要加载的第一帧的位置。使用从零开始的索引。例如,如果列表中有10个位图,则最后一个位图的索引为9。
值,该值指示要使用的压缩类型,这将影响调用函数时压缩图像的方式。可能的值有:
价值 | 意义 |
---|---|
IMAGE_COMPRESSION_NONE | [0x00]不压缩。 |
IMAGE_COMPRESSION_RLE | [0x01] RLE压缩。 |
IMAGE_COMPRESSION_JPEG_LOSSLESS | [0x02] JPEG无损压缩。 |
IMAGE_COMPRESSION_JPEG_LOSSY | [0x03] JPEG有损压缩。 |
IMAGE_COMPRESSION_J2K_LOSSLESS | [0x06] JPEG 2000无损压缩。 |
IMAGE_COMPRESSION_J2K_LOSSY | [0x07] JPEG 2000有损压缩。 |
IMAGE_COMPRESSION_MPEG2 | [0x08]仅限内部使用。mpeg - 2压缩。在内部用于读写DICOM文件LEADTOOLS医疗模块。有关这些过滤器的更多信息,请参见铅读卡器和首席编剧。 |
IMAGE_COMPRESSION_MPEG2_HD | [0x09]仅限内部使用。mpeg - 2压缩。在内部用于读写DICOM文件LEADTOOLS医疗模块。有关这些过滤器的更多信息,请参见铅读卡器和首席编剧。 |
光度常数。可能的值有:
价值 | 意义 |
---|---|
IMAGE_PHOTOMETRIC_MONOCHROME2 | [0x01]每像素8或16位,灰度图像。 |
IMAGE_PHOTOMETRIC_PALETTE_COLOR | [0x02]每像素8位,调色图像。 |
IMAGE_PHOTOMETRIC_RGB | [0x03]每像素24位,RGB彩色图像。 |
产生的位图像素深度。可能的值有:
价值 | 意义 |
---|---|
0 | 保持原始文件的像素深度(不要转换)。 |
1 ~ 8 | 生成位图中每个像素的指定位数 |
12 | 在生成的位图中每像素12位。 |
16 | 在生成的位图中每像素16位 |
24 | 生成位图中每像素24位 |
32 | 在生成的位图中每像素32位 |
质量因子(Q因子)是决定压缩过程中损失程度的一个数字。取值范围为2 ~ 255,其中2表示质量最高,255表示压缩程度最高。
控制此函数行为的标志。可能的值有:
价值 | 意义 |
---|---|
DICOM_SETIMAGE_AUTO_SET_VOI_LUT | [0x0002]如果设置,该函数将自动向数据集添加一个VOI LUT。 |
DICOM_SETIMAGE_MINIMIZE_JPEG_SIZE | [0x0004]如果设置,并且nCompression参数为IMAGE_COMPRESSION_JPEG_LOSSY或IMAGE_COMPRESSION_JPEG_LOSSY, JPEG压缩引擎将使用优化的Huffman表,这将导致更好的压缩,但速度较慢。 |
DICOM_SETIMAGE_MFG_OVERWRITE_SHARED | [0x0008]如果设置,共享功能组序列下的现有元素将被覆盖。如果不包含此标志,则共享功能组序列元素不变。 |
DICOM_SETIMAGE_MFG_VOI_LUT_PER_FRAME | [0x0010]如果帧VOI LUT序列不存在,则将其添加到每帧功能组序列下。如果帧VOI LUT序列已经存在于共享功能组序列下,则忽略此标志。 |
DICOM_SETIMAGE_MFG_VOI_LUT_SHARED | [0x0020]如果Frame VOI LUT序列不存在,则将其添加到共享功能组序列下。如果帧VOI LUT序列已经存在于每帧功能组序列下,则忽略此标志。 |
DICOM_SETIMAGE_MFG_MODALITY_LUT_PER_FRAME | [0x0040]如果像素值转换序列不存在,则将其添加到逐帧功能组序列下。如果共享功能组序列下已经存在像素值转换序列,则忽略此标志。 |
DICOM_SETIMAGE_MFG_MODALITY_LUT_SHARED | [0x0080]如果像素值转换序列不存在,则将其添加到共享功能组序列下。如果像素值转换序列在逐帧功能组序列下已经存在,则忽略此标志。 |
DICOM_SETIMAGE_YBR_FULL | [0x00000100]此标志仅对彩色图像有效,如果nCompression为IMAGE_COMPRESSION_NONE或IMAGE_COMPRESSION_RLE。对于所有其他传输语法值,它将被忽略。如果设置,这将RGB图像数据转换为YCbCr,它是一个亮度(Y)和两个色度平面(CB和CR)。 |
DICOM_SETIMAGE_OPTIMIZED_MEMORY | [0x00000200]如果设置,该函数将尝试节省内存使用并利用磁盘空间。 |
价值 | 意义 |
---|---|
DICOM_SUCCESS | 函数运行成功。 |
> 0 | 发生错误。指返回代码。 |
例如,如果您希望在像素数据中插入从第50帧开始的50个图像,请将nIndex设置为49(以零为基础的索引中的第50帧)并将您希望插入hList中的50帧调用此函数。
大多数DICOM文件只有一个TAG_PIXEL_DATA类型的数据元素。因此,在大多数情况下,您可以将pElement设置为NULL,因为该函数将自动将图像插入文件中唯一的Pixel Data Element。如果pElement不为NULL,它必须指向像素数据元素本身。
如果DICOM文件为CLASS_BASIC_DIRECTORY,则该文件可能包含多个像素数据元素。在这种情况下,您必须在pElement中指定要插入图像的像素数据元素。
有关可能的压缩、光度、BitsPerPixel和质量因子组合的表,请参阅压缩表。
有关使用JPEG 2000压缩时的更多选项,请参见L_DicomSetJ2KOptions。
这个函数将插入、删除或更新以下一个或多个元素:
标签 | 名字 |
---|---|
(7 fe0, 0010) | 像素数据 |
(0002, 0010) | 传输语法UID |
(0028, 0101) | 位存储 |
(0028, 0100) | 比特分配 |
(0028, 0102) | 高一些 |
(0028, 0103) | 像素表示 |
(0028, 0010) | 行 |
(0028, 0011) | 列 |
(0028, 0002) | 每像素样本数 |
(0028, 0006) | 平面配置 |
(0028, 0004) | 光度解释 |
(0028, 0106) | 最小图像像素值 |
(0028, 0107) | 最大图像像素值 |
(0028, 1101) | 红色调色板颜色查找表描述符 |
(0028, 1102) | 绿色调色板颜色查找表描述符 |
(0028, 1103) | 蓝色调色板颜色查找表描述符 |
(0028, 1201) | 红色调色板颜色查找表数据 |
(0028, 1202) | 绿色调色板颜色查找表数据 |
(0028, 1203) | 蓝色调色板颜色查找表数据 |
(0028, 1199) | 调色板颜色查找表UID |
(0028, 1052) | 重新调节拦截 |
(0028, 1053) | 重新调节斜率 |
(0028, 1054) | 重新调节类型 |
(0028, 1221) | 分割红色调色板颜色查找表数据 |
(0028, 1222) | 分段绿色调色板颜色查找表数据 |
(0028, 1223) | 分段蓝色调色板颜色查找表数据 |
(0028, 3010) | VOI LUT序列 |
(0028, 1050) | 窗口中心 |
(0028, 1051) | 窗口的宽度 |
(0028, 1055) | 窗口中心和宽度说明 |
(0028, 0008) | 帧数 |
(0054, 0070) | 时隙矢量 |
(5200, 9229) | 共享官能团序列 |
(5200, 9230) | 逐帧功能群序列 |
如果添加了共享功能组序列元素或逐帧功能组序列元素,则可以添加包含(0028,9132)帧VOI LUT序列元素或(0028,9145)像素值转换序列元素的item子元素。
帧VOI LUT序列子元素
标签 | 名字 |
---|---|
(0028, 1050) | 窗口中心 |
(0028, 1051) | 窗口的宽度 |
(0028, 1055) | 窗口中心和宽度说明 |
(0028,9145)像素值转换序列子元素
标签 | 名字 |
---|---|
(0028, 1052) | 重新调节拦截 |
(0028, 1053) | 重新调节斜率 |
(0028, 1054) | 重新调节类型 |
该函数与各种DICOM IOD类施加的像素数据限制无关,例如,该函数允许用户将彩色图像插入“数字x射线图像存储”数据集。
此函数将始终插入“帧数”(0028,0008)元素并设置其值。
多帧功能组模块可以具有共享功能组序列项和/或逐帧功能组序列项。这些项中的任何一个都可以具有像素值转换序列(0028,9145)项或帧VOI LUT序列(0028,9132)项。五个DICOM_SETIMAGE_MFG标志可用于添加或修改像素值转换序列或帧VOI LUT序列中的现有信息。
只有当相应的序列(帧VOI LUT序列或像素值转换序列)不存在时才使用以下标志。
在这种情况下,序列被放置在标记所指示的序列中(每帧功能组序列或共享功能组序列)。
如果DICOM数据集中已经存在帧VOI LUT序列或像素值转换序列,则忽略上述四个标志,并将序列放置在已经存在序列的位置。
有关多帧功能组以及如何使用DICOM_SET_IMAGE_MFG标志的详细讨论,请参阅主题多框架官能团。
笔记:
请注意,nPhotometric唯一有效的值是:
所有其他值都被忽略。
nPhotometric参数用作数据图像数据保存方式的指示器:灰度、彩色或托盘。nPhotometric参数不一定是存储在结果DICOM数据集中的Photometric Interpretation的最终值。DICOM数据集中产生的Photometric Interpretation是根据压缩类型、标志和QFactor自动设置的。下表给出了基于各种输入参数的DICOM数据集光度解释的示例:
nCompression | nPhotometric | uFlags | nQFactor | DICOM数据集的光度解释结果 |
---|---|---|---|---|
IMAGE_COMPRESSION_NONE | IMAGE_PHOTOMETRIC_MONOCHROME2 | 0 | 0 | MONOCHROME2 |
IMAGE_COMPRESSION_NONE | IMAGE_PHOTOMETRIC_RGB | 0 | 0 | RGB |
IMAGE_COMPRESSION_RLE | IMAGE_PHOTOMETRIC_RGB | DICOM_SETIMAGE_YBR_FULL | 0 | YBR_FULL |
IMAGE_COMPRESSION_JPEG_LOSSY | IMAGE_PHOTOMETRIC_RGB | 0 | 40 | YBR_FULL_422 |
IMAGE_COMPRESSION_JPEG_LOSSY | IMAGE_PHOTOMETRIC_RGB | 0 | 2 | YBR_FULL |
IMAGE_COMPRESSION_JPEG_LOSSLESS | IMAGE_PHOTOMETRIC_RGB | 0 | 0 | RGB |
IMAGE_COMPRESSION_J2K_LOSSLESS | IMAGE_PHOTOMETRIC_RGB | 0 | 0 | YBR_RCT |
IMAGE_COMPRESSION_J2K_LOSSY | IMAGE_PHOTOMETRIC_RGB | 0 | 0 | YBR_ICT |
笔记:
所需的dll和库
Win32, x64, Linux。
本例在Data Set中插入多帧图像
L_INT DicomInsertImageListExample(HBITMAPLIST hList)
{
HDICOMDS hDS;
pDICOMELEMENT pElement;
L_UINT16 nRet;
hDS = L_DicomCreateDS(NULL);
nRet = l_dicomloadd (hDS, MAKE_IMAGE_PATH(TEXT))“Image1.dcm”)), 0);
如果(nRet != DICOM_SUCCESS)
{
L_DicomFreeDS (hDS);
返回nRet;
}
pElement = L_DicomFindFirstElement(hDS, NULL, TAG_PIXEL_DATA, FALSE);
如果(pElement != NULL)
{
L_DicomInsertImageList(hDS, pElement, hList, 0, IMAGE_COMPRESSION_JPEG_LOSSLESS,
Image_photometric_rgb, 0,0, dicom_setimage_auto_set_voi_lut);
}
L_DicomFreeDS (hDS);
返回DICOM_SUCCESS;
}