2012-05-25 4 views
4

J'ai k cubes de (n,n,n) valeurs d'intensité et je voudrais les tracer. Je les considère comme des tenseurs de diffusion dans l'IRM de diffusion et j'aimerais les visualiser (peut-être comme des ellipsoïdes), puis essayer de «aligner» d'une manière ou d'une autre. À l'heure actuelle, je trace simplement pour chaque cube son n "tranche" (n,n).Tracer un cube de données d'intensité 3D

Y a-t-il un module python pour cette tâche?

+0

On ne sait pas où les informations supplémentaires pour les « ellipsoïdes » viendrait de. Pour chaque tuple '(x, y, z)' vous avez vraisemblablement une valeur scalaire 'v' qui lui est associée. Pour placer un ellipsoïde à ce point, il faudrait quatre points de données de plus, deux valeurs angulaires et la longueur des axes majeur et mineur. – Hooked

+0

Je pense que vos "cubes" sont les trois valeurs propres du tenseur de diffusion correspondant. Aimes-tu dessiner un ellipsoïde avec ses longueurs de demi-axes correspondant à ces trois valeurs propres? Par quel critère aimeriez-vous aligner ces ellipsoïdes? –

+0

Chaque cube représente une sorte de voxel de tissu, donc pour une comparaison correcte entre eux, je dois les aligner. Pour chaque cube, je pense que je devrais calculer son tenseur de diffusion et le faire tourner par rapport aux axes principaux. –

Répondre

5

Vous pouvez utiliser mayavi2 pour cela. Comme je n'ai pas une représentation de vos données, j'ai donné un exemple de travail minimal avec des sphères au hasard sur une grille ci-dessous:

import numpy 
import mayavi.mlab as mlab 

# Create some random data 
N = 20 
x, y, z = numpy.mgrid[-5:5:20j, -5:5:20j, -5:5:20j] 
val = numpy.random.random(z.shape) 

# Plot and show in mayavi2 
pts = mlab.points3d(x, y, z, val, scale_factor=.5,transparent=True) 
mlab.show() 

enter image description here

+1

Merci, ça marche! (avec enthought.mayavi, pas simplement mayavi) –

+1

La différence entre 'enthought.mayavi' et' mayavi' est simplement comment vous avez installé la bibliothèque 'mayavi' en premier lieu. Le premier étant issu de la distribution Enthought. – Hooked