【发布时间】:2020-04-22 00:56:35
【问题描述】:
我想在 Python3 中使用 simpleItk 裁剪 3D 图像
首先,加载图片并获取numpy数组
image_ct = sitk.ReadImage(path_ct, sitk.sitkInt16)
array_ct = sitk.GetArrayFromImage(image_ct)
然后我对数组数据进行裁剪
center = (200, 200, 200)
array_gt = array_gt[center[0]-50:center[0]+51, center[1]-50:center[1]+51, center[2]-40:center[2]+41]
现在我想从数组中创建一个 sitk.Image 并保存结果
def create_ref_image(image, size=(101, 101, 81), spacing=(0.97, 0.97, 0.97), dimension=3):
ref_origin = np.zeros(dimension)
ref_direction = np.identity(dimension).flatten()
ref_image = sitk.Image(size, image.GetPixelIDValue())
ref_image.SetOrigin(ref_origin)
ref_image.SetSpacing(spacing)
ref_image.SetDirection(ref_direction)
return ref_image
ref_img = create_ref_image(image_ct)
cropped_img = sitk._SimpleITK._SetImageFromArray(np.ascontiguousarray(array_gt), ref_img)
sitk.WriteImage(cropped_img, "/DATA/exemple.nii")
然后我得到这个错误
文件“.../anaconda3/envs/objD/lib/python3.6/site-packages/SimpleITK/SimpleITK.py”,第 8207 行,在 WriteImage 中 返回 _SimpleITK.WriteImage(*args) ValueError:方法“WriteImage”中的无效空引用,“itk::simple::Image const &”类型的参数 1
如何使用 SimpleItk(在 python 中)裁剪图像?
【问题讨论】: