Laden von mehreren Bildern in MATLAB
Hier ist der gewünschte workflow:
- Ich laden will 100 Bilder in MATLAB-workspace
- Laufen ein paar meiner Codes auf die Bilder
- Speichern meiner Ausgabe (der zurückgegebenen Ausgabe von meinem code ist ein integer-array) in ein neues array
Ende, ich sollte die Daten in einer Datenstruktur speichern der Ausgabe der code für Bilder 1-100.
Wie würde ich tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wissen, dass der name von dem Verzeichnis, in dem Sie sich befinden, oder wenn Sie die cd auf das Verzeichnis, dann verwenden dir, um die Liste der Namen des Bildes.
Nun ist es einfach eine for-Schleife zum laden der Bilder. Speichern Sie die Bilder in ein cell-array. Zum Beispiel...
Beachten Sie, dass diese 100 Bilder nehmen zu viel Speicher. Zum Beispiel, eine einzelne 1Kx1K Bild 3 Megabyte zu speichern, wenn es uint8 RGB-Werte. Dies kann nicht scheinen, wie eine riesige Menge.
Aber dann 100 dieser Bilder benötigen 300 MB RAM. Das eigentliche Problem kommt, wenn Sie Ihre Operationen auf diesen Bildern schalten Sie Sie in Doppel -, dann werden Sie jetzt bis 2.4 Gigabyte Speicher. Das wird sich schnell Essen, bis die RAM-Größe, die Sie haben, vor allem, wenn Sie nicht mit einem 64-bit-version von MATLAB.
Unter der Annahme, dass Ihre Bilder benannt sind, in einer sequentiellen Weise, Sie könnten dies tun:
Cell-array
RESULT
dann enthält die Ausgabe für jedes Bild.Sich bewusst sein, dass je nach Größe Ihrer Bilder, prefetching die Bilder machen könnte, Sie laufen out of memory.
Wie viele gesagt haben, das kann schon ziemlich groß. Gibt es einen Grund, Sie brauchen ALLE diese im Speicher, wenn Sie fertig sind? Schreiben Sie die einzelnen Ergebnisse als Dateien, wenn Sie fertig sind mit Ihnen, so dass Sie nie mehr als die Eingabe und Ausgabe von Bildern im Speicher zu einem bestimmten Zeitpunkt?
IMWRITE wäre gut, um Sie aus der Erinnerung, wenn Sie fertig sind.