Eigene Quantisierungsmatrizen in x264

  • Nachdem pengvado ffdshow beigebracht hat, mit selbstspezifizierten Quantisierungsmatrizen encodetes Material zu decodieren, sind diese jetzt mit ausschließlich freier Software praktisch verwendbar. Spezielle Quantisierungsmatrizen können für bestimmte Szenarien eine deutlich bessere wahrgenommene Qualität bringen ("Objektive" Metriken wie PSNR und SSIM sind meist schlechter als mit "Standard" Quantisierung).

    In H.264/AVC kann man über diese Quantisierungsmatrizen viel mehr Einfluss nehmen als bei MPEG4 ASP. Es gibt separate Matrizen für Farbe/Helligkeit Intra/Inter und 4x4/8x8 Blöcke (jedoch nicht alle Kombinationen).

    Im englischen Forum gibt es einen Thread, in dem die bisher verfügbaren Quantisierungsmatrizen gesammelt werden:

    http://forum.doom9.org/showthread.php?t=96159

    Ein Vergleich zwischen diesen gibt es hier:

    http://forum.doom9.org/showthread.php?t=102006

    Manao hat einen avisynthfilter entwickelt, mit dem man den Effekt eines Satzes von QM bei konstantem Quantizer beobachten kann:

    http://forum.doom9.org/showthread.php?t=102022

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • Nett, hoffentlich findet wer die Zeit die Matrizen mal alle mit ein paar kompletten Filmen anzutesten, so daß man eventuell später mal das Filmmaterial eventuell analysieren kann und dann sich dementsprechend für eine bestimmte MAtrizenkombination entscheidet. *träum*

    Cu Selru

  • Moinmoin,

    Man könnte ja ein Sammeltread mit alternativen Matrixsettings für bestimmte Filmcharaktere erstellen.
    Es muß nur festgelegt werden, welche Aspekte in Frage kommen. Bsp eine Art Tabelle mit Color , s/w, Action, Doku, SF etc und dann die entsprechenden, subjektiv entsprechenden Matrixen.
    Bitratenbereich ist wohl auch entscheident.
    Aber ich denke, jemand von den Moderatoren oder Entwicklern sollte diese festlegen.
    Sonst gibt es von Anfang an ein heikles Durcheinander.

    Gruß 7ven

  • Bringen eigene Matrizen wirklich so viel?

    Ist es sinnvoll, für jede Bitrate eine eigene Matrix auszuwählen? Also für 1000kbit ne andere als für 1400kbit?

    Ich hab manchmal das Gefühl, dass das mehr ein Placeboeffekt ist als ein wirklicher Quali-gewinn.

  • Denke bei x264 können Matrizen einiges mehr bewirken als bei Xvid&Co und das es wahrscheinlich sinniger ist Matrizen für bestimmte Arten von Filmen anstatt für Datenraten zu wählen. ;)

    Zitat

    Ich hab manchmal das Gefühl, dass das mehr ein Placeboeffekt ist als ein wirklicher Quali-gewinn.


    Trifft zumindest bei Xvid&Co zu.

    Cu Selur

  • Zitat von Selur

    Denke bei x264 können Matrizen einiges mehr bewirken als bei Xvid&Co und das es wahrscheinlich sinniger ist Matrizen für bestimmte Arten von Filmen anstatt für Datenraten zu wählen. ;)


    Trifft zumindest bei Xvid&Co zu.

    Cu Selur

    Hm, wage ich mal zu bezweifeln, daß das bei ASP fast nur Placebo ist. Wer z.B. bewußt Matritzen erstellt die zugunsten geringerer Verblockung mehr weichzeichnen und damit auch noch das Rasuschen ein wenig mindern, hat in meinen Augen z.B. gerade bei analogen TV-Mitschnitten ein mächtiges Werkzeug an der Hand.

  • Zitat von EthanoliX

    Hm, wage ich mal zu bezweifeln, daß das bei ASP fast nur Placebo ist. Wer z.B. bewußt Matritzen erstellt die zugunsten geringerer Verblockung mehr weichzeichnen[...]hat in meinen Augen z.B. gerade bei analogen TV-Mitschnitten ein mächtiges Werkzeug an der Hand.

    Gibt es denn schon dafür Beispielsmatrixen?

    Gruß 7ven

  • Ja, Ligh hat eine Matrizensammlung zusammengestellt, da sind auch zwei von mir darunter, und die glätten mehr oder weniger stark, zugunsten einer wie ich finde geringeren Blockbildung. Aber da das subjektive Empfinden eines jeden stark unterschiedlich auf derlei Effekte (Glättung, Blockbildung) reagiert, denke ich testet man selbst am besten ein wenig herum, und nimmt diese Vorlagen als Orientierung.

  • Wie sieht es eigendlich bei der Quantizer - log Funktion bei dgmpegdec aus? Ich weiß nicht genau, wie ich die Frage formulieren soll, um verständlich zu machen, was ich genau meine. Er spuckt ja eine Menge an unterschiedlichen Intra- und NonIntra Werte aus. Lohnt es sich, diese Werte zu verwenden beim encoden mit x264? Und wenn ja, welche :)?
    Oder wofür sind Sie eigendlich gedacht?

    Gruß
    7ven

  • Ich weiß nicht genau, was die Quantizer Log Funktion bei dgmpegdec macht, aber das einzige was ich mir vorstellen kann, ist, dass es die vom MPEG2 verwendeten Quantizer ausgibt.

    Mit an Sicherheit grenzender Wahrscheinlichkeit sind diese Werte nicht zu gebrauchen, weil Quantizer bei H.264 anders sind als bei MPEG2.

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • Ich dachte immer, dass die I,P und B - Frames immer gleich bleiben (bevor sie encodet werden). Und das die verschieden Encoder sie nur unterschiedlich bearbeiten.

    Selbst wenn x264 eine andere Quantizerfunktion hat, so benutzt er doch auch die I und P Frames, wie HC Encoder oder DivX auch.

    Aber ich glaub, dass ich die Funktion von den Matrixen noch nicht wirklich verstanden habe.

    Ist nur schade, wenn der DGMpegDec schon einen Quant.log erstellt, man diese nicht für unterschiedliche Encoder verwenden kann.

    Werd mich mal gemach schlau über die Funktionen und Wirkungen von Matrixen machen.

    Danke für die Antworten :)

    Gruß
    7ven

  • Der Encoder bekommt aber weder I- noch P- oder B-Frames geliefert, sondern unkomprimierte Bilder. Der folgende Encoder kann also gar nicht wissen, welche Bilder der vorherige Decoder dekomprimiert und decodiert hatte - er wird also völlig neu entscheiden müssen, welche Bilder er zu I-, P- oder anderen Frames macht.

    Außerdem hat MPEG-2-Video auf DVDs häufig maximal 15 Frames pro GOP. DivX/XviD jedoch verwenden bis zu 300 - bist du sicher, dass das ein 1:1-Übertragen der GOP-Struktur überhaupt sinnvoll wäre - so technologieübergreifend von MPEG-2 nach MPEG-4?

  • :D Ok Ok, also keine direkte Übernahme der quant.log- Funktion des DGMPEGDEC, zumindest, was Mpeg 4 angeht... Gibt es denn irgendwo eine Beschreibung, wie die Matrixen im x264 funktionieren?

    Gruß @ll

  • Zuersteinmal ist der Plural von Matrix Matrizen! :so-nicht: ;)

    Eine Quelle, die das präzise und verständlich erklärt kenne ich nicht, ich versuchs mal selber:

    Im Prinzip funktionieren AVC Quantisierungsmatrizen gleich wie ihre ASP oder MPEG1/2 Verwandten:

    Wie auch bei diesen werden die Komponenten der transformierten Residuals (entweder das Fehlerbild nach Bewegungskompensation oder die Unterschiede zur Intra Prediction), die die verschiedenen Frequenzkomponenten beschreiben, durch die entsprechenden Einträge der Quantisierungsmatrix und einen vom Quantisierungsparameter abhängigen Wert (Dem Quantisierungsfaktor) geteilt, gerundet und danach an die Entropiecodierung geschickt.

    Bei der Decodierung werden die gerundeten Werte mit dem Quantisierungsfaktor und dem in Wert der Quantisierungsmatrix multipliziert. Durch die Rundung entstehen also Fehler, die maximal 0.5*QF*QME betragen. Deshalb sorgen niedrige Werte in einer QM dafür, dass die entsprechende Frequenzkomponente mit geringerem Fehler abgespeichert wird.

    Die Berechnung des QF aus dem QP ist jedoch sehr anders als bei bisherigen Standards, er folgt einer logarithmischen Skala, d.h. eine erhöhung des QP um 6 verdoppelt den QF, während bei MPEG1 und 2 eine Verdopplung des QP nötig ist. (deshalb funktioniert das mit der dgmpegdec quant log Funktion nicht)

    Die Größe der "normalen" Transformation in AVC 4x4 ist, deshalb ist auch die Quantisierungsmatrix nur 4x4 groß.

    Die optionale 8x8 Transformation ist anders definiert als in DCT basierten Standards, deshalb sind die AVC 8x8 Matrizen nicht kompatibel zu MPEG1/2/4ASP.

    AVC lässt mehr Freiheiten, es können separate Intra, Inter, Chroma, Luma, 4x4, 8x8 Matrizen spezifiziert werden, zusätzlich lässt sich das Rundungsverhalten beeinflussen.

    Selur: Fehlt da noch was?

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!