Vorlesungsprotokoll
Vorlesungsprotokoll
Vorlesungsprotokoll
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