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

Was genau macht imwrite?

 

robertradar
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 17.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2018, 19:06     Titel: Was genau macht imwrite?
  Antworten mit Zitat      
Hallo,

ich beschäftige mich erst seit kurzem mit Grafikformaten wie jpeg oder png.

Angenommen, ich habe eine m x n x 3 große Matrix A, die nun ein png werden soll. Dann vermute ich, dass für jedes i,j,k gilt:
I(i,j,k)=uint8(255*A(i,j,k)).
Hierbei sind I das png-File, das mit imwrite(A) erzeugt wird, und uint8 die Verwandlung in eine 8 Bit große uint Zahl, also
uint8(x)=0 für x<=0
uint8(x)=round(x) für x<=255
uint8(x)=255 sonst.

Ist das so weit korrekt?
Ist es daher zweckmäßig, die einzelnen Layer von A derart zu skalieren, dass deren Inhalt vollständig auf [0,1] abgebildet wird? Im Übrigen geht es mir nicht um Bilddarstellungen, sondern um die Auswertung "abstrakter Bilder" mit CNNs.
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.12.2018, 17:26     Titel: Re: Was genau macht imwrite?
  Antworten mit Zitat      
Hallo robertradar,

Das ist so ungefähr richtig.
"Hierbei sind I das png-File" kann man eigentlich nicht wirklich bestätigen, weil ein UINT8-Array kein PNG-File "ist".

Du kannst Bilder entweder als UINT8 Array mit den Werten 0-255 speichern, oder als DOUBLE mit den Werten 0-1. Beides ist equivalent und zum Teil eine Frage des Geschmacks. Es ist allerdings hilfreich konsequent bei einer Darstellung zu bleiben, weil sonst oft Fehler passieren. Die Befehle im2double und im2uint8 helfen bei der Konversion, weil sie auch schon berücksichtigen, wenn die Inputs bereits im gewünschten Format vorliegen.

Zitat:
Ist es daher zweckmäßig, die einzelnen Layer von A derart zu skalieren, dass deren Inhalt vollständig auf [0,1] abgebildet wird?

Das kommt ganz darauf an, was Du mit den Bildern tun möchtest. Wenn Du "abstrakt Bilder" (was immer das auch ist) mit "CNNs" (was immer das auch ist) auswerten möchtest, gibt es keinen Grund die Daten überhaupt als PNG abzuspeichern. Dann wären Binärfiles doch viel einfacher, oder? Bild-Formate sind nunmal für konkrete Bilder gedacht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
robertradar
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 17.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.12.2018, 19:02     Titel:
  Antworten mit Zitat      
Hallo,

ja gut, mit I meinte ich dann die Matrix, die man beim Import des png's erhält. Letztendlich sind doch alle Bilder nur dreidimensionale Matrizen.

Aber gut, das bestätigt mich jetzt. Gibt man imwrite nur 3D Matrix und Pfad des zu speichernden Files, dann wird automatisch in uint8 konvertiert.

CNN=Convolutional Neural Network. Die meisten Programme in diesem Bereich verlangen die Daten als png oder jpg, deswegen speichere ich sie auch so ab.
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 - 2024 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.