LabVIEWForum.de - 16 bit Grauwertbild aus Binärdatei lesen

LabVIEWForum.de

Normale Version: 16 bit Grauwertbild aus Binärdatei lesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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.

[attachment=45516]
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
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.
[attachment=45528]

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
Referenz-URLs