Laden...

Herangehensweise beim Laden von Bilder mit unüblichen Format

Erstellt von Rico913 vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.057 Views
R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren
Herangehensweise beim Laden von Bilder mit unüblichen Format

Hi,

ich arbeite schon seit längeren an einem Bemaßungsprogramm. Das funktioniert bisher sehr gut für die gängigen Bildformate.

Nun habe ich aber eine Toolgruppe, die Bilder in einem softwareeigenem Format abspeichert (*.dm3).

Ich habe für dieses Dateiformat eine Dokumentation vorliegen, aber mir fehlt der Ansatz/Wissen darüber, wie man dieses Format in ein C#-lesbares Bild umwandelt.

Vermutlich muss die Datei zeilenweise eingelesen und umgewandelt werden, oder? Könnt ihr mir bitte ein Denkanstoß geben oder kurz die Prozedur theoretisch anreissen, damit ich weiß, wonach ich suchen muss bzw. ich mich einarbeiten kann?

Ich hab die Doku mal angehangen.

Danke im Voraus.....

P
441 Beiträge seit 2014
vor 3 Jahren

Binärdateien haben keine Zeilen. Du kannst also nichts zeilenweise einlesen 😃

Prinzipiell musst du die Datei parsen und in ein für dich verarbeitbares format umwandeln. Dafür musst du die in dem pdf beschriebenen Blöcke verarbeiten. Ein Block nach dem anderen.
Alternativ suche nach einem Konverter oder einer entsprechenden Bibliothek.

T
2.219 Beiträge seit 2008
vor 3 Jahren

Und der nächste Spaß ist, dass diese Beschreibung nicht vom Hersteller kommt.
Scheinbar hat der Verfasser hier nur Reverse Engineering betrieben.

Steht auch ganz oben im Dokument

Gatan does not publish the file format for Digital Micrograph. This information has been obtained by
examining the structure of files, thus it may be inaccurate or wrong and is definitely incomplete.

Ob also alles in der Dokumentation stimmt, musst du testen.
Macht aber auf mich keinen guten Eindruck, wenn der Hersteller scheinbar das Format nicht veröffnetlicht.
Es kann dann auch passieren, dass sich das Format ändern kann oder sich ggf. schon geändert hat.
Das Dokument ist von 2006, also ist eine Änderung des Formats sehr wahrscheinlich, falls der Hersteller noch existiert und die Software mal geupdatet hat.

DM3 info updated March 2006

Nachtrag:
Google spuckte mir noch den Link aus:
https://www3.ntu.edu.sg/home/cbb/info/dmformat/index.html

Sieht etwas aktueller aus als deine Doku.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.807 Beiträge seit 2008
vor 3 Jahren

Macht aber auf mich keinen guten Eindruck, wenn der Hersteller scheinbar das Format nicht veröffnetlicht.

Du meinst wie Adobe, die jahrelang, bis sie ihr Monopoal hatten, PDF nicht vollständig veröffentlicht haben? 😉
Was ich damit sagen will: es ist völlig normal, dass es Hersteller gibt, die proprietäre Formate haben.
So ist das in der Software Welt.

P
441 Beiträge seit 2014
vor 3 Jahren

Da müsste man zusätzlich die Lizenzbedingungen des Datenformats beachten.

T
2.219 Beiträge seit 2008
vor 3 Jahren

@Abt
Meines Wissens hat sich am Stand bei PDF immer noch nicht viel geändert.
Hier sind noch immer einige Funktionen nur per Adobe Reader nutzbar.

Mein Satz war auch eher im Kontext der geplanten Umsetzung bzw. Einbindung in eingenen Code gemeint.
Da die vorhandene Dokumentation nicht vom Hersteller kommt und auch noch veraltet ist, kann die Umsetzung auch scheitern weil das Format sich ggf. geändert hat.

Nachtrag:
Ansonsten wäre es vielleicht auch einen Versuch wert, sich mit dem Hersteller in Verbindung zu setzen.
Wenn diese einem auch offiziell supporten, dürfte es um einiges leichter werden.
Ansonsten müsste man nach Alternativen ausschau halten.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.807 Beiträge seit 2008
vor 3 Jahren

@Abt
Meines Wissens hat sich am Stand bei PDF immer noch nicht viel geändert.

PDF ist ein seit 2008 offenes ISO-Format mit keinerlei proprietären Eigenschaften mehr.
Die Entwicklung des Standards liegt auch nicht mehr alleine in den Händen von Adobe, sondern hinter einer Foundation => https://www.pdfa.org/

Dass einige Dinge nur per Adobe Software genutzt werden kann liegt nicht an Adobe.
Das Format selbst ist wie gesagt völlig offen - seit über 10 Jahren.

R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren

Danke für die Beiträge....

Das Format hat sich in den letzten 15 Jahren nicht geändert. Da die Tools auch keine Updates erhalten (frei dem Motto never change a running system - sind so schon teuer genug) wird sich an der Situation nichts ändern.

Es gibt schon diverse Importer für dieses Format. Aber entweder mit einer zusätzlichen Programmkomponente (Softwareeigene Sprache) oder in C bzw Python.
Nur nicht in C# und zum "Übersetzen" fehlt mir das Wissen über den Ablauf.

Will es auch nicht nur abschreiben, sondern eben verstehen, was passiert bzw. was passieren muss, damit ich am Ende ein Bild + die dazugehörigen Tags habe.

5.657 Beiträge seit 2006
vor 3 Jahren

Was genau ist deine Frage? Was hast du schon probiert, und wo gab es Schwierigkeiten?

Weeks of programming can save you hours of planning

R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren

Meine Frage war an die Herangehensweise.

  1. Bild parsen
    --> krieg ich hin

  2. Blöcke abarbeiten
    --> theoretisch denke ich, weiß ich wie es gemeint ist.

Aber es geht los, dass ich ein Problem habe, die Doku zu verstehen. Mir fehlt der Ansatz 😦
D.h. was muss ich in C# tun, damit ich ein Block abarbeiten kann und wie komme ich an das Bild.

4.931 Beiträge seit 2008
vor 3 Jahren

Nicht "Bild parsen", sondern "Datei (binär) parsen", also z.B. mit dem BinaryReader und dessen Read...-Methoden.

5.657 Beiträge seit 2006
vor 3 Jahren

theoretisch denke ich, weiß ich wie es gemeint ist.
Aber es geht los, dass ich ein Problem habe, die Doku zu verstehen. Mir fehlt der Ansatz 😦
D.h. was muss ich in C# tun, damit ich ein Block abarbeiten kann und wie komme ich an das Bild.

Du mußt schon etwas konkreter werden, wenn du Hilfe brauchst. Ich verstehe das so, daß du weder weißt, wie man mit C# Dateien ausliest, noch die Dateibeschreibung verstanden hast. Ersteres ist in der Doku ausführlich beschrieben (in dem Link von Th69 gibt es ein Beispiel), und für den Dateiaufbau haben wir die gleichen Informationen wie du.

  1. Bild parsen
    --> krieg ich hin

Bist du dir sicher? Denn so wie ich das verstehe, ist genau das der schwierige Teil. Ich zitiere mal aus der PDF-Datei:

Packed complex (data type 5)
This is used for the Fourier transform of real images, which have symmetric real parts and antisymmetric imaginary parts and thus can be stored in half the number of bytes that the equivalent complex picture would take. The format is somewhat strange. I have confused things further by using semper's coordinate system.

Das klingt für mich nicht, als würde man das mal eben an einem Nachmittag umsetzen.

Du sagtest, daß es schon Parser in C und Python gibt, dann wäre es das einfachste, den Code nach C# zu portieren.

Weeks of programming can save you hours of planning

R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren

Ehrlich gesagt übersteigt diese Programmierung momentan meine Kompetenzen.

Was würde die Programmierung eines Parsers kosten, wenn man es in Auftrag geben würde? Entsprechende Vorlagen in C und Pyhton sind vorhanden.
Was ich brauche ist das Bild und die im Bild gespeicherten Informationen (Tags).

Gern auch per PN....

4.931 Beiträge seit 2008
vor 3 Jahren

Alternativ zum Portieren des Codes nach C# (je nach Umfang):
Wenn schon Code in C da ist, dann könntest du daraus eine DLL (Library) erzeugen und diese von C# aus mittels P/Invoke (DllImport) einbinden (die Datenstrukturen müssten dann entsprechend "gemarshallt" werden).

T
2.219 Beiträge seit 2008
vor 3 Jahren

Alternativ ginge es auch, wenn du schon fertige Programme mit den Libs hast, diese über Process/ProcessInfo mit entsprechenden Parametern aufrufen.
Dann musst du nur die Bild Datei ggf. per Pfad an das Programm mitgeben und arbeiten lassen.
Würde ich machen, wenn die Einbindung sonst zu aufwändig wäre.
Wäre dann aber auch nur die Quick und Dirty Lösung um die Einbindung auszusparen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.