Medien- Technik Dateiformate für Rasterbilder.bmp.tiff. pcx.png.jpeg
Medien- Technik Windows Bitmap BitmapFileHeader BitmapInfoHeader RGBQuad array Color-Index array Dateiaufbau.BMP typedef struct tagBITMAPFILEHEADER { WORD bfType; BM Magic numberbfType DWORD bfSize; DateigrößebfSize WORD bfReserved1; 0bfReserved1 WORD bfReserved2; 0bfReserved2 DWORD bfOffBits; Offset Color IndexbfOffBits } BITMAPFILEHEADER, *PBITMAPFILEHEADER; typedef struct tagBITMAPINFOHEADER{ DWORD biSize; Länge des HeadersbiSize LONG biWidth; Breite in PixelbiWidth LONG biHeight; Höhe in Pixel + - biHeight WORD biPlanes; Muss 1 sein !biPlanes WORD biBitCount Bit pro Pixel (1-32)biBitCount DWORD biCompression; ohne RLE JPEG PNGbiCompression DWORD biSizeImage; Datei- PuffergrößebiSizeImage LONG biXPelsPerMeter; AusgabeauflösungbiXPelsPerMeter LONG biYPelsPerMeter;biYPelsPerMeter DWORD biClrUsed; 0 oder Anzahl FarbenbiClrUsed DWORD biClrImportant; 0 oder wichtige F.biClrImportant } BITMAPINFOHEADER, *PBITMAPINFOHEADER; DWORD 32 Bit o. Vz. LONG 32 Bit mit Vz. WORD 16 Bit o. Vz.
Medien- Technik Windows Bitmap BitmapFileHeader BitmapInfoHeader RGBQuad array Color-Index array Dateiaufbau.BMP... DWORD bV4RedMask; RGB-Rot DWORD bV4GreenMask; RGB-Grün DWORD bV4BlueMask; RGB-Blau DWORD bV4AlphaMask; Transparenz Farbe DWORD bV4CSType; Art des Farbraumes ( CIEXYZTRIPLE bV4EndPoints; CIE-Farbdreieck DWORD bV4GammaRed; Gamma für jede Farbe DWORD bV4GammaGreen; DWORD bV4GammaBlue;bV4RedMaskbV4GreenMaskbV4BlueMaskbV4AlphaMaskbV4CSTypebV4EndPointsbV4GammaRedbV4GammaGreenbV4GammaBlue Ab Windows 95 erweiterter BitmapV4InfoHeader: DWORD bV5Intent; DWORD bV5ProfileData; Internes oder DWORD bV5ProfileSize; externes Farbprofil DWORD bV5Reserved; } BITMAPV5HEADER, *PBITMAPV5HEADER;bV5IntentbV5ProfileDatabV5ProfileSizebV5Reserved Win 95 Win 98 LogColorSpace Calibrated RGB sRGB linked profile embedded profile Windows Ab Windows 98/2000 erweiterter BitmapV5InfoHeader:
Medien- Technik Windows Bitmap BitmapFileHeader BitmapInfoHeader RGBQuad array Color-Index array Dateiaufbau.BMP typedef struct tagRGBQUAD { BYTE rgbBlue;rgbBlue BYTE rgbGreen;rgbGreen BYTE rgbRed;rgbRed BYTE rgbReserved; = 0rgbReserved } RGBQUAD; Palette Farbwerte oder Farbindizes zeilenweise von links nach rechts von unten nach oben (Höhe positiv) von oben nach unten (Höhe negativ) ggfs. Komprimiert Doppelwortausrichtung jeder Zeile
Medien- Technik Windows Bitmap RGB-Bitmap 10*8 Höhe*Breite Höhe Ebenen Bits/Pixel Zeile 8 Magic number Dateilänge Offset
Medien- Technik Windows Bitmap Run-Length Encoding Lauflängen-Kodierung RLE8: für 8-Bit-Bitmaps (256 Graustufen oder 256 Palettenfarben): Encoded mode: 1. Byte = Wiederholungsfaktor 2. Byte = zu wiederholender Farbwert oder -index Sonderfall:1. Byte = 00 (Fluchtsymbol, Escape-Zeichen) und2. Byte = 00 Zeilenende oder2. Byte = 01 Ende des Bitmaps oder2. Byte = 02 Die nächsten 2 Bytes enthalten einen Offset, ab dem es dann weitergeht oder2. Byte >= 3: soviele Bytes kommen unverschlüsselt Jeder Lauf auf Wortgrenze ausgerichtet E rechts 1 runter (eol) 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E eobm RLE4 auf Nibbles
Medien- Technik Codetabelle 01: 02: 03: 04: 05: 06: 07: 08: 09: Codetabelle initialisieren Präfix = Lese nächstes Zeichen A Muster = Präfix + A Muster in Codetabelle ? Muster in Codetabelle eintragen LZW-Code von Präfix ausgeben Präfix = A Präfix = Muster LZW-Code von Präfix ausgeben Ende Lempel Ziv Walsh nein ja Idee: Silben oder Muster erkennen und codieren Präfix: Muster: Output: Anwendung: GIF und TIFF Grafik-Formate
Medien- Technik Codetabelle 01:A 02:B 03:C 04:D 05: 06: 07: 08: 09: Codetabelle initialisieren Präfix = Lese nächstes Zeichen A Muster = Präfix + A Muster in Codetabelle ? Muster in Codetabelle eintragen LZW-Code von Präfix ausgeben Präfix = A Präfix = Muster LZW-Code von Präfix ausgeben Ende nein ja Präfix: Muster: Output: Beispiel: A B C A B C A B C A B C D =A=A A
Medien- Technik Codetabelle 01:A 02:B 03:C 04:D 05: 06: 07: 08: 09: Codetabelle initialisieren Präfix = Lese nächstes Zeichen A Muster = Präfix + A Muster in Codetabelle ? Muster in Codetabelle eintragen LZW-Code von Präfix ausgeben Präfix = A Präfix = Muster LZW-Code von Präfix ausgeben Ende nein ja Präfix: Muster: Output: Beispiel: A B C A B C A B C A B C D A =AB AB 01 =B=B B
Medien- Technik Codetabelle 01:A 02:B 03:C 04:D 05:AB 06: 07: 08: 09: Codetabelle initialisieren Präfix = Lese nächstes Zeichen A Muster = Präfix + A Muster in Codetabelle ? Muster in Codetabelle eintragen LZW-Code von Präfix ausgeben Präfix = A Präfix = Muster LZW-Code von Präfix ausgeben Ende nein ja Präfix: Muster: Output: 01 Beispiel: A B C A B C A B C A B C D B =BC BC 02 =C=C C
Medien- Technik Codetabelle 01:A 02:B 03:C 04:D 05:AB 06:BC 07: 08: 09: Codetabelle initialisieren Präfix = Lese nächstes Zeichen A Muster = Präfix + A Muster in Codetabelle ? Muster in Codetabelle eintragen LZW-Code von Präfix ausgeben Präfix = A Präfix = Muster LZW-Code von Präfix ausgeben Ende nein ja Präfix: Muster: Output: Beispiel: A B C A B C A B C A B C D C =CA CA 03 =A=A A
Medien- Technik Codetabelle 01:A 02:B 03:C 04:D 05:AB 06:BC 07: 08: 09: Codetabelle initialisieren Präfix = Lese nächstes Zeichen A Muster = Präfix + A Muster in Codetabelle ? Muster in Codetabelle eintragen LZW-Code von Präfix ausgeben Präfix = A Präfix = Muster LZW-Code von Präfix ausgeben Ende nein ja Präfix: Muster: Output: Beispiel: A B C A B C A B C A B C D C =AB CA 03 AB
Medien- Technik Codetabelle 01:A 02:B 03:C 04:D 05:AB 06:BC 07: 08: 09: Codetabelle initialisieren Präfix = Lese nächstes Zeichen A Muster = Präfix + A Muster in Codetabelle ? Muster in Codetabelle eintragen LZW-Code von Präfix ausgeben Präfix = A Präfix = Muster LZW-Code von Präfix ausgeben Ende nein ja Präfix: Muster: Output: Beispiel: A B C A B C A B C A B C D C =CA CA 03 =A=A A
Medien- Technik LZW-Komprimierung A AB BC CA AB ABC CA CAB BC BCA AB ABC ABCD hat Code neu AB=04 neu BC=5 neu CA=6 hat Code neu ABC=7 hat Code neu CAB=8 hat Code neu BCA=9 hat Code hat Code neu Ausgabe A B C D A B C D AB A B C D AB BC A B C D AB BC CA A B C D AB BC CA A B C D AB BC CA ABC A B C D AB BC CA ABC A B C D AB BC CA ABC CAB A B C D AB BC CA ABC CAB A B C D AB BC CA ABC CAB BCA A B C D AB BC CA ABC CAB BCA A B C D AB BC CA ABC CAB BCA A B C D AB BC CA ABC CAB BCA Erkannte PräfixeAktion ABCABCABCABCD Präfixtabelle begrenzen 4096 Präfixtabelle kann bei bekannter Codierungsstrategie rekonstruiert werden Muster:
Medien- Technik GIF Graphics Interchange Format Compuserve, Palettenbilder mit max. 256 Einträgen Mehrere Teilbilder LZW-Komprimierung (Patent Unisys) Transparenz (1 Stufe) 1D-Interlacing Portable Network Graphics PNG spec 1.0 released as Informational RFC 2083 (IETF) RGB-Bilder Graustufenbilder Palettenbilder Kompression Variable Transparenz 2D-Interlacing Farbraum-Unterstützung Say ping !
Medien- Technik PNG Alpha-Kanal: Maß der Deckkraft RGBA als 4. Byte A=0 durchsichtig A=2 Bittiefe -1 opak Korrekter Schatten auf jedem Hintergrund ! Progressiver Bildaufbau Alpha-Kanal des GIF-Formates ordnet jedem Pixel das Attribut Transparent / nicht transparent zu. Alpha-Kanal des PNG-Formates ordnet jedem Pixel Deckkraft zu. Transparenz
Medien- Technik PNG Transparenz
Medien- Technik PNG Transparenz Hintergrund Vordergrund Alpha-Kanal
Medien- Technik PNG Progressivität Interlacing Gif-Interlacing 1. Schritt: jede 8. Zeile, Start: 0 2. Schritt: jede 8. Zeile, ab 4 3. Schritt: jede 4. Zeile, ab 2 4. Schritt: alle ungeraden Reihenfolge des Erscheinens der Pixel Adam7
Medien- Technik PNG: Dateistruktur PNG-Signatur: (dezimal) \211 P N G \r \n \032 \n Chunks IEND IHDR LängeTyp DatenCRC Alle Bytes in Network Byte Order (Little Endian) Alle Integer-Werte 31 Bit, höchstes 0
Medien- Technik PNG: Chunks IHDR Width: 4 bytes Height: 4 bytes Bit depth: 1 byte Color type: 1 byte Compression method: 1 byte Filter method: 1 byte Interlace method: 1 byte Color type 1 Bild hat Palette 2 Bild hat Farbe 4 Bild hat Alphakanal sinnvolle Kombinationen 0,2,3,4,6 Bittiefen: 1,2,4,8,16 für Graustufen 1,2,4,8 für Palettengröße 8,16 für RGB, RGBA, Grau+A Filter: verlustfreie Transformation pro Zeile z.B. Differenz zum Vorgängerpixel Compression 0: ähnlich LZ77 (zip, gzip, pkzip) zlib, RFC 1950
Medien- Technik PNG: Chunks IDAT: Zeilenweise, vor jeder Zeile Filterbyte (None = 0), komprimiert mit zlib. PLTE: Bis zu oder 16-Bit tiefe RGB-Werte gAMA: sample = lightout^gamma sample, lightout [0..1] 4 Byte Gamma-Wert, interpretiert als Gamma* Beispiel: 1/2.2 = cHRM: (Chroma) Weißpunkt (x,y) nach CIE Rot (x,y) Grün (x,y) Blau (x,y) x,y als 4 Byte Festkommazahlen mit 5 Dezimalen
Medien- Technik PNG: Chunks sRGB: (1 Byte) 0: Perceptual 1: Relative colorimetric 2: Saturation 3: Absolute colorimetric tRNS: Für einfache Transparenz, besteht aus (je nach Bildart) n einem Farbwert für Truecolor-Bilder n einem Grauwert für Graufstufenbilder n einer Alpha-Palette, die jeder Palettenfarbe einen Alpha-Wert zuordnet. Weitere Chunks pHYs (Pixelgröße)sPLT (suggested Palette)sBIT (signifcant Bits) tIME (Zeit)iTXt (international Text)sKGD (Background) tEXt zTXt (zipped text) hIST (histogramm)iCCP (color profile)pivate Chunks
Medien- Technik Vorlesung Medientechnik WS 1999/2000 Dr. Manfred Jackel Studiengang Computervisualistik Institut für Informatik Universität Koblenz-Landau Rheinau Koblenz © Manfred Jackel WWW: mtech.uni-koblenz.de Literatur zu diesem KapitelHyperlinks zu diesem Kapitel Grafik-Quellen