了解DICOM图像中的BPP

时间:2016-01-28 06:51:44

标签: dicom

几天后我使用FO-DICOM处理DICOM文件。

我使用一组dicom文件进行测试,并且我已经打印了光学解释"光度解释" "每像素样本"价值观,以便更好地了解我正在使用的图像。

结果是" MONOCHROME2"用于光度学解释," 1"对于每像素样本。

通过阅读标准的第3部分,我理解的是MONOCHROME2代表一个灰度,从最小值的黑色开始。

但是每个像素的样本究竟是什么?我认为这代表了每个像素的字节(而不是位)的数量(对于灰度等级,这个逻辑是每个像素有8个?)< / p>

但我的问题是,实际上,我的图像似乎有32 bpp。 我正在处理512 * 512像素的图像,并将它们转换为字节数组。所以我期待512 * 512 = 262144字节的数组。 但是我得到了1048630字节的数组(比4 * 262144多一点)

有人有解释吗?

修改

这是我的一些数据:

PhotometricInterpretation=MONOCHROME2
SamplePerPixel=1
BitsAllocated=16
BitsStored=12
HighBit=11
PixelRepresentation=0
NumberOfFrames=0

1 个答案:

答案 0 :(得分:5)

属性(0028,0002)SamplesPerPixel仅指彩色图像,并告诉您图像中存在的平面数(例如RGB为3),所以你有

PhotometricInterpretation=RGB
SamplesPerPixel=3

每像素8位(我将在下面重新访问BPP)。只要您有PhotometricInterpretation = MONOCHROME1或MONOCHROME2,您就可以期望SamplesPerPixel为1,而不是其他任何内容。

您必须考虑的是每个像素的位数:

BitsAllocated (0028,0100)
BitsStored (0028,0101)
HighBit (0028,0102)

它们告诉您使用了多少位来编码像素值(BitsAllocated)以及这些位中的哪些位确实包含灰度信息(BitsStoredHighBit)。 HighBit从零开始,通常但不一定= BitsStored-1

举例说明:对于CT图像,以hounsfield单位表示灰度值非常常见,范围从-1000到+3000。它们由12位表示,以2字节对齐方式存储,所以

BitsAllocated (0028,0100) = 16
BitsStored (0028,0101) = 12
HighBit (0028,0102) = 11

另一个自由度是PixelRepresentation,它告诉您像素数据是无符号(0)还是2s补码(1)。我已经看过CT图像,但是对于CT以外的图像类型,有符号像素数据是不常见的。

在您的示例中,我假设分配的位数== 32或(不太可能)您拥有包含多个图像的数据集(“框架”),因此NumberOfFrames (0028,0008)&gt; 1.如果没有帧数,您可以安全地假设只有一帧。

我在这里过分简化了一下,特别是关于彩色图像,但我觉得这很复杂;-)。基本上,DICOM提供任何可想象的自由度来编码像素数据并描述标题中的编码。

我想我建议你在最近的帖子中看看DCMTK。 DicomImage类具有一个很好的接口(getInterData()),它关注所有这些东西,并以标准化格式提供从DICOM文件读取的像素数据。

[编辑]:您可以在此处发布数据集的DICOM转储,我会看看它并告诉您如何解释像素数据。