Python con imagen en formato fit

Estoy tratando de escribir un programa en Python que hará lo siguiente: tomar una imagen en formato de ajuste y un archivo de registro con una lista de regiones en el cielo, y determinar qué regiones de la lista están dentro de la imagen de ajuste y cuáles son afuera. Esto se puede hacer visualmente con ds9, pero no tengo idea de cómo puedo acceder al archivo de ajustes y determinar las coordenadas del límite de la imagen.

¿Algún consejo? No sé mucho sobre el formato de ajustes, pero no se abrirá con un editor de texto habitual como gedit.

Editar: Ahora tengo un problema más específico. Tengo cuatro puntos en el cielo definidos por su declinación y ascensión recta. ¿Existe una forma sencilla de verificar si estas coordenadas pertenecen a la imagen codificada en el archivo de ajuste?

Edición 2: esto es lo que veo como el encabezado de mi archivo de ajustes:ingrese la descripción de la imagen aquí

No soy un experto en física, solo un matemático, así que no estoy seguro de cómo proceder desde aquí. Cualquier ayuda sería apreciada...

Edición 3: Algo parece cambiar cuando pongo el terminal en modo de pantalla completa. ¿Hay alguna información útil aquí?ingrese la descripción de la imagen aquí

Debería poder abrir un archivo de ajustes con cualquier editor de texto, como vim, Emacs o incluso, Dios no lo quiera, Word. Sin embargo, solo la primera parte (el "encabezado") que contiene información sobre los datos, por ejemplo, los límites, tendrá sentido para usted. La imagen en sí se verá como un galimatías. Para leer el archivo de ajustes en Python, eche un vistazo a astropy . A partir de ahí, debería haber un bucle for simple.
¡Muchas gracias! Finalmente pude abrir el archivo de ajustes con vim, no tengo idea de por qué gedit no funcionaba. ¡También echaré un vistazo a la astrología!
Solo una pregunta... Dijiste que podía encontrar la información sobre el límite de la imagen en el encabezado del archivo de ajustes. Pero ¿dónde, específicamente? Hay muchas variables allí y no entiendo lo que significan todas.
Use el símbolo @ y un nombre de usuario para etiquetarlos específicamente. Recibirán una notificación. De lo contrario, no sabrán que intentas responderles. En cualquier caso, no podemos saber qué variables hay en el encabezado del archivo de ajustes. Eso es como preguntarnos el significado de todas las palabras en un archivo de texto aleatorio sin mostrarnos el archivo de texto.
Oh, lo siento, olvidé agregar la etiqueta. Gracias, @zephyr :)
@pela, voy a editar mi pregunta nuevamente y agregaré lo que veo como el encabezado de mi archivo de ajustes usando vim, en caso de que te resulte familiar y sepas cómo podría hacer lo que necesito. ¡Gracias de nuevo!
@WildFeather: Tal vez obtuviste la respuesta ahora, pero tu encabezado debe contener información como RA y dec para uno de los píxeles, información sobre si este píxel es el central, el superior izquierdo, etc., así como información sobre el resolución, es decir, número de segundos de arco por píxel. Estas tres piezas de información deberían ser suficientes para decirle los valores RA, dec que abarca su imagen.
@pela, no sé si lo estoy haciendo bien, pero ¿hay una lista dentro del archivo de ajustes con las coordenadas (declinación y ascensión recta) de cada uno de los píxeles? Dado que la imagen tiene una forma "extraña" (no circular ni cuadrada), no veo cómo podría deducir del encabezado si un punto específico pertenece a la imagen...
Parece que las entradas de encabezado CRVAL1 y CRVAL2 son la ascensión recta y la declinación de su imagen. Probablemente esta será la posición del centro de su imagen. Sin embargo, no veo nada en este encabezado que le permita saber (o calcular) el tamaño de su imagen en el cielo. Tal vez haya más en su encabezado u otro encabezado en su archivo. Es posible que deba buscar algo como una escala de placa o una escala de píxeles.
¡Gracias! Sin embargo, no tengo idea de dónde buscar información adicional en el archivo. Lo desplacé completamente hacia abajo y el resto son solo símbolos incomprensibles. ¿No suele haber una tabla o algo similar, con las coordenadas de cada píxel? Dado que puedo abrir el archivo y obtener una imagen con ds9, supongo que ds9 debe obtener esta información del archivo. Pero muchas gracias de todos modos!
@zephyr, ¿mi última edición agrega algo que pueda ser útil? Lamento ser tan insistente, pero estoy bastante desesperado tratando de resolverlo, y tal vez sea fácil para ti. ¡Y gracias!
Parece que su archivo de ajustes provino del Atacama Pathfinder Experiment (APEX). Encontré un documento que describe el formato de archivo APEX. De particular interés para usted puede ser la sección sobre Coordenadas WCS (Sección 16.5) que describe cómo las coordenadas exactas de las imágenes se almacenan en el archivo y qué significan. Esto le permitirá determinar las coordenadas de cada píxel. Astropy también tiene la capacidad de extraer información de coordenadas WCS, como se describe aquí .
¡Muchas gracias! Trabajaré en ello y veré qué puedo hacer.
Parece que ustedes dos lo solucionaron :)
@pela ¡Sí, creo que finalmente funciona! Gracias, también ayudaste mucho :)

Respuestas (3)

Yo personalmente uso Astropy , específicamente astropy.io.fits, aunque no soy un usuario experimentado de archivos FITS y realmente no conozco su diseño. Como fragmento de código de ejemplo, a menudo cargo datos de archivos FITS usando

from astropy.io import fits
data = fits.open('data_file.fits')[0].data

Encontrará más información en la documentación sobre el módulo FITS.

Gracias. Voy a editar mi pregunta, ya que tuve una idea para mi programa y el problema que tengo ahora es más específico.
  1. No hay una respuesta clara a esto, todo dependería de su archivo específico, del cual, por supuesto, no sabemos nada. Sin embargo, es probable que la información que necesita exista en el encabezado de ajustes (si es que existe). Supongo que está leyendo su archivo de ajustes usando el astropypaquete ya que está usando Python (si no, definitivamente échele un vistazo). Si ese es el caso, puede leer todo acerca de mirar los encabezados de los archivos de ajuste en la documentación de AstroPy . Tendrá que mirar los archivos de encabezado y escanear para ver si alguna información incluida con el archivo de ajustes le indica con precisión en qué parte del cielo está la imagen.
  2. Ninguna imagen va a ser "circular". Las imágenes se toman en CCD cuadrados y, por lo tanto, producen imágenes cuadradas del cielo. Una imagen "normal" será cuadrada.

También hay un paquete de software, llamado DS9 , que uso para ver tanto la imagen como el encabezado. Edito los encabezados en Python usando astropy.