Banda intercalada por línea (BIL), banda intercalada por píxel (BIP) y banda secuencial (BSQ) son tres métodos comunes de organización de datos de imagen por imágenes multibanda. BIL, BIP y BSQ no son formatos de imagen, pero sí son esquemas para almacenar los valores de píxel reales de una imagen en un archivo. Estos archivos admiten la visualización de imágenes simples y multibanda, y manejan datos de imágenes en blanco y negro, en escala de grises, en pseudocolor, en color verdadero y multiespectrales.
Los archivos BIL, BIP y BSQ son archivos binarios y deben tener un archivo de encabezado ASCII asociado para que se interprete correctamente. Este archivo de encabezado contiene datos secundarios sobre la imagen, por ejemplo, el número de filas y columnas en la imagen, si hay un mapa de color, y la latitud y longitud.
Los datos de banda intercalada por línea almacenan información de píxel banda por banda para cada línea o fila de la imagen. Por ejemplo, dada una imagen de tres bandas, las tres bandas de datos se escriben para la fila 1, las tres bandas de datos se escriben para la fila 2, y así sucesivamente, hasta que se alcance la cantidad total de filas en la imagen. El siguiente diagrama ilustra datos BIL para un dataset de tres bandas:
Consulte un ejemplo de un archivo BIL
Los datos de banda intercalada por píxel son similares a los datos BIL, excepto que los datos para cada píxel se escriben banda por banda. Por ejemplo, con la misma imagen de tres bandas, los datos para las bandas 1, 2 y 3 se escriben para el primer píxel en la columna 1, los datos para las bandas 1, 2 y 3 se escriben para el primer píxel en la columna 2, y así sucesivamente.
Consulte un ejemplo de un archivo BIP
El formato secuencial de banda almacena información para la imagen una banda a la vez. En otras palabras, los datos de todos los píxeles para la banda 1 se almacenan primero, después los datos de todos los píxeles para la banda 2, y así sucesivamente.
Consulte un ejemplo de un archivo BSQ
Archivos de descripción de la imagen
Existen tres archivos de descripción que puede proporcionar con archivos BIL, BIP o BSQ: un archivo de encabezado (.hdr) que describe el diseño de los datos de píxel de la imagen y se debe proporcionar, un archivo de color (.clr) que describe el mapa de color de la imagen y un archivo de estadísticas (.stx) que describe las estadísticas de imagen para cada banda de la imagen. Los archivos de texto ASCII se pueden generar en un editor de texto con la información que conoce sobre la imagen.
Archivo de encabezado
El archivo de encabezado describe los datos de imagen. Debe generar un archivo de encabezado para cada imagen, y debe tener el mismo nombre de archivo con la extensión .hdr, por ejemplo: <image>.hdr.
El archivo de encabezado contiene un conjunto de entradas; cada una de ellas describe un atributo particular de la imagen. Por ejemplo, una entrada puede describir la cantidad de filas o columnas en la imagen. El formato de cada entrada es <keyword> <value>, donde <keyword> indica el atributo concreto que se configura y <value> es el valor en el que se configura el atributo. Las entradas en el encabezado pueden estar en cualquier orden, pero cada una debe estar en una línea separada del archivo. Cualquier línea en el archivo que no comience con una palabra clave se trata como un comentario y se ignora.
El archivo de encabezado contiene palabras clave válidas y describe el atributo de imagen concreto que define cada una. Varias de las palabras clave tienen valores predeterminados. Donde el valor predeterminado representa correctamente los datos de imagen, puede omitir la palabra clave del archivo de encabezado.
La palabra clave nrows denota el número de filas en la imagen. Las filas son paralelas al eje x del sistema de coordenadas del mapa. No hay valor predeterminado.
La palabra clave ncols denota el número de columnas en la imagen. Las columnas son paralelas al eje y del sistema de coordenadas del mapa. No hay valor predeterminado.
La palabra clave nbands denota el número de bandas espectrales en la imagen. El valor predeterminado es 1.
La palabra clave nbits denota el número de bits por píxel por banda. Los valores aceptables son 1, 4, 8, 16 y 32. El valor predeterminado es 8 bits por píxel por banda. Para una imagen de color verdadero con tres bandas (RGB) almacenada con 8 bits para cada píxel en cada banda, nbits es igual a 8 y nbands es igual a 3 para un total de 24 bits por píxel. Para una imagen con nbits igual a 1, nbands también debe ser igual a 1.
La palabra clave pixeltype denota que su tipo de píxel es un entero con signo. Se supone que los datos utilizan los enteros sin signo, a menos que se utilice la palabra clave pixeltype y su valor sea SIGNEDINT.
La palabra clave byteorder denota el orden de bytes en el que se almacenan los valores de píxel de la imagen. El orden de bytes es importante para las imágenes de 16 bits con 2 bytes por píxel. Los valores aceptables son los siguientes:
- I—Orden de bytes Intel (Silicon Graphics, DEC Alpha, PC), también conocido como little endian
- M—Orden de bytes Motorola (Sun, HP y otros), también conocido como big endian
El orden de bytes predeterminado es el mismo que el del equipo host que ejecuta el software.
La palabra clave layout denota la organización de las bandas en el archivo de imagen. Los valores aceptables son los siguientes:
- bil—Banda intercalada por línea. Esta es la opción predeterminada.
- bip—Banda intercalada por píxel.
- bsq—Secuencial de banda.
La palabra clave skipbytes denota la cantidad de bytes de datos en el archivo de imagen a omitir para alcanzar el inicio de los datos de imagen. Esta palabra clave le permite omitir cualquier información del encabezado de imagen existente en el archivo. El valor predeterminado es 0 bytes.
La palabra clave ulxmap denota la coordenada de mapa del eje x del centro del píxel superior izquierdo. Si se especifica este parámetro, también se debe establecer ulymap; de lo contrario, se utiliza un valor predeterminado.
La palabra clave ulymap denota la coordenada de mapa del eje y del centro del píxel superior izquierdo. Si se especifica este parámetro, también se debe establecer ulxmap; de lo contrario, se utiliza un valor predeterminado.
La palabra clave xdim denota la dimensión x de un píxel en unidades de mapa. Si se especifica este parámetro, también se debe establecer ydim, ulxmap y ulymap; de lo contrario, se utiliza un valor predeterminado.
La palabra clave ydim denota la dimensión y de un píxel en unidades de mapa. Si se especifica este parámetro, también se debe establecer xdim, ulxmap y ulymap; de lo contrario, se utiliza un valor predeterminado.
La siguiente figura muestra los valores predeterminados para ulxmap, ulymap, xdim y ydim. El centro del píxel superior izquierdo tiene coordenadas de mapa (ulxmap, ulymap) = (0, (nrows - 1)), con el centro del píxel inferior izquierdo en (0, 0). En esta figura, el valor de coordenadas para ulxmap y ulymap es (0, 3). Las dimensiones x e y del píxel tendrán el valor predeterminado xdim = 1 y ydim = 1.
La palabra clave bandrowbytes denota el número de bytes por banda por fila. Debe ser un entero. Esta palabra clave se utiliza solamente con archivos BIL cuando hay bits extra al final de cada banda dentro de una fila que se debe omitir. Puede entenderse como un índice al punto de partida de la siguiente banda de datos. A partir del inicio de cualquier banda en una fila, mover bandrowbytes a lo largo de esa fila lleva al comienzo de la próxima banda.
En la figura de abajo se ilustra una fila de datos para una imagen de tres bandas. Aquí, bandrowbytes es la suma de la cantidad de bytes que se utilizan para almacenar los datos de imagen y los bits adicionales que se deben omitir para alcanzar la próxima banda.
bandrowbytes = image data + extra bits
Para establecer bandrowbytes, debe conocer el diseño de los datos de imagen o, más específicamente, cuántos bytes se utilizan para almacenar valores de píxel para cada banda en una fila. Si no se especifica bandrowbytes, se calcula un valor predeterminado con la siguiente ecuación:
bandrowbytes = the smallest integer(ncols x nbits) / 8
El valor predeterminado maneja casos donde no hay bits de acompañamiento extra al final de cada banda en una fila y donde el número de bytes por banda por fila es el número entero más pequeño de bytes que almacenará en forma adecuada los datos para la banda; por ejemplo, si los datos requieren 2.5 bytes, 3 bytes es el número entero más pequeño de bytes que podría almacenar los datos. En estos dos casos, no se debe establecer bandrowbytes. Sin embargo, si el número de bytes por banda por fila es mayor que el predeterminado, establezca bandrowbytes según corresponda.
Los siguientes dos ejemplos muestran el comportamiento predeterminado de bandrowbytes. El primer ejemplo describe el caso para el que no hay bits de acompañamiento al final de una banda en una fila, y el segundo describe el caso para el que hay.
- Si no hay bits de acompañamiento adicionales al final de una banda, bandrowbytes equivale al número de bytes que se utiliza para almacenar los datos de imagen.
Por ejemplo, dada una imagen de 6 por 6 con tres bandas y 8 bits (1 byte) por píxel, los datos de imagen requieren 6 bytes por banda por fila.bandrowbytes = image data
De forma predeterminada, bandrowbytes se establece en 6 bytes, como se muestra mediante la siguiente ecuación:bytes per band per row = ncols x nbits = 6 x 8 = 48 bits or 6 bytes
Debido a que la cantidad de bytes por banda por fila equivale a bandrowbytes, el valor predeterminado es la configuración adecuada. Por tanto, bandrowbytes no se debe especificar explícitamente.bandrowbytes = (ncols x nbits) / 8 = (6 x 8) / 8 = 48 / 8 bandrowbytes = 6 bytes
- Si hay bits de acompañamiento al final de una banda en una fila, bandrowbytes no equivale al número de bytes de los datos por banda por fila.
Supongamos que tiene una imagen de tres bandas de 5 filas y 5 columnas con 4 bits por píxel. De forma predeterminada, bandrowbytes se establece en el número entero más pequeño de bytes que mantendrán adecuadamente los datos. En este caso, el valor predeterminado es 3. Se calcula de la siguiente manera:
Sin embargo, los datos de imagen solo requieren 2,5 bytes, que se calculan al multiplicar ncols por nbits. Por lo tanto, el número de bytes a omitir es .5 bytes (4 bits), o la diferencia entre 3 bytes (bandrowbytes) y 2,5 bytes (bytes de los datos de imagen). En la figura de abajo se muestra una banda de datos para una fila de la imagen.bandrowbytes = (ncols x nbits) / 8 = (5 x 4) / 8 = 20 / 8 = 2.5 = 3 (when rounded up to the nearest integer)
La palabra clave totalrowbytes denota la cantidad total de bytes de datos por fila. Utilice totalrowbytes cuando haya bits de acompañamiento adicionales al final de cada fila.
Para un archivo BIL, el valor predeterminado para totalrowbytes se calcula con la siguiente ecuación:
totalrowbytes = nbands x bandrowbytes
El valor predeterminado asume que no hay bits de acompañamiento extra al final de cada fila. Si los hay, establezca totalrowbytes según corresponda. Por ejemplo, dada una imagen de tres bandas con bandrowbytes igual a 3, totalrowbytes es igual a 9 de forma predeterminada. Si hay un byte de acompañamiento adicional de datos al final de la fila, establezca totalrowbytes en 10.
Para un archivo BIP, el valor predeterminado se calcula con una ecuación diferente:
totalrowbytes = (ncols x nbands x nbits) / 8
El valor de totalrowbytes se redondea al número entero más cercano de bytes que pueden almacenar en forma adecuada los datos de píxel para la fila. Por ejemplo, dada una imagen BIP de 5 (filas) por 5 (columnas) con 3 bandas y 4 bits por píxel, el valor predeterminado de totalrowbytes es el siguiente:
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)
Esta figura ilustra la configuración predeterminada de totalrowbytes para una imagen BIP.
Si el valor predeterminado para totalrowbytes no representa correctamente el diseño de los datos, totalrowbytes se debe establecer en el número de bytes adecuado en cada fila.
La palabra clave bandgapbytes denota la cantidad de bytes entre bandas en un formato de imagen BSQ. El valor predeterminado es 0.
El siguiente es un archivo de encabezado típico que se puede generar para una banda intercalada por imagen satelital de línea donde los datos de imagen están precedidos por un encabezado de 128 bytes.
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
En la siguiente tabla se proporciona un resumen de las palabras clave que se pueden utilizar en el archivo .hdr:
Palabra clave | Valor aceptable | Predeterminado |
---|---|---|
nrows | Cualquier entero > 0 | Ninguna |
ncols | Cualquier entero > 0 | Ninguna |
nbands | Cualquier entero > 0 | 1 |
nbits | 1, 4, 8, 16, 32 | 8 |
pixeltype | SIGNEDINT | Entero sin signo |
byteorder | I = Intel; M = Motorola | Igual que el equipo host |
layout | bil, bip, bsq | bil |
skipbytes | Cualquier entero ≥ 0 | 0 |
ulxmap | Cualquier número real | 0 |
ulymap | Cualquier número real | nrows - 1 |
xdim | Cualquier número real | 1 |
ydim | Cualquier número real | 1 |
bandrowbytes | Cualquier entero > 0 | Entero más pequeño ≥ (ncols x nbits) / 8 |
totalrowbytes | Cualquier entero > 0 | Para bil: nbands x bandrowbytes; para bip: entero más pequeño ≥ (ncols x nbands x nbits) / 8 |
bandgapbytes | Cualquier entero ≥ 0 | 0 |
Archivo de color
El archivo de color (.clr) es un archivo opcional que describe el mapa de color de la imagen para imágenes pseudocolor de banda única. Si este archivo no existe, la imagen se muestra como una imagen en escala de grises.
El archivo de color registra los colores que se asociarán con los valores de píxel en la imagen. Los colores se definen mediante el modelo de color RGB que describe los colores en la cantidad de rojo, verde y azul que contienen. El archivo consta de un conjunto de entradas, cada una en una línea separada, que describe el color que corresponde a un valor de píxel en la imagen.
Cada entrada tiene el formato <value> <red> <green> <blue>, donde a <value> se le otorga un valor de píxel y <red>, <green> y <blue> son los componentes de color para el píxel. Ordene todas las entradas en orden ascendente por valor de píxel. Si el primer carácter que no está en blanco en la línea no es un número, la línea se considera un comentario y se ignora. Cualquier carácter que no está en blanco en una línea más allá del cuarto parámetro (azul) se ignora y se puede utilizar también como comentario.
Los componentes rojo, verde y azul se describen con una escala con valores que van desde 0 a 255. A medida que aumenta el valor de color, también aumenta la intensidad del componente de color particular. El color predeterminado para un valor de píxel sin entrada es negro. Debajo se muestra un archivo de color de muestra para un mapa de suelos ráster con valores de píxel de 11, 16, 18, 19, 21, 98 y 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)
Los archivos de color se utilizan solamente con imágenes de banda única. Cualquier imagen de banda única con un archivo de color se interpreta como una imagen en pseudocolor. Los archivos de color que acompañan imágenes multibanda se ignoran.
Archivo de estadísticas
El archivo de estadísticas (.stx) es un archivo opcional que describe estadísticas de imagen para cada banda espectral en una imagen de escala de grises o multibanda. El archivo consta de una serie de entradas, una para cada banda, que registra el valor de píxel mínimo, el valor de píxel máximo, el valor medio, la desviación estándar y dos parámetros de aumento de contraste lineal.
Cada entrada tiene el siguiente formato, donde todos los valores aparecen en la misma línea en el archivo para cada banda:
<band> <minimum> <maximum> {mean} {std_deviation}
{linear_stretch_min} {linear_stretch_max}
A continuación se describe cada componente del archivo:
- <band> es el número de banda.
- <minimum> es el valor de píxel mínimo en la banda.
- <maximum> es el valor de píxel máximo en la banda.
- {mean} es el valor medio del píxel.
- {std_deviation} es la desviación estándar.
- {linear_stretch_min} es el valor de píxel mínimo para un aumento de contraste lineal.
- {linear_stretch_max} es el valor de píxel máximo para un aumento de contraste lineal.
Los valores para cada parámetro se introducen en una línea. Cualquier entrada en la que el primer carácter que no está en blanco no es un número se trata como un comentario y se ignora. El número de banda y los valores de píxel mínimo y máximo son parámetros requeridos; el valor medio, la desviación estándar, el valor mínimo de extensión lineal y el valor máximo de extensión lineal son parámetros opcionales. Utilice el símbolo de número (#) para omitir los parámetros opcionales.
Los números de banda pueden ir de 1 a nbands. Los parámetros linear_stretch_min y linear_stretch_max se utilizan para expandir el contraste de la imagen que se visualiza. Los valores de píxel menores que linear_stretch_min se muestran en negro, y los valores de píxel mayores que linear_stretch_max se muestran en blanco. Los valores de píxel que caen entre los parámetros de extensión lineal mínima y máxima se muestran sombreados en gris, y los valores de píxel más bajos se muestran sombreados en gris más oscuro.
Los valores de píxel que están entre los parámetros de extensión lineal se muestran con el número máximo de matices de gris disponibles en el dispositivo de visualización.
Si no se especifican linear_stretch_min ni linear_stretch_max, se establece de forma predeterminada el valor medio menos dos desviaciones estándar para linear_stretch_min y el valor medio más dos desviaciones estándar para linear_stretch_max. Si no se proporciona la desviación estándar, los valores de píxel mínimo y máximo se utilizan como los parámetros de aumento de contraste.
Para las imágenes multibanda, cada banda se extiende antes de que se muestre la imagen compuesta. La presencia de un archivo de color (.clr) invalida el aumento de contraste lineal de una imagen en escala de grises de banda única y, en cambio, muestra la imagen como una imagen en pseudocolor.
El siguiente es un archivo de estadísticas de muestra para una imagen satelital de cuatro bandas con 8 bits por píxel por banda:
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