我正在处理Python中的5个图像,这些图像已导入为numpy数组,并具有以下形状:
for i in range(len(S_images)):
print(S_images[i].shape)
(1, 1524, 5500)
(1, 1524, 5499)
(1, 1524, 5500)
(1, 1524, 5499)
(1, 1525, 5499)
我的目标是使用S_stack = np.stack(S_images)
将它们堆叠在一起,但当然,由于形状的差异,我得到了错误:
ValueError: all input arrays must have the same shape
我想要的是将数组重采样为常见形状(例如,(1, 1524, 5500)
),同时选择一种重采样方法,如最近邻。
在找以前的论坛问答时,我看到过使用scipy.ndimage.zoom
,但这通常是用来升级或降级的常规数据。在我的例子中,我只需要匹配的形状来允许堆栈。有什么建议吗?
例如,是否可以选择一个主数组并将其用作参考,其中所有其他数组都必须与其形状匹配,如果不是,将应用使用NN的重采样方法?
发布于 2020-02-06 12:05:32
我想出了一个解决方案,但我想知道从技术/科学的角度看它是否正确。这是解决我问题的好方法吗?实际上,它是在做我想做的事情...
for i in range(len(S_images)):
if S_images[i].shape[1] !=1524:
S_images[i] = scipy.ndimage.zoom(S_images[i], (1, 1524/1525, 1),order=0, mode='nearest')
for i in range(len(S_images)):
if S_images[i].shape[2] !=5499:
S_images[i] = scipy.ndimage.zoom(S_images[i], (1, 1, 5499/5500 ),order=0, mode='nearest')
for i in range(len(S_images)):
print(S_images[i].shape)
(1, 1524, 5499)
(1, 1524, 5499)
(1, 1524, 5499)
(1, 1524, 5499)
(1, 1524, 5499)
https://stackoverflow.com/questions/60094127
复制相似问题