Traceschrittvorlagen zur Videoanalyse

Unter den mit ecu.test installierten Standardvorlagen befinden sich im Ordner Multimedia folgende Vorlagen zur Analyse von Videosignalen:

Nachfolgend wird die Verwendung dieser Vorlagen anhand beispielhafter Analyseaufgaben erläutert.


Auffinden schwarzer Frames in einem Video

Aufgabe

Es soll geprüft werden, ob ein Videosignal schwarze Einzelbilder (Frames) enthält. Diese deuten auf Fehler bei der Videoübertragung hin und sollen deshalb mit FAILED bewertet werden.

Lösung

Die Vorlage CalculateBrightness berechnet für jedes Frame eines Videos die Helligkeit im Bereich zwischen 0 (vollkommen scharzes Bild) und 1 (vollkommen weißes Bild) und schreibt die Helligkeitswerte aller Frames in das ausgehende Signal Brightness. In einem Triggerblock kann anschließend überprüft werden, ob die Helligkeit einen bestimmten Schwellwert, etwa 0,05, unterschreitet.

Für das Reporting in Videoanalysen kann die Vorlage ReportFramesAtStartTrigger verwendet werden. Mit Standardparametrierung fügt sie das zu Beginn des Triggerbereiches gültige Video-Frame, im vorliegenden Fall also das erste mit einer Helligkeit < 0,05, in den Report ein. Da schwarze Frames im Report wenig Aussagekraft besitzen, kann durch Ändern des Parameters FrameOffset von 0 in -1 bewirkt werden, dass das letzte Frame vor dem schwarzen Frame im Report landet. Durch Angabe von (-1, 0, 1) kann bewirkt werden, das neben dem schwarzen Frame auch das Vorgänger- und das Nachfolger-Frame reportet werden. Durch entsprechendes Setzen des Parameters Verdict kann festgelegt werden, das Funde schwarzer Frames als Fehler gewertet werden.

../../../../../_images/CalculateBrightness.png

Sollte das analysierte Video durch Abfilmen eines Displays entstanden sein, dann wird dort vermutlich auch bei komplett schwarzem Bildinhalt eher eine dunkelgraue Fläche erfasst. In diesem Fall muss der Schwellwert entsprechend höher gesetzt werden. Außerdem werden gegebenenfalls zusätzliche Bildinhalte, wie etwa der Displayrahmen, erfasst, die für die vorliegende Analyse irrelevant, wenn nicht gar störend sind. In diesem Fall kann durch Angabe des Parameters Mask die Helligheitsberechnung auf den relevanten Bildausschnitt begrenzt werden. Bei ReportFramesAtStartTrigger kann dieselbe Maske angegeben werden, damit sie in den im Report erscheinenden Bildern eingezeichnet wird.

Nach erfolgter Analyse lässt sich das Ergebnis im trace.xplorer betrachten. Dort kann man neben dem Videosignal den Helligkeitsverlauf visualisieren, zu einzelnen Fundstellen navigieren und bei Bedarf Frame-granular untersuchen.

../../../../../_images/CalculateBrightness_Trex.png

Auffinden von GUI-Symbolen in einem Video

Aufgabe

Im Video einer Benutzeroberfläche soll das Vorhandensein bestimmter Icons überprüft werden, die als Referenzbild abgelegt sind.

Lösung

Für derlei Aufgaben eignet sich die Vorlage FindImage. Die Vorlage ähnelt in ihrer Parametrierung der gleichnamigen Funktion FindImage der Klasse Image zur Analyse von Einzelbildern. Neben einem Referenzbild muss ein Schwellwert zwischen 0 und 1 angegeben werden, der festlegt, wie ähnlich der Bildausschnitt im Video dem Referenzbild sein muss, um als Fundstelle eingestuft zu werden. 1 bedeutet dabei vollständige Übereinstimmung, die allerdings in einem Video, selbst wenn dieses per Framegrabber erfasst wurde, typischerweise nie erreicht wird, da durch die (verlustbehaftete) Videokompression Bildinhalte leicht verändert werden. Typischerweise eignen sich Schwellwerte größer 0,9, um Übereinstimmungen trotz Rauschen oder Kompression zu finden; der Standardwert ist 0,98.

Die Vorlage liefert ihre Ergebnisse in Form von zwei Ausgangssignalen, die optional angebunden werden können:

  • Das Signal Contains liefert pro Frame die Anzahl der Fundstellen. Dieses Signal kann zur Formulierung von Bedingungen genutzt werden, um weiterführende Analysen zu triggern oder Bewertungen vorzunehmen. Im einfachsten Fall reicht der Ausdruck Contains, um zu prüfen, ob das Referenzbild überhaupt im Video gefunden wurde. Mit dem Ausdruck RisingEdge(Contains) kann geprüft werden, ob neue Fundstellen hinzugekommen sind.

  • Das Signal Matches liefert, wiederum analog zu Image.FindImage, eine MatchList [ ImageMatch ] pro Frame, der Detailinformationen zu den einzelnen Funden entnommen werden können. Insbesondere kann dieses Ausgangssignal an die Vorlage ReportFramesAtStartTrigger weitergegeben werden, um Fundstellen im Report zu visualisieren. Dazu kann der Parameter MatchColor der Vorlage ReportFramesAtStartTrigger mit einem Farbwert belegt werden, der sich gut vom Bildinhalt des Videos abhebt und zum Zeichnen eines Rahmens um die Fundstellen benutzt wird.

Um die Bildsuche auf Teilbereiche der Video-Frames zu beschränken, kann der Vorlage FindImage eine Maske übergeben werden. Wichtig ist, dass gegebenenfalls die gleiche Maske auch der Vorlage ReportFramesAtStartTrigger übergeben wird, um eine korrekte Visualisierung der Fundstellen zu gewährleisten.


Beschleunigung von Videoanalysen

Motivation

Bildverarbeitsungsoperation sind oftmals rechenaufwendig. Da sie bei einer Videoanalyse auf einer Großzahl von Einzelbildern ausgeführt werden, können schnell Analyse-Laufzeiten erreicht werden, die nicht mehr praktikabel sind. Hier kann mit einer Reihe von Maßnahmen gegengesteuert werden:

  • Maskierung

    Die genannten Vorlagen bieten allesamt die Möglichkeit, die durchgeführte Bildverarbeitungsoperation auf einen Teilbereich der Video-Frames zu beschränken. Dies kann aufgrund inhaltlicher Aspekte einer Videoanalyse erfolgen, allerdings auch zur Laufzeitoptimierung.


  • Triggerung

    Verschiedene Bildverarbeitungsoperationen unterscheiden sich teilweise erheblich in ihrer Laufzeit. So ist beispielsweise die Suche von Teilbildern mittels FindImage erheblich aufwendiger als die Helligkeitsberechnung mittels CalculateBrightness. Daher lohnt es sich gegebenenfalls, FindImage gesteuert durch einen Triggerblock nur dann auszuführen, wenn die Helligkeit im betreffenden Bildbereich das Vorkommen des gesuchten Teilbilds vermuten lässt.


  • Datenreduktion

    Die Laufzeit von Bildverarbeitungsoperationen korreliert meist direkt mit der zu verarbeitenden Menge von Bilddaten. Vor diesem Hintergrund erlaubt die Vorlage ReduceVideo verschiedene Arten der Datenreduktion:

    • Durch Angabe eines Skalierungsfaktors oder konkreter Zielabmessungen kann die Größe der einzelnen Video-Frames reduziert werden - mit großem Effekt: Eine Halbierung der Kantenlänge reduziert die Bildgröße beispielsweise auf ein Viertel und reduziert die Laufzeit von Bildverarbeitungsoperation typischerweise im gleichen Maße. Dabei muss allerdings beachtet werden, dass beispielsweise Referenzbilder gleichermaßen skaliert werden müssen.

    • Durch Angabe einer geringeren Framerate kann die Laufzeit der nachfolgenden Analyse ebenso reduziert werden. Diese Optimierung lässt sich nutzen, wenn die zu prüfenden Zeitbedingungen die ursprüngliche Framerate des zu untersuchenden Videosignals nicht benötigen.

    • Durch die (sehr effizient ausführbare) Konvertierung aller Video-Frames zu Graustufenbilder lassen sich oftmals Beschleunigungen um den Faktor 3,5 erreichen, da nicht nur die zu analysierende Datenmenge auf ein Drittel reduziert wird, sondern auch der Aufwand entfällt, die Ergebnisse pro Farbkanal zu einem Gesamtergebnis zu aggregieren.


    Die Vorlage ReduceVideo erzeugt eine gemäß ihrer Parametrierung reduzierte Videodatei im Reportverzeichnis und gibt ein entsprechendes Videosignal aus. Dabei muss Folgendes beachtet werden:

    • Die Vorlage ignoriert aus technischen Gründen Triggerbereiche. Es wird immer das gesamte Eingangsvideo verarbeitet und als reduziertes Ausgangsvideo geschrieben.

    • Beim Schreiben des Ausgangsvideos kommt erneut eine verlustbehaftete Kompression zum Einsatz, die zu zusätzlichen Kompressionsartefakten führen kann.