如何使用BitsAllocation和PixelRepresentation读取图像

问题描述 投票:0回答:1

我正在使用 dcmtk 来读取 dicom。在此 dicom 中,BitsAllocation=16,PixelRepresentation=1。这意味着像素数据的类型是有符号的int 16。然后,我使用

e->getSInt16Array(pImg)
来读取
DCM_PixelData
,但
pImg
是一个空指针。然而,
e->getUint16Array(pImg)
给出了一个很好的
pImg
,并且在我将
pImg
更改为int16后它显示了正确的图像:
(signed short)pImg

我的问题是:为什么

e->getSint16Array(pImg)
对于 BitsAllocation=16 和 PixelRepresentation=1 失败,但
e->getUint16Array(pImg)
成功?

dicom dcmtk
1个回答
0
投票

在 DICOM 中,像素数据 (7fe0,0010) 元素以“OB”(8 位无符号整数)或“OW”(16 位无符号整数)的值表示 (VR) 存储,即 getSint16Array() 不适用。该方法是 DCMTK 的 dcmdata 模块的一部分,该模块不处理像素数据编码的细节,例如符号扩展。

如果您想要对 DICOM 图像进行更复杂的支持,您应该考虑使用 DCMTK 的 dcmimgle/dcmimage 模块。

© www.soinside.com 2019 - 2024. All rights reserved.