Da ich meine Homepage eingedampft habe, erlaube ich mir, Fritz Framalyzer einstweilen hier zu parken. Ich hoffe, es stört sich niemand daran. Zur Belohnung gibt’s auch eine aktuelle Version.
In dieser wird bereits während der Analyse die SSIM-Kurve angezeigt. Mit der Umsetzung bin ich allerdings noch nicht so recht zufrieden.
Benötigt wird:
- AviSynth 2.0/2.5 oder höher
- Fritz Framalyzer (siehe Anhang)
1. Einleitung
Als ich begann, Fritz Framalyzer zu programmieren, wusste ich noch nichts über die Existenz von Metriken und dergleichen. Ich wusste nichts über PSNR, SSIM und dergleichen. Ich hatte einfach nur die Idee, zwei Videos (Referenz- und Testvideo) Pixel für Pixel, Frame für Frame zu vergleichen. Ich betrachtete zunächst nur den dreidimensionalen RGB-Farbraum. Ein jeder Pixel hat doch eine bestimmte Position in dieser Würfelform. Wenn ich nun die Abweichung von jedem Pixel im dreidimensionalen RGB-Farbraum, d. i. der Euklidische Abstand, zusammenzähle und für jedes Frame einen Durchschnittswert ermittle, habe ich doch ein Maß für die Übereinstimmung eines Testvideos mit dem Original (Referenzvideo) – so mein Gedanke.
Die ersten Versuche mit dem Euklidischen Abstand ließen mich hoffen, dass das Experiment wenigstens zum Teil gelingen könnte. Als ich mich dann mit anderen Metriken wie z. B. SSIM beschäftige, wusste ich um die Begrenztheit der einfachen Metriken (PSNR, MSE und Euklidischer Abstand). Auch wenn die Ergebnisse sehr oft mit der subjektiven Wahrnehmumg übereinstimmen, so gibt es doch immer wieder Ausreißer (Falschaussagen).
Auch stellte ich fest, dass es bereits eine Reihe von Programmen gab, die genau das selbe machten, wie Fritz Framalyzer. Da das Programm aber schon weit fortgeschritten war, sollte es mir als "Experimentierbaukasten" für die Implementierung weiterer Metriken dienen. Auch konnte ich mit "fremden Zahlenwerten" nicht wirklich was anfangen.
Übrig geblieben sind zwei Arten von Metriken. Die einfachen Metriken, wie PSNR, MSE und Euklidischer Abstand, und die etwas komplexere Metrik SSIM (Structural Similarity). SSIM beruht an und für sich auf einer recht einfachen Formel und ist somit auch einfach zu implementieren – umso erstaunlicher, wie gut die Werte mit der subjektiven Wahrnehmung übereinstimmen. Während der Implementierung hatte ich auch E-Mail-Kontakt mit dem Entwickler dieser Metrik. Ich erfuhr, dass es eine weitere Metrik gibt, die noch besser als SSIM sei – und zwar VIF (Video Information Fidelity).
Mittlerweile wird auch an Weiterentwicklungen gearbeitet. Es existieren bereits Prototypen, die speziell für den Videobereich entwickelt worden sind: V-VIF und V-SSIM. Die bisherigen Ergebnisse können sich sehen lassen. Die Metriken sollen noch zuverlässigere Aussagen liefern als die ohnehin schon robuste SSIM-Metrik.
2. Bedienung
2.1 Referenzvideo laden
Es gibt zwei Möglichkeiten, ein Referenzvideo zu laden. Die erste Möglichkeit besteht darin, zuerst eine Vorlage, d. i. ein AviSynth-Script (z. B. "AviSource (interlaced).avs"), zu laden und anschließend das eigentliche Video (z. B. "video.avi"). Eine andere Möglichkeit ist das direkte Laden eines AviSynth-Scripts. Das Referenzvideo muss im YUY2-Farbraum vorliegen.
2.2 Testvideos laden
Auch beim Laden der Testvideos existieren zwei Möglichkeiten. Entweder man lädt die Videos über ein- und dieselbe Vorlage oder man lädt einzelne AviSynth-Scripts. Auch die Testvideos müssen im YUY2-Farbraum vorliegen.
2.3 Einstellungen
Unter Einstellungen lassen sich die zu analysierenden Framebereiche definieren. Per Voreinstellung werden alle Frames analysiert. Unter Metriken lassen sich Metriken aus- und einschalten. PSNR, MSE und Euklidischer Abstand haben nur eine sehr bedingte Aussagekraft. Die zu bevorzugende Metrik ist SSIM (Structural Similarity).
Wenn das einfache Protokoll aktiviert ist, werden nach der Analyse automatisch zwei Textdateien erstellt. Eine dient dem schnellen Überblick, in der anderen stehen alle wichtigen (Durchschnitts-)Werte der Analyse drinnen. Das erweiterte Protokoll erstellt eine CSV-Datei, in der ebenfalls alle Durchschnittswerte enthalten sind, darüber hinaus aber auch alle einzelnen Framewerte. Eine solche CSV-Datei kann z. B. mit Microsoft Excel geladen werden und es können Grafiken (z. B. SSIM-Kurven) erstellt werden. Beim erweiterten Protokoll werden außerdem noch die Grafiken der SSIM-Kurve abgespeichert. So hat man einen schnellen Überblick über die Resultate, ohne dass man eine Tabellenkalkulation bemühen müsste. Vorteil der Excel-Lösung ist allerdings, dass die Grafiken individueller gestaltet werden können.
2.4 Verzeichnis
Normalerweise werden die Protokolldateien und Grafiken im Verzeichnis des Referenzvideos abgelegt. Hier kann ein alternatives Verzeichnis festgelegt werden.
2.5 Zusammenfassung
Hier kann man noch mal alle Einstellungen kontrollieren und die Analyse starten.
2.6 Analyse
Während der Analyse kann man die Entwicklung der Werte verfolgen (die Durchschnittswerte werden immer wieder neu ermittelt). In einer Grafik lässt sich der Kurvenverlauf der SSIM-Werte beobachten. Die Kurven von bereits analysierten Videos werden ebenfalls angezeigt. So hat man sofort einen grafischen Vergleich.
2.7 Ergebnisse
Auf der Ergebnisseite werden alle ermittelten Werte aufgelistet. Falls das einfache Protokoll nicht aktiviert war, hat man hier noch mal die Möglichkeit, die Resultate in Textdateien abzuspeichern. Außerdem kann man den kompletten Kurvenverlauf der SSIM-Werte am Bildschirm betrachten und den gerade ausgewählten Framebereich als Grafik abspeichern.
3. Tipps
3.1 Referenzvideo
Ein 10-Sekunden-Testclip ist sicher zu kurz, um zu repräsentativen Ergebnissen zu kommen. Wenn, dann muss man mehrere solcher kurzen Clips testen. Dann aber mit unterschiedlichen Inhalten. Es bietet sich an, ein Testvideo mit unterschiedlichen Szenen zu generieren (z. B. ein einminütiges Testvideo). Das Testvideo soll sowohl ruhige Szenen aber auch Szenen mit sehr viel Bewegung beinhalten. Auf diese Weise lassen sich schon eher repräsentative Aussagen machen.
3.2 Analyse
Die SSIM-Metrik benötigt sehr viel Zeit zur Analyse. Um die Zeit zu verkürzen, kann man mit der Crop-Funktion von AviSynth ein kleineres Analysefenster definieren. Dadurch verringert sich die Analysezeit und man erhält trotzdem repräsentative Ergebnisse.
3.2 Interpretation der Ergebnisse
Wenn die Analyse beendet ist, sollte man noch einen Blick auf die Werte "Kleinstes Q in Y" und "Größtes Q in Y" werfen (sofern die SSIM-Metrik aktiviert war). Sollte hier eine große Differenz vorhanden sein, so prüft man einfach den betreffenden Frame ("Kleinstes Q in Y").
Desweiteren ist es ratsam, neben den reinen Zahlenwerten (Durchschnittswerte über alle Frames) auch den Kurvenverlauf zu begutachten. Ein guter Durchschnittswert sagt noch lange nichts über die Verteilung der Werte aus, bspw., ob es Ausreißer nach unten gibt oder nicht. Dazu aktiviert man in den Einstellungen das erweiterte Logfile und schon werden die Ergebnisse jedes Frames in eine CSV-Datei geschrieben. Diese Datei kann dann mit einer Tabellenkalkulation geladen und es können entsprechende Graphiken angefertigt werden.
Die implementierte SSIM-Metrik macht keinen Unterschied, ob es sich um Szenen mit viel oder mit wenig Bewegung handelt. Die Ergebnisse von Szenen mit viel Bewegung müssen also relativiert (weniger gewichtet) betrachtet werden.
Generell sollte man die Ergebnisse immer kritisch hinterfragen und einige Stichproben (Einzelbildvergleiche, Betrachtung am Fernseher usw.) zur Verifizierung machen, so dass man ein Gefühl für die ermittelten Werte und Kurven erhält. Auch macht es einen Unterschied, in welchem Kontext (Videoformat) die Analyse gemacht wurde.