py对不带"切片位置"属性的 DICOM 图像进行排序



有谁知道如果没有SliceLocation属性是否可以对dicom文件进行排序?

通过"排序",我的意思是纵向排列图像(在颅尾方向),首先是最优质的图像,然后是较差的图像。

查看论坛后,似乎切片位置是一个可选参数。

我可以访问我的 dicom 数据集中的以下属性。

(0008, 0018) SOP Instance UID                    UI: ID_32fede0dc
(0008, 0060) Modality                            CS: 'CT'
(0010, 0020) Patient ID                          LO: 'ID_4c8ee851'
(0020, 000d) Study Instance UID                  UI: ID_a362744476
(0020, 000e) Series Instance UID                 UI: ID_1ec35eec9c
(0020, 0010) Study ID                            SH: ''
(0020, 0032) Image Position (Patient)            DS: [-115, -1, 146.599976]
(0020, 0037) Image Orientation (Patient)         DS: [1, 0, 0, 0, 1, 0]
(0028, 0002) Samples per Pixel                   US: 1
(0028, 0004) Photometric Interpretation          CS: 'MONOCHROME2'
(0028, 0010) Rows                                US: 512
(0028, 0011) Columns                             US: 512
(0028, 0030) Pixel Spacing                       DS: [0.44921875, 0.44921875]
(0028, 0100) Bits Allocated                      US: 16
(0028, 0101) Bits Stored                         US: 12
(0028, 0102) High Bit                            US: 11
(0028, 0103) Pixel Representation                US: 0
(0028, 1050) Window Center                       DS: [00036, 00036]
(0028, 1051) Window Width                        DS: [00080, 00080]
(0028, 1052) Rescale Intercept                   DS: "-1024.0"
(0028, 1053) Rescale Slope                       DS: "1.0"
(7fe0, 0010) Pixel Data                          OW: Array of 524288 elements

最初,我虽然图像位置(患者)可能有效,但这似乎并没有按顺序排列图像。 我需要一个序列,因为时间信息与异常检测相关。

任何人都有任何好主意,或者这根本不可能?

我正在使用:

  • Pydicom 1.4.2
  • 蟒蛇 3.6.9

如果该标记可用,最好使用Image Position (Patient) [(0020,0032)]按位置对图像进行排序(例如在 CT 和 MR 图像中总是如此)。这是最可靠的方法。

由于标签包含三个元素,分别表示 DICOM 坐标系中的 x、y 和 z 坐标,因此最好按主轴排序,例如位置变化最大的轴。在大多数情况下,您可能已经知道该轴(在您的情况下,您想对颅尾进行排序,因此轴应该在该方向上),或者您可以通过比较切片位置轻松检查它,但您也可以从Image Orientation (Patient)计算它。

Image Orientation (Patient) [(0020,0037)]包含规范化的行和列向量。要获得主轴,您可以将这些轴相乘,在生成的矢量中,绝对值最大的分量将显示主轴。

在您的示例中,您有行和列向量 (1, 0, 0) 和 (0, 1, 0),通过将它们相乘得到 (0, 0, 1),这意味着主轴是 z 轴(例如 DICOM 坐标系中的颅尾方向)。

最新更新