在 SimpleITK 中分配给索引图像
Assignment to indexed images in SimpleITK
在 SimpleITK 中将值或切片分配给索引数组的最佳方法是什么?
示例 (1):将 2D 切片分配给 3D 体积中的索引 2D 切片
在NumPy中,我们可以对索引数组进行如下赋值:
import numpy as np
nda = np.ones((64, 256,256))
nda[0,:,:] = 2*nda[0,:,:]
SimpleITK中同样的操作,
import SimpleITK as sitk
image = sitk.GetImageFromArray(nda)
image[:,:,0] = 2*image[:,:,0]
给出以下错误:
IndexError Traceback (most recent call last)
<ipython-input-18-4649e90a4ea5> in <module>
----> 1 image[:,:,0] = 2*image[:,:,0]
~/anaconda3/lib/python3.7/site-packages/SimpleITK/SimpleITK.py in __setitem__(self, idx, value)
4690
4691 # the index parameter was an invalid set of objects
-> 4692 raise IndexError("invalid index")
4693
4694
IndexError: invalid index
示例 (2):为 3D 体积中的索引 2D 切片赋值
NumPy中的以下操作,
nda[0,:,:] = 2
n SimpleITK,
image[:,:,0] = 2
给出与示例 (1) 中相同的索引错误。
很遗憾,您不能在 SimpleITK 中进行此类操作。赋值运算符的左侧必须是单个像素。不能是切片。
要执行这些类型的操作,您必须从体积中提取出一个切片,对切片进行操作,然后使用粘贴功能将切片粘贴回体积中。
您可以在我之前发布的回答中看到粘贴功能的示例:
在 SimpleITK 中将值或切片分配给索引数组的最佳方法是什么?
示例 (1):将 2D 切片分配给 3D 体积中的索引 2D 切片
在NumPy中,我们可以对索引数组进行如下赋值:
import numpy as np
nda = np.ones((64, 256,256))
nda[0,:,:] = 2*nda[0,:,:]
SimpleITK中同样的操作,
import SimpleITK as sitk
image = sitk.GetImageFromArray(nda)
image[:,:,0] = 2*image[:,:,0]
给出以下错误:
IndexError Traceback (most recent call last)
<ipython-input-18-4649e90a4ea5> in <module>
----> 1 image[:,:,0] = 2*image[:,:,0]
~/anaconda3/lib/python3.7/site-packages/SimpleITK/SimpleITK.py in __setitem__(self, idx, value)
4690
4691 # the index parameter was an invalid set of objects
-> 4692 raise IndexError("invalid index")
4693
4694
IndexError: invalid index
示例 (2):为 3D 体积中的索引 2D 切片赋值 NumPy中的以下操作,
nda[0,:,:] = 2
n SimpleITK,
image[:,:,0] = 2
给出与示例 (1) 中相同的索引错误。
很遗憾,您不能在 SimpleITK 中进行此类操作。赋值运算符的左侧必须是单个像素。不能是切片。
要执行这些类型的操作,您必须从体积中提取出一个切片,对切片进行操作,然后使用粘贴功能将切片粘贴回体积中。
您可以在我之前发布的回答中看到粘贴功能的示例: