我将 3D 图像从 NIfTI 文件读入 SimpleITK(使用 python),获取每个轴向切片,对其进行处理,然后将新的 2D 切片重新插入具有(希望)适当尺寸的 3D 体积中。例如,
output = sitk.Image(original.GetSize(), sitk.sitkFloat32)
output.CopyInformation(original)
for z in numpy.arange(original.GetDepth()):
image = original[:,:,z]
<< Do Something in SimpleITK>>
<< Produce a new 2D image = newimage >>
output[:,:,z] = newimage
最后一步是抛出错误
In [???]: (executing line ??? of "code.py")
Traceback (most recent call last):
File "code.py", line ???, in <module>
output[:,:,z] = newimage
File "/Library/Python/2.7/site-packages/SimpleITK-0.8.1-py2.7-macosx-10.10-intel.egg/SimpleITK/SimpleITK.py", line 3894, in __setitem__
raise IndexError("invalid index")
IndexError: invalid index
完成 for 循环中最后一步的正确语法(或命令集)是什么?
使用粘贴功能将切片图像粘贴到体积中。唯一的小技巧是粘贴函数假设两个图像都是 3d。因此,您需要将 2D 图像转换为 3D 图像(z 大小为 1)。您可以使用 JoinSeries 函数来完成此操作。
这是一个示例 python 脚本来展示它是如何工作的
#! /usr/bin/env python
import SimpleITK as sitk
# make a black volume
vol_img = sitk.Image(100,100,100,sitk.sitkUInt8)
# make a white slice
slice_img = sitk.Image(100,100,sitk.sitkUInt8)
slice_img = slice_img + 200
# convert the 2d slice into a 3d volume
slice_vol = sitk.JoinSeries(slice_img)
# z insertion location
z = 42
# paste the 3d white slice into the black volume
pasted_img = sitk.Paste(vol_img, slice_vol, slice_vol.GetSize(), destinationIndex=[0,0,z])
sitk.Show(pasted_img)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)