2017-01-30 1 views
1

J'ai une 3D de coordonnées cérébrales (x, y) et z = tranches. Pour ce volume, j'ai des coordonnées spécifiques (qui reflètent certaines caractéristiques) et je veux mettre en évidence ces coordonnées (par exemple en dessinant avec une couleur spécifique). Je cherché et trouvé un code comme ça:Dessiner sur un volume 3D dans MATLAB

t=image;     % gray scale image 
red=t; 
green=t; 
blue=t; 
for i=1:size(indx,1)  %indx: indexes of the featured coordinates 
red(indx(i,1),indx(i,2))=255; 
green(indx(i,1),indx(i,2))=0; 
blue(indx(i,1),indx(i,2))=0; 
end 
out=cat(3,red,green,blue); 

Le problème est que, ce code fonctionne avec l'image d'échelle de gris. Quand j'ai essayé de le généraliser au volume que je suis quelque chose avec la taille: (x, y, z, 3) par:

for i=1:size(indx,1) 
red(indx(i,1),indx(i,2),indx(i,3))=255; 
green(indx(i,1),indx(i,2),indx(i,3))=0; 
blue(indx(i,1),indx(i,2),indx(i,3))=0; 
end 
out = cat(4, red, green, blue); 

Est-ce la généralisation droite? Si oui, comment montrer les tranches résultantes avec les parties colorées?

Répondre

0

Vous pouvez le faire mais les jeux de données triplent et vous ne gagnez rien. Au lieu de cela je voudrais créer un volume d'étiquettes, telles que:

VolLabels = uint8(VolData); 

VolLabels(indx) = 1; %same notation, linear indices. 'colour1' 
VolLabels(indx2) = 2; %different feature, 'colour2' 

Ensuite, vous pouvez voir les tranches normalement, à savoir imshow (VolLabels (:,:, sliceZ)). Ensuite, en utilisant l'outil imcontrast, vous pouvez définir la (les) caractéristique (s) que vous voulez voir en définissant les limites. Jouer avec les cartes de couleurs aide aussi.

ou extrait des volumes avec une seule fonction par: (IRM)

VolRedLabel = VolLabels == 1; %extracts the 'colour1' label 

Si vous êtes débutant avec Matlab et CT - images vérifier la fonction isosurface(). Il arrête de travailler avec des jeux de données plus volumineux.