Data-Layer-Referenz
Jede Adresse unten ist relativ zu
hdvisionsystems/lumiscan-area-detector/
Data Layer
LumiScan Area Detector bietet seine Funktionen auf dem Data Layer unter hdvisionsystems/lumiscan-area-detector an.
Auf ctrlX OS (ctrlX CORE oder ctrlX IPC) nutzt LumiScan Area Detector den ctrlX Data Layer.
Auf einem PC mit Windows 11 oder Ubuntu 24.04 nutzt LumiScan Area Detector LumiScan Keryx.
Knotenadressen, Typen und Aufrufmuster sind auf beiden gleich. LumiScan Area Detector bietet:
-
ein Stream-Abonnement auf eine Quelle (experimentell)
Wie Adressen aufgebaut sind, wie Funktionen aufgerufen werden, die Statuscodes und die Werkzeuge sind in LumiScan Keryx beschrieben.
Anwendungsweite Knoten
| Adresse | Typ | Zugriff | Beschreibung |
|---|---|---|---|
|
string[] |
lesen |
Die Module, die gerade existieren |
|
Methode |
schreiben |
Ein Modul hinzufügen |
|
string |
lesen/schreiben |
Name für das neue Modul |
|
Methode |
schreiben |
Ein Modul entfernen |
|
string |
lesen/schreiben |
Zu entfernendes Modul |
|
Methode |
schreiben |
Die Modulliste dauerhaft speichern |
|
Methode |
schreiben |
Die Einstellungen eines Moduls dauerhaft speichern |
|
string |
lesen/schreiben |
Zu speicherndes Modul |
|
string |
lesen |
Was der Knoten enthalten muss, den ein Modul abonniert, als JSON Schema (draft-04) seiner JSON-Form: hier ein |
Jede Methode bedient außerdem output/status-code und output/status-text.
Knoten pro Modul
Alle Adressen unten liegen unter <module-id>/detect-area/.
Von jeder Methode verwendet
| Adresse | Typ | Standard | Beschreibung |
|---|---|---|---|
|
Methode |
- |
Eine Erkennung ausführen |
|
string |
(leer) |
Adresse des zu durchsuchenden Bildknotens |
|
string |
FIXED |
|
|
uint16 |
0 |
Linker Rand der zu durchsuchenden Region |
|
uint16 |
0 |
Oberer Rand |
|
uint16 |
0 |
Breite; 0 reicht bis zum rechten Rand |
|
uint16 |
0 |
Höhe; 0 reicht bis zum unteren Rand |
|
string |
NONE |
|
|
float64 |
1.0 |
Muss > 0 sein |
|
float64 |
0.0 |
0 bedeutet gleich sigma-x |
|
uint32 |
0 |
0 berechnet sie aus dem Sigma, sonst ungerade |
|
uint32 |
0 |
0 berechnet sie aus dem Sigma, sonst ungerade |
|
float64 |
1.0 |
Muss sich von sigma-second unterscheiden |
|
float64 |
2.0 |
Muss sich von sigma-first unterscheiden |
|
uint32 |
0 |
0 berechnet sie aus dem Sigma, sonst ungerade |
|
uint32 |
0 |
0 berechnet sie aus dem Sigma, sonst ungerade |
|
uint32 |
3 |
Muss 1, 3, 5 oder 7 sein |
Was als Region zählt
| Adresse | Typ | Standard | Beschreibung |
|---|---|---|---|
|
boolean |
false |
Dunkle Regionen auf hellem Hintergrund |
|
int32 |
8 |
4 oder 8; 8 verbindet diagonale Nachbarn |
|
boolean |
false |
Eine Region als die Form messen, die ihr Umriss einschließt |
Ein Flächenfenster gibt es nicht zu konfigurieren. Jede Region, die der Detektor getrennt hat, wird
gemeldet, wie klein oder groß sie auch ist; ob eine davon zu klein für ein Teil oder zu groß für ein
einzelnes ist, ist eine Entscheidung über die Teile - und die gehört demjenigen, der output/result
liest.
Der Schwellwert
| Adresse | Typ | Standard | Beschreibung |
|---|---|---|---|
|
float64 |
128 |
Der Schwellwert selbst, 0-255 |
Der Ordner behält seinen Namen, damit die Adresse erhalten bleibt, falls die Methoden zurückkehren, die ihren Schwellwert aus dem Bild bezogen.
Ausgaben
| Adresse | Typ | Beschreibung |
|---|---|---|
|
flatbuffers |
Regionen des letzten Durchlaufs |
|
int16 |
Ausgang als Zahl |
|
string |
Ausgang in Worten |
|
Bild ( |
Mono16, eine Regionsnummer pro Pixel; 0 ist Hintergrund |
Das Label-Bild umfasst den ganzen Frame und enthält die blobs[].label-Nummern, sodass sich eine
gemeldete Fläche bis zu den Pixeln zurückverfolgen lässt, aus denen sie gemessen wurde. Es wird
geleert, wenn der nächste Durchlauf beginnt. Siehe
Das Label-Bild.
Eine Szene analysieren
Unter system/analyse-scene/ - die Analyse beschreibt ein Bild, kein Modul. Siehe
Eine Szene analysieren.
| Adresse | Typ | Standard | Beschreibung |
|---|---|---|---|
|
Methode |
- |
Das Bild messen und melden, wie hoch ein fester Schwellwert sein müsste |
|
string |
(leer) |
Der zu analysierende Bildknoten; ihr eigener, nicht der eines Moduls |
|
uint16 |
0 |
Die zu analysierende Region; lauter Nullen bedeuten das ganze Bild |
|
int32 |
0 |
Eine verkleinerte Kopie messen; 0 verkleinert nur, was nötig ist, 1 erzwingt volle Größe |
|
int32 |
256 |
Klassen in |
|
uint32[] |
(leer) |
Pixel pro Grauwertklasse, dunkelste zuerst, in voller Größe |
|
string[] |
(leer) |
|
|
string[] |
(leer) |
Warum, in Worten, mit den Zahlen darin |
|
boolean |
false |
Ob die Regionen dunkler als ihr Hintergrund sind |
|
boolean |
false |
Ob Regionen in Wirklichkeit mehrere zusammenhängende Teile sind |
|
int32 |
0 |
Gefundene Regionen |
|
int32 |
0 |
Wie viele Teile diese Regionen vermutlich enthalten |
|
float64 |
0 |
[Grauwerte] Schwankung des Hintergrunds über das Bild |
|
float64 |
0 |
Wie sauber sich das Bild trennt, 0 bis 1 |
|
float64 |
0 |
[Pixel] Halbe Breite eines typischen Merkmals |
|
float64 |
0 |
[pro Grauwert] Wie stark sich die Fläche mit dem Schwellwert bewegt. Kleiner ist besser; über |
Bild-Stream-Knoten pro Modul (experimentell)
Alle Adressen unten liegen unter <module-id>/, neben detect-area/. Der Stream durchsucht jeden
Frame mit den Eingaben von detect-area, allen außer input/input-image-address, und veröffentlicht
nur die Messwerte: Es gibt kein Stream-Gegenstück zu output/blob-labels. Siehe
Flächen auf einem Bild-Stream erkennen.
| Adresse | Typ | Standard | Beschreibung |
|---|---|---|---|
|
boolean |
wie angewendet |
Stream-Modus: |
|
string |
wie angewendet |
Die eine Quelle, der Stream-Ordner einer Kamera, z. B. |
|
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. |
|
uint32 |
wie angewendet |
Frames, die warten dürfen, während einer durchsucht wird, 1-64 |
|
boolean |
wie angewendet |
|
|
Methode |
- |
Prüft die Eingaben von |
|
Methode |
- |
Entfernt die in |
|
string |
(leer) |
Die zu entfernende Quelle, so wie |
|
wie die Eingaben |
|
Was |
|
string |
- |
Hash dessen, womit die Ergebnisse erzeugt werden, 16 Hexadezimalziffern. Schreibgeschützt |
|
boolean |
false |
|
|
flatbuffers |
leer |
Ein |
|
string |
(leer) |
Warum der letzte Frame, der nicht durchsucht werden konnte, fehlgeschlagen ist; nennt die Quelle über ihre Adresse |
|
uint64 |
0 |
Millisekunden seit dem Start des Streams |
|
uint64 |
0 |
Frames, die das Abonnement geliefert hat |
|
uint64 |
0 |
Durchsuchte Frames, jeder mit einem Ergebnis |
|
uint64 |
0 |
Frames, die aus der Warteschlange verdrängt wurden oder warteten, als die Quelle ersetzt oder entfernt wurde |
|
uint64 |
0 |
Frames, die nicht durchsucht werden konnten |
|
uint64 |
0 |
Frames, die verloren gingen, bevor sie ankamen |
|
uint64 |
0 |
Erkennungszeit aller durchsuchten Frames, 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. Kann <module-id>.json nicht geschrieben werden,
antworten beide mit DL_CREATION_FAILED (auf einem PC CreationFailed) und ändern nichts.
Der Ergebnis-Flatbuffer
output/result enthält hdv.area_detect.Result:
| Feld | Typ | Bedeutung |
|---|---|---|
|
Blob[] |
Alle Regionen, nach Fläche absteigend sortiert |
|
float |
[Pixel] Mittelpunkt der Region |
|
float |
[Pixel^2] Pixel, die die Region bedeckt, gezählt |
|
uint |
Welche Region dies in |
|
int |
Eng anliegendes Rechteck um die Region |
|
uint |
Anzahl der Regionen |
|
float |
[Pixel^2] Summe über alle Regionen |
|
ulong |
Index der größten Region |
|
float |
[Pixel^2] Ihre Fläche |
|
uint |
Der Frame, in dem die Koordinaten liegen |
|
string |
NONE, LOG, DOG oder DOH, wie angewendet |
|
ulong |
Mikrosekunden seit der Epoche |
control/subscribe/output/stream/result enthält hdv.stream.StreamAreas (stream_areas, registriert als
types/hdvisionsystems/lumiscan-area-detector/stream_areas): lineage, woher der Frame kam, und
result, das obige hdv.area_detect.Result. Zu seinem blobs[].label gibt es kein Label-Bild zum
Nachschlagen.
Konfigurationsdatei
Die Anwendungs-Einstellungsdatei ist lumiscan-area-detector.json im Konfigurationsverzeichnis der
Anwendung:
| Plattform | Datei |
|---|---|
ctrlX OS |
|
PC (Windows) |
|
{
"system": { "logLevel": "INFO" },
"modules": [ { "id": "module-1", "advanced": false } ]
}
logLevel akzeptiert TRACE, DEBUG, INFO, WARN, ERROR, FATAL und OFF, gelesen beim Start.
Die gespeicherten Einstellungen jedes Moduls liegen daneben in <module-id>.json, und ebenso Modus,
Quelle, Warteschlangengröße und keep-latest-output seines Bild-Streams, unter stream.
Mit einem Beispiel beginnen (PC)
Auf einem PC schreibt der Area Detector ein Beispiel seiner Einstellungen in einen Ordner Ihrer Wahl und beendet sich, ohne zu starten. Unter Windows:
lumiscan-areadetect --generate-settings C:\work\area-detector-settings
Ohne Ordner (-g allein) schreibt er in den aktuellen Ordner. Das Beispiel besteht aus der
Anwendungs-Einstellungsdatei lumiscan-area-detector.json, die das Modul module-1 nennt, und der
Moduldatei module-1.json daneben: jede Eingabe von detect-area mit ihrem Standardwert, außer der
Bildadresse, die camera1 des Cam Driver ist.
Daneben, in schemas/, liegen die Schemas, die die beiden Dateien in "$schema" nennen:
lumiscan-area-detector.schema.json, lumiscan-area-detector-module.schema.json und
stream.schema.json für den Abschnitt stream einer Moduldatei. Sie beschreiben jeden Schlüssel, den
der Area Detector liest - jede Eingabe von detect-area mit ihrem Typ, ihrem Standardwert und dem
Bereich, den ein Durchlauf akzeptiert -, sodass ein Editor, der JSON Schema versteht, die Dateien
prüfen und anzeigen kann, was jeder Wert bedeutet. Kopieren Sie den Ordner schemas zusammen mit den
Dateien: system/save-module-inputs behält das "$schema" einer Moduldatei, die es speichert.
Vorhandene Dateien werden nie überschrieben: Liegt eine davon bereits im Ordner, wird nichts
geschrieben, und der Area Detector sagt, welche.
Der Area Detector nennt dann den Ordner, aus dem er seine Einstellungen liest, unter Windows
standardmäßig
C:\ProgramData\HD Vision Systems GmbH\LumiScan Vision Suite\lumiscan-areadetect\etc\lumiscan-area-detector.
Bearbeiten Sie das Beispiel, kopieren Sie es dorthin, und starten Sie den Area Detector. Siehe auch
Wo die Dateien liegen.