PDA

View Full Version : Cosinustransformation


theDolphin
22-11-2002, 13:12
Also ich bin mir nicht sicher ob ich die funktionsweise der Bildkompression mit hilfe der Cosinustransformation durchschaut habe.. also.. so wies ich verstanden habe:
also 4 Pixel werden als vektor der Dimension 64 ausgefasst und mit der DCT transformiert.. was zur folge hat, das die einzelnen koordinaten des vektors, die ja sozusagen die einzelnen werte der Bildpunkt sind, monoton fallend sind..
diese werte werden jetzt quantisiert also mehr oder weniger gerundet, und am schluss wird dieser Vektor Codiert..
(stimmt das?? )

was ich mich jetzt frage, woher kommt dann die enorme kompression bei JPG, da ja sozusagen hier ja auch von jedem Punkt ein wert mitgeschickt wird (die koordinaten der vektoren sind ja die Informationen der Pixel)
Danke!

nautiLus
22-11-2002, 13:50
also ich denk ma das is so :
wobei das Bild in 8 *8 Pixel unterteilt wird also 64 -> werden als Vektor der Dimension 64 aufgefasst.

angehängt an deines.

jetzt wird dann noch der Vektor der Dimension 64 mittels Huffmancode oder arithmetischer Codierung codiert.
-> durch das A. C hat sich gezeigt das man 10 % weniger speicherplatz benötigt.

theDolphin
22-11-2002, 13:56
das ist mir schon klar, nur wo werden dabei soviele Daten eingespart, dass ei JPG file sagen wir mal nurmehr 20% der größe einer BMP hat...

nautiLus
22-11-2002, 17:54
die 64 einträge des dct ergebnisvektors werden in eine zick zack linie gebracht (dadurch werden die weiter hinten befindlichen komponenten gleich 0 sein -> bessere Komprimierung wird dadurtch erreicht)


-> und durch die zick zack linie erreicht man dann die bessere komprimierung
mfg nauti check check

theDolphin
22-11-2002, 20:30
hmm.. da komm ich schon wieder zu ner frage.. diese werte sind ja (laut buch seite 84) linear ansteigendwarum gibt man dann zB nicht nur den wert des ersten und des letzten elementes, bzw nur den wert der ersten + steigung/gefälle?? Interessiert mich nur so, auch wenn das sicher nicht so kompliziert im test kommt..

Judas42
25-11-2002, 09:03
Bei DCT nimmt man (z.b.) 8x8 Pixel und fasst es als Matrix X auf. Dann berechnet man sich mit einer Formel eine Abbildungsmatrix A (relativ einfach) und berechnet X'=X*A. In der Bildmatrix X' ersetzt man dann alle Werte unter einem gewissen Wert (z.b. 5) durch 0. Damit erhält man Y' und berechnet die Umkehrabbbildung X'=Y'*A^-1. Hier kommt der Vorteil der DCT ins Spiel: A^-1 ist hier nämlich A^T, also die transponierte Abbildungsmatrix und damit einfach zu berechnen. Das war der ganze Zauber