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.
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.
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 | |
![]() |
![]() |
||||||
|
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 |
|
| |
|||
| 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 |
|||
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.




