|
robertradar |
Forum-Fortgeschrittener
|
|
Beiträge: 57
|
|
|
|
Anmeldedatum: 17.10.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.12.2018, 18:06
Titel: Was genau macht imwrite?
|
|
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.
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 28.12.2018, 16:26
Titel: Re: Was genau macht imwrite?
|
|
|
|
|
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
|
|
|
robertradar |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 57
|
|
|
|
Anmeldedatum: 17.10.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.12.2018, 18:02
Titel:
|
|
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.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|