La superposition de plusieurs images dans l'espace 3D
Supposons que nous avons une matrice de je de taille 49x49x5, correspondant à 5 images de taille 49x49 empilés le long de la troisième dimension, nous avons donc un total de 5 images. Ces images doivent visualiser la densité d'un gaz dans un espace 3D, on peut donc penser de chaque image en coupe de la salle à différents endroits.
Est-il possible de faire une figure dans MATLAB où tous les 5 images sont montrées comme suspendu dans l'espace 3D ils "viens"?
Voici une image qui nous l'espérons rendre plus clair ce que je suis après:
- Qu'avez-vous utilisé pour générer cette image?
- Google Sketchup 🙂
Vous devez vous connecter pour publier un commentaire.
Considérons l'exemple suivant. Il utilise le faible niveau SURFACE fonction de la parcelle empilées les images:
Je suis en utilisant les images en couleurs indexées (avec un mappage de couleur), mais il peut être facilement modifié pour utiliser des images en niveaux de gris (avec l'échelle de correspondance de couleur).
Maintenant, si vous voulez obtenir de l'espace 3D arrangé comme vous l'avez indiqué dans votre question, il suffit de permuter les Y et Z dimensions (images empilées le long de l'axe de la dimension au lieu de l'axe Z).
En général, pour avoir plus de contrôle sur l'angle de vue, utilisez la les fonctions de manipulation de la caméra.
repeat
-ing la même image 5 fois et de les empiler les uns sur les autres. Vous pouvez bien évidemment lire les différentes images de la même manière, tant qu'ils sont tous de la même taille. Aussi, j'ai été à l'aide de "indexée" des images, mais vous pouvez la modifier pour afficher soit "niveaux de gris" (empilés dans la 3e dim) ou de la "vraie couleur" des images (empilées dans le 4e dim). Voici un exemple pour les images RVB: pastebin.com/T1shKdYFI = cat(4,img1,img2,img3)
. Dans mon exemple, je suis juste à l'aide de l'indice dek
comme le Z-axe de coordonnées. Donc, si vous avez une "élévation" pour chaque image, utiliser à la place (j'.e remplacer le'ZData',Z.*k
partie avec le bon d'altitude). Si vous voulez plus d'aide, il serait préférable de créer une nouvelle question, il n'est pas commode de post réponse dans les commentaires. Juste assurez-vous d'inclure toutes les informations nécessaires ainsi que votre code actuel..La fonction que vous recherchez est la
patch
fonction. Par exemple:Spécifie un triangle (trois points), et les coordonnées des sommets sont
(1,2,1)
,(1,6,1)
, et(6,2,-1)
. Si vous souhaitez ajouter un quatrième point pour chaque vecteur il serait un rectangle, avec le nouveau sommet à la nouvelle x,y,z coordonnées.Pour répondre à votre question posée directement, vous pouvez tracer un certain nombre de rectangles pour chaque variable, en utilisant tout simplement un tableau multidimensionnel pour
x
,y
, etz
, où chaque colonne indique un autre polygone. Dans la pratique, cela fonctionne comme suit:Qui donne:
Il y a des options que vous pouvez utiliser pour ajouter de la couleur à la polygones, consultez la documentation.
Si je vous comprends bien, vous pouvez utiliser le slice() ou contourslice() fonctions pour ce faire.
Découvrez cet exemple:
http://www.mathworks.com/help/matlab/visualize/techniques-for-visualizing-scalar-volume-data.html