Embedded Computer Vision

Image Streaming und Bildverarbeitung mit Single Board Computer (SBC)

SBC - Camera

Embedded Computer Vision

Der Single Board Computer (SBC) ist auf einer kleinen Einzelplatine aufgebaut, die entweder nur für sehr spezialisierte Aufgabe ausgelegt oder mit einem kompletten Betriebssystem ausgestattet sein kann, das u.a. auch übliche Schnittstellen wie HDMI, LAN oder USB unterstützt. Besonderheit der SBC ist, dass sie in der Regel über sog. GPIO Pins verfügen, die zur Steuerung von externen Geräte verwendet werden können.

Die Rechenleistung der neuesten Gerätegeneration ist inzwischen so beachtlich, dass Bildverarbeitung auch während des Image Streamings bei laufender Kamera oder im getriggerten Betrieb möglich ist. Hieraus ergeben sich ganz neue Anwendungsfelder in einer räumlich beengten Umgebung und in Situationen, in denen keine längeren Kabelverbindungen zwischen Rechner und Kamera erwünscht oder möglich sind. Nicht zuletzt sind Single Board Computer deutlich preiswerter als herkömmliche Rechner.

Computer Vision beinhaltet Bildverarbeitung etwa zur Produktionskontrolle oder Prozess-Steuerung. Dazu ist neben Hardware entsprechende Software mit den jeweils benötigten Algorithmen erforderlich. Ein System aus Kamera und Single Board Computer zum Zwecke der Bildverarbeitung wird gerne als Embedded Computer Vision oder kurz Embedded Vision bezeichnet.

Wir, die PHASE GmbH, haben nun ein handliches, flexibel einsetzbares und dazu kostengünstiges Embedded Vision-System als vorkonfigurierten und sofort einsatzbereiten Starter Kit zusammengestellt.

Fordern Sie ein Angebot an!

Starter Kit
Single Board Computer Odroid XU4:
  • 8 Kern-Arm CPU vom Typ Exynos 5422
  • 2 GB RAM, 16 GB eMMC
  • 1xUSB2.0, 2xUSB3.0, 24 GPIO Pins, HDMI, LAN
  • 32 Bit Ubuntu Mate 16.04 (graphischer Desktop)
  • Platinenformat 83x60x20 mm3
  • Gehäuse, Netzteil
Bildverarbeitungssoftware: ImageJ, OpenCV f. Java (beides lizenzfrei)
Kamerasteuerungssoftware: als Plugin f. ImageJ/Java
Kamera: USB3-Kameras von Basler oder PointGrey/Flir
(nahezu alle USB-Modelle dieser Hersteller),
inkl. 3 m USB3-Kabel,
zur Kameraauswahl
Option: Objektiv, C-Mount

Weiter Infos


Screen Video zeigt ImageJ-Kamera-Plugin in Aktion (aufgenommen auf PC)
Download auch unter https://www.phase-hl.com/video/IJ_Plugin_de.mp4

ImageJ

ImageJ ist ursprünglich für die wissenschaftliche Bildverarbeitung in der Mikroskopie entwickelt worden, wird aber heutzutage für alle denkbaren Bildverarbeitungsaufgaben in Wissenschaft und Technik eingesetzt (z.B. Medizin, Astronomie, Luftbildauswertung, Materialprüfung). Es enthält von Hause aus eine Vielzahl von Bildverarbeitungsoperatoren, Filtern und Algorithmen darunter auch solche zur Vermessung und Zählung von Objekten. Weitere können selbst entwickelt oder aus einem riesigen Funds von fertigen Modulen als Plugins bequem nachgerüstet werden. Alle Bildverarbeitungsschritte lassen sich über ein graphisches User Interface ausführen und deren Wirkung direkt in einem oder mehreren Bildfenstern oder Image Stacks darstellen, ohne irgendeine Code-Zeile selbst eingeben zu müssen. Die Bildverarbeitung in ImageJ ist spielend automatisierbar, da mit Hilfe eines Befehls-Recorders alle per Maus oder Tastaturauswahl getätigten Anweisungen aufgezeichnet und gespeichert werden können (Macro-Datei). Der Aufruf eines solchen gespeicherten Macros bewirkt dann die automatische Ausführung aller einstmals aufgezeichneten Bildverarbeitungsschritte ohne weiteren Eingriff. ImageJ ist also hervorragend geeignet, auf komfortable Weise Lösungen für Bildverarbeitungsaufgaben zu erarbeiten und zu implementieren.

Entwicklung von Bildverarbeitungsprozeduren und GPIO-Programmierung für Single Board Computer

ImageJ ist Java-Software. Bildverarbeitungsaufgaben können direkt in der Umgebung von ImageJ als Macro (in eigener Macro-Sprache, Javascript oder Python) oder Plugin (Java) entwickelt werden. Natürlich ist dies auch unter einer IDE wie Netbeans oder Eclipse als ImageJ-Projekt sehr komfortabel auf dem Odroid selbst oder einem PC möglich. Im letzteren Fall kann der entstandene Code einfach per Copy/Paste auf den Ordoid übertragen werden, ohne dass irgendwelche Anpassungen notwendig wären. Für die Programmierung der GPIO-Pins gibt es eine Java-Bibliothek GPIO Java_Bibliothek f. Ordroid XU4 , so dass komplexe Aufgabenstellungen, die neben der Bildverarbeitung auch Hardwaresteuerungesaufgaben umfassen, in einem gemeinsamen Projekt idealerweise unter einer Java IDE entwickelt werden können.

Für Anwendungen im technischen Umfeld kann ein graphisches User Interface für die Bildverarbeitung störend oder unerwünscht sein. Tatsächlich kann man die Bildverarbeitungsbibliothek von ImageJ auch in spezialisierten Standalone-Java-Anwendungen einsetzen.

OpenCV und ImageJ

OpenCV ist eine freie Bibliothek mit einer großen Anzahl von Bildverarbeitungsalgorithmen implementiert in C/C++, allerdings ohne graphisches User Interface. Programmierkenntnisse sind für den Gebrauch unabdingbar. OpenCV ist immer dann von Vorteil, wenn Bildverarbeitungsprozeduren erforderlich sind, die sehr viel Rechenzeit erfordern. Für OpenCV gibt es Wrapper in den Sprachen Python und Java. Gerade der Java Wrapper kann sehr gut in Kombination mit ImageJ (Java Software!) genutzt werden, wenn z.B. rechenzeitintensive Algorithmen im Umfeld von ImageJ/Java implementiert werden sollen, wie z.B. die Abarbeitung von groß dimensionierten Matrices. Die entsprechenden Berechnungen werden dann in einer kompilierten DLL im Maschinencode durchgeführt (Bestandteil des OpenCV Java Wrappers). Tatsächlich lassen sich Datenobjekte von ImageJ nach OpenCV und umgekehrt recht einfach in Java konvertieren. Bildmaterial kann also über ImageJ an OpenCV übergeben und Ergebnisse wiederum können beispielsweise in der graphischen Umgebung von ImageJ angezeigt werden. Natürlich können aber auch hoch performante Standalone-Applikationen unter dem gemeinsamen Dach von Java mit Objekten aus ImageJ- und OpenCV-Bibliotheken entwickelt werden.

Kamera-Einbindung in ImageJ und Java

ImageJ ist, wie schon erwähnt, Java-Software. Es ist daher eine Art eine Verbindungsschicht zwischen Java und dem Hardwaretreiber der Kamera erforderlich. Die PHASE GmbH hat eine solche Verbindungsschicht für Kameras von Basler und Pointgrey/Flir in Form einer DLL entwickelt basierend auf den Hardwaretreibern Pylon5 bzw. FlyCapture2, die die Kamerasteuerung sowie Live-Bilddarstellung in der Umgebung von ImageJ und allgemein in Java ermöglicht. Auf diese Weise kann der Anwender viele der Bildverarbeitungswerkzeuge von ImageJ direkt auf das Live-Bild anwenden. Es ist auch möglich, einzelne Bilder dem unkomprimierten Image Stream zu entnehmen und in automatisierter Weise einer Bildverarbeitung zu unterziehen. Gleiches gilt natürlich auch für den Bildeinzug per Hardware Trigger. Viele Kamerafunktionen lassen sich auch per Macro ausführen, so dass sich komplexe Bildverarbeitungsaufgaben auch unter Einbeziehung der Kamerasteuerung automatisieren lassen.

Link Liste