2D Array als Bilddatei oder Binärdatei speichern - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO) +---- Thema: 2D Array als Bilddatei oder Binärdatei speichern (/Thread-2D-Array-als-Bilddatei-oder-Binaerdatei-speichern) |
2D Array als Bilddatei oder Binärdatei speichern - rerler - 03.08.2010 13:57 Guten Tag zusammen! Ich habe schon einige Zeit nicht mehr mit LV gearbeitet, und nun habe ich bei einer aktuellen Aufgabenstellung meiner Uni einige Probleme. Ich umreiße die prinzipielle Aufgabe kurz: In einer riesigen (200mb) Raw-Datei liegen nach einer Messung Intensitätswerte 3-dimensional vor (512~320~320 für z~x~y-Achsen). Mit ImageJ wurden aus diesem "Bildstack" (32bit-real big-endian) 320 einzelne Dateien (512~320) exportiert als Text-Image. Diese werden nun jeweils mit meinem LV-Programm (8.5) eingelesen (siehe im Anhang "einlesen"), das Intensitätsmaximum pro Zeile ermittelt, diese dargestellt und ein Polynomfit (z.B. 3. Grad) angepasst, die eingelesenen Daten werden pro Zeile so verschoben, dass das Polynom in einer geraden Linie ist. Sinn dabei ist, den Abbildungsfehler (Krümmung der Intensitätsmaxima) aufzuheben. Da dies für 320 Dateien getan werden muss, wird mit LV der Inhalt eines Ordners gelistet und abgearbeitet. Das funktioniert alles sehr gut soweit Das Problem kommt nun: Ich muss diese 320 korrigierten Dateien wieder als ein gesamtes Stack in ImageJ haben, da ich einen individuellen z-Schnitt durch alle Daten brauche. Leider kann ImageJ normale Text-Images nur einzeln einlesen. Gebündelt gehen nur Text-Datein oder Sequenzen von Bildern (tiff, png,bmp usw.). Mit IrfanView kann ich wohl auch binäre Dateien in Bilder umwandeln (auch mehrere auf einmal), so dass ich anschließend ImageJ nutzen könnte. Ich brauche also die korrigierten Dateien, im Programm als 2d-Array geführt, in schönen binären Dateien oder als Bilder. Und das scheint nicht zu funktionieren. Natürlich habe ich die Suche-Funktion schon durch, und nicht nur hier, auch einleitende Hilfs-VI zum Speichern von Binärdaten habe ich betrachtet, das Paket Vision habe ich auch installiert und das Erzeugen von Bilddateien versucht - ich komme trotzdem nicht weiter... Meine Ideen sind: - 2D-Array in Binär speichern und dann über weitere Software in ein Bild wandeln (siehe im Anhang "LV_help_bin" und "LV_help_bin2") - 2D-Array über NI Vision als *.tiff speichern (siehe im Anhang "LV_help_vis") - aus jedem der 320er Arrays jede Spalte extra speichern und für jede Spalte als neues 2d-Array speichern. (dies entspricht alle möglichen z-Schnitte... bissel aufwending, da es mit ImageJ individuell geht wenn der Stack erstmal exisiert) Warum gehen diese Ideen nach den Abbildungen im Anhang nicht? Die gewonnenen Binärdateien sind unbrauchbar und ich habe das Gefühl bei jeglicher Bildbearbeitung in LV muss man als Ausgangsdatei bereits ein Bild haben, dass dann zerlegt werden kann - oder irre ich mich da? Hilfreiche Tipps wären (fast) Gold wert für mich, ich hoffe ihr könnt mir helfen... Das gesamte vi benötigt noch einige subvi's, darum habe ich zunächst nur die Bilder im Anhang. Falls dies nicht reicht, schiebe ich die vi's nach. Und im ganzen habe ich 36 von diesen 200mb Raw-Datein, daher ist eine automatisierte Lösung zu bevorzugen Vielen Dank schonmal im Voraus! Grüße, Robert [attachment=28444] *edit: die .txt-Datei im anhang ist ein unkorrigiertes Textimage 2D Array als Bilddatei oder Binärdatei speichern - SeBa - 03.08.2010 14:37 Ohne jetzt den RAR Kontainer öffnen zu können... ... was ist ein Textimage? // Binärdaten als Bildspeichern = B/W Bitmap -> Schaust du halt mal auf der Audio&Graphik Palette. Da kann man bmp's lesen/speichern Wenn ich es richtig verstanden habe, kommt am Ende doch nur ein verschobenes Intensitätsbild raus. Wo geschieht die Reduzierung auf Binär? Oder sind die Bilder von Anfang an binär = schwarz/weiß ? Gruß SeBa 2D Array als Bilddatei oder Binärdatei speichern - rerler - 03.08.2010 17:11 .rar nicht öffnen, damit habe ich nicht gerechnet, sorry. Die Intensitätsdaten werden von ImageJ als Textimage exportiert. Das ist im Prinzip nichts anderes als eine Textdatei, wie in diesem Anhang (Unkorr1.txt). Auch die durch LV korrigierte Datei ist eine Textdatei (Korr1.txt) Diese Textdateien bzw. die eingetragenen Werte werden von ImageJ als Intensitäten interpretiert, wenn man ihm beim Datenimport vorgibt, dass dies ein "Textimage" sei. Dann erstellt er ein schönes Bild daraus, wie im Anhang (Screenshot von Unkorr1 und Korr1 in ImageJ), welches weiter verarbeitet werden kann. Um allerdings 320 Dateien mit einem Mal in ImageJ einladen zu können, brauche ich die Intensitäten in einer Bilddatei, .tiff oder png oder so, Datentiefe war vor der Korrektur 32 bit - die Reduktion auf 24 bit ist nicht unbedingt wünschenswert, da es sich um Messungen aus dem Kunst- und Kulturgut handelt. Im LV-vi liegen werden die Daten einer Datei als 2d-Array behandelt, um oben genannte Operationen durchführen zu können. Diesen Datenstrang (double 64-bit real) kann ich allerdings nicht einfach so an das "write bmp file"-vi anklemmen, da dieses einen String von Image data erwartet. Diese würde ich aus dem "flatten pixmap"-vi erhalten, aber das erwartet ja eine 24-bit pixmap als input. Kleiner persönlicher merkwürdiger Erfolg: Das 2d-array direkt an das "flatten pixmap"-vi am 24-bit Eingang angeklemmt und dann zum "write bmp file"-vi (oder png) gibt mir ein 24-bit bmp-Datei (oder png) in blau ... (24bitblue_Korr1.bmp) Das hatte vorher nicht so geklappt, allerdings vermute ich, dass ich da andere Fehler verursacht hatte (duplicate path ...), und deshalb dort nicht weiter kam - das hat sich nun erledigt. Ich häng noch ein Screenshot vom akuellen Stand meines vi's ran (screenie.jpg) Mein "Problem" hat sich damit fast selbst erledigt, es war wohl zu einfach um den Wald vor lauter ... egal. Danke für's durchlesen und mitdenken! Es bleiben noch 3 kleinere Problem(chen): - Reduktion auf 24-bit ist nicht opitmal, gibt es eine einfache Alternative? Ich habe hier im Forum eine Variante des 48-bit png gesehen, Thementitel "Portable Network Graphics (PNG) Bibliothek" unter http://www.labviewforum.de/Portable-Networ...othek-t833.html, da wird aber vom Einlesen eines Bidles ausgegangen... - Das Bild aus LV ist derzeit blau - wie stell ich das auf (b/w) um? Da werde ich mich nächste Woche erst drum kümmern können, für schnelle Tipps zur Abkürzung wäre ich dankbar. - mein "file dialog"-vi möchte jedes Abspeichern der Bilder (320 mal) seperat bestätigt haben - ist eine Automatisierung möglich oder ist dieses vi gar nicht nötig? Die Dringlichkeit dieser Probleme hat durch die erfolgreiche Erstellung der 24-bit Bilder rapide abgenommen, ich danke euch/Seba sehr für die investierte Zeit, auch wenn es sich fast selbst erledigt hat! Gruß, Robert [attachment=28453] [attachment=28454] [attachment=28455] [attachment=28456] |