私は脳の3D画像を持っています(それをフラッシュと呼ぶ)、現在は263×256×185です。別の画像のサイズにリサイズしたいのですが(whole_brain_bravoと呼んでください) ; 256 x 256 x 176、および(うまくいけば)再サンプリングするためにlanczos補間を使う(Image.ANTIALIAS)。私の(失敗した)試み:3D画像のサイズ変更(およびリサンプリング)
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画像でこのようなことをやったことがありますか?二つの画像間のスケールファクタで何
"""
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.
"""
:scipy.ndimage.interpolate.zoom
のdocstringから
これは本当にありがとうございます。万が一にも再サンプリングする方法も知っていますか? – elefun
これは、 'np.interpolation.zoom'が' flash'から 'downed'を生成するためのものです! 'order ='パラメータを使用してスプライン補間の順番を変更することができます(私はnumpy/scipyでLanczos補間を実装していません)。 –
ああ、私はあなたが意味するものを参照してください。私はLanczosを使うことができると期待していた。しかしそれは大したことではない。そしてyesのlanczosはpythonイメージングライブラリに実装されています。 Image.ANTIALIASは実際にはCで書かれた3-lobe lanczosです(ドキュメントによると) – elefun