Das Demosaicing ist die augenfälligste Funktion der Bildvorverarbeitung, aber bei weitem nicht die einzige. Am Beispiel des Funktionsumfangs der im i.MX 8M Plus enthaltenen ISPs nachfolgend einige weitere Vorverarbeitungsfunktionen im Überblick:
➔ Black-Level-Kalibrierung
CMOS-Sensoren neigen dazu, einen variablen Offset in den Helligkeitswerten zu haben, sodass unbelichtete Pixel einen Wert größer 0 ausgeben. Die Funktion korrigiert Bilddaten in der Weise, dass schwarze Pixel in den Ausgabedaten mit dem Wert 0 dargestellt werden.
➔ Bad Pixel Correction, Rauschreduzierung
Durch den Produktionsprozess bei industriellen Sensoren ist es unvermeidlich, dass eine gewisse Anzahl Pixel nicht die spezifizierte Performance aufweisen. Die Bad Pixel Correction kaschiert den Einfluss von solchen Pixeln auf dem Sensor, z.B. mittels Ersetzung durch Nachbarpixel.
Rauschreduzierung kann durch statistische Verfahren erreicht werden, wofür eine Kalibrierung des ISPs auf den Sensor benötigt wird.
Beide Funktionen können sich auf eine nachfolgende Bildverarbeitung positiv aber auch negativ auswirken, sodass ihr Einsatz abgewogen werden sollte.
➔ Lens Shade Correction
Objektive können eine Vignettierung aufweisen, also den Effekt, dass das Bild im Randbereich abgeschattet wirkt. Gerade bei kompakten Objektiven, wie sie aus Platz- und Kostengründen gerne bei Embedded-Systemen eingesetzt werden, kann dieser Effekt auftreten. Mit Hilfe der Lens Shade Correction kann die Vignettierung aus dem Bild herausgerechnet werden. Dazu ist eine Kalibrierung des ISP auf das optische System (Objektiv und Kamerasensor) erforderlich.
➔ Farbkalibrierung, automatischer Weißabgleich
Eine Farbkalibrierung ist erforderlich, wenn die Anwendung einen bestimmten Farbraum (z.B. sRGB) erwartet. Bedingt durch die Charakteristiken der RGB-Farbfilter besitzen die Bildsensoren einen eigenen Farbraum, der durch die Kalibrierung in einen Standardfarbraum überführt werden kann.
Der automatische Weißabgleich eliminiert den spektralen Einfluss unterschiedlicher Lichtquellen auf die Farbwiedergabe und erzeugt somit eine »natürlich« wirkende Farbwiedergabe. Auch diese Funktionen setzen eine Kalibrierung voraus.
➔ Belichtungsautomatik (AEC/AGC)
Sofern der Bildsensor eine automatische Belichtungssteuerung nicht bereits selbst integriert hat, erzeugt diese Funktion die dazu benötigten Statistikdaten und führt ggf. die Nachführung von Belichtungszeit und Verstärkung aus.
➔ Lens Distortion Correction
Besonders bei Objektiven mit kurzen Brennweiten treten prinzipbedingt geometrische Abbildungsfehler auf, z.B. der sog. »Fischaugeneffekt«. Der ISP kann diese Verzeichnungen korrigieren. Dazu ist eine Kalibrierung auf das optische System erforderlich.
Je nach Anwendungsfall wird nur ein Teil dieser Funktionen benötigt oder es kann ganz auf sie verzichtet werden. Ein System, das Farbwerte unter definierten Lichtverhältnissen ermittelt, wird keinen automatischen Weißabgleich benötigen; hier ist eine Veränderung der Farbkomponenteneinstellungen sogar kontraproduktiv. Eine Korrektur der Linsenverzerrung ist bei Weitwinkelobjektiven sinnvoll, während bei langen Brennweiten eher auf sie verzichtet werden kann.
Für den Softwareentwickler ist die Fragestellung wichtig, wie er von der Applikationsebene auf die Bilddaten und auf die Funktionen des ISPs zugreifen kann.
Beim Linux-Betriebssystem, das Phytec beispielsweise mit seinen »phyCORE i.MX 8M Plus«-Rechnermodulen mitliefert, wird die Bildaufnahmeeinheit aus ISP und passender Board-Level-Kamera als eine Einheit gekapselt und über ein Video-for-Linux-Interface (V4L2) zugänglich gemacht. Das vereinfacht die Handhabung, denn der Entwickler muss sich nicht selbst um das Zusammenspiel von Bildsensor und ISP kümmern.
Nach der Vorverarbeitung von Bildern gibt es mannigfaltige Variationen, diese für Analysezwecke weiterzuverarbeiten. Von gängigen Bildanalyseverfahren bis hin zu aufwendigeren Machine-Learning-Anwendungen. Machine Learning wird vor allem dort eingesetzt, wo klassische Methoden nicht mehr die benötigten Ergebnisse liefern können.
Abhängig von den Performance-Anforderungen muss entschieden werden, welche Bildverarbeitung erforderlich ist und welche Ressourcen dazu benötigt werden. Können klassische Bildanalyseverfahren meist noch auf der CPU des Embedded-Prozessors ausgeführt werden, so stößt dies beim Einsatz von neuronalen Netzen schnell an Grenzen.
Um komplexe KI auf Embedded-Hardware zu realisieren, könnte man das Neural Processing in die Cloud verlagern. Dies hat den Nachteil, dass das Embedded-Vision-System eine Internetverbindung benötigt. Bei den Datenmengen, die Bildverarbeitung mit sich bringt, ist das oft unpraktikabel.
Um neuronale Bildverarbeitung »on the edge«, also auf dem Embedded-System zu realisieren, bedarf es eines Prozessors mit entsprechender Vorbereitung für KI. So verfügt der i.MX 8M Plus über eine integrierte Neuronale Processing Unit (NPU) mit einer Rechenleistung von 2,3 TOPS. Der Wert TOPS sagt noch nicht besonders viel aus, ist aber mittlerweile ein gängiger Vergleichswert unter neuronalen Prozessoren und gibt einen guten Anhaltspunkt für einen ersten Vergleich. Für die Entwicklung eines Embedded-Vision-Systems ist es wesentlich interessanter, wie viele Frames per Second (fps) ein Prozessor in einer konkreten Anwendung bei Integration eigener neuronaler Netzwerke verarbeiten kann. Für den i.MX 8M Plus hat Phytec die Berechnungszeiten einiger beliebter Netzmodelle wie ResNet50, MobileNetV1 und MobileNetV2 untersucht. Als Referenz erreicht das ResNet50 z.B. eine Inference-Zeit von 17 ms bei einem Input von Standard 224 × 224 Pixeln. Dies entspricht 59 fps, was die oft geforderten »magischen« 30 fps weit übertrifft und bereits an der 60-fps-Grenze kratzt. Zu beachten ist, dass in die Zeitanalyse nur die reine Inference-Zeit, also Berechnungen des neuronalen Netzes eingeht, da die Datenvorverarbeitung sich von Projekt zu Projekt stark unterscheiden kann.
Embedded-Systeme werden – auch elektronisch und mechanisch – auf eine bestimmte Aufgabenstellung zugeschnitten. Dadurch erfordert der Aufbau eines Embedded-Vision-Systems, im Gegensatz zur klassischen industriellen Machine Vision, ein erweitertes Verständnis von Bilddatenverarbeitung und in wachsendem Maße von neuronalen Netzen.
Diese Notwendigkeit setzt sich bei der Nutzung der Verarbeitungsergebnisse fort, denn diese werden ja in den meisten Fällen genutzt, um entsprechende I/O-Schnittstellen, Aktoren oder angepasste Mensch-Maschine-Schnittstellen zu steuern. Eine gute Möglichkeit, Entwicklungsaufwand für die individuelle Anwendung drastisch zu reduzieren und damit Entwicklungszeit und Kosten zu sparen, ist der Einsatz eines serientauglichen Modulkonzepts. Ein solches Modulkonzept beinhaltet auch viele Lösungen für die weiteren Herausforderungen, auf die man bei der Entwicklung eines Embedded-Vision-Systems zwangsläufig stößt. Die Entwicklungskits von Phytec (Bild 3), z.B. das »phyBOARD-Pollux Imaging Kit« oder das »phyBOARD-Pollux KI Kit«, bieten die Möglichkeit, gleich von Beginn an mit seriennahen Komponenten zu arbeiten. Dank der auf Embedded Vision spezialisierten Abteilung und den selbst entwickelten phyCAM-Board-Level-Kameras sind nicht nur alle Komponenten, einschließlich der Softwarekomponenten, perfekt aufeinander abgestimmt, es besteht auch ein breites Angebot an Entwicklungsleistungen, um den Erfolg eines Projektes sicherzustellen.
Der Autor
Martin Klahr
arbeitet seit 30 Jahren bei Phytec Messtechnik. Nach seinem Studienabschluss als Elektroingenieur beschäftigte er sich bei Phytec mit der Integration von Kamerasystemen. Er leitet heute den Bereich Embedded Vision.