===== =====
[ [[http://www.openhardsoftware.de | HomePage]] ]
[ [[http://www.openhardsoftware.de/dokuwiki | DokuWiki]] ]
[ [[http://www.openhardsoftware.de/dokuwiki/doku.php?id=las_-_laserareascanner | LAS - LaserAreaScanner]] ]
====== PC-Software(C#) : Glamma ======
===== ToDo =====
==== 2109140730 : Glamma ====
* **X** Separierte Version: **2109141530_Glamma_00V23_Separated**
* **X** Entpflechtung des Hauptfensters: Auslagerung in **Uart.cs**, **UartTerminal.cs** und **LaserAreaScannerCommand.cs**
* **X** Auslieferung: **2109141110_Glamma_00V22_BasicCommandsLAS**
* **X** UCLaserAreaScannerCommand: Alle Commands bis auf Line... integriert
==== 2109131150 : Glamma / ADuelaserAreaScanner ====
* **X** Glamma: UartTerminal default Text BLS 200 5
* **X** Glamma: Add ColoredLine/Text / Rxd / Txd
* **X** Korrektur BLS : **2109131147_ADueLaserAreaController_BLS**
* **X** Reintegration ADueLaserAreaScanner in Glamma
==== 2109011351 : Aktuelle Version ====
* Grundlage: **1808301610_LASManager_06V25_PS**
* aktuelle Version: **2108310940_LASManager_OldProjectRecoveredOk**
* als Grundlage für Projekt **Glamma**
==== 21061538 - Auslieferung "Glamma_00V17" ====
* **X** Load Bitmap : nicht skalieren, Original-Grösse beibehalten, zentriert einladen, schieben, rotieren, skalieren beliebig.
* **X** CutFrame : Transformation SourceBitmap -> 256x256 NormalizedBitmap
==== 2106141551 - Korrekturen, Besprechung FKleinwort====
* **X** Load Bitmap : nicht skalieren, Original-Grösse beibehalten, zentriert einladen, schieben, rotieren, skalieren beliebig.
* **X** CutFrame : Transformation SourceBitmap -> 256x256 NormalizedBitmap
* **O** Fehler nicht reproduzierbar?! nud <-> scb Correlation überprfen für grosse Zahlen
* **O** Notwendig ??? Initdata <- Min/Maxwerte abspeichern/laden
==== 2106111052 - Auslieferung "Glamma_00V16" ====
* **X** **2106111130_Glamma_00V16_DeliveryPSJK.zip** nach Teams/Glamma speichern.
* **X** **2106111130_Glamma_00V16_DeliveryPSJK_exe.zip** nach Teams/Glamma speichern.
* **X** Aktuelle ToDo Datei nach Teams/Glamma speichern.
==== 2106110530 - Korrekturen ====
* **X** Initdata für alle Prozessgrössen verwalten.
* **X** Initdata SelectFileDirectory last Directory speichern
* **X** "Load Image" : nur Image-Files (bmp/png/gif/jpg) und Separation jedes Typs.
==== 2106100600 - Korrekturen ====
* **X** Seitenverhältnis beim Laden beibehalten, kürzere Seite bstimmt 256-Skalierung anpassen
* **X** Seitenverhältnis beim Laden: Zusatz: Auswahl ShortSide / LongSide
* **X** nudShowFileIndex enabled
* **X** CutFrame GRÜN am Anfang und bei Änderung, nach Cut grau
* **X** Button: File GammaFactor-User-Histogram laden (Xml)
* **X** RadioButton: User-Histogram auswählen
==== 2106091150 - Besprechung PSimon, FKleinwort, OMaediger ====
Ergänzungen/Korrekturen:
* **X** Initdata für alle Prozessgrössen verwalten.
* **X** Initdata SelectFileDirectory last Directory speichern
* **X** "Load Image" : nur Image-Files (bmp/png/gif/jpg) und Separation jedes Typs.
* **X** Seitenverhältnis beim Laden beibehalten, kürzere Seite bstimmt 256-Skalierung anpassen
* **X** Seitenverhältnis beim Laden: Zusatz: Auswahl ShortSide / LongSide
* **X** Scrollbars im Hauptfenster bzw. im ImageProcessing-TabSheet
* **X** SelectFileDialog verschwindet, Funktion nach ConvertToFile verschieben
* **X** nudShowFileIndex enabled
* **X** CutFrame GRÜN am Anfang und bei Änderung, nach Cut grau
* **X** Button: File GammaFactor-User-Histogram laden (Xml)
* **X** RadioButton: User-Histogram auswählen
==== 2106091116 - Ergänzungen/Korrekturen ====
* **X** Auslieferung 210609????_Glamma_00V16
* **X** Scrollbars im Hauptfenster bzw. im ImageProcessing-TabSheet
* **X** Sicherung "2106091114_Glamma_00V15_pngpreinitdata"
* **X** Laden von PNG-Files: Transparent-Color: immer zuerst Frame mit Hintergrundfarbe beschreiben.
==== 2106080445 - Ergänzungen/Korrekturen ====
* **X** Auslieferung 2106082047_Glamma_00V14
* **X** Auslieferung 2106082047_Glamma_00V14_exe
* **X** BackColor bei FileIndex-Aktivierung auf aktuelle BackColor einstellen!!!
* **X** "Save": Modaler Dialog Zielordner/Name.
* **X** "Save": Info-Button mit (default-)Format.
* **X** Gamma-Faktor: über Histogramm vorgebbar und als Xml-File ladbar und speicherbar.
* **X** Fehler Graustufen-Konvertierung beseitigt (jetzt Mittelwert über alle Colors).
* **X** BackColor Frame: Hintergrundfarbe zwischen weiss, schwarz und UserColor wählbar.
* **X** Gamma-Faktor:
Linear $[0..255] \rarr [0..255]$
Inverse $[0..255] \rarr [255..0]$
==== 2106070530 - Ergänzungen/Korrekturen ====
* **X** Glamma-Gui Visualisierung: TabSheets von unten nach oben verlegen.
* **X** Glamma-Gui Visualisierung: Bedienungs-Buttons von unter dem Image nach links neben dem Image.
* **X** "CutFrame" bzw. "Load": Hintergrundfarbe default weiss, wählbar schwarz, beliebig.
* **X** Gui-Row "Convert to File 2048x256" herausnehmen.
* **X** top! "ShowFileIndex".checked -> unchecked bei anderer Aktion!.
==== 2106021000 - Besprechung Ergänzungen/Korrekturen PSimon/FKleinwort/OM ====
** Korrekturen:**
* **X** Bilder-Sequenz speichern: letztes Bild fehlt.
* **X** Laden von PNG-Files: Transparent-Color: immer zuerst Frame mit Hintergrundfarbe beschreiben.
**Ergänzungen:**
* **X** Glamma-Gui Visualisierung: TabSheets von unten nach oben verlegen.
* **X** Glamma-Gui Visualisierung: Bedienungs-Buttons von unter dem Image nach links neben dem Image.
* **X** "CutFrame" bzw. "Load": Hintergrundfarbe default weiss, wählbar schwarz, beliebig.
* **X** "Save": Modaler Dialog Zielordner/Name.
* **X** "Save": Info-Button mit (default-)Format.
* **X** Gamma-Faktor Color: $C_{out} = C_{in} ^ \gamma$ mit $\gamma \in (0, 2) \in \mathbb{R}$
* **X** Gamma-Faktor Color: über Histogramm vorgebbar.
* **X** Gui-Row "Convert to File 2048x256" herausnehmen.
==== 2106010230 - Auslieferung Glamma_00V11 PSimon/FKleinwort ====
* **X** Teams-Sendung an PSimon und FKleinwort: "2106011135_Glamma_00V11_DeliveryPSFK_exe.zip"
* **X** Laden von BitmapSources vom "source"-Ordner als SubOrdner des Working-Directory.
* **X** Speichern der SequenceColumnBitmaps im "result"-Ordner als SubOrdner des Working-Directory.
* **X** Schnelle PreVisualisierung aller SequenceColumnBitmaps über State-Checkbox "Show FileIndex" mit Scrollbar und NumericUpdown.
* **X** Damit 1. Aufgabe: "Glamma - ImageProcessing" erledigt!
==== 210531xxxx - Aktuelle Aufgaben ====
* **X** Image2048x256 aus k-ter Spalte BitmapNormalized berechnet.
* **X** Image2048x512 aus k-ter Spalte BitmapNormalized berechnet.
* **X** für alle Spalten Folge Image2048x256_000.bmp .. Image2048x256_255.bmp mit StartIndex, EndIndex und IndexInterval berechnet und gespeichert.
* **X** für alle Spalten Folge Image2048x512_000.bmp .. Image2048x512_255.bmp mit StartIndex, EndIndex und IndexInterval berechnet und gespeichert.
==== 2105280630 - Aktuelle Aufgaben ====
* **X** Aus Bild mit 256/512 Spalten 256 Einzelbilder berechnen.
==== 2105270830 - Aktuelle Aufgaben ====
Lösung:
X Scale: um Center der BitmapSource scalen.
X Rotate: um Center der BitmapSource rotieren.
X Translate: Offset X/Y für Center der BitmapSource.
X CutFrame: BitmapSource -(Transformation)-> BitmapNormalized -(CutFrame)-> BitmapProjection.
==== 2105260830 - Aktuelle Aufgaben ====
Lösung:
X Graphics.DrawImage OHNE Interpolation pixelgenau darstellen.
==== 2105250630 - Aktuelle Aufgaben ====
Aufgaben:
* **X** Aus jeder Spalte SourceBitmap 256x256 ein Einzelbild berechnen:
Column $C_k$ mit $k \in [0, 1, 255]$ 256-fach duplizieren,
jede $C_k$ ergibt neues Einzelbild $P_k$ im Format $2048 \cdot C_k$, daher 256 Einzelbilder.
* **X** In $P_k$ jede Zeile $R_l, l \in [0, 1, 255]$ duplizieren,
ergibt aus $P_k$ 256-mal das Format $Q_k$ mit $2048 \cdot 512$.
==== 2105191100 - Besprechung PSimon/FKleinwort Image-Preprocessing ====
* **X** Drei Tasten: Load, Convert, Save $\rarr$ Scrollbars
* **X** Vor Convert: Frame256x256 fixed auf 512x512PictureBox
* **X** Linke Maustaste: MoveXY $\rarr$ Scrollbars
* **X** Mausrad: ZoomIn/Out $\rarr$ Scrollbars
* **X** Convert: Aktuelle Sicht im Frame $\rarr$ resultierende (Source-)Bitmaps
* **X** weisse Ränder: als weisse Pixel konvertieren == keine Bearbeitung!
==== 2105190800 - Gui : Image24b-Dll ====
* **X** Converting to: 256x256 pixel2, 512x256 pixel2, 4096x256 pixel2.
* **X** Converting to: 256x512 pixel2, 512x512 pixel2, 4096x512 pixel2.
* **X** Buttons Column2048x256 und Column2048x512: mit Scrollbar Column0..255 auswählen und anzeigen!
==== 2105180700 - Gui : Image24b-Dll ====
* **X** Laden von beliebigen Bitmaps.
* **X** XY-Sizing auf 256x256 pixel2, 24bit RGB.
==== 2105110916 - Gui : Module-Main/Dlls ====
Basic-Module:
* **X** Eigenschaften der Initdata-Dll aus aktuellen C#-Projekten übernehmen.
* **X** Eigenschaften der Programdata-Dll aus aktuellen C#-Projekten übernehmen.
Helper-Module:
* **X** Eigenschaften der Task-Dll aus aktuellen C#-Projekten übernehmen.
* **X** Eigenschaften der TextFile-Dll aus aktuellen C#-Projekten übernehmen.
* **X** Neu-Generierung der Image24b-Dll speziell für Glamma-Funktionen.
UCBasic-Module:
* **X** Eigenschaften der UCNotifier-Dll aus aktuellen C#-Projekten übernehmen.
* **X** Eigenschaften der UCSerialNumber-Dll aus aktuellen C#-Projekten übernehmen.
* **X** Eigenschaften der UCTextEdito-Dll aus aktuellen C#-Projekten übernehmen.
UCGlamma-Module:
* **X** Neu-Generierung der UCImageProcessing-Dll speziell für Glamma-Funktionen.
* **X** Neu-Generierung der UCLaserAreaScanner-Dll speziell für Glamma-Funktionen.
* **X** Neu-Generierung der UCLowLevelMMA-Dll speziell für Glamma-Funktionen.
* **X** Neu-Generierung der UCHighLevelMMA-Dll speziell für Glamma-Funktionen.
* **X** Neugenerierung des Main-Module Glamma.Exe .
==== 2105071000 - Gerüst der Glamma-Software ====
Rahmen:
* programmiert mit Visual Studio 2019 in C# als Exe-File,
* programmiert für alle Windows10 Betriebssysteme,
* alle Sources sind offengelegt,
* modulare Top-Down-Architektur,
* alle Module als Dlls,
==== 2105061400 - Spezifikation der Rahmenbedingungen ====
WebMeeting mit PK (Peter Simon), FK (Frederick Kleinworth) und OM (Olaf Maediger) über die Machbarkeit der Glamma-Software.
Ergebnisse:
* Die vier von FK aufgeführten Punkte werden als Punkt1 und Punkt3 zuerst allein von OM programmiert.
* Die Punkte 2 und 3 unterstützt OM mit Code-Fragmenten, welche von einer weiteren Person (hier genannt WP) WP im Labor zusammengeführt, unter Laborbedingungen ergänzt, getestet und verifiziert werden. Dabei besteht ein aktiver Gedankenaustausch zwischen OM und WP über WebMeeting.