|
|
R G B X Rawbild in Matlab einlesen |
|
therealvash |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 15.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.05.2013, 20:13
Titel: R G B X Rawbild in Matlab einlesen
|
|
|
|
|
Guten Abend allerseits!
Folgendes Problem beschäftigt mich seit einiger Zeit und da ich bisher keinen Lösungsweg gefunden habe setzte ich jetzt den Publikumsjoker ein.
Gegeben ist eine 640x480 Pixel Bilddatei mit folgender Datenstruktur:
R G B X R G B X R G B X........
Jede Information wird als 1 Byte gespeichert, X ist eine überflüssige 0, die leider immer dabei ist und das Bild ist ->Zeilenweise-< gespeichert.
Ingesamt ist die Datei also 640x480x4 Byte groß. Das geschickte Einlesen dieser habe ich inzwischen mit folgendem Befehl gelöst:
Wem dies nichts sagt: Matlab ließt drei mal als uint8 ein (also 3 Byte) und überspringt danach ein Byte. Somit ist der X Wert schonmal raus und ich habe eine Variable mit den RGB Werten (921600x1 uint8)
Diesen langen Vector muss ich jetzt umformatieren zu 480x640x3
Als möglicherweise Sinnvolle Methoden habe ich bisher "reshape" und "permute" gefunden, jedoch komme ich da bisher auf keinen grünen Zweig.
Natürlich könnte man das Problem relativ einfach mit zwei bis drei Schleifen lösen, jedoch schätzte ich, dass diese Lösung sehr unperformant wäre und später ist mir eine schnelle Verarbeitung wichtig.
Als kleines Beispiel
Wie komme ich von (3 Breite x 2 Höhe x 3 Byte/Pixel)
zu
Vielen Dank schonmal!
|
|
|
|
|
Winkow |
Moderator
|
|
Beiträge: 3.842
|
|
|
|
Anmeldedatum: 04.11.11
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: R2014a 2015a
|
|
|
|
|
|
Verfasst am: 27.05.2013, 22:04
Titel:
|
|
mir fällt da auf die schnelle nur ne for schleife ein. aber es sind ja nicht viele werte
die zeit die ich bräuchte um mir ne vektor lösung zu überlegen bekomme ich durch rechenzeit ersparnis nie wieder rein ^^
|
|
|
therealvash |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 15.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.05.2013, 23:01
Titel:
|
|
Hallo! Das Ganze muss später 30/Sekunde ausgeführt werden, weswegen ich vorsichtshalber auf Schleifen verzichten wollte, aber danke schonmal für die Mühe
|
|
|
Winkow |
Moderator
|
|
Beiträge: 3.842
|
|
|
|
Anmeldedatum: 04.11.11
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: R2014a 2015a
|
|
|
|
|
|
Verfasst am: 28.05.2013, 08:10
Titel:
|
|
ist jetzt nicht genau das was du wolltest aber nah drann wenn man den weiteren code einfach and die vertauschen indices anpasst
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 28.05.2013, 10:40
Titel: Re: R G B X Rawbild in Matlab einlesen
|
|
Hallo therealvash,
Wenn eine Umsortierung möglich ist, kann sie auch mit einem RESHAPE(PERMUTE(RESHAPE(M))) durchgeführt werden. Den dazugehörigen Beweis habe ich gerade vergessen. In Deinem Fall kann äußere RESHAPE wegfallen.
Wenn man gar nicht drauf kommt, kann man sich zur Not durch die lediglich 36 möglichen Fälle von Hand durcharbeiten.
Möglicherweise ist es schneller, die ganze Datei einzulesen und jedes 4. Element rauszuwerfen:
Ein TIC/TOC wird zeigen, welche Variante effizienter ist.
Gruß, Jan
Zuletzt bearbeitet von Jan S am 28.05.2013, 11:46, insgesamt einmal bearbeitet
|
|
|
therealvash |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 15.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.05.2013, 11:25
Titel:
|
|
Elapsed time is 0.032973 seconds.
Elapsed time is 0.011877 seconds.
Faktor 3 schneller, danke
Funktioniert auch und braucht etwa 2ms. Vielen Dank für die schnelle Hilfe!
|
|
|
|
|
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 - 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.
|
|