INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

16 bit Grauwertbild aus Binärdatei lesen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

23.07.2013, 08:31
Beitrag #1

S.D. Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Jun 2013

12.0.1
2013
EN


Deutschland
16 bit Grauwertbild aus Binärdatei lesen
Hallo miteinander,

meine Problemstellung:
Ich nehme 16 bit Grauwertbilder auf. Diese speichere ich in Binärdateien ab, um die gesamten Daten ohne Verluste (z.B. durch Kompression) zu sichern.
Das speichern der Bilder als Binärdatei klappt soweit auch ganz gut.
Allerdings möchte ich mir nachträglich die Binärdateien wieder als Bild ausgeben lassen. Hier fangen meine Probleme an.
Ich habe es so versucht, dass ich die Binärdatei auslese (VI "Read from Binary File") und den 1D-Array, den ich so erhalte in einen 2D-Array mit der Auflösung meines Bildes umzuwandeln (in diesem Fall 640x480). Wenn ich mir diesen 2D-Array dann aber mittels Intensitätsgraphen ausgeben lassen, kommt ein ziemlich chaotisches Bild bei rum, wie im Anhang zu sehen.

Meine Fragen dazu:
1) Mache ich evtl. bei der Speicherung der Binärdateien etwas falsch? Ich nutze das VI "Write to Binary File", welches als Daten ein Image von IMAQ bekommt. Die Binärdateien bekommen die Endung .bin .
2) Ist es falsch, das Bild mit dem Intensitätsgraphen darstellen zu wollen? Ich bin davon ausgegangen, dass es damit klappen müsste, da ich als x/y-Koordinate meine Pixel (= Einträge des 2D-Arrays) habe und als Intensitätswerte eben den jeweiligen 16 bit Wert.

Beim Auslesen der Binärdatei habe ich drauf geachtet, dass ich auch jeweils dieselbe Byte-Order angebe und habe da auch alles durchprobiert. Auch mit der Angabe der Auflösung habe ich getestet ob ich die Werte von 640 und 480 vertauscht habe.

Zum Anhang: Das Anzeigeelement Daten war nur, um zu schauen, was ich nach dem Auslesen der Binärdatei bekomme. Und der dargestellte Array im Frontpanel zeigt nur einen kleinen Ausschnitt der Daten.

Für Hilfe oder Denkanstöße wäre ich sehr dankbar.

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.07.2013, 08:52 (Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2013 08:57 von jg.)
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: 16 bit Grauwertbild aus Binärdatei lesen
Kannst du bitte auch deine Speicher-Routine zeigen (VI oder zumindest Screenshot)?

Gruß, Jens

EDIT: Ein 640x480 Bild besteht aus 640 Spalten (Columns) und 480 Zeilen (Rows). Blush

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.07.2013, 10:21
Beitrag #3

S.D. Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Jun 2013

12.0.1
2013
EN


Deutschland
RE: 16 bit Grauwertbild aus Binärdatei lesen

Akzeptierte Lösung

Hey,

mein Problem hat sich soeben erledigt.
Mein Fehler lag gar nicht in dem Auslesen der Binärdatei sondern schon in der Erstellung der Binärdatei.
Dadurch, dass ich das IMAQ Image direkt mit dem "WriteToBinaryFile"VI verbunden habe, kamen dort nicht die korrekten Daten an, wodurch die Binärdatei nicht aus reinen Binärzahlen je 16 bit bestand, sondern auch noch Text usw. abgespeichert wurde.
Damit das korrekt übergeben wird, muss man (bzw. habe ich jetzt) noch das VI "ImageToArray" zwischengehängt. Der davon ausgegebene Array wird in die Binärdatei geschrieben.
   

Das Auslesen klappt dann so, wie im Screenshot in meinem ersten Post zu sehen, nur dass die Spalten/Zeilen getauscht werden müssen.

Dennoch vielen Dank für die schnelle Antwort Jens. Und mit den Spalten/Zeilen hattest du wie gesagt Recht, die hatte ich zusätzlich noch vertauscht Blush
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Anzahl der Pixel von Partikeln in einem Grauwertbild bestimmen Peter Schulze 5 14.941 01.08.2010 21:45
Letzter Beitrag: wolfmichael

Gehe zu: