WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

große Bilddaten in Matlab verwalten/nutzen/speichern

 

baronsocke
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 21.05.14
Wohnort: Köln
Version: ---
     Beitrag Verfasst am: 03.07.2014, 15:25     Titel: große Bilddaten in Matlab verwalten/nutzen/speichern
  Antworten mit Zitat      
Ich arbeite an einem 32bit Windows Rechner.
In Matlab muss ich RAW-Bilder (jeweils eine Größe von 50 MB) auswerten.
Nach meinen Testaufnahmen habe ich ca. 400 RAW Bilder á 50 MB, die ich erstmal ganz normal auf der Festplatte speichere.
Nacheinander muss ich die Bilder auswerten, jedoch brauche ich immer 19 Bilder auf einmal. Diese 19 Bilder speichere ich in einem STRUCT ab.

Hier stoße ich an das "Out of memory" Problem. Der Rechner gibt irgendwann eine Fehlermeldung mit "out of memory" aus. Der Befehl "clear" reicht nicht, um genug Speiche freizugeben, ich muss Matlab neu starten.

13 Bilder kann ich auf einmal verarbeiten, bei 19 meckert er immer.

Wie kann ich das Problem lösen?
Besteht die Möglichkeit nur Pfade abzuspeichern?


Code:
% Struct um Bildparameter abzuspeichern
bilder = struct('abzug',[],'lambda',[],'winkel',[]);
% über eine for-schleife lade ich nacheinander Raw Bilder in das struct
bilder(y).abzug      = ('Raw-Bild');

% ich erzeuge mir ein zweites struct, um die Raw-Bilder aufzuteilen in RGGB
% Pixel
rgbSep = struct( 'r',[], 'gr',[], 'gb',[], 'b',[], 'lambda',[], 'winkel',[] );

% über eine Schleife extrahiere ich die einzelnen RGGB Kanäle. In der Schleife lösche ich danach den Inhalt des Structs "bilder"

for k=1:length(bilder)
    rgbSep(k).r    = extractChannel( bilder(k).abzug, 'r' );
    rgbSep(k).gr  = extractChannel( bilder(k).abzug, 'gr' );
    rgbSep(k).gb  = extractChannel( bilder(k).abzug, 'gb' );
    rgbSep(k).b   = extractChannel( bilder(k).abzug, 'b' );
   
    bilder(k).abzug = [];% Bild auf Grund von Speicherproblemen wieder löschen
    rgbSep(k).lambda = bilder(k).lambda;
    rgbSep(k).winkel = bilder(k).winkel;
end;
 


Das struct "rgbSep" enthält dann 19 RAW-Bilder, die jeweils in ein RGGB aufgeteilt wurden.

Mit diesem Struct will ich dann meine Auswertungen durchführen.
Bei 19 Bildern á 50 MB kommt der Rechner jedoch an seine Grenzen.
Was kann ich tun?


Besten Dank und viele Grüße

Yvo

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.07.2014, 10:13     Titel:
  Antworten mit Zitat      
Hallo,

ein paar Möglichkeiten:
- nicht alle Bilder gleichzeitig in den Speicher laden. Meist braucht man ja nicht mehr als zwei gleichzeitig.
- die Bilder in geringerer Auflösung verwenden (resize)
- Datentyp uint8 statt double (falls nicht ohnehin schon)
- auf 64 bit umsteigen und mehr Speicher.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.