5

我知道有一个函数scipy.ndimage.zoom可以调整\重新采样 3D 体积,但这是针对 numpy.array 的,而且速度非常慢。因此,我使用ResampleImageFilterfromSimpleITK代替。我认为基于 C++ simpleitk 的工作要快得多。

但是使用 simpleitk 重新采样存在一个小缺陷。ResampleImageFilter适用于 SimpleITK.Image,但不适用于 numpy.array,因此进行进一步操作非常不方便。有没有其他方法可以重新采样 3D 体积?

编辑
为什么我有这个担忧是因为我想利用 SimpleITK 重采样的快速速度,同时我想保持我的代码干净。例如,我需要对一个体积做二进制阈值,然后重新采样整个事情。所以这是我的解决方案,

binthresh = sitk.BinaryThresholdImageFilter()
... #setting up params for the binthresh
img = binarythresh.Execute(img)
resample = sitk.ResampleImageFilter()
... #setting up params for the resample
img = resample.Execute(img)
arr = sitk.GetArrayFromImage(img)
... # numpy operations on the arr

但实际上,使用 numpy 做二进制阈值的逻辑索引更简单,这将使我的代码更紧凑。
所以总而言之,我想充分利用 SimpleITK 重采样,但是 numpy 可以更好地完成一些操作,然后我的代码与 SimpleITK 和 numpy 有点交织在一起。我不认为这是一件好事。

4

0 回答 0