BIL-, BIP- und BSQ-Raster-Dateien
Bei "Band Interleaved by Line (BIL)", "Band Interleaved by Pixel (BIP)" und "Band Sequential (BSQ)" handelt es sich um drei häufig verwendete Methoden zum Organisieren von Bilddaten für Multibandbilder. Dabei stellen BIL, BIP und BSQ keine Bildformate, sondern Schemata zum Speichern der tatsächlichen Pixelwerte eines Bildes in einer Datei dar. Die Dateien unterstützen die Anzeige von Einzel- und Multibandbildern, und es können Schwarz/Weiß-, Graustufen-, Falschfarben-, True-Color- und multispektrale Bilddaten verarbeitet werden.
BIL-, BIP- und BSQ-Dateien sind Binärdateien, denen ein ASCII-Datei-Header zugeordnet sein muss, damit sie von ArcGIS korrekt interpretiert werden können. Die Header-Datei enthält Hilfsdaten zum Bild, beispielsweise die Anzahl der Zeilen und Spalten des Bildes, ob eine Colormap vorhanden ist, sowie Breiten- und Längengrad.
Es wird angenommen, dass von Ihren Daten Ganzzahlen ohne Vorzeichen verwendet werden, es sei denn, das Schlüsselwort "pixeltype" wird verwendet, und der dafür festgelegte Wert beträgt "signedint".
In BIL-Daten werden Pixelinformationen bandweise für jede Zeile des Bildes gespeichert. Angenommen, es liegt ein Bild mit drei Bändern vor. Dann werden zuerst alle drei Datenbänder für Zeile 1, dann alle drei Datenbänder für Zeile 2 usw. geschrieben, bis die Gesamtanzahl der Zeilen des Bildes erreicht ist. In der folgenden Abbildung werden BIL-Daten für ein Dataset mit drei Bändern veranschaulicht:
BIP-Daten ähneln BIL-Daten. Der Unterschied besteht darin, dass die Daten für jedes Pixel bandweise geschrieben werden. Beispielsweise werden in demselben Bild mit drei Bändern zuerst die Daten für die Bänder 1, 2 und 3 für das erste Pixel in Spalte 1, dann die Daten für die Bänder 1, 2 und 3 für das erste Pixel in Spalte 2 usw. geschrieben.
Im BSQ-Format werden die Bildinformationen für jeweils ein Band gleichzeitig gespeichert. Anders gesagt, zuerst werden die Daten für alle Pixel für Band 1 gespeichert, dann die Daten für alle Pixel für Band 2 usw.
Bildbeschreibungsdateien
Für BIL-, BIP- und BSQ-Dateien können drei Beschreibungsdateien bereitgestellt werden: eine Header-Datei (HDR) zum Beschreiben des Layouts der Bildpixeldaten (erforderlich), eine Farbdatei (CLR) zum Beschreiben der Bild-Colormap und eine Statistikdatei (STX) zum Beschreiben der Bildstatistik für die einzelnen Bänder des Bildes. Es handelt sich jeweils um eine ASCII-Textdatei, die anhand der Ihnen bekannten Informationen zum Bild in einem Texteditor generiert werden kann.
Die Header-Datei
In der Header-Datei werden die Bilddaten beschrieben. Sie müssen für jede Bilddatei eine Header-Datei generieren. Deren Dateiname muss mit dem der Bilddatei identisch sein, jedoch die Erweiterung HDR aufweisen. Beispiel:
<image>.hdr
Die Header-Datei enthält mehrere Einträge, mit denen jeweils ein bestimmtes Attribut des Bildes beschrieben wird. Mit einem Eintrag kann beispielsweise die Anzahl der Zeilen oder Spalten des Bildes beschrieben werden. Das Format der Einträge lautet:
<keyword> <value>
Dabei bezeichnet "<keyword>" das jeweilige Attribut und "<value>" den Wert, auf den das Attribut festgelegt wird. Die Reihenfolge der Einträge im Header ist nicht vorgegeben, aber jeder Eintrag muss sich in einer eigenen Zeile der Datei befinden. Alle Zeilen in der Datei, die nicht mit einem Schlüsselwort beginnen, werden als Kommentar behandelt und ignoriert.
In der folgenden Liste sind die gültigen Schlüsselwörter mit den entsprechenden Bildattributen aufgeführt. Zu mehreren Schlüsselwörtern sind Standardwerte vorhanden. Wenn die Bilddaten durch den Standardwert genau dargestellt werden, können Sie das Schlüsselwort in der Header-Datei auslassen.
nrows: Die Anzahl der Zeilen des Bildes. Die Zeilen verlaufen parallel zur x-Achse des Koordinatensystems der Karte. Es ist kein Standardwert vorhanden.
ncols: Die Anzahl der Spalten des Bildes. Die Spalten verlaufen parallel zur y-Achse des Koordinatensystems der Karte. Es ist kein Standardwert vorhanden.
nbands: Die Anzahl der Spektralbänder des Bildes. Die Standardeinstellung ist 1.
nbits: Die Anzahl der Bits pro Pixel pro Band. Mögliche Werte sind 1, 4, 8, 16 und 32. Der Standardwert ist 8 Bits pro Pixel pro Band. Bei einem True-Color-Bild mit drei Bändern (R,G,B), das mit 8 Bits pro Pixel pro Band gespeichert wird, ist "nbits" gleich 8 und "nbands" gleich 3, woraus sich insgesamt 24 Bits pro Pixel ergeben. In einem Bild mit "nbits" gleich 1 muss "nbands" ebenfalls gleich 1 sein.
pixeltype:Dieses Schlüsselwort bezeichnet, dass der Pixeltyp eine Ganzzahl mit Vorzeichen ist. Es wird angenommen, dass von Ihren Daten Ganzzahlen ohne Vorzeichen verwendet werden, es sei denn, das Schlüsselwort "pixeltype" wird verwendet, und der dafür festgelegte Wert beträgt "signedint".
byteorder: Die Bytereihenfolge, in der die Bildpixelwerte gespeichert werden. Die Bytereihenfolge ist bei 16-Bit-Bildern mit 2 Bytes pro Pixel wichtig. Folgende Werte sind möglich:
- I: Intel®-Bytereihenfolge (Silicon Graphics®, DEC Alpha™, PC) bzw. "Little Endian"
- M: Motorola®-Bytereihenfolge (Sun™, HP® usw.) bzw. "Big Endian"
Die Standardbytereihenfolge ist mit der Reihenfolge identisch, die auf dem Host-Computer verwendet wird, auf dem die Software ausgeführt wird.
layout: Die Anordnung der Bänder in der Bilddatei. Folgende Werte sind möglich:
- bil: Band Interleaved by Line. Dies ist die Standardeinstellung.
- bip: Band Interleaved by Pixel
- bsq: Band Sequential
skipbytes: Die Anzahl der Daten-Bytes in der Bilddatei, die bis zum Anfang der Bilddaten übersprungen werden muss. Mit diesem Schlüsselwort können Sie die ggf. vorhandenen Bild-Header-Informationen in der Datei umgehen. Der Standardwert ist 0 Bytes.
ulxmap: Die Kartenkoordinate auf der x-Achse in der Mitte des oberen linken Pixels. Wenn Sie diesen Parameter angeben, müssen Sie auch "ulymap" festlegen, da andernfalls ein Standardwert verwendet wird.
ulymap: Die Kartenkoordinate auf der y-Achse in der Mitte des oberen linken Pixels. Wenn Sie diesen Parameter angeben, müssen Sie auch "ulxmap" festlegen, da andernfalls ein Standardwert verwendet wird.
xdim: Die x-Bemaßung eines Pixels in Karteneinheiten. Wenn dieser Parameter angegeben wird, müssen Sie auch "ydim", "ulxmap" und "ulymap" festlegen, da andernfalls ein Standardwert verwendet wird.
ydim: Die y-Bemaßung eines Pixels in Karteneinheiten. Wenn dieser Parameter angegeben wird, müssen Sie auch "xdim", "ulxmap" und "ulymap" festlegen, da andernfalls ein Standardwert verwendet wird.
In der folgenden Abbildung werden die Standardwerte für "ulxmap", "ulymap", "xdim" und "ydim" veranschaulicht. Die Mitte des oberen linken Pixels erhält die Kartenkoordinaten (ulxmap, ulymap) = (0, (nrows - 1)), wobei die Mitte des unteren linken Pixels die Position (0, 0) erhält. In dieser Abbildung ist der Koordinatenwert für "ulxmap" und "ulymap" gleich (0, 3). Für die x- und y-Pixel-Bemaßungen werden die Standardwerte "xdim" = 1 und "ydim" = 1 übernommen.
bandrowbytes: Die Anzahl der Bytes pro Band pro Zeile. Hierbei muss es sich um einen Ganzzahlwert handeln. Dieses Schlüsselwort wird nur bei BIL-Dateien verwendet, wenn zusätzliche Bits am Ende der einzelnen Bänder in einer zu überspringenden Zeile vorhanden sind. Das Schlüsselwort "bandrowbytes" kann als Index für den Startpunkt des nächsten Datenbandes aufgefasst werden. Am Anfang eines beliebigen Bandes in einer Zeile erfolgt mit "bandrowbytes" ein Wechsel in derselben Zeile zum Anfang des nächsten Bandes.
In der folgenden Abbildung wird eine Datenzeile eines Bildes mit drei Bändern veranschaulicht. Dabei ist "bandrowbytes" die Summe der Anzahl der Bytes zum Speichern der Bilddaten und der Zusatzbits, die bis zum Anfang des nächsten Bandes übersprungen werden müssen.
bandrowbytes = image data + extra bits
Zum Festlegen von "bandrowbytes" müssen Sie das Layout der Bilddaten kennen. Genauer gesagt, Sie müssen wissen, mit wie vielen Bytes die Pixelwerte für die einzelnen Bänder in einer Zeile gespeichert werden. Wenn "bandrowbytes" nicht angegeben ist, wird gemäß der folgenden Gleichung ein Standardwert berechnet:
bandrowbytes = the smallest integer(ncols x nbits) / 8
Mit dem Standardwert werden Fälle verarbeitet, in denen keine Zusatzbits am Ende der einzelnen Bänder in einer Zeile vorhanden sind und die Anzahl der Bytes pro Band pro Zeile dem kleinsten Ganzzahlwert von Bytes entspricht, mit dem die Daten für das Band ordnungsgemäß gespeichert werden können. Wenn beispielsweise 2,5 Bytes für die Daten erforderlich sind, ist 3 Bytes der kleinste Ganzzahlwert von Bytes zum Speichern der Daten. In diesen beiden Fällen muss "bandrowbytes" nicht festgelegt werden. Wenn jedoch die Anzahl der Bytes pro Band pro Zeile größer als der Standardwert ist, müssen Sie "bandrowbytes" entsprechend festlegen.
In den folgenden zwei Beispielen wird das Standardverhalten von "bandrowbytes" veranschaulicht. Im ersten Beispiel wird auf den Fall eingegangen, in dem keine Bits am Ende eines Bandes in einer Zeile vorhanden sind, im zweiten auf den Fall, in dem diese vorhanden sind.
- Wenn keine Zusatzbits am Ende eines Bandes vorhanden sind, ist "bandrowbytes" gleich der Anzahl der Bytes zum Speichern der Bilddaten.
bandrowbytes = image data
Angenommen, es ist ein 6-mal-6-Bild mit drei Bändern und 8 Bits (1 Byte) pro Pixel vorhanden. Für die Bilddaten sind dann 6 Bytes pro Band und Zeile erforderlich.bytes per band per row = ncols x nbits = 6 x 8 = 48 bits or 6 bytes
In der Standardeinstellung ist "bandrowbytes" auf 6 Bytes festgelegt, wie in der folgenden Gleichung gezeigt:bandrowbytes = (ncols x nbits) / 8 = (6 x 8) / 8 = 48 / 8 bandrowbytes = 6 bytes
Da die Anzahl der Bytes pro Band pro Zeile gleich "bandrowbytes" ist, ist der Standardwert die geeignete Einstellung. Der Parameter "bandrowbytes" muss also nicht explizit festgelegt werden. - Wenn Zusatzbits am Ende eines Bandes in einer Zeile vorhanden sind, ist "bandrowbytes" ungleich der Anzahl der Daten-Bytes pro Band pro Zeile.
Angenommen, es ist ein Bild mit drei Bändern sowie 5 Zeilen und 5 Spalten mit 4 Bits pro Pixel vorhanden. In der Standardeinstellung ist "bandrowbytes" auf die kleinste ganzzahlige Anzahl von Bytes zum ordnungsgemäßen Speichern der Daten festgelegt. In diesem Fall ist der Standardwert gleich 3 und wird wie folgt berechnet:
bandrowbytes = (ncols x nbits) / 8 = (5 x 4) / 8 = 20 / 8 = 2.5 = 3 (when rounded up to the nearest integer)
Für die Bilddaten sind jedoch nur 2,5 Bytes erforderlich, was sich aus dem Produkt aus "ncols" und "nbits" ergibt. Daher ist die Anzahl der zu überspringenden Byte gleich 0,5 Byte (4 Bit) oder die Differenz zwischen 3 Byte ("bandrowbytes") und 2,5 Byte (Byte für die Bilddaten). In der folgenden Abbildung wird ein Datenband für eine Zeile des Bildes veranschaulicht.
totalrowbytes: Die Gesamtanzahl der Daten-Bytes pro Zeile. Verwenden Sie "totalrowbytes", wenn Zusatzbits am Ende jeder Zeile vorhanden sind.
In einer BIL-Datei wird der Standardwert für "totalrowbytes" gemäß der folgenden Gleichung berechnet:
totalrowbytes = nbands x bandrowbytes
Für den Standardwert wird angenommen, dass keine Zusatzbits am Ende jeder Zeile vorhanden sind. Andernfalls müssen Sie "totalrowbytes" entsprechend festlegen. Angenommen, es ist ein Bild mit drei Bändern und "bandrowbytes" gleich 3 vorhanden. Dann ist "totalrowbytes" in der Standardeinstellung gleich 9. Wenn am Ende jeder Zeile ein Zusatzbyte vorhanden ist, legen Sie "totalrowbytes" auf 10 fest.
Für eine BIP-Datei wird der Standardwert gemäß einer anderen Gleichung berechnet:
totalrowbytes = (ncols x nbands x nbits) / 8
Dabei wird "totalrowbytes" auf die nächste Byte-Anzahl (eine Ganzzahl) aufgerundet, in der die Pixeldaten für die Zeile ordnungsgemäß gespeichert werden können. Angenommen, es ist ein BIP-Bild mit 5 Zeilen und 5 Spalten sowie 3 Bändern und 4 Bits pro Pixel vorhanden. Dann 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)
In dieser Abbildung wird die Standardeinstellung für "totalrowbytes" für ein BIP-Bild veranschaulicht.
Wenn das Layout der Daten mit dem Standardwert für "totalrowbytes" nicht ordnungsgemäß dargestellt werden kann, muss "totalrowbytes" auf die geeignete Anzahl von Bytes in den einzelnen Zeilen festgelegt werden.
bandgapbytes: Die Anzahl der Bytes zwischen den Bändern in einem BSQ-Bild. Die Standardeinstellung ist 0.
Im folgenden Beispiel finden Sie eine typische Header-Datei, die für ein BIL-Satellitenbild generiert werden könnte, in 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
In der folgenden Tabelle sind die Schlüsselwörter aufgeführt, die in einer HDR-Datei verwendet werden können:
Schlüsselwort |
Mögliche Werte: |
Standard |
---|---|---|
nrows |
Alle Ganzzahlwerte > 0 |
Kein |
ncols |
Alle Ganzzahlwerte > 0 |
Kein |
nbands |
Alle Ganzzahlwerte > 0 |
1 |
nbits |
1, 4, 8, 16, 32 |
8 |
pixeltype |
SIGNEDINT |
Ganzzahl ohne Vorzeichen |
byteorder |
I = Intel; M = Motorola |
Wie auf dem Host-Computer |
Layout |
bil, bip, bsq |
bil |
skipbytes |
Alle Ganzzahlwerte ≥ 0 |
0 |
ulxmap |
Alle reellen Zahlen |
0 |
ulymap |
Alle reellen Zahlen |
nrows - 1 |
xdim |
Alle reellen Zahlen |
1 |
ydim |
Alle reellen Zahlen |
1 |
bandrowbytes |
Alle Ganzzahlwerte > 0 |
Kleinster Ganzzahlwert ≥ (ncols x nbits) / 8 |
totalrowbytes |
Alle Ganzzahlwerte > 0 |
Für BIL: nbands x bandrowbytes; für BIP: kleinster Ganzzahlwert ≥ (ncols x nbands x nbits) / 8 |
bandgapbytes |
Alle Ganzzahlwerte ≥ 0 |
0 |
Zur Farbdatei
Die Farbdatei (CLR) ist eine optionale Datei, in der die Bild-Colormap für Einzelband-Falschfarbenbilder beschrieben wird. Wenn die Datei nicht vorhanden ist, wird das Bild in Graustufen angezeigt.
In der Farbdatei werden die Farben für die Pixelwerte des Bildes gespeichert. Die Farben werden anhand des RGB-Farbmodells definiert, in dem die Farben nach den Anteilen der Farben Rot, Grün und Blau beschrieben werden. Die Datei enthält mehrere Einträge, wobei jeder Eintrag in einer eigenen Zeile steht, in der die Farbe eines Pixelwertes im Bild beschrieben wird.
Das Format der Einträge lautet:
<value> <red> <green> <blue>
Dabei ist "<value>" ein bestimmter Pixelwert, und "<red>", "<green>" und "<blue>" sind die Farbkomponenten des Pixels. Sortieren Sie die Einträge in aufsteigender Reihenfolge nach Pixelwert. Wenn das erste Zeichen in einer Zeile, das kein Leerzeichen ist, keine Zahl ist, wird die Zeile als Kommentar interpretiert und ignoriert. Alle Zeichen in einer Zeile, die keine Leerzeichen sind und nach dem vierten Parameter ("<blue>") angegeben sind, werden ignoriert und können ebenfalls für Kommentare verwendet werden.
Die Komponenten Rot, Grün und Blau werden auf einer Werteskala von 0 bis 255 angegeben. Mit steigendem Farbwert steigt auch die Intensität der jeweiligen Farbkomponente. Die Standardfarbe für einen Pixelwert ohne Eintrag ist Schwarz. Im folgenden Beispiel finden Sie eine Musterfarbdatei für eine Raster-Bodenkarte mit den Pixelwerten 11, 16, 18, 19, 21, 98 und 99:
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)
Farbdateien werden nur für Einzelbandbilder verwendet. Einzelbandbilder mit einer Farbdatei werden als Falschfarbenbild interpretiert. Multiband-Bildern zugeordnete Farbdateien werden ignoriert.
Zur Statistikdatei
Die Statistikdatei (STX) ist eine optionale Datei, in der die Bildstatistik für die einzelnen Spektralbänder in einem Graustufen- oder Multiband-Bild beschrieben wird. Die Datei besteht aus mehreren Einträgen, je einem pro Band, in denen der minimale und der maximale Pixelwert, der Mittelwert, die Standardabweichung und zwei lineare Parameter zur Kontraststreckung gespeichert werden.
Jeder Eintrag weist folgendes Format auf (für jedes Band werden die Werte in einer Zeile angezeigt):
<band> <minimum> <maximum> {mean} {std_deviation}
{linear_stretch_min} {linear_stretch_max}
Dabei ist 2<band>" die Nummer des Bandes, "<minimum>" der minimale Pixelwert im Band, "<maximum>" der maximale Pixelwert im Band, "{mean}" der mittlere Pixelwert, "{std_deviation}" die Standardabweichung, "{linear_stretch_min}" der minimale Pixelwert für eine lineare Kontraststreckung und "{linear_stretch_max}" der maximale Pixelwert für eine lineare Kontrasterhöhung.
Die Werte für die einzelnen Parameter werden jeweils in einer Zeile eingegeben. Einträge, in denen das erste Zeichen in einer Zeile, das kein Leerzeichen ist, keine Zahl ist, werden als Kommentar behandelt und ignoriert. Erforderliche Parameter sind die Nummer des Bandes sowie der minimale und der maximale Pixelwert. Der Mittelwert, die Standardabweichung sowie der minimale und der maximale Wert für die lineare Streckung sind optionale Parameter. Mit "#" können Sie die optionalen Parameter überspringen.
Die Werte für die Nummer des Bandes reicht von 1 bis "nbands". Mit den Parametern "linear_stretch_min" und "linear_stretch_max" kann der Kontrast des Anzeigebildes erhöht werden. Pixelwerte kleiner als "linear_stretch_min" werden in Schwarz angezeigt, und Pixelwerte größer als "linear_stretch_max" werden in Weiß angezeigt. Die Pixelwerte zwischen dem minimalen und dem maximalen Parameter für die lineare Streckung werden in Graustufen angezeigt, wobei niedrigere Pixelwerte mit einer dunkleren Graustufe angezeigt werden.
Die Pixelwerte zwischen den Parametern für die lineare Streckung werden mit der maximalen Anzahl der Graustufen angezeigt, die auf dem Anzeigegerät verfügbar sind.
Wenn "linear_stretch_min" und "linear_stretch_max" nicht angegeben sind, werden als Standardwerte der Mittelwert minus zwei Standardabweichungen für "linear_stretch_min" bzw. der Mittelwert plus zwei Standardabweichungen für "linear_stretch_max" verwendet. Wenn die Standardabweichung nicht angegeben ist, werden der minimale und der maximale Pixelwert als Parameter zur Kontraststreckung verwendet.
In Multiband-Bildern wird jedes Band gestreckt, bevor das zusammengesetzte Bild angezeigt wird. Wenn eine Farbdatei (CLR) vorhanden ist, wird die lineare Kontraststreckung des Einzelband-Graustufenbildes außer Kraft gesetzt und das Bild stattdessen als Falschfarbenbild angezeigt.
Im folgenden Beispiel finden Sie eine Statistikdatei für ein Satellitenbild mit vier Bändern und 8 Bits pro Pixel pro 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