Das Konzept der Bildquellen ermöglicht es dem HALCON-Benutzer, den Einsatz von Kameras zur Aufnahme von Bildern für ihre Bildverarbeitungsaufgabe zu konfigurieren und zu verwalten. Es ersetzt das Framegrabber-Operator-Set (siehe Bild / Bildeinzug) als HALCON's empfohlene Methode zur Ansteuerung von Kameras.
Dieses Kapitel gibt eine Einführung zum Konzept und zur Nutzung von Bildquellen. In der MVTec Interfaces Reference Documentation sind die einzelnen MVTec Bildquellen-Plugins dokumentiert.
Das bildgebende Gerät und alle weiteren Komponenten, die am Prozess des Bildeinzug beteiligt sind, können mit einem Bildquellen-Handle gesteuert werden. Es wurde entwickelt, um die sogenannten Module der Bildquelle zu kapseln:
Plugins,
Interfaces,
Geräte und
Streams.
Diese Module sind in einer hierarchischen Eltern-Kind-Konfiguration strukturiert, wobei jedes Modul als übergeordnetes Modul für das nachfolgende fungiert. Das Modulkonzept der Bildquellen ist nach dem GenICam GenTL-Standard modelliert.
Um Bilder von einem Bildquellen-Handle zu erfassen, wird ein Bildquellen-Plugin verwendet, um mit dem bildgebenden Gerät über ein Interface zu kommunizieren. Das bildgebende Gerät ermöglicht den Zugriff auf einen oder mehrere Bild-Streams. Die über diesen Stream übertragenen Bilder gelangen schließlich in mehrere Puffer im Speicher der Host-Anwendung. Die Komplexität wird dem Benutzer in den meisten Anwendungen verborgen. Standardmäßig versucht jedes Bildquellen-Handle eine vollständige Kette von Bildquellenmodulen zu verbinden: Plugin > Interface > Gerät > Stream.
In bestimmten Anwendungen kann es jedoch erforderlich sein, sich mit einem spezifischen Modul zu verbinden. Beispielsweise könnte es gewünscht sein, die Parameter eines Framegrabbers zu konfigurieren, bevor eine Kamera daran angeschlossen wird. Bildquellen-Handles können so konfiguriert werden, dass sie sich nur mit dem übergeordneten Bildquellen-Plugin und dem entsprechenden GenTL-Interface-Modul verbinden. Das Interface-Modul erlaubt dann die Konfiguration des Framegrabbers ohne Verbindung zu einem untergeordneten Modul. Ebenso können Bildquellen-Handles verwendet werden, um sich mit jedem anderen verfügbaren Modul zu verbinden oder ein gewünschtes Modul auszuwählen, falls mehrere Optionen verfügbar sind (z. B. ob Stream oder des Geräts gewählt werden soll).
Ein Bildquellen-Handle kann sich in verschiedenen Zuständen befinden. In jedem Zustand steht eine anderes Operatorenset zur Verfügung. Die Bildquellen-Operatoren können verwendet werden, um solche Zustandsänderungen auszulösen.
Die drei möglichen Zustände sind:
Das Bildquellen-Handle sollte ausreichend Informationen enthalten,
um zu spezifizieren, welches Gerät mit
verbunden werden soll.
Die Operatoren connect_image_source und
set_image_source_param gewähren Zugriff auf die Parameter
der Gruppe get_image_source_param'image_source'.
Diese existieren immer, unabhängig vom Verbindungsstatus.
Der Operator ist nur in diesem Zustand
verfügbar.
snap_from_image_source versetzt das Bildquellen-Handle
kurzzeitig in den Streaming-Zustand, setzt es aber zurück, sobald ein
Bild angekommen ist.snap_from_image_source
Die Operatoren und
set_image_source_param gewähren Zugriff auf die Parameter
aller Module, einschließlich des Gerätemoduls.
get_image_source_param
In diesem Zustand kann das bildgebende Gerät kontinuierlich Bilddaten
im Hintergrund übertragen.
Die Bilder gelangen in eine interne Pufferwarteschlange,
aus der sie mit abgerufen werden können.
fetch_from_image_source
Jedes Modul kann mit konfiguriert werden.
Um anzugeben, welches Modul der Bildquelle konfiguriert werden soll,
sind die Parameter in Gruppen unterteilt.
So sind die gruppierten Parameter mit den GenTL-Modulen verknüpft.
Die Dokumentation von Plugins, die nicht von MVTec zur Verfügung
gestellt werden gruppiert ihre Parameter möglicherweise entsprechend der
GenTL-Modulnamen.
get_image_source_param
| Parametergruppe | GenTL Modulname | Anmerkungen |
|---|---|---|
'image_source' |
- |
Die Parametergruppe 'image_source' konfiguriert die Modulkette
Plugin > Interface > Gerät > Stream
und ist den GenTL-Modulen somit übergeordnet.
Diese Parameter werden von MVTec implementiert und existieren
jederzeit, unabhängig vom Verbindungsstatus. Sie sind in
beschrieben. |
'plugin' |
System | Parameter für die globale Konfiguration im geladenen Plugin. Die Parameter in dieser Gruppe hängen davon ab, welches Plugin geladen ist, und werden vom Anbieter des geladenen Plugins implementiert. Plugins können von MVTec (siehe MVTec Interfaces Reference Documentation ) oder anderen Herstellern bereitgestellt werden. |
'interface' |
Interface | Parameter zur Konfiguration der Hardwarekomponente, die mit den Geräten interagiert. Die Parameter in dieser Gruppe hängen davon ab, welches Plugin geladen ist, und werden vom Anbieter des geladenen Plugins implementiert. Plugins können von MVTec (siehe MVTec Interfaces Reference Documentation ) oder anderen Herstellern bereitgestellt werden. |
'local_device' |
Device | Software-Abstraktion für das Hardware-Gerät. Diese Gruppe existiert aus technischen Gründen des GenTL-Standards und kann in den meisten Fällen ignoriert werden. Die Parameter in dieser Gruppe hängen davon ab, welches Plugin geladen ist, und werden vom Anbieter des geladenen Plugins implementiert. Plugins können von MVTec (siehe MVTec Interfaces Reference Documentation ) oder anderen Herstellern bereitgestellt werden. |
'device' |
Remote Device | Parameter zur Konfiguration der Bildverarbeitungs-Hardware (z. B. industrielle Kameras, Sensoren, Geräte). Diese Parameter dienen zur Einstellung der wichtigsten Eigenschaften des Bildeinzugs wie Belichtungszeit, Gain, Breite, Höhe und Auslösemodus. Die Parameter in dieser Gruppe hängen davon ab, welches Gerät angeschlossen ist, und werden vom Hersteller des angeschlossenen Geräts implementiert. |
'stream' |
Stream | Parameter zur Konfiguration der Details der Bildübertragung auf der Empfangsseite. Die Parameter in dieser Gruppe hängen davon ab, welches Plugin geladen ist, und werden vom Anbieter des geladenen Plugins implementiert. Plugins können von MVTec (siehe MVTec Interfaces Reference Documentation ) oder anderen Herstellern bereitgestellt werden. |
Hier ausklappen für Informationen zur Migration von Framegrabber- zu Bildquellen-Operatoren.
Die folgende Tabelle bietet einen Vergleich zwischen den alten Framegrabber-Operatoren und den neuen Bildquellen-Operatoren. Beim Umstellen einer Anwendung auf die neueren Bildquellen sollte jeder Framegrabber-Operator durch den entsprechenden Bildquellen-Operator ersetzt werden.
| Operator | Anmerkungen zur Migration |
|---|---|
alt:
neu: |
gibt standardmäßig einen String für jedes
gefundene Gerät zurück, der für verwendet
werden kann.
gibt standardmäßig ein Bildquellen-Handle
für jedes Gerät zurück, das für verwendet
werden kann. |
|
alt: Kein direktes Äquivalent
neu: |
erstellt ein Bildquellen-Handle in
unverbundenen Zustand.
Dies ist mit Framegrabber-Operatoren nicht möglich. |
alt:
neu: |
erstellt ein Framegrabber-Handle und
verbindet sich gleichzeitig mit dem Bildeinzugsgerät.
Bildquellen-Handles trennen diesen Vorgang in zwei Operationen auf:
, gefolgt von .
Dadurch kann sowohl mit Handles von
als auch von
verwendet werden. |
alt:
neu: |
löscht gleichzeitig das
Framegrabber-Handle. Es kann nur durch
neu erstellt werden.
lässt das Bildquellen-Handle intakt.
Er kann mit erneut verbunden werden. |
alt:
neu: |
Funktioniert ähnlich, aber die Parametergruppe wird nun mit
'group' anstelle des Präfixes
[<GenTL module>] angegeben.
Beispiel:
alt:
neu:
|
alt:
neu: |
Funktioniert ähnlich. Die Beziehung ist analog zu
und
(siehe oben). |
|
alt: Kein direktes Äquivalent
neu: |
Framegrabber-Handles stellen Parameter mit dem Präfix
'do_' bereit. Diese Art von Parametern wird durch Aktionen
ersetzt, die über verfügbar sind.
ermöglicht auch die Auflistung aller
Parameter (bisher über ). |
alt:
neu: |
Funktioniert ähnlich. |
alt:
neu: |
wird automatisch durch den ersten Aufruf von
ausgeführt, falls
nicht zuvor aufgerufen wurde.
wird nicht automatisch durch den ersten Aufruf
von ausgeführt. |
|
alt: Kein direktes Äquivalent
neu: |
Einige Framegrabber-Handles bieten den speziellen Parameter
'do_abort_grab', der die gleiche Funktion erfüllt wie
. |
alt:
neu: |
Funktioniert ähnlich. |
alt:
neu: Kein direktes Äquivalent |
kombiniert die Anwendungsfälle von
und .
Zusätzlich werden Metadaten wie Puffer-Zeitstempel und Bildzähler direkt
zurückgegeben und müssen nicht separat abgefragt werden. |
alt:
neu: Kein direktes Äquivalent |
kombiniert die Anwendungsfälle von
und .
Zusätzlich werden Metadaten wie Puffer-Zeitstempel und Bildzähler direkt
zurückgegeben und müssen nicht separat abgefragt werden. |
alt:
alt:
alt:
alt:
|
Kein direktes Äquivalent |
Die folgende Tabelle zeigt die Beziehungen zwischen MVTec Bildquellen-Plugins (siehe MVTec Interfaces Reference Documentation für Details) und klassischen Bildeinzug-Interfaces:
| Bildquellen-Plugin | Entsprechendes Bildeinzug-Interface | Anmerkungen |
|---|---|---|
'mvtec_gigevision' |
GigEVision2 |
Das Plugin 'mvtec_gigevision' enthält die gleiche
GigE Vision-Standardimplementierung wie das
GigEVision2-Bildeinzug-Interface.
Trotz des Namens (GigEVision2) ermöglichen sowohl das Plugin als
auch das Bildeinzug-Interface den Zugriff auf alle
GigE Vision-Kameras, unabhängig davon, welche Version des
GigE Vision-Standards die Kamera implementiert. |
'mvtec_usb3vision' |
USB3Vision |
Das Plugin 'mvtec_usb3vision' enthält die gleiche
Implementierung des USB3 Vision-Standards wie das
USB3Vision-Bildeinzug-Interface. |
'mvtec_realsense' |
RealSense |
Das Plugin 'mvtec_realsense' stellt ein Interface zum
Intel RealSense SDK bereit und enthält die gleiche
Low-Level-Implementierung wie das RealSense-Bildeinzug-Interface. |
'mvtec_mediafoundation' |
MediaFoundation |
Das Plugin 'mvtec_mediafoundation' stellt ein Interface
zur Microsoft Media Foundation API bereit und enthält die gleiche
Low-Level-Implementierung wie das MediaFoundation-Bildeinzug-Interface.
(Nur auf Windows-Plattformen verfügbar) |
'mvtec_gstreamer' |
GStreamer |
Das Plugin 'mvtec_gstreamer' stellt ein Interface zur
Open-Source GStreamer-Multimedia-Plattform bereit und enthält die
gleiche Low-Level-Implementierung wie das
GStreamer-Bildeinzug-Interface.
(Nur auf Linux-Plattformen verfügbar)
|
Weitere Bildquellen-Plugins zur Anbindung an noch mehr Bildübertragungstechnologien werden in Zukunft bereitgestellt.
Klassisches Bildeinzug-Interface, die hier nicht erwähnt sind (z. B. „File“, „SaperaLT“, „DirectShow“) haben kein entsprechendes Bildquellen-Plugin. Sie müssen weiterhin mit den Framegrabber-Operatoren verwendet werden.
Im Folgenden beschreiben wir die wichtigsten Begriffe, welche wir im Kontext von Bildquellen verwenden:
Bezieht sich auf das bildgebende Gerät. Darunter fallen verschiedene Arten von Sensoren, von konventionellen Industriekameras bis zu 3D-Sensoren. In speziellen Fällen kann dies auch Controller und virtuelle Geräte einschließen.
Der GenICam-Standard ermöglicht es bildgebenden Geräten, der
verbundenen Anwendung ihre Konfigurationseigenschaften über eine
Feature-Beschreibungsdatei (XML) bereitzustellen.
HALCON-Bildquellen basieren auf diesem Standard, um den Zugriff auf die
Gerätekonfiguration zu ermöglichen (siehe
und set_image_source_param).
In der Regel müssen sich HALCON-Nutzer nicht direkt mit diesen XML-Dateien
auseinandersetzen.get_image_source_param
Der Standard definiert zahlreiche Features, von denen viele über den Umfang dieser Dokumentation hinausgehen. Für detailliertere Informationen siehe die offiziellen Standarddokumente, insbesondere die GenICam Standard Features Naming Convention (SFNC) sowie die GenICam GenTL SFNC. Diese Ressourcen werden von der European Machine Vision Association (EMVA) bereitgestellt.
Der GenICam-GenTL-Standard ermöglicht es Bildverarbeitungsanwendungen und -frameworks verschiedener Anbieter, auf Kameras und Geräte unterschiedlicher Hersteller zuzugreifen. Er definiert ein klar festgelegtes Software-Interface, die verschiedene Implementierungsdetails vor der verwendenden Anwendung verbirgt. Eine Anwendung wie HALCON, die unterschiedliche GenTL-Producer (wie z. B. die Plugins) nutzt, wird auch als GenTL-Consumer bezeichnet.
Ein Bildquellen-Handle stellt ein generisches Interface zu einer Vielzahl zugrunde liegender Bildeinzugstandards und -technologien bereit. Aus Sicht der HALCON-Bibliothek bietet jedes Bildquellen-Handle dieselben grundlegenden Operationen. Das Bildquellen-Handle verknüpft Software- und Hardwarekomponenten, die für den Bildeinzug erforderlich sind.
Interfaces beziehen sich auf die Hardware, die mit dem bildgebenden Gerät verbunden ist, z. B. der Anschluss, an dem das Kabel vom Gerät in den Host-Computer gesteckt wird. Im Kontext von Bildquellen bezieht sich der Begriff „Interface“ also nicht auf das, was früher als Bildeinzugschnittstelle bezeichnet wurde.
Falls Framegrabber verwendet werden, wird jede Framegrabber-Karte typischerweise als eine einzelnes Interface modelliert. Standardmäßig verbergen HALCON-Bildquellen die Komplexität mehrerer Interfaces, indem sie automatisch das richtige Interface verwenden.
Die einzelnen Einheiten einer Bildquelle (Plugin, Interface, Gerät, Stream) werden als Module bezeichnet. Jedes Modul ermöglicht den Zugriff auf seine Parameter. Die Modulnamen entsprechen daher auch den Namen der entsprechenden Parametergruppen.
Bildquellen-Plugins abstrahieren die verschiedenen Technologien, die für die
Übertragung von Bildern vom bildgebenden Gerät zur empfangenden
Anwendung verwendet werden.
An anderer Stelle werden sie auch als GenTL-Producer bezeichnet.
Plugins existieren auf jedem Zielsystem in Form von .cti-Dateien.
Sie können mit dem MVTec Software Manager ausgewählt und installiert
werden. Von anderen Herstellern bereitgestellte Plugins
(d. h. GenTL-Producer) stehen automatisch zur Verfügung,
sobald das proprietäre SDK des Herstellers installiert wurde.
Weitere detaillierte Anweisungen finden sich in der Dokumentation
des Herstellers.
Zur Laufzeit werden Plugins, die nicht von MVTec bereitgestellt werden,
von HALCON über die Umgebungsvariable GENICAM_GENTL64_PATH
(oder GENICAM_GENTL32_PATH) gefunden, welche alle Verzeichnisse auflistet,
die .cti-Dateien enthalten.
Ein Gerät kann keinen, einen oder mehrere Bild-Streams bereitstellen. Die typische industrielle Bildverarbeitungskamera stellt nur einen Stream bereit. Standardmäßig verbergen HALCON-Bildquellen die Komplexität mehrerer Streams.
connect_image_sourcecontrol_image_sourcecreate_image_sourcedisconnect_image_sourcefetch_from_image_sourceget_image_source_paramquery_image_sourcesset_image_source_paramsnap_from_image_sourcestart_image_sourcestop_image_source