Python 是否有比scipy.ndimage.zoom更快的方法调整三维体积的大小/重新采样?

Python 是否有比scipy.ndimage.zoom更快的方法调整三维体积的大小/重新采样?,python,numpy,scipy,resize,simpleitk,Python,Numpy,Scipy,Resize,Simpleitk,我知道有一个函数scipy.ndimage.zoom可以调整3D卷的大小\重新采样,但这是针对numpy.array的,速度非常慢。因此,我使用simpletk中的ResampleImageFilter。我认为基于C++ SimuleTk工作得快得多。p> 但是使用SimpleTk进行重采样存在一个小缺陷ResampleMageFilter适用于simpletk.Image,但不适用于numpy.array,因此执行进一步的操作非常不方便。是否有其他方法可以对三维体积重新采样 编辑 我之所以担心

我知道有一个函数
scipy.ndimage.zoom
可以调整3D卷的大小\重新采样,但这是针对numpy.array的,速度非常慢。因此,我使用
simpletk
中的
ResampleImageFilter
。我认为基于C++ SimuleTk工作得快得多。p> 但是使用SimpleTk进行重采样存在一个小缺陷
ResampleMageFilter
适用于simpletk.Image,但不适用于numpy.array,因此执行进一步的操作非常不方便。是否有其他方法可以对三维体积重新采样

编辑
我之所以担心这个问题,是因为我想利用SimpleTk重采样的快速性,同时我想保持代码的整洁。 例如,我需要对一个卷执行二进制阈值,然后对整个卷重新采样。这就是我的解决方案

binthresh=sitk.binarySthresholdImageFilter()
... #为binthresh设置参数
img=binarySthresh.Execute(img)
resample=sitk.resampleMageFilter()
... #为重采样设置参数
img=重新采样。执行(img)
arr=sitk.GetArrayFromImage(img)
... # arr上的numpy操作
但事实上,使用numpy来做二进制阈值与逻辑索引相比要简单得多,这将使我的代码更加紧凑。

总之,我想充分利用SimpleTk重采样,但有些操作可以由numpy更好地完成,然后我的代码会与SimpleTk和numpy交织在一起。我不认为这是一件好事。

我很好奇,总是使用
ndimage.zoom
而没有太多问题,尽管体积很小。您是否将
simpletk
ndimage
与类似的设置进行比较(即不包括加载开销、相同的插值器等)?它真的快了多少?顺便说一句,你可以用sitk.GetArrayFromImage@filippo获得一个numpy阵列。我正在处理相当大的体积,比如(514514374)CT扫描覆盖整个肺。在这种情况下,使用numpy.array的
zoom
在速度上远远低于SimpleTk。@filippo是的,我可以使用
sitk.ArrayfromImage
来获取numpy.array。但是由于SimpleTk提供了更快的重采样,我更愿意坚持这一点。然而,使用SimpleTk会降低代码的一致性,我会重新编辑我的帖子来陈述我的观点。使用SimpleTk的GetArrayViewFromImage如何。这样就不会在numpy和simpletk之间来回复制卷。然后,您可以在SimpleTk中处理图像,并在numpy中查看结果。@DaveChen您好,谢谢您的留言!但是我试图从
GetArrayViewFromImage
中篡改数组视图,但结果表明数组视图是只读的。有没有一种方法可以对simpletk.Image数组使用numpy操作,而不必像您最初建议的那样来回复制卷?