Difference between revisions of "Digital Signal Transmission/Applications for Multimedia Files"

From LNTwww
Line 40: Line 40:
 
*0x0A ... 0x0D (4 bytes)&nbsp;offset (start of image data): 0x 00 00 00 36&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;54d.<br><br>
 
*0x0A ... 0x0D (4 bytes)&nbsp;offset (start of image data): 0x 00 00 00 36&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;54d.<br><br>
  
<i>Note:</i> &nbsp;Diese Angaben gelten allerdings nur für den Intel&ndash;Prozessor, der nach der so genannten &nbsp;<i>Little&ndash;Endian&ndash;Byteanordnung</i>&nbsp; vom niederwertigsten Byte &nbsp;(englisch: &nbsp;''Least Significant Byte'', LSB)&nbsp; zum höchstwertigen Byte &nbsp;(englisch:&nbsp; ''Most Significant Byte'', MSB)&nbsp; Byte liest. Die Anordnung "98 DE 02 00" der Bytes 2, ..., 5 ist somit als "0x 00 02 DE 98" zu interpretieren, was der Dezimalzahl "188056" entspricht.<br>
+
<i>Note:</i> &nbsp;However, these specifications only apply to the Intel processor, which reads according to the so-called &nbsp;<i>little&ndash;endian byte arrangement</i>&nbsp; from the least significant byte &nbsp;(LSB)&nbsp; to the most significant byte &nbsp;(MSB).&nbsp; The arrangement "98 DE 02 00" of bytes 2, ..., 5 is thus to be interpreted as "0x 00 02 DE 98", which corresponds to the decimal number "188056".<br>
  
Der '''40 Byte&ndash;Informationsblock''' beinhaltet folgende Werte (Bytes mit dem Inhalt "00" sind hier nicht angegeben):
+
The '''40 byte information block''' contains the following values (bytes with the content "00" are not specified here):
*0x0E ... 0x11 (4 Byte)&nbsp;&nbsp;&nbsp;Länge des Info&ndash;Blocks:&nbsp;&nbsp;&nbsp;0x 28&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;40d,<br>
+
*0x0E ... 0x11 (4 bytes)&nbsp;&nbsp;&nbsp;Length of info block:&nbsp;&nbsp;&nbsp;0x 28&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;40d,<br>
  
*0x12 ... 0x15 (4 Byte)&nbsp;&nbsp;&nbsp;Bildbreite in Pixel:&nbsp;&nbsp;&nbsp;0x FA&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;250d,<br>
+
*0x12 ... 0x15 (4 bytes)&nbsp;&nbsp;&nbsp;Image width in pixels:&nbsp;&nbsp;&nbsp;0x FA&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;250d,<br>
  
*0x16 ... 0x19 (4 Byte)&nbsp;&nbsp;&nbsp;Bildhöhe in Pixel: &nbsp;&nbsp;&nbsp;0x FA&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;250d,<br>
+
*0x16 ... 0x19 (4 bytes)&nbsp;&nbsp;&nbsp;Image height in pixels: &nbsp;&nbsp;&nbsp;0x FA&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;250d,<br>
  
*0x1A ... 0x1B (2 Byte)&nbsp;&nbsp;Anzahl der Farbebenen (immer auf 1 gesetzt),<br>
+
*0x1A ... 0x1B (2 bytes)&nbsp;&nbsp;Number of color planes (always set to 1),<br>
  
*0x1C ... 0x1D (2 Byte)&nbsp;&nbsp;Bits per Pixel (BPP):&nbsp;&nbsp;&nbsp;0x0018&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;24d,<br>
+
*0x1C ... 0x1D (2 bytes)&nbsp;&nbsp;Bits per pixel (BPP):&nbsp;&nbsp;&nbsp;0x0018&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;24d,<br>
  
*0x1E ... 0x21 (4 Byte)&nbsp;&nbsp;&nbsp;Art der Datenkomprimierung,<br>
+
*0x1E ... 0x21 (4 bytes)&nbsp;&nbsp;&nbsp;Type of data compression,<br>
  
*0x22 ... 0x25 (4 Byte)&nbsp;&nbsp;&nbsp;Größe der Bitmap in Byte:&nbsp;&nbsp;&nbsp;0x 02 DE 62&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;188002d,<br>
+
*0x22 ... 0x25 (4 bytes)&nbsp;&nbsp;&nbsp;Size of bitmap in bytes:&nbsp;&nbsp;&nbsp;0x 02 DE 62&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;188002d,<br>
  
*0x26 ... 0x29 (4 Byte)&nbsp;&nbsp;&nbsp;Horizontalauflösung in Pixel/Meter:&nbsp;&nbsp;&nbsp;0x 26 70&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;9840d,<br>
+
*0x26 ... 0x29 (4 Byte)&nbsp;&nbsp;&nbsp;Horizontal resolution in pixels/meter:&nbsp;&nbsp;&nbsp;0x 26 70&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;9840d,<br>
  
*0x2A ... 0x2D (4 Byte)&nbsp;&nbsp;Vertikalauflösung in Pixel/Meter: &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0x 26 70&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;9840d,<br>
+
*0x2A ... 0x2D (4 Byte)&nbsp;&nbsp;Vertical resolution in pixels/meter: &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0x 26 70&nbsp;&nbsp;&nbsp;&#8658;&nbsp;&nbsp;&nbsp;9840d,<br>
  
*0x2E ... 0x31 (4 Byte)&nbsp;&nbsp;&nbsp;Anzahl der verwendeten Farben,<br>
+
*0x2E ... 0x31 (4 Byte)&nbsp;&nbsp;&nbsp;Number of colors used,<br>
  
*0x32 ... 0x35 (4 Byte)&nbsp;&nbsp;&nbsp;Anzahl der wichtigen Farben.<br><br>
+
*0x32 ... 0x35 (4 Byte)&nbsp;&nbsp;&nbsp;Number of important colors.<br><br>
  
Anschließend beginnt mit "0x 43 2A 23" der '''Bilddatenbereich''' (im Beispiel jeweils drei Byte pro Pixel für R &ndash; G &ndash; B). Da auch hier (beim Intel&ndash;Prozessor) die <i>Little&ndash;Endian&ndash;Byteanordnung</i> gilt, bezeichnen diese Einträge die Farbwerte&nbsp; $\rm R = 23$,&nbsp; $\rm G = 2A$,&nbsp; $\rm B = 43$&nbsp; (jeweils hexadezimal) bzw. &nbsp; $\rm R = 35$,&nbsp; $\rm G = 42$,&nbsp; $\rm B = 67$&nbsp; (dezimal) .<br>
+
Then the '''image data area''' begins with "0x 43 2A 23" (in the example three bytes per pixel each for R &ndash; G &ndash; B). Since also here (with the Intel processor) the <i>little&ndash;endian byte order</i> applies, these entries designate the color values&nbsp; $\rm R = 23$,&nbsp; $\rm G = 2A$,&nbsp; $\rm B = 43$&nbsp; (in each case hexadecimal) or &nbsp; $\rm R = 35$,&nbsp; $\rm G = 42$,&nbsp; $\rm B = 67$&nbsp; (decimal) .<br>
  
Die Bilder auf der nächsten Seite machen deutlich, dass bereits wenige Fehler in Dateikopf ($14$&nbsp; Byte) oder Informationsblock ($40$&nbsp; Byte) genügen, um ein Bild völlig unbrauchbar zu machen. Der Header einer Multimedia&ndash;Datei sollte deshalb besonders geschützt werden. Bei BMP umfasst dieser Header indgesamt $54$&nbsp; Byte.<br>
+
The images in the next section make it clear that even a few errors in the file header ($14$&nbsp; bytes) or information block ($40$&nbsp; bytes) are enough to render an image completely unusable. The header of a multimedia file should therefore be specially protected. In the case of BMP, this header comprises a total of $54$&nbsp; bytes.<br>
  
== Übertragungsfehler im Dateikopf und Informationsblock ==
+
== Transmission errors in the file header and information block ==
 
<br>
 
<br>
Mit einer Bilderserie sollen die Auswirkungen von Übertragungsfehlern innerhalb von Dateikopf (0x00 ... 0x0D) und Informationsblock (0x0E ... 0x35) verdeutlicht werden. Die linke Abbildung zeigt den Hexadezimal&ndash;Dump der verfälschten Datei im Vergleich zur Originaldatei (rechts).<br>
+
A series of images is used to illustrate the effects of transmission errors within the file header (0x00 ... 0x0D) and information block (0x0E ... 0x35). The left figure shows the hexadecimal dump of the falsified file compared to the original file (right).<br>
  
[[File:EN_Dig_T_5_4_S2a_v2.png|center|frame|Hexdumps der verfälschten Datei und der Originaldatei|class=fit]]
+
[[File:EN_Dig_T_5_4_S2a_v2.png|center|frame|Hexdumps of the falsified file and the original file|class=fit]]
  
Nachfolgend sehen Sie die Bilder, die sich ergeben, wenn die fünf Fehlerblöcke sukzessive korrigiert werden:
+
Below you can see the images that result when the five error blocks are successively corrected:
[[File:EN_Dig_T_5_4_S2b.png|right|frame|Auswirkungen von Fehlern im BMP–Header|class=fit]]
+
[[File:EN_Dig_T_5_4_S2b.png|right|frame|Effects of errors in the BMP header|class=fit]]
  
*Die gegebene Datei lässt sich gar nicht öffnen. Korrigiert man die beiden ersten Byte (violette Markierung) von "0x 40 00" in "0x 42 4D", so ergibt sich das linke obere, einheitlich graue Bild.<br>
+
*The given file cannot be opened at all. If we correct the first two bytes (purple marking) from "0x 40 00" to "0x 42 4D", we get the upper left uniform gray image.<br>
  
*Korrigiert man die Bildbreite von "0x C5" in "0x FA" &nbsp; &#8658; &nbsp; 250d und die Bildhöhe von von "0x 7D" in "0x FA" &nbsp; &#8658; &nbsp;  250d (grüne Markierung), so ergibt sich das mittlere obere Bild bereits mit der richtigen Größe (250 x 250 Pixel), aber immer noch mit grauem Inhalt.<br>
+
*Correcting the image width from "0x C5" to "0x FA" &nbsp; &#8658; &nbsp; 250d and the image height from "0x 7D" to "0x FA" &nbsp; &#8658; &nbsp;  250d (green mark) results in the middle upper image already with the correct size (250 x 250 pixels), but still with gray content.<br>
  
*Zum rechten oberen Bild kommt man durch Berichtigung der Farbtiefe (''Bits per Pixel'', BPP) von "0x 08" &nbsp; &#8658; &nbsp; 8d auf "0x 18" &nbsp; &#8658; &nbsp; 24d (blaue Markierung). Danach erkennt man teilweise schon Inhalte, aber mit schlechter Qualität.<br>
+
*The upper right image can be reached by correcting the color depth (''bits per pixel'', BPP) from "0x 08" &nbsp; &#8658; &nbsp; 8d to "0x 18" &nbsp; &#8658; &nbsp; 24d (blue mark). After that, one can already partially recognize content, but with poor quality.<br>
  
*Durch Korrektur des roten Fehlerblocks im Bereich 0x0A ... 0x0D (Offset) von "0x 36 01" &nbsp; in "0x 36 00" &nbsp; erhält man schließlich das Originalbild "LNTprofs.bmp".
+
*By correcting the red error block in the range 0x0A ... 0x0D (offset) from "0x 36 01" &nbsp; to "0x 36 00" &nbsp; you finally get the original image "LNTprofs.bmp".
 
<br clear=all>
 
<br clear=all>
== BMP–Dateien nach BSC–Verfälschung==
+
== BMP files after BSC falsification==
 
<br>
 
<br>
Die folgende Bilderserie zeigt den Einfluss von statistisch unabhängigen Fehlern (BSC&ndash;Modell) mit folgenden (Bit&ndash;)Fehlerwahrscheinlichkeiten:
+
The following series of images shows the influence of statistically independent errors (BSC model) with the following (bit) error probabilities:
 
:$$p = 10^{-3}, \ p = 10^{-2}, \ p = 10^{-1}.$$  
 
:$$p = 10^{-3}, \ p = 10^{-2}, \ p = 10^{-1}.$$  
[[File:Dig_T_5_4_S3_version2.png|right|frame|Einfluss von BSC–Fehlern auf BMP–Dateien, oben mit 24 BPP, unten mit 8 BPP|class=fit]]
+
[[File:Dig_T_5_4_S3_version2.png|right|frame|Influence of BSC errors on BMP files, above with 24 BPP, below with 8 BPP|class=fit]]
  
Der Dateiheader ist jeweils fehlerfrei.<br>
+
The file header is error-free in each case.<br>
  
*Bei der oberen Reihe wurde vom Farbbild "LNTprofs.bmp" mit&nbsp; $\rm 24$&nbsp; Bits per Pixel ausgegangen; der eigentliche Bildbereich umfasst&nbsp; $250 \cdot 250 \cdot  24 = 1.5 \cdot 10^6$ Bit.  
+
*The upper row is based on the color image "LNTprofs.bmp" with&nbsp; $\rm 24$&nbsp; bits per pixel; the actual image area is&nbsp; $250 \cdot 250 \cdot  24 = 1.5 \cdot 10^6$ bits.
*Die untere Reihe basiert auf einem Graustufenbild mit&nbsp; $\rm 8$&nbsp; Bits per Pixel. Die Datei ist somit etwa um den Faktor&nbsp; $3$&nbsp; kleiner als die Farbdatei.
+
*The bottom row is based on a grayscale image with&nbsp; $\rm 8$&nbsp; bits per pixel. The file is thus about a factor of&nbsp; $3$&nbsp; smaller than the color file.
  
  
Man erkennt aus diesen Darstellungen:
+
One recognizes from these representations:
*Die Fehlerwahrscheinlichkeit&nbsp; $p = 10^{-3}$&nbsp; ist noch nicht allzu störend. Beim Farbbild sind damit etwa&nbsp; $1500$&nbsp; Bit und auch vergleichsweise ebensoviele Pixel verfälscht (statistische Aussagen). Beim Graustufenbild gibt es wegen der kleineren Datei nur etwa&nbsp; $500$&nbsp; Bitfehler.<br>
+
*The error probability&nbsp; $p = 10^{-3}$&nbsp; is still not too disturbing. With the color image, about&nbsp; $1500$&nbsp; bits and also comparatively as many pixels are falsified (statistical statements). With the grayscale image, there are only about&nbsp; $500$&nbsp; bit errors because of the smaller file.<br>
  
*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.<br>
+
*Subjectively, the disturbing impression of bit errors with the grayscale image is about the same as with the color image, despite the smaller number of bit errors, since with the latter some bit errors only have an effect in a marginal color change.<br>
 
<br clear=all>
 
<br clear=all>
== BMP–Dateien mit Bündelfehlern ==
+
== BMP files with burst errors ==
 
<br>
 
<br>
Betrachten wir nun anhand der folgenden Grafik den Einfluss von Bündelfehlern auf BMP–Dateien.  
+
Let's now look at the influence of burst errors on BMP files using the following graphic.
  
*Das linke Bild &nbsp;$\rm A$&nbsp; zeigt die Originaldatei "Weiß.bmp" mit ausschließlich weißen Pixeln.  
+
*The left image &nbsp;$\rm A$&nbsp; shows the original file "Weiß.bmp" with only white pixels.
*Das Ergebnis ist somit unabhängig von der Farbtiefe.  
+
*The result is therefore independent of the color depth.
*Die Datei "Weiß1.bmp" (1 BPP, 4046 Byte) ist jedoch nahezu um den Faktor&nbsp; $24$&nbsp; kleiner als die Datei "Weiß24.bmp" (24 BPP, 90456 Byte).  
+
*However, the file "Weiß1.bmp" (1 BPP, 4046 bytes) is almost by a factor of&nbsp; $24$&nbsp; smaller than the file "Weiß24.bmp" (24 BPP, 90456 bytes).  
*Nahezu deshalb, weil der Header bei beiden Dateien gleich groß ist und in der &nbsp;$\text{1 BPP}$&ndash;Datei ebenfalls eine Farbtabelle mit enthalten ist.<br>
+
*Almost because the header is the same size for both files and the &nbsp;$\text{1 BPP}$ file also contains a color table.<br>
  
 
<br clear=all>
 
<br clear=all>
Bei den vier rechten Bildern sind jeweils Übertragungsfehler mit der (mittleren) Fehlerwahrscheinlichkeit&nbsp; $p_{\rm M}  = 1\%$&nbsp; berücksichtigt. Man erkennt:
+
For the four right images, transmission errors with the (average) error probability&nbsp; $p_{\rm M}  = 1\%$&nbsp; are considered in each case. One recognizes:
[[File:EN_Dig_T_5_4_S4.png|right|frame|Einfluss von Bündelfehlern auf BMP–Dateien|class=fit]]
+
[[File:EN_Dig_T_5_4_S4.png|right|frame|Influence of burst errors on BMP files|class=fit]]
  
*Die Fehler im Bild&nbsp; $\rm B$&nbsp; sind statistisch unabhängig und wurden gemäß dem&nbsp; [[Digital_Signal_Transmission/Binary_Symmetric_Channel_(BSC)|BSC&ndash;Modell]]&nbsp; generiert. Sie sind zufällig über die gesamte Bildfläche verteilt.<br>
+
*The errors in image&nbsp; $\rm B$&nbsp; are statistically independent and were generated according to the&nbsp; [[Digital_Signal_Transmission/Binary_Symmetric_Channel_(BSC)|"BSC model"]].&nbsp; They are randomly distributed over the whole image area.<br>
  
*Dagegen zeigen die Bilder&nbsp; $\rm C$&nbsp; und&nbsp; $\rm D$&nbsp; Bündelfehlerstrukturen nach dem&nbsp; [[Digital_Signal_Transmission/Bündelfehlerkanäle#Kanalmodell_nach_Gilbert.E2.80.93Elliott|GE&ndash;Modell]]&nbsp; mit  unterschiedlichen Fehlerkorrelationsdauern&nbsp; $D_{\rm K} \approx 8$&nbsp; bzw. &nbsp;$D_{\rm K} \approx 95$. Man erkennt aus der Fehlerstruktur, dass BMP&ndash;Bilder zeilenweise abgespeichert werden.<br>
+
*In contrast, images&nbsp; $\rm C$&nbsp; and&nbsp; $\rm D$&nbsp; show burst error structures according to the&nbsp; [[Digital_Signal_Transmission/Burst_Error_Channels#Channel_model_according_to_Gilbert-Elliott|"GE model"]]&nbsp; with different error correlation durations&nbsp; $D_{\rm K} \approx 8$&nbsp; and &nbsp;$D_{\rm K} \approx 95$. It can be seen from the error structure that BMP images are saved line by line.<br>
  
*Bei den Schwarz&ndash;Weiß&ndash;Bildern  (1 BPP) &nbsp;$\rm B$,&nbsp; $\rm C$&nbsp; und&nbsp; $\rm D$&nbsp; ist im statistischen Mittel jedes 100. Pixel verfälscht. Beim Bild&nbsp; $\rm E$&nbsp; mit 24 BPP (''True Color'') gibt es demgegenüber trotz gleicher mittlerer Fehlerwahrscheinlichkeit&nbsp; $p_{\rm M}  = 1\%$&nbsp; mehr Pixelverfälschungen.<br>
+
*For the black and white images (1 BPP) &nbsp;$\rm B$,&nbsp; $\rm C$&nbsp; and&nbsp; $\rm D$,&nbsp; every 100th pixel is falsified on statistical average. In contrast, image&nbsp; $\rm E$&nbsp; with 24 BPP (''True Color'') has more pixel falsifications despite the same average error probability&nbsp; $p_{\rm M}  = 1\%$.&nbsp; <br>
  
*Ein Vergleich der Bilder&nbsp; $\rm D$&nbsp; und&nbsp; $\rm E$&nbsp; zeigt die unterschiedlichen Korrelationsdauern bezogen auf Pixel&nbsp; $(D_{\rm K} \approx 95$&nbsp; gegenüber &nbsp;$D_{\rm K} \approx 95/24 \approx 4)$. Außerdem erkennt man, dass im Bild&nbsp; $\rm E$&nbsp; die Fehlerpixel farbig sind.<br><br>
+
*A comparison of images&nbsp; $\rm D$&nbsp; and&nbsp; $\rm E$&nbsp; shows the different correlation durations related to pixels&nbsp; $(D_{\rm K} \approx 95$&nbsp; versus &nbsp;$D_{\rm K} \approx 95/24 \approx 4)$. It can also be seen that in image&nbsp; $\rm E$&nbsp; the error pixels are colored.<br><br>
  
== Auswirkungen von Übertragungsfehlern auf Audios ==
+
== Effects of transfer errors on audios ==
 
<br>
 
<br>
Das [https://de.wikipedia.org/wiki/RIFF_WAVE WAVE-Dateiformat] ist ein Containerformat zur digitalen Speicherung von Audiodaten, das auf dem von Microsoft für Windows definierten ''Resource Interchange File Format'' (RIFF) aufsetzt. Der besonders zu schützende Dateiheader umfasst bei WAVE&ndash;Dateien &nbsp;$43$ Byte.
+
The [https://en.wikipedia.org/wiki/WAV "WAVE file format"] is a container format for digital storage of audio data, based on the ''Resource Interchange File Format'' (RIFF) defined by Microsoft for Windows. The file header of WAVE files, which requires special protection, comprises &nbsp;$43$ bytes.
  
Enthalten sind meist sogenannte PCM-Rohdaten, also eine zeit- und wertdiskrete Darstellung des zeitlichen Verlaufs eines Signals. Die Qualität des aufgezeichneten Klangs hängt dann von zwei Werten ab, nämlich
+
It usually contains so-called PCM raw data, i.e. a time- and value-discrete representation of the temporal course of a signal. The quality of the recorded sound then depends on two values, namely
*der Abtastrate (Anzahl der Abtastwerte pro Zeiteinheit),  
+
*the sampling rate (number of samples per time unit),
*der Auflösung (Bit-Tiefe).
+
*the resolution (bit depth).
  
  
Wir demonstrieren zunächst den Einfluss von Übertragungsfehlern auf die Audiodatei  "Stille.wav" mit ca. 10 Sekunden Dauer. Das heißt: Alles, was Sie hören, sind Übertragungsfehler.
+
We will first demonstrate the influence of transmission errors on the audio file "Stille.wav" with a duration of about 10 seconds. That means: All you hear are transmission errors.
  
  

Revision as of 16:53, 30 September 2022



Images in BMP format


One of the oldest image formats is the so-called  bitmap format. Corresponding files are marked with the extension "bmp".

Essential properties of BMP images are:

  • A bitmap is a matrix of pixels, whose individual elements are also called pixels (Picture Elements ). The pixels are stored line by line, from bottom right to top left.
  • Each pixel is also assigned an RGB color value from the additive primary colors  "$\rm r$ed",  "$\rm g$reen"  and  "$\rm b$lue".   The larger the color value can be, the finer the colors to be displayed can be graded.
  • The color depth of an image is specified in  bits per pixel  (BPP). Common color depths are  $1$  (black and white image),  $4$,  $8$  and  $24$  (true color image).
  • Since most images do not use the entire color spectrum, it is possible to define a specific assignment in each bitmap in the form of a color table. This way, even with relatively low color depth (up to eight bits), the images can be displayed with good color quality.


Hexdump of a BMP file

Each BMP file consists of three sub-blocks, as the adjacent graphic illustrates:

  • the file header (14 bytes),
  • the information block (at least 40 bytes), and finally
  • the image data block.

Shown are the first 160 bytes of the file "LNTprofs.bmp". The file header (in hexadecimal representation from 0x00 to 0x0D) as well as the image data area (from 0x36) are highlighted in yellow. Not highlighted is the 40 byte information block (from 0x0E to 0x35).

The file header contains the following information (the prefix "0x" indicates the hexadecimal representation and the trailing "d" indicates the decimal representation):

  • 0x00 ... 0x01 (2 bytes)   BMP identifier: 0x 42 4D   ⇒   "BM",
  • 0x02 ... 0x05 (4 bytes)   file size in bytes: 0x 02 DE 98   ⇒   188056d,
  • 0x06 ... 0x09 (5 bytes)   reserved (must always be filled with zeros),
  • 0x0A ... 0x0D (4 bytes) offset (start of image data): 0x 00 00 00 36   ⇒   54d.

Note:  However, these specifications only apply to the Intel processor, which reads according to the so-called  little–endian byte arrangement  from the least significant byte  (LSB)  to the most significant byte  (MSB).  The arrangement "98 DE 02 00" of bytes 2, ..., 5 is thus to be interpreted as "0x 00 02 DE 98", which corresponds to the decimal number "188056".

The 40 byte information block contains the following values (bytes with the content "00" are not specified here):

  • 0x0E ... 0x11 (4 bytes)   Length of info block:   0x 28   ⇒   40d,
  • 0x12 ... 0x15 (4 bytes)   Image width in pixels:   0x FA   ⇒   250d,
  • 0x16 ... 0x19 (4 bytes)   Image height in pixels:    0x FA   ⇒   250d,
  • 0x1A ... 0x1B (2 bytes)  Number of color planes (always set to 1),
  • 0x1C ... 0x1D (2 bytes)  Bits per pixel (BPP):   0x0018   ⇒   24d,
  • 0x1E ... 0x21 (4 bytes)   Type of data compression,
  • 0x22 ... 0x25 (4 bytes)   Size of bitmap in bytes:   0x 02 DE 62   ⇒   188002d,
  • 0x26 ... 0x29 (4 Byte)   Horizontal resolution in pixels/meter:   0x 26 70   ⇒   9840d,
  • 0x2A ... 0x2D (4 Byte)  Vertical resolution in pixels/meter:       0x 26 70   ⇒   9840d,
  • 0x2E ... 0x31 (4 Byte)   Number of colors used,
  • 0x32 ... 0x35 (4 Byte)   Number of important colors.

Then the image data area begins with "0x 43 2A 23" (in the example three bytes per pixel each for R – G – B). Since also here (with the Intel processor) the little–endian byte order applies, these entries designate the color values  $\rm R = 23$,  $\rm G = 2A$,  $\rm B = 43$  (in each case hexadecimal) or   $\rm R = 35$,  $\rm G = 42$,  $\rm B = 67$  (decimal) .

The images in the next section make it clear that even a few errors in the file header ($14$  bytes) or information block ($40$  bytes) are enough to render an image completely unusable. The header of a multimedia file should therefore be specially protected. In the case of BMP, this header comprises a total of $54$  bytes.

Transmission errors in the file header and information block


A series of images is used to illustrate the effects of transmission errors within the file header (0x00 ... 0x0D) and information block (0x0E ... 0x35). The left figure shows the hexadecimal dump of the falsified file compared to the original file (right).

Hexdumps of the falsified file and the original file

Below you can see the images that result when the five error blocks are successively corrected:

Effects of errors in the BMP header
  • The given file cannot be opened at all. If we correct the first two bytes (purple marking) from "0x 40 00" to "0x 42 4D", we get the upper left uniform gray image.
  • Correcting the image width from "0x C5" to "0x FA"   ⇒   250d and the image height from "0x 7D" to "0x FA"   ⇒   250d (green mark) results in the middle upper image already with the correct size (250 x 250 pixels), but still with gray content.
  • The upper right image can be reached by correcting the color depth (bits per pixel, BPP) from "0x 08"   ⇒   8d to "0x 18"   ⇒   24d (blue mark). After that, one can already partially recognize content, but with poor quality.
  • By correcting the red error block in the range 0x0A ... 0x0D (offset) from "0x 36 01"   to "0x 36 00"   you finally get the original image "LNTprofs.bmp".


BMP files after BSC falsification


The following series of images shows the influence of statistically independent errors (BSC model) with the following (bit) error probabilities:

$$p = 10^{-3}, \ p = 10^{-2}, \ p = 10^{-1}.$$
Influence of BSC errors on BMP files, above with 24 BPP, below with 8 BPP

The file header is error-free in each case.

  • The upper row is based on the color image "LNTprofs.bmp" with  $\rm 24$  bits per pixel; the actual image area is  $250 \cdot 250 \cdot 24 = 1.5 \cdot 10^6$ bits.
  • The bottom row is based on a grayscale image with  $\rm 8$  bits per pixel. The file is thus about a factor of  $3$  smaller than the color file.


One recognizes from these representations:

  • The error probability  $p = 10^{-3}$  is still not too disturbing. With the color image, about  $1500$  bits and also comparatively as many pixels are falsified (statistical statements). With the grayscale image, there are only about  $500$  bit errors because of the smaller file.
  • Subjectively, the disturbing impression of bit errors with the grayscale image is about the same as with the color image, despite the smaller number of bit errors, since with the latter some bit errors only have an effect in a marginal color change.


BMP files with burst errors


Let's now look at the influence of burst errors on BMP files using the following graphic.

  • The left image  $\rm A$  shows the original file "Weiß.bmp" with only white pixels.
  • The result is therefore independent of the color depth.
  • However, the file "Weiß1.bmp" (1 BPP, 4046 bytes) is almost by a factor of  $24$  smaller than the file "Weiß24.bmp" (24 BPP, 90456 bytes).
  • Almost because the header is the same size for both files and the  $\text{1 BPP}$ file also contains a color table.


For the four right images, transmission errors with the (average) error probability  $p_{\rm M} = 1\%$  are considered in each case. One recognizes:

Influence of burst errors on BMP files
  • The errors in image  $\rm B$  are statistically independent and were generated according to the  "BSC model".  They are randomly distributed over the whole image area.
  • In contrast, images  $\rm C$  and  $\rm D$  show burst error structures according to the  "GE model"  with different error correlation durations  $D_{\rm K} \approx 8$  and  $D_{\rm K} \approx 95$. It can be seen from the error structure that BMP images are saved line by line.
  • For the black and white images (1 BPP)  $\rm B$,  $\rm C$  and  $\rm D$,  every 100th pixel is falsified on statistical average. In contrast, image  $\rm E$  with 24 BPP (True Color) has more pixel falsifications despite the same average error probability  $p_{\rm M} = 1\%$. 
  • A comparison of images  $\rm D$  and  $\rm E$  shows the different correlation durations related to pixels  $(D_{\rm K} \approx 95$  versus  $D_{\rm K} \approx 95/24 \approx 4)$. It can also be seen that in image  $\rm E$  the error pixels are colored.

Effects of transfer errors on audios


The "WAVE file format" is a container format for digital storage of audio data, based on the Resource Interchange File Format (RIFF) defined by Microsoft for Windows. The file header of WAVE files, which requires special protection, comprises  $43$ bytes.

It usually contains so-called PCM raw data, i.e. a time- and value-discrete representation of the temporal course of a signal. The quality of the recorded sound then depends on two values, namely

  • the sampling rate (number of samples per time unit),
  • the resolution (bit depth).


We will first demonstrate the influence of transmission errors on the audio file "Stille.wav" with a duration of about 10 seconds. That means: All you hear are transmission errors.


Statistisch unabhängige Fehler entsprechend dem BSC–Modell

Bei den folgenden WAVE-Dateien beginnen wir mit dem  BSC–Parameter  $p= 10^{-5}$  und erhöhen diesen bis zu  $p= 10\%$.

  • $p$  gibt gleichzeitig die mittlere Fehlerwahrscheinlichkeit  $p_{\rm M}$  an, die auch als Bit Error Rate (BER) bezeichnet wird.
  • Jeweils angegeben ist auch die subjektive Einschätzung des Autors.


    $p=10^{-5}$   ⇒   Kaum hörbar.

    $p=10^{-4}$   ⇒   Noch nicht sehr störend.

    $p=10^{-3}$   ⇒   Merkbar störend.

    $p=10^{-2}$   ⇒   Warnung vor dem Öffnen.

    $p=10^{-1}$   ⇒   Nur für extrem Lärmunempfindliche geeignet.

Gegenüberstellung von statistisch unabhängigen Fehlern und Bündelfehlern

  • Die statistisch unabhängigen Fehler wurden wieder mit dem  BSC–Modell  generiert. Mittlere Fehlerwahrscheinlichkeit:   $p_{\rm M}=10^{-3}$.
  • Für die Generierung der Bündelfehler wurde das Kanalmodell nach  Gilbert–Elliott  (GE) verwendet.
  • Die mittlere Fehlerwahrscheinlichkeit beträgt auch hier  $p_{\rm M}=10^{-3}$.
  • Gegenübergestellt wird die sehr kurze  Korrelationsdauer  $D_{\rm K}= 8$  mit weitreichenden statistischen Bindungen   ⇒   $D_{\rm K}= 1000$.


Zunächst gehen wir wieder von der Datei "Stille.wav" aus. 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.

    BSC–Modell.

    GE–Modell mit $D_{\rm K}= 8$.

    GE–Modell mit $D_{\rm K}= 1000$.

Auch beim nachfolgenden kurzen Musikstück gelten die gleichen Kanalparameter und man erkennt ähnliche Eigenschaften.

    BSC–Modell.

    GE–Modell mit $D_{\rm K}= 8$.

    GE–Modell mit $D_{\rm K}= 1000$.

Hinweis:   Alle (verfälschten) BMP–Bilder und WAV–Audios zu diesem Kapitel wurden mit dem Windows–Programm „Digitale Kanalmodelle & Multimedia” aus dem (früheren) Praktikum „Simulation Digitaler Übertragungssysteme ” am Lehrstuhl für Nachrichtentechnik der TU München erzeugt. Die folgenden Links stellen bereit:

  • das Windows-Programm  DKM   ⇒   Link verweist auf die ZIP-Version des Programms; und
  • die zugehörige  Praktikumsanleitung   ⇒   Link verweist auf die PDF-Version.


Aufgaben zum Kapitel


Aufgabe 5.8: BMP-Format

Aufgabe 5.8Z: Verfälschung von BMP-Bildern