Bibliotheken zur industriellen Bildverarbeitung

Jede Firma die die Entscheidung getroffen hat, selbst eine Software zur industriellen Bildverarbeitung zu erstellen steht vor der Frage: "Wie setzen wir die Messung um?".

Zuerst einmal: Es macht keinen Sinn (außer in wenigen Ausnahmefällen), das Rad neu zu erfinden und sämtliche Bildverarbeitungsfunktionen selbst zu programmieren. So gibt es zahlreiche Bibliotheken, die die wichtigsten Funktionen (wie z.B. Kantenfindung, Filteroperationen, Patternfindung etc.) schon implementieren. Diese Operationen selbst zu programmieren setzt grundlegende Kenntnisse über die theoretischen Zusammenhänge der Bildverarbeitung vorraus und lohnt sich nur in den allerseltensten Fällen.

In der Regel ist die effizienteste Lösung, eine fertige Bildverarbeitungsbibliothek einzusetzen und das eigene System um diese herum zu programmieren. Um Ihnen die Entscheidung zu erleichtern, welche Bibliothek sich für Sie am besten eignet, haben wir die folgende Übersicht aufgestellt.

Bei Fragen zu dieser Auflistung oder zu anderen Themen können Sie uns gerne jederzeit kontaktieren.

Kostenlose Bibliotheken

Eine der am weitesten verbreiteten kostenlosen Bildverarbeitungsbibliotheken ist wohl OpenCV. Das OpenCV Projekt wurde ursprünglich von Intel entwickelt und hatte von Anfang an das Ziel der höchstmöglichen Verarbeitungsgeschwindigkeit. Mittlerweile steht die Bibliothek unter der BSD Lizenz, dies bedeutet dass sie frei eingesetzt und weiterverbreitet werden darf (auch in kommerziellen Projekten) - lediglich der Copyright Vermerk muss erhalten bleiben.

OpenCV ist vollständig in C/C++ programmiert und wird unter diesen Sprachen auch am effizientesten eingesetzt. Mittlerweile existieren zwar schon ettliche Portierungen u.a. für .NET (z.B. OpenCVDotNet) allerdings muss man hier immer mit einem gewissen Overhead rechnen, was das System natürlich verlangsamt.

Zwei weitere Vertreter des kostenlosen BV Bibliotheken sind das Insight Toolkit ITK und die Python Imaging Library PIL.

nach oben ^

Kostenpflichtige Bibliotheken

Hier gibt es mittlerweile eine sehr große Zahl an Lösungen. Allerdings kristallisieren sich nach näherer Betrachtung nur einige wenige brauchbare heraus. Zunächst sollte man sich im klaren darüber sein, ob die eingesetzte Bibliothek vollständig in ein eigenes Programm integriert werden soll oder ob dies nicht nötig ist.

Diese Frage beruht auf der Tatsache, dass mehrere Bibliotheken existieren, die keinen nativen Code erzeugen (wie z.B. C oder C++) sondern "nur" mit Scriptcode arbeiten. Das bedeutet, dass für solche Bildverarbeitungsbibliotheken immer eine Art "Interpreter" nötig ist, welcher in der Regel in der Form eines kompletten Programms daher kommt. Dadurch ist man dann zumeist auf vorgefertigte Bedienelemente festgelegt und auch die Performance leidet unter der Skriptinterpretation.

Solche "Skriptlösungen" empfehlen sich durch deren Nachteile eigentlich nur durch ihre meist einfachere Programmierbarkeit und sind somit am ehesten für "Nichtprogrammierer" geiegnet.

Anzumerken bleibt allerdings: Sämtliche auf dem Markt erhältlichen Bildverarbietungsbibliotheken setzen ein gewisses Maß an Kenntnis der Bildverarbeitungsgrundlagen vorraus. So sollte man z.B. auf jeden Fall schon einmal etwas von Kantenfindung oder Patternmatching o.ä. gehört haben. Ist dies nicht der Fall, so sollten Sie die Umsetzung doch eher in die Hände von Profis wie z.B. k²bytes legen.

nach oben ^

Bibliothekenübersicht

 

Bibliothek

Halcon
Matrox
Imaging
Library
Common
Vision
Blox
Labview
Vision
Development
Module
Matlab
Image
Processing
Toolbox
Orchid

Hersteller

MVTec Matrox Stemmer
Imaging
National
Instruments
The
Mathworks
Leutron

Skriptprogrammierung

ja nein ja ja ja k.a.

C/C++ Programmier-
barkeit

ja ja ja ja k.a. k.a.

Entwicklungs-
umgebung

ja nein1 ja ja ja k.a.

Unterstützung unter-
schiedlicher Kamera-/
Framegrabberhersteller

ja ja ja ja ja nein

Anmerkungen

1es stehen verschiedene Einzeltools für vorab Prüfungen zur Verfügung aber keine komplette integrierte Entwicklungsumgebung
2Python Imaging Library (PIL) wird mittels Python programmiert.

 

Bibliothek

Neurocheck mvImpact OpenCV Python PIL Insight Toolkit ITK RoboRealm
RoboRealm

Hersteller

Neurocheck Matrix
Vision
OpenCV  Secret Lab AB ITK RoboRealm

Skriptprogrammierung

ja nein nein ja2 ja ja

C/C++ Programmier-
barkeit

nein ja ja nein ja ja

Entwicklungs-
umgebung

ja nein nein nein nein ja

Unterstützung unter-
schiedlicher Kamera-/
Framegrabberhersteller

ja ja ja ja ja ja

Anmerkungen

kostenlos kostenlose
und
kommerzielle
Lizenz
kostenlos,
auf die
medizin.
BV
ausgerichtet
30 Tage
Testversion

Bibliothek

Dalsa Sherlock
Cognex
VisionPro
 
Dalsa Sherlock
 Cognex VisionPro  
Hersteller Dalsa Cognex  

Scripting

ja ja  

C/C++ Programmier-barkeit

nein ja  

IDE (Development
Environment)

ja ja  
Unterstützung unter-
schiedlicher Kamera-/
Framegrabberhersteller
ja ja  

Bemerkungen

nach oben ^

Fazit

Aufgrund der Vielzahl von bereits auf dem Markt befindlichen Bibliotheken zur Bildverarbeitung ist die Auswahl nicht leicht und hängt von verschiedenen Faktoren ab.

So sollte man sich zu allererst überlegen, was und wie geprüft werden soll. Aufgrund dieser Überlegung fallen schon einige Kandidaten aus.

Als nächstes sollte man sich überlegen, ob man auf eine "Standardprogrammierung" wie z.B. mit C/C++ verzichten kann oder nicht. Somit fallen Bibliotheken aus, die nur entweder Skriptprogrammierung oder nur die Programmierung in einer Standardprogrammiersprache unterstützen.

Als letztes sollte der finanzielle Aspekt die Entscheidung für oder gegen eine spezielle Bibliothek beeinflussen. Das aus gutem Grund: Fast alle Hersteller liegen bei der Erstanschaffung des SDKs auf einem relativ gleiche Preisniveau. Auch bei den Runtime Lizenzen - also bei Lizenzen die für das auszuliefernde Produkt fällig werden - liegen beinahe alle Hersteller bei vergleichbarem Funktionsumfang fast auf einer Höhe.

Letztlich unterscheiden sich die Bibliotheken nur sehr stark in der Programmierung der eigentlichen Bildverarbeitungslösung und in der Performance.

Ist Performance nicht so wichtig, so kann man getrost auch auf "einfacher" programmierbare Lösungen per Skripting setzen. Da aber in den meisten Fällen der automatisierten Prüfung die Performance ein wesentlicher Anschaffungsaspekt sein wird, sollte man sich die Art der Programmierung genau überlegen und auch genügend Zeit in die Vorabuntersuchungen stecken.

nach oben ^