# GenICam

GenICam (Abk. für Generic Interface for Cameras) ist eine generische Programmier-Schnittstelle für Kameras, die in der industriellen Bildverarbeitung eingesetzt wird. Ziel dieses Standards ist die Entkopplung der Schnittstellen-Technologie industrieller Kameras (wie z. B. GigE Vision oder Camera Link) von der Programmier-Schnittstelle der Benutzer-Anwendung (API). GenICam wird von der European Machine Vision Association (EMVA) betreut. Die Arbeit an dem Standard wurde im Jahr 2003 begonnen und sein erstes Modul, GenApi, wurde 2006 ratifiziert. Das letzte Modul, GenTL, folgte im Jahr 2008.

## Module

GenICam besteht aus drei Modulen, die helfen sollen, die wichtigsten Aufgaben in der industriellen Bildverarbeitung auf generische Weise zu lösen. Die Module heißen:
* GenApi: Dieses Modul wird für die Konfiguration der Kamera, des Kamera-Zugriffs und der Kamera-Steuerung benutzt. Es verwendet dazu eine Datei im XML-Format.
* SFNC (Standard Feature Naming Convention): Dies sind die empfohlenen Bezeichnungen und Typisierungen für gemeinsame Kamera-Eigenschaften zur Förderung der Kompatibilität.
* GenTL (Transport Layer): Diese Schicht ist für den Transport der Kamera-Daten in die Benutzer-Anwendung verantwortlich.
* GenDC (Data Container): Dieses Modul erlaubt „jegliche“ Informationen in Datencontainer über ein TLP unabhängigen Format zu senden.
* GenCP (Control Protocol): Das Control Protocol definiert die Paketformate zur low-level Kamera-Steuerung.

## Funktionen

GenICam unterstützt fünf Hauptfunktionen:
* Kamera-Konfiguration – Diese Funktion unterstützt eine Reihe von Kamera-Eigenschaften wie z. B. Bildgröße, Aufnahmegeschwindigkeit, Pixelformat, Gain, Offset etc.
* Bilderfassung – Diese Funktion erstellt Zugänge zwischen der Kamera und der Benutzer-Schnittstelle und veranlasst das Empfangen von Bildern.
* Grafische Benutzeroberfläche (GUI) – Diese Funktion stellt eine Anwender-Schnittstelle für die nahtlose Kommunikation mit der (den) Kamera(s) bereit.
* Übertragung zusätzlicher Daten – Diese Funktion ermöglicht Kameras das Übertragen von zusätzlichen Daten, die über die reinen Bilddaten hinausgehen, wie beispielsweise Histogramm, Zeitstempel oder ROI.
* Übertragung von Ereignissen – Diese Funktion ermöglicht es Kameras mithilfe eines „Ereignis-Kanals“ mit einer Anwendung zu kommunizieren.

## Kompatibilität

Viele Unternehmen der industriellen Bildverarbeitung haben zu dem Standard beigetragen. Die wichtigsten an der Ausarbeitung des GenICam-Standards beteiligten Unternehmen sind:
* Basler
* Baumer
* DALSA
* e2v semiconductors
* IDS Imaging Development Systems
* JAI Pulnix
* Leutron Vision
* Balluff (ehemals MATRIX VISION)
* Matrox
* MVTec Software
* National Instruments
* Pleora Technologies
* Stemmer Imaging
* SVS-VISTEK GmbH
Die Standardisierung bewirkt, dass Produkte unterschiedlicher Hersteller untereinander technisch kompatibel sind. Dank der zahlreichen Unternehmen, die an der Definition von GenICam beteiligt sind, und der vielfältigen Möglichkeiten, die sich für den Anwender durch den Vorteil der Kompatibilität ergeben, setzen bereits viele Hersteller von Bildverarbeitungskomponenten den Standard in ihren Produkten ein. Allerdings bieten auch Unternehmen, die an der Entwicklung des Standards beteiligt waren, weiterhin eigene, proprietäre SDKs an. Es ist deshalb abzuwarten, ob GenICam sämtliche eigenentwickelte SDKs ersetzen und so das angestrebte Ziel einer vollständigen Kompatibilität erreichen kann.