我有大脑的 3D 图像(我们称之为 flash),当前尺寸为 263 x 256 x 185。我想将其大小调整为另一个图像的大小(称之为 Whole_brain_bravo); 256 x 256 x 176,并且(希望)使用 lanczos 插值来重新采样 (Image.ANTIALIAS)。我的(失败的)尝试:
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
:
"""
zoom : float or sequence, optional
The zoom factor along the axes. If a float, `zoom` is the same for each
axis. If a sequence, `zoom` should contain one value for each axis.
"""
两幅图像之间的比例因子是多少?它在所有轴上是否恒定(即,您是否等距缩放)?在这种情况下zoom
应该是单个浮点值。否则它应该是一系列浮点数,每个轴一个。
例如,如果物理尺寸whole
and flash
可以假设是相等的,那么你可以这样做:
dsfactor = [w/float(f) for w,f in zip(whole.shape, flash.shape)]
downed = nd.interpolation.zoom(flash, zoom=dsfactor)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)