Applications for Multimedia Files

From LNTwww


Bilder im BMP–Format (1)


Eines der ältesten Bildformate ist das so genannte Bitmap–Format. Entsprechende Dateien werden mit der Endung „bmp” gekennzeichnet. Wesentliche Eigenschaften von BMP–Bildern sind:

  • Unter einer Bitmap versteht man eine Matrix von Bildpunkten, deren einzelne Elemente auch als Pixel (Picture Elements) bezeichnet werden. Abgespeichert werden die Bildpunkte zeilenweise, jeweils von rechts unten nach links oben.
  • Jedes Pixel bekommt noch einen RGB–Farbwert aus den additiven Grundfarben Rot, Grün und Blau zugewiesen. Je größer der Farbwert sein kann, desto feiner können die darzustellenden Farben abgestuft werden.
  • Die Farbtiefe eines Bildes wird in Bits per Pixel (BPP) angegeben. Gängig sind Farbtiefen von 1 (Schwarzweißbild), 4, 8 und 24 (Echtfarbbild, True Color).
  • Da die meisten Bilder nicht das gesamte Farbenspektrum ausnutzen, kann man in jeder Bitmap eine spezifische Zuordnung in Form einer Farbtabelle definieren. So lassen sich auch mit relativ geringer Farbtiefe (bis zu 8 Bit) die Bilder mit guter Farbqualität darstellen.

Hexdump einer BMP-Datei

Eine jede BMP–Datei besteht aus drei Teilblöcken, wie die obere Grafik beispielhaft verdeutlicht:

  • dem Dateikopf (14 Byte),
  • dem Informationsblock (mindestens 40 Byte), und anschließend
  • dem Bilddatenblock

Die Erklärung der einzelnen Blöcke folgt auf der nächsten Seite.

Bilder im BMP–Format (2)


Nachfolgend sehen Sie die ersten 160 Byte der Datei „LNTprofs.bmp”. Gelb hinterlegt sind sowohl der Dateikopf (in Hexadezimaldarstellung von 0x00 bis 0x0D) als auch der Bilddatenbereich (ab 0x36). Nicht hinterlegt ist der 40 Byte–Informationsblock (von 0x0E bis 0x35).

Hexdump der Datei LNTprofs.bmp

Der Dateikopf beinhaltet folgende Informationen (der Präfix 0x zeigt die Hexadezimaldarstellung an):

  • 0x00 ... 0x01 (2 Byte)   BMP–Kennung: 0x 42 4D   ⇒   „BM”,
  • 0x02 ... 0x05 (4 Byte)   Dateigröße in Byte: 0x 02 DE 98   ⇒   188056d,
  • 0x06 ... 0x09 (5 Byte)   reserviert (muss immer mit Nullen belegt sein),
  • 0x0A ... 0x0D (4 Byte) Offset (Beginn der Bilddaten): 0x 00 00 00 36   ⇒   54d.

Hinweis: Diese Angaben gelten allerdings nur für den Intel–Prozessor, der nach der so genannten Little–Endian–Byteanordnung vom niederwertigsten (LSB) zum höchstwertigen (MSB) Byte liest. Die Anordnung 98 DE 02 00 der Bytes 2, 3, 4 und 5 ist somit als 0x 00 02 DE 98 zu interpretieren, was der Dezimalzahl 188056 entspricht.

Der 40 Byte–Informationsblock beinhaltet folgende Werte:

  • 0x0E ... 0x11 (4 Byte)   Länge des Info–Blocks:   0x 28   ⇒   40d,
  • 0x12 ... 0x15 (4 Byte)   Bildbreite in Pixel:   0x FA   ⇒   250d,
  • 0x16 ... 0x19 (4 Byte)   Bildhöhe in Pixel:    0x FA   ⇒   250d,
  • 0x1A ... 0x1B (2 Byte)  Anzahl der Farbebenen (immer auf 1 gesetzt),
  • 0x1C ... 0x1D (2 Byte)  Bits per Pixel (BPP):   0x0018   ⇒   24d,
  • 0x1E ... 0x21 (4 Byte)   Art der Datenkomprimierung,
  • 0x22 ... 0x25 (4 Byte)   Größe der Bitmap in Byte:   0x 02 DE 62   ⇒   188002d,
  • 0x26 ... 0x29 (4 Byte)   Horizontalauflösung in Pixel/Meter:   0x 26 70   ⇒   9840d,
  • 0x2A ... 0x2D (4 Byte)  Vertikalauflösung in Pixel/Meter:       0x 26 70   ⇒   9840d,
  • 0x2E ... 0x31 (4 Byte)   Anzahl der verwendeten Farben,
  • 0x32 ... 0x35 (4 Byte)   Anzahl der wichtigen Farben.

Anschließend beginnt mit 0x 43 2A 23 der Bilddatenbereich (im Beispiel jeweils drei Byte pro Pixel für R – G – B). Da auch hier (beim Intel–Prozessor) die Little–Endian–Byteanordnung gilt, bezeichnen diese Einträge die Farbwerte R = 23, G = 2A, B = 43 (jeweils hexadezimal).

Die Bilder auf der nächsten Seite machen deutlich, dass bereits wenige Fehler in Dateikopf (14 Byte) oder Informationsblock (40 Byte) genügen, um ein Bild völlig unbrauchbar zu machen. Der Header einer Multimedia–Datei sollte deshalb besonders geschützt werden. Bei BMP umfasst dieser Header 54 Byte.

Übertragungsfehler im Dateikopf und Informationsblock


Mit einer Bilderserie sollen die Auswirkungen von Übertragungsfehlern innerhalb von Dateikopf (0x00–0x0D) und Informationsblock (0x0E–0x35) verdeutlicht werden. Die folgende Abbildung zeigt den Hexadezimal–Dump der verfälschten Datei im Vergleich zur Originaldatei.

Hexdumps der verfälschten Datei und der Originaldatei

Unten sehen Sie die Bilder, die sich ergeben, wenn die fünf Fehlerblöcke sukzessive korrigiert werden:

  • Die gegebene Datei lässt sich gar nicht öffnen. Korrigiert man die beiden ersten Byte (violette Markierung) in 0x 42 4D, so ergibt sich das linke obere Bild (einheitlich grau).
  • Korrigiert man die Bildbreite und Bildhöhe von 197 x 125 Pixel auf 250 x 250 Pixel (grüne Markierung), so ergibt sich das mittlere Bild oben (bereits mit richtiger Größe).
  • Zum rechten oberen Bild kommt man durch Berichtigung der Farbtiefe von 8 BPP auf 24 BPP (hexadezimal 18, blaue Markierung).
  • Durch Korrektur des roten Fehlerblocks im Bereich 0x0A ... 0x0D (Offset) erhält man schließlich das Originalbild „LNTprofs.bmp”.
Auswirkungen von Fehlern im BMP–Header

BMP– und WAV–Dateien nach BSC–Verfälschung


Die folgende Bilderserie zeigt den Einfluss von statistisch unabhängigen Fehlern (BSC–Modell) mit den Fehlerwahrscheinlichkeiten p = 10–3, p = 10–2 und p = 10–1. Der Dateiheader ist jeweils fehlerfrei.

Einfluss von BSC–Fehlern auf BMP–Dateien

Bei der oberen Reihe wurde vom Farbbild „LNTprofs.bmp” mit 24 BPP ausgegangen; der eigentliche Bildbereich umfasst 250 x 250 x 24 = 1.5 · 106 Bit. Die untere Reihe basiert auf einem Graustufenbild mit 8 BPP. Die Datei ist somit etwa um den Faktor 3 kleiner als die Farbdatei. Man erkennt:

  • Die Fehlerwahrscheinlichkeit p = 10–3 ist noch nicht allzu störend. Beim Farbbild sind damit etwa 1500 Bit und auch vergleichsweise ebensoviele Pixel verfälscht (statistische Aussagen). Beim Graustufenbild sind es wegen der kleineren Datei nur etwa 500 Bitfehler.
  • Subjektiv ist der störende Eindruck von Bitfehlern beim Graustufenbild trotz kleinerer Bitfehlerzahl etwa genau so wie beim Farbbild, da sich bei letzterem manche Bitfehler nur in einer marginalen Farbveränderung auswirken.

Nachfolgend finden Sie das mit dem BSC–Modell verfälschte Audio „Stille.wav” mit unterschiedlichen Fehlerwahrscheinlichkeiten (BER: Bit Error Rate). Der besonders zu schützende Dateiheader umfasst bei WAV–Dateien 43 Byte. Die Länge der Audios ist ca. 10 Sekunden.

Audio Please add link - Total 5

BMP– und WAV–Dateien mit Bündelfehlern


Das linke Bild (A) zeigt die Originaldatei „Weiß.bmp” mit ausschließlich weißen Pixeln. Das Ergebnis ist unabhängig von der Farbtiefe, doch ist die Datei „Weiß1.bmp” (1 BMP, 4046 Byte) nahezu um den Faktor 24 kleiner als die Datei „Weiß24.bmp” (24 BPP, 90456 Byte). Nahezu deshalb, weil der Header bei beiden Dateien gleich groß ist und in der 1 BPP–Datei ebenfalls eine Farbtabelle mit enthalten ist.

Einfluss von Bündelfehlern auf BMP–Dateien

Bei den vier rechten Bildern sind jeweils Übertragungsfehler mit der (mittleren) Fehlerwahrscheinlichkeit pM = 0.01 berücksichtigt. Man erkennt:

  • Die Fehler im Bild (B) sind statistisch unabhängig und wurden gemäß dem BSC–Modell generiert. Sie sind zufällig über die gesamte Bildfläche verteilt.
  • Dagegen zeigen die Bilder (C) und (D) Bündelfehlerstrukturen (GE–Modell) mit unterschiedlichen Fehlerkorrelationsdauern DK ≈ 8 bzw. DK ≈ 95. Man erkennt, dass BMP–Bilder zeilenweise abgespeichert werden.
  • Bei den 1 BPP–Bildern (B), (C) und (D) ist im statistischen Mittel jedes 100. Pixel verfälscht. Bei der 24 BPP–Datei (E) gibt es demgegenüber trotz gleicher Fehlerwahrscheinlichkeit pM = 1% mehr Pixelverfälschungen.
  • Ein Vergleich der Bilder (D) und (E) zeigt die unterschiedlichen Korrelationsdauern bezogen auf Pixel (≈ 95 gegenüber ≈ 4). Außerdem erkennt man, dass im Bild (E) die Fehlerpixel farbig sind.

Die nachfolgenden Audios sollen den Einfluss von statistisch unabhängigen Fehlern bzw. Bündelfehlern auf WAV–Dateien zeigen. Zunächst gehen wir von der Datei „Stille.wav” aus.

Audio Please add link - Total 3

Man erkennt, dass eine kurze Fehlerkorrelationsdauer des GE–Modells im Ergebnis sich nicht allzu sehr von statistisch unabhängigen Fehlern unterscheidet, da jeder Abtastwert mit 16 Bit dargestellt wird. Auch beim nachfolgenden kurzen Musikstück beträgt die mittlere Fehlerwahrscheinlichkeit jeweils 0.1%.

Audio Please add link - Total 3

Aufgaben


A5.8 BMP-Format

Zusatzaufgaben:5.8 Verfälschung von BMP-Bildern