Ich habe 3 480 Zeilen x 640 Spaltenbilder. Jedes Pixel enthält einen Intensitätswert.Kombinieren Matlab Zelle Elemente zu einem einzigen Vektor
I lese sie in Matlab mit diesem:
object_intensities = cell(1,6);
for pat=1:3
file1 = sprintf('image%d.pgm',pat-1);
dummy = double(imread(file1));
object_intensities{pat} = dummy;
end
Nun zu pat = 1 bis 3, object_intensities eine Zellenanordnung derart ist, dass jede Zelle Element object_intensities {pat} jedes Bild in einer 480x640-Matrix Array enthält .
Nun, was ich brauche, ist eine einzige Struktur, die 480 Zeilen x 640 Säule so ist, dass jede Zelle Element die drei Intensitäten jedes Bildpixel in einem einzigen Vektor wie folgt enthält:
structure{row 1, column 1} = [image1_intensity @ row1 column1 image2_intensity @ row1 column1 image3_intensity @ row1 column1]
structure{row 1, column2} = [image1_intensity @ row1 column2 image2_intensity @ row1 column2 image3_intensity @ row1 column2]
.
.
structure{row 480, column 640} = [image1_intensity @ row480 column640 image2_intensity @ row480 column640 image3_intensity @ row480 column640]
Jede Art und Weise zu tun, dies ohne Schleifen, sondern durch Vektorisierung?
Sind die drei Bilder Intensitäten für RGB-Kanäle? Oder hält jede Zelle von "object_intenities" tatsächlich eine * 480 * by-* 640 * by * 3 * Matrix? Wenn es tatsächlich ein Single-Channel-Bild enthält (was ich bezweifle, dass du 'imread' verwendest, musst du es vielleicht zuerst in Graustufen konvertieren), dann versuche 'cat (3, object_intensities {:}) 'und du wirst es bekommen eine nette * 480 * -By- * 640 * -By * 3 * -Matrix. Aber dann denke ich, dass du das einfach getan haben könntest, wenn du die Bilder liest, im Grunde, warum willst du die Datenstruktur, die du sagst, die du willst? Es wird sehr schwierig sein, mit einer normalen Matrix zu arbeiten. – Dan
Die Bilder sind bereits Graustufen. Ich möchte es in dieser Datenstruktur beschrieben, da ich die Intensitätsabfolge jedes Bildpixels benötige. – user1431515
Eine 3D-Matrix wird immer noch besser sein, mit Zellenarrays ist es viel schwieriger zu arbeiten. Außerdem bin ich mir ziemlich sicher, dass "imread" Ihr Bild standardmäßig RGB macht, unabhängig davon, ob es Graustufen ist oder nicht. Sie müssen die Konvertierung dennoch durchführen. – Dan