Question

Tout d’abord, je ne suis même pas sûr que cela s’appelle une matrice, et je suis nouveau sur MATLAB.Mais disons que j'ai une "matrice" qui ressemble à ceci :

for n=1:10
...
someImage = mat(:,:,n) %The "matrix"
...
end

n il peut s'agir des images d'une vidéo, par exemple, et des 2 premières ':' sont les données de ligne et de colonne pour l'image 2D (le cadre).

Si je voulais seulement le premier ':' de données (la ligne ?colonne?élément ?), comment puis-je accéder uniquement à cela ?

Intuitivement, je pense à quelque chose comme :

row1 = mat(:,0,0)
row2 = mat(0,:,0)
row3 = mat(0,0,:)

mais cela ne semble pas fonctionner.

P.S.Je sais que ce ne sont pas vraiment des lignes, la terminologie pour tout cela serait également grandement appréciée

De plus, cela n'a peut-être rien à voir avec cela, mais j'utilise également une interface graphique MATLAB et la "matrice" est stockée comme ceci :

handles.mat(:,:,n)

Je ne pense pas que cela ait quelque chose à voir avec ma vraie question, mais c'est peut-être le cas, je vais donc la mettre ici

-Merci!

Était-ce utile?

La solution

Un point que je voudrais souligner avant de commencer:MATLAB commence l'indexation à 1, et pas 0.Il s'agit d'une erreur courante que commettent la plupart des personnes ayant une formation en programmation C/Java/Python lorsqu'elles se lancent dans MATLAB.

Aussi, en faisant :

row1 = mat(:,1,1);

Cela accède à toutes les lignes de la première colonne et de la première image de votre vidéo.Sachez que cela produira un M x 1 vecteur, où M désigne le nombre de lignes pour une image dans votre vidéo.

Aussi:

row2 = mat(1,:,1);

Cela accède à toutes les colonnes de la première ligne du premier cadre.Sachez que cela produira un 1 x N vecteur, où N désigne le nombre de colonnes pour une image dans votre vidéo.

Aussi:

row3 = mat(1,1,:);

Cela accède à tous les pixels du entier séquence vidéo à la ligne 1 et à la colonne 1.Vous pouvez considérer cela comme une tranche temporelle située dans le coin supérieur gauche de votre séquence vidéo.Sachez que cela produira un 1 x 1 x T vecteur, où T est le nombre d'images de votre vidéo.Si vous accédez à un seul emplacement de pixel dans votre vidéo, les deux premières dimensions sont superflues et vous pouvez donc utiliser l'option squeeze commande pour réduire toutes les dimensions du singleton afin de les simplifier en un T x 1 vecteur.En d'autres termes, faites ceci :

row3 = squeeze(mat(1,1,:));

FWIW, vous avez la bonne terminologie.Les lignes et les colonnes sont utilisées en permanence dans le traitement des images/vidéos.Quant à la « matrice », vous pouvez appeler cela une séquence temporelle ou un séquence d'images en termes de traitement vidéo.Il s'agit certainement d'une matrice 3D, mais les gens dans ce domaine la désignent comme l'une des deux car il s'agit en réalité d'une séquence d'images/images empilées les unes sur les autres.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top