# include“ltdic.h”
L_UINT16LDicomDS::SetVOILUT(uVOILUTIndex, pVOILUTAttributes, pLUTData, uDataSize,uFlags)
设置描述VOI LUT的属性。
要设置的VOI LUT的索引。根据DICOM标准,一个VOI LUT序列(0028,3010)下可以存在一个或多个项,使用此索引指定要更新的项。该索引从零开始。
指向包含要设置的VOI LUT属性的结构的指针。
指向存放要设置的“LUT数据”(0028,3006)的缓冲区的指针。这个指针不能为NULL。
由pLUTData指向的缓冲区大小不能为0。这个值应该至少等于pVOILUTAttributes->LUTDescriptor.uNumberOfEntries。
保留以备将来使用。通过0。
价值 | 意义 |
---|---|
0 | 活动很成功。 |
> 0 | 发生错误。指返回代码. |
在调用此函数之前,将pVOILUTAttributes->uStructSize初始化为sizeof(DICOMVOILUTATTRIBS),并初始化结构的所有成员。
输入缓冲区的大小至少应等于查找表中条目的数量。
根据DICOM标准pVOILUTAttributes->LUTDescriptor。如果查找表中的条目数为2^16,则uNumberOfEntries应该设置为0,但是在调用此函数时不应该这样做。这个函数将处理正确设置数据集中的值。
必需的dll和库
Win32, x64
此示例将向数据集中添加新的VOI LUT或替换现有的VOI LUT。
LDicomDS_SetVOILUTExample(LDicomDS &InDS, L_BOOL bAdd)
{
L_INT nRet;
DICOMVOILUTATTRIBS VOILUTAttribs ={0};
L_UINT uVOILUTCount = 0;
L_UINT16 *pVOILUTData = NULL;
L_UINT uDataSize = 0;
L_INT nLUTIndex;
L_UINT uNewLUTIndex = 0;
//记住设置每个结构的大小
VOILUTAttribs。uStructSize =运算符(DICOMVOILUTATTRIBS);
VOILUTAttribs.LUTDescriptor.uStructSize =运算符(DICOMLUTDESCRIPTOR);
//获取文件中VOI LUT(s)的数量
nRet = InDS。GetVOILUTCount (&uVOILUTCount);
如果(nRet != DICOM_SUCCESS)
{
返回nRet;
}
如果(uVOILUTCount > 0)
{
//获取第一个VOI LUT的属性
nRet = InDS。&VOILUTAttribs GetVOILUT (0,运算符(DICOMVOILUTATTRIBS), 0);
如果(nRet != DICOM_SUCCESS)
{
返回nRet;
}
uDataSize = VOILUTAttribs.LUTDescriptor.uNumberOfEntries;
pVOILUTData = (L_UINT16*)malloc(uDataSize* .运算符(L_UINT16));
如果(pVOILUTData !)
{
返回DICOM_ERROR_MEMORY;
}
//获取LUT数据
nRet = InDS。GetVOILUTData (0, pVOILUTData uDataSize 0);
如果(nRet != DICOM_SUCCESS)
{
免费(pVOILUTData);
返回nRet;
}
//重新映射数据
为(nLUTIndex = 0;nLUTIndex <= (L_INT)(uDataSize-1);nLUTIndex + +)
{
pVOILUTData[nLUTIndex] = pVOILUTData[nLUTIndex]/2;
}
}
其他的
{
定义我们自己的LUT
voilutattribs . lutdescriptor . nfirststoredpixelvaluemapping = 0;
VOILUTAttribs.LUTDescriptor.uEntryBits = 16;
VOILUTAttribs.LUTDescriptor.uNumberOfEntries = 0x10000;
uDataSize = VOILUTAttribs.LUTDescriptor.uNumberOfEntries;
pVOILUTData = (L_UINT16*)malloc(uDataSize* .运算符(L_UINT16));
如果(pVOILUTData !)
{
返回DICOM_ERROR_MEMORY;
}
memset (pVOILUTData 0 uDataSize *运算符(L_UINT16));
为(nLUTIndex = 0;nLUTIndex <= (L_INT)(uDataSize-1);nLUTIndex + +)
{
pVOILUTData[nLUTIndex] = (L_UINT16)nLUTIndex;
}
}
uNewLUTIndex = uVOILUTCount;
如果(bAdd !)
{
//删除已有的LUT
nRet = InDS。DeleteVOILUT (0);
如果(nRet != DICOM_SUCCESS)
{
免费(pVOILUTData);
返回nRet;
}
uNewLUTIndex = 0;
}
//设置新的LUT
nRet = InDS.SetVOILUT(uNewLUTIndex,&VOILUTAttribs,pVOILUTData,uDataSize,0);
如果(nRet != DICOM_SUCCESS)
{
免费(pVOILUTData);
返回nRet;
}
如果(pVOILUTData)
{
免费(pVOILUTData);
}
返回DICOM_SUCCESS;
}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。