Domanda

Ora Prima di tutto, non sono nemmeno sicuro che questa sia chiamata matrice e sono nuovo a Matlab.Ma diciamo che ho una "matrice" che assomiglia a questo:

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

DOVE n potrebbe essere i fotogrammi in un video, ad esempio, e i primi 2 ':' sono i dati di riga e colonna per l'immagine 2D (il telaio).

Se volevo solo il primo ':' dei dati (la riga? colonna? Elemento?), Come avrei accesso solo a questo?

intuitivamente, penso a qualcosa del genere:

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

Ma questo non sembra funzionare.

P.S.So che questi non sono realmente righe, la terminologia per tutto ciò sarebbe anche molto apprezzato

Inoltre, potrebbe non avere nulla a che fare con questo, ma sto usando anche una GUI Matlab e la "Matrice" è memorizzata come questa:

handles.mat(:,:,n)
.

Non penso che abbia qualcosa a che fare con la mia domanda reale, ma potrebbe quindi metterlo qui

-thanks!

È stato utile?

Soluzione

Un punto che vorrei fare prima di iniziare: Matlab inizia ad indicizzare a 1 e non 0 . Questo è un errore comune che la maggior parte delle persone che hanno uno sfondo di programmazione C / Java / Python si avvicina a Matlab.

Inoltre, facendo:

row1 = mat(:,1,1);
.

Questo accede a tutte le righe per la prima colonna e il primo fotogramma del tuo video. Tieni presente che questo produrrà un vettore M x 1, in cui M denota il numero di righe per una cornice nel tuo video.

ANCHE:

row2 = mat(1,:,1);
.

Questo accede a tutte le colonne nella prima riga del primo fotogramma. Tieni presente che questo produrrà un vettore 1 x N, in cui N denota il numero di colonne per una cornice nel tuo video.

ANCHE:

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

Questo accede a tutti i pixel nell'intero Intero Sequenza video alla riga 1 e nella colonna 1. Puoi pensare a questo come una fetta temporale nell'angolo in alto a sinistra della sequenza video. Tieni presente che questo produrrà un vettore 1 x 1 x T, in cui T è il numero di fotogrammi nel tuo video. Se si accede a una posizione solo di un singolo pixel nel tuo video, le prime due dimensioni sono superflue e quindi è possibile utilizzare il comando squeeze per ridurre tutte le dimensioni Singleton in modo che sia semplifica di un vettore T x 1. In altre parole, fai questo:

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

fwiw, hai la terminologia giusta. Le righe e le colonne sono utilizzate in elaborazione immagine / video tutto il tempo. Per quanto riguarda la "Matrice", puoi chiamare questa una sequenza temporale o una sequenza di frame in termini di elaborazione video. È certamente una matrice 3D, ma le persone in questo dominio lo indicano come uno dei due come è davvero una sequenza di immagini / fotogrammi impilati uno sopra l'altro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top