Top Banner
Transformationscodierung im Rahmen des Proseminars „Rund um JPEG“ an der Eberhard Karls Universität Tübingen Alexander Kaiser 22.5.2003 -2
45

Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

Sep 18, 2019

Download

Documents

dariahiddleston
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: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

Transformationscodierung

im Rahmen des Proseminars „Rund um JPEG“an der Eberhard Karls Universität Tübingen

Alexander Kaiser

22.5.2003

-2

Page 2: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

INHALTSVERZEICHNIS -1

Inhaltsverzeichnis

1 Einleitung 1

1.1 Kompressionssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Transformationskodierung (TC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Mathematische Grundlagen 5

3 Die Transformationskodierung (TC) 8

3.1 Eindimenstionale Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.1.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.1.2 Formeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.1.3 DC/AC-Koeffizienten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.1.4 Fehlerfortpflanzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.1.5 Datenmengen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.1.6 Intervalltranslation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.1.7 Rechenaufwand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.1.8 Blocktransformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.2 Zweidimensionale Transformationen . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2.2 Formeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2.3 DC/AC-Koeffizienten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2.4 Fehlerfortpflanzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2.5 Datenmengen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2.6 Intervalltranslation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2.7 Rechenaufwand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2.8 Blocktransformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4 Diskrete Fourier Transformation (DFT) 21

4.1 Fourierreihen kurz gefasst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.2 Eindimensionale DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.3 Zweidimensionale DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.4 Leakage Effekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5 Diskrete Cosinus Transformation (DCT) 28

5.1 Herleitung der Diskreten Cosinus Transformation (DCT) . . . . . . . . . . . . . . . 28

5.2 Eindimensionale DCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

5.3 Basisfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

5.4 Fast DCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5.5 Zweidimensionale DCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5.6 Basisfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Page 3: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

INHALTSVERZEICHNIS 0

5.7 Rechenaufwand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6 Basisfunktionen für Kompressionssyteme 34

7 JPEG im Überblick 36

7.1 Bildqualität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

8 Appendix 38

8.1 Fast DCT algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

8.2 2D-TC algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Page 4: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

1

Abbildung 1: Der Edison Phonograph

1 Einleitung

Natürliche Informationsträger wie z.B. Schall- und Lichtwellen bzw. Lichtquanten haben einefast unendliche Auflösung. Der Konsument Mensch kann davon zwar nur eine begrenzte Zahl anInformationen aufnehmen, doch arbeiten seine Sinnesorgange äußerst präzise. Z.B. kann das ge-sunde menschliche Auge zur Aufnahme von ortsabhängigen Farbinformationen mit seinen etwa125 Millionen Sehzellen eine Auflösunge von 300 dpi1 und 10 Millionen unterschiedliche Farbenwahrnehmen. Für ein Bild mit einer Abmessung von 20×30 cm liegt die Grenze des Wahrnehmba-ren dann bei 2400×3600 Pixel. Berücksichtigt man noch die zeitliche Konstante, so benötigt man27 Bilder pro Sekunde, damit dem Menschen eine Bildfolge flüssig erscheint. Das menschliche Ohrarbeitet noch präziser. Für den Menschen sind Schallwellen mit einer Frequenz von 16 Hz bis ca.20 kHz hörbar. Um solche Signale verlustfrei rekonstruieren2 zu können, müssen diese mit einerAuflösung von 44,1 kHz quantisiert und 16 Bit diskretisiert werden.

Erste Versuche, solche natürlichen Informationsträger in Form von analogen Signalen zu archi-vieren, wurden 1877 von Thomas Edison unternommen. Abbildung ?? zeigt das erste Gerät mitdem man Schallwellen aufzeichnen und wiedergeben konnte. Als Speichermedium kam damals eineHarzschicht auf einem Zylinder zum Einsatz. Erst 1923 wurden elekronische Aufnahmeverfahrenentwickelt. Zum Speichern solcher Information kamen analoge Speichermedien wie z.B. die Kas-sette zum Einsatz. Erst mit der rapiden Entwicklung der Sensor-, Digital- und Softwaretechnik(dazu gehört auch die Kompressionstechnik) wurde der Übergang von der analogen zur heutigendigitalen Welt, Mitte der 90er Jahre ermöglicht.

Ein Paradebeispiel dieses Übergangs ist die Digitalkamera. Hatte man in der ersten Generation,Mitte der 90er, Digitalkameras mit 0.5 Megapixeln (enspricht einer Auflösung von 800×600), fin-det man im Jahr 2003 Produkte mit 6.5 Megapixeln (entspricht 3.072×2.048 Bildpunkten). DieAuflösung solcher Systeme ist dem Konkurrenten Dia mit seinen über 21 Megapixel (5700×3800Bildpunkte) weit unterlegen. Für den Menschen ist bei Bilder der Größe 20 x 30 cm dennoch dieGrenze des Wahrnehmbaren erreicht. Die Datenmenge die ein Bild mit 6.5 Millionen Bildpunktenund einer Farbtiefe von 24 Bit benötigt beläuft sich auf ganze 18 MB. Ein Bild auf dem Negativ

1Dots Per Inch, 1 Inch entspricht 25,4 mm2Nach dem von Shannon/Nyquist formulierten Abtasttheorem (Sampling Theorem) „kann ein bandbreitenbe-

grenztes Signal ohne Informationsverlust rekonstruiert werden [...], sofern die Abtastfrequenz mindestens doppeltso groß wie die maximale Signalfrequenz ist“ [?].

Page 5: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

1.1 Kompressionssysteme 2

benötigt in digitaler Form sogar 62MB. Bedenkt man, dass ein Film mit 36 Bilder dann 2,2GBbenötigt wird schnell deutlich, dass Kompressionsverfahren (Kompressionssysteme) zur Daten-reduktion benötigt werden. Für kleinere Bilder, wie sie beispielsweise im Internet zum Einsatzkommen ist das Problem aufgrund der langsamen Datenverbindung wie ISDN, analoge oder inZukunft kommende Funknetze genauso vorhanden.

1.1 Kompressionssysteme

Es existieren unterschiedliche Kompressionssysteme. Im allgemeinen ist es sinnvoll für unterschied-liche Informationstypen und ihren speziellen Eigenschaften, auf diese zugeschnittene System zuentwickeln. Die verbreiteten Systeme enthalten meist kategorisch ähnliche Codierungstechniken.Folgende Unterscheiden ist sinnvoll:

1. Entropy Coding steht für verlustfreie Techniken bei denen die Kompression der Ausgangs-daten durch zeichenweise Codierung erreichen wird. Die Kompressionsraten sind bei dieserTechnik jedoch stark vom Informationsgehalt der Daten abhängig. Für Bilder und Musik istsie ungeeignet. Zu dieser Kategorie gehören z.B.:

• Huffman-Codierung

• Arithmetische Codierung

• Lauflängen-Codierung

2. Source Coding ermöglicht durch Bearbeiten der Ausgangsdaten die Trennung zwischen rele-vanten und irrelevanten Daten. Dieses Verfahren ist zwar nicht zwangsläufig verlustbehaftet,Verlust wird jedoch zur Erhöhung der Kompressionsrate durch Weglassen von Daten geringerRelevanz in Kauf genommen. Vertreter sind hier

• Diskrete Fourier Transformation (DFT)

• Diskrete Cosinus Transformation (DCT)

• Wavelettransformation (DWT)

• Differential Pulse Code Modulation (DPCM)

• Bewegungskompensation

3. Hybrid Coding verwendet Techniken des Entropy- und Source Coding. In der Regel dientder durch das Source Coding erzeugte Datenstrom als Eingangssignal für die Entropie-Codierung. Verwendet wird sie unter anderem in

• JPEG (Joint Picture Expert Group)

• H.261

• MPEG-2 (Moving Picture Experts Group)

• MPEG Layer-3 [?].

Kompression heißt, eine Information (verlustfrei) oder eine deren ähnliche (verlustbehaftet), ineiner Form darzustellen, in der weniger Daten zu ihrer Beschreibung benötigt werden.

Gegenstand dieses Textes ist die Transformationskodierung (Tranformation Coding, TC), einemallgemeinen Ansatz des Kompressionssystems Source Coding.

Page 6: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

1.2 Transformationskodierung (TC) 3

Abbildung 2: TC

1.2 Transformationskodierung (TC)

In Abbildung ??a ist das Schema der Transformationkodierung dargestellt. Ein Block von N Einga-bewerten x (z.B. eine Bildzeile bestehend aus N Pixelwerten oder ein Audiosignal aus N Amplitu-denwerten) wird über die Lineartransformation (lineare Abbildung) f(x) in N Transformationsko-effizienten y = f(x) transformiert (z.B. den Fourierkoeffizienten). Durch die Quantisierungsfunkti-on q werden diese zu den quantisierten Werten y = q(y), die dann mittels der Inversen Abbildungf−1(y) = x wieder in die Werte x zurücktransformiert werden. Transformationkodierungen stellenalso die Funktion TC(f, x, q) dar

TC : f, x, q 7→ f−1(q(f(x)))

In Abbildung ??b ist eine Erweiterung dieses Schemas dargestellt. Die Quantisierungsfunktionbesteht dabei aus zwei Abbildungen: der Quantisierungsabbildung α(y) welche die Koeffizienteny in i = α(y) abbildet und der Dequantisierungsabbildung β, die die Koeffizienten y mit derQuantisierungsabweichung 3 εy = y − y wiederherstellt. y = β(i) sind folglich die Koeffizientenmit Quantisierungsabweichung. Bei der Komposition (α◦f)(x) := α(f(x)) handelt es sich um denTransform Coder. (f−1 ◦ β)(i) := f−1 ◦ β := f−1(β(i)) ist der zugehörige Transform Decoder. Fürdie Beziehung zwischen Schema a und b ergibt sich

β(α(y)) = q(y)

Zu beachten ist, dass es sich bei der Abbildung β nicht um die Inverse von α handelt, es sei denn, esexistiert keine Quantisierungsabweichung. Es wäre dann β(α(y)) = y und demnach β = α−1. Eineweitere sinnvolle Erweiterung ist in Abbildung ??c dargestellt. Die Abbildung γ bildet die Dateni in den Bitstrom b = γ(i) ab. Dieser kann mittels der Inversen γ−1 wieder verlustfrei hergestelltwerden. Sind die Daten in Form eines Bitstrom verfügbar, können sie problemlos gespeichertwerden. In den anderen Ebenen ist das nicht der Fall. Das Verhältnis zwischen Schema a und c ist

β(γ−1(γ(α(y)))) = q(y)

Sofern die Quantisierungsfunktion den Informationsgehalt der Koeffizienten y reduziert, wie esbei beim Einsatz in Kompressionssystemen üblich ist, handelt es sich bei der Transformations-kodierung um eine verlustbehaftete Transformation und dementspechend bei der Umsetzung inKompressionssystemen um eine verlustbehaftete Kompression (lossy compression). Wird hingegen

3In der Bildbearbeitung Quantisierungsfehler

Page 7: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

1.2 Transformationskodierung (TC) 4

beispielsweise ein Equalizer realisiert, werden durch die Quantisierungsfunktion einzelne Koeffi-zienten, die bestimmte Freqenzanteile des Signal darstellen, skaliert (Signalfilterung). Informa-tionverlust tritt dabei jedoch nicht ein, da die Quantisierung abgesehen von Rundungsfehlernrückgängig gemacht werden kann.

Einen Codec (coder, decoder) heißt symmetrisch, sofern der Aufwand für Kodierung und Dekodie-rung in etwa gleich ist. Anderenfalls heißt er asymmetrisch.

Der Ansatz der Transformationkodierung kommt unter anderem in den folgenden Kompressions-systemen zum Einsatz

• JPEG (Joint Photographic Experts Group)

• H.261

• MPEG (Motion Picture Experts Group),

• ATRAC (Sony Mini-Disc)

Dieser Text befasst sich hauptsächlich mit dem ersten und letzten Schritt, den Lineartransforma-tionen f(x) = Ax und f−1(x) = A−1y bzw. Erweiterungen davon. Auf die Quantisierung wirdunter mathematischen Aspekten kurz eingegangen. Die Abbildung γ wird nicht näher erläutert.Ziel ist es, einen Überblick über die Transformationskodierung und deren Anwendungsgebietespeziell in der Bildkompression (speziell JPEG) zu geben.

Page 8: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

5

2 Mathematische Grundlagen

Im Folgenden steht K für die Körper der reellen Zahlen R bzw. der komplexen Zahlen C und x,yfür Vektoren des Vektorraum KN .

Definition Das Skalarprodukt (oder inneres Produkt) der Vektoren x, y ist

〈x, y〉 :=N−1∑i=0

xiyi für K = R

〈x, y〉 :=N−1∑i=0

xiyi für K = C

Das Kreuzprodukt (äußeres Produkt) der Vektoren a ∈ Km, b ∈ Kn ist

〉 a, b 〈 = (aibj)i=1,...,n,j=1,...,m ∈ Kn×m

Die euklidische Norm (oder Länge) von x ist

‖x‖2 :=√〈x, x〉

Ein Vektor x heißt normiert (oder Einheitsvektor), wenn

‖x‖2 = 1

Jeder Vektor x 6= 0 kann durch Skalierung normiert werden

x =x

‖x‖2

Die Vektoren x, y heißen orthogonal (stehen senkrecht aufeinander), wenn

〈x, y〉 = 0

Lineare Transformation (Lineare Abbildung). Seien V , W Vektorräume über K. Mit einerAbbildung f : V → W wird jedem Vektor v ∈ V ein eindeutig bestimmter Vektor w = f(v)zugeordnet.

Definition. Eine Abbildung f : V →W heißt linear, wenn gilt:

• f ist homogen; d.h. f(αv) = αf(v) für alle α ∈ K

• f ist additiv; d.h. f(u + v) = f(u) + f(v) für alle u, v ∈ V

Satz Die Komposition zweier linearer Transformationen ist ebenfalls linar. Für zwei lineare Trans-formationen f : V →W , g : U → V ist auch

f ◦ g : U →W, (f ◦ g)(u) := f(g(u))

linear.

Eine lineare Abbildung f : KN → KN heißt orthogonal, wenn sie das Skalarprodukt invariantlässt, d.h. wenn

f(x) · f(y) = 〈x, y〉

Es sei A ∈ KM×N . Die Matrix A∗ ∈ KN×M heißt für K = C die adjungierte Matrix zu A, falls

A∗i,j = Aj,i für i = 1, . . . , N und j = 1, . . . ,M

Page 9: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

6

Für K = R, heißt die adjungierte auch transponierte, denn für x ∈ R ist x = x und demnach

A∗ = AT

Eine Matrix A ∈ KN×N heißt orthogonal, wenn

A∗ = A−1

Bermerkung Jede orthogonale lineare Abbildung f : KN → KN mit Abbildungsmatrix A istvolumentreu, da |det(A)| = 1

Eine Basis B = (b1, . . . , bN ) heißt orthogonal, wenn die Basisvektoren bi paarweise orthogonalsind; d.h. wenn gilt

〈bi|bj〉 = 0 für i 6= j.

B heißt orthonormal, wenn B orthogonal ist und alle Basisvektoren normiert sind; d.h.

〈bi, bj〉 = δi,j ={

0 für alle 1 ≤ i, j ≤ N und i 6= j1 für alle i = j

Satz Eine Matrix A ist orthogonal, genau dann wenn die Spalten von A eine orthonormale Basisdes KN bilden.

Satz Für eine Matrix A ∈ KN×N sind die folgenden Aussagen äquivalent:

1. A ist orthogonal.

2. Die durch f(x) = Ax definierte lineare Abbildung f : KN → KN ist orthogonal.

3. Die Spaltenvektoren von A bilden eine Orthonormalbasis des KN .

Bemerkung Die Berechnung der Koeffizienten von y, yi = 〈bi|x〉 des Vektors x bzgl. der BasisB = {bi}1≤i≤N (Basistransformation) kann mittels folgender Matrixmultiplikation beschriebenwerden:

y =

〈b1|x〉...

〈bN |x〉

=

←− b1 −→...

...←− bN −→

x

Page 10: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

7

Abbildung 3: Basisfunktionen der 4-dimensionalen Hadamard-Transformation

Beispiel Die Vektoren

b1 =12

1111

b2 =12

11−1−1

b3 =12

−111−1

b4 =12

−11−11

bilden wegen 〈bi|bj〉 = δi,j eine Orthonormalbasis des R4. Bei Betrachtung der Basisvektoren(Abbildung ??) erkennt man dass es sich um eine Art „Schwingung“ zwischen den Werten − 1

2 und+ 1

2 handelt.

Die Koeffizienten y1, . . . , y4 von x bezüglich der neuen Basis B können dann durch die Matrix-Vektormultiplikation

y =

〈b1|x〉〈b2|x〉〈b3|x〉〈b4|x〉

=12

1 1 1 11 1 −1 −1− 1 1 1 −1− 1 1 −1 1

x

bestimmt werden. Die inverse Abbildung zum Wiederherstellen der Koeffizienten von y bezüglichder Ausgangsbasis AT mit den Basisvektoren

{bTk

}k=1,2,3,4

lautet dann

x =12

1 1 −1 −11 1 1 11 −1 1 −11 −1 −1 1

y

Bei der demonstrierten linearen Transformation handelt es sich um den 4-dimensionalen Fall der1923 entwickelten Hadamard Transformation.

Für xT =(

2 1 6 1)

lauten die Koeffizienten2161

standart

=

5−2

2−3

hadamard

Bemerkung: Im Bereich der Transformationskodierung heißen Lineartransformationen der Form

• f : KN → KN

• f : KN×N → KN×N

ein- bzw. zweidimensional ansatt N-dimensional.

Page 11: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

8

y︷ ︸︸ ︷y0

...

yN−1

=

A=a(m,n)︷ ︸︸ ︷← bT

0 →...

← bTN−1 →

x︷ ︸︸ ︷x0

...

xN−1

x0

...

xN−1

︸ ︷︷ ︸

x

=

↑ ↑b0 · · · bN−1

↓ ↓

︸ ︷︷ ︸

B=a(n,m)=AT

y0

...

yN−1

︸ ︷︷ ︸

y

Abbildung 4: Transformationsmatrix A, B = AT = A−1 und Basisvektoren bk

3 Die Transformationskodierung (TC)

3.1 Eindimenstionale Transformation

Lineartransformationen stellen die Grundlage der Transformationskodierung dar. Speziell kommenfür eindimensionale Eingabedaten häufig orthogonale lineare Abbildungen der Form f(x) = Axmit der orthogonalen Abbildungsmatrix A zum Einsatz. Da eine Vielzahl wichtiger Transforma-tionen dieser Form existieren, ist es sinnvoll, solche Matrix-Vektor Multiplikationen allgemein zubeschreiben. Dadurch erhält man eine Vorlage, die für alle Lineartransformationen dieses Typspassende, nur von den Basisfunktionen abhängige Algorithmen liefert. Beispiele für solche Trans-formationen sind die Diskrete Fourier Transformation, die Diskrete Cosinus Transformation unddie Hadamard Transformation.

3.1.1 Grundlagen

Der eindimensionale Fall über dem Vektorraum KN wird durch die Matrix-Vektormultiplikationen

y = Ax B = A−1 x = ByA = a(m,n)n,m=0,...,N−1 B = b(m,n)m,n=0,...,N−1

für Hin- bzw. Rücktransformation beschrieben. Die Matrix a(m,n) heißt Kern der Lineartransfor-mation und b(m,n) reziproker Kern der Rücktransformation. Die Basisvektoren sind

bk = (b(m, k))m=0,...,N−1

ak = (a(k,m))m=0,...,N−1

Page 12: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.1 Eindimenstionale Transformation 9

Abbildung 5: Basisfunktion der 1-dimensionalen Hadamard-Transformation

Von besonderem Interesse sind in diesem Kontext orthonormale bzw. unitäre Matrizen. Für einesolche Matrix A gilt:

B = A−1 = A∗

Diese Matrizen haben folgende Vorteile:

• Die Inverse erhält man durch transponieren und konjugieren4 der Matrixelemente

• Es ist ak = bT

k

• Bei den Spaltenvektoren von A handelt es sich um die Koeffizienten der Einheitsvektorenbezüglich der neuen Basis

• Signaleigenschaften bleiben bezüglich der quadratischen Norm (siehe Abschnitt Fehlerfort-pflanzung) erhalten

3.1.2 Formeln

In Summenformeln ausgedrückt ist die Transformation 1D − FTC (1D forward TC ) für denEingabevektor {x(n)}n=0,...,N−1 und den Ausgabevektor {y(k)}k=0,...,N−1 dann gegeben durch

1D − FTC :

[y(k) =

N−1∑n=0

x (n) a (k, n)

]k=0,...,N−1

Die zugehörige Inverse (1D inverse TC ) lautet

1D − ITC :

[x(n) =

N−1∑k=0

y(k)b(k, n)

]n=0,...,N−1

wobei es sich bei y = q(y) um die quantisierte Version des Vektors y handelt. Die zugehörigeQuantisierungsfunktion q, die selbst von y abhängig sein kann ist

q : KN → KN , y 7→ qy q ∈ KN .

Durch die Quantisierung können einzelne Werte des Vektors skaliert werden, also verstärkt, ver-mindert oder ganz auf Null gesetzt werden.

3.1.3 DC/AC-Koeffizienten

Ein transformierter Koeffizient yi, der proportional zum Mittelwert der Elemte aus x ist, wird DC-Koeffizient (DC coefficient), die anderen Koeffizienten werden AC-Koeffizienten (AC coefficients)genannt. Die Bezeichnungen DC und AC stammen aus dem Anwendungsbereich der Signalverar-beitung. Ein beliebiges Stromsignal setzt sich dabei aus einem Gleichstrom (direct current) undihn überlagernden Wechselstömen (alternate current) zusammen.

4entfällt für reelle Matrizen

Page 13: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.1 Eindimenstionale Transformation 10

Abbildung ?? stellt die 8 Basisvektoren der eindimensionalen Hadamard-Transformation grafischdar. Der k-te Block repräsentiert den (k-1)-ten Basisvektor bk−1, der i-te Pixel dessen (i-1)-te Kom-ponente bki−1 . Man sieht dass der konstante Basisvektor b0 für den DC Koeffizienten veranwortlichist, die übrigen Basisvektoren hingegen für die AC Koeffizienten.

3.1.4 Fehlerfortpflanzung

Durch Anwendung der linearen Abbildung f auf x und darauffolgende Quantisierung der Koeffizi-enten y nach y ensteht die Quantisierungsabweichung εy = y− y. Diese kann sich durch die inverselineare Abbildung f−1(y) = x beliebig verstärkt im Ergebnis x niederschlagen. Die resultierendeQuantisierungsabweichung in x beträgt dann εx = x − x. Orthogonale bzw. unitäre Transforma-tionen haben in diesem Zusammenhang eine besondere Eigenschaft. Sie sind längentreu, d.h.

‖y‖2 = ‖f(x)‖ = ‖x‖2

Für die durch die Quantisierung verursachte Abweichung folgt

‖εy‖2 = ‖εx‖2

Die Abweichung wird also weder verstärkt noch vermindert.

3.1.5 Datenmengen

Die lineare Abbildung f : KN → KN ist eine Selbstabbildung. Kommt bei der Transformationeine orthonormale bzw. unitäre Matrix A mit den Basisvektoren bi zum Einsatz, so folgt über dieCauchy-Schwarzsche Ungleichung

|yi| = |〈x|bi〉| ≤ ‖x‖2 ‖bi‖2 = ‖x‖2

‖x‖2 =

√√√√N−1∑i=0

x2i ≤

√N

[max

i=0,...,N−1|xi|

]2

=√

N maxi=0,...,N−1

|xi| (1)

Demnach kann der Vektor x in der Basis A betragmäßig deutlich größere Elemente enthalten, alsin seiner ursprüngliche Basis AT . Soll eine solche Transformation rechnergestützt umsetzt werden,müssen dazu geeignete Datentypen gewählt werden.

Bei dem Eingabevektor x handelt es sich in der Regel um digitalisierte Werte, die je nach Dis-kretisierung in einem ganzahligen binär darstellbaren Bereich Ix = [0, 2β), β = 0, 1, . . . liegen. Füreine solche Eingaben folgt über (1)

|yi| ≤√

N(2β − 1)

Demnach muss das Intervall Iy folgendermassen gewählt werden

Iy = [−√

N(2β − 1),√

N(2β − 1)]

Der Transformationskern kann Gleitkommazahlen enthalten, was sich auf die Elemente von yentsprechend auswirkt. Das hat zur Folge, dass sie als α−bit Gleitkommazahl (für y ∈ C fällt wegendes Imaginärteils die doppelte Datenmenge an) binär gespeichert werden müssen. Die IEEE 32-bitGleitkommadarstellung (Float) bietet sich an, da sie in den heutigen Prozessoren hardwaremäßigunterstützt wird. Zum Speichern des N-dimensionalen Vektors y werden somit DR(y) = α ·N bit(DC(y) = 2α · N bit) benötigt. Für das Verhältnis zu D(x) = β · N ergibt sich daraus derDatenzuwachs

DRst=

DC(y)D(x)

=α ·Nβ ·N

β

Page 14: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.1 Eindimenstionale Transformation 11

DCst =DC(y)D(x)

=2 · α ·Nβ ·N

= 2α

β

Für β = 8 bit folgt für das Eingabeintervall Ix = [0, 255] (z.B. 256 Graustufen) das Ausgabeinter-vall Iy = [−722, 722]. Für α = 32bit ergibt sich bei der komplex arbeitenden Diskreten Fourier-transformation ein Datenzuwachs von DCst

= 8. Für ein 1280× 1024-Pixel (1310720 Bildpunkte)großes Bild enspricht das der Steigerung des Platzbedarfs von 160 kB auf 1280 kB.

Solange die Daten also in einer zur arithmetischen Weiterverarbeitung geeigneten Form vorliegen,findet bei der Transformation eine deutliche Datenvermehrung statt.

3.1.6 Intervalltranslation

Um Koeffizienten möglichst klein zu erhalten ist es sinnvoll, Daten vor der Transformation in eingeeignetes Intervall zu verschieben (Verschiebung engl. translation)

Aus dem vorigen Abschnitt folgt

|yi| ≤ ‖x‖2 ≤√

N maxi=0,...,N−1

|xi|

und y demnach nur von der Länge von x abhängig ist. Für das von Ix = [0, 2β) nach Ix =[−2β−1, 2β−1), β = 0, 1, . . . verschobene Eingabeintervall ergibt sich das Ausgabeintervall

Iy = [−√

N2β−1,√

N2β−1]

Durch die Intervallverschiebung erhalten wir

• Halbierung des Intervalls Iy und

• wegen normierten Basisvektoren für allgemeine x die kleinsten Koeffizienten in y

Die Translationen für die Intervallverschiebung lauten

Imov1D : Ix → Ix, x 7→ x− 2β−1

I−1mov1D : Ix → Ix, x 7→ x′ + 2β−1

Ix = [0, 2β), n = 0, 1, . . .

Ix = [2β−1, 0, 2β−1)

Dass dieses Vorgehen auch für die Transformation von natürlichen Bildern sinnvoll ist verdeutlichtAbbildung ??. Dargestellt sind die Durchschnittshelligkeiten von 100 untersuchten 8 bit Graustu-fenbildern (natürliche Landschaftsbilder und Portraits). Der Wert 255 wird als schwarz und 0als weiß interpretiert. Der Mittelwert der etwa 40000 untersuchten Zeilen ergibt 121,56. Die In-tervalltranslation von Ix = [0, 256) nach Ix = [−128, 128) ist für natürliche Bilder demnach gutgeeignet. In Ix repräsentiert der Wert -128 weiß, 0 den Mittelwert grau und 127 schwarz. Für denim Allgemeinen größten Koeffizienten, den DC-Koeffizienten, ergibt sich bei der Transformationeines Bildes mit der Durchschnittshelligkeit von 128 der Wert 0. Die Verschiebung vor der Trans-formation von Textbildern ist dahingegen nicht sinnvoll. Die Durchschnittshelligkeit wäre je nachTextanteil nahe bei -128 und der DC-Koeffizient dementsprechend groß.

Page 15: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.1 Eindimenstionale Transformation 12

Abbildung 6: Durchschnittswert von 100 Bilder und Mittelwert über alle Bilder

3.1.7 Rechenaufwand

Der Rechenaufwand5 ist für die Anwendungsgebiete der Transformationskodierung von zentralerBedeutung.

Für die Berechnung der Summenformeln[y(k) =

N−1∑n=0

x (n) a (k, n)

]k=0,...,N−1

bzw.

[x(n) =

N−1∑k=0

y (k) b (k, n)

]n=0,...,N−1

sind N Multiplikationen (�) und N-1 Additionen (⊕) je Vektorelement nötig. Die Kodierung undDekodierung ist symmetrisch, da der Rechenaufwand für Hin- und Rücktransformation identischsind. Um den gesamten Vektor zu transformieren sind N Summenformeln zu berechnen. Darausergibt sich:

RTC1D(N) = N2 �+(N2 −N)⊕ ⇒ O(N2)

Für das Verhältnis des Rechenaufwands zweier Vektorgrößen N1 und N2 ergibt sich

VTC1D(N1, N2) = O(N2

1

N22

) = O

(N1

N2

)2

Der Rechenaufwand ist also quadratisch proportional zum Verhältnis der beiden Vektorgrößen.Verdopplung der Eingabe führt zur vierfachen Rechenzeit. Größere Datenmengen am Stück zutransformieren ist dementsprechend aufwendig. Für eine Zeile eines Bildes mit 1024 Pixelwer-ten sind bereits 10242 = 1048576 Multiplikationen nötig. In erster Linie bestimmen die relativaufwendigen6 Multiplikationen den Rechenaufwand.

3.1.8 Blocktransformation

Eine Möglichkeit den Rechenaufwands zu verringern liegt im Splitten der zu bearbeitenden Da-tenmengen in gleich große Blöcke (Untermengen), die dann seperat beabeitet werden. Die Blöckedürfen sich dabei überlappen. Behandelt wird hier jedoch nur der Spezialfall der Rechteckfenste-rung (Abbildung ??b). Dazu wird der Eingabevektor x mit M = pN (p ∈ N) Elementen in gleichgroße Vektoren (xi) mit den Elementen xi,j gesplittet. Die zugehörige Abbildung lautet:

5Der Rechenaufwand bezieht sich auf das schrittweise Abarbeiten der einzelnen Operationen. In der Praxiswerden Befehle häufig parallel abgearbeitet, was die Angabe der wirkliche Rechenzeit erschwert.

6Multiplikationen sind in der Regel deutlich aufwendiger als Additionen

Page 16: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.1 Eindimenstionale Transformation 13

Abbildung 7: Kaiser-Bessel Derived Window, Rechteck Fensterung

Abbildung 8: Orginalzeilen, Rekonstruktion mit Quantisierungsfehler

block1D : KM → Kp×N

block1D(x0, . . . , xM−1) = (x0, . . . , xp−1)T

xi = (xi,0, . . . , xi,N−1)xi,j = xi·N+j

Zum Transformieren der M Werte werden nun p Lineartransformationen mit jeweils N Wertenbenötigt. Der Rechenaufwand beläuft sich auf

Rsp(M,N) = pN2 =M

N·N2 = MN

Der speedup (Beschleunigungsfaktor), der durch das Splitten des M -elementigen Eingabevektorserreicht wird, beläuft sich auf

speedup =R1D:LT (M)Rsp(M,N)

=M2

MN=

M

N

Im Gegensatz zu den 10242 = 1048576 Multiplikationen zur Berechnung der Transformiertender ungesplitteten 1024-elementigen Eingabe, werden mit N = 8 nun nur noch 1024 · 8 = 8192Multiplikationen benötigt. Der speedup beträgt demnach 128.

Der Nachteil dieses Verfahrens in Zusammenhang mit der Quantisierung wird in Abbildung ??deutlich. Links sind 8 die Ausgangszeilen (x) zu sehen, daneben die nach der Transformation mit-tels der diskreten Cosinus Transformation und anschließender Quantisierung wiederhergestelltenZeilen (x). Bei den wiederhergestellten Zeilen fallen die Artefakte an den Blockgrenzen auf. Ausdiesem Grund werden für Musikkompression überlappende Blockgrenzen verwendet. In Abbildung??b ist die Kaiser-Bessel Fensterfunktion für AAC (Advanced Audio Coding) dargestellt, die unteranderem in MPEG-1/2 Kompressionssystemen zum Einsatz kommen.

Page 17: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.2 Zweidimensionale Transformationen 14

Abbildung 9: Zweidimensionale Transformation

3.2 Zweidimensionale Transformationen

3.2.1 Grundlagen

Aufgrund der Separierbarkeitseigenschaft von orthonormalen Matrizen kann der mehrdimensionaleFall auf den eindimensionalen zurückgeführt werden. Um die Transformation für den zweidimen-sionalen Fall zu erhalten muss lediglich die 1D − FTC zuerst auf alle N Spalten der Matrix X7,dann auf alle M Zeilen der daraus resultierenden Matrix angewendet werden (bzw. erst auf alleZeilen, dann auf alle Spalten). Da in der Praxis in der Regel N×N Matrizen zum Einsatz kommen,wird im Folgenden nur der Spezialfall M = N behandelt.

In Matrizenschreibweise hat die zweidimensionale Transformation dann die Form

Y︸︷︷︸Transformiertes Bild

=

Spaltentransformation︷︸︸︷A X︸︷︷︸

Bild

Zeilentransformation︷︸︸︷AT

Die Eingabematrix X wird über die Transformation der Zeilen und Spalten mittels A und AT

zur Ausgabematrix Y . Bei den Elementen von Y handelt es sich um die Koeffizienten von Xbezüglich der N2×N2-Basis Bk,l = 〉 bk, bl 〈 . Die N ×N Untermatrizen der Basis Bk,l werden imZusammenhang mit der Bildkommpression als Basisbilder der Transformation bezeichnet.

Die zugehörige Inverse erhalten wir entsprechend durch Umformen der Gleichung Y = AXAT

X︸︷︷︸Bild

=

Spaltentransformation︷︸︸︷A−1 Y︸︷︷︸

transformiertesBild

Zeilentansformation︷ ︸︸ ︷A−1T

Im zweidimensionalen Fall der Transformationskodierung wird anstelle von Y die quantisierteVersion von Y zurücktransformiert. Die zugehörige allgemeine Quantisierungsfunktion lautet

Q : Yi,j 7→ Qi,j · Yi,j , i, j = 0, . . . , N − 1.

Mittels Q können die einzelnen Einträge von Y beliebig skaliert werden.

Unter Berücksichtigung der Quantisierungsfunktion und B = A−1 folgt daraus die allgemeineGleichung zum Wiederherstellen von X

X = BY BT

7Die Matrixeinträge Xk,l sind z.B. die Pixelwerte eines Graustufenbildes X. Für farbige Bilder muss jederFarbkanal getrennt bearbeitet werden. Für RGB-Bilder werden beispielweise 3 seperate Transformationen benötigt.Den jeweiligen Farbkanal repräsentieren dann die Matrizen XR, XG und XB).

Page 18: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.2 Zweidimensionale Transformationen 15

Abbildung 10: Sukzessiver Aufbau mittels Basisfunktionen

3.2.2 Formeln

Sofern zuerst die Zeilen und dann die Spalten bearbeitet werden, besteht die erste mögliche Be-rechnung von Y in zwei unabhängigen Matrixmultiplikationen

Y = AXrow Xrow = XAT

Xrow (m, l) =N−1∑n=0

X (m,n)AT (n, l) =N−1∑n=0

X (m,n)A (l, n) (2)[Y (k, l) =

N−1∑m=0

Xrow (m, l)A (k, m)

]k,l=0,...,N−1

(3)

Durch Substitution von (2) erhält man aus (3) die zweite Möglichkeit, mit der die Elemente vonY direkt bestimmt werden können[

Yk,l =N−1∑m=0

N−1∑n=0

X (m,n)A (k, m)A (l, n) =

]k,l=0,...,N−1

(4)

Zur Berechnung der Inversen muss A durch A−1 = B ersetzt werden. Sinnvoll ist auch dasändern der Indizes. Wir erhalten so unter Berücksichtigung der Quantisierungsfunktion Q unddem 4-dimensionalen Transformationkern A(k, l,m, n) = A(k,m)A(l, n) bzw. B(k, l,m, n) =B(k,m)B(l, n) die allgemeinen Formeln der zweidimensionalen Transformationskodierung

2D − FTC :

[Y (k, l) =

N−1∑m=0

N−1∑n=0

X (m,n) a (k, l,m, n)

]k,l=0,...,N−1

2D − ITC :

[X(m,n) =

N−1∑k=0

N−1∑l=0

Y (k, l) b (k, l,m, n)

]m,n=0,...,N−1

Ein Bild X lässt sich somit als Linearkombination der Transformationskoeffizienten Yk,l und denBasismatrizen Bk,l ∈ KN×N darstellen (Abbildung ??).

X =⟨Y |Bk,l

⟩=

N−1∑k=0

N−1∑l=0

Y (k, l) Bk,l Bk,l = 〉 bk, bl 〈

Der zugehörige Transformationskern ist

B ∈ KN2×N2

B = (Bk,l)k,l=0,...,N−1

Abbildung ?? zeigt das Ausgangsbild, den Transformationskern mit den Basisbildern und dastransformierte Bild für die zweisimensionale Hadamard Transformation (N = 8).

Page 19: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.2 Zweidimensionale Transformationen 16

Abbildung 11: Ausgangsbild X, Basisfunktionen Bk,l(N = 8) und transformiertes Bild Y

3.2.3 DC/AC-Koeffizienten

Analog zum eindimensionalen Fall, wird ein transformierter Koeffizient Yi,j , der proportional zumMittelwert aller Elemente aus X ist, DC-Koeffizient (DC coefficient) genannt. Alle anderen heißenAC-Koeffizienten (AC coefficients).

Abbildung ??b stellt den Transformationskern mit seinen 64 Basismatrizen (Basisbilder) der zwei-dimensionalen Hadamard-Transformation für N = 8 grafisch dar. Man sieht, dass hier das kon-stante Basisbild B0,0 für den DC Koeffizienten veranwortlich ist, die restlichen Basismatrizen fürdie AC Koeffizienten.

3.2.4 Fehlerfortpflanzung

Für orthonormale Transformationen verhalten sich beide Transformationsmethoden bezüglich derQuantisierungsabweichung

εY =∥∥∥Y − Y

∥∥∥2

identisch. Aufgrund der Längenerhaltung ist

‖Y ‖2 = ‖Xrow‖2 = ‖X‖2

und demnach‖εY ‖2 = ‖εX‖2

Für nicht-orthogonale Transformationen ist das Verhalten jedoch unterschiedlich. Die zweite Me-thode ist numerisch stabiler, da jedes Element aus den Ursprungswerten gebildet wird. Beim erstenVerfahren kann sich die Abweichung hingegen quadriert im Ergebnis niederschlagen.

Zur Angabe des aus der Quantisierung resultierenden Fehlers wird häugfig der Mean SquaredError (MSE) verwendet, der die gemittelte Summe der punktweisen Differenz darstellt

MSE(x, x) = σ2x,x =

1N

N−1∑n=0

(x(n)− x(n))2

σ ist die Standardabweichung.

Bei der Bildverarbeitung wird auch häufig die Maß PSNR (peak-signal-to-noise-ratio) verwendet.Dieses drückt das Verhältnis des höchsten Signalwertes zu dem Fehler aus

PSNR(x, x) = 10 log10

x2peak

σx,x

Page 20: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.2 Zweidimensionale Transformationen 17

3.2.5 Datenmengen

Die Lineare Abbildung f : KN×N → KN×N , X 7→ AXAT ist eine Selbstabbildung. Handelt essich bei A um eine orthonormale bzw. unitäre Matrix, so folgt für

Y = AXrow, Xrow = XAT

über die Cauchy-Schwarzsche Ungleichung

Xrowi,j ≤

√N max

i,j=0,...,N−1Xi,j (5)

Yi,j ≤ N maxi,j=0,...,N−1

Xi,j (6)

Demnach können die Elemente von Y nach der linearen Abbildung f deutlich größer sein. Bei denElementen Xi,j handelt es sich in der Regel um digitalisierte Werte aus einem ganzzahligen, binärdarstellbaren Bereich IX = [0, 2β), β = 0, 1, . . .. Für diesen folgt∣∣Yij

∣∣ ≤ N(2β − 1) IY ⊂ N

Demnach muss das Intervall Y folgendermaßen gewählt werden

IY = [−N(2β − 1), N(2β − 1)]

Für den Datenzuwachs D2D:st ergibt sich entsprechend dem eindimensionalen Fall

DR2D:st=

DC(Y )D(X)

=α ·N2

β ·N2=

α

β

DC2D:st=

DC(Y )D(X)

=2 · α ·N2

β ·N2= 2

α

β

3.2.6 Intervalltranslation

Aus dem vorigen Abschnitt wissen wir, dass |Yi,j | ≤ N maxi=0,...,N−1 |Xi,j | ist. Durch verschiebendes Intervalls IX = [0, 2β) nach IX = [−2β−1, 2β−1), β = 0, 1, . . . folgt für das Intervall Iy

IY = [−N(2β−1), N(2β−1)]

Durch die Intervallverschiebung erhalten wir

• Halbierung des Intervalls Y und

• für allgemeine Xi,j die kleinsten Koeffizienten Yk,l

Die zugehörige Translationen Imov2D und I−1mov2D für die Intervallverschiebung lauten

Imov2D: IX → IX , Xi,j 7→ Xi,j − 2β−1

I−1mov2D

: IX → IX , Xi,j 7→ Xi,j + 2β−1, i, j = 0, . . . , N − 1

IX = [0, 2β)IX = [−2β−1, 2β−1)

Page 21: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.2 Zweidimensionale Transformationen 18

3.2.7 Rechenaufwand

Der Aufwand der beiden zweidimensionalen Transformationmethoden

1. Berechnung von Y mittels zwei Matrixmultiplikationen

[Xrow (m, l) =

N−1∑n=0

X (m,n) A (l, n)

]m,l=0,...,N−1[

Y (k, l) =N−1∑m=0

Xrow (m, l) A (k,m)

]k,l=0,...,N−1

2. Berechnung von Y mittels zwei Doppelsummen

[Y (k, l) =N−1∑m=0

N−1∑n=0

X (m,n)A (k, l,m, n)

]k,l=0,...,N−1

ist nicht identisch.

Der Rechenaufwand R2DLT1(N) des 1.Verfahrens ergibt sich aus dem Rechenaufwand RTC1D

der eindimensionalen Transformaion. Wir müssen dies Mal jedoch 2N Zeilen und 2N Spaltentransformieren. Der Aufwand für Hin- und Rücktransformation ist wieder identisch.

RTC2D1(N) = 2N3 �+N2(N − 1)⊕ ⇒ O(N3)

Für das Verhältnis zwischen dem Rechenaufwand für unterschiedliche Matrixgrößen N1×N1 undN2 ×N2 ergibt sich

V TC2D1N1,N2

=O(N1

3)N2

3 ·(

N22

N12

)= O

(N1

N2

)Der Rechenaufwand für gleich viele Elemente ist bei Veränderung der Matrixgröße also proportio-nal zu N1/N2. Verdopplung der Anzahl von Eingabewerten führt zur Verdopplung der Rechenzeit.Für ein Bild mit 1024× 1024 Pixeln wären 2 Milliarden (2 · 10243 = 2147483648) Multiplikationennötig. Ein Intel Pentium 200 benötigt mit seinen 200 MFLOPs dafür bereits 11 Sekunden.

Das zweite Verfahren ist aufgrund der Doppelsumme noch aufwendiger. Es handelt sich um kei-ne einfache Matrixmultiplikationen der Form Y=AX mit fester Matrix A. Vielmehr wird jedesElement von A bei dessen Zugriff neu aus einer Zeilen-Spalten-Multiplikation berechnet. Es wirdalso jedes Element von A N -mal berechnet. Im ersten Verfahren wurden diese Werte aufgrund derMatrixmultiplikation XAT nur einmal berechnet. Der Rechenaufwand beträgt

RTC2D2(N) = N4 �+(N4 −N2)⊕ ⇒ O(N4)

Für ein Bild mit 1024× 1024 Pixeln wären diemal 1 Billion (10244 = 1099511627776) Multiplika-tionen nötig. Ein Intel Pentium 200 wäre damit 1 1

2 Stunden beschäftigt.

Für das Verhältnis zwischen dem Rechenaufwand zweier Matrixgrößen N1×N1 und N2×N2 ergibtsich

VN1,N2 =R2D−TC2(N1)R2D−TC2(N2)

·(

N2

N1

)2

=(

N1

N2

)2

Der Rechenaufwand für gleich viele Elemente bei Veränderung der Matrixgröße ist also quatra-tisch proportional zu N1/N2. Verdopplung der Anzahl von Eingabewerten führt zur vierfachtenRechenzeit.

Page 22: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.2 Zweidimensionale Transformationen 19

Abbildung 12: Eingabebild vor und nach der 2D −DFT

3.2.8 Blocktransformation

Eine Möglichkeit den Rechenaufwand für zweidimensionale Datenmengen zu reduzieren liegt darin,diese in gleich große quadratische Untermengen (Blöcke) aufzusplitten, die dann getrennt vonein-ander transformiert werden (Block-Transform Coding). Der Spezialfall für sich nicht überlappendeBlöcke, wird durch die folgende Abbildung beschrieben:

block2D : KM×M → KN×N×p×p

X =

X0,0 · · · X0,M

......

XM,0 · · · XM,M

=

X0,0 · · · X0,p

......

Xp,0 · · · Xp,p

Xi,jk,l

= XiN+k,jN+l, i, j = 0, . . . , p, k, l = 0, . . . , N − 1

p =M

N

Abbildung ?? zeigt das Blocktransformierte Bild für die Blockgrößen für p = M , 12M , 1

4M , 18M ,

116M , 1

32M , 164M .

Der Rechenaufwand reduziert sich dadurch von der Berechnung einer M×M -Matrix auf p2 N×N -Matrizen. Daraus ergibt sich der Rechenaufwand

RTC2DBT1(M) = O(2M2N)RTC2DBT2(M) = O(M2N2)

Allgemein lässt sich das Verhältnis für das erste und zweite Verfahren dann folgendermassenausdrücken:

RTC2D1

RTC2DBT1(M)=

O(2M3)O(2M2N)

= O(M

N) = speedup

RTC2D2

RTC2DBT2(M)=

O(2M4)O(2M2N2)

= O(M2

N2) = speedup

Page 23: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

3.2 Zweidimensionale Transformationen 20

Abbildung 13: Eingabebild vor und nach der 2D −DFT

Für ein 1024 × 1024 Pixel Bild werden durch die Unterteilung in 8 × 8-Unterbilder anstatt 2Milliarden Multiplikationen nur noch 16 Millionen (16777216) mit dem ersten Verfahren bzw.134 Millionen (134217728) Multiplikationen mit dem zweiten Verfahren benötigt. Das Verhältnisentspricht einem speedup von 256 bzw. 65536.

Ohne Blocktransformation ist die Berechnung für große Datenmengen nicht mehr möglich. Für Vi-deos mit einer Auflösung von 1024×1024 Pixel, 256 Graustufen und 30 fps müssen mit dem erstenVerfahren 64 Milliarden Multiplikationen (64424509440) je Sekunde durchgeführt werden, das ent-spricht 64424 MFLOPs. Mit 24 parallel arbeitenden intel Pentium IV 2GHz (jeweils 2665MFLOPs)wäre es aber dennoch möglich.

Der Nachteil der Blockkodierung resultiert im Zusammenhang mit der blockweisen Quantisierungder transformierten Werte. Die Quantisierungsabweichung wirkt sich somit nicht gleichmäßig aufden Datenbestand aus, sondern nur auf die einzelnen Blöcke. An den Blockgrenzen entstehendaher Artefakte. In Abbildung ?? ist dieser Sachverhalt für Bildtransformationen dargestellt.Links ist das Orginalbild zu sehen, daneben das mit dem JPEG-Algorithmus und einer starkenQuantisierung komprimierte Bild. In den vergößerten Ausschnitten werden die Artefakte zwischenden 8× 8-Blöcken stark sichtbar.

Um die Transformationskodierung dennoch auf einem breiten Spektrum einsetzen zu können sindschnellere Algorithmen nötig. Bei den hier vorgestellten allgemeinen Transformationsformeln fürein- und zweidimensionale Eingabedaten handelt es sich um die Brute-Force Lösungen der Ma-trixmultiplikationen y = Ax, x = By, Y = AXAT bzw. X = BT Y B. Eine Möglichkeit, dieseBerechnungen zu beschleunigen wären allgemeine Matrixzerlegungen wie die LR-Zerlegung. Dadie Einträge der Matrizen A und B bei den meisten Transformationen unabgängig von der Ein-gabe gleich sind, hat man für die häufig verwendeten Matrizen nach individuellen Zerlegungengesucht. Gute Zerlegungen und demzufolge schnelle Algorithmen wurden z.B. für die DiskreteFourier Transformation (Fast Fourier Transformation), für die Diskrete Cosinus Transformation(Fast DCT, siehe Kapitel DCT) und die Hadamard Transformation entwickelt. Ohne solche Zerle-gungen kommen auch an sich für die Bildkompression besser geeignete Transformationen wie dieKLT gar nicht erst zum Einsatz.

Page 24: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

21

4 Diskrete Fourier Transformation (DFT)

4.1 Fourierreihen kurz gefasst

Anfang des 19. Jahrhunderts entwickelte Jean Baptiste Joseph Fourier zur Untersuchungen derWärmeleitung folgende Darstellung von 2π-periodischen Funktionen

f(x) =a0

2+

∞∑k=1

[akcos(kx) + bksin(kx)]

f(x) = f(2kπ + x) ∀ k ∈ N, x ∈ R

mit den Fourier-Koeffienten ak und bk

ak =1π

∫ π

−π

f(x) cos kx dx, k = 0, 1, . . .

bk =1π

∫ π

−π

f(x) sin kx dx, k = 1, 2, . . .

Die Fourierreihe stellt die Funktion f als Summe von gewichteten Cosinus- und Sinusschwingungendar. Anders ausgedrückt stellt sie eine Transformation von zeit- oder ortsabhängigen Funktionenin frequenzabhängige dar.

Voraussetzungen (Satz von Dirichlet) für das Konvergenzverhalten der Fourier Transformation

• Sei f : (−π, π)→ R auf (−π, π) stetig, außer höchstens in endlich vielen Punkten x1, . . . , xm.

• Sei f monoton (wachsend oder fallend) auf jedem der Intervalle (xk;xk+1), k = 1, . . . ,m.

• Seien ∀ k = 1, . . . ,m die einseitigen Grenzwerte f(xk − 0) = limx→xk,x<xkf(x) definiert.

Dann gilt: Die Fourierreihe konvergiert gegen f in allen Punkten, in denen f stetig ist und gegen12 (f(xk − 0) + (xk + 0)) an allen Unstetigkeitsstellen xk.

Bemerkung: Im Gegensatz zu den bisher behandelten Basistransormationen in endlich-dimensionalen Vektroräumen handelt es sich hier um Funktionsräume. Skalarprodukt und Normfür stetige Funktionen auf dem Intervall [−π, π] sind

〈f |g〉 =∫ π

−π

f(x)g(x) dx fürf, g ∈ R

〈f |g〉 =∫ π

−π

f(x)g(x) dx fürf, g ∈ C

‖f‖ :=√〈f |f〉

Zwei auf [−π, π] stetige reelle Funktionen f, g sind orthogonal, wenn

〈f, g〉 = 0

Es soll nun gezeigt werden, dass die Funktionen cos(kx) und sin(nx) für k, n ∈ K ein Orthogonal-system bilden.

Sei g eine gerade Funktion, also g(−x) = g(x) und u eine ungerade Funktion, also u(−x) =−u(x), dann ist die Funktion f(x) = g(x) · u(x) auch ungerade, denn f(−x) = g(−x)u(−x) =−f(x). Für das Integral ist dann

∫ π

−πf(x) = 0. Für g = cos und u = sin erhalten wird die erste

Orthogonalitätsrelation ∫ π

−π

sin(kx) cos(nx) dx = 0

Page 25: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

4.1 Fourierreihen kurz gefasst 22

Die anderen Relationen folgen über die allgemeine Formel der partiellen Integration

f(x) = 1k sin(kx) g(x) = cos(nx)

f ′(x) = cos(kx) g′(x) = −n sin(nx)

∫ π

−π

f ′(x)g(x) dx = |f(x)g(x)|π−π −∫ π

−π

f(x)g′(x) dx∫ π

−π

cos(kx) cos(nx) dx =∣∣∣∣1k sin(kx) + n cos(nx)

∣∣∣∣π−π

+n

k

∫ π

−π

sin(kx) sin(nx) dx

=n

k

∫ π

−π

sin(kx) sin(nx) dx

Aus Symmetriegründen ist demnach kn = n

k oder∫ π

−πsin(kx) sin(nx) dx = 0. Es ist also∫ π

−π

cos(kx) cos(nx) dx =∫ π

−π

sin(kx) sin(nx) dx = 0 ∀k, n ∈ N, n 6= k

Für den Fall n = k ergibt sich∫ π

−π

cos2(kx) dx +∫ π

−π

sin2(kx) dx =∫ π

−π

cos2(kx) + sin2(kx) dx =∫ π

−π

1 dx = 2π∫ π

−π

cos2(kx) dx =∫ π

−π

sin2(kx) dx = π

Wir erhalten damit die Orthogonalitätsrelationen:∫ π

−π

sin(kx) cos(nx) dx = 0∫ π

−π

cos(kx) cos(nx) dx = π · δk,n∫ π

−π

sin(kx) sin(nx) dx = π · δk,n

δk,n :={

0 für n 6= k1 für n = k

Die Funktionen cos(kx) und sin(nx) bilden daher für k, n ∈ K ein Orthogonalsystem. Für dieNorm dieser Funktionen ergibt sich ‖cos‖ = ‖sin‖ =

√π

Für gerade Funktionen8 ergibt sich über:

f(x) = f(−x)sin(x) = −sin(−x)

πbk =∫ π

−π

f(x)sinkx dx

=∫ π

0

f(x)sinkx dx +∫ 0

−π

f(x)sin(kx) dx

=∫ π

0

f(x)sinkx dx +∫ 0

−π

f(x)sin(−kx) dx

=∫ π

0

f(x)sinkx dx−∫ π

0

f(x)sin(−kx) dx = 0

8Für gerade Funktionen gilt f(x) = f(−x), z.B. f(x) = |x|

Page 26: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

4.1 Fourierreihen kurz gefasst 23

Abbildung 14: Veranschaulichung eix am gaußschen Einheitskreis

Für ungerade Funktionen9 folgt entsprechend über:

f(x) = −f(−x)cos(x) = cos(−x)

πak =∫ π

−π

f(x)coskx dx

=∫ π

0

f(x)coskx dx +∫ 0

−π

f(x)cos(kx) dx

=∫ π

0

f(x)coskx dx−∫ π

0

f(x)cos(kx) dx = 0

Es gilt also:

ak = 0, falls f ungerade ist, (7)bk = 0, falls f gerade ist. (8)

Um die Handhabung der Fourierreihen zu erleichtern, kann sie unter Verwendung der EulerschenFormel im Komplexen anders dargestellt werden.

Definition (Cosinus, Sinus). Für x ∈ R sei

cos := <(eix),sin := =(eix).

Es ist nach Definition also eix = cosx + isinx (Eulerschen Formel), eix ∈ C. Wie in Abbildungs ??veranschaulicht ist, kann die komplexe Zahl eix als ein Punkt des Einheitskreises der GaußschenEbene und cos x bzw. sin x als Projektionen dieses Punktes auf die reele bzw. imaginäre Achsegedeutet weden.

Ausgegend von eix = cosx + isinx folgt für alle x ∈ R:

cos x =12(eix + e−ix)

sin x =12i

(eix − e−ix)

9Für ungerade Funktionen gilt f(−x) = −f(x), z.B. f(x) = x3

Page 27: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

4.1 Fourierreihen kurz gefasst 24

Durch ersetzen von sin und cos in 10, erhält man die komplexe Darstellung der Fourierreihe:

f(x) =+∞∑

k=−∞

ckeikx

ck =12π

∫ 2π

0

f(x)e−ikx dx

ck =12(ak − ibk) für k > 0 (9)

ck =12(a−k − ib−k) für k < 0 (10)

Durch Anpassen der Grundschwingungen an die Periodenlänge T ∈ N erhält man die komplexeDarstellung der Fourierreihe für T -periodische Funktionen.

f(x) =+∞∑

k=−∞

cke−ik( 2πT )x

ck =1T

∫ T

0

f(x)eik( 2πT )x dx

Aus der Diskretisierung der Fourierreihe resultiert die diskrete Fourier-Transformation (DFT).Diese erhält man aus der komplexen Fouriertransformation, indem man nicht von stetigen Funk-tionen f ausgeht, sondern von einer Funktion f(tk) = yk, die an N diskreten Gitterpunkten imAbstand von ∆t (Abtastintervall) vorliegen. Die Werte sind dann jeweils an den Stellen tk = k∆tverfügbar. Die Periodendauer T beträgt T = N∆t.

yk =1N

N−1∑n=0

xne−in 2πT tk

=1N

N−1∑n=0

xne−in 2πN∆t k∆t

=1N

N−1∑n=0

xne−in 2πN k

xn =N−1∑k=0

ykein 2πN k

Page 28: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

4.2 Eindimensionale DFT 25

Abbildung 15: Basisfunktionen der DFT in Matrixdarstellung

4.2 Eindimensionale DFT

Die eindimensionale Diskrete Fouriertransformation kommt häufig in der Audiobearbeitung zumEinsatz. Die zugehörigen linearen Abbildungen für Hin- und Rücktransformation lauten:

1D −DFT :

[y(k) =

1N

N−1∑n=0

x(n)e−in 2πN k)

]k=0,...,N−1

1D − IDFT :

[x(n) =

N−1∑k=0

1N

y(k)ein 2πN k)

]n=0,...,N−1

Mit dem Transformationskerna(k, n) = e

−2πiknN

und dem reziproken Kernb(k, n) = e

2πiknN

Die Matrix A = a(k, n) für k, n = 0, . . . N − 1 ist in Abbilung ?? dargestellt.

Page 29: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

4.3 Zweidimensionale DFT 26

Abbildung 16: Eingabebild, Transformiertes Bild, nach Umordnung der Quadranten

4.3 Zweidimensionale DFT

Die zweidimensionale Diskrete Fourier Transformation ergibt sich aus dem allgemeinen Ansatz derTransformationkodierung.

2D − FDFT :

[Y (k, l) =

1N

N−1∑m=0

N−1∑n=0

X (m,n) e−2πinl

N e−2πimk

N

]k,l=0,...,N−1

2D − IDFT :

[X(m,n) =

1N

N−1∑k=0

N−1∑l=0

Y (k, l) e2πinl

N e2πimk

N

]m,n=0,...,N−1

Ein großer Vorteil der DFT ist, dass zu ihrer Berechnung ein extrem schneller Algorithmus, diesogenannte Fast-Fourier-Transforamtion (FFT) zur Verfügung steht.

Page 30: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

4.4 Leakage Effekt 27

Abbildung 17: nicht periodischen Signalquelle und asynchrones Abtastintervall

Abbildung 18: Spektraldarstellung eines monofrequenten Signals

4.4 Leakage Effekt

Bei der DFT handelt es sich um ein Verfahren, periodische Funktionen (f(x) = f(x + N)) zutransformieren. Also zur Anwendung auf periodische Signale der Länge N , deren Abtastintervallein ganzzahliger Bruchteil der Periode ist. In der Praxis ist diese Voraussetzung jedoch häufignicht erfüllt. Entweder

• man beobachtet einen zeitlichen oder örtlichen Ausschnitt eines nicht periodischen Signals(Abbildung ??a), oder

• das Signal ist periodisch, aber die Abtastung läuft nicht synchron mit der Periode (Abbildung??b).

Wird die DFT dennoch auf solche Signale angewendet, tritt der folgende Effekt auf: das unperiodi-sche Signal wird bei der Analyse wie eine periodische Funktion analysiert; dies führt insbesonderebei starken Sprüngen zwischen dem linken und dem rechten Rand des Analyseblocks dazu, dasshochfrequente Anteile von der Transformation erfasst werden, die eigentlich gar nicht im Signalvorhanden sind. Der Effekt kann bei der Auswertung monofrequenter Signale illustriert werden.Bei solchen erwartet man eine Spektrallinie an der Frequenz des Signals mit der halben Maxima-lamplitude. Abbildung ?? zeigt zwei monofrequente Signale. Links fallen 20 Perioden des Signals indie Abtastung, rechts hingegen 20,5. In den danebenstehenden Bildern sind die an den Stützstellenberechneten Spektralwerte dargestellt. Der Spektralwert bei k = 20 hat einen Amplitudenwert von|X20| = 0, 5. Auf der rechten Seite sind jedoch viele Spektralwerte in dem berechneten Spektrumvorhanden. Das monofrequente Signal ist in dieser Darstellung nicht eindeutig zu erkennen. DieSchnittstellen an den Fenstergrenzen sind für die Spektralverbreiterung (Leakage-Effekt) verant-wortlich.

Ohne Weiteres lässt sich die DFT für unperiodische Signale demnach nicht verwenden.

Page 31: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

28

Abbildung 19: Ausgangssignal und Spiegelung des Signal

5 Diskrete Cosinus Transformation (DCT)

5.1 Herleitung der Diskreten Cosinus Transformation (DCT)

Es soll nun das Verhalten der DFT bei Anwendung auf gerade Funktionen untersucht werden.Dazu wird der Vektor x = (x0, . . . , xN )T über dieselbe Vektorlänge gespiegelt (Abbildung ??).Wir erhalten den Vektor

x ={

x(n) für x ≥ 0x(−n− 1) für x < 0

Auf diesen Vektor wird dann eine Fourietransformation über die Länge 2N durchgeführt. Wenn wirden Vektor allerdings mit dem Index n = 0 beginnen lassen, muss der Symmetriepunkt bei n = 1

2liegen, damit x durch die Transformation tatsächlich als ein symmetrisches Signal interpretiertwird. Dies kann durch eine „Phasenverschiebung“ der Basisfunktion um einen halben Bildpunkterreicht werden. Es ergeben sich daraufhin die Koeffizienten

y(k) =N−1∑

n=−N

x(n)e−i2π k2N (n+ 1

2 )

Daraus folgt

y(k) =N−1∑n=0

x(n)[e−i2π k

2N (−n−1+ 12 ) + e−i2π k

2N (n+ 12 )

]= 2 ·

N−1∑n=0

x(n) cos(

k

(n +

12

N

)

= 2 ·N−1∑n=0

x(n) cos(2n + 1)kπ

2N

Diese Transformation resultiert wie erwartet in reellen Koeffizienten (7,8,9,10 auf Seite ?? und??), da der Realteil der Fouriertransformation ja den symmetrischen Anteil des Signals reprä-sentiert. Die Transformation ist jedoch nicht orthonormal, da der Skalierungsfaktor im Zuge derVerschiebung um 1

2 Bildpunkt nicht für alle Koeffizienten y(k) konstant ist. Durch die Funktion

α(k) ={ 1√

2k = 0

1 k 6= 0

erhalten wir die orthonormale Version, die als Diskrete Cosinustransformation bezeichnet wird.Sie besitzt die Basisvektoren

bk =

{√2N

cos(2n + 1)kπ

2N

}n=0,...,N−1

für k = 1, . . . , N − 1

b0 =

{√1N

cos(2n + 1)kπ

2N

}n=0,...,N−1

Page 32: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

5.1 Herleitung der Diskreten Cosinus Transformation (DCT) 29

Es ist dann

‖α(k) cos(kxl)‖22 =2N

N−1∑i=0

cos(kxl)2

=2N

N−1∑i=0

(12zk,l +

12zk,l)2

= 1zk,l = eikxl

und die Basisvektoren daher normiert. Die Orthogonalität folgt aus der Orthogonalitätsrelation(siehe Seite ??) ∫ π

−π

cos(kx) cos(nx) dx = π · δk,n

δk,n :={

0 für n 6= k1 für n = k

, da die Stützstellen xl = (2n+1)l2N äquidistant auf dem Intervall [−π, π] verteilt sind.

Page 33: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

5.2 Eindimensionale DCT 30

Abbildung 20: Basisfunktionen der 1D −DCT für N = 8

5.2 Eindimensionale DCT

Über den Transformationskern a(k, n) =√

2N α(k) cos (2n+1)kπ

2N und b(k, n) = a(n, k) erhält mandie Formeln

1D − FDCT :

[y(k) =

√2N

α(k)N−1∑n=0

x(n) cos(2n + 1)kπ

2N

]k=0,...,N−1

1D − IDCT :

[x(n) =

√2N

α(k)N−1∑k=0

y(k) cos(2n + 1)kπ

2N

]n=0,...,N−1

α(k) ={ 1√

2k = 0

1 k 6= 0

5.3 Basisfunktionen

Die Schwingungen der Basisfunktionen lassen sich durch Umformen genauer betrachten.

sk(n) = cos(2n + 1)kπ

2N= cos ωkn + lk, n = 0, . . . , N − 1

Kreisfrequenz ωk = 2πT Frequenz fk = k

2N

Periodendauer Tk = 2Nk Phasenverschiebung lk = 1

2k πN

In Abbildung ?? sind die 8 Basisschwingungen b′

k der 8 Punkt 1D-FDCT grafisch dargestellt.Oben links ist die konstante Funktion für k = 0 mit einer Frequenz (in Perioden

N Pixel ) von 0, bis untenrecht sind die Frequenzen 0.5, 1, 1.5, 2, 2.5, 3 und die höchste Frequenz 3.5 für k = 7 zu sehen.Die Phasenverschiebung sind lk = kπ

16

b′

k ={

cos(2n + 1)kπ

16

}n=0,...,7

Page 34: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

5.4 Fast DCT 31

5.4 Fast DCT

Der 1992 von Feig und Winograd für N = 8 entwickelte Fast DCT Algorithmus nutzt unteranderem die Symmetrieeigentschaften der Kosinusfunktion. Er basiert auf der Matrixzerlegung:

A8 = P8K8B

B = B1B2B3

Wir berechnen nach wie vor y = A8x. Jedoch fallen durch die vielen 1en bzw. −1en in deneinzelen Matrizen Multiplikationen weg. Um den 8-elemetigen Eingabevektor y zu transformierten,berechnen wir nun

y = A8x = P8K8Bx

Wir arbeiten uns also von hinten nach vorne durch. Für die inverse Transformation nutzt man dieEigenschaft:

AT8 = (P8K8B)T = BT KT

8 PT8

und berechnet dementsprechend x = BT KT8 PT

8 y.

Die Matrizen haben die folgenden Einträge:

P8 =

1 0 0 0 0 0 0 00 0 0 0 −1 0 0 00 0 1 0 0 0 0 00 0 0 0 0 −1 0 00 1 0 0 0 0 0 00 0 0 0 0 0 0 −10 0 0 1 0 0 0 00 0 0 0 0 0 1 0

K8 =

G1

G1

G2

G4

G1 =

(cos(1π/4)

)G2 =

(cos(3π/8) cos(1π/8)−cos(1π/8) cos(3π/8)

)

G4 =

cos(5π/16) cos(9π/16) cos(3π/16) cos(1π/16)−cos(1π/16) cos(5π/16) cos(9π/16) cos(3π/16)−cos(3π/16) −cos(1π/16) cos(5π/16) cos(9π/16)−cos(9π/16) −cos(3π/16) −cos(1π/16) cos(5π/16)

B =

1 1 0 0 0 0 0 01 −1 0 0 0 0 0 00 0 0 1 0 0 0 00 0 1 0 0 0 0 00 0 0 0 0 0 1 00 0 0 0 0 0 0 10 0 0 0 0 −1 0 00 0 0 0 −1 0 0 0

1 0 0 1 0 0 0 00 1 1 0 0 0 0 01 0 0 −1 0 0 0 00 1 −1 0 0 0 0 00 0 0 0 1 0 0 00 0 0 0 0 1 0 00 0 0 0 0 0 1 00 0 0 0 0 0 0 1

1 0 0 0 0 0 0 10 1 0 0 0 0 1 00 0 1 0 0 1 0 00 0 0 1 1 0 0 01 0 0 0 0 0 0 −10 1 0 0 0 0 −1 00 0 1 0 0 −1 0 00 0 0 1 −1 0 0 0

= B1B2B3

Page 35: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

5.4 Fast DCT 32

Abbildung 21: Abhängigkeitstabelle des Fast DCT Algorithmus von Feig und Winograd

Um bei der Implementierung der Matrixmultiplikationen möglichst viele Befehle parallel ausführenzu können, ist es wichtig die Abhängigkeiten der einzelnen Rechnungen von einander genauer zubetrachten. Unabhängige können gegebenfalls parallel bearbeitet werden. Abbildung ?? zeigt dieAbhängigkeitstabelle der einzelnen Rechenschritte. Der aufwendigste Weg ist von der Eingabe xzu den Ausgabewerten y(4), . . . , y(7). Die Verzögerung für den gesamten Algorithmus entsprichtdem längsten Weg. Hier ist es 8 (5 Additionen und 3 Multiplikationen) für Y (6) und y(7). DerRechenaufwand beläuft sich auf:

• 13 Multiplikationen

• 29 Additionen

Der Rechenaufwand ist alsoRFastDCT1D

(8) = 13�+29⊕

Für das Verhältnis V für RFastDCT1D(8) und RDCT1D

(8) ergibt sich:

V =RDCT1D

(8)RFastDCT1D

(8)≈ 5 = speedup

Der Fast-DCT ist demnach um Faktor 5 schneller als der allgemeine Ansatz. Demzufolge ergibtsich auch für den zweidimensionalen Fall ein enormer Geschwindigkeitszuwachs.

Page 36: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

5.5 Zweidimensionale DCT 33

Abbildung 22: Eingabebild, Basisbilder für N=8, Transformiertes Bild

5.5 Zweidimensionale DCT

Die Formel der 2D − FDCT bzw. 2D − IDCT ergeben sich aus dem allgemeinen Ansatz derTransformationskodierung mit den Basisvektoren der 1D −DCT a(k, n). Die Formeln lauten:

2D − FDCT :

[Y (k, l) = α(k)α(l)

N−1∑m=0

N−1∑n=0

X (m,n) cos(2m + 1)πk

2Ncos

(2n + 1)πl

2N

]k,l=0,...,N−1

2D − IDCT :

[X(m,n) =

N−1∑k=0

N−1∑l=0

α(k)α(l)Y (k, l) cos(2m + 1)πk

2Ncos

(2n + 1)πl

2N

]m,n=0,...,N−1

5.6 Basisfunktionen

Abbildung ?? links zeigt die Basisfunktionen der zweidimensionalen Diskreten Cosinustransfor-mation. Ein Bild X lässt sich somit als Linearkombination der Transformationskoeffizienten undder Basisbilder darstellen.

X =⟨Y |Bk,l

⟩=

N−1∑k=0

N−1∑l=0

y (k, l) Bk,l

5.7 Rechenaufwand

Über den Fast-DCT Algorithmus ergibt sich für die zweidimensionale Transformation:

Y = A8XAT8 = P8K8BXBT KT

8 PT8

X = AT8 Y A8 = BT KT

8 PT8 Y P8K8B

Der Rechenaufwand R2D−FastDCT (8×8) für eine 8×8-Matrix mittels Fast DCT ergibt sich aus 2Matrixmultiplikationen, die jeweils N2 1D − FastDCT -Durchläufe benötigen und den insgesamtN2 zu berechnenden Koeffizienten. Daraus folgt:

RFastDCT2D(8) = 8192 (13�+29⊕) = 106496�+237568⊕

Für das Verhältnis V für R2D:FastDCT (8) und R2D:2D−DCT (8) ergibt sich:

V =RDCT2D

(8)FastDCT2D(8)

=1364

= speedup ≈ 5

Page 37: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

34

Abbildung 23: Unterschiedliche Basisvektoren für N = 8

6 Basisfunktionen für Kompressionssyteme

Wir haben inzwischen 3 Basistransformationen unterschiedlichen Typs kennengelernt. Neben ihnenexistieren noch andere. Einige gängige Basen sind für N = 8 mit den zugehörigen Basisvektorenin Abbildung ?? aufgelistet.

1. Karhunen Loève transform (1948/1960)

2. Haar transform (1910)

3. Walsh-Hadamard transform (1923)

4. Slant transform (Enomoto, Shibata, 1971)

5. Discrete CosineTransform (Ahmet, Natarajan, Rao, 1974)

Eines der wesentlichen Ziele bei der Transformationskodierung besteht darin, bestimmte Eigen-schaften eines Bildsignals unter Verwendung möglichst weniger Transformationskoeffizienten zubeschreiben. In Abbildung ?? ist die Energiekonzentration gemessen in

i−1∑j=0

yj2

σ2x

für einige Transformationen in Abhängigkeit von der Blocklänge i dargestellt. Für alle Blocklängenführt die Karhunen Loève transform (KLT ) zur besten Energiekonzentration. Da ihre Basisvek-toren aber von den Eigenwerten des zu tranformierenden Vektors abhängen, ist der Transforma-tionskern für jedes Bild unterschiedlich. Für die Berechnung der Basisvektoren existieren keineeffizienten Algorithmen, was einen hohen Rechenaufwand für solche Transformationen zur Folgehat. Die zweistärkste Konzentration weist die Discrete Kosinustransformation auf. Ihre Basis-vektoren sind unabhängig von der Eingabe und es existieren effiziente Algorithmen für solche

Page 38: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

35

Abbildung 24: Energiekonzentration bei Bildtransformation verschieder Basen

Transformationen. Die anderen haben zwar teilweise akzeptabe Werte, gegenüber der DCT habensie aber dennoch keine Vorteile. Die DCT ist demnach von allen vorgestellten Transormationenfür natürliche Bilder am besten geeignet. Aus diesem Grund basiert der JPEG Algotithmus aufsolchen Transformationen.

Page 39: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

36

Abbildung 25: Schema von JPEG (sequenzieller DCT-basierter Modus)

7 JPEG im Überblick

Der 1989 entwickelte und 1990 von der ISO [?] standardisierte JPEG10 Algorithmus stellt eineHyprid-Codierung dar. Abbildung ??c zeigt das Schema des sequenziellen Modus11.

Der Algorithmus unterteilt ein Bild in 8 × 8-Pixel große Unterbilder, die dann jeweils in Formdes Eingabewertes x bearbeitet werden. Bei der Kompression von Farbbildern, werden diese vomRGB-Farbraum mittels der Matrix-Vektormultiplikation Y

U

V

=

0.299 0.587 0.144

0.711 0.587 0.144

0.299 0.587 0.886

· R

G

B

in den Y UV -Farbraum12 transformiert. Die UV Komponenten werden mit geringerer Auflösungweiterverabeitet, da der Mensch für Farbänderungen unempfindlicher ist als für Helligkeitsverän-derungen (Y Anteil). Die drei Komponenten werden dann jeweils wie Graustufenbilder behandelt.Bei der Abbildung 2D − FDCT handelt es sich um die Diskrete Cosinustransformation (DCT)im Zweidimensionalen (siehe Abschnitt ??). Sie realisiert eine orthonormale Transformation ausdem Ortsberich in den Frequenzbereich. Mittels der Quantisierungabbildung q werden die Koeffizi-enten einer Diskretisierung unterworfen und besonders hochfrequente Bildinformationen entfernt.Die aus der Quantisierung gelieferten Werte i = q(y) werden dann von der niedrigsten bis zurhöchsten Frequenz ausgelesen. Die Werte liegen nun in Vektoren vor, bei denen viele Elemente 0sind. Über Lauflängencodierung (run) und anschließende Huffmancodiert (huff) gehen diese inden Bitstom b über, der dann im Rahmen des JPEG-Algorithmus eingebettet und dann gespeichertwerden kann. Da DC-Koeffizienten von nebeneinander liegenden Blöcken häufig eine ähnliche Grö-ße aufweisen, werden diese über die Blockgrenzen hinweg DCPM-kodiert13 Der Dekodiervorgangmacht die Schritte abgesehen vom Quantisierungsfehler wieder Rückgängig.

10Die „Joint Picture Expert Group“ (JPEG), entstand aus einer Zusammenarbeit von CCITT (ConsultativeCommittee on International Telegraph and Telephone) und ISO (International Standards Organisation)

11JPEG Implementierungen müssen den sequentiellen DCT-basierten Modus beherrschen. Die anderen 3 „optio-nalen“ Grundmodi sind: 1. verlustloser -, 2.progressiver DCT-basierter - und 3.hierarchischer Modus

12Y beinhaltet das Helligkeitssignal (Luminanz), U und V beinhalten die Farbinformation (Chrominanz)13Differential Pulse Code Modulation: statt absolutem Wert wird Differenz zum vorangegangenen Wert codiert

Page 40: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

7.1 Bildqualität 37

Abbildung 26: PSNR in Abhängigkeit von der Kompessionsrate

7.1 Bildqualität

Der Vergleich zwischen DCT-basiertem JPEG, Wavelet und fraktaler Kompression ist in Abbil-dung ?? dargestellt. Ab Kompressionsraten mit dem Faktor 30 entstehen starke Codierungsfehler[?, ?]. Die anderen erzielen bessere Ergebnisse. Die Bildqualität, die mit Kodierung von DCT-transformierten Pixelblöcken erreicht werden kann, ist für Farbbilder bei Kompressionsraten über0,75 bpp (bits per pixef) sehr gut und moderat bis gut für Werte von 0,25 bis 0,75bpp[?]. Dastypische Kodierungs-Artefakt ist der sogenannte Block-Effekt (blocking effect), bei dem die Ränderder Pixelblöcke im kodierten Bild sichtbar werden. Dieser Effekt ist auch einer der Hauptgesichts-punkte bei der Wahl der Blockgröße, denn obwohl eine große Blockgröße eine höhere Effizienzverspricht, haben sie den Nachteil, daß der Block-Effekt wesentlich mehr sichtbar wird. Ein ande-res Problem, welches besonders bei niedrigen Bitraten auftritt, ist die Behandlung von Kanten undEcken, die verschwommen und kariert gemustert dargestellt werden (checkerboard effect). Inner-halb dieser Grenzen stellen Verfahren auf Basis der Transformation von Pixelblöcken einen gutenKompromiß zwischen Komplexität und Qualität dar. Sogar eine Implementierung in Hardware istmöglich und führt zu durchaus leistungsfähigen Systemen. Als eine Folge davon basieren heute fastalle wichtigen internationalen Standards für die verlustbehaftete Kompression von Bildern oderBildsequenzen auf einer räumlichen Dekorrelation14 mit Hilfe der DCT.

14Unter der Korrelation zweier Signale versteht man allgemein die Übereinstimmung bestimmter Merkmale derSignale.

Page 41: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

38

8 Appendix

8.1 Fast DCT algorithm

function y=fdct(x0);% implementation of fast DCT algorithm by Feig and Winograd% IEEE Trans. SP, vol. 40, No. 9, pp. 2174-93, 1992.% (c) 1998 copyright by Yu Hen Hu%% Note that the array index is changed from 0:7 to 1:8

x(1,1) = x0(1) + x0(8); x(5,1) = x0(1) - x0(8);x(2,1) = x0(2) + x0(7); x(6,1) = x0(2) - x0(7);x(3,1) = x0(3) + x0(6); x(7,1) = x0(3) - x0(6);x(4,1) = x0(4) + x0(5); x(8,1) = x0(4) - x0(5);

x(1,2) = x(1,1) + x(4,1); x(5,2) = x(5,1);x(2,2) = x(2,1) + x(3,1); x(6,2) = x(6,1);x(3,2) = x(1,1) - x(4,1); x(7,2) = x(7,1);x(4,2) = x(2,1) - x(3,1); x(8,2) = x(8,1);

x(1,3) = x(1,2) + x(2,2); x(5,3) = -x(7,2);x(2,3) = x(1,2) - x(2,2); x(6,3) = x(8,2);x(3,3) = x(4,2); x(7,3) = -x(6,2);x(4,3) = x(3,2); x(8,3) = -x(5,2);

% multiply by (1/2) G1y(1) = (1/2)*cos(pi/4)*x(1,3);y(5) = (1/2)*cos(pi/4)*x(2,3);% multiply by (1/2) G2tmp0= cos(pi/4)*(-x(3,3)+x(4,3));y(3) = (1/4)*(1/cos(3*pi/8))*(x(3,3) + tmp0);y(7) = (1/4)*(1/cos(pi/8))*(-x(3,3) + tmp0);

% Now multiply by (1/2)G4% multiply by H_42tmp(4) = x(5,3);tmp(5) = x(6,3) + x(8,3);tmp(6) = x(5,3) - x(8,3);tmp(7) = x(6,3) - x(7,3);% multiply by 1, G1, G2tmp1(4,1) = tmp(4);tmp1(5,1) = cos(pi/4)*tmp(5);tmp0 = cos(pi/4)*(-tmp(6) + tmp(7));tmp1(6,1) = (1/2)*(1/cos(3*pi/8))*(tmp(6) + tmp0);tmp1(7,1) = (1/2)*(1/cos(pi/8))*(-tmp(6) + tmp0);% multiply by H_41, then by D^-1, and then 1/2 this is G4% then multiply by (1/2) to make it (1/2) G4y(2) = -(1/4)*(1/cos(5*pi/16))*(tmp1(4,1)+tmp1(5,1)-tmp1(6,1));y(4) = -(1/4)*(1/cos(pi/16))*(-tmp1(4,1)+tmp1(5,1)+tmp1(7,1));y(8) = (1/4)*(1/cos(3*pi/16))*(-tmp1(4,1)-tmp1(5,1)-tmp1(6,1));y(6) = -(1/4)*(1/cos(7*pi/16))*(tmp1(4,1)-tmp1(5,1)+tmp1(7,1));

Page 42: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

8.2 2D-TC algorithm 39

8.2 2D-TC algorithm

% function y=dft(x);\\% JAVA implementation of DFT algorithm\\% (c) 1998 by

% creates forward transform kernel A=(a(k,n))% create_dct(N)% create_haar(N)% create_hadamard(N)

public class DFTCodec implements Codec {

static final public float PI = (float)Math.PI;

public String getName() {return "DFTCodec";

}

public float[][] encode(float[][] in, float[][] qTable) {int height = in.length;int width = in[0].length;float out[][] = new float[(height/8)*16][(width/8)*8];int imoffset = (height/8)*8;

for(int j = 0; j != height/8; j++) {for(int i = 0; i != width/8; i++) {

forward_dft(j*8, i*8, in, out, imoffset);}

}

for(int j = 0; j != height/8; j++) {for(int i = 0; i != width/8; i++) {nquant(j*8, i*8, out, imoffset, qTable);}}

return out;}

public float[][] decode(float[][] in, float[][] qTable) {int height = in.length;int width = in[0].length;float out[][] = new float[height/2][width];

int imoffset = height/2;

for(int j = 0; j != height/16; j++) {for(int i = 0; i != width/8; i++) {dquant(j*8, i*8, in, imoffset, qTable);}}

Page 43: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

8.2 2D-TC algorithm 40

for(int j = 0; j!= height/16; ++j) {for(int i = 0; i!= width/8; ++i) {

inverse_dft(j*8, i*8, in, imoffset, out);}

}return out;

}

public void nquant(int j, int i, float[][] out, int imoffset, float[][] qtable){for(int u = 0; u != 8; u++) {

for(int v = 0; v != 8; v++) {out[j+u][i+v]=(float)Math.round(out[j+u][i+v]/qtable[u][v]);out[j+u+imoffset][i+v]=(float)Math.round(out[j+u+imoffset][i+v]/qtable[u][v]);}}}

public void forward_dft(int j, int i, float[][] in, float[][] out, int imoffset) {for(int u = 0; u != 8; u++) {

for(int v = 0; v != 8; v++) {float retemp1 = (float)0;float imtemp1 = (float)0;for(int x = 0; x != 8; x++) {float retemp2 = (float)0;float imtemp2 = (float)0;for(int y = 0; y != 8; y++){retemp2 = retemp2 + (float)(in[j+x][i+y]*(Math.cos(-(2*PI*(u*x+v*y))/8)));imtemp2 = imtemp2 + (float)(in[j+x][i+y]*(Math.sin(-(2*PI*(u*x+v*y))/8)));}retemp1 = retemp1 + retemp2;imtemp1 = imtemp1 + imtemp2;}out[j+u][i+v] = (float)(0.125*retemp1);out[j+imoffset+u][i+v] = (float)(0.125*imtemp1);

}}

}

public void dquant(int j, int i, float[][] in, int imoffset, float[][] qtable){for(int u = 0; u != 8; u++) {

for(int v = 0; v != 8; v++) {in[j+u][i+v]=(float)(in[j+u][i+v]*qtable[u][v]);in[j+u+imoffset][i+v]=(float)(in[j+u+imoffset][i+v]*qtable[u][v]);}}}

public void inverse_dft(int j, int i, float[][] in, int imoffset, float[][] out) {for(int x = 0; x != 8; x++) {

for(int y = 0; y != 8; y++) {float temp1 = (float)0;for(int u = 0; u != 8; u++) {float temp2 = (float)0;for(int v = 0; v != 8; v++){temp2 = temp2 + (float)(in[j+u][i+v]*(Math.cos((2*PI*(u*x+v*y))/8)))-(float)(in[j+u+imoffset][i+v]*(Math.sin((2*PI*(u*x+v*y))/8)));}temp1 = temp1 + temp2;}

Page 44: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

8.2 2D-TC algorithm 41

out[j+x][i+y] = (float)(0.125*temp1);if(out[j+x][i+y]>255) out[j+x][i+y]=255;if(out[j+x][i+y]<0) out[j+x][i+y]=0;

}}

}}

Page 45: Alexander Kaiser 22.5 · •Diskrete Cosinus Transformation (DCT) •Wavelettransformation (DWT) ... Ein Vektor x heißt normiert (oder Einheitsvektor), wenn kxk 2 = 1 Jeder Vektor

LITERATUR 42

Literatur

[1] Zander, Horst Das PC-Tonstudio. Von der Audioaufnahme bis zur Master-CD. Franzis’ Ver-lag, München 1998

[2] G. K. Wallace. The JPEG still picture compression standard. Communications of the ACM,34(4):30-44, April 1991.

[3] Thorsten Milde. Videokompressionsverfahren im Vergleich, dpunkt, 1995, S. 6 - 45. Addison-Wesley, 1994. ISBN 0201529831.

[4] Revision 8 of the JPEG technical specification. Joint Photographic Experts Group, August1990. ISO/IEC JTC1/SC2/WG8, CCITT SGVIII.

[5] ISO/IEC IS 1 Thorsten Milde. Videokompressionsverfahren im Vergleich, dpunkt, 1995, S. 6- 45. Addison-Wesley, 1994. ISBN 0201529831.

[6] Majid Rabbani/Paul W. Jones: „Digital Image Compression Techniques“, SPIE Optical En-gineering Press, 1991, S. 75 - 77 102 - 123 217 - 220.

[7] Jens-Rainer Ohm: „Digitale Bildcodierung“, Springer, 1995, S. 42 - 51 262 - 298 430 - 433.