El uso de instrumentación electrónica en las observaciones astronómicas,
como la radio astronomía, los arreglos CCD, etc. a obligado a tener imágenes
digitales y en consecuencia, a desarrollar procesos computacionales para su
análisis.
Estas imágenes generalmente viajan entre institutos y observatorios, donde los equipos de cómputo varian, así como la manera de grabar la información digital. Además cada instituto desarrolla una gran cantidad de software basado en su propio formato. Esto implicaría tener un formato estándar para el traspaso de imágenes digitales y obligaría a cada instituto a realizar dos programas, uno para leer el formato estándar y pasarlo al formato local y otro para realizar la tarea inversa, pero si esto lo multiplicamos por el número de institutos que
tienen alguna relación, se convertiria en una serie de programas de dificil uso.
En 1977 la "Workshop on Standars for Image Pattern Recognition", después de revisar una gran variedad de formatos, concluyó que ninguno de ellos era simple, flexible y general, pero acordó el diseño de uno nuevo. De esta manera nacio el formato FITS - Flexible Image Transport System.
FITS es un formato para escribir imágenes digitales sobre cinta magnética de 7 y 9 pistas, las propiedades físicas de la cinta son especificadas conforme al ANSI - American National Standars Institute.
Cada registro físico sobre la cinta contiene uno y sólo un registro lógico, los registros tienen una longitud de 23,040 bits (2,880 bytes de 8 bits), esta longitud siempre es divisible por cada byte y longitud de palabra de cualquier computadora comercial, esto es de 6, 8, 12, 16, 18, 24, 32, 36, 48, 60 y 64 bits.
Cada imagen se deposita en un archivo de cinta, el cual inicia con uno o más registros lógicos que contienen el encabezado de los datos que son 36 tarjetas de 80 carácteres de 8 bits. El código empleado es el ASCII, usando los primeros 7 bits únicamente.
El primer registro del arreglo de datos aparece inmediátamente después del último registro del encabezado. El primer valor de pixel de la imagen aparece en la primera posición del primer registro del arreglo de datos. El primer pixel de cada fila siempre se pondrá dentro de la siguiente posición de pixel disponible en el registro lógico corriente. Y el residuo del último registro del arreglo de datos después del último pixel de la imagen será llenado con ceros.
El formato soporta tres tipos de información, que son:
Los registros de encabezado describen la estructura y el sistema de coordenadas del arreglo de datos, llevando además, parámetros auxiliares y comentarios. El encabezado como ya se dijo, es escrito en código ASCII para ser interpretado facilmente por el usuario. Cada línea de descripción se le llama tarjeta y consta de 80 columnas, pueden existir tarjetas de comentarios con cantidades ilimitadas de texto, inclusive se puede transportar un programa fuente. No existe un límite en el número de tarjetas para el encabezado, únicamente la última tarjeta deberá tener la llave END. La gramática básica de cada tarjeta en un encabezado FITS es dada por:
REPRESENTACION DE LA INFORMACION
Se requiere que los 2 o 4 bytes de 16 o 32 bits por pixel respectivamente, se escriban sobre la cinta en orden decreciente. El byte que incluye el bit de signo, será el primero y el byte que tiene el bit 1 de los 16 o 32 bits del pixel será el último. Así, usuarios de la serie DEC PDP-11 estan obligados a corregir la acción de lectura por byte-swap. Por último, el archivo de registros de datos representante de la imagen, es terminado con una marca de cinta.
Donde llave es una cadena ASCII de 8 caracteres, de la columna 1 a la 8, justificada a la izquierda. El signo = aparece en la columna 9, la columna 10 es un blanco. Con algunas restricciones, valor se escribe siguiendo las reglas del ANSI FORTRAN 77, y se requiere el uso de un formato fijo para todos los parámetros. El slash (/) indica que lo siguiente es un comentario y que puede aparecer en alguna columna después del valor del parámetro con al menos un carácter blanco de por medio. Se suguieren letras minúsculas en el comentario para hacer distinción con las llaves o sus valores.
El formato de las variables es el siguiente, para el tipo:
Para decodificar fácilmente una cinta normal FITS en cualquier sistema de cómputo, se define un conjunto mínimo de llaves para describir la imagen, estas llaves ocupan un orden y un formato fijo en los registros del encabezado. Las llaves son SIMPLE, BITPIX, NAXIS, NAXISn y END. Las primeras cuatro aparecen en ese orden, como las cuatro tarjetas de imagen en el primer registro del encabezado de cada archivo de cinta. Su descripción es la siguiente:
Indica que el archivo presente conforma el estándar básico FITS, esto es, que el arreglo de datos esta escrito en 8 bits sin signo o 16, o 32 bits para entero binario en complemento a dos en el orden del byte canónico. Que el arreglo es n-dimensional, espaciado regularmente y que los requerimientos de parámetros de las llaves son dados en las localidades específicas del primer registro del encabezado. Notar que la presencia de registros adicionales que sigan a los registros de datos de la imagen y/o el uso de cero como el tamaño de la imagen, no es una violación de la llave SIMPLE = T.
El número de parámetros NAXISn, únicamente se especifica a traves del valor de NAXIS y el limite es NAXIS999. La palabra clave END ocupa la última tarjeta del último registro del encabezado antes de los ASCIIs blancos.
Por ejemplo, supongamos que se necesita exportar una imagen de una cámara CCD de 190x244, que tiene únicamente 12 bits significativos por pixel.
La primera posición en el arreglo es la que varía más rápidamente, teniendo 190 posibles valores, en otras palabras, la forma de declararlo en Fortran como matriz será Z(190,244). Puede usarse 16 bits en complemento a dos para transmitir datos.
El encabezado mínimo FITS de este ejemplo tendría 6 tarjetas en el siguiente orden.
| Número de columna ________________________________________________________ Tarjeta | 1 9 30 ________________________________________________________ 1 | SIMPLE = T / comentario 2 | BITPIX = 16 / comentario 3 | NAXIS = 2 / comentario 4 | NAXIS1 = 190 / comentario 5 | NAXIS2 = 244 / comentario 6 | END
Las restantes 30 tarjetas de este único registro de encabezado se llenan de blancos.
Después de escribir el registro del encabezado, la matriz de los datos se escriben en un registro de 1440 bytes de 16 bits por pixel. El primer valor del pixel Z(1,1) se pone en los primeros dos bytes del registro con los bits más significativos en el primer byte. Entonces los bits más significativos del segundo pixel Z(2,1) son puestos en el tercer byte y los menos significativos en el cuarto byte. El proceso continúa de manera similar, teniendo que los bits más significativos del primer pixel en la segunda fila Z(1,2) ocupan el byte 381 del registro y el valor del pixel número 110 de la fila 8 se encuentra en los bytes 2879 y 2880 del registro. Así, el registro se escribe y los bits más significativos de Z(111,8) son puestos en el primer byte del registro siguiente.
El registro 33 y último registro del arreglo de datos, contiene solamente 280 pixeles y los restantes son llenados con cero. Tomando en cuenta el encabezado, el archivo de cinta magnética contiene 34 registros y se termina con una marca de cinta. Claro está que se puede escribir más de un archivo sobre la cinta y después del último archivo se recomienda escribir una marca de cinta extra.
La utilización de SIMPLE = F implica que la información en la cinta no reune las reglas básicas del formato. Algunas de las razones pueden ser el número de bits por pixel o que la representación del pixel no es estándar. También puede ser usado para almacenar o intercambiar datos con una institución o entre usuarios con intereses similares. FITS esta deliberadamente diseñado para tener esta flexibilidad y ésta se confía al buen sentido común de los usuarios.
Por causa de las dificultades históricas encontradas en el intercambio de imágenes FITS, sobre todo cuando no se proporciona información adicional, como serían las coordenadas, intensidad, etc. Se presenta en esta tabla, un conjunto de llaves con su descripción de uso, estas llaves se consideran opcionales, pero muy recomendables.
Nota: El tipo de las llaves es: (f) Punto flotante; (e) Entero; (c) Carácter; y (n) Ninguno. BSCALE (f) Factor de escala, usado para convertir el valor del pixel aun valor real (real=[tipo*BSCALE]+BZERO) BZERO (f) Desplazamiento aplicado al valor verdadero del pixel. BUNIT (c) Unidades de brillo, que pueden ser: 'K ' Kelvins 'JY/BEAM ' Jy por unidad área del haz 'JY/PIX ' Jy por pixel 'MAG/PIX ' Magnitud por pixel 'M/SEC ' Metros por segundo (campos de velocidad) 'DEGREES ' Angulo en grado (ángulo de polarización) ' ' Sin unidad (ejem. profundidad óptica, índice espectral) BLANK (e) Valor asignado a pixeles indefinidos OBJECT (c) Nombre de la imagen DATE (c) Fecha de escritura del archivo ('dd/mm/aa') DATE-OBS (c) Fecha de adquisición de los datos ('dd/mm/aa') ORIGIN (c) Forma en que se escriben los datos INSTRUME (c) Instrumento de adquisición TELESCOP (c) Telescopio empleado OBSERVER (c) Nombre/Identificación del observador BLANK (c) Columna 9 a la 80 para comentario COMMENT (c) Columna 9 a la 80 para comentario HISTORY (c) Columna 9 a la 80 para comentario CRVALn (f) Tipo de coordenada física en el n-ésimo eje Consistente con el sistema de unidades internacionales (SI), o añadir grados para ángulos, o añadir Janskys para flujo. Por ejemplo, distancia en metros, masa en kilogramos, tiempo en segundos y temperatura en grados Kelvin CRPIXn (f) Localización de la referencia del arreglo de pixeles a lo largo del eje n CDELTn (f) Incremento de la coordenada física a lo largo del eje n CTYPEn (c) Tipo de coordenada física sobre el eje n Por ejemplo: 'RA ' Ascención recta en grados 'DEC ' Declinación en grados 'LL ' Plano tangente (E-W) en grados 'MM ' Plano tangente (N-S) en grados 'GLON ' Longitud galáctica en grados 'GLAT ' Latitud galáctica en grados 'ELON ' Longitud eclíptica en grados 'ELAT ' Latitud eclíptica en grados 'TIME ' Tiempo en segundos 'FREQ ' Frecuencia en Hertz 'LAMBDA ' Longitud de onda en metros 'VELO ' Velocidad en metros/segundo 'VELO-LSR' Velocidad respecto al estándar local de reposo 'VELO-HEL' Velocidad respecto a la del sol 'VELO-OBS' Velocidad del observador 'PIXEL ' Sin unidad 'STOKES ' Sin unidad 'COMPLEX ' Valor complejo, 1=real y 2=imaginario 'DISTANCE' Distancia en el cielo entre dos puntos. Es usado para sistemas de coordenadas que no son estándar 'ANGLE ' Angulo sobre el cielo en grados CROTAn (f) Angulo de rotación del n-ésimo eje del tipo de coordenadas establecido DATAMAX (f) Valor máximo de los datos en el archivo DATAMIN (f) Valor mínimo de los datos en el archivo EPOCH (f) Epoca del sistema de coordenadas (años)
El ejemplo de encabezado FITS para imagen directa mostrado aqui, abarca dos registros. Las primeras 7 tarjetas dan el mapa de la imagen, las tarjetas 8, 13, 34 y 36 son comentarios equivalentes a COMMENT o HISTORY. Las tarjetas 9 a la 12 definen la escala de brillo y el nombre de la imagen, las tarjetas 14 a la 33 proveen información sobre los ejes coordenados y las tarjetas restantes documentan a la imagen. La tarjeta END es la sexta tarjeta del segundo registro del encabezado, las restantes 30 tarjetas son llenadas con blancos.
1 2 3 4 5 6 7 8 tarj. 12345678901234567890123456789012345678901234567890123456789012345678901234567890 ________________________________________________________________________________ 1/ 1: SIMPLE = T / basic format from NRAO(CV) 1/ 2: BITPIX = 16 / 2-byte twos-compl integers 1/ 3: NAXIS = 4 / number of axes 1/ 4: NAXIS1 = 512 / # pixeles/row (RA) 1/ 5: NAXIS2 = 512 / # rows (DEC) 1/ 6: NAXIS3 = 1 / # frequencies 1/ 7: NAXIS4 = 2 / # stokes (BEAM, I,Q,U,V) 1/ 8: 1/ 9: BSCALE = 1.278419E-07 / real = tape*BSCALE+BZERO 1/10: BZERO = 0.0 / no bias added 1/11: BUNIT = 'JY/BEAM ' / units of brightness 1/12: OBJECT = '0810+665' / source name 1/13: 1/14: CRVAL1 = 122.5419617 / ref point value degrees 1/15: CRPIX1 = 256.00 / ref point pixel location 1/16: CTYPE1 = 'LL ' / coord type: value is RA 1/17: CDELT1 = -6.944167E-05 / coord val incremt with count degr 1/18: CROTA1 = 0.0 / ccw rotates -RA into +DEC 1/19: CRVAL2 = 66.5995040 / ref point value degrees 1/20: CRPIX2 = 256.00 / ref point pixel location 1/21: CTYPE2 = 'MM ' / coord type: value is DEC 1/22: CDELT2 = -6.944167E-05 / coord val incremt with count degr 1/23: CROTA2 = 0.0 / ccw rotates +DEC into +RA 1/24: CRVAL3 = 4.8856000E+09 / ref point value Hz 1/25: CRPIX3 = 1.0 / ref point pixel location 1/26: CTYPE3 = 'FREQ ' / coord type: value is Hz 1/27: CDELT3 = 0.0 / coord val incremt with count degr 1/28: CROTA3 = 0.0 / ref rotation undefined 1/29: CRVAL4 = 0.0 / ref point value stokes # 1/30: CRPIX4 = 1.0 / ref point pixel location 1/31: CTYPE4 = 'STOKES ' / coord type: value is # 1/32: CDELT4 = 1.0 / coord val incremt with count ST # 1/33: CROTA4 = 0.0 / stokes rotation undefined 1/34: 1/35: INSTRUME= 'VLA ' /NRAO(CV) VLA mapping, programs 1/36: 2/ 1: DATE-MAP= '16/10/78' / map creation date dd/mm/yy 2/ 2: DATE = '27/05/79' / map writing date dd/mm/yy 2/ 3: ORIGIN = 'NRAO(CV) PGM=DEC2FITS(V1)' 2/ 4: HISTORY VLACV MAP METHOD='FFT' DATA='OBS, VISIBILITY' 2/ 5: HISTORY VLACV MAP WCONU= 0.00000E+00 WCONV= 0.00000E+00 TCONU=0 2/ 6: END
Con respecto al ejemplo anterios, la primera tarjeta informa que el archivo de cinta conforma el formato básico. La matriz consta de 16 bits por pixel, entero binario en complemento a dos (tarjeta 2), y es de cuatro dimensiones (tarjeta 3), las siguientes tarjetas aparecen en orden creciente y muestran que la matriz es de dos arreglos de 512x512. El tercer eje es de dimensión uno y se usa con los diversos ejes coordenados especificando un parámetro asociado con el dato, en este caso, es la frecuencia de observación (CTYPE3 = 'FREQ', CRVAL3 = 4.8856E+9 o 4.8856 GHZ). La cuarta dimensión es un tipo particular de eje, definido en los parametros opcionales.
Los parámetros BSCALE y BZERO se usan para convertir los pixeles a valores reales, la fórmula dada en el comentario es parte del estándar FITS. La palabra BUNIT y OBJECT dan la unidad usada para luminosidad de la imagen y su nombre respectivamente. Una llave que no se usa es BLANK y es el valor entero asignado a pixeles indefinidos, para 16 bits por pixel el valor usual es -32768.
La especificación de coordenadas esta basado sobre el concepto de pixel de referencia, dando su localidad a lo largo del eje (CRPIXn), el valor de la coordenada física para tal pixel (CRVALn) y el espaciado de las coordenadas físicas entre pixeles (CDELTn). El valor de localización del pixel de referencia se basa en un contador que inicia de 1 hasta NAXISn para cada eje, CRPIXn es además, una variable de punto flotante y la localización del pixel de referencia no tiene que corresponder con el pixel actual. Los valores tales como 129.5 o -3 son perfectamente aceptables y CDELTn es el incremento en la coordenada física. Este pixel de referencia aparece próximo al centro del arreglo (respecto a las primeras dos coordenadas) y tiene un valor de 08H 10M 10.07S, +66°35'58".2 .
El signo de CDELT1 y CDELT2 declara que el valor del primer pixel que se encuentra sobre la cinta aparece sobre la esquina noroeste del mapa. Los parámetros CTYPEn muestran que el sistema de coordenadas es el (L, M) a menudo usado en mapeo sintetizado. Los parámetros de rotación CROTAn describen un sistema de coordenadas normales. El tercer eje como tiene dimensión 1, es usado simplemente para especificar la frecuencia de observación. El cuarto eje es una coordenada arbitraria llamada Stokes que es definido para tener valores 0, 1, 2, 3 y 4 que significa que emite parámetros de polarización de Stokes I, Q, U y V.
El primer arreglo de 512x512 es un mapeo de la emisión sintetizada y el segundo es un mapeo de los campos de radiación no polarizada del objeto. El orden de las tarjetas de definición de coordenadas es arbitrario. El valor de INSTRUME, TELESCOP, OBSERVER y ORIGIN son usados para documentar las observaciones, el tipo de telescopio, el científico que las efectuo y la institución que procesa la cinta. Notar que las dos palabras llave más largas INSTRUME y TELESCOP son nombres truncados a sus primeros ocho carácteres. Aunque HISTORY esta definido solamente para ser un comentario, se propone usarse para documentar los pasos de procesado, que tienen que ser aplicados a los datos. La llave que inicia con la cadena genérica DATE, se usa para documentar varios días relevantes, notar que la cadena del valor del día se codifica de la forma 'dd/mm/aa' y los comentarios son esenciales cuando se usan llaves no estándar (tal como DATE-MAP).
En este encabezado, se presenta una serie de barridos de microdensitómetro de una larga endidura espectral de la galaxia NGC 4258, con 1024 puntos en el primer eje, el segundo eje indica que son 32 puntos a lo largo de la endidura de barrido (separada por 0.2 mm). Los datos pueden ser almacenados de forma logarítmica para permitir un gran rango dinámico, permitido con 32 bits. Este método puede ser usado para almacenar algunos valores que tengan un rango excedido con respecto a los bits disponibles, el campo del comentario puede usarse para dar información de la endidura y la orientación sobre el cielo.
1 2 3 4 5 6 7 8 tarj. 12345678901234567890123456789012345678901234567890123456789012345678901234567890 ________________________________________________________________________________ 1/ 1: SIMPLE = T / 1/ 2: BITPIX = 32 / 4-byte twos-compl integers 1/ 3: NAXIS = 4 / NR. of axes 1/ 4: NAXIS1 = 1024 / NR. pts per spectrum 1/ 5: NAXIS2 = 33 / NR. samples along the slit 1/ 6: NAXIS3 = 1 / RA. of center sample 1/ 7: NAXIS4 = 1 / DEC of center sample 1/ 8: 1/ 9: BSCALE = 1.0E-06 / real = tape*BSCALE+BZERO 1/10: BZERO = 0 / arbitrary ordinate 1/11: BUNIT = 'LOG F ' / flux scale 1/12: OBJECT = 'NGC 4258' / name of object 1/13: 1/14: CRVAL1 = 4861.342E-10 / H beta wavelength 1/15: CRPIX1 = 37.5 / location of H beta line 1/16: CRTYPE1 = 'LAMBDA ' / name of axis 1/17: CRDELT1 = 3.2E-10 / resolution between points 1/18: 1/19: CRVAL2 = 0.0 / 1/20: CRPIX2 = 17 / center is NR. 9 1/21: CRTYPE2 = 'DISTANCE' / along the slit on the plate 1/22: CRDELT2 = 0.0002 / 2mm between samples along slit 1/23: 1/24: COMMENT The RA. of the slit center is 184.1225 deg. 1/25: COMMENT The DEC of the slit center is 47.58139 deg. 1/26: 1/27: COMMENT The slit is oriented at an angle of 1/28: COMMENT 35.4 degrees. Rotation is clockwise N thru W 1/29: 1/30: COMMENT 1/31: COMMENT 1/32: 1/33: COMMENT THE DISPERSION WAS 40x10E-10 M PER 10E-3 METER 1/34: 1/35: INSTRUME= 'ABC CAMERA' 1/36: TELESCOP= '90 INCH ' 2/ 1: OBSERVER= 'SMITH ' 2/ 2: ORIGIN = 'KPNO-PDS' 2/ 3: DATE = '27/10/78' 2/ 4: HISTORY DATA CORRECTED FOR DARK FIELD BUT NO ABSOLUTE INTENSITY CAL 2/ 5: COMMENT SEEING 2 ARC SECOND 2/ 6: END