L_DicomInsertImageList

# include“Ltdic.h”

L_LTDIC_APIL_UINT16L_DicomInsertImageList(hDS, pElement, hList, nIndex, nCompression, nPhotometric, nBitsPerPixel, nQFactor, uFlags)

在像素数据元素中插入位图列表。

参数

HDICOMDShDS

DICOM手柄。

pDICOMELEMENTpElement

指针指向DICOMELEMENT数据集中的结构。

HBITMAPLISThList

位图列表的句柄。

L_UINT32nIndex

要加载的第一帧的位置。使用从零开始的索引。例如,如果列表中有10个位图,则最后一个位图的索引为9。

L_INT32nCompression

值,该值指示要使用的压缩类型,这将影响调用函数时压缩图像的方式。可能的值有:

价值 意义
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医疗模块。有关这些过滤器的更多信息,请参见铅读卡器首席编剧

L_INT32nPhotometric

光度常数。可能的值有:

价值 意义
IMAGE_PHOTOMETRIC_MONOCHROME2 [0x01]每像素8或16位,灰度图像。
IMAGE_PHOTOMETRIC_PALETTE_COLOR [0x02]每像素8位,调色图像。
IMAGE_PHOTOMETRIC_RGB [0x03]每像素24位,RGB彩色图像。

L_INT32nBitsPerPixel

产生的位图像素深度。可能的值有:

价值 意义
0 保持原始文件的像素深度(不要转换)。
1 ~ 8 生成位图中每个像素的指定位数
12 在生成的位图中每像素12位。
16 在生成的位图中每像素16位
24 生成位图中每像素24位
32 在生成的位图中每像素32位

L_INT32nQFactor

质量因子(Q因子)是决定压缩过程中损失程度的一个数字。取值范围为2 ~ 255,其中2表示质量最高,255表示压缩程度最高。

L_UINTuFlags

控制此函数行为的标志。可能的值有:

价值 意义
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;}

LEADTOOLS DICOM C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领先科技有限公司版权所有。