Auras-tu des images couleur à traiter aussi ? (Celle en PJ bien qu'étant en couleurs a ses trois canaux R,G,B de la même intensité, donc en niveaux de gris au final...) Car si tel est le cas, il y aura une nouvelle composante à prendre en compte.
Dans ton code, tu n'as pas compris l'utilité de la fonction ind2sub : elle travaille sur des indices. splz contient les intensités des pixel de l'image, en aucune façon ses indices ou un mélange des deux.
Étant en niveaux de gris ici, on ne va prendre que le premier canal rouge splz(:,:,1) de taille 240 x 240. En indices linéaires, on ira donc de 1 à 240*240.
1 2
| indices_lineaires = 1:240*240;
[X,Y] = ind2sub([240 240], indices_lineaires); |
Et on prendra les valeurs correspondantes avec :
Z = splz(indices_lineaires);
Autre problème : l'écriture de ton fichier que tu n'effectues pas dans le bon ordre. Ceci fprintf(V,'(%.0f,%.0f,%.0f)\t',X,Y,Z); va écrire toutes les valeurs de X, puis toutes les valeurs de Y, et enfin les valeurs de Z.
Exemple :
1 2 3 4 5 6 7 8 9
| X = [1 4];
Y = [2 5];
Z = [3 6];
fprintf('(%.0f,%.0f,%.0f)\t',X,Y,Z);
% Va écrire :
(1,4,2) (5,3,6)
% au lieu de
(1,2,3) (4,5,6) |
On va donc fournir un unique tableau de taille 3 x (240*240) :
fprintf(V, '(%.0f,%.0f,%.0f)\t', [X;Y;Z]);
qui sera parcouru dans l'ordre suivant :
1 2 3
| X 1 4 7 ...
Y 2 5 8 ...
Z 3 6 9 ... |
Partager