970 likes | 1.08k Views
Algorithmik. Formate, Codes & Algorithmen. (Datei-) Formate. Digitale Information = Bitsequenzen. Ein Bit ist eine atomare Information Einen Informations gehalt bekommt ein Bit, wenn es etwas repräsentiert z. B. schwanger / nicht schwanger
E N D
Algorithmik Formate, Codes & Algorithmen
Digitale Information = Bitsequenzen • Ein Bit ist eine atomare Information • Einen Informationsgehalt bekommt ein Bit, wenn es etwas repräsentiert • z. B. schwanger / nicht schwanger • Mehrere Bits können komplexere Informationen repräsentieren • z.B. Zahlen, Farben, ... (oft Datentypen) • Dazu muss man wissen, wofür eine bestimmte Bitsequenz (=Zeichen) steht • ... und das wird komplizierter, wenn es nicht nur um eine Farbe, einen Buchstaben geht, sondern bspw. um ein ganzes Dokument 1 oder 0 Sein oder nicht Sein trueoder false Information existiert nicht in reiner Form eine Formulierung von Information kann für vieles stehen (repräsentieren)
Definition (Daten-/Datei-) Format: • Ein Format ist eine spezifische Anordnung von Daten (Bits) für Speicherung, Weiterverarbeitung, Ausgabe, etc. • Ein Format definiert so etwas wie eine Erwartungshaltung, in welcher Form (digitale) Information vorliegt. Das betrifft • die Anordnung (wie teilt man die Sequenz in Zeichen auf?) • die Codierung (für was steht ein Zeichen/Bitsequenz?) Diese grösstenteils impliziten (also nicht in der Sequenz enthaltenen) Informationen müssen allen Beteiligten bekannt sein – nur so kann man herausfinden, wofür die expliziten Informationen (Bitsequenz) stehen
Universalität vs. Speicherplatzbedarf • Ein Format macht nur Sinn, wenn es (für einen gewissen Bereich) universell ist, also bspw. alle Fotos speichern kann, nicht nur die grünen • Andererseits benötigt diese Universalität Speicherplatz und ist nicht immer einfach festzulegen: macht es beispielsweise Sinn, in .DOC Unicode zu benutzen, nur damit die Chinesen dasselbe Format haben? • ... oder sollte man Meta-Informationen einbauen, so dass z.B. die Codierung ausgetauscht oder explizit mitgeschickt werden kann?
Digitale Repräsentation von Schach • Was ist wichtig? • nur die Information, die einen Spielstande eindeutig definiert • Was ist möglich? • alle Spielstände müssen repräsentiert werden können • Welche Informationen codiert man (explizit) als Zeichen, welche (implizit) in der Anordnung? • es geht nicht um maximale Effizienz, man muss aber trotzdem keinen Speicherplatz verschwenden oder: ein universeller digitale Koffer für Schach Vorschläge? Wie viele Bits brauchen Sie?
Ein Schach Format (.sch), 257 BIT • Das erste Bit gibt an, wer am Zug ist (1=schwarz, 0=weiss) • Die folgenden 256 Bit repräsentieren die Belegung der 64 Felder, mit jeweils 4 Bit pro Feld (nummeriert zeilenweise von links nach rechts, dann spaltenweise von oben nach unten). • Das erste Bit pro Feld steht für die Farbe der Figur: • Die letzten 3 Bit pro Feld stehen für die Figur, die hier steht: • 1 = schwarz • 000 = leer • 001 = Bauer • 010 = Turm • 011 = Springer • 0 = weiss • 100 = Pferd • 101 = Dame • 110 = König • 111 = steht für nichts
Ein Format für Schieber-Jass • Das Spiel: 4 Spieler haben zu Beginn je 9 Karten, spielen sie reihum aus, und nach jeder Runde wandern 4 Karten auf den einen oder anderen Stapel von gespielten Karten. • Aufgabe: erfinden Sie ein Format, mit dem jeder mögliche Zustand des Spiels binär repräsentiert werden kann. • Formulieren Sie die von Ihnen erfundene Codierung so, dass ein anderer Schüler eine entsprechende Bitsequenz in den Spielzustand zurückübersetzen könnte • Geben Sie an, wie viele Bits für die Speicherung eines Spielzustands benötigt werden
Und woher weiss der Computer, welches Format eine Datei hat? Die meisten Datei-Formate haben einen header, in dem • sie sich vorstellen und • zusätzliche Angaben zur Formatierung machen, z.B. • Version/Variation des Formats • Parameter • allgemeine Zusatzinformationen • Endung • Header • Diese Informationen sagen dem Computer, welche Brille er anziehen muss
Beispiel.rtf öffnen mit Hex-Editor, z.B. http://www.onlinehexeditor.com/ { \rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf250 {\fonttbl\f0\fnil\fcharset0 GoudyOldStyleT-Regular;} {\colortbl;\red255\green255\blue255;\red6\green10\blue58;} \paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh8 400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\t x5669\tx6236\tx6803\ql\qnatural\pardirnatural \f0\fs36 \cf2 Lirum \b larum\b0 L\ ‘f6ffelstiel }
RTF (Rich Text Format) • Entwickelt von Microsoft, aber frei verfügbar • Basierend auf Standard-Codetabellen (ASCII, UNICODE) • Lesbar von allen gängigen Texteditoren, wobei u.U. Teile der Layout-Information ignoriert werden
RTF Spezifikationen • Syntax: { <header> <document>} • Der header beinhalten Kontrollwörter, die mit Backslashanfangen und mit Leerzeichen getrennt werden • Im header wird zusätzliche Layoutinformation repräsentiert, z.B. Schriftfarbe oder Schrifttyp • RTF kann mit verschiedenen Versionen von ASCII oder UNICODE Zeichen umgehen (Meta-Information im header) • Bei RTF wird implizit angenommen, dass die entsprechenden Codetabellen verfügbar sind, und dass die Blöcke innerhalb der Bitsequenz in der richtigen Reihenfolge vorliegen
Zusammenfassung • RTF kann mehr als TXT und weniger als DOC, das ist seine „digitale Nische“ • RTF ermöglicht die Repräsentation von allgemeinen Layoutinformationdurch standardisierte Kontrollwörter im header • Das Layout für Textteile geschieht durch Auszeichnung des Dokuments mit Kontrollwörtern im Text (wie HTML)
Eine Analogie zur Zusammenfassung Bildinformation in einem etwas speziellen Format Die Brille implementiert die Decodierung Das Format gibt an, welche Brille man braucht
Konzepte Beispiele • Format • Header • Endung • Zeichen • explizite & implizite Bestandteile • Universalität • Eigene Formate für Spiele • .rtf
Datei: Raetsel öffnen mit Hex-Editor, z.B. http://www.onlinehexeditor.com/ <svgversion="1.1“ xmlns="http://www.w3.org/2000/svg" xmlns:xlink=http://www.w3.org/1999/xlink xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/“ x="0px" y="0px" width="400px" height="400px" viewBox="0 0 400 400“ enable-background="new 0 0 400 400" xml:space="preserve"> <defs> </defs> <rect fill="#FF0000" stroke="none" x="0" y="0" width="400" height="400"/> <polygon fill="#FFFFFF" stroke="#FFFFFF" points="350,250 50,250 50,150 350,150"/> <polygon fill="#FFFFFF" stroke="#FFFFFF" points="250,350 150,350 150,50 250,50"/> </svg>
Grafikformate und verlustbehaftete Komprimierung
Wie viel Information ist nötig? Anfangs- und Endpunkt definieren die Linie eindeutig Mittelpunkt und Radius definieren den Kreis eindeutig Die Eckpunkte definieren das Polygon eindeutig
Vektorgrafik • Mit allgemeinen Kurven (z.B. Bezier Kurven) und noch mehr Parametern kann man jede beliebige Form berechen kann zu extrem geringen Dateigrössen führen Vektorgrafiken sind beliebig skalierbar 26 Kb
Reine Vektorgrafikformate • Sind nicht weit verbreitet, meist proprietär, in Verbindung mit einem Editor – z.B. Adobe Illustrator (.ai) • Ausnahme: SVG (scalablevectorgraphics) • Benutzt werden Vektorgrafiken aber oft in Kombination, z.B. • einzelne Ebenen in Photoshop • Vektor-Fonts • Zeichnungen in Word oder Powerpoint • in Druckformaten (PDF, EPS) • Interessant: .pptx hacken
Konzepte Beispiele • Vektor- vs. Raster • Farbtiefe • indizierte Farben • Farbraum • RGB(A), CMYK, LAB • Pixel zusammenfassen • Farbverlauf • Lauflänge • .svg • .bmp • .jpg • .gif • .png, .tiff, RAW, .psd, eps
Reine Rastergrafikformate • Produzieren sehr grosse Dateien (aber verlustfrei) • Beispiele • .bmp – nur Windows, veraltet • .pict – nur MAC, veraltet • .tiff – (wenn ohne Komprimierung) Bestes Format für sehr hohe Qualität, üblich beim Drucken • RAW – reine Sensordaten, für jede Kamera anders
RAW • ist abhängig von Kamerasensor bzw. –Hersteller • DNG ist Adobes Versuch für ein herstellerübergreifendes Standard-RAW-Format • RAW-Dateien haben eine höhere Farbtiefe (10 – 16 Bit) • RAW-Dateien richten sich nach dem geomet-rischen Layout des Sensors, meist Bayer-Matrix • Arbeitsschritte wie Demosaicing,Rauschunterdrückung, Weissabgleich, oder Tonwertkorrekturen können mit RAW-Daten in der Nachbearbeitung festgelegt werden • Verschieden Algorithmen führen zu leicht unterschiedlichen Ergebnissen • Bei starken Manipulationen verhilft die Farbtiefe zu besseren Ergebnissen
Die üblichsten Grafikformate (.jpg & .gif) • Komprimieren die Information reiner Rastergrafiken • Nehmen ggf. Informationsverlust in Kauf (meist variabel) Ansätze zum (verlustbehafteten) Komprimieren: • mehrere Pixel zusammenfassen • Speicherplatz sparen bei der Repräsentation von Farben Dabei geht es immer darum, möglichst die Informationen zu verlieren, die (optisch) keinen grossen Unterschied machen
JPG & GIF • Pixel zusammenfassen • Farben repräsentieren • Besonderheiten • Anwendungsgebiet
Formatentscheidungen • Sie wollen mit ihrer Digitalkamera ein Photo aufnehmen, um dann Sie dann im Internet einen Abzug in Postergrösse zu bestellen. Wie gehen Sie optimalerweise vor? • Ein Freund von ihnen hat gehört, dass Vektorgraphiken wenig Speicherplatz brauchen und trotzdem skalierbar sind. Er hat ein Logo für seine Webseite gezeichnet (von Hand) und fragt Sie, wie er es in ein Vektorformat umwandelt. Was raten Sie ihm? • Sie wollen ihren Freunden ein paar Urlaubsbilder per E-Mail schicken. Wie gehen Sie vor? • Für die Maturazeitung verfassen Sie einen Artikel, in dem sie auch einige statistische Grafiken zeigen wollen. Worauf achten Sie?
Zusammenfassung • Ein Bild besteht aus Pixeln (Rastergrafik) • Auflösung, Farbraum, Farbtiefe, Transparenz? (ggf.) verlustbehaftete Komprimierung: • Farben indizieren (.gif) • Farbtiefe (in LAB-Farbraum) reduzieren (.jpg) • Blöcke gleicher Pixel zusammenfassen (.gif) • Farbverläufe zusammenfassen (.jpg) • Ein Bild besteht aus geometrischen Objekten, bzw. Kurven (Vektorgrafik) • Wie beschreibt man die Formen, welche Parameter gibt es?
Digitales Koffer packen bzw. verlustfreie Komprimierung
Aufgabenstellung: • Sie wollen ihrem Freund eine Text-Botschaft übermitteln, können dazu aber nur Zahlen verwenden (entscheiden Sie selbst ob sie Dezimal- oder Binärzahlen benutzen). • Überlegen Sie sich eine Methode, wie die gegebene Botschaft möglichst genauund möglichst kompaktin Zahlen übersetzt werden kann. Dann erstellen Sie zwei Textdokumente: • Ein Dokument soll nur die Zahlenfolge enthalten • Im anderen Dokument formulieren Sie eine Anleitung, mit deren Hilfe ihr Freund die ursprüngliche Botschaft aus der Zahlenfolge rekonstruieren kann
Auswertung • Hat es geklappt? • Was war schwierig? • Welche Informationen wurden übermittelt? (genau?) • Wie viele Zahlen waren nötig? (kompakt?) • Welche anderen Botschaften könnten so verschickt werden? • Welche grundsätzliche Idee steckt hinter dieser Methode?
Arbeitsauftrag Ihr Ziel ist herauszufinden, wie die Huffman Codierung funktioniert und sie selbst anwenden zu können • Benutzen Sie dazu das Applet HuffmanApplet.jar • Experimentieren Sie mit dem Applet (nur Huffman Code) und versuchen Sie, die Fragen im ArbeitsblattAB Huffman Komprimierung.doczu beantworten
Besprechung • Suchen Sie sich einen Partner und tauschen Sie ihre Ergebnisse aus • Notieren Sie alles, was ihnen beiden noch unklar ist • Können Sie die grundsätzliche Idee formulieren?
Konzepte Beispiele • Block-Codierung • Frequenz-Codierung • Präfixfreier Code • Telefonnummern • Morse-Code • Huffman Codierung • Arithmetische Codierung
Präfixfreie Telefonnummern Auch normale Telefonnummern erfüllen die Fano-Bedingung, z.B. 0789218418wenn das eine gültige Nummer ist 078921841dann kann es diese 07892184182oder diese nicht geben
Information Genau & Kompakt Codieren Komprimieren Koffer packen (Komprimieren von Information) • Koffer (~ Format) so wählen, dass alles eingepackt werden kann, was man im Urlaub vielleicht brauchen könnte • Ziel: Der Koffer soll für alle Urlaube geeignet sein! • Effizient packen, so dass möglichst wenig Luft im Koffer bleibt kann davon abhängen, was genau eingepackt wurde! • Ziel: Der Koffer für diesen Urlaub soll möglichst klein werden!
Effizientes Packen von Buchstaben • Codieren von Buchstaben als binäre Codewörter • ASCII Code • Komprimieren der Bitsequenz • z.B. Huffman Codierung • kürzere Sequenz + neue Codewörter • Speichern oder Übermitteln • Dekomprimieren • Decodieren -> Darstellen
Komprimierung von Buchstaben Komprimieren, z.B. mit Huffman Codierung Dekomprimieren, z.B. mit Huffman Decodierung Welche Informationen braucht es hier? speichern /verschicken
ASCII (American Standard Code for Information Interchange) Kleinbuchstaben:
Huffman Decodierung • Die binäre Nachricht: 0100111101001110010100111110 • Die Codewörter: e = 110 d = 111 o = 00 p = 010 s = 011 u = 100 c = 101 Hinweis: Am einfachsten ist es, wenn Sie sich zunächst den zu den Codewörtern gehörenden Baum aufzeichnen
Und was daran war jetzt präfixfrei? o = 00 p = 010 s = 011 u = 100 c = 101 e = 110 d = 111