【问题标题】:How to calculate space between dicom slices for MPR?如何计算 MPR 的 dicom 切片之间的空间?
【发布时间】:2013-02-02 12:35:40
【问题描述】:

由于显示基于 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 内部切片。

我希望达到我的意思。

【问题讨论】:

    标签: dicom slice


    【解决方案1】:

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

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

    请看ImageJ bug


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

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

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

    1. CT Image IOD Modules
    2. MR Image IOD Modules

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

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

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

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

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

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

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

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

    【讨论】:

    • 您介意解释一下为什么只考虑这两个吗?
    • @FrancescoPasa 我引用了两个链接。你想让我复制/粘贴这里描述的内容吗?
    • 你是对的,我很抱歉这个愚蠢的问题。所以基本上这是由于机器和软件之间的差异导致切片厚度(0018,0050)和切片之间的间距(0018,0088)属性可能存在不一致的事实,并且距离是动态调整的,对吧?
    • @FrancescoPasa 是的,我已经更新了我的答案,指向一个小型 Java 演示以了解原理。
    【解决方案2】:

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

    更详细的解释见section C.7.6.2 of part 3 of the DICOM standard。 (第 409 页)

    警告:请注意,不同的供应商使用 same dicom 标签来处理不同的事情。例如,属性 Spacing Between Slices (0018, 0088) 表示两个不同的东西,具体取决于供应商。请参阅this table 以获得指导,this thread 以获得解释。

    【讨论】:

    • 感谢@Matt 的回答。我使用 SpacingBetweenSlices(0018, 0088) 来模拟切片之间的空间。我应该使用 SliceThickness(0018, 0050) 来计算真实空间吗?如果是,怎么会?
    • 您需要这两条信息。切片厚度告诉您哪个空间区域对给定切片中的像素值做出了贡献。如果切片厚度小于切片之间的间距,则切片之间存在未成像的间隙区域。如果切片厚度大于切片之间的间距,则切片重叠(存在为两个相邻切片提供信息的区域)。
    • 请参阅@malat 答案,您不应依赖切片之间的间距或切片厚度来计算切片之间的空间。
    • @Dese 你对我的回答读得太多了。我不提倡一种特定的方法。我提了几个与主题相关的属性,并指示OP阅读精美手册,这是该主题的最终权威。
    【解决方案3】:

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

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

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

    相反,必须使用图像位置(患者)(0020、0032),然后执行优化以计算切片如何适合网格。

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

    • 缺少切片(插值?间隙?)
    • 失步切片(硬件缺陷?数据缺陷?)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多