Ist diese Untersuchung interessant? 18
-
Ja. (11) 61%
-
Ich habe keine Anwendung dafür. (1) 6%
-
Ist doch ein alter Hut. (5) 28%
-
Nein. (1) 6%
Diese kleine Untersuchung hat eine Vorgeschichte: Ich wollte ein Backup einer DVD als XviD erstellen, die 16:9-Format mit "schwarzen Balken" (Letterbox) hatte. Also habe ich die Balken oben und unten abgeschnitten und das ganze als XviD encodiert. Für dieses Backup wollte ich die bestmögliche Qualität, daher habe ich z.B. keine Skalierung gemacht, sondern das XviD wie das Original anamorph (Seitenverhältnis der Bildpunkte nicht 1:1) gespeichert.
Dann fiel mir aber ein, dass die Balken, die ich abgeschnitten hatte keine durch 16 teilbare Höhe hatten, nämlich 72. Nach allem, was ich über Codecs weiß, benutzen fast alle irgendwo diskrete Cosinustransformation, die auf Blöcken von Bildpunkten arbeitet, meistens 16 x 16 (glaube ich). Es wäre also zu erwarten, dass die Qualität besser wird, wenn die erste Zeile von meinem ausgeschnittenen Video einer durch 16 teilbaren Zeile des Originalvideos entspricht. Mich hat interessiert, ob man diesen Qualitätsunterschied messen kann und wenn ja wie groß er etwa ist.
Ich ging hin und nahm einen 22 Sekunden langen Ausschnitt aus dem Film mit viel Bewegung und relativ guten Kontrasten. Dann machte ich 16 XviDs, beginnend bei Zeile 80 (durch 16 teilbar) des Originalvideos bis Zeile 95. Jedes dieser Videos hat dieselbe Bildhöhe (wenn auch einen etwas anderen Ausschnitt) und 4000 kBit/s (2-pass).
Dann verglich ich die XviDs mit dem Original, und zwar immer einen Ausschnitt, den alle XviDs enthielten (oben und unten ein wenig abgeschnitten). Dazu verwendete ich die Funktion SSIM (AviSynth Plugin von Lefungus). Das Ergebnis befindet sich im Anhang.
Das war in etwa das Ergebnis, das ich erwartet hatte. Ohne Verschiebung ist die Qualität am besten, bei einer Verschiebung um 8 Zeilen ist sie wieder relativ gut, möglicherweise weil XviD (zumindest teilweise) 8 x 8-Blöcke verwendet. Aber was ist dieser SSIM-Wert und wie groß ist der Qualitätsverlust? Dazu probierte ich ein wenig herum, welche Bitrate ich wählen muss, um mit Verschiebung etwa denselben SSIM-Wert zu bekommen wie bei 4000 kBit/s ohne Verschiebung. Das Ergebnis hat mich überrascht. Der Wert lag etwas über 5000 kBit/s.
Das bedeutet, dass man für das Schneiden an einer ungeeigneten Stelle einen hohen Preis bezahlt. Um auf dieselbe Qualität zu kommen wie beim Schneiden an einer 16-Pixel-Grenze braucht man 25 % mehr Platz!
Natürlich ist diese kurze Messreihe nur ein Beispiel. Bei anderem Material kann es anders aussehen. Zum Beispiel dürfte es weniger ausmachen wenn das Material bearbeitet wird z.B. durch Weichzeichnen, denn dann kommt man sowieso lange nicht auf so hohe SSIM-Werte. Wenn das Video skaliert wird, wird dieser Effekt wahrscheinlich überhaupt nicht mehr auftreten. Schlimmer dürfte es allerdings bei niedrigeren Bitraten (ohne Skalierung) sein, denn gerade da wird bei der DCT viel "weggeworfen" und wenn die Blöcke sich nicht mit den ursprünglichen Blöcken decken, wird das noch deutlichere Unterschiede ergeben. Was für Zeilen gilt, gilt sicher auch für Spalten. Waagerecht würde ich sicherheitshalber nur auf Vielfachen von 32 schneiden.