Dieses Dokument beschreibt das Bildverarbeitungsmodell von LaserBase. Das Ziel ist, die Funktionsweise zu verstehen: welche Repräsentationen existieren, in welcher Reihenfolge die Pipeline läuft und wie das Programm vom RAW-Bild zum G-Code gelangt.
Dies ist keine Entwickler-Spezifikation. Der Fokus liegt auf einem nutzbaren, technisch präzisen mentalen Modell.
LaserBase ist nicht nur um binäres Dithering aufgebaut.
Das System unterstützt mehrere Verarbeitungsstrategien:
Darum lautet die zentrale Frage nicht nur, welchen Dither-Algorithmus man wählt, sondern welche Bildrepräsentation der gewählte Modus erzeugt und welche Art von G-Code daraus folgt.
RAW ist das geladene Quellbild.
Es ist verknüpft mit:
Crop ist nicht auf dem bereits verarbeiteten Bild definiert, sondern im RAW-Raum.
Das ist das Bild, das bereits:
BASE ist modusabhängig.
Es ist nicht korrekt, BASE immer als binär zu lehren.
Im Depth-Modus hält das System zwei verarbeitete Raster:
Die Preview kann zwischen ihnen wechseln, und der Export besteht aus zwei Durchläufen.
Der Benutzer gibt an:
Das Programm zeichnet daraus nicht direkt ein Raster. Es berechnet ein reales Raster, das an das angepasst ist, was die Maschine schrittweise abbilden kann.
Wenn Zeilen auf der Schrittachse nur in bestimmten Schrittintervallen platziert werden können, werden tatsächlicher Pitch und effektive DPI an diese erlaubte Geometrie angepasst.
Effektive DPI ist:
effektive DPI = 25.4 / real_pitch_mm
Sie kann von der angeforderten DPI abweichen.
Vor der Verarbeitung entscheidet das System:
Wenn die benötigte Zahl von Zeilen oder Spalten größer ist als das, was das Quellbild direkt liefern kann, wird die Entscheidung REPAIR. Andernfalls ist sie BASE.
rotate_90 ist eine echte geometrische Transformation.
Es ist kein Preview-Trick. Es ändert die Orientierung des Quellbildes. Darum arbeiten die folgenden Schritte bereits auf dem rotierten RAW-Bild:
Preview rotate back ist eine separate Darstellungsebene.
Es transformiert nur die Ansicht. Es verändert nicht:
Die beiden Rotationen bleiben deshalb getrennt:
rotate_90 = VerarbeitungsgeometrieCrop ist auf dem Quellbild definiert, damit der Ausschnitt so früh wie möglich erfolgt.
Das bedeutet:
Bei Kreis-Crop muss die Geometrie quadratisch bleiben. Das wird auch auf UI-Ebene erzwungen.
Der Verarbeitungsmodus ist die zentrale Wahl im System.
Er bestimmt, welche Repräsentation BASE annimmt, was die Preview bedeutet und wie G-Code Rasterdaten in Leistung und Bewegung umsetzt.
In diesem Modus bleibt das Raster graustufig. Der G-Code-Generator bildet den Pixelton auf PWM-Werte ab.
Dies ist keine Ein/Aus-Gravur, sondern ein kontinuierlicheres Leistungsprofil.
Die Error-Diffusion- und Ordered-Modi gehören hierher:
Hier ist das Endergebnis binär. Auf G-Code-Ebene erhält ein Pixel entweder volle Energie oder keine.
Hybrid ist kein klassischer Dither-Modus.
Es startet mit einem Graustufenbild und fügt eine tonabhängige Musterkorrektur hinzu. Im Mitteltonbereich ist sie stärker, an den Extremen schwächer.
Seine Rolle ist:
Praktisch überbrückt Hybrid den Abstand zwischen zu glattem Grayscale und zu hartem binärem Dither. Es ist nützlich, wenn Tonerhalt wichtig ist, vollständig glattes Grayscale aber nicht genug Struktur liefert.
Depth hält zwei getrennte Branches:
Jeder Branch kann seinen eigenen Kontrollzustand speichern. Die Preview wechselt zwischen ihnen, und der Export erzeugt zwei Durchläufe.
Depth ist nützlich, wenn Ton und Punktstruktur nicht von demselben Raster getragen werden sollen. Gegenüber einfachem Grayscale gibt es getrennten Arbeitsraum für diese zwei Rollen.
In der Pipeline läuft negative früh.
Das bedeutet, dass die späteren Schritte für Brightness, Contrast, Gamma und Schärfung bereits im invertierten Tonraum arbeiten.
Beide arbeiten auf dem graustufigen Arbeitsbild.
Gamma ist eine nichtlineare Korrektur im Tonraum. Das System begrenzt den eingegebenen Wert auf einen zulässigen Bereich und wendet ihn per LUT an.
Schärfung basiert auf Unsharp Mask.
Spiegeloperationen gehören zu den Bildtransformationen und laufen nach den Tonmodifikationen.
Threshold ist kein universeller Regler.
Er beeinflusst nur den Schwellenwert der binären Error-Diffusion-Modi. In Bayer, halftone clustered, grayscale und hybrid ist seine Bedeutung anders oder materiell nicht relevant.
Dies ist kein eigener Dither-Algorithmus, sondern ein Wechsel der Fehlerfortpflanzungsrichtung von Zeile zu Zeile.
Seine Rolle:
Dies ist ein Reinigungsschritt, der auf binärer Rasterausgabe läuft.
Es ist kein allgemeiner Bildfilter. Sein Zweck ist es, isolierte einzelne Pixel zu entfernen, die aus ihrer Umgebung herausstechen.
Die logische Reihenfolge ist:
rotate_90negativecontrast + brightnessgammaradius + amount)mirror_x / mirror_yone_pixel_offDie Hauptfolgen sind:
rotate_90 wird vor Crop angewendetnegative liegt nicht nach dem DitheringDiese Reihenfolge ist wichtig, weil sich das Verhalten der Kontrollen daraus ergibt. Dieselbe Einstellung liefert unterschiedliche Ergebnisse, je nachdem, wo sie in die Pipeline eintritt.
Die rechte Preview wird aus _right_view_mode und dem aktiven
verarbeiteten Branch aufgebaut.
Diese Preview ist nicht immer ein direktes 1:1-Bild der endgültigen Gravur. In binärem Dither und Depth zeigt sie Verarbeitungsstruktur und Rastercharakter stärker als die spätere Materialreaktion.
Praktisch bedeutet das:
Dies ändert nur die Anzeigeinterpolation. Das verarbeitete Bild wird nicht verändert.
Fullscreen verwendet denselben aktiven Preview-Branch wie die normale rechte Ansicht, nur größer und besser prüfbar.
Die Eingaben sind:
Der Empfehlungsmechanismus aggregiert Datensätze aus der Datenbank.
Auto ist nicht nur eine Formel “Leistung proportional zur Geschwindigkeit”.
Die Logik kombiniert zwei Arten von Empfehlungen:
Die Endausgabe kann beide mischen.
Fallback ist kein beliebiges hierarchisches Aufsteigen.
Das System:
Das definiert die Grenzen des Fallback-Verhaltens.
Im Auto-Modus sind empfohlene Speed und Max power an eine Basis gebunden. Wenn der Benutzer einen Wert verändert, bewegt sich der andere um diese Basis mit.
Die Empfehlung ist am stärksten, wenn sie aus einem exakten Treffer kommt. Bei Safe-Stop-Fallback bleibt sie ein geschützter Startpunkt, ist aber weniger direkt für das gegebene Material.
Die Empfehlung stützt sich auf die in der Datenbank gespeicherten Datensätze. Diese Datensätze sind nicht auf vordefinierte Inhalte beschränkt: der Benutzer kann eigene Einträge ergänzen.
Gespeicherte Daten können exportiert und in einer anderen Umgebung wieder geladen werden. Importierte Schlüsseldateien aktualisieren den zentral vorbereiteten Datenbestand.
Die Overscan-Formel lautet:
overscan ≈ 1.15 × v² / (2a)
wobei:
v die Scan-Geschwindigkeit in mm/s ista die Beschleunigung der aktiven Achse in mm/s² istDer Faktor 1.15 wirkt als Sicherheitsreserve.
Aus Sicht des Exports gibt es drei Zustände:
Im manuellen Modus überschreibt der eingegebene Wert die automatische Berechnung.
Hier bildet der G-Code-Generator Pixelwerte auf kontinuierliche Leistung ab:
power = s_min + (s_max - s_min) × tone
Darum wirkt min_power als untere Grenze der Tonabbildung.
In binären Modi erhalten schwarze Pixel die obere Leistungsstufe und weiße Pixel Null.
In diesem Fall ist min_power nicht das zentrale Steuerelement der
binären Auswertung.
Im Depth-Modus führt das Programm aus:
Der zweite Pass übernimmt auch bestimmte Export-Zustandswerte aus dem ersten, daher sind dies keine zwei vollständig unabhängigen Exporte.
Frame-Export ist mehr als ein einfaches Kontrollkästchen.
Wenn Frame aktiv ist:
Bei Kreis-Crop ist der Frame-Pfad kreisförmig, sonst rechteckig.
Speichert das aktuell aktive verarbeitete Bild.
Im Depth-Modus bedeutet das, dass nicht ein abstraktes “BASE” gespeichert wird, sondern der Branch, der in diesem Moment aktiv ist.
Die Speicheraktion legt zusätzlich Sidecar-basierten Workspace-Zustand ab.
Typischer Inhalt:
Reload rekonstruiert den Workspace und führt danach die Verarbeitung erneut aus.
Darum ist Save/Reload sitzungsartig und nicht nur datensatzartig.
Sender ist nicht nur rohes Streaming.
Relevante Funktionen sind:
Auf Werkstattniveau ist das wichtig, weil Frame-Behandlung und Positionierung auch im Sender mehrstufige Abläufe sind.
Kurz gesagt:
rotate_90 ist eine echte geometrische OperationDies ist ein nutzbares und korrektes Bild davon, wie LaserBase arbeitet.