Debutant matlab

Résolu/Fermé
Lolo - 25 sept. 2008 à 12:03
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 - 26 sept. 2008 à 03:23
Bonjour a tous,

Je debute en Matlab.

Dans une boucle for, j'obtiens une succession de valeur (correspondant aux valeurs d'intensité d'une image).

J'aimerais conserver ces valeurs dans un vecteur mais je n'y arrive pas et je conserve à chaque fois la derniere valeur de la boucle.

Quelqu'un pourrait peut etre m'aider?

Merci

5 réponses

Merci beaucoup

ça fait plaisir, je vais pouvoir avancer

a plus
0
Je pense avoir encore besoin d'aide en fait.

J'aimerais tracer la representation 3D d'une image que j'ai mais je ne sais pas si cela est possible...

En gros pour une photo de 1000 sur 1000 pixels, j'aimerais avoir x numero du pixel de colonne, y numero du pixel de ligne et en z l'intensité de chaque pixel.

Par exemple pour le pixel (500,499) j'ai une intensité de 16.

Comment pourais je m'y prendre?
0
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 835
25 sept. 2008 à 12:58
Salut
v=zeros(n,1);
for k=1:n
v(k) = valeur_que_tu_veux;
end
A plus
-1
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 835
25 sept. 2008 à 14:23
De rien !
Si t'as d'autres soucis, t'es le bienvenu ;-)
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 835
26 sept. 2008 à 03:23
Salut

En fait, ça dépend de ce que t'entends par "intensité".
En gros, si t'as une image couleur de 400x200, de profondeur de couleur 24 bits (sample de 3 octets par pixel), qu'on va appeler image.jpg, tu peux faire
A = imread('image.jpg');
T'obtiens un tableau 200x400x3, la dernière dimension du tableau correspondant aux valeurs du Rouge-Vert-Bleu (j'ai pas pris ton exemple de 1000x1000 pour la taille pour que tu vois mieux comment ça se présente, c'est plus clair avec une longueur et une largeur différentes).

Plus précisément :
A(:,:,1) te donne l'intensité du rouge pour chaque pixel
A(:,:,2) te donne l'intensité du vert pour chaque pixel
A(:,:,3) te donne l'intensité du bleu pour chaque pixel

Donc pour tracer l'intensité de chaque couleur, ça te ferait un truc du genre
A = imread('image.jpg');
[pixX pixY]=meshgrid((0:size(A,2)-1),(0:-1:-size(A,1)+1));
%% Tracé de l'intensité du rouge
figure;
surf(pixX,pixY,double(A(:,:,1))); shading interp; colorbar;
title('Intensité du rouge');
%% Tracé de l'intensité du vert
figure;
surf(pixX,pixY,double(A(:,:,2))); shading interp; colorbar;
title('Intensité du vert');
%% Tracé de l'intensité du bleu
figure;
surf(pixX,pixY,double(A(:,:,3))); shading interp; colorbar;
title('Intensité du bleu');
Note que le repérage se fait à partir du coin haut-gauche de l'image, donc faut faire un peu attention quand on trace.

Par contre, en ce qui concerne les profondeurs de couleurs utilisées par défaut par chaque format, je dois dire que j'en sais rien. Du coup, si t'as une image de taille 400x200 et de profondeur de couleur 8 bits, en faisant
A = imread('image.jpg');
T'obtiens une matrice 200x400 et non plus un tableau 200x400x3, donc faudra que t'adaptes tout ça en fonction de ton image.

Bonne nuit ;-)
-1