# include“Ltdic.h”
L_UINT16LDicomDS::SetImage(pElement, pBitmap, nCompression, nPhotometric, nBitsPerPixel, nQFactor, uFlags, pfnCallback, pUserData)
替换像素数据元素中的图像。
指向DICOMELEMENT数据集中的结构。
指向引用要设置的图像的位图句柄的指针。
值,该值指示要使用的压缩类型,该类型会影响调用函数时压缩图像的方式。可能取值为:
价值 | 意义 |
---|---|
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序列被添加到每帧功能组序列下。 |
DICOM_SETIMAGE_MFG_VOI_LUT_SHARED | [0x0020]帧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 | 发生错误。指返回代码. |
这个函数用pBitmap引用的图像替换像素数据元素中的所有图像。
大多数DICOM文件只有一个TAG_PIXEL_DATA类型的数据元素。因此,在大多数情况下,您可以将pElement设置为NULL,因为该函数将自动替换文件中唯一像素数据元素的图像。如果pElement不是NULL,它必须指向像素数据元素本身。
如果DICOM文件为CLASS_BASIC_DIRECTORY,则该文件可能包含多个像素数据元素。在这种情况下,您必须在pElement中指定图像将被替换的像素数据元素。
如果您希望仅替换像素数据元素中的一个图像,则必须使用LDicomDS: DeleteImage而且LDicomDS: InsertImage.
有关可能的压缩、光度、位像素和质量因子组合的表,请参阅压缩表.
有关使用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)项。
当调用函数[LDicomDS:SetImage或。LDicomDS:使得, 5个DICOM_SETIMAGE_MFG替换像素值转换序列或帧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 | ||
---|---|---|---|---|
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
本示例在Data Set中设置一个图像。
LDicomDS_SetImageExample(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->SetImage(pElement, pBitmap, IMAGE_COMPRESSION_NONE,
image_photometric_monochrome1,0,0, dicom_setimage_auto_set_voi_lut, null, null);
如果(nRet != DICOM_SUCCESS)
返回nRet;
}
删除pDS;
返回DICOM_SUCCESS;
}