Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Herangehensweise beim Laden von Bilder mit unüblichen Format
Rico913
myCSharp.de - Member



Dabei seit:
Beiträge: 85

Themenstarter:

Herangehensweise beim Laden von Bilder mit unüblichen Format

beantworten | zitieren | melden

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.....
Attachments
private Nachricht | Beiträge des Benutzers
Papst
myCSharp.de - Experte



Dabei seit:
Beiträge: 351
Herkunft: Kassel

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1795
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

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
Zitat
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.
Zitat
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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am .
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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

Zitat von T-Virus
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.
private Nachricht | Beiträge des Benutzers
Papst
myCSharp.de - Experte



Dabei seit:
Beiträge: 351
Herkunft: Kassel

beantworten | zitieren | melden

Da müsste man zusätzlich die Lizenzbedingungen des Datenformats beachten.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1795
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

@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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am .
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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

Zitat von T-Virus
@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.
private Nachricht | Beiträge des Benutzers
Rico913
myCSharp.de - Member



Dabei seit:
Beiträge: 85

Themenstarter:

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Rico913 am .
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5960
Herkunft: Leipzig

beantworten | zitieren | melden

Was genau ist deine Frage? Was hast du schon probiert, und wo gab es Schwierigkeiten?
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
Rico913
myCSharp.de - Member



Dabei seit:
Beiträge: 85

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3978

beantworten | zitieren | melden

Nicht "Bild parsen", sondern "Datei (binär) parsen", also z.B. mit dem BinaryReader und dessen Read...-Methoden.
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5960
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat von Rico913
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.
Zitat von Rico913
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:
Zitat
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
private Nachricht | Beiträge des Benutzers
Rico913
myCSharp.de - Member



Dabei seit:
Beiträge: 85

Themenstarter:

beantworten | zitieren | melden

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....
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3978

beantworten | zitieren | melden

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).
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1795
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers