我有一个大脑的三维图像(我们称之为flash),现在是263x256x185。我想把它的大小调整为另一个图像的大小(称之为整个大脑);256 x 256 x 176,并且(希望)使用lanczos插值重新采样(image.antialas)。我(失败)的尝试:
from scipy import ndimage as nd
import nibabel as nib
import numpy as np
a = nib.load('flash.hdr') # nib is what I use to load the images
b = nib.load('whole_brain_bravo.hdr')
flash = a.get_data() # Access data as array (in this case memmap)
whole = b.get_data()
downed = nd.interpolation.zoom(flash, zoom=b.shape) # This obviously doesn't work
你们在3D图像上做过这种事吗?
从
scipy.ndimage.interpolate.zoom
的docstring:两幅图像之间的比例因子是多少?它是否在所有轴上都是恒定的(即,您是否按等距缩放)?在这种情况下,
zoom
应该是单个浮点值。否则它应该是一个浮动序列,每个轴一个。例如,如果
whole
和flash
的物理维度可以假定为等于,则可以执行如下操作:根据文档,参数
zoom
是“沿轴的缩放因子”。这有点模糊,但听起来他们是指一个比例因子,而不是期望的维度。试试这个:
不确定如何选择过滤器-文档只提到不同阶次的样条插值。
相关问题 更多 >
编程相关推荐