由于显示基于Dicoms的 MPR视图。我从一系列dicom文件中制作了一个3D数组。我从 Coronal 和 Sagittal 两侧展示它。
My 3D array includes:
- z = count of dicoms
- c = column value for every dicoms
- r = Row value for every dicoms
但我有一个问题。当切片之间存在一些空间时,通过这种方式制作图像不会显示正确的视图。因为我无法想到它们之间的模拟距离!
我不知道如何计算切片之间的空间?我想在切片之间添加额外的空间。例如,如果切片之间的空间为4.我必须添加4个时间z内切片。
我希望能达到我的意思。
答案 0 :(得分:15)
图像位置(患者)和图像方向(患者)是计算切片之间距离时应使用的两个唯一属性。有关详细信息,请参阅here或here。对于实际实现,请参阅here,此实现也会考虑参考框架UID。
这个问题是关于comp.protocols.dicom的问题#1。
请参阅ImageJ bug
我相信@Matt的答案是错误的,让我在这里澄清一些事情。
DICOM定义了IOD,它定义了SOP类实例中可用的必需属性集。让我们考虑两种非常常见的情况:CT图像存储(传统)和MR图像存储(传统)。所以我们需要比较两者之间的属性集:
现在假设我们要检查MR Image Storage支持Spacing Between Slices
,很容易跳转到:
然而,为CT Image Storage找到这个属性要困难得多:只是因为这个属性不存在(按标准)。因此,您唯一能够找到此类属性的时间是扩展 SOP类(某些供应商可能会认为片段之间的间距属性在其扩展 SOP类实例中有意义)。
我同意切片厚度在CT图像存储和MR图像存储的标准中是完美定义的,因为它们都包含Image Plane Module Attributes,但是不要让它们换另一个。
我在这里找到了切片厚度与切片之间间距的精彩摘要(如果滚动到该部分,您甚至可以播放小型演示):
在步骤和拍摄CT中,切片厚度和切片之间的间距是相同的,因此这里没有大问题。然而,对于螺旋CT,这些值不相同,并且可以在任何方向上变化(它们是独立的)。
[...]切片厚度由探测器宽度和间距决定, 而重建间隔(=切片间距)可以选择 随意。 [...]
总结计算(安全!)切片之间的间距(=重建间隔),使用图像方向(患者)和图像位置(患者)更安全,因为它们可用于MR图像存储或CT图像存储实例。
答案 1 :(得分:14)
DICOM有一个名为Spacing Between Slices(0018,0088)的属性,它给出了两个相邻切片之间的距离(垂直于图像平面),它还有一个称为切片厚度(0018,0050)的属性,它给出了厚度成像切片(图像平面存在于切片的中心,一半体积在平面上方,一半在下面)。图像位置(患者)(0020,0032)和图像方向(患者)(0020,0037)也是计算切片之间空间关系的有用属性。
有关更详细的说明,请参阅section C.7.6.2 of part 3 of the DICOM standard。 (第409页)
答案 2 :(得分:1)
如前面的答案中所讨论的,如何计算DICOM切片之间的空间并不简单。让我们以不同的方式表达问题:如何在3D体积中存储DICOM切片,即用于渲染的等间距切片列表(猜测您想要上传到3D纹理中)。
这是因为捕获CT切片的实际位置可能与放射科医师选择的位置不同。数据集可能已配置为捕获1 mm切片,但CT返回位于0.0 mm,0.997 mm,2.010 mm处的切片,...
如果使用“切片间距”等属性来计算3D体积的大小,则可以轻松获得细微的舍入误差。不要去那里。
相反,必须使用图像位置(患者)(0020,0032),然后执行优化以确定切片如何适合网格。
实践中需要考虑的典型问题: