Dienstag, 29. April 2014

April 2014 - Datenkompression



Diesen Monat schreibe ich über die Datenkompression.
Ich habe dieses Thema gewählt, weil wir es in der Schule behandelt haben, ich es sehr interessant fand und daher auch noch etwas dazulernen möchte.



Datenkompression

Die Datenkompression ist ein Vorgang, bei dem die Menge der digitalen Daten einer Datei (wie z.B. ein Bild) reduziert wird. Durch diesen Vorgang soll der benötigte Speicherplatz minimiert und die Übertragungszeit dadurch verkürzt werden
Grundsätzlich versucht man bei der Datenkompression immer, überflüssige Informationen zu entfernen.

Eine verlustfreie Datenkompression liegt vor, wenn man aus den komprimierten Daten wieder das Original gewinnen kann. Das ist vor allem bei der Kompression ausführbarer Programmdateien der Fall.

Von einer verlustbehafteten Kompression spricht man, wenn die Originaldaten nicht mehr aus den komprimierten Daten zurückgewonnen werden können und somit ein Teil der Informationen verloren gegangen ist. 



Die Datenkompression findet bei jeglicher Übertragung statt. Sie dient dazu,  Ressourcen bei der Übertrtagung (Bandbreite, Speicherplatz, ...) zu sparen, indem die Daten in einer möglichst minimalen Form übertragen werden. Allerdings ist vom Sender und Empfänger ein erheblicher Berechnungsaufwand nötig, um wieder die ursprünglichen Daten zu erhalten.
Kompressionsverfahren können, abhängig von ihrer Anwendung, auf Datendurchsatz, Energiebedarf oder Datenreduktion optimiert sein.
Zum Beispiel ist es bei mobilen Geräten unerwünscht, Daten auf ihr Minimum zu komprimieren, da der Aufwand (vor allem der Energiebedarf) um die ursprünglichen Daten wiederherzustellen zu groß ist. Ebenso ist dies bei Audio- und Video-Streams unerwünscht, um die Verzögerung gering zu halten.




Verlustlose Kompression

Bei der verlustlosen Kompression können aus den komprimierten Daten die exakten Originaldaten wiederhergestellt werden. Dabei gehen keinerlei Informationen verloren.
Im Wesentlichen wird bei der verlustlosen Kompression die Redundanz von Daten ausgenutzt. Dabei spricht man auch von der Redundanzreduktion.

Beispiel: Text
Die Datei muss ein richtiger Text sein, d.h. es darf nicht ein Scan eines Dokuments, das als Bild abgespeichert wurde, oder ähnliches sein. Dieser Text braucht eigentlich nicht viel Speicherplatz, lässt sich aber durch ein Verfahren auf 20% bis 10% des ursprünglichen Speicherplatzes  reduzieren.

Beispiel:

Bei diesem Text wurde erkannt, das es die beiden Wörter "EIN" und "BEITRAG" mehrmals gebraucht werden, deshalb wurden sie kodiert als "-4" und "-3", was auf einen langen Text viel ausmachen kann.
Wenn man es noch genauer nimmt, könnte das "EIN" in "KLEINER" auch noch kodiert und so noch mehr Speicherplatz gespart werden.
Es gibt ein verwandtes Verfahren, bei dem häufig wiederkehrende Schlüsselwörter durch Abkürzungen ersetzt werden.

Bei Programmdateien ist es schon kritischer, dass sie nach der Dekomprimierung wieder im ursprünglichen Zustand sind. Wäre dies nicht der Fall, wäre eine fehlerfrei Ausführung mit hoher Wahrscheinlichkeit nicht möglich. Daher sind komprimierte Programmdateien meist selbst wieder ausführbare Dateien, die das Ziel verfolgen, den Programmcode wieder vollständig zu dekomprimieren.


Verlustbehaftete Kompression

Bei der verlustbehafteten Kompression werden irrelevante Informationen entfernt. Dabei geht ein Teil der Informationen aus den Originaldaten verloren, das Original kann also aus den komprimierten Daten nicht vollständig zurückgewonnen werden.
Welcher Anteil nun irrelevant ist, wird anhand eines Modells entschieden. Die verlustbehaftete Kompression wird meist in der Bild-, Video- und Audio-Übertragung eingesetzt. Als Modell liegt hier die menschliche Wahrnehmung zugrunde. 
Ein gutes Beispiel ist das Audio-Format MP3, hier werden für den Menschen nicht wahrnehmbare Frequenzen einfach weggelassen.

Bild-, Video- , und Tonaufnahmen, sind Einsatzgebiete der verlustbehafteten Kompression. Anders könnten die meist enormen Mengen an Daten nur sehr schwer gehandhabt werden. Schon die Aufnahmegeräte an sich begrenzen das Volumen der Daten. Wie bereits erwähnt, orientiert sich die Reduktion der gespeicherten Daten an den Wahrnemungseingenschaften des Menschen.
Bei der akkustischen Wahrnemung des Meschen werden Frequenzen oberhalb von ungefähr 20kHz nicht mehr wahrgenommen, daher werden genau diese Informationen bereits im Aufnahmesystem weggelassen. Auch werden unhörbare Frequenzen (z. B. Töne, die eigentlich wahrgenommen werden können, aber wegen anderen lauten Geräusche für den Menschen kaum hörbar sind) weggelassen.
Bei den Filmen muss man bedenken dass ein Film aus mehreren Bildern besteht. Bei der Kodierung wird nun jedes Bild in kleinere Kästchen (zwischen 4x4 und 16x16 Pixel) zerlegt und es werden dann ähnliche Kästchen in den schon übertragenen Bildern gesucht und als Vorlage verwendet. Die Einsparung hierbei ergibt sich daraus, dass statt des gesamten Bildinhalts immer nur noch der Unterschied  der Kästchen übertragen werden muss.



Mit dem Programm "GIMP" kann man als Beispiel ein Bild auf 5% der originalen Qualität komprimieren, dadurch wird die Qualität zwar schlechter, das Bild braucht aber nur noch ca 3.7% des ursprünglichen Speicherplatzes.

Beispiel

Original
 Qualität: 100%
 Speicherbedarf: 780'831 Bytes


Komprimiert  
Qualität: 5% 
Speicherbedarf: 28'973 Bytes





Temporärer Speicherbedarf

Bereits heute gibt es Verfahren, die sehr gute Werte bei der Kompression erzielen. Meist geschieht dies aber wie schon vorher kurz erwähnt auf Kosten eines enormen temporären Speicherbedarfs (Arbeitsspeicher), damit ist ein Speicherbedarf von mehr als 768 MB (Megabyte) bei mittelgroßen Dateien gemeint. Aus diesem Grund ist es notwendig, die vermeintlich alten Verfahren der Datenkompression nicht zu vergessen. Denn vor allem die älteren Verfahren wurden zu Zeiten entwickelt, in denen es neben guten Werten in der Kompression auch sehr wichtig war, den temporären Speicherbedarf gering zu halten.