Aufwendige Verarbeitung blockiert das Fenster nicht. Unten werden die aktive Stufe und der Fortschritt angezeigt; eine Stoppanforderung wird an der nächsten Stufengrenze bestätigt. Ändern sich Einstellungen während eines Laufs, bleibt die Generation des angezeigten Ergebnisses sichtbar und man kann das ältere Ergebnis ansehen oder mit den aktuellen Einstellungen neu starten.
Die Suche nach einem Verarbeitungsziel gruppiert Treffer danach, ob sie zur aktuellen Eingabe passen, eine Vorverarbeitung benötigen oder anderweitig einzuordnen sind. Ein Treffer lässt sich einmal testen, ohne eine Stufe hinzuzufügen. Bei einem Fehler zeigt der Problembereich Ursache, Ort und konkrete nächste Schritte zum erneuten Auswählen, Vergleichen, Öffnen des Protokolls, Bearbeiten eines Reglers oder Suchen einer vorgeschlagenen Stufe.
日本語 · English · 简体中文 · 繁體中文 · 한국어 · Deutsch · हिन्दी
Fullseye Studio ist eine visuelle Pipeline-Werkbank im Stil von HDevelop. Man sucht Operatoren, ordnet sie an,
dreht an zwei Reglern per Schieberegler, verfolgt Zwischenergebnisse mit Zoom/Pan Stufe für Stufe und exportiert die
fertige Pipeline am Ende als --ops-String / Python / JSON. Technisch ist es ein schmales GUI-Frontend über der
fullseye-API — die Pipeline-Logik (PipelineModel), der Inspector (inspect_result) und die Beispielsammlung
(recipes) sind allesamt unabhängig von Qt und einzeln mit Unit-Tests versehen.
Dieser Leitfaden listet die Funktionen so auf, wie sie durch Abgleich von studio.py (build_window) mit dem
tatsächlichen Code ermittelt wurden. Die Absicht hinter UX/Design steht in STUDIO_UX.md, der
Hintergrund der Wahrnehmungspanels aus v14 in V14.md / PERCEPTION.md.
Die GUI-Extras (PySide6) werden benötigt (pip install -e ".[gui]").
py -3.11 studio.py # direkt aus dem Repository-Wurzelverzeichnis
fullseye-studio # bei bereits erfolgtem pip install -e . über das Konsolen-Skript
Beim Start öffnet sich ein Hauptfenster mit 1320×860 (Titel: Fullseye Studio). Existiert assets/fullseye.ico, wird
es als Fenster-/Taskleistensymbol verwendet. Im Ausgangszustand ist bereits ein synthetisches Demobild geladen
(demo_image, 256×256 mit Kanten, Blobs und Farbverlauf).
Oben befinden sich die Menüleiste (File / Edit / View / Run / Help) und eine Marken-Werkzeugleiste, unten
die Statusleiste (Koordinaten + Pixelwert beim Überfahren mit der Maus, temporäre Meldungen von flash()). In
der Mitte liegen drei links-rechts geteilte Bereiche.
| Bereich | Abschnitte (QGroupBox) | Aufgabe |
|---|---|---|
| Links | SAMPLE PIPELINES / OPERATORS | Beispiele laden, Operatoren durchsuchen |
| Mitte | PIPELINE / SELECTED STAGE · KNOBS / EXPORT & I/O | Pipeline aufbauen, Regler einstellen, exportieren |
| Rechts | IMAGE / DISPLAY & PERCEPTION (v14) / ANALYSIS | Ergebnisanzeige, Farbabbildung/Wahrnehmung, Histogramm/Inspector |
Die anfängliche Aufteilungsbreite beträgt 340 / 360 / 640 px, der rechte Bereich ist elastisch.
Wählt man aus dem Dropdown eines der 25 fertigen Rezepte (recipes.py), wird die Pipeline durch dieses Rezept
ersetzt. Beispiele: “Edge — Sobel + Otsu”, “Denoise — bilateral + unsharp”, “Segment — blob / coin”,
“Count — blobs”, “Texture — Gabor” und mehr. Ein bequemer Ausgangspunkt, um erst einmal etwas laufen zu sehen und
den Inhalt zu studieren.
name [in_sort → out_sort]. Per Doppelklick einfügen. Beim Überfahren mit der
Maus erscheint ein Tooltip mit “Name / HALCON-Alias / Kategorie / sort-Umwandlung / Erklärung der Regler a, b”.Die Einfügeposition ist “direkt nach der ausgewählten Stufe”. Ist keine Stufe ausgewählt, wird am Ende angehängt.
Jede Zeile hat die Form N. op (a=…, b=…) -> Ergebniszusammenfassung; der Ergebnisstatus bis zu dieser Stufe
(image/region/feature usw.) erscheint rechts.
Wählt man eine Stufe aus, wird das Zwischenergebnis bis zu dieser Stufe im rechten IMAGE-Bereich dargestellt, und auch die ANALYSIS darunter (Histogramm / Inspector) wird synchron aktualisiert. Das entspricht einem “Schritt-für-Schritt-Debugger”.
Zeigt die Details der ausgewählten Stufe (op_detail: Name · sort von in → out · Kategorie · HALCON-Alias) und
erlaubt die Einstellung über zwei Schieberegler a / b (0,00 bis 1,00). Bewegt man den Wert, wird das Ergebnis
sofort neu berechnet. Ist keine Stufe ausgewählt, sind die Schieberegler deaktiviert (ein bewusstes Design, das
einen bedeutungslosen Regler nicht in einem toten Zustand belässt).
Die Bedeutung der Regler unterscheidet sich je nach Operator (Radius / Schwellwert / σ / Richtung usw.). Was gerade eingestellt wird, lässt sich am Detail-Label der Stufe und am Tooltip ablesen.
--ops "…"-String als auch
als eigenständig lauffähige Python-Funktion in einem Dialog aus (zum Kopieren).{"fullseye_pipeline": 1, "stages": [...]}). Dieses JSON ist die Eingabe für FullseyeEngine.load /
imgevolve.py run.x, y, value (bei Farbbildern RGB).gray / shaded relief /
height (color) / diverse Colormaps (jet, viridis, turbo, magma, plasma, inferno …).QtDataVisualization vorhanden ist / best effort). Nützlich zur Kontrolle von Höhen-/Tiefenkarten.optical flow — visualisiert den dichten optischen Fluss zwischen zwei Bildern über den Farbton.motion overlay — legt bewegte Bereiche über das Originalbild.stereo depth — schätzt Tiefe aus der Stereo-Disparität und koloriert sie.stereo terrain — Stereo → Punktwolke → Geländehöhenkarte, koloriert.Fehlt Frame B oder stimmt die Größe nicht überein, zeigt die Statusleiste einen Fehler und bricht sicher ab.
detect.feature_table) angezeigt.Strg+P öffnet einen Fuzzy-Search-Dialog, mit dem sich jede Aktion oder jeder Operator per Namen ausführen
lässt. Das Ranking erfolgt in der Reihenfolge Präfix-Treffer > Wortpräfix-Treffer > Teilstring-Treffer
(palette_filter, unabhängig von Qt und mit Unit-Tests versehen). Aktionen (z. B. ▸ Open image) stehen zuerst,
danach folgen alle Operatoren (z. B. op: gaussian); Enter führt aus. Damit lässt sich sogar das Einfügen von
Operatoren allein über die Tastatur erledigen.
In der Anwendung zeigt Help ▸ Keyboard shortcuts (F1) die vollständige Liste als Tabelle (selbstdokumentierend).
Die wichtigsten (aus den act_*-Definitionen in studio.py):
| Aktion | Tastenkürzel | Aktion | Tastenkürzel |
|---|---|---|---|
| Open image | Ctrl+O |
Remove stage | Del |
| Synthetic demo | Ctrl+D |
Move stage up / down | Ctrl+↑ / Ctrl+↓ |
| Save result | Ctrl+S |
Clear pipeline | Ctrl+Shift+Backspace |
| Open pipeline | Ctrl+Shift+O |
Zoom in / out | Ctrl+= / Ctrl+- |
| Save pipeline | Ctrl+Shift+S |
Fit / Actual size (1:1) | Ctrl+0 / Ctrl+1 |
| Export | Ctrl+E |
3D surface | Ctrl+3 |
| Quit | Ctrl+Q |
Reset to start | Home |
| Command palette | Ctrl+P |
Step forward | Ctrl+→ |
| Keyboard shortcuts | F1 |
Run all | Ctrl+Enter |
| Image Viewer | Ctrl+Shift+I |
Run a ledger op | Ctrl+Shift+L |
| Pipeline as code → editor | Ctrl+Shift+E |
Jede Aktion ruft, egal ob über Menü, Werkzeugleiste oder Schaltfläche ausgelöst, denselben Handler auf (eine Aktion, mehrere Zugänge).
dev_* zur AnzeigesteuerungWie in HDevelop lässt sich das Anzeigeverhalten aus dem Programm heraus steuern. Schreibt man im
Program-Fenster eine dev_*-Zeile, wird sie nicht als Bildverarbeitungsstufe, sondern als
Anzeigedirektive interpretiert und bei Apply angewendet (docs/HDEVELOP_DEV_OPS.md erfasst alle 43
dev_* vollständig).
| Direktive | Wirkung | Entsprechende UI |
|---|---|---|
dev_update_window ('off'|'on') |
Schaltet die automatische Aktualisierung des Grafikfensters | View ▸ Display updates ▸ Graphics window |
dev_update_var ('off'|'on') |
Schaltet die automatische Aktualisierung des Variablenfensters | dasselbe, Variable window |
dev_update_pc ('off'|'on') |
Schaltet die Aktualisierung des Ausführungscursors | dasselbe, Program counter |
dev_update_time ('off'|'on') |
Schaltet die Anzeige der Verarbeitungszeit pro Zeile | dasselbe, Operator timings |
dev_update_off () / dev_update_on () |
Schaltet alles Obige gebündelt aus / ein | Umschalter Auto-update in der Werkzeugleiste |
dev_set_part (Row1, Col1, Row2, Col2) |
Legt den Anzeigebereich (Zoom/Pan) fest · negativ = Gesamtbild | zusammen mit Mausrad/Fit |
dev_set_lut ('gray'|'jet'|'viridis'…) |
Wechselt die Farbabbildung (LUT) | View ▸ Display mode |
dev_clear_window () |
Leert das aktuelle Fenster | — |
set_system ('thread_num', N) |
Legt die Anzahl der OpenCV-Worker-Threads fest (0 = Standard/alle) | Tools ▸ System settings |
set_system ('operator_timeout', ms) |
Weiches Operator-Timeout (warnt bei langsamen Stufen im Run status) | dasselbe |
dev_set_draw ('fill'|'margin') |
Wechselt zwischen Füllung (fill) und Kontur (margin) beim region-Overlay | View ▸ Display mode = region overlay |
dev_set_color ('red'|'green'…) |
Farbe des region-Overlays | dasselbe |
dev_set_line_width (N) |
Konturbreite für margin (px) | dasselbe |
dev_disp_text ('label', Row, Col) |
Textannotation über dem Ergebnis (verschwindet bei der nächsten Zeichnung/dev_clear_window) |
— |
dev_open_window (Row, Col, W, H) |
Öffnet und platziert ein Grafikfenster und macht es aktuell (erneutes Apply platziert dasselbe Fenster neu = keine Vermehrung) | Strg+G / Window ▸ Graphics |
dev_set_window (Handle) |
Wechselt das aktuelle Fenster über sein Handle | Klick auf ein Fenster |
dev_set_window_extents (Row, Col, W, H) |
Position · Größe des aktuellen Fensters (-1 = unverändert lassen) | Fenster ziehen |
dev_close_window () |
Schließt das aktuelle Fenster (das dauerhafte Hauptfenster ist geschützt) | × des Fensters |
set_system ('max_graphics_windows', N) |
Obergrenze der Fensteranzahl (Standard 256 · auf allen Pfaden fail-closed) | Tools ▸ System settings ▸ Windows |
Verwendung: Setzt man dev_update_off () an den Anfang, lassen sich aufwendige Verarbeitungen oder viele
Änderungen ohne Zeichenaufwand durchführen; mit dev_update_on () wird anschließend auf einmal auf den
aktuellen Zustand aktualisiert (dieselbe Performance-Technik wie in HDevelop). Solange Aktualisierungen aus sind,
erscheint rechts in der Statusleiste updates off: …, sodass der eingefrorene Zustand nicht wie “kaputt” aussieht.
Derselbe Wechsel ist auch über den Umschalter Auto-update in der Werkzeugleiste möglich.
Hinweis (ehrlich gesagt): Anders als Pipelinestufen folgt dev_* nicht if/for und wird
bedingungslos angewendet (löst auch innerhalb eines Zweigs aus). Schreiben Sie es auf oberster Ebene. Nicht
unterstützte dev_* führen zu einem Fehler.
Zum Ausprobieren: Über File ▸ dev_* visualization demo lässt sich ein HDevelop-Programm laden und
ausführen, das tatsächlich das coins-Bild sowie die obigen dev_* verwendet (Segmentierung → Regionen mit
cyanfarbener Kontur + Beschriftung dargestellt). Die Beispielbilder dafür liegen unter
File ▸ Sample images (16 Stück, Herkunft siehe studio_assets/sample_images/manifest.json. Synthetische Bilder
= eigene Arbeit / coins · camera usw. = BSD-/Public-Domain-Material aus skimage.data. Mit
tools/gen_sample_images.py neu erzeugbar). Fünf davon sind Szenen der Sichtprüfung (FA), nicht
fotografiert, sondern aus Beleuchtungs- und Reflexionsphysik (illumdesign) und den Abbildungsmodellen
der PoCs berechnet: Kratzer auf Hairline-Metall, Delle und Fremdfaser auf Kunststoff, gravierte
Losnummer, Lochplatte im Durchlicht, Poren im Röntgenbild einer Schweißnaht. Jede hat ihre
Fehlermaske (<name>.truth.png) und eine Beschreibung im Manifest, gehört zu einem Rezept “FA — …”
(ein Test zeigt, dass es die Fehler findet) und wird mit tools/gen_fa_samples.py neu erzeugt.
Die Oberflächensprache lässt sich über Tools ▸ Language / 言語 / 语言 umschalten (wird gespeichert). Die
Übersetzungen sind zentral in studio_assets/i18n.json als Tabelle abgelegt und können ohne Codeänderung
erweitert werden:
languages — Sprachliste (bei Ergänzung erscheint sie automatisch im Menü; Englisch ist immer die Basis)tooltips — Übersetzungen der Tooltips (englischer Originaltext als Schlüssel)strings — Übersetzungen für Menü-, Schaltflächen- und Dialogbeschriftungen (englischer Originaltext als
Schlüssel. Seit 2026-08-30 vorhanden. Über 40 japanische Einträge sind mitgeliefert; nicht übersetzte Strings
bleiben auf Englisch = graceful fallback)guide — Text der Kurzanleitung (Umschalt+F2)Die Operatorhilfe wird sprachspezifisch angezeigt, sofern op_help/<name>.<lang>.html existiert. Ehrlich gesagt:
Zur Laufzeit wechselnde Statustexte (running… / PASS usw.) sowie der Fließtext der Operator-Hinweise sind
derzeit nicht Teil der Übersetzung (die Übersetzung der Operator-Hinweise ins Englische ist eine künftige Aufgabe,
gekoppelt an eine zweisprachige Version der Docstrings).
Studio geht über die Phase hinaus, in der “Code nur aus der Pipeline heraus aufgerufen werden kann”, und lässt sich auch als Python-Entwicklungsumgebung nutzen.
import fullseye direkt funktioniert; ungespeicherte Puffer laufen
über eine Scratch-Kopie, ohne Save zu erzwingen). Über Samples ▾ lassen sich alle mitgelieferten
Arbeitsbeispiele in einem neuen Tab öffnen (ohne Pfad geöffnet, sodass die mitgelieferten Beispiele nicht
versehentlich überschrieben werden können). Der ausführende Interpreter kann unter System settings ▸ Editor
geändert werden.v.mean() /
np.percentile(v, 99) / (v > 0.5).sum() usw.; v = ausgewählte Variable, np = numpy, img = Eingabe), der
bei jeder Auswahl- oder Pipelineänderung automatisch neu ausgewertet wird. Ein fehlgeschlagener Ausdruck
zeigt in seiner Zeile ⚠ (das Panel stürzt dabei nicht ab). Über Rechtsklick auf eine Variable ▸ Inspect in
popup… erscheint sofort eine nach Typ gegliederte Prüfung samt Perzentilen und Wertvorschau. Bekannte
Einschränkung (ehrlich gesagt): Da Überwachungsausdrücke synchron im GUI-Thread ausgewertet werden, blockiert ein
sehr aufwendiger Ausdruck (etwa das vollständige Durchsuchen eines riesigen Arrays) währenddessen die
Oberfläche. Aufwendige Auswertungen sollten vereinfacht oder stattdessen im Python Editor ausgeführt werden.Dateien oder Ordner auf das Hauptfenster ziehen – jede öffnet sich im passenden Fenster (mehrere Dateien auf einmal öffnen mehrere Fenster). Die vollständige Liste steht unter Help ▸ Öffnebare Dateien (Drag & Drop)…; diese Tabelle wird aus den Endungskonstanten gebaut, die Studio tatsächlich verwendet, und kann daher neuer sein als dieser Abschnitt.
| Was Sie ablegen | Öffnet in | Hinweise |
|---|---|---|
| Bilder (png / jpg / tif / webp / pgm / pfm / jp2 …), Ordner | Bildbetrachter | Liste, Zoom, Pixelwerte, Histogramm, „Als Pipeline-Eingabe verwenden“. Ein Ordner öffnet die Bilder direkt darin |
.py |
Python-Editor (ein Tab pro Datei) | |
.json |
Pipeline | |
| Punktwolken und Netze (PLY / STL / PCD / OBJ / OFF / XYZ) | 3-D-Ansicht | ASCII und binär (PLY Little- und Big-Endian, PCD auch binary_compressed) |
3DGS (.ply / .splat) |
3-D-Ansicht | Farbe aus dem SH-DC-Term; Splats mit Deckkraft < 0.05 ausgeblendet |
| Medizinische Volumen (NIfTI / NRRD / MHA / DICOM) | 3-D-Ansicht | Benötigt SimpleITK o. ä. |
glTF (.glb / .gltf), LiDAR (.las / .laz) |
3-D-Ansicht | Benötigt pygltflib / laspy |
| Roboter (MJCF / URDF) | 3-D-Ansicht | .xml nur mit Wurzel <mujoco> oder <robot>. Benötigt mujoco |
Motion Capture (.bvh), Neuronenmorphologie (.swc) |
3-D-Ansicht | BVH-Gelenkbahnen nach Zeit eingefärbt |
| Videos, animierte GIFs, HDF5 | Videowürfel | |
| Eventkamera (x, y, t, p) (txt / csv / npy / npz) | Videowürfel | Am Inhalt erkannt, zu Polaritäts-Frames |
.npy |
Nach Form | 2-D → Eingabebild, (N, 3 / 6) → Punktwolke, 3-D → Volumen |
| Markdown, SVG | Dokumentbetrachter | |
| Audio (wav / mp3 / flac / ogg …) | Audiofenster | Wellenform, Spektrogramm, Wiedergabe. Nicht-WAV benötigt soundfile |
Robotermodell + qpos-.npy (T, nq) zusammen |
Roboter-Player | Schieberegler und Wiedergabeknopf |
Ein Fenster, das Ops der typisierten Ledger (PIV, Mathematik, Fahren, 3-D … rund 1.700) mit Eingabefeldern passend zum Typ jedes Arguments ausführt. Links Namen oder Wörter suchen, eine Op wählen – rechts erscheint das Argumentformular.
ode_vector_field_grid
ein Strömungsfeld erzeugen und die Eingabe von piv_quiver auf „letztes Ergebnis“ setzen: ein Pfeilbild). Eine Eingabe
vom falschen Typ (das aktuelle Bild in einem flow2d-Feld) wird mit Begründung abgelehnt statt ausgeführt.None bedeutet None, Listen als 1, 2, 3. Matrix- oder dict-Beispiele werden als Marke
<sample> gehalten. Ein unlesbarer Wert wird nie stillschweigend durch den Standardwert ersetzt – das Fenster
nennt Argument und Grund.result = …).fs.ledger. oder fs. Namensvorschläge (jederzeit mit Strg+Leertaste).
Eine gewählte Ledger-Op fügt den Aufruf mit Daten- und Pflichtargumenten ein – z. B. dem_slope(dem, cell_size=) – mit dem
Cursor in der ersten Lücke. Rechtsklick auf einen Op-Namen oder Strg+Umschalt+L darauf öffnet das Fenster dieser Op.ledger: Name öffnet das Fenster jeder Ledger-Op mit drei Eingaben (Strg+P → Name → Enter).Manche Ops laufen nicht mit ihrem Beispiel (eine Grenze der Beispielerzeugung pro Op: am 2026-10-03 liefen 27 von 60 Stichproben-Ops so). Dass das Fenster selbst keine Fehler hinzufügt, prüft ein Gate: Es muss mit der direkten Übergabe des Beispiels an die Op übereinstimmen.
Bei einem typisierten Eingang table wählt man im bestehenden Ledger-Runner CSV-Datei…. Rollen werden nur aus
tatsächlichen Spalten gewählt. Für Gauge R&R sind dies part / Teile-ID, operator / Prüfer und value / Messwert.
Die Prüfung nennt Zeilen, eindeutige Schlüssel, fehlende Werte und Wiederholungen. Ungleiche Gruppen werden vor dem Lauf
namentlich abgelehnt, nie repariert. Zuordnungen gelten je Operation und Kopfzeilensignatur. Die CSV bleibt unverändert.
| Ergebnis | Darstellung |
|---|---|
flow2d (2, h, w) |
Pfeile (längster = 0,9 × Abstand) über einem Farbkreis mit Farbton = Richtung, Helligkeit = Geschwindigkeit |
| 1-D-Zahlen | eine Linie (MATLAB plot(y)) |
| Tabelle (dict) | gleich lange numerische Spalten als Linien; x-Achse ist eine Spalte t / x / freq …, falls vorhanden |
(h, w, 4) / (h, w, 1) / komplex |
RGB über Weiß / Graustufen / Betrag |z| |
| leere Arrays, 4-D und mehr | Form und Wertebereich als Text (der erste Wert wird nicht als „Skalar“ gezeigt) |
⟳ calc für eine diesmal berechnete und ↺ cache für eine aus dem Cache gelieferte Stufe. Ein Bildwechsel, Umsortieren oder Löschen verwirft alles ab der betroffenen Stufe. Der Cache hält je Stufe nur das neueste Ergebnis und wächst daher beim wiederholten Ziehen nicht.ran) und „ist das Ergebnis tragfähig” (valid) werden getrennt geführt. Enthält ein Ergebnis NaN / Inf, ist es leer oder haben alle Pixel denselben Wert, erhält die Stufenzeile ein ⚠; der Grund steht im Tooltip und in Problems (eine andere Zeile als die ✕-Fehler). Ist das Ergebnis eine Tabelle mit Feldern wie converged / valid / ok, übernimmt Studio diese Angabe. Ein Ergebnis ohne Gültigkeitsangabe heißt „Gültigkeit nicht beurteilt“, nie OK. Nach Run all zeigt die Statuszeile „Lauf: fertig / Ergebnis: prüfen (Grund)“ oder „Lauf: fertig / Ergebnis: Gültigkeit nicht beurteilt“. Studio meldet nur; es behebt das numerische Problem der Operation nicht und ändert keinen Wert.input eine Referenz auf die geladene Bilddatei ab (Pfad wie angegeben, sha256 der Datei, shape, dtype). Beim Öffnen wird eine vorhandene Datei mit passendem sha256 stillschweigend neu geladen. Eine vorhandene, aber geänderte Datei wird geladen, und Problems zeigt „input file changed since save“. Fehlt sie, bleibt das aktuelle Bild, und Problems zeigt „input not found: Pfad“ (eine gleichnamige Datei neben der .json wird als Kandidat zum Neu-Verknüpfen versucht). Ältere JSON-Dateien ohne input werden wie bisher geladen.true der Stufe gespeichert (ist er aus, wird nichts geschrieben; eine Datei ohne Bypass bleibt byte-identisch); er gehört zum Cache-Schlüssel, ein Umschalten berechnet also ab dieser Stufe neu. Der Python-Export behält nur die Kommentarzeile # bypassed: op, und das exportierte Skript liefert dasselbe Ergebnis wie der Bildschirm. Im Program-Text ist eine überbrückte Stufe die Zeile # bypassed: op (a, b); „Apply“ liest sie zurück, die Marke bleibt also erhalten.pinned nur Stufen, Eingabe, Anzeige und Notiz (nie die Arrays) und berechnet die Arrays beim Öffnen neu; gelingt das nicht, bleibt der Stand erhalten und Problems meldet “cannot recompute A”. Ältere Dateien ohne pinned öffnen sich wie bisher.Unter Run ▸ Diese Verarbeitung auf einen Ordner anwenden… wählen Sie den Eingabeordner und das Dateimuster, prüfen das Ergebnis am ersten, mittleren, letzten oder einem beliebigen Bild und führen dann alle Dateien aus. Eingaben und Verarbeitungskette werden beim Start einmal eingefroren; ein Regler, der während des Laufs verstellt wird, ändert die Bedingungen des laufenden Stapels nicht.
Bei gleichnamigen Dateien wählen Sie zwischen „nicht überschreiben“, „überschreiben“ und „Laufnummer anhängen“; sind Unterordner einbezogen, entsteht auf der Ausgabeseite dieselbe Hierarchie. summary.csv enthält Dateiname, Status, Verarbeitungszeit, numerische Ausgaben und den Fehlergrund. Schlägt das Lesen oder Verarbeiten eines Bildes fehl, läuft der Rest weiter; danach lassen sich die fehlgeschlagenen Dateien mit Grund in einer Liste prüfen. Eine Stopp-Anforderung wird an der Grenze nach dem aktuellen Bild angenommen, und „gestoppt“ erscheint erst, wenn der Lauf wirklich steht.
Über die obere Leiste wählen Sie Verarbeitung erstellen, Ergebnisse vergleichen, Werte untersuchen oder Code erstellen; die benötigten Panels werden vergrößert, die übrigen eingeklappt. Strg+1–4 wechselt den Modus. Eingaben, Verarbeitungsschritte und berechnete Ergebnisse bleiben unverändert, manuelle Panel-Anpassungen werden je Modus gespeichert. F11 zeigt vorübergehend nur das Bild, Esc stellt die vorherige Anordnung exakt wieder her. „Panel suchen…“ findet ausgeblendete Panels anhand japanischer oder englischer Namen.
Automatisch je Bild berechnet für jedes Bild einen eigenen Bereich, Gemeinsam für Vergleichsbilder verwendet einen Bereich für A/B und Manuell wendet die eingegebenen Grenzen auf Anzeigemodi an, die einen Wertebereich verwenden. Ein Modus ohne Wertebereich, etwa region overlay, weist im Label darauf hin. Der Hinweis „nur Anzeigeverarbeitung“ bedeutet, dass die Rohwerte unverändert bleiben. NaN und Inf erscheinen magenta; Werte außerhalb des Bereichs erhalten die Endfarbe und lösen eine Warnung mit Pixelzahl aus. Beim Speichern stehen Originalwerte, aktuelles Anzeigebild und beides zur Wahl; Originalwerte sind voreingestellt.
Eine in Studio aufgebaute Pipeline lässt sich in 3 Formen mitnehmen.
| Form | Ausgabe über | Einsatz |
|---|---|---|
--ops-String |
Export (Strg+E) | zum Einfügen in imgevolve.py pipeline --ops "…" / run "…" der CLI |
| Python-Funktion | Export (Strg+E) | zum Einbetten als fullseye.run_pipeline(...) im eigenen Code |
| JSON | Save pipeline (Strg+Umschalt+S) | zur Ausführung mit FullseyeEngine.load(...) / imgevolve.py run pipeline.json |
Der zu HDevelop→HDevEngine äquivalente Ablauf “Entwurf in Studio, Ausführung in Code/CLI” läuft über das JSON. Für die Seite, die das JSON entgegennimmt und ausführt, siehe ENGINE.md.