Data-Layer-Referenz

Vollständige Liste der Knoten. Alle Pfade beginnen mit:

hdvisionsystems/lumiscan-template-finder/

Data Layer

LumiScan Template Finder bietet seine Funktionen auf dem Data Layer unter hdvisionsystems/lumiscan-template-finder an.

Auf ctrlX OS (ctrlX CORE oder ctrlX IPC) nutzt LumiScan Template Finder den ctrlX Data Layer.

Auf einem PC mit Windows 11 oder Ubuntu 24.04 nutzt LumiScan Template Finder LumiScan Keryx.

Knotenadressen, Typen und Aufrufmuster sind auf beiden gleich. LumiScan Template Finder bietet:

Wie Adressen aufgebaut sind, wie Funktionen aufgerufen werden, die Statuscodes und die Werkzeuge sind in LumiScan Keryx beschrieben.

Adressmuster

hdvisionsystems/lumiscan-template-finder/
├── system/                              application-wide management
│   ├── modules
│   ├── template-dir                     the one directory templates live in
│   ├── templates                        what is in it
│   ├── set-template-dir/
│   ├── create-template/                 application-wide, not per module
│   ├── create-module/
│   ├── remove-module/
│   ├── save-current-modules/
│   ├── save-module-inputs/
│   └── meta/subscription-schema         what the stream's source must hold
└── <module-id>/                         one per configured instance, e.g. module-1
    ├── find-template/
    │   ├── execute
    │   ├── input/...
    │   └── output/{result, status-code, status-text}
    ├── control/subscribe/               the image stream (experimental)
    │   ├── execute
    │   ├── input/{enable, address, tag, queue-size, keep-latest-output}
    │   └── output/stream/...
    ├── control/unsubscribe/{execute, input/address}
    └── setting/{stream, settings-hash}

Jede Operation hat execute, output/status-code und output/status-text. Alles Weitere unter output/ ist nur dort vorhanden, wo die Operation mehr zu melden hat.

Eine neue Installation stellt ein Modul bereit, module-1; weitere können zur Laufzeit angelegt werden. Auf ctrlX OS deckt eine Lizenz zehn Module ab. Siehe Modulverwaltung.

system

Knoten Typ Beschreibung

system/modules

string array

Die derzeit vorhandenen Module

system/template-dir

string

Verzeichnis, aus dem jedes Modul Vorlagen liest und in das sie geschrieben werden, relativ zum Konfigurationsverzeichnis. Schreibgeschützt - ändern Sie es mit set-template-dir

system/templates

string array

In diesem Verzeichnis verfügbare Vorlagen, ohne die Erweiterung .png. Schreibgeschützt

system/set-template-dir/execute

Methode

Richtet die Anwendung auf ein anderes Vorlagenverzeichnis

system/set-template-dir/input/template-dir

string

Verzeichnis, zu dem gewechselt wird. Es muss bereits vorhanden sein

system/create-template/execute

Methode

Schneidet eine Vorlage aus einem Live-Bild aus und speichert sie in template-dir. Gilt für die gesamte Anwendung: Die Vorlage ist für jedes Modul nutzbar. Ihre Eingaben und Ausgaben sind unter system/create-template aufgeführt

system/create-module/execute

Methode

Legt ein Modul und seinen Knoten-Teilbaum an

system/create-module/input/module-id

string

Name des anzulegenden Moduls

system/remove-module/execute

Methode

Entfernt ein Modul und seinen Knoten-Teilbaum

system/remove-module/input/module-id

string

Name des zu entfernenden Moduls

system/save-current-modules/execute

Methode

Speichert die Modulliste dauerhaft, sodass dieselben Module nach einem Neustart wieder da sind

system/save-module-inputs/execute

Methode

Speichert die Eingaben eines Moduls dauerhaft

system/save-module-inputs/input/module-id

string

Modul, dessen Eingaben gespeichert werden sollen

system/meta/subscription-schema

string

Was der Knoten enthalten muss, den ein Modul abonniert, als JSON Schema (draft-04) seiner JSON-Form: hier ein stream_image, der Knoten frame des Stream-Ordners, mit lineage und image. Für jedes Modul gleich. Schreibgeschützt. Experimentell

<module-id>/find-template

Eingaben

Knoten Typ Standard Beschreibung

input/input-image-address

string

(leer)

Adresse des zu durchsuchenden Bildknotens

input/template-name

string

(leer)

Gesuchte Vorlage, wie auf system/templates aufgeführt. .png wird angehängt, wenn keine Erweiterung angegeben ist

input/crop/startX

uint16

0

Linker Rand der zu durchsuchenden Region, Pixel

input/crop/startY

uint16

0

Oberer Rand der zu durchsuchenden Region, Pixel

input/crop/width

uint16

0

Breite der Region. 0 reicht bis zum rechten Rand

input/crop/height

uint16

0

Höhe der Region. 0 reicht bis zum unteren Rand

input/result-coordinate

string

IMAGE

IMAGE oder CROP: auf welches Bild sich die Positionen im Ergebnis beziehen

input/scale/min-scale

double

1.0

Kleinster Skalierungsfaktor

input/scale/max-scale

double

1.0

Größter Skalierungsfaktor

input/scale/step-scale

double

1.0

Schrittweite zwischen den Skalierungen

input/rotation/min-rot

double

0.0

Kleinste Drehung, Grad

input/rotation/max-rot

double

0.0

Größte Drehung, Grad

input/rotation/step-rot

double

1.0

Schrittweite zwischen den Drehungen, Grad

input/match-thresh

double

0.9

Kleinster akzeptierter Score, 0-1

input/match-mode

string

TM_SQDIFF_NORMED

Matching-Algorithmus

input/use-grayscale

bool

true

Matching auf Graustufen

input/preprocess/blur-sigma-x

double

1.0

Stärke der Unschärfe in X; 0 oder weniger schaltet sie aus

input/preprocess/blur-sigma-y

double

0.0

Stärke der Unschärfe in Y; 0 bedeutet dieselbe wie in X

input/preprocess/blur-kernel-size-x

uint32

0

Breite des Unschärfe-Kernels; 0 leitet sie aus der Stärke ab

input/preprocess/blur-kernel-size-y

uint32

0

Höhe des Unschärfe-Kernels; 0 leitet sie aus der Stärke ab

input/preprocess/bin-size

int32

1

Faktor der Verkleinerung; 1 schaltet sie aus

Ausgaben

Knoten Typ Beschreibung

output/result

flatbuffer

Treffer, nach Konfidenz sortiert

output/status-code

int16

Ausführungsstatus

output/status-text

string

Ergebnis in Worten

<module-id> Bild-Stream (experimentell)

Die folgenden Adressen sind relativ zu <module-id>/, neben find-template/. Der Stream durchsucht jedes Bild mit den Eingaben von find-template, alle außer input/input-image-address. Siehe Vorlagen in einem Bild-Stream finden.

Eingaben

Knoten Typ Standard Beschreibung

control/subscribe/input/enable

bool

wie angewendet

Stream-Modus: true lässt den Stream laufen, false stoppt ihn

control/subscribe/input/address

string

wie angewendet

Die eine Quelle, der Stream-Ordner einer Kamera, z. B. hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream. Eine andere Adresse ersetzt sie

control/subscribe/input/tag

string

wie angewendet

Das Tag auf den Ergebnissen des Moduls: Der Schritt des Moduls in der Lineage jedes Stream-Ergebnisses trägt es. Leer: die Modul-ID, z. B. module-1. Ein neues Tag behält die Quelle; das nächste Ergebnis trägt es

control/subscribe/input/queue-size

uint32

wie angewendet

Bilder, die warten dürfen, während eines durchsucht wird, 1-64

control/subscribe/input/keep-latest-output

bool

wie angewendet

true schreibt jedes Stream-Ergebnis zusätzlich auf find-template/output/result

control/unsubscribe/input/address

string

(leer)

Die zu entfernende Quelle, wie setting/stream/address sie zeigt

Methoden

Knoten Typ Beschreibung

control/subscribe/execute

Methode

Prüft die Eingaben von control/subscribe gemeinsam, speichert sie in <module-id>.json als stream und wendet sie dann an. Nur eine Eingabe zu schreiben ändert nichts

control/unsubscribe/execute

Methode

Entfernt die von control/unsubscribe/input/address genannte Quelle, was den Stream-Modus beendet; das Tag bleibt. Wird wie ein Subscribe in <module-id>.json gespeichert

Einstellungen und Ausgaben

Knoten Typ Beschreibung

setting/stream/{enable, address, tag, queue-size, keep-latest-output}

wie die Eingaben

Was control/subscribe/execute oder control/unsubscribe/execute zuletzt angewendet hat. Schreibgeschützt

setting/settings-hash

string

Hash dessen, womit die Ergebnisse erzeugt werden, 16 Hexadezimalziffern. Schreibgeschützt

control/subscribe/output/stream/active

bool

true, solange der Stream läuft

control/subscribe/output/stream/result

flatbuffer

Ein stream_template_matches pro durchsuchtem Bild. Abonnieren Sie den Knoten, um jedes zu erhalten

control/subscribe/output/stream/last-failure

string

Warum das letzte Bild, das nicht durchsucht werden konnte, fehlgeschlagen ist, mit der Quelle anhand ihrer Adresse

control/subscribe/output/stream/statistics/elapsed-ms

uint64

Millisekunden seit dem Start des Streams

control/subscribe/output/stream/statistics/received-frames

uint64

Bilder, die das Abonnement geliefert hat

control/subscribe/output/stream/statistics/processed-frames

uint64

Durchsuchte Bilder, jedes mit einem Ergebnis

control/subscribe/output/stream/statistics/skipped-frames

uint64

Bilder, die aus der Warteschlange gedrängt wurden oder warteten, als die Quelle ersetzt oder entfernt wurde

control/subscribe/output/stream/statistics/failed-frames

uint64

Bilder, die nicht durchsucht werden konnten

control/subscribe/output/stream/statistics/lost-frames

uint64

Bilder, die verloren gingen, bevor sie ankamen

control/subscribe/output/stream/statistics/processing-us

uint64

Suchzeit aller durchsuchten Bilder, summiert, Mikrosekunden

Die Eingaben von control/subscribe beginnen mit dem, was angewendet ist, und nur control/subscribe/execute wendet sie an. control/subscribe/execute wird für den Stream-Modus ohne Adresse oder mit einer Warteschlangengröße außerhalb von 1-64 abgelehnt, control/unsubscribe/execute für eine Adresse, die nicht die Quelle ist (Rejected, ctrlX: DL_INVALID_VALUE). Kann <module-id>.json nicht geschrieben werden, antworten beide mit CreationFailed (ctrlX: DL_CREATION_FAILED) und ändern nichts. Die Stream-Knoten sind in jedem Konsumenten gleich, siehe Streams.

system/create-template

Eingaben

Knoten Typ Standard Beschreibung

input/input-image-address

string

(leer)

Adresse des Bildknotens, aus dem ausgeschnitten wird

input/crop/startX

int32

0

Linker Rand der Region, Pixel

input/crop/startY

int32

0

Oberer Rand der Region, Pixel

input/crop/width

int32

0

Breite der Region, Pixel

input/crop/height

int32

0

Höhe der Region, Pixel

input/template-name

string

(leer)

Name, unter dem in system/template-dir gespeichert wird. Verwenden Sie Kleinbuchstaben: Nur .png-Dateien in Kleinbuchstaben werden aufgeführt

Ausgaben

Knoten Typ Beschreibung

output/template-path

string

Pfad der geschriebenen Datei, relativ zum Konfigurationsverzeichnis

output/status-code

int16

Ausführungsstatus

output/status-text

string

Ergebnis in Worten

Ergebnis-FlatBuffer

output/result ist ein hdv.template_match.Result:

Feld Typ Beschreibung

matches

Array aus Match

Ein Eintrag pro Vorkommen, nach Konfidenz sortiert

best_index

ulong

Index des besten Treffers; immer 0

best_score

float

Konfidenz des besten Treffers; 0.0, wenn keiner

template_name

string

Verwendete Vorlage

match_mode

string

Verwendeter Algorithmus

match_thresh

float

Angewendeter Schwellwert

image_width

uint

Breite des durchsuchten Bilds

image_height

uint

Höhe des durchsuchten Bilds

timestamp

ulong

Mikrosekunden seit der Epoche

Match:

Feld Typ Beschreibung

oriented_bounding_box

struct

center_x, center_y, width, height in Pixeln; angle in Grad

confidence

float

Score, 0-1

scale

float

Skalierungsfaktor dieses Treffers

rotation

float

Drehung dieses Treffers, Grad

control/subscribe/output/stream/result ist ein hdv.stream.StreamTemplateMatches (stream_template_matches, registriert als types/hdvisionsystems/lumiscan-template-finder/stream_template_matches): lineage, woher das Bild kam, und result, das obige hdv.template_match.Result.

Erwarteter Bildknoten unter input-image-address

Die Adresse muss einen Bildknoten einer anderen Anwendung auf demselben Gerät benennen - derselben ctrlX CORE oder demselben ctrlX IPC oder demselben PC -, der Folgendes bereitstellt:

Kindknoten Typ Beschreibung

data

Array aus uint8

Rohe Pixeldaten

width

uint64

Breite in Pixeln

height

uint64

Höhe in Pixeln

pixel-type

string

Name des GenICam-Pixelformats

Eine Adresse innerhalb dieser Anwendung wird mit Statuscode -2 abgelehnt.

Statuscodes

Die vollständige Tabelle steht in Ausführungsstatus. Negativ ist immer ein Fehler; 0 bedeutet noch nicht ausgeführt; positiv bedeutet Erfolg. Das sind die eigenen Codes der Finder, nicht der Modulstatus der anderen LumiScan-Apps, siehe Ausführungsstatus der Finder.