Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 单纯形裁剪图像_Python_3d_Crop_Simpleitk - Fatal编程技术网

Python 单纯形裁剪图像

Python 单纯形裁剪图像,python,3d,crop,simpleitk,Python,3d,Crop,Simpleitk,我想在Python3中使用SimpleTk裁剪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]+

我想在Python3中使用SimpleTk裁剪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/simpletk/simpletk.py,第8207行,以书面形式显示 返回_simpletk.WriteImage*参数 ValueError:方法“WriteImage”中的null引用无效,参数1的类型为“itk::simple::Image const&”


如何在python中使用SimpleTk裁剪图像?

事实证明,您可以直接在sitk.image上使用切片操作符

image_ct = image_ct[center[0]-50:center[0]+51, center[1]-50:center[1]+51, center[2]-40:center[2]+41]

sitk.WriteImage(image_ct, "/DATA/exemple.nii")

事实证明,您可以直接在sitk.Image上使用切片操作符

image_ct = image_ct[center[0]-50:center[0]+51, center[1]-50:center[1]+51, center[2]-40:center[2]+41]

sitk.WriteImage(image_ct, "/DATA/exemple.nii")

除了通过Python切片进行裁剪外,SimpleTk还具有裁剪函数和CropImageFilter

以下是裁剪功能的文档:

和CropImageFilter:


该功能与切片相同,但如果您需要以相同的方式裁剪多个图像,则可以方便地为所有图像执行CropImageFilter对象。

除了通过Python切片进行裁剪外,SimpleIK还具有裁剪功能和CropImageFilter

以下是裁剪功能的文档:

和CropImageFilter:

该功能与切片相同,但如果需要以相同的方式裁剪多个图像,则可以方便地为所有图像执行CropImageFilter对象