Ich habe 3D-Bild eines Gehirns (nennen wir es Flash) und es ist derzeit 263 x 256 x 185. Ich möchte es auf die Größe eines anderen Bildes ändern (nennen Sie es whole_brain_bravo) ; 256 x 256 x 176, und (hoffentlich) eine Lanczos-Interpolation zum Resamplen verwenden (Image.ANTIALIAS). Mein (fehlgeschlagener) Versuch:Größe eines 3D-Bildes (und Resampling)
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
Haben Sie jemals so etwas auf einem 3D-Bild gemacht?
Das ist eigentlich gut, danke. Würdest du auch wissen, wie man von jeder Chance zurückgestuft wird? – elefun
Das ist es, was "np.interpolation.zoom" dazu bringt, '' flash'' zu verlieren! Sie können die Reihenfolge der Spline-Interpolation über den Parameter 'order =' ändern (mir ist keine Implementierung der Lanczos-Interpolation in numpy/scipy bekannt). –
Ah, ich verstehe was du meinst. Ich hatte gehofft, ich könnte Lanczos benutzen. Es ist jedoch nicht so eine große Sache. Und ja, lanczos ist in der Python-Imaging-Bibliothek implementiert; Image.ANTIALIAS ist eigentlich ein 3-Lappen Lanczos in C geschrieben (nach der Dokumentation) – elefun