DatenreduktionGrundlagen

=Kompression und Reduktion von Video- und Audiodaten=

Allgemeine Grundlagen der Datenreduktion
Bevor Sie sich an das Thema Datenreduktion wagen, sollten Sie sich vielleicht vorher noch einmal ansehen, wie ein Computer Daten speichert (siehe Kapitel Bits&Bytes), z.B. Bildpunkte?
 * @http://bildungsserver.berlin-brandenburg.de/digit_bilder.html

Datenreduktion vs. Kompression
Die Begriffe „Kompression“ und „Datenreduktion“ werden heutzutage meistens synonym verwendet, obwohl „Kompression“ ursprünglich für die verlustlose Komprimierung und Dekomprimierung steht (z.B. ZIP-Dateien). Die für Video- und Audiodaten im Einsatz befindlichen Kompressionsformate sind meistens verlustbehaftet und müßten genauer Datenreduktionsformate heissen.

Wozu brauchen wir eine Datenreduktion?
Die bei der Digitalisierung von Audio- und Videosignalen entstehenden Datenmengen erfordern eine Datenreduktion, d.h. eine Verringerung der Originaldatenmenge. Auch in Zeiten nahezu unbegrenzten Speicherplatzes und hoher Bit-Übertragungsleistungen verschiedener Schnittstellen gibt es die Notwendigkeit, möglichst wenig Daten zu übertragen und zu speichern, z.B. aus folgenden Gründen: Somit sind die zwei wesentlichen Gründe Die Kostenersparnis ist darüber hinaus ein wünschenwerter Nebeneffekt - wenn unser Vorhaben überhaupt erst einmal gelingt.
 * schlechter Empfang des Smartphones,
 * viele Computer im lokalen Netz teilen sich einen Internetzugang (Beispiel Schule),
 * die Speicherkarte der Kamera reicht bei RAW-Daten nur für wenige Minuten,
 * die Schreibrate für das Speichermedium ist geringer als es die unkomprimierten "Rohdaten" erfordern,
 * 1) eine **schnelle, effiziente Übertragung** und
 * 2) die **platzsparende Speicherung**

Welche Daten werden reduziert?
Bereits bei der Digitalisierung eines Analogsignals treten grundsätzlich Informationsverluste auf (z.B. Verwendung von zu wenigen Bits, Nicht-Speichern detaillierter Farbinformationen oder auch von Audiofrequenzen außerhalb gewählter Grenzen). Die bei der Digitalisierung eines analogen Signals verlorenen Informationen sind NICHT Gegenstand der folgenden Betrachtungen! Wir beginnen hier bei unserer Betrachtung von Datenreduktionen mit den digitalen 'Originaldaten', d.h. den während der Digitalisierung entstehenden Rohdaten. Wir gehen dabei davon aus, dass die Digitalisierung jeweils bestmöglich erfolgt ist, bevor die Datenreduktion erfolgt.

Redundanzreduktion
Eine Datenreduktion kann einen Informationsverlust zur Folge haben oder auch nicht. Entsprechend unterscheidet man die angewandten Datenreduktionsverfahren. Solange nur mehrfach vorhandene Informationen platzsparend gespeichert werden, sprechen wir von einer Redundanzreduktion. Bei der Redundanzreduktion handelt es sich also um eine verlustfreie Speicherung. Das Kompressionsverfahren ist 100% reversibel. Die Daten werden komplett wiederhergestellt, so wie sie vor der Anwendung des Verfahrens vorlagen.

Irrelevanzreduktion
Eine Irrelevanzreduktion liegt vor, wenn wir auf das Speichern von Informationen verzichten, welche unsere Sinne wahrscheinlich nicht so detailliert wahrnehmen können (Sehen und Hören), wie diese in den erfassten Rohdaten vorliegen.

Die folgende Tabelle zeigt, welche Datenreduktionsverfahren den Kategorien Redundanzreduktion und Irrelevanzreduktion zugeordnet werden können: > bzw. Lauflängenkodierung Weglassen von Informationen = **Datenreduktion** || # Chroma Subsampling Videokonferenzenen oder Videoüberwachung eingesetzt wird, d.h. eine Kompression mit vergleichsweise 'schlechter' Qualität || identisch mit den Verfahren der Irrelevanzreduktion, aber mit sehr starker Kompression, d.h. Artefakte sind immer erkennbar (sichtbar und hörbar). ||
 * ~ Reduktion ||~ Kodierung ||~ Verfahren ||
 * __Redundanzreduktion__ || verlustfrei = **Kompression** || # RLE (run length encoding)
 * 1) VLC (variable length code)
 * 2) Huffman ||
 * __Irrelevanzreduktion__ || verlustbehaftet -
 * 1) JPEG
 * 2) MPEG ||
 * __Relevanzreduktion__ || eine Irrelevanzreduktion, wie sie z.B. bei der Telefonie,

=Beispiele für die verschiedenen Arten der Datenreduktion=

Lauflängenkodierung / RLE (Run Length Encoding)
Die Lauflängenkodierung ist eine Form der verlustfreien Speicherung. Sie wird genutzt, um aufeinander folgende, identische Bytes möglichst platzsparend zu speichern. Aufeinander folgende identische Buchstaben muss man z.B. nicht Zeichen für Zeichen speichern. Es reicht das einmalige Speichern des Zeichens und die Angabe, wie oft sich das Zeichen wiederholt. Prinzip: Wir zählen die aufeinander folgenden gleichen Bytes, z.B. in der folgenden Zeichenkette: "AAAAAAAAAA" und erhalten als Ergebnis "10A". Die Daten sind verschieden - "AAAAAAAAAA" vs. "10A", aber die Information ist die selbe. Die Wiederholung aufeinander folgender identischer Bytes wird "run" genannt. Die Lauflängenkodierung kodiert einen "run" aus Zeichen normalerweise in zwei Bytes. Das erste Byte wird "count", das zweite "symbol" genannt. Dabei wird im "count"-Byte die Anzahl der Wiederholungen eines Zeichens gespeichert, im "symbol"-Byte der Kode des Zeichens. Die Lauflängenkodierung kann jeden beliebigen Datentyp, unabhängig vom Inhalt der Daten, kodieren. Je nach zugrunde liegendem Datentyp ergibt sich aber ein anderer Kompressionsfaktor. Die Lauflängenkodierung ist ein Bestandteil vieler Kompressionsalgorithmen, z.B. in den Formaten BMP, TIFF, PCX, JPEG und MPEG.

Beispiel 1:
Als erstes Beispiel nehmen wir eine Zeichenkette, die aus 10 aufeinander folgenden 'Z'-Zeichen besteht. Nach der RLE Kodierung erhalten wir die Bytefolge (10) (Z). Zeichenkette: "ZZZZZZZZZZ" RLE Kodierung: (10) (Z) Der Wert (10) wird im ersten Byte, dem "count" Byte, gespeichert. Der Wert (Z) wird im zweiten Byte, dem "symbol" Byte, gespeichert. Nach der RLE Komprimierung benötigt die Speicherung der Zeichenkette also nur noch zwei Bytes und nicht wie vor der Komprimierung 10 Bytes. Hieraus ergibt sich ein Kompressionsfaktor von: 10 / 2 = 5.

Beispiel 2:
Zeichenkette: "UUUUgggggFFsssss" RLE Kodierung: 4(U), 5(g) , 2(F) , 5(s). Die RLE-Kodierung benötigt statt 16 Bytes nur noch 8 Bytes zur Speicherung. Der Kompressionfaktor beträgt: 16 / 8 = 2.

Beispiel 3:
Zeichenkette: "Lauflängenkodierung" RLE Kodierung: 1(L),1(a),1(u),1(f),1(l),1(ä),1(n),1(g),1(e),1(n),1(k),1(o),1(d),1(i),1(e),1(r),1(u),1(n),1(g) Die RLE-Kodierung benötigt in diesem Fall 38 Bytes statt 19 Bytes in der originalen Textkodierung. Der Kompressionfaktor beträgt: 19/38 = 0,5.

Die Ergebnisse machen deutlich, welche Anforderungen die RLE-Kompression an die Datenquelle stellt: Der Kompressionsfaktor ist abhängig vom vorliegenden Original. Echte Texte eignen sich tatsächlich weniger gut für diese Art der Kompression, da in solchen gar keine geeigneten "runs" vorliegen. Um eine Lauflängenkodierung auf eine Nachricht anzuwenden, müssen "runs" mit mehreren Zeichen existieren. Anderenfalls wird die kodierte Nachricht mehr Speicherplatz beanspruchen. Sehr gut geeignet ist das Verfahren hingegen beim Bitmap-Format!

Das Bitmap-Format (Binärbild/Rastergrafik)
Lesen Sie bitte den Text unter und bearbeiten Sie das dort angebotene Arbeitsblatt!
 * @http://bildungsserver.berlin-brandenburg.de/index.php?id=lauflaenge

Codierungstabellen
Vielleicht haben Sie bemerkt, dass die oben dargestellte Lauflängenkodierung noch nicht ganz zuende gedacht ist?! Sowohl der //count// als als auch das //symbol// müssen in Form von Bits abgespeichert werden. Eine Angabe wie z.B. 5 'A' würde also in 16Bits gespeichert werden, solange die Länge des //runs// nicht 256 zeichen übersteigt und das darzustellende Zeichen zum ANSI-Zeichensatz gehört. Wenn ich die Bits einer s/w-Bitmap mit der Lauflängenkodierung beschreibe, dann würde eine Folge von Daten vielleicht 3w, 2s, 4w, 1s lauten. Die ursprüngliche Datenmenge dieser Bitmap besteht aus 10 Bits. Wenn jeweils ein //run// der Lauflängenkodierung mit 16Bit gespeichert wird, dann entstehen auf diese Weise im Beispiel 4 //runs// x 16Bit = 64Bit. So können die Daten also nicht reduziert werden. Gespeichert werden diese runs entsprechend einfacher Kodierungstabellen. Eine solche Tabelle sieht wie folgt aus: 1w = 000, 2w=001, 3w=010, 4w=011, 1s=100, 2s=101, 3s=110, 4s=111 Die obige Folge von //runs// kann also jetzt wie folgt gespeichert werden: 010 101 011 100. Das ist schon viel besser, aber es handelt sich immer noch nicht um eine sinnvolle Datenreduktion. Auf diese Weise entstehen bei der Kompression als Ergebnis immer noch mehr Bits (12), als im Original vorliegen (10). Je mehr Bits allerdings benötigt werden, um ein Symbol darzustellen, desto stärker kann man mit solchen Verfahren die Originaldaten komprimieren.

Beantworten Sie u.a. anhand des obigen Textes folgende Fragen!

 * 1) Was ist eine Lauflänge?
 * 2) Was bezeichnet man als Lauflängenkodierung?
 * 3) Wie heißt die Lauflängenkodierung auf Englisch?
 * 4) Wie funktioniert die Lauflängenkodierung?
 * 5) Ist die Lauflängenkodierung verlustbehaftet oder verlustfrei?
 * 6) Was bedeutet a) symbol b) run c) count ?
 * 7) Welche Bedingungen müssen gegeben sein für eine erfolgreiche Kompression der Daten mit der Lauflängenkodierung?
 * 8) In welchen Dateiformaten wird die Lauflängenkodierung eingesetzt?
 * 9) Wie berechnet sich der Kompressionsfaktor?
 * 10) Ist die RLE eine Kompression oder eine Datenreduktion (entsprechend ursprünglicher IT-Definition)?

Ergänzende Infos:
 * @http://www.binaryessence.de/dct/de000018.htm

Die Huffman Kodierung
siehe Unterlagen aus dem Unterricht. Hinweise: Vielleicht versuchen Sie es mal mit anderen Zeichenketten wie z.B. und zeigen Ihre Lösung mal dem Lehrer? Dann wissen Sie, ob Sie es verstanden haben! ;-)
 * Grosse und kleine Buchstaben sind verschiedene Zeichen!
 * Leerzeichen sind auch zu kodierende Zeichen
 * "Kreuzworträtsellösungsprogramm"
 * "FUSSBALLFELD"
 * "Schifffahrtsstrassenkontrollprotokoll" oder
 * "Antioxidantien"

Ergänzende Infos:
 * @http://www.iti.fh-flensburg.de/lang/algorithmen/code/huffman/huffman.htm

Irrelevanzreduktion
Alle Informationen, welche von menschlichen Sinnen nicht wahrgenommen werden, werden weggelassen und nicht gespeichert. Die Herstellung der ursprünglich vorliegenden Daten ist nicht möglich. Das Verfahren ist also verlustbehaftet.

Video-Beispiel: Chroma Subsampling
Da unsere Augen empfindlicher auf Helligkeit und Kontrast reagieren als auf Farbe, folgt daraus, dass man nicht die Farbe jedes Pixels speichern muss. Je feiner die native Auflösung des Displays ist, desto weniger fällt die Farbreduktion auf. Die Speicherung jedes Pixels ist also für die meisten von uns - auf den meisten Wiedergabegeräten - irrelevant. siehe Chroma Subsampling (pcbasics) siehe z.B. iPhone6: @http://www.apple.com/de/iphone-6/specs/ 5,5" 1920 x 1080 Pixel bei 401 ppi

Audio-Beispiel: Reduzierung der Samplerate
z.B. folgt aus der Annahme, dass nur der Hörbereich von 20Hz-15kHz zu erfassen ist eine entsprechende Samplerate von 32kHz. Das Hören von höher als 15kHz liegenden Frequenzen ist leider nur wenigen von uns vergönnt. Daher ist die Erfassung und Speicherung von Frequenzen >15kHz für die Mehrheit der Bevölkerung irrelevant.

Relevanzreduktion
Relevanzreduktion ist lediglich die gestalterische, freundliche Umschreibung für eine Bild- bzw. Audioqualität, die unter normalen Umständen zu vermeiden wäre. Video- und Audioartefakte sind in jedem Fall sichtbar. Es handelt sich um eine übermäßige Irrelevanzreduktion, deren Einstellungen sich nicht an den Grenzen der menschlichen Wahrnehmung ausrichten, sondern am Zweck der technischen Anwendung.

Video-Beispiel: Überwachungskameras
Überwachungskameras sollen preiswert sein und dienen nur dem Zweck des "Überwachens". Somit muss die Videoqualität nicht detailgetreu sein. Man wird weder die Schnürsenkel des Einbrechers noch die Barthaare erkennen können. Der Gesamteindruck reicht aber für den Zweck der Überwachung.

Audio-Beispiel: Telefonqualität
Sprache wird über das Telefon in einer so schlechten Qualität übertragen, dass häufig darunter die Sprachverständlichkeit leidet (0-8kHz).

Aufgabe: Versuchen Sie, die folgenden Fragen anhand der gegebenen Informationen zu beantworten!
> Hinweis: Überlegen Sie wann und wofür werden diese Techniken eingesetzt werden.
 * 1) Nennen Sie die zwei wichtigsten Gründe für eine Datenreduktion bzw. -kompression!
 * 1) Was ist der Unterschied zwischen Kompression und Reduktion?
 * 2) Was ist eine Redundanzreduktion?
 * 3) Was ist eine Irrelevanzreduktion?
 * 4) Was ist eine Relevanzreduktion?
 * 5) Was ist der Unterschied zwischen einer verlustfreien und einer verlustbehafteten 'Kompression'?
 * 6) Was haben die physiologischen Wahrnehmungseigenschaften des Menschen mit Datenreduktion zu tun?

Weitere interessante Fragestellungen, welche wahrscheinlich nicht ohne weitere Informationen (Recherche) zu beantworten sind:
 * Um welchen Faktor wird die Datenmenge reduziert bei der Wandlung eines Videos im Format RGB 4:4:4 nach YCbCr 4:2:2?
 * Was ist der Unterschied zwischen einer symmetrischen und einer asymmetrischen Kompression?
 * Was ist ein MOS (Mean Opinion Score)?

Weiteres Informationsmaterial
> @https://www.unibw.de/inf2/getFILE?fid=1803476 Redundanzreduktion - RLC, VLC, Huffman, LZW, ...
 * @http://de.wikibooks.org/wiki/Datenkompression:_Allgemeine_Einf%C3%BChrung
 * @http://www.univie.ac.at/video/grundlagen/grundlagen.htm
 * @http://de.wikipedia.org/wiki/Datenkompression
 * @http://www.mathemedien.de/datenkompression.html
 * @http://de.wikipedia.org/wiki/Videokompression
 * []
 * []
 * []
 * @http://de.wikipedia.org/wiki/Lempel-Ziv-Welch-Algorithmus
 * @http://myweb3.hs-harz.de/mkreyssig/af/grundlagen_30.htm
 * @http://www.tu-chemnitz.de/informatik/ThIS/downloads/courses/ws02/datkom/LZ-Codierung.pdf
 * @http://www.staroceans.net/e-book/vcodex/H264_cavlc_wp.pdf
 * @http://www.binaryessence.de/dct/de000030.htm
 * @http://x264dev.multimedia.cx/archives/15 coding und decoding - sehr anschaulich die damit verbundenen Probleme allgemein erläutert

Speicherung von Bildern

 * @http://bildungsserver.berlin-brandenburg.de/fileadmin/bbb/unterricht/faecher/naturwissenschaften/informatik/angewandte_informatik/grafik/pdf/bilder-speichern.pdf
 * @http://bildungsserver.berlin-brandenburg.de/fileadmin/bbb/unterricht/faecher/naturwissenschaften/informatik/angewandte_informatik/grafik/pdf/bilder-speichern-decodieren.pdf
 * @http://bildungsserver.berlin-brandenburg.de/fileadmin/bbb/unterricht/faecher/naturwissenschaften/informatik/angewandte_informatik/grafik/pdf/decodieren.pdf

Formate

 * http://bildungsserver.berlin-brandenburg.de/bit_map.html bitmap
 * http://bildungsserver.berlin-brandenburg.de/pbm.html portable bitmap
 * @http://www.chip.de/downloads/MediaInfo_13014029.html

Metadaten

 * Ein Beispiel: @MP3Tags

SDTV und HDTV

 * Übersicht Videosignal-Standards

Links

 * @http://de.wikipedia.org/wiki/Zeilensprungverfahren
 * @http://de.wikipedia.org/wiki/High_Definition_Television
 * @http://de.wikipedia.org/wiki/Standard_Definition_Television
 * @http://de.wikipedia.org/wiki/YUV-Farbmodell Farbmodell für analoges Fernsehen
 * @http://de.wikipedia.org/wiki/YCbCr-Farbmodell Farbmodell für digitales Fernsehen
 * @http://de.wikipedia.org/wiki/Component_Video
 * @http://de.wikipedia.org/wiki/Composite_Video
 * @http://de.wikipedia.org/wiki/S-Video
 * @http://www.nextgenerationmedia.de/documents/Wimac_HDTV_Bildqualitaet.pdf
 * @http://de.wikipedia.org/wiki/HDCAM