Top Banner
Kap.4 JPEG: Bildkompression Ziel: Gegeben sind Daten y R N . Bestimme C R N×N mit C · C T = I , so dass x = C · y dünbesetzt ist. Originalbild y (30Kbt) Komprimiertes Bild z y (7Kbt)
29

Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Feb 05, 2018

Download

Documents

ngohanh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Kap.4 JPEG: Bildkompression

Ziel: Gegeben sind Daten y ∈ RN . Bestimme C ∈ R

N×N mitC · CT = I, so dass x = C · y dünbesetzt ist.

Originalbild y (30Kbt) Komprimiertes Bild z ≈ y (7Kbt)

Page 2: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

JPEG (Joint Photographic Experts Group) wurde 1992 entwickelt undhat sich im Internet als Bildstandard durchgesetzt.

Ablauf der JPEG-Kompression:

Ursprüngliche Datei.bmp

Komprimierte Datei.jpg

Page 3: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.1 Bildmodelle

Kriterium für die Qualität eines Bildes ist die menschlicheWahrnehmung des Bildes (menschliches Auge):

130 Millionen ’schwarz-weiße’ Rezeptoren, 100 Grautöne

6 Millionen ’farbige’ Rezeptoren: rot, grün, blau.

Definition: Ein Schwarz-Weiß-Bild ist eine N1 × N2 Matrix B = (B[i, j])mit ganzzahligen Einträgen (Pixeln) B[i, j] ∈ 0, . . . , 255.

8−Bit-Farbtiefe:0 → 00000000

. . .

255 → 11111111

Ein 32 × 32 Bild benötigt 1024 · 8Bit =: 1kByte

Page 4: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

RGB-Farbraum (Komputermonitoren)

Definition: Ein Farbbild ist eine N1 × N2 × 3 Matrix B = (B[i, j, k ]) mitganzzahligen Einträgen (Pixeln) B[i, j, k ] ∈ 0, . . . , 255.

Pixel[i, j] = Schwarz +B[i, j, 1] ·Rot +B[i, j, 2] ·Grun+B[i, j, 3] ·Blau.

Page 5: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

YCbCr-Farbraum (digitales Fernsehen)

Y Luminanz (Helligkeit)

Cb und Cr skalierte Chrominanzen (Farbigkeit)

YCbCr

=

0.299 0.587 0.114−0.169 −0.331 0.500

0.500 −0.419 −0.081

︸ ︷︷ ︸

reguläre Matrix

·

RGB

mit

0 ≤ Y ≤ 255

−127.5 ≤ Cb ≤ 127.5

−127.5 ≤ Cr ≤ 127.5

Page 6: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.2 JPEG: Farbmodelländerung

︸ ︷︷ ︸

Datei.bmp

gespeichert

als ︸ ︷︷ ︸

RGB–Farbraum

oder

äquivalent ︸ ︷︷ ︸

YCbCr–Farbraum

Page 7: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.3. JPEG: Blockeinteilung

Page 8: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.4. JPEG: Subsampling

︸ ︷︷ ︸

Datei.bmp

gespeichert

als ︸ ︷︷ ︸

RGB–Farbraum

oder

äquivalent ︸ ︷︷ ︸

YCbCr–Farbraum

Daten können um einen Faktor 2 reduziert werden (verlustbehaftete Kompression)

Page 9: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.5. JPEG: Indexverschiebung

RGB

7→

YCbCr

12800

∈ −128, . . . , 127

vorzeichenlose Bit 7→ vorzeichenbehaftete Bit

Verlustbehaftet aber keine Kompression.

Page 10: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.6. JPEG: 2-dim Diskrete Cosinus Transformation

Definition: Die 2-dim DCT ist eine lineare Transformation auf RM×M ,M ∈ N,

B 7→ B, B = C · B · CT , C ∈ RM×M , (1)

die Matrix C = (C[n, ℓ])n,ℓ=0,...,M−1 ist gegeben durch

C[n, ℓ] = d [n] · cosπ(2ℓ + 1)n

2M(2)

mit

d [n] =1√M

1, falls n = 0,√

2, sonst.

Page 11: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Beispiel:

212 212 212 212 212 212 212 212212 212 212 212 212 212 212 21275 75 75 75 75 75 75 7575 75 75 75 75 75 75 7575 75 75 75 75 75 75 7575 75 75 75 75 75 75 7575 75 75 75 75 75 75 7575 75 75 75 75 75 75 75

nach DCT:

874.000 0 0 0 0 0 0 0351.000 0 0 0 0 0 0 0253.143 0 0 0 0 0 0 0123.297 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0−82.384 0 0 0 0 0 0 0−104.855 0 0 0 0 0 0 0−69.842 0 0 0 0 0 0 0

Page 12: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Sei B = (B[n, ℓ])n,ℓ=0,...,M−1. Definiere den Vektor

Bvek =

B[0, 0]...

B[0,M − 1]B[1, 0]

...B[1,M − 1]

...B[M − 1,M − 1]

∈ RM2

und die Matrix

CT⊗ C = (C[ℓ,n]C)ℓ,n=0,...,M−1 , C = (C[n, ℓ])n,ℓ=0,...,M−1 .

Lemma: Es gilt

B = C B CT ⇐⇒ Bvek =(CT ⊗ C

)Bvek .

Page 13: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.7. JPEG: 2-dim DCT via 1-dim DCT

Die 2-dim DCT ist separabel, d.h. man kann die 2-dim DCT mit Hilfeder 1-dim DCT ausführen.

Definition: Die 1-dim DCT ist eine lineare Transformation auf RM ,M ∈ N,

y 7→ y , y = Cy , C ∈ RM×M . (3)

Die Matrix C = (C[n, ℓ])n,ℓ=0,...,M−1 ist definiert wie in (2).

Eigenschaften der 1-dim DCT:

(i) 1-dim DCT ist nicht symmetrisch, d.h. C 6= CT ;

(ii) 1-dim DCT ist eine orthogonale Transformation, d.h. CCT = I;

(iii) 1-dim DCT ist eine Rotation in RM , d.h. CCT = I und det(C) = 1;

(iv) 1-dim DCT ist eine der Techniken zur Dekorrelation.

Page 14: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.7 (i) 1-dim DCT ist nicht symmetrisch, denn für N = 8 gilt

C =1√8

1 1 1 1 1 1 1 1a1 b1 c1 d1 −d1 −c1 −b1 −a1

a2 b2 −b2 −a2 −a2 −b2 b2 a2

b1 −d1 −a1 −c1 c1 a1 d1 −b1

1 −1 −1 1 1 −1 −1 1c1 −a1 d1 b1 −b1 −d1 a1 −c1

b2 −a2 a2 −b2 −b2 a2 −a2 b2

d1 −c1 b1 −a1 a1 −b1 c1 −d1

mita1 =

√2 cos π

16 a2 =√

2 cos 2π16 ≈ 1.307

b1 =√

2 cos 3π16 b2 =

√2 cos 6π

16

c1 =√

2 cos 5π16 d1 =

√2 cos 7π

16

Page 15: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.7 (iii) Energie eines Vektors y ∈ RM ist gegeben durch

‖y‖2 =

√√√√

M∑

j=1

yj .

Lemma: Seien y ∈ RM . Dann gilt

‖C · y‖22 = ‖y‖2

2.

Beweis: Sei y = C · y .

‖C · y‖22 = (Cy)T Cy = yT CT Cy = ‖y‖2

2.

Orthogonale Transformationen ändern die Länge (Energie,Informationsinhalt) eines Vektors (Bildes) nicht.

Page 16: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.7 (iv) Sei B ein 8 × 8 Block eines Bildes.

Beispiel: Nicht alle B = CBCT sind dünnbesetzt.

B =

0 255 0 255 255 255 0 255255 0 255 0 255 0 255 0

0 255 0 255 255 255 0 255255 0 255 0 255 0 255 0255 255 255 255 255 255 255 255255 0 255 0 255 0 255 0

0 255 0 255 255 255 0 255255 0 255 0 255 0 255 0

nach DCT:

B =

1243.1 −3.4 −124.9 102.2 95.6 −71.9 −51.8 248.2−3.4 −48.2 −41.5 −21.6 31.8 −107.1 −17.2 −154.4

−124.9 −41.5 −54.4 −2.7 41.6 −102 −22.5 −93.2102.2 −21.6 −2.7 −23.2 2.1 −39.6 −1.1 −102.9

95.6 31.8 41.6 2.1 −31.9 78.1 17.3 71.3−71.9 −107.1 −102 −39.6 78.1 −242.8 −42.2 −321.7−51.8 −17.2 −22.5 −1.1 17.3 −42.2 −9.3 −38.6248.2 −154.4 −93.2 −102.9 71.3 −321.7 −38.6 −578.3

Solche Bildblöcke B kommen aber selten vor.Z.z.: B = CBCT ist mit hoher Wahrscheinlichkeit dünnbesetzt.

Page 17: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Definition: Sei X = (X [n])n=0,...,M−1 ein M × 1 Markov, stationäres,stoch. Feld mit E(X [n]) = 0 und cov(X [n]2) = 1, n = 0, . . . ,M − 1,d.h.

cov(X ,X) =

1 ρ ρ2 . . . ρN−1

ρ 1 ρ . . . ρN−2

.... . .

...ρN−2 . . . ρ 1 ρ

ρN−1 . . . ρ2 ρ 1

, ρ = cov(X [0],X [1]).

Die Transformation X = K · X heißt Karhunen-Loeve-Transformationvon X , falls K · cov(X ,X) · K T diagonal ist und die Diagonaleinträgevon K · cov(X ,X) · K T die Eigenwerte von cov(X ,X) sind.

Satz: Unter allen orthogonalen Transformationen X = A · X ,A ∈ R

M×M verteilt die Karhunen-Loeve-Transformation X = K · X ammeisten Energie auf die ersten m + 1 < M Einträge von X .

Satz: Für ρ ≈ 1, gilt K ≈ C.

Page 18: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Die 8 × 8 KLT-Matrix K für ρ = 0.95

0.3383 0.3512 0.3599 0.3642 0.3642 0.3599 0.3512 0.33830.4809 0.4204 0.2860 0.1013 −0.1013 −0.2860 −0.4204 −0.48090.4665 0.2065 −0.1789 −0.4557 −0.4557 −0.1789 0.2065 0.46650.4226 −0.0854 −0.4865 −0.2783 0.2783 0.4865 0.0854 −0.42260.3602 −0.3468 −0.3558 0.3513 0.3513 −0.3558 −0.3468 0.36020.2833 −0.4882 0.0942 0.4154 −0.4154 −0.0942 0.4882 −0.28330.1952 −0.4623 0.4603 −0.1904 −0.1904 0.4603 −0.4623 0.19520.0996 −0.2786 0.4156 −0.4896 0.4896 −0.4156 0.2786 −0.0996

und die 8 × 8 DCT-Matrix C

0.3536 0.3536 0.3536 0.3536 0.3536 0.3536 0.3536 0.35360.4904 0.4157 0.2778 0.0975 −0.0975 −0.2778 −0.4157 −0.49040.4619 0.1913 −0.1913 −0.4619 −0.4619 −0.1913 0.1913 0.46190.4157 −0.0975 −0.4904 −0.2778 0.2778 0.4904 0.0975 −0.41570.3536 −0.3536 −0.3536 0.3536 0.3536 −0.3536 −0.3536 0.35360.2778 −0.4904 0.0975 0.4157 −0.4157 −0.0975 0.4904 −0.27780.1913 −0.4619 0.4619 −0.1913 −0.1913 0.4619 −0.4619 0.19130.0975 −0.2778 0.4157 −0.4904 0.4904 −0.4157 0.2778 −0.0975

Page 19: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.8. JPEG: Quantisierung mit Q = (3 + 2(i + j))i,j=0,...,7

Bq[i, j] = sgn(B[i, j]) ·⌊

|B[i, j]|Q[i, j]

, 0 ≤ i, j ≤ 7.

Page 20: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.8. JPEG: Quantisierung

Zig-Zag-Scan von DCT-Koeffizienten:

Page 21: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

4.9. JPEG: Kodierung

Gegeben:

• Info-Quelle (d.h. die ZVe) X : Ω → s1, . . . , sn mit WV

P(X = sj), j = 1, . . . , n.

• Kodealphabet Σ = σ1, . . . , σM

Ziel: Ersetze die Symbole sji in der Nachricht

sj1sj2 . . . sjm , sji ∈ s1, . . . , sn,

durch Kodewörte k(sj) ∈⋃

M>0

ΣM , j = 1, . . . , n, so dass die erwartete

Kodewortlängen∑

j=1

Länge(k(sj)) ·P(X = sj) minimal wird. Falls dieser

Kode eindeutig dekodierbar ist, dann heißt er optimal

Page 22: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Huffman-Kodierung:

1. Erzeuge eine Tabelle mit allen in der Nachricht

sj1sj2 . . . sjm , sji ∈ s1, . . . , sn,

vorhandenen Symbolen sj und deren Wahrscheinlichkeiten.

2. Pflanze den Huffman-Baum und erzeuge daraus eine Kodetabelle

3. Durchlaufe die Nachricht und ersetze jedes Symbol sji mit dementsprechenden Kodewort.

Page 23: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Konstruktion eines Huffman-Baums fürZeichen A B C D E

Häufigkeit 15 7 6 6 5

Page 24: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Huffman-Baum pflanzen:

1. Erzeuge eine nach Wahrscheinlichkeiten sortierte Liste vonBäumen mit jeweils nur einem Knoten (Symbol sj und seineWahrscheinlichkeit).

2. Entferne die letzten beiden Bäume und hänge sie unter einegemeinsame Wurzel, die die Summe der Wahrscheinlichkeiten ihrerKinder speichert. Sortiere die Liste von Bäumen um.

3. Wiederhole Schritt 2., bis nur ein Baum in der Liste enthalten ist.Dieser ist der Huffman-Baum.

Page 25: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Huffman-Kode erzeugen:

1. Von der Wurzel ausgehend, für alle eindeutigen Wege,Kode:=leeres Wort

2. wenn ein linker Teilbaum beschritten wird, schreibe eine 1 hinterden bisherigen Kode

3. wenn ein rechter Teilbaum beschritten wird, schreibe eine 0 hinterden bisherigen Kode

4. Wiederhole Schritt 2. oder 3., bis ein Blatt (Symbol sj) erreicht wird.Schreibe den gefundenen Kode in die Kodetabelle an die Positiondes jeweiligen Symbols sj .

Page 26: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Eigenschaften des Huffman-Kodes

k : s1, . . . , sn → k(s1), . . . k(sn),

oder, äquivalent, des Huffman-Baumes G = (V ,E)

(i) Alle Symbole sj sind Blätter von G.

(ii) Der Baum G ist vollständig und binär.

(iii) Seltene Symbole sj sind tiefer in G als die häufigen Symbole.

(iv) Die zwei seltensten Symbole sind Geschwister, d.h. falls

P(X = si),P(X = sj) < minℓ∈1,...,n\i,j

P(X = sℓ)

dann gilt

k(si) = σj1 . . . σjm 0, k(sj) = σj1 . . . σjm 1, σℓ ∈ 0, 1.

(v) Der Huffman-Kode ist optimal.

Page 27: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Beweis:I.A. X : Ω → s1, s2. Dann ist der Kode k(s1) = 0, k(s2) = 1,optimal, da nur 1Bit pro Symbol benötigt wird.

I.S. Sei k nicht optimal. Dann existiert ein binär, präfixfreier, optimalerKode k mit dem Baum G, so dass

n∑

i=1

Länge(k(si)) · P(X = si) <

n∑

i=1

Länge(k(si)) · P(X = si).

k optimal ⇒ es exitieren sj1 , sj2 ∈ s1, . . . , sn, die Geschwister mitdem Vater v sind, d.h.

k(sj1) = k(v)0 und k(sj2) = k(v)1.

Page 28: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Daraus folgt für D = s1, . . . , sn \ sj1 , sj2

n∑

i=1

Länge(k(si)) · P(X = si) =∑

si∈D

Länge(k(si)) · P(X = si)

+[

Länge(k(v)) + 1]

· [P(X = sj1) + P(X = sj2)]︸ ︷︷ ︸

=:P(X=v)

=

si∈D⋃v

Länge(k(si)) · P(X = si) + P(X = v)I.V .

<

si∈D⋃v

Länge(k(si)) · P(X = si) + P(X = v)

=n∑

i=1

Länge(k(si)) · P(X = si).

Page 29: Kap.4 JPEG: Bildkompression - Persönliche Webseitenhomepage.univie.ac.at/maria.charina/kapitel_4.pdf · Kode eindeutig dekodierbar ist, dann heißt er optimal. Huffman-Kodierung:

Arithmetische Kodierung (ist nicht prüfungsrelevant): wird auch beiJPEG verwendet.

Eingabe: Nachricht

sj1sj2 . . . sjm , sji ∈ s1, . . . , sn.

Initializierung: Ausgangsintervall [0, 1).

Für i = 1, . . . ,m: Ordne jedem Symbol sj , j = 1, . . . , n, der Nachrichtein Subintervall des Ausgangsintervalls zu, dessen Größe derWahrscheinlichkeit P(X = sj) des Symbols sj entspricht. DasSubintervall, das dem Symbol sji der Nachricht entspricht, wird zumneuen Ausgangsintervall.

Ausgabe: Der Kode ist eine beliebige reele Zahl (in der dyadischenDarstellung) aus dem letzten Ausgangsintervall.

Zum Dekodieren: braucht man den Kode und die Anzahl m derSymbole in der kodierten Nachricht.