Anwenden von zweidimensionaler (inverser) diskreter Cosinus-Transformation und Quantisierung








Felder mit "A7" initialisieren
Felder mit "eyebrow" initialisieren
Initwerte "A7" abziehen
2D-DCT auf die Matrix anwenden.
inverse 2D-DCt auf die Matrix anwenden.
Quantisierungsfaktor: (sinnvolle Werte: 1 bis 31)
Matrix quantisieren
Matrix invers quantisieren

Was soll das Ganze?

  1. Initialisieren: Eintragen der Luma-Werte des Beispielblockes oder des "Eyebrow"-Blockes aus Steven Smith's "Guide to Digital Signal Processing"

  2. 2D-DCT: Anwendung der zweidimensionalen, diskreten Cosinus-Transformation auf die Matrix, wie z.B. in den H.26x-Standards der ITU-T gefordert. Der Javascript-Quellcode steht hier. Die Berechnung folgt den Formeln von Farzin Deravis "Introduction to Image Processing and Communication". Verschiedene Werte können durch Veränderung der Matrix ausprobiert werden.

  3. Quantisierung: Abweichend von den Standards wird hier durch Division mit dem Quantisierungs"faktor" und anschliessende kaufmännische Rundung quantisiert. JPEG fordert im Baseline-Algorithmus eine Quantisierungsmatrix, H.26x quantisiert den ersten Koeffizienten mit eins.

  4. inverses Quantisieren: Multiplikation mit dem Quantisierungsfaktor. Datenverlust kann durch Modifikation der Matrix simuliert werden.

  5. inverse 2D-DCT: Der Javascript-Quellcode steht hier. Berechnung ebenfalls nach dem Buch von F. Deravis. Datenverlust kann durch Modifikation der Matrix simuliert werden.

  6. Abzug der ursprünglichen Werte des A7-Beispielblockes, um Ungenauigkeiten durch DCT, Quantisierung und Datenverlust deutlich zu machen.

13.01.2000
Tim Suchanek