6

由于显示基于 Dicoms 的MPR 视图。我从一系列 dicom 文件中制作了一个 3D 数组。我从冠状矢状面展示它。

My 3D array includes: 

 - z = count of dicoms
 - c = column value for every dicoms
 - r = Row value for every dicoms

但我有一个问题。当切片之间有一些空间时,通过这种方式制作的图像不会显示正确的视图。因为我想不出他们之间的模拟距离!

我不知道如何计算切片之间的空间?我想在切片之间添加额外的空间。例如,如果切片之间的空间是 4。我必须添加 4 个时间 z 内部切片。

我希望达到我的意思。

4

3 回答 3

20

Image Position (Patient) 和 Image Orientation (Patient) 是您在计算切片之间的距离时应该使用的两个唯一属性。有关更多详细信息,请参见此处此处。对于实际实现,请参见此处,此实现还考虑了 Frame Of Reference UID 以及 Gantry/Detector Tilt。

这个问题是在 comp.protocols.dicom 上提出的问题 #1。

请参阅ImageJ 错误


我相信@Matt 的回答是错误的,让我在这里澄清一些事情。

  • :'DICOM 没有名为Spacing Between Slices 的属性'。这是非常错误的(从技术上讲,它甚至没有任何意义)。

DICOM 定义了 IOD,它定义了 SOP 类实例中可用的一组必需属性。让我们考虑两个非常常见的情况:CT 图像存储(旧版)和 MR 图像存储(旧版)。所以我们需要比较两者之间的属性集:

  1. CT 图像 IOD 模块
  2. MR 图像 IOD 模块

现在假设我们要检查 MR Image Storage 支持Spacing Between Slices,很容易跳转到:

然而,要找到 CT 图像存储的这个属性要困难得多:仅仅因为这个属性不存在(根据标准)。因此,您唯一会在扩展的SOP 类中找到此类属性(某些供应商可能认为 Spacing Between Slices 属性在其扩展的SOP 类实例中有意义)。

  • 将切片之间的间距和切片厚度(0018,0050)混合在同一个答案中对于新用户来说非常混乱。

我同意切片厚度在 CT 图像存储和 MR 图像存储的标准中得到了完美定义,因为它们都包含 Image Plane Module Attributes,但是我们不要将一个交换为另一个。

我在这里找到了切片厚度与切片间距的一个很好的总结(如果您滚动到该部分,您甚至可以播放小演示):

在步进和射击 CT 中,切片厚度和切片之间的间距是相同的,因此这里没有大问题。然而,对于螺旋 CT,这些值并不相同,并且可以在任何方向上变化(它们是独立的)。

[…] 切片厚度由探测器宽度和间距决定,而重建间隔(=切片之间的间距)可以任意选择。[…]

总之,为了计算(安全!)切片之间的间距(= 重建间隔),使用图像方向(患者)和图像位置(患者)要安全得多,因为它们在 MR 图像存储或 CT 图像存储实例中都可用。

于 2013-02-27T15:39:35.543 回答
15

DICOM 有一个名为 Spacing Between Slices (0018, 0088) 的属性,它给出了两个相邻切片之间的距离(垂直于图像平面),它还有一个名为 Slice Thickness (0018, 0050) 的属性,它给出了成像切片的厚度(图像平面存在于切片的中心,一半的体积在平面上方,一半在下方)。Image Position (Patient) (0020, 0032) 和 Image Orientation (Patient) (0020, 0037) 也是计算切片之间空间关系的有用属性。

有关更详细的说明,请参阅DICOM 标准第 3 部分的 C.7.6.2 节。(第 409 页)

警告:请注意,不同的供应商使用相同的dicom 标签来解决不同的问题。例如,属性 Spacing Between Slices (0018, 0088) 意味着两个不同的东西,具体取决于供应商。请参阅此表以获取指南,并查看此线程以获取说明。

于 2013-02-18T19:51:58.617 回答
2

正如前面的答案中所讨论的,如何计算 DICOM 切片之间的空间并不简单。让我们换一种说法:如何将 DICOM 切片存储在 3D 体积中,即用于渲染的等距切片列表(猜你想上传到 3D 纹理中)。

这是因为捕获 CT 切片的实际位置可能与放射科医生选择的位置不同。数据集可能已配置为捕获 1 mm 切片,但 CT 返回位置为 0.0 mm、0.997 mm、2.010 mm、...的切片

如果您使用诸如 Spacing Between Slices 之类的属性来计算 3D 体积的大小,您将很容易获得细微的舍入误差。不要去那里。

相反,必须使用 Image Position (Patient) (0020, 0032),然后执行优化以计算切片如何适合网格。

实践中要考虑的典型问题:

  • 缺少切片(插值?间隙?)
  • 失步切片(硬件缺陷?数据缺陷?)
于 2017-08-04T20:38:08.343 回答