6. RLE – Run Length Encoding
• Idee
– Vermeiden von Wiederholungen
• Umsetzung
– Ersetzen von x Wiederholungen eines
Symbols S durch xS
7. RLE
W W W W S W W W W
W W W S S S W W W
W W S S W S S W W
W W S W W W S W W
W W S S S S S W W
W W S W W W S W W
W W S W W W S W W
W W S W W W S W W
W W S W W W S W W
12. Huffman Encoding
• Idee
– Häufig vorkommende Symbole bekommen
einen kürzeren „Prefix“
• Umsetzung
– Häufigkeitstabelle anlegen
– Optimale Prefix Codes berechnen (Magie!!)
– Eingabetext mithilfe der Prefix Codes
ausgeben
13. Huffman Encoding
Char Freq
• Beispieltext space 7
– „this is an example of a huffman tree” a 4
e 4
– 36 “Symbole” = 36 Bytes f 3
Speicherverbrauch h 2
i 2
m 2
n 2
s 2
t 2
l 1
o 1
p 1
r 1
u 1
x 1
14. Huffman Encoding
e/4 Char Freq Code
8 n/2 space 7
4 o/1
16 2
a 4
a/4 u/1 e 4
8 t/2 f 3
4
m/2
h 2
i 2
i/2 m 2
36
4 x/1 n 2
2
8 p/1 s 2
h/2 t 2
4 l 1
s/2
20 o 1
r/1 p 1
2 r 1
5 l/1
12 f/3 u 1
Space/7 x 1
15. Huffman Encoding
e/4 Char Freq Code
8 n/2 space 7 111
4 o/1
16 2
a 4 010
a/4 u/1 e 4 000
8 t/2 f 3 1101
4
m/2
h 2 1010
i 2 1000
i/2 m 2 0111
36
4 x/1 n 2 0010
2
8 p/1 s 2 1011
h/2 t 2 0110
4 l 1 11001
s/2
20 o 1 00111
r/1 p 1 10011
2 r 1 11000
5 l/1
12 f/3 u 1 00111
Space/7 x 1 10010
16. Huffman Encoding
• Beispieltext Char Freq Code
space 7 111
– „this is an example of a huffman tree” a 4 010
– 36 “Symbole” = 36 Bytes e 4 000
Speicherverbrauch f 3 1101
h 2 1010
i 2 1000
• Huffman codiert m 2 0111
– 011010101000101111110001011111010001 n 2 0010
011100010010010011110011110010001110 s 2 1011
0111110111101011110100011111011101011 t 2 0110
10100010111011011000000000 l 1 11001
o 1 00111
p 1 10011
– 135bits ~= 17 bytes r 1 11000
– Kompresionsrate ~ 47% u 1 00111
x 1 10010
33. Menschliche Wahrnehmung von
Licht und Farbe
• Verschiedene Rezeptoren für Farbe und
Licht auf der Netzhaut
• Helligkeitskanten werden besser
wahrgenommen
• Helligkeitsunterschiede in diagonaler
Richtung werden nicht so gut
wahrgenommen in horizontaler und
vertikaler
34. JPEG – 4:2:2 und 4:1:1
• Reduktion der Farbinformation
– 4:2:2
• Auf 4 Y Werte kommen jeweils 2 Cr/Cb Werte
– 4:1:1
• Auf 4 Y Werte kommt jeweils 1 Cr/Cb Wert
• Normalerweise nicht wahrnehmbar …
– … aber verlustbehaftet!!
35. JPEG – 4:2:2 und 4:1:1
• Reduktion der Farbinformation
– 4:2:2
Y Y
• Auf 4 Y Werte kommen jeweils 2 Cr/Cb Werte
– 4:1:1
Cr,Cb
• Auf 4 Y Werte kommt jeweils 1 Cr/Cb Wert
Y Y
• Normalerweise nicht wahrnehmbar …
– … aber verlustbehaftet!!
37. DCT
• Teilen der Teilbilder in 8x8 Pixel Blöcke
• Anwendung einer Diskreten Cosinus
Transformation (DCT)
auf jeden 8x8 Pixelblock
– Transformation in Frequenzraum
– Theoretisch verlustfrei, in Praxis aber
Rundungsfehler
44. DCT Basis Funktionen
• Kompressionsidee
y
y
y
y
y
y
y
y
x
x x x x x x x
– Hohe Frequenzen
y
x
kleinerer Amplitude
können vernachlässigt
y
werden!
x
y
– Orginal 8x8 Block als x
Linearkombination der
y
x
DCT Basis Funktionen y
x
y
x
y
x
y
x
46. DCT für die echte Geeks …
X7 X7 · µ ¶ ¸ · µ ¶ ¸
¼ 1 ¼ 1
Gu ;v = ®(u)®(v) gx ;y cos x+ u cos y+ v
x = 0 y= 0
8 2 8 2
u: Ort sfrequenz 0 · u < 8
u: Ort sfrequenz 0 · v < 8
q q
1 2
®p (n): Normalisierungsfunkt ion 8 fur n = 0, ansonst en
Ä 8
gx ;y : Pixelwert an der K oordinat en (x; y)
Gu ;v : DCT K oe± zient an den K oordinat en (u; v)
49. JPEG Kompression
• Platzeinsparung an zwei Stellen:
– 4:x:x Codierung
• Farbinformationen werden nicht für jedes Pixel
gespeichert
– Quantisierung der DCT Matrix
• Durch „Rundungsfehler“ werden primär
höherfrequente Signale Null
• Je mehr Nullen in der DCT Matrix um so effizienter
die anschliessende Huffmancodierung