Frage

Zunächst einmal bin ich mir nicht einmal sicher, ob dies eine Matrix genannt wird, und ich bin neu in MATLAB.Aber nehmen wir an, ich habe eine "Matrix", die so aussieht:

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

wo n könnten zum Beispiel die Frames in einem Video sein und die ersten 2 ':' sind die Zeilen- und Spaltendaten für das 2D-Bild (den Rahmen).

Wenn ich nur den ersten wollte ':' von Daten (die Zeile?kolumne?element?), wie würde ich nur darauf zugreifen?

Intuitiv denke ich so etwas wie:

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

aber das scheint nicht zu funktionieren.

PS.Ich weiß, dass dies nicht wirklich Zeilen sind, die Terminologie für all dies würde auch sehr geschätzt werden

Es hat vielleicht auch nichts damit zu tun, aber ich verwende auch eine MATLAB-GUI, und die "Matrix" wird so gespeichert:

handles.mat(:,:,n)

Ich glaube nicht, dass es etwas mit meiner eigentlichen Frage zu tun hat, aber es könnte so sein, dass ich es hier stellen werde

-Danke!

War es hilfreich?

Lösung

Einen Punkt möchte ich vor dem Start ansprechen:MATLAB beginnt mit der Indizierung um 1, und nicht 0.Dies ist ein häufiger Fehler, den die meisten Leute mit einem C / Java / Python-Programmierhintergrund machen, wenn sie in MATLAB einsteigen.

Auch dadurch:

row1 = mat(:,1,1);

Dies greift auf alle Zeilen für die erste Spalte und den ersten Frame Ihres Videos zu.Seien Sie sich bewusst, dass dies zu einer M x 1 vektor, wo M gibt die Anzahl der Zeilen für einen Frame in Ihrem Video an.

Auch:

row2 = mat(1,:,1);

Dies greift auf alle Spalten in der ersten Zeile des ersten Frames zu.Seien Sie sich bewusst, dass dies zu einer 1 x N vektor, wo N gibt die Anzahl der Spalten für einen Frame in Ihrem Video an.

Auch:

row3 = mat(1,1,:);

Dies greift auf alle Pixel in der gesamte videosequenz in Zeile 1 und Spalte 1.Sie können sich dies als einen zeitlichen Schnitt in der oberen linken Ecke Ihrer Videosequenz vorstellen.Seien Sie sich bewusst, dass dies zu einer 1 x 1 x T vektor, wo T ist die Anzahl der Frames in Ihrem Video.Wenn Sie nur auf eine einzelne Pixelposition in Ihrem Video zugreifen, sind die ersten beiden Dimensionen überflüssig, und Sie können daher die verwenden squeeze befehl zum Verkleinern aller Singleton-Dimensionen, so dass es zu einem vereinfacht wird T x 1 Vektor.Mit anderen Worten, mach das:

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

FWIW, du hast die richtige Terminologie.Zeilen und Spalten werden ständig in der Bild- / Videoverarbeitung verwendet.Was die "Matrix" betrifft, können Sie dies als a bezeichnen zeitlicher Ablauf oder ein frame-Sequenz in Bezug auf die Videoverarbeitung.Es ist sicherlich eine 3D-Matrix, aber die Leute in diesem Bereich bezeichnen sie als eine der beiden, da es sich in Wirklichkeit um eine Folge von übereinander gestapelten Bildern / Frames handelt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top