Band Interleaved by Line (ESRI(r) BIL), Band Interleaved by Pixel (ESRI BIP) et Band SeQuential (ESRI BSQ) sont trois méthodes utilisées couramment pour l'organisation des données d'images multicanaux. BIL, BIP et BSQ ne sont pas à proprement parler des formats d'image, mais plutôt des modèles utilisés pour stocker les valeurs de pixel réelles d'une image dans un fichier. Ces fichiers prennent en charge l'affichage d'images monocanal et multicanaux. Ils gèrent, en outre, les données d'image en couleurs vraies, multispectrales, en pseudo-couleurs, en nuances de gris et en noir et blanc.
BIL, BIP et BSQ sont des fichiers binaires auxquels doit être associé un en-tête de fichier ASCII pour être interprétés correctement pas ArcGIS. Cet en-tête contient des données auxiliaires sur l'image, telles que le nombre de lignes et de colonnes, si une palette de couleurs est présente, ou encore la latitude et la longitude.
Les données BIL (Band Interleaved by Line) stockent des informations de pixel canal par canal, et ce, pour chaque ligne de l'image. Ainsi, dans le cas d'une image à trois canaux, tous les canaux de données sont écrits pour la ligne 1, pour la ligne 2 et ainsi de suite, jusqu'à ce que le nombre total de lignes de l'image ait été atteint. Le diagramme suivant illustre les données BIL pour un jeu de données à trois canaux :
Les données BIP (Band Interleaved by Pixel) sont identiques aux données BIL, si ce n'est que les données de chaque pixel sont écrites canal par canal. Ainsi, si l'on prend la même image à trois canaux, les données des canaux 1, 2 et 3 sont écrites pour le premier pixel de la colonne 1, les données des canaux 1, 2 et 3 sont écrites pour le premier pixel de la colonne 2, etc.
Le format BSQ (Band SeQuential) stocke des informations sur l'image à raison d'un canal à la fois. En d'autres termes, les données de tous les pixels du canal 1 sont stockées en premier, suivies des données de tous les pixels du canal 2, etc.
Fichiers de description d'image
Trois fichiers de description peuvent être utilisés avec les fichiers BIL, BIP ou BSQ : un fichier d'en-tête (.hdr) obligatoire décrivant l'organisation des données de pixel des images, un fichier couleur (.clr) décrivant la palette de couleurs de l'image et un fichier de statistiques (.stx) décrivant les statistiques d'image de chaque canal de l'image. Ces fichiers texte ASCII peuvent être générés dans un éditeur de texte à l'aide des informations dont vous disposez au sujet de l'image.
Le fichier d'en-tête
Le fichier d'en-tête décrit les données d'image. Vous devez générer un fichier de ce type pour chaque image. Ce fichier doit porter le même nom que l'image, accompagné de l'extension .hdr. Par exemple :
<image>.hdr
Le fichier d'en-tête contient un ensemble d'entrées, chacune d'elles décrivant un attribut particulier de l'image. Une entrée peut, par exemple, décrire le nombre de lignes ou de colonnes de l'image. Le format de chaque entrée est le suivant :
<keyword> <value>
où <keyword> indique l'attribut particulier en cours de définition et <value> est la valeur pour laquelle l'attribut est défini. L'ordre des entrées n'a pas d'importance, mais chacune d'elles doit se trouver sur une ligne du fichier. Toute ligne du fichier qui ne commence pas par un mot-clé est traitée comme un commentaire et ignorée.
Vous trouverez, ci-dessous, la liste des mots-clés valides, ainsi que la description de l'attribut d'image qu'ils définissent. Des valeurs par défaut sont attribuées à plusieurs mots-clés. Vous pouvez omettre le mot-clé lorsque la valeur par défaut représente avec précision les données d'image.
nrows - Nombre de lignes dans l'image. Les lignes sont parallèles à l'axe x du système de coordonnées cartographiques. Aucune valeur par défaut n'est définie.
ncols - Nombre de colonnes dans l'image. Les colonnes sont parallèles à l'axe y du système de coordonnées cartographiques. Aucune valeur par défaut n'est définie.
nbands - Nombre de canaux spectraux dans l'image. La valeur par défaut est 1.
nbits - Nombre de bits par pixel et par canal. Les valeurs acceptables sont 1, 4, 8, 16 et 32. La valeur par défaut est 8 bits par pixel et par bande. Dans le cas d'une image en couleurs vraies à trois canaux (R,V,B) stockée à l'aide de 8 bits par pixel et par canal, nbits est égal à 8 et nbands est égal à 3, pour un total de 24 bits par pixel. Si la valeur nbits de l'image est égale à 1, nbands doit aussi être égal à 1.
pixeltype - Ce mot-clé indique que le type de pixel est un nombre entier signé. Vos données sont supposées utiliser des entiers non signés, à moins que vous employiez le mot-clé "pixeltype" avec la valeur "signedint".
byteorder - Ordre des octets dans lequel sont stockées les valeurs de pixel de l'image. L'ordre des octets est particulièrement important pour les images 16 bits avec 2 octets par pixel. Les valeurs acceptables sont les suivantes :
- I - ordre des octets Intel® (Silicon Graphics®, DEC Alpha™, PC), connu également sous le nom de little endian,
- M - ordre des octets Motorola® (Sun™, HP® et les autres), connu également sous le nom de big endian.
L'ordre des octets par défaut est le même que celui de la machine hôte qui exécute le logiciel.
layout - Organisation des canaux dans le fichier image. Les valeurs acceptables sont les suivantes :
- bil – Band Interleaved by Line. Il s'agit de l'option par défaut.
- bip - Band Interleaved by Pixel.
- bsq - Band SeQuential.
skipbytes - Nombre d'octets de données à ignorer dans le fichier image pour atteindre le début des données d'image. Ce mot-clé vous permet d'ignorer toute information d'en-tête d'image existante dans le fichier. La valeur par défaut est 0 octet.
ulxmap - Coordonnée cartographique sur l'axe x du centre du pixel supérieur gauche. Si vous spécifiez ce paramètre, définissez également ulymap, sans quoi une valeur par défaut sera utilisée.
ulymap - Coordonnée cartographique sur l'axe y du centre du pixel supérieur gauche. Si ce paramètre est défini, ulxmap doit l'être également ; dans le cas contraire, une valeur par défaut sera utilisée.
xdim - Dimension x d'un pixel exprimée en unités de la carte. Si ce paramètre est défini, ydim, ulxmap et ulymap doivent l'être également ; dans le cas contraire, une valeur par défaut sera utilisée.
ydim - Dimension y d'un pixel exprimée en unités de la carte. Si ce paramètre est défini, xdim, ulxmap et ulymap doivent l'être également ; dans le cas contraire, une valeur par défaut sera utilisée.
La figure ci-dessous illustre les valeurs par défaut pour ulxmap, ulymap, xdim et ydim. Les coordonnées cartographiques du centre du pixel supérieur gauche sont (ulxmap, ulymap) = (0, (nrows - 1)), tandis que le centre du pixel inférieur gauche a les coordonnées (0, 0). Dans la figure ci-dessous, la valeur de coordonnée pour ulxmap et ulymap est (0, 3). Les dimensions des pixels x et y sont définis, par défaut, sur xdim = 1 et ydim = 1.
bandrowbytes - Nombre d'octets par canal et par ligne. Il doit s'agir d'un nombre entier. Ce mot-clé est utilisé uniquement avec des fichiers BIL lorsque des bits supplémentaires se trouvent à la fin de chaque canal dans une ligne qui doit être ignorée. Le mot-clé bandrowbytes peut être considéré comme un index vers le point de départ du canal de données suivant. Si vous commencez au début de n'importe quel canal d'une ligne et déplacez bandrowbytes le long de cette ligne, vous arrivez au début du canal suivant.
La figure ci-dessous illustre une ligne de données pour une image à trois bandes. Bandrowbytes représente la somme des octets utilisés pour stocker les données d'image et des bits supplémentaires qui doivent être ignorés pour atteindre le canal suivant.
bandrowbytes = image data + extra bits
Pour définir le mot-clé bandrowbytes, vous devez connaître la disposition des données d'image ou, plus précisément, le nombre d'octets utilisés pour stocker des valeurs de pixel pour chaque canal d'une ligne. Si bandrowbytes n'est pas défini, une valeur par défaut est calculée avec l'équation suivante :
bandrowbytes = the smallest integer(ncols x nbits) / 8
La valeur par défaut convient en l'absence de bits supplémentaires à la fin de chaque canal d'une ligne et lorsque le nombre d'octets par canal et par ligne correspond au plus petit nombre entier d'octets capable de stocker, de manière adéquate, les données pour le canal. A titre d'exemple, si les données nécessitent 2,5 octets, le plus petit nombre entier capable de stocker les données est 3 octets. Dans ces deux cas, il n'est pas nécessaire de définir bandrowbytes. Cependant, si le nombre d'octets par canal et par ligne est supérieur à la valeur par défaut, définissez bandrowbytes en conséquence.
Les deux exemples ci-après illustrent le comportement par défaut du mot-clé bandrowbytes. Le premier exemple illustre l'absence de bits à la fin d'un canal dans une ligne, tandis que le second décrit une situation où ces bits sont présents.
- En l'absence de bits supplémentaires à la fin d'un canal, bandrowbytes est égal au nombre d'octets utilisés pour stocker les données d'image.
Par exemple, dans le cas d'une image de 6 sur 6 avec trois canaux et 8 bits (1 octet) par pixel, les données d'image nécessitent 6 octets par canal et par ligne.bandrowbytes = image data
Par défaut, bandrowbytes est défini sur 6 octets, comme le montre l'équation ci-dessous.bytes per band per row = ncols x nbits = 6 x 8 = 48 bits or 6 bytes
Etant donné que le nombre d'octets par canal et par ligne est égal à bandrowbytes, la valeur par défaut constitue le réglage approprié. Le mot-clé bandrowbytes ne doit donc pas être spécifié de manière explicite.bandrowbytes = (ncols x nbits) / 8 = (6 x 8) / 8 = 48 / 8 bandrowbytes = 6 bytes
- Si des bits supplémentaires sont présents à la fin d'un canal dans une ligne, bandrowbytes n'est pas égal au nombre d'octets de données par canal et par ligne.
Supposons que vous ayez une image à trois canaux de 5 lignes et de 5 colonnes avec 4 bits par pixel. Par défaut, bandrowbytes est défini sur le plus petit nombre (entier) d'octets capable de contenir les données de manière adéquate. Dans ce cas, la valeur par défaut est 3. Elle est calculée comme suit :
Cependant, les données d'image nécessitent uniquement 2,5 octets ; on obtient cette valeur en multipliant ncols par nbits. Le nombre d'octets à ignorer est donc de 0,5 (4 bits), soit la différence entre 3 octets (bandrowbytes) et 2,5 octets (octets de données d'image). La figure ci-dessous illustre un canal de données pour une ligne de l'image.bandrowbytes = (ncols x nbits) / 8 = (5 x 4) / 8 = 20 / 8 = 2.5 = 3 (when rounded up to the nearest integer)
totalrowbytes - Nombre total d'octets de données par ligne. Utilisez le mot-clé totalrowbytes en présence de bits supplémentaires à la fin de chaque ligne.
Dans le cas d'un fichier BIL, la valeur par défaut de totalrowbytes est calculée avec l'équation suivante :
totalrowbytes = nbands x bandrowbytes
La valeur par défaut suppose l'absence de bits supplémentaires à la fin de chaque ligne. Si des bits sont présents, définissez totalrowbytes en conséquence. Par exemple, dans le cas d'une image à trois canaux dont la valeur bandrowbytes est égale à 3, totalrowbytes a, par défaut, la valeur 9. Si un octet de données supplémentaire est présent à la fin de la ligne, définissez totalrowbytes sur 10.
Dans le cas d'un fichier BIP, la valeur par défaut est calculée avec une équation différente :
totalrowbytes = (ncols x nbands x nbits) / 8
La valeur totalrowbytes est arrondie au nombre (entier) d'octets le plus proche capable de stocker, de manière adéquate, les données de pixel pour la ligne. Par exemple, dans le cas d'une image BIP de 5 (lignes) sur 5 (colonnes) avec 3 canaux et 4 bits par pixel, la valeur par défaut de totalrowbytes est :
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)
Cette figure illustre le paramètre par défaut de totalrowbytes pour une image BIP.
Si la valeur par défaut de totalrowbytes ne représente pas précisément l'organisation des données, totalrowbytes doit être défini sur le nombre approprié d'octets dans chaque ligne.
bandgapbytes - Nombre d'octets entre les canaux dans une image au format BSQ. La valeur par défaut est 0.
Vous trouverez, ci-dessous, un exemple type de fichier d'en-tête pouvant être généré pour une image satellite BIL dans laquelle les données d'image sont précédées d'un en-tête de 128 octets.
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
Le tableau suivant vous offre un récapitulatif des mots-clés utilisables dans le fichier .hdr :
Mot-clé | Valeur acceptable | Par défaut |
---|---|---|
nrows | Tout entier > 0 | Aucune |
ncols | Tout entier > 0 | Aucune |
nbands | Tout entier > 0 | 1 |
nbits | 1, 4, 8, 16, 32 | 8 |
pixeltype | SIGNEDINT | Entier non signé |
byteorder | I = Intel ; M = Motorola | Même valeur que la machine hôte |
mise en page | bil, bip, bsq | bil |
skipbytes | Tout entier ≥ 0 | 0 |
ulxmap | Tout nombre réel | 0 |
ulymap | Tout nombre réel | nrows - 1 |
xdim | Tout nombre réel | 1 |
ydim | Tout nombre réel | 1 |
bandrowbytes | Tout entier > 0 | Entier le plus petit ≥ (ncols x nbits) / 8 |
totalrowbytes | Tout entier > 0 | Pour bil : nbands x bandrowbytes ; pour bip : plus petit nombre entier ≥ (ncols x nbands x nbits) / 8 |
bandgapbytes | Tout entier ≥ 0 | 0 |
Le fichier couleur
Le fichier couleur (.clr) est un fichier facultatif qui décrit la palette de couleurs pour des images en pseudo-couleurs monocanal. Si ce fichier n'existe pas, l'image s'affiche en nuances de gris.
Ce fichier enregistre les couleurs à associer aux valeurs de pixel dans l'image. Les couleurs sont définies à l'aide du modèle de couleurs RVB décrivant la quantité de rouge, de vert et de bleu. Le fichier se compose d'un ensemble d'entrées, chacune sur une ligne séparée, qui décrit la couleur correspondant à une valeur de pixel dans l'image.
Le format de chaque entrée est le suivant :
<value> <red> <green> <blue>
où <value> est une valeur de pixel donnée et <red>, <green> et <blue> sont les composantes de couleur du pixel. Triez toutes les entrées par ordre croissant et par valeur de pixel. Si le premier caractère non vierge de la ligne n'est pas un chiffre, la ligne est considérée comme un commentaire et ignorée. Tout caractère non vierge au-delà du quatrième paramètre (blue) est ignoré et peut être utilisé également comme commentaire.
Les composantes rouge, verte et bleue sont décrites à l'aide d'une échelle dont les valeurs sont comprises entre 0 et 255. L'intensité d'une composante de couleur croît parallèlement à l'augmentation des valeurs de couleur. La couleur par défaut d'une valeur de pixel sans aucune entrée est le noir. Vous trouverez, ci-dessous, un exemple de fichier couleur pour une carte des sols raster avec les valeurs de pixel 11, 16, 18, 19, 21, 98 et 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)
Les fichiers couleur sont utilisés uniquement avec des images monocanal. Toute image monocanal pourvue d'un fichier couleur est interprétée comme une image en pseudo-couleurs. Les fichiers couleur qui accompagnent des images multicanaux sont ignorés.
Le fichier de statistiques
Le fichier de statistiques (.stx) est un fichier facultatif qui décrit les statistiques d'images pour chaque canal spectral d'une image en niveau de gris ou multicanaux. Le fichier se compose d'une série d'entrées, une par canal, qui enregistre les valeurs de pixel minimale et maximale, la moyenne, l'écart type, ainsi que deux paramètres d'étirement de contraste linéaire.
Le format de chaque entrée est le suivant (toutes les valeurs apparaissent sur la même ligne du fichier pour chaque canal) :
<band> <minimum> <maximum> {mean} {std_deviation}
{linear_stretch_min} {linear_stretch_max}
où <band> est le numéro de canal, <minimum> la valeur de pixel minimale dans le canal, <maximum> la valeur de pixel maximale dans le canal, {mean} la valeur de pixel moyenne, {std_deviation} l'écart type, {linear_stretch_min} la valeur de pixel minimale pour un étirement de contraste linéaire et {linear_stretch_max} la valeur de pixel maximale pour un étirement de contraste linéaire.
Les valeurs de chaque paramètre sont saisies sur une ligne. Toute entrée dans laquelle le premier caractère non vierge n'est pas un chiffre est considérée comme un commentaire et ignorée. Le numéro de canal et les valeurs de pixel minimale et maximale sont des paramètres obligatoires ; la moyenne, l'écart type, ainsi que les valeurs d'étirement linéaire minimale et maximale sont des paramètres facultatifs. Utilisez le caractère # pour ignorer les paramètres facultatifs.
Les numéros de canaux sont compris entre 1 et nbands. Les paramètres linear_stretch_min et linear_stretch_max permettent d'accentuer le contraste de l'image affichée. Les valeurs de pixel inférieures à linear_stretch_min sont affichées en noir, tandis que les valeurs supérieures à linear_stretch_max apparaissent en blanc. Les valeurs de pixel comprises entre les paramètres d'étirement minimum et maximum sont affichées à l'aide de nuances de gris ; des nuances plus foncées étant utilisées pour afficher les valeurs inférieures.
Les valeurs de pixel comprises entre les paramètres d'étirement linéaire sont affichées en utilisant le nombre maximum de nuances de gris disponibles sur le périphérique d'affichage.
Si les valeurs linear_stretch_min et linear_stretch_max ne sont pas spécifiées, elles sont définies, par défaut, sur la moyenne moins deux écarts type pour linear_stretch_min et la moyenne plus deux écarts type pour linear_stretch_max. Si l'écart type n'est pas donné, les valeurs de pixel minimale et maximale sont utilisées comme paramètres d'étirement de contraste.
Dans le cas des images multicanaux, chaque canal est étiré avant l'affichage de l'image composite. La présence d'un fichier couleur (.clr) annule l'étirement de contraste linéaire d'une image monocanal en nuances de gris et affiche, à la place, l'image sous la forme d'une image en pseudo-couleurs.
Vous trouverez, ci-dessous, un exemple de fichier de statistiques pour une image satellite à quatre canaux avec 8 bits par pixel et par canal :
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