DICOM 文件可能包含未压缩的像素数据或 compressed pixel data .它的PhotometricInterpretation(0028,0004)
可以是MONOCHROME1/MONOCHROME2/RGB/PALETTE COLOR/YBR等。还有一个Pydicom page about color space .
但是从这些页面或任何其他 DICOM 网站,我不清楚如何获得颜色深度。
BitsAllocated (0028,0100)
或 BitsStored (0028,0101)
标签指的是颜色深度吗?它的颜色深度可以不同于这两个标签值吗?
如何以可靠的方式获取 DICOM 像素数据的颜色深度?
最佳答案
Bits Stored
是用于实际颜色或灰度数据的位数,因此它至少与颜色深度有关。 Bits Allocated
始终是 8 的倍数,因为数据始终以字节为单位组织,其中某些高位可能不会用于数据(Bit Data 除外,它为 1) .
获取位深度并不像看起来那么简单。虽然用于数据的位数大部分可以定义,但数据的分辨率(例如相邻值之间的距离)也可能取决于Photometric Interpretation
,当然还取决于由模态本身。
最简单的情况是单色数据(Photometric Interpretation
是MONOCHROME1
或MONOCHROME2
),其中颜色深度直接由定义Bits Stored
典型值为 12、14 或 16。RGB
数据也是如此(例如,数据最初记录为 RGB),而 Bits Stored 确实如此
可以有 different values对于@kritzel_sw 正确提到的 JPEG2000 编码图像,我还必须看到任何 RGB
数据的 Bits Stored
不同于 8。更新:我仍然没有看到这个,但发现 RTDOSE 图像 can have 32 Bits Stored .
对于 YBR 颜色空间中的颜色数据(Photometric Interpretation
is YBR_xxx
),这不太清楚。这在某种程度上取决于您对颜色深度的定义。鉴于使用的颜色空间是 YBR 而不是 RGB,并且每个分量使用的位数可能不同(例如在 YBR_FULL_422
中,它用于一些 JPEG 压缩图像,我们对 2 个 channel 进行了下采样) ,如果将生成的图像转换为 RGB(主要完成的),每个颜色分量使用 8 位,但由于这个原因,可能值的实际数量少于 256。因此,如果您对颜色深度的定义取决于每个 RGB channel 使用的位数,那么在这种情况下答案可能是 8,但是如果您定义每个 YBR channel 的颜色深度,答案可能会有所不同并且取决于 光度学解释
和Bits Stored
。
一个特例是 PALETTE COLOR
的 PhotometricInterpretation
,其中可能的颜色在颜色表中定义。在这种情况下,每个颜色分量的颜色数在 Palette Color Lookup Table Descriptor 的第一个值中定义。 (0028,1101-1104),这对所有 3 个表都是相等的(例如,对于红色、绿色和蓝色组件)。实际颜色深度必须从该值导出。
考虑到所有这些,答案可能是:视情况而定。我还将添加@kritzel_sw 的注释,许多 IOD 限制了像素数据编码方式的自由度,这将缩小任何具体类型图像的颜色深度的可能性。
如果有人有更直接的答案,我很感兴趣。
关于image-processing - 如何以可靠的方式获取 DICOM 像素数据的颜色深度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69446381/