BIL-, BIP- und BSQ-Raster-Dateien

Was sind Raster-Dateien?

Raster-Dateien speichern flächenbezogene Daten in Form regelmäßiger Zellen (Pixel), wobei jeder Wert ein Attribut der realen Welt repräsentiert: Höhe, Temperatur, Vegetation, Landnutzung, Klassifikation usw. Sie kommen überall dort zum Einsatz, wo kontinuierliche Daten benötigt werden – etwa in Fernerkundung, GIS, maschineller Bildverarbeitung oder Umweltmodellierung.

Jede Raster-Datei hat:

  • eine definierte räumliche Auflösung (z. B. 10 m/Pixel)
  • eine feste Matrix aus Zeilen und Spalten
  • eine Codierung: Farbtiefe, Datentyp, Byte-Reihenfolge
  • optional: georeferenzierte Metadaten (z. B. GeoTIFF)

Gängige Formate: TIFF, PNG, BMP, GeoTIFF, NetCDF, HDF, BIL/BIP/BSQ. Letztere sind besonders für multispektrale oder hyperspektrale Daten geeignet.

BIL, BIP und BSQ – das Format bestimmt die Verarbeitung

Multiband-Raster – z. B. aus Satellitenbildern oder Drohnen – enthalten mehrere Kanäle pro Pixel. Die Formate BIL (Band Interleaved by Line), BIP (Band Interleaved by Pixel) und BSQ (Band Sequential) bestimmen, wie diese Kanäle gespeichert werden.

  • BIL: zeilenweise abgelegt – erst Band1-Zeile, dann Band2-Zeile etc.
  • BIP: pixelweise abgelegt – alle Bänder eines Pixels hintereinander
  • BSQ: bandweise gespeichert – gesamtes Band1, dann Band2 etc.

BIP ist speichertechnisch ideal für pixelbasierte Operationen (Klassifikation), BSQ für bandweise Verarbeitung (z. B. PCA), BIL für zeilenorientiertes Streaming.

Header + Datenblock: Wie BIL/BIP/BSQ funktionieren

Diese Formate bestehen meist aus einer .bil/.bip/.bsq-Datei und einer zugehörigen .hdr-Datei. Letztere enthält die Metadaten – etwa:

  • Zeilen, Spalten, Bänder
  • Pixel-Typ (z. B. float32, uint16)
  • Interleave-Modus
  • Georeferenzierung (UTM, WGS84 etc.)

Beispiel für ein .hdr:

samples = 512
lines = 512
bands = 3
data type = 4
interleave = bip
byte order = 0
map info = {UTM, 1.0, 1.0, 500000, 5200000, 10, 10, 33, North, WGS-84}

Verarbeitung in .NET: Ein einfaches C#-Beispiel für BIP

Wer multispektrale Daten mit .NET laden will (z. B. für Klassifikation oder KI), kann den BIP-Puffer direkt verarbeiten. Beispiel: 3-Band-Bild mit 16-Bit-Werten.

ushort[,,] LoadBipImage(string path, int width, int height, int bands)
{
    ushort[,,] image = new ushort[height, width, bands];
    using var fs = new FileStream(path, FileMode.Open);
    using var br = new BinaryReader(fs);

    for (int y = 0; y < height; y++)
    {
        for (int x = 0; x < width; x++)
        {
            for (int b = 0; b < bands; b++)
            {
                image[y, x, b] = br.ReadUInt16(); // Little Endian assumed
            }
        }
    }

    return image;
}

Ähnlich lassen sich auch BIL und BSQ laden – man muss nur die Lesereihenfolge anpassen. Für große Dateien: Span<T>, MemoryMappedFile oder Unsafe-Code verwenden.

Anwendungen: Was man mit diesen Formaten machen kann

  • Klassifikation (z. B. Random Forest oder SVM auf NDVI, NDWI)
  • Bildfusion (z. B. SAR + optisch, Multiresolution)
  • Panschärfung (z. B. Intensity-Hue-Saturation)
  • Vegetationsindizes (NDVI, SAVI, EVI)
  • Feature Extraction (z. B. PCA, texture filters)

In GIS-Umgebungen wie ArcGIS, QGIS oder ENVI sind diese Formate Standard – lassen sich aber auch problemlos mit GDAL oder ENVI nutzen.

Visualisierung & Interpretation: Was Entwickler beachten sollten

  • BIP: ideal für Darstellung und KI-Modelle (Pixel = [R, G, NIR])
  • BIL: schnell streambar zeilenweise – gut für große Datenmengen
  • BSQ: besonders bei mathematischer Analyse (z. B. PCA)
  • Legenden, Farbcodierung, Histogramm-Stretching: entscheidend für die Interpretation
  • Skalierung von Werten: Viele Rohdaten liegen als uint16 vor (0–65535) – für Darstellung oft in byte konvertieren (0–255)

Quellen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert