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(:为三维体积中的索引二维切片赋值NumPy、中的以下操作

nda[0,:,:] = 2

n SimpleITK,

image[:,:,0] = 2

给出了与示例(1(中相同的索引误差。

不幸的是,您无法在SimpleITK中执行那种类型的操作。赋值运算符的左手边必须是一个像素。它不可能是切片。

要执行这些类型的操作,您必须从体积中提取一个切片,对该切片进行操作,然后使用"粘贴"功能将该切片粘贴回体积中。

你可以在我之前发布的回答中看到粘贴函数的一个例子:https://stackoverflow.com/a/32612215/3712577

最新更新