OpenCV für PicSight GigE und Smart GigE Kameras

OpenCV (http://opencv.willowgarage.com/wiki/) ist eine freie Software-Bibliothek die über 500 verschiedene Bildverarbeitungsfunktionen enthält. Für OEMs und in Projekten mit mehreren Smart-Kameras ist die Open-Source-Library eine kostengünstige alternative zu kommerziellen Paketen.


Geschichte

OpenCV (Computer Vision) wurde zunächst von IBM unter dem Namen IPL (Image Processing Library) entwickelt und der Quellcode später als OpenCV freigegeben. Seither kümmert sich die Firma Willow Garage federführend um OpenCV, wobei viele Unternehmen, Hochschulen und freie Entwickler weltweit mit Verbesserungen, und neuen Funktionen und Schnittstellen zur Weiterentwicklung beitragen.


Umfang

In den über 2500 optimierten Algorithmen sind über 500 Funktionen für die allgemeine Bildverarbeitung aber auch für speziellere Aufgaben wie z.B. Kantenerkennung, Segmentierung, Transformationen, Geometrische Deskriptoren, Matrix-Kalkulation, Kamera-Kalibrierung, Stereo und 3d, Gestenerkennung, etc. enthalten. Außerdem enthält OpenCV ein rudimentäre GUI-Elemente die besonders bei der Entwicklung und beim Test Anwendung finden (HighGui) und Schnittstellen zur Bildaufnahme von verschiedenen Kameras und Framegrabbern. Neben den In OpenCV enthaltenen Funktionen sind auch ergänzende Module von Drittanbietern (z.B. BLOB-Analyse, Codereader, etc. ) erhältlich.


Dokumentation und Support

OpenCV verfügt über eine gute und umfangreiche Dokumentation, zu der auch der frei verfügbare Quellcode beiträgt. Dadurch können Teile des Paketes genauer analysiert und verstanden werde. Daneben gibt es eine sehr aktive Usergruppe mit über 40.000 Entwicklern (http://tech.groups.yahoo.com/group/OpenCV/).


Lizensierung

OpenCV steht unter der BSD Lizenz, die es erlaubt die Bibliothek sowohl für akademische, als auch für kommerzielle Projekte frei zu verwenden. Dadurch wird OpenCV gerade für Bereiche in denen das Budget keinen Raum für Lizenzkosten lässt, oder in denen viele Lizenzen benötigt werden, wie z.B. beim Einsatz auf mehreren Intelligenten Kameras besonders interessant.



Vorteile und Nachteile für OEMs

Vorteile Nachteile
Keine Lizenzkosten Kein kommerzieller Support
Ausgereifte Bibliothek z.T. Fehlende Algorithmen für industrielle Applikationen (z.B. Barcode)
Viele unterstützte Plattformen Keine grafischen Programmierwerkzeuge
Quellcode frei verfügbar Kein GigE Vision Support in HighGui
Gute Dokumentation  
Weit verbreitet / viele Codebeispiele  
Große, aktive Community  
BSD-Lizenz (kommerziell nutzbar)  
Laufzeitoptimierter Code  


OpenCV Unterstützung für Leutron Vision Kameras

Leutron Vision Kameras sind GigE Vision und/oder GenTL kompatibel. Leider verfügt OpenCV derzeit noch nicht über ein eigenes Interface zu diesen Schnittstellen. Daher ist die (rudimentäre) Bildaufnahme von GigE Vision-Kameras über die HighGui derzeit noch nicht möglich.

Mit der Simplon Software Developer Suite stellt Leutron Vision eine umfangreiche Toolbox zur Verfügung die die Entwicklung von OpenCV Applikationen für Host-PC und Smart-Kameras gleichermaßen unterstützt.

 

Leutron Vision Bildaufnahme Interface

Moderne GigE Vision Kameras bieten eine Vielzahl von Funktionen, deren Parameter meist über den generischen Interface Standard „GenICam“ angesprochen werden.

Für ein anspruchsvolleres Bildverarbeitungsprojekt empfiehlt es sich daher, anstelle der HighGui ein GigE Vision Interface zur Bild-Akquisition zu verwenden. Auf die Bilddaten kann dann über einen OpenCV-Image-Header zugegriffen werden. Dieser wird vom Simplon Code-Generator automatisch erstellt.


Der in der Simplon Software Developer Suite enthaltene „Simplon-Explorer“ dient zur Parametrisierung der Kamera und zur Bilddarstellung. Zusätzlich lässt sich über den „Project Generation Wizard“ Beispielcode für verschieden Anwendungen generieren. Unter den hier vorhandenen Code-Templates befinden sich auch Beispiele für die Verwendung mit OpenCV


 

OpenCV auf PicSight Smart Kameras

PicSight Smart Kameras arbeiten mit einen Philips Nexperia PNX1500 Prozessor mit einer Trimedia TM3260 CPU die mit 300MHz getaktet ist.

Die Programmierung erfolgt in C/C++ auf einem Windows PC und einem TriMedia Crosscompiler in einer Cygwin Umgebung.

Zur Programmierung ist ein SDK von Leutron Vision erhältlich, das Compiler und notwendigen Bibliotheken zur Steuerung der Kamera und zur Kommunikation über GigE Vision/GenICam Protokoll mit einem eventuell vorhandenen Host-PC enthält.

Als Bildverarbeitungsbibliothek sind die kompilierten und lauffähigen OpenCV-Libraries enthalten. Lediglich die „HighGui“ Bilbliothek wird nicht unterstützt, da die Smart Kamera als Embedded-Device kein GUI besitzt.

Der Zugriff auf die Bilddaten erfolgt durch die Generierung eines Image Headers für die von der Kamera gelieferten Bildbuffer. Dadurch entfällt zeitaufwendiges Kopieren von Bilddaten und OpenCV arbeitet direkt mit den Originalbuffern.

 

 

Performance von Beispielalgorithmen auf einer PicSight Smart GigE

OpenCV Algorithmus Ausführungszeit (1024x768 Pixel)
cvNot() 5,7ms
cvThreshold() 18,3ms
cvEqualizeHist() 54ms
cvErode() 87ms
cvCanny() 475ms

Auf dem PC entwickeln und Testen – auf der Smart Kamera ausführen

Das Kamera-API für die Bildaufnahme auf einem Host-PC (Smart-Kamera wird als GigE-Kamera betrieben) und für die Aufnahme auf der Smart-Kamera ist sehr ähnlich aufgebaut und bietet die gleichen GenICam Get- /Set-Funktionen. Dadurch bleiben Applikationen weitestgehend sourcekompatibel – das heißt: sie können, mit nur minimalen Modifikationen, sowohl auf dem PC mit einer GigE-Kamera, als auch direkt auf der Smart Kamera verwendet werden. Dies erleichtert die Entwicklung und das Debugging von OpenCV Applikationen wesentlich, da der Großteil der Entwicklungsarbeit auf dem PC erledigt werden kann, bevor das Projekt für die Smart-Kamera kompiliert wird. Der Test auf dem Host kann in Echtzeit erfolgen, da PicSight Smart GigE-Kameras über ein schnelles GigE Vision Interface verfügen und als echte GigE Vision Kameras betrieben werden können (die meisten am Markt verfügbaren Smart-Kameras bieten hier nur Fast-Ethernet).

 

Zusammenfassung

Mit der OpenCV Library steht eine erprobte und leistungsfähige Library zur Verfügung, die durch die BSD Lizenz auch für kommerzielle Projekte eingesetzt werden kann.

Die Kombination von PicSight Smart GigE Kamera und leistungsfähiger freier OpenCV Bildverarbeitung erlaubt die kostengünstige Realisierung von Kundenspezifischen Bildverarbeitungslösungen. Mit einem Einstiegspreis von 640 € für eine Smart-Kamera mit 752 x 480 px CMOS Sensor liegt die PicSight Smart GigE im Kostenbereich intelligenter Sensorsysteme.