Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
Medien-Technik
Dateiformate für Rasterbilder
.
Medien-Technik
Windows Bitmap
BitmapFileHeader
BitmapInfoHeader
RGBQuad array
Color-Index array
Dateiaufbau .BMP
typedef struct tagBITMAPFILEHEADER {WORD bfType; „BM“ Magic numberDWORD bfSize; DateigrößeWORD bfReserved1; „0“WORD bfReserved2; „0“DWORD bfOffBits; Offset Color Index
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER{DWORD biSize; Länge des HeadersLONG biWidth; Breite in PixelLONG biHeight; Höhe in Pixel +���� -����WORD biPlanes; Muss 1 sein !WORD biBitCount Bit pro Pixel (1-32)DWORD biCompression; ohne RLE JPEG PNGDWORD biSizeImage; Datei- PuffergrößeLONG biXPelsPerMeter; AusgabeauflösungLONG biYPelsPerMeter;DWORD biClrUsed; 0 oder Anzahl FarbenDWORD biClrImportant; 0 oder wichtige F.
} 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-RotDWORD bV4GreenMask; RGB-GrünDWORD bV4BlueMask; RGB-BlauDWORD bV4AlphaMask; Transparenz FarbeDWORD bV4CSType; Art des Farbraumes (CIEXYZTRIPLE bV4EndPoints; CIE-FarbdreieckDWORD bV4GammaRed; Gamma für jede FarbeDWORD bV4GammaGreen;DWORD bV4GammaBlue;
Ab Windows 95 erweiterter BitmapV4InfoHeader:
DWORD bV5Intent;DWORD bV5ProfileData; Internes oderDWORD bV5ProfileSize; externes FarbprofilDWORD bV5Reserved;} BITMAPV5HEADER, *PBITMAPV5HEADER;
Win 95
Win 98LogColorSpaceCalibrated RGBsRGBlinked profileembedded profileWindows
Ab Windows 98/2000 erweiterter BitmapV5InfoHeader:
Medien-Technik
Windows Bitmap
BitmapFileHeader
BitmapInfoHeader
RGBQuad array
Color-Index array
Dateiaufbau .BMP
typedef struct tagRGBQUAD {BYTE rgbBlue;BYTE rgbGreen;BYTE rgbRed;BYTE rgbReserved; = 0
} RGBQUAD;
Palette
Farbwerte oder Farbindizes zeilenweisevon links nach rechtsvon unten nach oben (Höhe positiv)von oben nach unten (Höhe negativ)ggfs. KomprimiertDoppelwortausrichtung jeder Zeile
Medien-Technik
Windows Bitmap
RGB-Bitmap10*8 Höhe*Breite
Höhe
Ebenen
Bits/Pixel
Zeile 8
Magic number
Dateilänge
Offset
Medien-Technik
Windows BitmapRun-Length EncodingLauflängen-Kodierung
RLE8: für 8-Bit-Bitmaps (256 Graustufen oder 256 Palettenfarben):
Encoded mode: 1. Byte = Wiederholungsfaktor2. Byte = zu wiederholender Farbwert oder -index
Sonderfall: 1. Byte = 00 (Fluchtsymbol, Escape-Zeichen)und 2. Byte = 00 Zeilenendeoder 2. Byte = 01 Ende des Bitmapsoder 2. Byte = 02 Die nächsten 2 Bytes enthalten einen
Offset, ab dem es dann weitergehtoder 2. Byte >= 3: soviele Bytes kommen unverschlüsselt
Jeder Lauf auf Wortgrenze ausgerichtet03 04 05 06 00 03 45 56 67 00 02 78 00 02 05 01 02 78 00 00 09 1E 00 01
04 04 04 06 06 06 06 06 45 56 67 78 78 5 rechts 1 runter 78 78 (eol)
1E 1E 1E 1E 1E 1E 1E 1E 1E 1E eobm
RLE4aufNibbles
Medien-Technik
Codetabelle01:02:03:04:05:06:07:08:09:
Codetabelle initialisierenPräfix = ““
Lese nächstes Zeichen A
Muster = Präfix + A
Muster inCodetabelle ?
Muster in Codetabelle eintragen
LZW-Code von Präfix ausgeben
Präfix = A
Präfix = Muster
LZW-Code von Präfix ausgeben
Ende
LempelZivWalsh
nein
ja
Idee:Silben oderMuster erkennenund codieren
Präfix:
Muster:
Output:Anwendung:GIF und TIFFGrafik-Formate
Medien-Technik
Codetabelle01:A02:B03:C04:D05:06:07:08:09:
Codetabelle initialisierenPräfix = ““
Lese nächstes Zeichen A
Muster = Präfix + A
Muster inCodetabelle ?
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:ABCABCABCABCD
=A
A
Medien-Technik
Codetabelle01:A02:B03:C04:D05:06:07:08:09:
Codetabelle initialisierenPräfix = ““
Lese nächstes Zeichen A
Muster = Präfix + A
Muster inCodetabelle ?
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:ABCABCABCABCD
A
=ABAB
01
=B
B
Medien-Technik
Codetabelle01:A02:B03:C04:D05:AB06:07:08:09:
Codetabelle initialisierenPräfix = ““
Lese nächstes Zeichen A
Muster = Präfix + A
Muster inCodetabelle ?
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:ABCABCABCABCD
B
=BC BC
02
=C
C
Medien-Technik
Codetabelle01:A02:B03:C04:D05:AB06:BC07:08:09:
Codetabelle initialisierenPräfix = ““
Lese nächstes Zeichen A
Muster = Präfix + A
Muster inCodetabelle ?
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 02
Beispiel:ABCABCABCABCD
C
=CACA
03
=A
A
Medien-Technik
Codetabelle01:A02:B03:C04:D05:AB06:BC07:08:09:
Codetabelle initialisierenPräfix = ““
Lese nächstes Zeichen A
Muster = Präfix + A
Muster inCodetabelle ?
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 02
Beispiel:ABCABCABCABCD
C
=ABCA
03
AB
Medien-Technik
Codetabelle01:A02:B03:C04:D05:AB06:BC07:08:09:
Codetabelle initialisierenPräfix = ““
Lese nächstes Zeichen A
Muster = Präfix + A
Muster inCodetabelle ?
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 02
Beispiel:ABCABCABCABCD
C
=CACA
03
=A
A
Medien-Technik
LZW-Komprimierung
AABBCCAABABCCACABBCBCAABABCABCD
hat Codeneu AB=04neu BC=5neu CA=6hat Codeneu ABC=7hat Codeneu CAB=8hat Codeneu BCA=9hat Codehat Codeneu
Ausgabe
0101 0201 02 0301 02 0301 02 03 0401 02 03 0401 02 03 04 0601 02 03 04 0601 02 03 04 06 0501 02 03 04 06 0501 02 03 04 06 0501 02 03 04 06 05 07 04
A B C DA B C D ABA B C D AB BCA B C D AB BC CAA B C D AB BC CAA B C D AB BC CA ABCA B C D AB BC CA ABCA B C D AB BC CA ABC CABA B C D AB BC CA ABC CABA B C D AB BC CA ABC CAB BCAA B C D AB BC CA ABC CAB BCAA B C D AB BC CA ABC CAB BCAA B C D AB BC CA ABC CAB BCA
Erkannte PräfixeAktion
ABCABCABCABCD
Präfixtabelle begrenzen 4096Präfixtabelle kann beibekannter Codierungsstrategierekonstruiert werden
Muster:
Medien-Technik
GIF Graphics Interchange FormatCompuserve, 1987-89 Palettenbilder mit max. 256 Einträgen
Mehrere TeilbilderLZW-Komprimierung (Patent Unisys)Transparenz (1 Stufe)1D-Interlacing
www.cdrom.com/pub/png
Portable Network GraphicsPNG spec 1.0 released as Informational RFC 2083 (IETF)
RGB-BilderGraustufenbilderPalettenbilder
KompressionVariable Transparenz2D-InterlacingFarbraum-Unterstützung
Say „ping“ !
Medien-Technik
PNG
Alpha-Kanal: Maß der DeckkraftRGBAals 4. ByteA=0 durchsichtigA=2Bittiefe-1 opak
Korrekter Schatten auf jedem Hintergrund !
Progressiver Bildaufbau
Alpha-Kanal des GIF-Formatesordnet jedem Pixel das AttributTransparent / nicht transparentzu.
Alpha-Kanal des PNG-Formatesordnet jedem Pixel Deckkraft zu.
Transparenz
Medien-Technik
PNGTransparenz
M
edien-
Techn
ik
PNGTransparenz
HintergrundVordergrundAlpha-Kanal
Medien-Technik
PNGProgressivitätInterlacing
1 6 4 6 2 6 4 67 7 7 7 7 7 7 75 6 5 6 5 6 5 67 7 7 7 7 7 7 73 6 4 6 3 6 4 67 7 7 7 7 7 7 75 6 5 6 5 6 5 67 7 7 7 7 7 7 7
Gif-Interlacing1. Schritt: jede 8. Zeile, Start: 02. Schritt: jede 8. Zeile, ab 43. Schritt: jede 4. Zeile, ab 24. Schritt: alle ungeraden
Reihenfolge desErscheinens derPixel„Adam7“
Medien-Technik
PNG: Dateistruktur
PNG-Signatur: 137 80 78 71 13 10 26 10 (dezimal) \211 P N G \r \n \032 \n
„Chunks“
IEND
I H D RLänge Typ Daten CRC
Alle Bytes in Network Byte Order (Little Endian)Alle Integer-Werte 31 Bit, höchstes 0
Medien-Technik
PNG: Chunks
IHDR
Width: 4 bytesHeight: 4 bytesBit depth: 1 byteColor type: 1 byteCompression method: 1 byteFilter method: 1 byteInterlace method: 1 byte
Color type1 Bild hat Palette2 Bild hat Farbe4 Bild hat Alphakanalsinnvolle Kombinationen0,2,3,4,6
Bittiefen:1,2,4,8,16 für Graustufen1,2,4,8 für Palettengröße8,16 für RGB, RGBA, Grau+A
Filter:verlustfreie Transformation pro Zeilez.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 256 8 oder 16-Bit tiefe RGB-Werte
gAMA:sample = lightout^gammasample, lightout [0..1]4 Byte Gamma-Wert, interpretiertals Gamma*100.000Beispiel: 1/2.2 = 45455
cHRM: (Chroma)Weißpunkt (x,y) nach CIERot (x,y)Grün (x,y)Blau (x,y)x,y als 4 Byte Festkommazahlenmit 5 Dezimalen
Medien-Technik
PNG: Chunks
sRGB: (1 Byte)0: Perceptual1: Relative colorimetric2: Saturation3: Absolute colorimetric
tRNS:Für einfache Transparenz,besteht aus (je nach Bildart)
■ einem Farbwert für Truecolor-Bilder■ einem Grauwert für Graufstufenbilder■ einer Alpha-Palette, die jeder
Palettenfarbe einen Alpha-Wertzuordnet.
Weitere ChunkspHYs (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 JackelStudiengang ComputervisualistikInstitut für InformatikUniversität Koblenz-LandauRheinau 156075 Koblenz
© Manfred JackelE-Mail: [email protected]: www.uni-koblenz.de/~jkl
mtech.uni-koblenz.de
Literatur zu diesem Kapitel Hyperlinks zu diesem Kapitelhttp://www.libpng.org/pub/png/
Grafik-Quellen