LDicomDS: SetVOILUT

# include“ltdic.h”

L_UINT16LDicomDS::SetVOILUT(uVOILUTIndex, pVOILUTAttributes, pLUTData, uDataSize,uFlags)

设置描述VOI LUT的属性。

参数

L_UINTuVOILUTIndex

要设置的VOI LUT的索引。根据DICOM标准,一个VOI LUT序列(0028,3010)下可以存在一个或多个项,使用此索引指定要更新的项。该索引从零开始。

pDICOMVOILUTATTRIBSpVOILUTAttributes

指向包含要设置的VOI LUT属性的结构的指针。

L_UINT16* pLUTData

指向存放要设置的“LUT数据”(0028,3006)的缓冲区的指针。这个指针不能为NULL。

L_UINTuDataSize

由pLUTData指向的缓冲区大小不能为0。这个值应该至少等于pVOILUTAttributes->LUTDescriptor.uNumberOfEntries。

L_UINTuFlags

保留以备将来使用。通过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;}}其他的{定义我们自己的LUTvoilutattribs . 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 !){//删除已有的LUTnRet = InDS。DeleteVOILUT (0);如果(nRet != DICOM_SUCCESS){免费(pVOILUTData);返回nRet;}uNewLUTIndex = 0;}//设置新的LUTnRet = InDS.SetVOILUT(uNewLUTIndex,&VOILUTAttribs,pVOILUTData,uDataSize,0);如果(nRet != DICOM_SUCCESS){免费(pVOILUTData);返回nRet;}如果(pVOILUTData){免费(pVOILUTData);}返回DICOM_SUCCESS;}

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