Technology Transfer

Scripted Streaming - Tekniques Kameramodule

Autor: Stefan Tauschek, Macnica GmbH

Applikationsschrift

Seit der Digitalisierung der Kameratechnik und der Verfügbarkeit breitbandiger Infrastrukturen konnten sich IP-Kameras in zahlreichen Märkten etablieren, etwa bei den bekannten Actioncams auf Motorrad-fahrer- oder Gleitschirmfliegerhelmen, Dashcams hinter der Windschutzscheibe oder Überwachungskameras in öffentlichen und privaten Bereichen.

War die Entwicklung analoger Röhren- oder CCD-Kameras ausgesuchten Spezialisten mit viel einschlägigem Know-How vorbehalten, so hat sich die Situation inzwischen ganz grundlegend verändert – gefragt sind heute vor allem Softwarekenntnisse, denn fast alle Implementierungen basieren auf einem Linux-Kernel mit aufgesetzter Middleware zum Export der Hardwarefunktionen und einer Applikationsschicht mit der eigentlichen Kameraanwendung. Zwar sind nach wie vor Kenntnisse der Optik und besonders der Bildsensortechnik notwendige „skills“ eines Kameraentwicklers aber das Anforderungsprofil tendiert zunehmend in Richtung Schnittstellen, Netzwerkfunktionalitäten und in jüngster Zeit wird „AI“, die „artificial intelligence“ mit ihrem enormen Potential der industriellen Videoauswertung immer wichtiger.

Aktuelle Kameraentwicklungen nutzen System-on-Chips (SoCs) mit integrierten Controllern, Encodern und DSPs und vereinfachen ganz wesentlich die Produktentwicklung. Der US-amerikanische Hersteller Ambarella ist hier besonders zu erwähnen, sind doch seine SoCs in puncto Qualität und Leistungseffizienz nach wie vor ungeschlagen.

Dennoch ist es auch mit diesen hoch integrierten Komponenten oft ein weiter Weg zur verkaufsfertigen Kamera und derartige Projekte rechnen sich meist nur für große Serien.

Für kleinere Stückzahlen bietet nun die neuseeländische Firma Teknique[1] Modulkameras und Entwicklungswerkzeuge auf Basis der Ambarella SoCs an und ermöglich damit auch in diesem Marktsegment erfolgreiche Produktplatzierungen mit kurzem „time-to-market“. Dabei ist es nicht nur die Hardware, die schon „out-of-the-box“ funktionsfähig zur Verfügung steht, sondern vor allem eine pfiffige Softwarestrategie mit der Möglichkeit zur Anwendungsentwicklung auf dem Schwierigkeitslevel von Bash-Scripten.

Ambarellas S5L SoC-Serie

Der S5L ist ein in 14nm LPCMOS gefertigtes IP-Camera-SoC der 5ten Generation mit leistungsfähigen Bild- und Videoverarbeitungseigenschaften bei minimalem Stromverbrauch. So lässt sich beispielsweise die Variante S5Lm mit etwas reduzierten Taktraten der Videopipeline und des ARM Controllers für batteriebetriebene Kameras einsetzen.

Wesentliche Funktionsblöcke eines IP-Camera-SoCs sind der Image DSP, auch ISP oder Sensor-Pipeline genannt, der Video-DSP zur Encodierung, ein möglichst leistungsfähiger LPDDR Memory-Controller und ein ARM-Prozessor zur zentralen Steuerung der Abläufe. Da alle rechenintensiven Prozesse zur Bildverarbeitung in Signal- und Vektorprozessoren ausgelagert sind, steht die CPU auch im Lastbetrieb mit beispielsweise 4kp30 H.265-Encodierung kaum im Stress und bietet noch genügend Leistungsreserven für kundenspezifische Anwendungen.

Der Image-DSP bildet die Schnittstelle zu den Bildsensoren und entscheidet maßgeblich nicht nur über die Bildqualität sondern im Weiteren auch über die Kompressionsqualität durch sein ausgefeiltes 3D-MCTF Rauschminderungsverfahren[2]. Jegliches Bildrauschen nämlich mindert ganz erheblich die Kompressionsqualität, bläst also die notwendige Datenrate auf, ohne dabei mehr Details zu übertragen. Die Sensor-Pipeline leistet aber noch mehr, etwa die Umrechnung der Sensorrohdaten in YUV- oder RGB-Werte, die Dynamikverbesserung durch HDR- oder WDR-Verfahren, die geometrische Entzerrung von Weitwinkelaufnahmen (De-Warping), elektronische Bildstabilisierung, Defogging und Einstellung optimaler Bildparameter wir Helligkeit/Kontrast/Farbbalance.

Der Video-DSP verarbeitet die im Hauptspeicher abgelegten Bilder zu standardkonform encodierten JPEG-, H.264- oder HEVC-Videostreams, verfügt zur Erzielung höchster Kompressionseffizienz über erweiterte Bewegungserkennungsverfahren, einstellbare GOP-Strukturen und erreicht damit extrem niedrige Datenraten: Mit dem SmartAVC, einem von Ambarella modifizierten H.264 Encoder, kann ein 1080p30 Video ohne bewegten Bildinhalt mit 100kbps übertragen werden. 400-800kbps sind es mit Bewegungsinhalten und der SmartHEVC lässt dann noch einmal etwa 50% „Luft“ aus den Datenströmen. Diese Kompressionsleistung ermöglich nicht nur die Anbindung von hochauflösenden IP-Kameras über schmalbandige Infrastrukturen (z.B. Funkstrecken), sondern spart natürlich auch bei der Aufzeichnung des Videomaterials erheblich an Speicherplatz.

GStreamer als Softwareschnittstelle

Das GStreamer Projekt wurde bereits 1999 gegründet und ab Januar 2001 mit der Release 0.10.0 mit der Unterstützung durch RidgeRun, einem Embedded-Linux-Unternehmen, vor allem für Mediaanwendungen auf Mobiltelefonen weiterentwickelt. Seitdem konnte das Projekt zunehmend Support in der Open Source Community finden und liegt inzwischen in Release 1.16 vor. GStreamer ist freie Open-Source Software entsprechend den Bedingungen der GNU Lesser General Public License (LGPL) und steht auf gstreamer.freedesktop.org[3] zur Verfügung.

GStreamer verarbeitet Medienströme durch Prozesselemente in Form von Plugins in einer Pipeline. Elemente werden über Pads miteinander verbunden, i.d.R. geht eine Verbindung vom src-Pad (Source, Quelle) eines Elementes auf den sink-Pad (Sink, Senke) des Nachfolgelementes. Dabei wird die Datenkommunikation zwischen sink- und source-Pads über capabilities ausgetauscht und verhandelt[4].

Ein einfaches Beispiel zeigt Abbildung 5: Eine Quelle videotestsrc (Testbild) ist mit einer Senke autovideosink (Display) verbunden. Um diese Pipeline nun zu realisieren, gibt es in der gstreamer Umgebung das Commandline-Tool „gst-launch‘. Damit lässt sich die Pipeline folgendermaßen aufsetzen[5]:

gst-launch-1.0 videotestsrc ! autovideosink

Der Befehl “gst-launch-1.0” nutzt das Ausrufezeichen zur Verbindung zweier Elemente. Bei mehr als 2 Elementen enthält die Kommandozeile entsprechend weitere Elemente, die mit „!“-Zeichen verkettet sind.

Teknique hat nun die gstreamer-Umgebung durch entsprechende Plugins und Applications erweitert, die wiederum auf dem eingebetteten Ambarella SDK basieren. Damit lässt sich ein Videostream über das lokale Netzwerk beispielsweise mit folgendem Kommando initiieren:

gst-launch-1.0 oclea_video_src ! video/x-h264, width=1920, height=1080, stream-format=byte-stream ! rtph264pay ! udpsink host=192.168.100.123

Die Videoquelle “oclea_video_src“ wird hier mit Konfiguration 1920x1080 px, also FullHD und Bytestream auf den H.264 Encoder gelegt, exportiert von dort einen RTP-H.264 Payload und streamt über UDP auf den Host mit lokaler IP-Adresse 192.168.100.123. Auf dem Ziel-Host lässt sich der Stream dann z.B. mit dem VLC-Player darstellen, aber auch die gstreamer-Umgebung bietet eine Möglichkeit zur Darstellung:

gst-launch-1.0 rtpbin name=rtpbin udpsrc caps=’application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264’ port=5004 ! rtpbin.recv_rtp_sink_0 rtpbin. ! rtph264depay ! decodebin ! videoconvert ! autovideosink

Gstreamer Plugins
GStreamer setzt auf eine Plugin-Architektur und seine Funktionalität ist meist als „shared library“ implementiert. Damit ist das framework , weitgehend Plattform-agnostisch, d.h. kann in unterschiedlichen Betriebssystem- und Mediaumgebungen zum Einsatz kommen, ideal also für den Einsatz in einer Ambarella Modulkamera.

Teknique verhilft Ambarella-basierten Kameras damit zu einer erheblichen Beschleunigung bei der Anwendungsentwicklung. Komplexe Prozesse der Bildverarbeitung wie das Aufsetzen einer Image-Pipeline oder eines H.264-Codecs sind nun als Skript-Kommandos verfügbar und ganze Anwendungsketten aka Pipelines lassen sich in einer einzigen Zeile beschreiben.

In der aktuellen Revision r 0.9.2 des Oclea SDKs sind zwar noch nicht alle Funktionen aus dem Ambarella SDK verfügbar, Teknique kündigt aber vollständige Implementierung zum demnächst erscheinenden r 1.0 Release an.

Das Scripting mit „gst-launch-1.0“ ist eine schnelle Methode zur Evaluierung von Kamerafunktionen aber weniger das Mittel der Wahl zur Entwicklung einer Anwendung. Dafür stellt Teknique ein Docker-Image zur Verfügung, das neben den Bibliotheken die notwendige build-Umgebung mit CMAKE bereitstellt. Installiert auf einem Entwicklungs-Host mit Linux-OS (empfohlen wird Ubuntu) ist damit die in „C“ kodierte Applikationsentwicklung möglich.

Tekniques S5L µSoM OcleaTM

Tekniques Modulkameras[6] lassen sich aus einem morphologischen Baukasten einzelner Komponenten kombinieren – im S5L µSoM-Universum gibt es dazu eine Reihe von Bildsensormodulen mit unterschiedlichen Optiken zum Aufstecken auf das S5L-Modul samt Trägerplatte und schließlich Basismodule mit unterschiedlichen Schnittstellen wie etwa verdrahtetes oder drahtloses LAN.

Mit Außenabmessungen von 38 x 38 mm ergibt sich für eine komplette Kamera ohne Optik eine Bauhöhe von etwa 40 mm und somit eine nahezu kubische IP-Kamera. Der ganze Stapel lässt sich noch über simple Distanzbolzen zu einem mechanisch stabilen System verschrauben und in einem Außengehäuse befestigen.
Mit einer Leistungsaufnahme von deutlich unter 5 Watt und einem Betriebstemperaturbereich von – 20 .. + 85°C ist eine Zwangskühlung in den meisten Fällen entbehrlich, so dass sich kleine Box-Kamerabauformen elegant realisieren lassen.

Das S5L µSoM System bietet übrigens auch die Möglichkeit zur Gestaltung “zweiäugiger“ Kameras – da der S5L auf seinem Vin-Port 2 Bildsensoren unterstützt, sind auf dem SoM-Trägerboard (nicht dargestellt) entsprechend 2 Flex-Steckverbinder ausgeführt. So sind Kameras mit 2 gleichen Bildsensoren möglich, z.B. für 270° Überwachung oder mit 2 unterschiedlichen Sensorspezifikation, etwa für optimierten Tag/Nacht-Einsatz.

De-Warping als Anwendungsbeispiel

Das Image Warping (bzw. De-Warping in seiner Umkehrung) ist ein Bild-Transformationsalgorithmus, bei dem alle Positionen der Bildpunkte im Ausgangsbild auf neue Positionen im Zielbild zugeordnet werden. Alle anderen Bildpunktparameter wie Farb- oder Helligkeitswerte bleiben unverändert. Das De-Warping wird beispielsweise im Dokumentenscan zur Kompensation von optischen Verzerrungen verwendet, aber auch eingesetzt, um die Aufnahmen extrem weitwinkeliger Optiken (aka Fischauge) aufzubereiten, da diese naturgemäß gerade Linien umso stärker „verbiegen“, je weiter sie vom Zentrum entfernt sind.

Die Korrektur solcher extremen (180°) Weitwinkelaufnahmen ist mit zunehmender Verbreitung im Videoüberwachungs- und Automobilbereich zu einem Standard-Werkzeug geworden, bedarf aber einer eleganten Implementierung, um nicht wesentliche Prozessoressourcen zu verschlingen. In allen Ambarella SoCs erfolgt das De-Warping in der Image-Pipeline auf eingebetteten DSPs und braucht daher keine Ressourcen anderer Funktionsbereiche. Ein Streaming mit 4kp30, H.264 Codierung und Fisheye De-Warp erzeugt nicht mehr als 5% CPU-Last.

Das in Abbildung 8 dargestellte Beispiel zeigt eine Aufnahme mit 4k Auflösung bei 30fps, kodiert mit H.264 bei 8 Mbit/s Datenrate, einem Sony Sensor imx377 und einer 180° Weitwinkeloptik (oben). Typisch für das Fischaugenobjektiv die nahezu kreisrunde Abbildung. Darunter wurde das De-Warping Profil „simple“ mit maximaler De-Warping-Stärke aktiviert (Mitte). Darunter noch ein digitaler Zoom mit Faktor 2. Im gezoomten Bild lässt sich dann noch mit elektronischem Pan-Tilt der Bildausschnitt über das gesamte Ausgangsmaterial bewegen.

Bemerkungen über Teknique Ltd

Anders als Ambarella dürfte die Firma Teknique auch Brancheninsidern noch weitgehend unbekannt sein. Das junge Unternehmen ist ein spezialisierter Ambarella® Solution Partner aus Auckland in Neuseeland mit Kernkompetenz in den Bereichen Bildverarbeitung, Optik, KI & Analytik sowie Design und Engineering für die Entwicklung kundenspezifischer Kameralösungen, -module und -systeme.

Teknique stellt die System-on-Module (SoMs) Produktreihe Oclea™ her, die auf den Ambarella System-on-Chips (SoCs) basieren und durch Tekniques 15-jährige Erfahrung im Bereich Vision-Produkte unterstützt wird. Die Oclea™ SoMs erlauben einen schnelleren Marktzugang mit verkürzter Entwicklungszeit und verringertem Entwicklungsrisiko bei umfangreichen Features wie reichhaltiger ISP-Funktionalität und CVFlow™ CNN-Beschleunigung.

Die derzeit verfügbaren µSoMs aus der S5L-Reihe werden in Kürze durch eine SoM-Familie auf Basis des Ambarella CV22-SoCs erweitert, ermöglichen damit CNN-basierte Applikationen im Bereich der Videoanalytics und eröffnen diese Technologie für Kameraentwicklungen auch im kleineren und mittleren Stückzahlensegment.

st

[1]   Siehe: https://teknique.com
[2] 3D motion-compensated temporal filtering noise reduction, siehe: https://getsafeandsound.com/2018/09/2d-3d-noise-reduction-security-cameras/
[3] Offizielle Seite des gstreamer Projekts: https://gstreamer.freedesktop.org/
[4] Siehe umfangreiche Dokumentation zu gstreamer unter: https://gstreamer.freedesktop.org/documentation/?gi-language=c
[5] Siehe auch: http://z25.org/static/_rd_videostreaming_intro_plab/index.html
[6] Siehe auch: https://oclea.com

 

Downloads
Anhang Größe
Scripted Streaming - Applikationsschrift 630.73 KB