为什么DICOM的像素值超出“最大图像像素值”属性?

时间:2013-05-08 14:55:15

标签: dicom imaging

我正在使用dcmtk从dicom数据中获取图像数据。现在我有一个样本图像的以下信息:

  • (0028,0002)每像素样本:1
  • (0028,0004)光度学解释:MONOCHROME2
  • (0028,0010)行:256
  • (0028,0011)栏目:256
  • (0028,0030)像素间距:1.5625 \ 1.5625
  • (0028,0100)分配的比特:16
  • (0028,0101)比特存储:12
  • (0028,0102)高位:11
  • (0028,0103)像素表示:0
  • (0028,0106)最小图像像素值:1
  • (0028,0107)最大图像像素值:1060
  • (0028,1050)窗口中心:474
  • (0028,1051)窗口宽度:1000
  • (0028,1055)Window Center&宽度说明:Algo1

当我将窗口/中心值应用于数据的实际像素值时,其中许多是白色的。我迭代像素值,然后我发现许多像素值(大于80%)超出最大图像像素值。其中许多超过最大的5倍!这使得我的图像接近完全白色。奇怪的是,我不知道为什么当我将像素值分成256时,结果图像接近我期望的图像。我不明白为什么会这样。

也许很高兴看到其他未知属性:

  • (0019,1009)未知:1.0
  • (0019,100b)未知:245
  • (0019,1016)未知:25.53

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:1)

你可以验证你只读取每个像素的12位吗?即你沿着这些方向应用了某些东西

int value =((byte [0]& 0x0f)<< 8)|字节[1];

而不是

int value =(byte [0]<< 8)|字节[1];

答案 1 :(得分:0)

我还没有看到你的图像数据,但是从你说的我认为这是一个字节序问题。现在我没有广泛使用gdcmtk但是在gdcm中我们可以选择设置数据字节序。尝试将endianness设置为little而不是big。如果您能提供我的dicom文件,我可以尝试使用gdcm读取它。