Generisches Herzstück

Generisches Herzstück

Zehn Jahre Kamera-Branchenstandard GenICam

Standardisierung hat für den Erfolg der Bildverarbeitung einen enormen Beitrag geleistet. Nicht mehr wegzudenken aus dem Chor der Bildverarbeitungsstandards ist GenICam. Der von der European Machine Vision Association (EMVA) gehostete Standard hat sich in den zehn Jahren seit seinem ersten Release im Jahr 2006 zum Herzstück aller modernen Schnittstellenstandards entwickelt.
Etwa zur Mitte der vergangenen Dekade hatten sich im (damals noch vergleichsweise kleinen) Bildverarbeitungsmarkt bereits einige Schnittstellentechnologien gebildet. Um möglichen Parallelentwicklungen entgegenzuwirken wurde vereinbart, bestehende Standards und ihre Komponenten so oft als möglich wiederzuverwenden. Das Konzept dazu war es, separate Standards für die verschiedenen Ebenen einer Schnittstelle bereitzustellen. In gewisser Weise ist GenICam daher ein Spin-Off des GigE Vision Standards. Während dessen Entwicklung in den Jahren 2004/05 wurde deutlich, dass es eine moderne Softwareschicht für die Kommunikation zwischen einer Bildverarbeitungsapplikation und der Kamera geben sollte, die unabhängig vom verwendeten Transport-Layer-Protokoll ist. Dies ist auch die Kernidee einer GenICam: Die Kamera soll sich selbst beschreiben und beim Öffnen melden, welche Features sie hat und wie diese angesprochen werden können. Dies geschieht durch eine XML-Datei, die in der Regel in der Firmware der Kamera gespeichert ist und beim erstmaligen Öffnen durch eine Applikation an diese übermittelt wird. Die XML-Datei folgt einer festen Syntax, die durch GenICam definiert ist und von beliebigen Applikationen ausgelesen werden kann. Die Applikation erfährt dadurch, welche Features die angeschlossene Kamera anbietet und welches die zulässigen Wertebereiche sind, damit sie generisch auf alle diese Features zugreifen kann. GenICam abstrahiert somit das proprietäre Registerlayout und erlaubt den generischen Zugriff auf die komplette Funktionalität der Kamera über ein standardisiertes Austauschformat.

Meilensteine

Die 2004 begonnene Entwicklung des Standards mündete in das Release von GenICam 1.0 im September 2006. Von Anfang an gab es passend zum GenICam-Standard auch eine Referenzimplementierung, welche die gesamte Funktionalität in Form einer C++ API zur Verfügung stellte. Der Name dafür war schnell gefunden: GenAPI, also eine generische Programmierschnittstelle. Heute verwendet nahezu jeder Kamera- und Software-Hersteller die aktuelle Version dieser Referenzimplementierung als Teil seiner Installation. Nun galt es zu verhindern, dass verschiedene Kamerahersteller die gleiche Funktionalität unter unterschiedlichen Namen anbieten würden. Dazu wurde die sogenannte GenICam Standard Features Naming Convention (SFNC) entwickelt. Diese beschreibt die Namen, den Typ und den Wertebereich der üblichen Kamera-Features. Falls also eine Kamera ein in der SFNC definiertes Feature anbietet (z.B. ExposureTime), muss es der SFNC-Definition folgen. Bis auf wenige Ausnahmen sind die Features in der SFNC als recommended bzw. optional gekennzeichnet, das heißt die Kamera muss nicht alle Features anbieten. Gleichzeitig kann eine Kamera auch weitere Hersteller-spezifische Features anbieten (custom features). Der Erfolg von GenICam liegt nun unter anderem darin, dass sowohl Kameras mit wenigen Features als auch Kameras mit vielen beziehungsweise auch speziellen Features möglich sind. Dank GenAPI werden die tatsächlich verfügbaren Features zur Laufzeit interpretiert und können von der Bildverarbeitungsapplikation ausgelesen und gesetzt werden. Somit ermöglicht es GenICam explizit, dass sich Kameras differenzieren sowie durch neue Features erweitern lassen können, ohne die Kompatibilität zum Standard zu verlieren. Da der GigE Vision-Standard von Anfang an verlangte, dass eine Kamera kompatibel zum GenICam-Standard sein muss, hat sich der Standard schnell verbreitet und fand nach und nach auch Verwendung für andere bereits existierende Transport Layer Standards wie DCAM (IEEE 1394) und Camera Link, insbesondere aber auch für USB3 Vision, CoaXPress und Camera Link HS. Für ein möglichst einfaches Zusammenspiel von Kamera und Bildverarbeitungsapplikation sind GenAPI und SFNC allerdings nur der erste Schritt. Um ein echtes Plug&Play zu erreichen, benötigt man auch eine definierte Programmierschnittstelle, die alle vorhandenen Geräte enumeriert, den Verbindungsaufbau übernimmt sowie sich um die Übertragung der eigentlichen Bilddaten kümmert. Dazu wurde 2008 ein weiteres Modul spezifiziert: GenTL, ein generischer Transport Layer. Dessen Hauptaufgabe ist es zu gewährleisten, dass Treiber und SDK unterschiedlicher Anbieter reibungslos zusammenarbeiten. 2009 erfolgte das Release von GenICam 2.0, drei Jahre später mit GenICam 2.3 kam das erste Release von GenCP (Control Protocol). Zwischen 2013 und 2015 erfolgte eine komplette Neuentwicklung der Referenzimplementierung GenAPI mit höherer Performance bei gleichzeitig deutlich geringerem Speicherverbrauch. Fast parallel dazu wurde auch der steigenden Nachfrage nach 3D-Applikationen Rechnung getragen und GenICam 3D als Erweiterungen von SFNC und GenTL entwickelt. Dies führte schließlich im Dezember 2015 zur Veröffentlichung von GenICam 3.0. Das neueste Release von GenICam vom Mai 2016 trägt die Versionsnummer 3.0.1 und beinhaltet vor allem eine erweiterte Version der SFNC, deren Umfang im Lauf der letzten zehn Jahre auf etwa 500 Seiten angewachsen ist.

Organisation

Die GenICam Standard Group ist eine Standardisierungsinitiative der EMVA. Die Gruppe trifft sich zweimal im Jahr. Die Meetings sind Teil des International Vision Standards Meeting, bei denen sich auch die Technical Committees aller anderen aktiven Bildverarbeitungsstandards treffen. Chair der GenICam Standard Group ist seit Anfang an Dr. Fritz Dierks (Basler), der seit 2010 von den drei Vice-Chairs Stéphane Maurice (Matrox Imaging), Rupert Stelz (Stemmer Imaging) und Christoph Zierl (MVTec Software) unterstützt wird. Die eigentliche Entwicklungsarbeit wird durch Homework Packages organisiert, die am Ende eines Treffens definiert werden. Für die Zusammenarbeit haben alle GenICam-Mitglieder Zugriff auf ein gemeinsames Source Code Repository, eine Mailingliste sowie ein Ticket-System. Jede Firma, die ihre Hausaufgabe erfolgreich bearbeitet, erhält dadurch bis zum nächsten Treffen voting rights, ist also ein Contributing Member und kann so den GenICam Standard aktiv mitentwickeln. Aktuell gibt es mehr als 150 Mitgliedsfirmen, deren Aufzählung sich wie ein Who is Who der Bildverarbeitungshersteller liest. Die Mitgliedschaft bei GenICam ist bislang kostenfrei und kann bei der EMVA beantragt werden.

Ausblick

Alle bestehenden GenICam-Module werden durch die GenICam Standard Group kontinuierlich weiterentwickelt und an neue Anforderungen angepasst. Ein Schwerpunkt für zukünftige Erweiterungen wird die Unterstützung von Embedded Devices sein. Dabei muss zum einen sichergestellt sein, dass auch Board-Level-Kameras via GenICam verwendet werden können. Zum anderen sollen auch Bildverarbeitungssysteme unterstützt werden, die bereits eine konfigurierbare Vorverarbeitung der Bilddaten anbieten. Insgesamt kann man sagen, dass GenICam trotz seines mittlerweile Alters noch lange nicht zum alten Eisen gehört. Stattdessen ist ein Ende der Weiterentwicklung des erfolgreichen Standards noch lange nicht in Sicht.

Themen:

| Fachartikel

Ausgabe:

inVISION 4 2016
EMVA European Machine Vision Association

Das könnte Sie auch Interessieren