Band Interleaved by Line (BIL), Band Interleaved by Pixel (BIP) und Band SeQuential (BSQ) sind drei gängige Methoden zum Organisieren von Bilddaten für Multibandbilder. BIL, BIP und BSQ sind nicht direkt Bildformate, sondern Schemas zum Speichern der tatsächlichen Pixelwerte eines Bildes in einer Datei. Diese Dateien unterstützen die Anzeige von Einzel- und Multibandbildern und ermöglichen die Verarbeitung von Schwarzweiß-, Graustufen-, Pseudofarben-, Echtfarben- und Multispektral-Bilddaten.
Die BIL-, BIP- und BSQ-Dateien sind Binärdateien, die einen zugehörigen ASCII-Dateiheader besitzen müssen, damit sie ordnungsgemäß interpretiert werden können. Diese Header-Datei enthält Zusatzdaten zum Bild, wie zum Beispiel die Anzahl der Zeilen und Spalten im Bild, ob eine Colormap vorhanden ist und Breitengrad und Längengrad.
Band Interleaved by Line-Daten speichern Pixelinformationen Band für Band für jede Zeile des Bildes. Zum Beispiel werden bei einem Dreibandbild alle drei Datenbänder für Zeile 1 geschrieben, danach alle drei Datenbänder für Zeile 2 und so weiter, bis die Gesamtzahl der Zeilen im Bild erreicht ist. In der folgenden Abbildung sind die BIL-Daten für ein Dreiband-Dataset dargestellt:
Band Interleaved by Pixel-Daten ähneln BIL-Daten, außer dass hier die Daten für jedes Pixel Band für Band geschrieben werden. Bei demselben Dreibandbild wie im obigen Beispiel werden die Daten für die Bänder 1, 2 und 3 für das erste Pixel in Spalte 1 geschrieben, danach die Daten für die Bänder 1, 2 und 3 für das erste Pixel in Spalte 2 und so weiter.
Band Sequential ist ein Format, bei dem die Informationen für das Bild jeweils pro Band gespeichert werden. Mit anderen Worten: Zuerst werden die Daten für alle Pixel für Band 1 geschrieben, danach die Daten für alle Pixel für Band 2 und so weiter.
Bildbeschreibungsdateien
Es gibt drei Beschreibungsdateien, die mit BIL-, BIP- oder BSQ-Dateien bereitgestellt werden können: Eine Header-Datei (.hdr), die das Layout der Bildpixeldaten beschreibt und bereitgestellt werden muss, eine Colormap-Datei (.clr), die die Bild-Colormap beschreibt, und eine Statistikdatei (.stx), die Bildstatistiken für jedes Band des Bildes beschreibt. Diese ASCII-Textdatei kann mit den Informationen, die Sie über das Bild haben, in einem Texteditor erstellt werden.
Header-Datei
Die Header-Datei beschreibt die Bilddaten. Sie müssen für jedes Bild eine Header-Datei generieren, die denselben Namen mit der Erweiterung .hdr besitzt, zum Beispiel: <image>.hdr.
Die einzelnen Einträge in der Header-Datei beschreiben jeweils ein bestimmtes Attribut des Bildes. Zum Beispiel kann ein Eintrag die Anzahl der Zeilen oder Spalten im Bild beschreiben. Jeder Eintrag hat das Format <keyword> <value>, wobei <Schlüsselwort> das Attribut angibt, das festgelegt wird, und <Wert> der Wert ist, auf den das Attribut festgelegt wird. Die Reihenfolge der Einträge im Header ist beliebig. Jeder Eintrag muss auf einer separaten Zeile in der Datei angegeben sein. Alle Zeilen in der Datei, die nicht mit einem Schlüsselwort beginnen, werden als Kommentar behandelt und ignoriert.
Die Header-Datei enthält gültige Schlüsselwörter und beschreibt das Bildattribut, das mit dem jeweiligen Schlüsselwort definiert wird. Für einige Schlüsselwörter gibt es Standardwerte. Wenn ein Standardwert die Bilddaten genau repräsentiert, können Sie das betreffende Schlüsselwort in der Header-Datei weglassen.
Das Schlüsselwort nrows bezeichnet die Anzahl der Zeilen im Bild. Zeilen verlaufen parallel zur X-Achse des Koordinatensystems der Karte. Es ist kein Standardwert vorhanden.
Das Schlüsselwort ncols bezeichnet die Anzahl der Spalten im Bild. Spalten verlaufen parallel zur Y-Achse des Koordinatensystems der Karte. Es ist kein Standardwert vorhanden.
Das Schlüsselwort nbands bezeichnet die Anzahl der Spektralbänder im Bild. Die Standardeinstellung ist 1.
Das Schlüsselwort nbits bezeichnet die Anzahl der Bits pro Pixel und Band. Zulässige Werte sind 1, 4, 8, 16 und 32. Der Standardwert ist 8 Bit pro Pixel und Band. Bei einem Echtfarbenbild mit drei Bändern (RGB), das mit 8 Bit für jedes Pixel in jedem Band gespeichert wird, ist nbits gleich 8 und nbands gleich 3 bei insgesamt 24 Bit pro Pixel. Bei einem Bild mit nbits gleich 1 muss nbands ebenfalls gleich 1 sein.
Das Schlüsselwort pixeltype bezeichnet den Pixeltyp "Ganze Zahl mit Vorzeichen". Dabei wird vorausgesetzt, dass in Ihren Daten ganze Zahlen ohne Vorzeichen verwendet werden, sofern nicht das Schlüsselwort pixeltype mit dem Wert SIGNEDINT verwendet wird.
Das Schlüsselwort byteorder bezeichnet die Byte-Reihenfolge, in der die Bildpixelwerte gespeichert werden. Die Byte-Reihenfolge ist für 16-Bit-Bilder mit 2 Byte pro Pixel wichtig. Zulässige Werte:
- I: Intel-Byte-Reihenfolge (Silicon Graphics, DEC Alpha, PC), auch bekannt als Little Endian
- M: Motorola-Byte-Reihenfolge (Sun, HP und weitere), auch bekannt als Big Endian
Die Standard-Byte-Reihenfolge ist mit der des Hostcomputers, auf dem die Software ausgeführt wird, identisch.
Das Schlüsselwort layout bezeichnet die Organisation der Bänder in der Bilddatei. Zulässige Werte:
- bil: Band Interleaved by Line Dies ist die Standardeinstellung.
- bip: Band Interleaved by Pixel.
- bsq: Band Sequential.
Das Schlüsselwort skipbytes bezeichnet die Anzahl der Datenbytes in der Bilddatei, die übersprungen werden müssen, um den Anfang der Bilddaten zu erreichen. Mit diesem Schlüsselwort können vorhandene Bild-Header-Informationen in der Datei übergangen werden. Der Standardwert ist 0 Byte.
Das Schlüsselwort ulxmap bezeichnet die Koordinate des Mittelpunktes des oberen linken Pixels auf der X-Achse der Karte. Wenn dieser Parameter angegeben wird, muss auch ulymap festgelegt werden. Andernfalls wird ein Standardwert verwendet.
Das Schlüsselwort ulymap bezeichnet die Koordinate des Mittelpunktes des oberen linken Pixels auf der Y-Achse der Karte. Wenn dieser Parameter angegeben wird, muss auch ulxmap festgelegt werden. Andernfalls wird ein Standardwert verwendet.
Das Schlüsselwort xdim bezeichnet die X-Dimension eines Pixels in Karteneinheiten. Wenn dieser Parameter angegeben wird, müssen auch ydim, ulxmap und ulymap festgelegt werden. Andernfalls wird ein Standardwert verwendet.
Das Schlüsselwort ydim bezeichnet die Y-Dimension eines Pixels in Karteneinheiten. Wenn dieser Parameter angegeben wird, müssen auch xdim, ulxmap und ulymap festgelegt werden. Andernfalls wird ein Standardwert verwendet.
Die folgende Abbildung enthält die Standardwerte für ulxmap, ulymap, xdim und ydim. Der Mittelpunkt des oberen linken Pixels hat die Kartenkoordinaten (ulxmap, ulymap) = (0, (nrows - 1)), mit dem Mittelpunkt des unteren linken Pixels bei (0, 0). In dieser Abbildung gilt für ulxmap und ulymap der Koordinatenwert (0, 3). Die X- und Y-Pixeldimensionen werden standardmäßig auf xdim = 1 und ydim = 1 festgelegt.
Das Schlüsselwort bandrowbytes bezeichnet die Anzahl der Bytes pro Band und Zeile. Dies muss eine ganze Zahl sein. Dieses Schlüsselwort wird nur bei BIL-Dateien verwendet, wenn am Ende jedes Bandes in einer Zeile zusätzliche Bits vorhanden sind, die übersprungen werden müssen. Dies wirkt wie ein Index in Bezug auf den Anfangspunkt des nächsten Datenbandes. Ausgehend vom Anfang eines Bandes in einer Zeile führt das Verschieben um bandrowbytes entlang dieser Zeile zum Anfang des nächsten Bandes.
In der folgenden Abbildung ist eine Datenzeile für ein Dreibandbild dargestellt. Hier ist bandrowbytes die Summe aus der Anzahl der Bytes zum Speichern der Bilddaten und der zusätzlichen Bits, die übersprungen werden müssen, um das nächste Band zu erreichen.
bandrowbytes = image data + extra bits
Um bandrowbytes festzulegen, müssen Sie das Layout der Bilddaten kennen, oder genauer gesagt wissen, wie viele Bytes zum Speichern der Pixelwerte für jedes Band in einer Zeile verwendet werden. Wenn bandrowbytes nicht angegeben wurde, wird mit der folgenden Gleichung ein Standardwert berechnet:
bandrowbytes = the smallest integer(ncols x nbits) / 8
Der Standardwert behandelt Fälle, bei denen am Ende jedes Bandes in einer Zeile keine zusätzlichen nachgestellten Bits vorhanden sind und die Anzahl der Bytes pro Band und Zeile die kleinste ganze Zahl an Bytes ist, in denen die Daten für das Band gespeichert werden. Wenn zum Beispiel für die Daten 2,5 Byte erforderlich sind, sind 3 Byte die kleinste ganze Zahl an Bytes, in denen die Daten gespeichert werden können. In diesen zwei Fällen muss bandrowbytes nicht festgelegt werden. Wenn jedoch die Anzahl der Bytes pro Band und Zeile größer als der Standardwert ist, müssen Sie bandrowbytes entsprechend festlegen.
In den folgenden zwei Beispielen wird das Standardverhalten von bandrowbytes veranschaulicht. Das erste Beispiel beschreibt den Fall, bei dem am Ende eines Bandes in einer Zeile keine nachgestellten Bits vorhanden sind. Das zweite Beispiel beschreibt den Fall, bei dem sie vorhanden sind.
- Wenn am Ende eines Bandes keine zusätzlichen nachgestellten Bits vorhanden sind, ist bandrowbytes gleich der Anzahl der Bytes zum Speichern der Bilddaten.
Beispiel: Bei einem 6-mal-6-Bild mit drei Bändern und 8 Bit (1 Byte) pro Pixel benötigen die Bilddaten 6 Byte pro Band und Zeile.bandrowbytes = image data
Standardmäßig ist bandrowbytes auf 6 Byte festgelegt, wie die folgende Gleichung zeigt:bytes per band per row = ncols x nbits = 6 x 8 = 48 bits or 6 bytes
Da die Anzahl der Bytes pro Band und Zeile gleich bandrowbytes ist, ist der Standardwert die geeignete Einstellung. Deshalb muss bandrowbytes nicht explizit angegeben werden.bandrowbytes = (ncols x nbits) / 8 = (6 x 8) / 8 = 48 / 8 bandrowbytes = 6 bytes
- Wenn am Ende eines Bandes in einer Zeile nachgestellte Bits vorhanden sind, ist bandrowbytes nicht gleich der Anzahl der Datenbytes pro Band und Zeile.
Als Beispiel soll ein Dreibandbild aus 5 Zeilen und 5 Spalten mit 4 Bit pro Pixel dienen. Standardmäßig ist bandrowbytes auf die kleinste ganze Zahl an Bytes festgelegt, in denen die Daten gespeichert werden können. Der Standardwert in diesem Fall lautet 3. Dieser Wert wird wie folgt berechnet:
Für die Bilddaten sind jedoch nur 2,5 Byte erforderlich, was sich durch Multiplikation von ncols mit nbits ergibt. Damit ist 0,5 Byte (4 Bit) die Anzahl der Bytes, die übersprungen werden müssen, bzw. die Differenz zwischen 3 Byte (bandrowbytes) und 2,5 Byte (Bytes für Bilddaten). In der folgenden Abbildung ist ein Datenband für eine Zeile des Bildes dargestellt.bandrowbytes = (ncols x nbits) / 8 = (5 x 4) / 8 = 20 / 8 = 2.5 = 3 (when rounded up to the nearest integer)
Das Schlüsselwort totalrowbytes bezeichnet die Gesamtzahl der Datenbytes pro Zeile. Verwenden Sie totalrowbytes, wenn am Ende jeder Zeile zusätzliche nachgestellte Bits vorhanden sind.
Bei einer BIL-Datei wird der Standardwert für totalrowbytes mit der folgenden Gleichung berechnet:
totalrowbytes = nbands x bandrowbytes
Der Standardwert setzt voraus, dass am Ende jeder Zeile keine zusätzlichen nachgestellten Bits vorhanden sind. Wenn sie vorhanden sind, müssen Sie totalrowbytes entsprechend festlegen. Beispiel: Bei einem Dreibandbild mit bandrowbytes gleich 3 ist standardmäßig totalrowbytes gleich 9. Wenn am Ende der Zeile ein zusätzliches nachgestelltes Datenbyte vorhanden ist, dann legen Sie totalrowbytes auf 10 fest.
Bei einer BIP-Datei wird der Standardwert mit einer anderen Gleichung berechnet:
totalrowbytes = (ncols x nbands x nbits) / 8
Der Wert von totalrowbytes wird auf die nächste ganze Zahl an Bytes aufgerundet, in denen die Pixeldaten für die Zeile gespeichert werden können. Beispiel: Bei einem 5-mal-5-BIP-Bild (Zeilen mal Spalten) mit 3 Bändern und 4 Bit pro Pixel wird der Standardwert für totalrowbytes wie folgt berechnet:
totalrowbytes = (ncols x nbands x nbits) / 8
= (5 x 3 x 4) / 8
= 60 / 8
= 7.5
= 8 (when rounded up to the nearest integer)
Diese Abbildung zeigt die Standardeinstellung von totalrowbytes für ein BIP-Bild.
Wenn der Standardwert für totalrowbytes das Layout der Daten nicht richtig darstellt, muss totalrowbytes auf die geeignete Anzahl der Bytes in jeder Zeile festgelegt werden.
Das Schlüsselwort bandgapbytes bezeichnet die Anzahl der Bytes zwischen Bändern in einem Bild im BSQ-Format. Die Standardeinstellung ist 0.
Die folgende Datei ist eine typische Header-Datei, die für ein Band Interleaved by Line-Satellitenbild generiert wurde, bei dem den Bilddaten ein 128-Byte-Header vorangestellt ist.
Sample BIL header file
Lines that don't begin with a keyword are treated as comments.
nrows 1024 Comments can be placed here as well.
ncols 1024
nbands 3
nbits 8
layout bil
skipbytes 128
Die folgende Tabelle enthält eine Zusammenfassung der Schlüsselwörter, die in der .hdr-Datei verwendet werden können:
Schlüsselwort | Zulässiger Wert | Standard |
---|---|---|
nrows | Beliebige ganze Zahl > 0 | Kein(e) |
ncols | Beliebige ganze Zahl > 0 | Kein(e) |
nbands | Beliebige ganze Zahl > 0 | 1 |
nbits | 1, 4, 8, 16, 32 | 8 |
pixeltype | SIGNEDINT | Ganze Zahl ohne Vorzeichen |
byteorder | I = Intel; M = Motorola | Identisch mit Hostcomputer |
layout | bil, bip, bsq | bil |
skipbytes | Beliebige ganze Zahl ≥ 0 | 0 |
ulxmap | Beliebige reelle Zahl | 0 |
ulymap | Beliebige reelle Zahl | nrows - 1 |
xdim | Beliebige reelle Zahl | 1 |
ydim | Beliebige reelle Zahl | 1 |
bandrowbytes | Beliebige ganze Zahl > 0 | Kleinste ganze Zahl ≥ (ncols x nbits) / 8 |
totalrowbytes | Beliebige ganze Zahl > 0 | Für bil: nbands x bandrowbytes; für bip: kleinste ganze Zahl ≥ (ncols x nbands x nbits) / 8 |
bandgapbytes | Beliebige ganze Zahl ≥ 0 | 0 |
Colormap-Datei
Die Colormap-Datei (.clr) ist eine optionale Datei, die die Colormap eines Bildes für Einzelband-Pseudofarbenbilder beschreibt. Wenn diese Datei nicht vorhanden ist, wird das Bild als Graustufenbild angezeigt.
Die Colormap-Datei enthält die Farben, die mit den Pixelwerten im Bild verknüpft sind. Farben werden mit dem RGB-Farbmodell definiert, das den in ihnen enthaltenen Anteil der Farben Rot, Grün und Blau beschreibt. Die einzelnen Einträge in der Datei, die sich jeweils in einer separaten Zeile befinden müssen, beschreiben die entsprechende Farbe zu einem Pixelwert im Bild.
Jeder Eintrag hat das Format <value> <red> <green> <blue>, wobei <Wert> ein bestimmter Pixelwert ist und <rot>, <grün> und <blau> die Farbkomponenten für das Pixel sind. Sortieren Sie alle Einträge in aufsteigender Reihenfolge nach Pixelwert. Wenn das erste nicht leere Zeichen in der Zeile keine Zahl ist, wird die Zeile als Kommentar behandelt und ignoriert. Alle nicht leeren Zeichen in einer Zeile hinter dem vierten Parameter (blau) werden ignoriert und können ebenfalls als Kommentare verwendet werden.
Die Komponenten Rot, Grün und Blau werden anhand einer Skala mit Werten im Bereich von 0 bis 255 beschrieben. Je größer der Farbwert ist, desto höher ist die Intensität der entsprechenden Farbkomponente. Die Standardfarbe für einen Pixelwert ohne Eintrag ist Schwarz. Eine Beispiel-Colormap-Datei für eine Raster-Bödenkarte mit den Pixelwerten 11, 16, 18, 19, 21, 98 und 99 ist nachfolgend dargestellt:
Color file for Soils map
Entries are sorted in ascending order by pixel value.
11 255 0 0 (red)
16 255 165 0 (orange)
18 255 255 0 (yellow)
19 0 255 0 (green)
21 0 0 255 (blue)
98 0 255 255 (cyan)
99 160 32 240 (purple)
Colormap-Dateien werden nur bei Einzelbandbildern verwendet. Ein Einzelbandbild mit einer Colormap-Datei wird als Pseudofarbenbild interpretiert. Colormap-Dateien bei Multibandbildern werden ignoriert.
Statistikdatei
Die Statistikdatei (.stx) ist eine optionale Datei, die Bildstatistiken für jedes Spektralband in einem Graustufen- oder Multibandbild beschreibt. Diese Datei enthält für jedes Band einen Eintrag, der den minimalen Pixelwert, den maximalen Pixelwert, den Mittelwert, die Standardabweichung und zwei Parameter für die lineare Kontraststreckung enthält.
Jeder Eintrag hat das folgende Format, wobei sich für jedes Band alle Werte auf derselben Zeile in der Datei befinden müssen:
<band> <minimum> <maximum> {mean} {std_deviation}
{linear_stretch_min} {linear_stretch_max}
Die einzelnen Komponenten der Datei werden nachfolgend beschrieben:
- <band> ist die Bandnummer.
- <minimum> ist der minimale Pixelwert im Band.
- <maximum> ist der maximale Pixelwert im Band.
- {mean} ist der durchschnittliche Pixelwert.
- {std_deviation} ist die Standardabweichung.
- {linear_stretch_min} ist der minimale Pixelwert für eine lineare Kontraststreckung.
- {linear_stretch_max} ist der maximale Pixelwert für eine lineare Kontraststreckung.
Die Werte für jeden Parameter werden auf einer Zeile eingegeben. Alle Einträge, in denen das erste nicht leere Zeichen keine Zahl ist, werden als Kommentar behandelt und ignoriert. Die Bandnummer und der minimale und der maximale Pixelwert sind erforderliche Parameter. Der Mittelwert, die Standardabweichung, der minimale Wert für eine lineare Kontraststreckung und der maximale Wert für eine lineare Kontraststreckung sind optionale Parameter. Verwenden Sie ein Nummernzeichen (#), um die optionalen Parameter zu überspringen.
Bandnummern können im Bereich von 1 bis nbands liegen. Die Parameter linear_stretch_min und linear_stretch_max werden zum Erweitern des Kontrastes des angezeigten Bildes verwendet. Pixelwerte kleiner als linear_stretch_min werden in Schwarz und Pixelwerte größer als linear_stretch_max in Weiß angezeigt. Die Pixelwerte, die zwischen den Werten der Parameter für die minimale und die maximale lineare Streckung liegen, werden in Graustufen angezeigt. Dabei gilt: Je niedriger der Pixelwert, desto dunkler der Grauton.
Für die Anzeige der Pixelwerte, die zwischen den Werten der Parameter für die lineare Streckung liegen, wird die maximale Anzahl der Graustufen, die auf dem Anzeigegerät verfügbar sind, verwendet.
Wenn linear_stretch_min und linear_stretch_max nicht angegeben wurden, wird standardmäßig für linear_stretch_min der Mittelwert minus zwei Standardabweichungen und für linear_stretch_max der Mittelwert plus zwei Standardabweichungen verwendet. Wenn die Standardabweichung nicht angegeben wurde, werden der minimale und der maximale Pixelwert als Parameter für die Kontraststreckung verwendet.
Bei Multibandbildern wird jedes Band gestreckt, bevor das zusammengesetzte Bild angezeigt wird. Wenn eine Colormap-Datei (.clr) vorhanden ist, wird die lineare Kontraststreckung eines Einzelband-Graustufenbildes außer Kraft gesetzt. Das Bild wird stattdessen als Pseudofarbenbild angezeigt.
Das folgende Beispiel zeigt eine Statistikdatei für ein Vierband-Satellitenbild mit 8 Bit pro Pixel und Band:
Image statistics file
1 2 118 67 10
Band 2 has linear contrast stretch parameters:
2 23 251 112 23 80 90
3 68 91 73 4
Band 4 does not contain values for mean and standard deviation:
4 126 198 # # 135 167