# include“Ltdic.h”
L_UINT16LDicomDS::InsertImage(pElement, pBitmap, nIndex, nCompression, nPhotometric, nBitsPerPixel, nQFactor, uFlags, pfnCallback, pUserData)
在像素数据元素中插入图像。
指向DICOMELEMENT数据集中的结构。
指向引用要插入位图的位图句柄的指针。
指示将插入位图的位置的索引值。这是一个从零开始的索引。例如,如果nIndex为0,新图像将作为像素数据元素中的第一张图像插入。
值,该值指示要使用的压缩类型,该类型会影响调用函数时压缩图像的方式。可能取值为:
价值 | 意义 |
---|---|
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医疗模块.有关这些过滤器的更多信息,请参阅LEAD DICOM阅读器而且首席DICOM作者. |
IMAGE_COMPRESSION_MPEG2_HD | [0x09]内部使用。mpeg - 2压缩。用于在内部读取/写入DICOM文件LEADTOOLS医疗模块.有关这些过滤器的更多信息,请参阅LEAD DICOM阅读器而且首席DICOM作者. |
光度常数。可能取值为:
价值 | 意义 |
---|---|
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_SAVE_OVERLAYS | [0x0001]如果设置了,该函数将自动将与输入位图相关的覆盖插入到数据集中。 |
DICOM_SETIMAGE_AUTO_SET_VOI_LUT | [0x0002]如果设置了,该函数将自动向数据集添加VOI LUT。 |
DICOM_SETIMAGE_MINIMIZE_JPEG_SIZE | [0x0004]如果设置了,并且nCompression参数为IMAGE_COMPRESSION_JPEG_LOSSLESS或IMAGE_COMPRESSION_JPEG_LOSSY, JPEG压缩引擎将使用优化的霍夫曼表,这将导致更好的压缩,但速度较慢。 |
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]如果帧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是以下之一: |
对于所有其他传输语法值,它将被忽略。如果设置,这将RGB图像数据转换为YCbCr,这是一个亮度(Y)和两个色度平面(CB和CR)。| | DICOM_SETIMAGE_OPTIMIZED_MEMORY | [0x00000200]如果设置了,该函数将尝试节省内存使用并使用磁盘空间。|
用于额外处理的可选回调函数。
回调函数必须遵循中描述的函数原型FILESAVECALLBACK函数。
可用于传递回调函数所需的一个或多个附加参数的空指针。
要使用此特性,请为变量赋值或创建包含所需字段的结构。然后,在这个参数中,传递变量或结构的地址,将其强制转换为L_VOID *。回调函数在自己的pUserData形参中接收地址,可以将其转换为适当数据类型的指针以访问变量或结构。
如果不需要附加参数,则可以在此参数中传递NULL。
价值 | 意义 |
---|---|
0 | 成功 |
> 0 | 发生错误。指返回代码. |
大多数DICOM文件只有一个TAG_PIXEL_DATA类型的数据元素。因此,在大多数情况下,您可以将pElement设置为NULL,因为该函数将自动将图像插入到文件中唯一的像素数据元素中。如果pElement不是NULL,它必须指向像素数据元素本身。
如果DICOM文件为CLASS_BASIC_DIRECTORY,则该文件可能包含多个像素数据元素。在这种情况下,您必须在pElement中指定插入图像的像素数据元素。
有关可能的压缩、光度、位像素和质量因子组合的表,请参阅压缩表.
有关使用jpeg2000压缩时的更多选项,请参阅LDicomDS: SetJ2KOptions.
该函数将插入、删除或更新以下一个或多个元素:
标签 | 名字 |
---|---|
(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)像素值转换序列元素的项目子元素。
帧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标志的详细讨论,请参阅主题多框架官能团.
请注意:
DICOM_SETIMAGE_MFG_VOI_LUT_PER_FRAME不能与DICOM_SETIMAGE_MFG_VOI_LUT_SHARED组合使用。DICOM_SETIMAGE_MFG_MODALITY_LUT_PER_FRAME不能与DICOM_SETIMAGE_MFG_MODALITY_LUT_SHARED组合使用。
注意,nPhotometric的唯一有效值是:
忽略所有其他值。
nPhotometric参数用于指示数据图像数据将如何保存:灰色、彩色或托盘。nPhotometric参数不一定是存储在结果DICOM数据集中的Photometric Interpretation的最终值。根据压缩类型、标志和QFactor自动设置DICOM数据集中生成的光度解释。下表给出了基于不同输入参数的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 |
请注意:没有高级函数可以将MPEG2嵌入到DICOM数据集中。多媒体工188宝金博怎么下载具箱(日本作家)可以创建MPEG2压缩的DICOM文件。
请注意:此函数不能用于编码不属于主要医疗SDK的DICOM传输语法(例如视频压缩支持),并且只能通过LEADTOOLS医疗模块.
必需的dll和库
Win32, x64
这个例子在数据集中插入一个图像。
LDicomDS_InsertImageExample(pBITMAPHANDLE pBitmap)
{
L_INT nRet;
LDicomDS * pDS;
pDICOMELEMENT pElement;
pDS =新LDicomDS(空);
nRet = pDS-> loadd (MAKE_IMAGE_PATH(TEXT(“image1.dcm”)), 0);
如果(nRet != DICOM_SUCCESS)
返回nRet;
pElement = pDS->FindFirstElement(NULL, TAG_PIXEL_DATA, FALSE);
如果(pElement != NULL)
{
nRet = pDS->InsertImage(pElement, pBitmap, 1, IMAGE_COMPRESSION_NONE,
Image_photometric_monochrome2, 0,0, dicom_setimage_auto_set_voi_lut, null, null);
如果(nRet != DICOM_SUCCESS)
返回nRet;
}
删除pDS;
返回DICOM_SUCCESS;
}