21.11.2013 Aufrufe

Vorlesungsprotokoll

Vorlesungsprotokoll

Vorlesungsprotokoll

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

Internationaler Studiengang Medieninformatik<br />

FHTW Berlin<br />

Medientechnik 2<br />

Prof. Dr. Kai Uwe Barthel<br />

<strong>Vorlesungsprotokoll</strong><br />

vom 29.11.2006<br />

von<br />

Anne Böhnke<br />

Peter Mädel<br />

Thomas Köhn<br />

1/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

Themen des Protokolls<br />

1. Wiederholung<br />

2. Diskrete Kosinustransformation (DCT / DKT)<br />

a) 1D Transformationscodierung<br />

b) 2D Transformationscodierung<br />

c) Basisbilder & Transformationskoeffizienten<br />

d) Bildannäherung durch Überlagerung<br />

3. Quellen<br />

2/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

1. Wiederholung<br />

Um den Datenumfang eines Bildes zu reduzieren, haben wir uns bisher schon mit verschiedenen<br />

Codierungsverfahren beschäftigt und daraus einige Erkenntnisse gewinnen können. So hängt die<br />

tatsächliche Anzahl der pro Pixel verwendeten Bits u.a. davon ab, wieviele Intensitäten in dem Bild<br />

vorkommen und wie sie von der Häufigkeit her verteilt sind. Für alle unsere Überlegungen<br />

beschränken wir uns auf die Verwendung von Graustufenbildern, da hier nur ein Intensitätskanal<br />

betrachtet werden muss. Alle Konzepte sind aber ohne Weiteres auf Farbbilder übertragbar, da sich<br />

im RGB-Raum lediglich die Anzahl der Kanäle auf drei ändert.<br />

Ein Bild, in dem alle Intensitäten vorkommen und gleich häufig verteilt sind, lässt sich mit bisherigen<br />

Codierungsmethoden vom Datenumfang her nicht reduzieren, hier müssen für jedes Pixel die vollen<br />

8bit verwendet werden.<br />

Abb.1: Histogramm eines schwarz-weiß Farbverlaufs<br />

Im Vergleich dazu kommen in einem normalen Graustufenbild nicht alle Intensitäten vor. Sie sind auch<br />

im seltensten Fall gleichhäufig verteilt. Deshalb geht man davon aus, dass für die meisten Bilder 7<br />

statt der theoretischen 8bit pro Pixel genügen, um das Bild verlustlos zu speichern.<br />

Abb.2: Histogramm eines Graustufenbildes<br />

Des Weiteren gibt es auch Bilder, denen bereits aus Gründen der Datenreduktion eine reduzierte<br />

Farbpalette zugewiesen wurde. Diese Bilder benötigen ebenfalls nicht die gesamten 8bit sondern im<br />

Grunde nur soviele, wie für die Anzahl der Intensitäten nötig sind. Ein Bild, welches lediglich aus vier<br />

Intensitäten besteht wird z.B. im Normalfall auch nur 2bits zur Speicherung jedes Pixel benötigen.<br />

Abb.3: Histogramm eines 4-Farben-Bildes<br />

Im Zuge der prädiktiven Codierung ist uns zusätzlich aufgefallen, dass extrem ungleiche Verteilungen<br />

von Vorteil sind, um weniger Bits zur Beschreibung eines Pixel einsetzen zu müssen. Hier sind meist<br />

nur 3 bis 5bits von Nöten.<br />

Abb.4: Histogramm mit extrem ungleicher Intensitätsverteilung<br />

3/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

2. Diskrete Kosinustransformation (DCT)<br />

a) 1D Transformationscodierung<br />

Weiterhin haben wir zur Verringerung der zu übertragenden Werte eines Bildes bereits die<br />

Möglichkeit der örtlichen Prädiktion 1 kennengelernt.<br />

Eine weitere Möglichkeit könnte die Übertragung nur der jeweils ungeraden bzw. geraden Spalten<br />

eines Bildes als Teilbilder sein:<br />

gerade Pixel-Spalten f(2x)<br />

ungerade Pixel-Spalten f(2x+1)<br />

Abb. 5: Übertragung von Teilbildern<br />

Hier ist jedoch zu erkennen, dass sich sich die Histogramme der Teilbilder kaum vom Histogramm des<br />

Originals unterscheiden und somit das Ziel der Datenersparnis nicht erfüllt wird.<br />

1)<br />

Redundanzreduktion durch Vorhersage des aktuellen Pixelwertes aus bekannten Pixelwerten der Vergangenheit.<br />

4/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

Bei der 1D Transformatioscodierung wird deshalb zunächst das Prinzip der<br />

Verbundverteilungsdichte angewandt. Dabei wird jeweils die Auftretenshäufigkeit benachbarter<br />

Pixel betrachtet (1D hier: eindimensional, nur in eine Richtung - horizontal oder vertikal - gehend).<br />

Jedes Pixelpaar kann jetzt als ein Punkt in einem kartesischen Koordinatensystem dargestellt werden.<br />

Die Koordinaten dieses Punktes bilden dabei der Farbwert des aktuell betrachteten Pixels als x-<br />

Koordinate zusammen mit dem Farbwert des darauf folgenden Pixels als y-Koordinate.<br />

Abb. 6: Verbundverteilungsdichte<br />

Beispiel:<br />

Die Farbwerte 99 und 97 sind nun darstellbar als Punkt (99,97) = 99 * (1,0) + 97 * (0,1) als<br />

Skalarprodukt mit den Einheitsvektoren oder in Vektorenschreibweise:<br />

99<br />

97 = 99 1 0 97 0 1<br />

Die Idee der Transformationscodierung besteht in der Redundanzreduktion, d.h. In diesem Fall<br />

Datenreduktion ohne subjektive (sichtbare) Veränderungen.<br />

Basierend auf den Überlegungen zur Verbundsverteilungsdichten ergeben sich dazu zwei<br />

Herangehensweisen.<br />

Aus der graphischen Darstellung im Koordinatensystem lässt sich folgendes erschließen:<br />

Da aufeinanderfolgende Pixel meist einen ähnlichen, möglicherweise sogar identischen<br />

Luminanzwert besitzen, befindet sich der Großteil der als Punkte dargestellten Paare von<br />

Luminanzwerten in der unmittelbaren Umgebung der Winkelhalbierenden. Daher wäre es<br />

sinnvoll, das Koordinatensystem so zu drehen, dass dieser Großteil an Paaren auf einer der<br />

beiden Achsen des Koordinatensystems liegen, da somit der neu zu berechnende<br />

dazugehörige Wert in der Nähe von 0 liegen muss – vorausgesetzt, die Werte ähnelten sich<br />

zuvor. Ist dies der Fall, lässt sich zumindest bei der Hälfte der Werte durch variable<br />

Codelänge ein Großteil an Daten einsparen.<br />

5/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

Betrachtet man im Gegensatz dazu die Datenspeicherungsaspekt, heißt Redundanz von<br />

Daten hier, dass für zwei meist ähnlich große Intensitätswerte zweimal viel Speicherplatz<br />

verbraucht wird, um sie separat zu speichern. Sinnvoller erscheint der Ansatz, die beiden zu<br />

speichernden Werte so voneinander abhängig zu machen, dass dadurch die Datenmenge<br />

reduziert werden kann. Eine Möglichkeit wäre dabei, einen der beiden Wert als eine Art<br />

Basiswert zu verwenden und diesen durch den zweiten nur noch im Detail zu verändern.<br />

Beide Herangehensweisen beschreiben dasselbe Reduktionsverfahren, die erste auf eher<br />

geometrischem und die zweite auf eher mathematischem Wege.<br />

Die Vektoren der Pixelpaare werden auf das neue Koordinatensystem projiziert, indem man das<br />

Skalarprodukt mit den neuen Einheitsvektoren des Koordinatensystems bildet.<br />

Beispiel:<br />

Jedes Pixelpaar kann nun neu beschrieben werden: (99,97) = 98 * (1,1) - 1 * (-1,1)<br />

oder in Vektorenschreibweise:<br />

99<br />

97 = 98 1 1 −1 −1<br />

1 <br />

Abb. 7: Transformation des Koordinatensystems<br />

Die Werte von u (der gedrehten y-Achse) haben nun erheblich kleinere Beträge als vor der<br />

Transformation, d.h. auch die Entropie von u ist nun wesentlich geringer, als von v.<br />

Probe:<br />

Die Richtigkeit der Werte lässt sich überprüfen, indem man die Beträge der jeweiligen Ausgangs- und<br />

transformierten Vektoren vergleicht, diese müssen gleich sein.<br />

Abb. 8: 1D Transformationscodirung<br />

6/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

Jedes Pixelpaar lässt sich durch Überlagerung (Superposition) von zwei Basisblöcken beschreiben<br />

(s. auch 2c. Basisbilder).<br />

b. 2D Transformationscodierung<br />

Bei der zweidimensionalen Transformationscodierung werden im Gegensatz zur 1D Codierung nicht<br />

nur benachbarte, sondern Pixel-Blöcke in vertikaler und horizontaler Ausdehnung betrachtet.<br />

Als Beispiel betrachten wir hier 2x2-Pixel-Blöcke. Jetzt werden 4 Basisböcke zur Darstellung des<br />

Ausgangsblocks benötigt.<br />

Auch hier werden die Vektoren mittels der Einheitsvektoren auf das neue Koordinatensystem<br />

projiziert.<br />

Beispiel:<br />

Transformation der (hier vierdimensionalen) Vektoren:<br />

Abb. 9: 2D Vektortransformation<br />

Aus den neu beschriebenen 2x2-Pixelblöcken werden nun 2x2-Pixel-Basisbilder.<br />

Jeder 2x2-Block lässt sich durch Überlagerung (Superposition) von vier Basisblöcken beschreiben (s.<br />

auch 2c. Basisbilder).<br />

7/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

Abb. 10: 2D Transformationscodierung - Basisbilder<br />

c. Basisbilder & Transformationskoeffizienten<br />

Die bei der 2D Transformationscodierung verwendeten Basisbildmuster bzw. Basisbilder sind die<br />

Endprodukte der diskreten Kosinustransformation (DKT). Auch der Kompressions-Algorithmus arbeitet<br />

mit 64 solcher Basisbilder, die jedoch nicht 2x2 sondern der 8x8 Pixel groß sind.<br />

Abb. 11: DKT-8x8Basisbilder<br />

Die Basisbilder werden durch, in den Blöcken vertikal<br />

und horizontal abgebildete, sich teilweise überlagernde,<br />

Kosinusfunktionen dargestellt. Die Frequenzen der im<br />

jeweiligen Basisbild abgebildeten Kosinusfunktion(en)<br />

nehmen dabei von links nach rechts sowie von oben<br />

nach unten zu.<br />

Das Muster links oben hat die niedrigste Frequenzen<br />

(0,0) und ist somit der Gleichanteil DC. Es bestimmt<br />

den Grundfarbton für die gesamte Dateneinheit. Die<br />

restlichen Basisbilder werden AC-Koeffizienten<br />

genannt, wobei die Blöcke, die nicht in der ersten<br />

Spalte oder ersten Zeile stehen, Kombinationen der<br />

jeweiligen Zeilen und Spalten sind.<br />

Große regelmäßige Flächen im Bild schlagen sich in<br />

niedrigen Frequenzanteilen nieder, feine Details und<br />

genaue Auflösung von Farbunterschieden in hohen.<br />

Mit Hilfe der DKT wird sicher gestellt, dass jeder Vektor eines Basisblock zu jedem Vektor eines<br />

anderen Basisblocks orthogonal ist, was der Fall ist, wenn das Skalarprodukt der beiden 0 ergibt.<br />

Daher entspricht die Dimension des Vektors auch der Anzahl der Basisbilder. Durch Gewichtung der<br />

passenden Basisbilder mit den jeweils notwendigen Transformationskoeffizienten ist es möglich, das<br />

gesamte Bild Block für Block vollständig zu rekonstruieren. Somit müssen pro Bildblock nur noch die<br />

Transformationskoeffizienten gespeichert werden, was eine große Datenreduktion darstellt.<br />

8/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

Die Formel zur Berechnung von DKT-Basisbildern sowie weiterführende Informationen dazu findet<br />

man auf http://www.mathematik.de/spudema/spudema_beitraege/beitraege/rooch/nkap06.html<br />

Die Transformationskoeffizienten, die die Gewichtung bzw. Energie des jeweiligen Basisbilds im<br />

momentan abzubildenden Bildblock darstellen, müssen nicht mit voller Genauigkeit codiert werden,<br />

um das Bild wiedererkennbar wiederherstellen zu können. Ausgehend davon, dass wir bis zu diesem<br />

Punkt die DCT nur auf Graustufenbilder angewandt haben, sind den Größen der Gewichte logische<br />

Grenzen von -128 bis 127 gesetzt, da die Speicherung der Koeffizienten ansonsten mehr<br />

Speicherplatz verbrauchen würde, als die des eigentlichen Bildpunktes.<br />

Mit Hilfe des DKT kann man die Schwächen des menschlichen Auges, das hohe Ortsfrequenzen nicht<br />

erkennen kann, ausnutzen, indem man solche Frequenzen heraus filtert. Hinzu kommt das sich<br />

benachbarte Pixelwerte digitaler Bilder in der Regel kaum unterscheiden, weshalb nach der DKT<br />

meist nur der DC-Koeffizient und einige niederfrequente AC-Koeffizienten größere Werte annehmen.<br />

Die anderen Koeffizienten mit Werten von fast 0 oder gleich 0 können dann, ohne einen großen<br />

Qualitätsverlust, weggelassen werden. Es müssen somit also nur kleine Zahlen kodiert werden, was<br />

bei geeigneter Darstellung bereits einen Komprimierungseffekt hat.<br />

d. Bildannäherung durch Überlagerung<br />

Das Originalbild wird also bei der Transformationscodierung in einen allgemeinen und einen<br />

speziellen Teil aufgeteilt. Der allgemeine Teil sind die standardisierten DCT-Basisbilder, die für jedes<br />

Bild – abgesehen von der Blockgröße – identisch sind. Der spezielle Teil dagegen sind die genau zu<br />

diesem Bild(ausschnitt) gehörenden Transformationskoeffizienten.<br />

Abb.12: Beschreibung eines Bildausschnitts durch DCT-Basisbilder und Transformationskoeffizienten<br />

In der Praxis werden folglich nur sie übertragen, die DCT-Basisbilder liegen dem Decoder vor.<br />

Erhält der Decoder nun also für einen festgelegten Block eines Bildes alle<br />

Transformationskoeffizienten und möchte daraus wieder das dazugehörige Bild reproduzieren, muss<br />

er sich zunächst anhand der Blockgröße die Basisbilder errechnen 2) . Im nächsten Schritt kombiniert er<br />

das Basisbild an der Stelle (x, y) mit dem Transformationskoeffizienten der Stelle (x, y) und erhält<br />

dadurch ein gewichtetes Basisbild.<br />

2)<br />

Blockgröße NxN bedeutet NxN Basisbilder, welche wiederum jeweils aus NxN Pixel bestehen – jedes Basisbild beeinflusst<br />

folglich alle Pixel des resultierenden Blocks<br />

9/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

Abb. 13: Gewichtung des Basisbildes (1,1)<br />

Die gewichteten Basisbilder überlagert er dann miteinander, wodurch dieser Block des Bildes<br />

reproduziert wurde (siehe Abb.7).Grafisch betrachtet, wird der Transformationskoeffizient als Intensität<br />

dargestellt. Ein grauer Koeffizient (Intensität ca. 128) hat im Betrag gesehen die kleinste Energie.<br />

Abb.14: Gewichtung mit Koeffizient 0<br />

Ein mit ihm gewichtetes Basisbild hat (fast) keine Auswirkungen auf das reproduzierte Bild, da seine<br />

Varianz bzw. seine Standardabweichung gegen 0 streben. Ein schwarzer oder weißer Koeffizient hat<br />

im Vergleich dazu die größte Auswirkung auf das Bild, da er die Varianz des Basisbildes maximal hält.<br />

Abb.15: Gewichtung mit Koeffizient 1<br />

10/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

Ist der Koeffizient schwarz, sind die Intensitäten des Basisbildes im Vergleich zu einem weißen<br />

Koeffizienten invertiert.<br />

Abb.16: Gewichtung mit Koeffizient -1<br />

Die gewichteten Basisbilder werden miteinander überlagert und es entsteht das zu reproduzierende<br />

Ausgangsbild (siehe Abb.7).<br />

Mathematisch gesehen stellt der Transformationskoeffizient den Koeffizienten eines Vektors dar.<br />

Dieser Vektor ist wiederum die mathematische Darstellung eines Basisbildes.<br />

<br />

1<br />

−1<br />

−1<br />

1<br />

<br />

∗<br />

−1 =<br />

−1<br />

<br />

1<br />

1<br />

−1<br />

Abb. 17: Zusammenhang von Basisbildern und Vektoren<br />

<br />

Multipliziert man alle Koeffizienten mit ihren Vektoren und addiert diese anschließend, erhält man<br />

wieder den den ursprünglichen Bildblock beschreibenden Vektor.<br />

Zur verlustbehafteten Kompression der Bilddaten stehen uns so wenigstens zwei Möglichkeiten zur<br />

Verfügung, die im Vergleich zu ihrem Datenersparnispotential die Bildqualität meist nur moderat<br />

reduzieren.<br />

Die erste Möglichkeit besteht darin, mit den bisher bekannten Wegen zur verlustlosen und<br />

verlustbehafteten Kompression den Speicherbedarf der Koeffizienten zu reduzieren. Zur Auswahl<br />

stehen hier u.a. die Lauflängencodierung, variable Codelängen und die prädiktive Codierung 3) .<br />

Die zweite Möglichkeit besteht darin, Koeffizienten mit geringer Energie erst gar nicht zu übertragen,<br />

da sie eh nur einen sehr geringen Einfluss auf das zu reproduzierende Bild haben werden. Es wird<br />

also nur noch ein Teil der gewichteten Basisbilder miteinander überlagert. Damit die dabei<br />

3)<br />

Themen vergangener Vorlesungen<br />

11/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

entstehende Abweichung vom Originalbild – der Approximationsfehler – minimal gehalten wird,<br />

werden die gewichteten Basisbilder nach absteigender Gewichtung vor der Überlagerung sortiert,<br />

beginnend mit der höchsten.<br />

Abb.18: Sortierung der gewichteten Basisbilder nach absteigender Energie ihrer Koeffizienten<br />

So ist schon mit einer geringen Anzahl gewichteter Basisbilder ein optisch akzeptables komprimiertes<br />

Bild erreichbar.<br />

Abb.19: Überlagerung der ersten 16 von 64 möglichen gewichteten Basisbildern und Original zum Vergleich<br />

Da beide Möglichkeiten zur Datenkompression parallel angewendet werden können, wird so ein<br />

großer Teil an redundanten Daten eingespart.<br />

12/13


Transformationskodierung – DKT<br />

Medientechnik II<br />

<strong>Vorlesungsprotokoll</strong> vom 29.11.2006<br />

FHTW Berlin – Internationaler Studiengang Medieninformatik<br />

Dozent: Prof. Dr. Kai Uwe Barthel<br />

Protokoll: Anne Böhnke, Thomas Köhn und Peter Mädel<br />

3. Quellen:<br />

Vorlesungsskript<br />

Wikipedia<br />

http://jendryschik.de/michael/inf/dct/<br />

http://www.binaryessence.de/dct/de000166.htm<br />

http://www.mathe-online.at/<br />

http://www.mathematik.de/spudema/spudema_beitraege/beitraege/rooch/nkap06.html<br />

http://jendryschik.de/michael/inf/dct/<br />

http://www.ztt.fh-worms.de/de/others/sem/ws95_96/kompressionsalgorithmen/node34.html<br />

Bildquellen:<br />

Abb. 1-4, 13-17: eigene Grafiken<br />

Abb. 5:http://www.mee.tcd.ie/~ack/cd/linereg/lenna.jpg & eigene Grafik<br />

Abb. 6-12, 18, 19: Vorlesungsskript<br />

13/13

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!