2016-07-05 21 views
2

Ich habe 3 dicom Stapel der Größe 512x512x133, 512x512x155 and 512x512x277. Ich möchte den ganzen Stapel resample, um die Größen 512x512x277, 512x512x277 and 512x512x277 zu machen. Wie geht das?Resample alle Bilder in der Datenbank auf die gleiche Voxelgröße

Ich weiß, ich kann Resampling mit Schichtdicke und Pixelabstand tun. Aber das würde nicht die gleiche Anzahl von Scheiben in jedem Fall sicherstellen.

+0

Bitte stellen Sie keine doppelten Fragen. Wenn deine Frage keine Antworten erhält, verbessere die Frage oder gib ihr einfach ein bisschen mehr Zeit. – beaker

+0

Eigentlich, was passiert ist, habe ich die Frage nachts gestellt. Aber wegen einiger Störungen (könnte sein) zeigte es nicht am Morgen. Also habe ich es wieder gepostet. :(Entschuldigung! –

Antwort

0

Sie scipy.ndimage.interpolate.zoom verwenden können, für jede Achse, wie dies die Anordnung der Zoom-Faktoren festgelegt wird:

# example for first image 
zoomArray = desiredshape.astype(float)/original.shape 
zoomed = scipy.ndimage.interpolate.zoom(original, zoomArray) 

UPDATE:

Wenn das zu langsam ist, könnte man irgendwie versuchen, einzelne Bilder von dem erstellen vertikale Slices von Ihrem "Image Cube", bearbeiten Sie sie mit einigen High-Speed-Bild-Bibliothek (einige Leute lieben ImageMagick, gibt es auch PIL, opencv, etc.), und stapeln Sie sie wieder zusammen. Auf diese Weise würden Sie 512 Bilder der Größe 512x133 aufnehmen und auf 512x277 skalieren und dann wieder auf 512x512x277 stapeln, was Ihrer endgültigen Wunschgröße entspricht. Außerdem würde diese Trennung eine Parallelisierung ermöglichen. Man denke nur daran: Das würde nur funktionieren, wenn die transversale Achse (die, entlang der man die 2D-Bilder schneidet) nicht in der Größe verändert wird!

+0

sitedshape würde enthalten (512.512.277)? –

+0

Es ist zu langsam!:/ –

+0

Ich habe die Antwort aktualisiert, aber ich frage mich, ob es die Geschwindigkeit viel verbessern würde. – heltonbiker