Skip to content
Snippets Groups Projects
Forked from an inaccessible project.
juan-pineda's avatar
91541ea3
Name Last commit Last update
data
README.md
gauss.png

Ejercicios para practicar numpy y optimización con scipy

ADICIONES - FEB/17

Para quienes tengan dificultad en comprender el ajuste sobre la región 2D

Pueden empezar resolviendo un problema más sencillo, de nuevo en 1 dimensión así como en el ejemplo de la clase. En este caso, después de recortar el cuadradito de una estrella, vamos a tomar solo los pixeles de la línea que pasa por la mitad de la estrella, es decir tenemos un vector de valores de intensidad luminosa. Si los grafican, deben obtener algo similar a esto:
Gaussiana 1D

La idea entonces es ajustar una función gaussiana común y corriente, agregando una constante aditiva. Cuando dominen este problema (y escriban su solución para entregar) pueden retomar el problema original a ver si lo entienden mejor.

La diferencia será que ya no tendrán una función de una variable, si no de dos. Es decir:

  • En el problema simplificado tenemos

    y=y(x)y=y(x)
    . 'x' es nuestra variable independiente y representa las distintas posiciones a lo largo de la linea 1D, mientras 'y', que representa las intensidades luminosas en cada posición, es nuestra variable dependiente, los datos a los cuales deseamos ajustar el modelo

  • En el problema planteado originalmente se desea ajustar una función de 2 variables:

    z=z(x,y)z=z(x,y)
    . 'x','y' son las variables independientes, y juntas representan todas las posiciones sobre el cuadrito 2D del recorte de la estrella; deberán usar meshgrid para obtener todas las combinaciones (fila, columna) de los pixeles en la imagen. Por su parte, 'z', que es la variable dependiente, es el brillo de cada pixel, y corresponde a los valores que vienen almacenados en la propia imagen. Esos valores de 'z' son nuestros datos, a los cuales queremos ajustar el modelo de gaussiana 2D, algo del estilo: zmodel = gauss2D(x,y)

Una vez logren ajustar una de esas gausianas 1D, la idea es repetir en varias estrellas y sacar una estadística sobre el ancho de ellas.

Para quienes ya dominaron el ejercicio inicial

Olvidé comentar sobre la incertidumbre, que obviamente existe siempre que tomamos cualquier medida. En el caso de las imágenes, el conteo de fotones es un proceso que sigue la estadística de Poisson, y si el flujo luminoso es grande (llegan muchos fotones) esto acaba derivando en una estadística gaussiana. En ese caso podemos modelar la incertidumbre como la raíz cuadrada del flujo observado.

Como ejercicio final, repita los ajustes realizados inicialmente, esta vez teniendo en cuenta la incertidumbre de los datos, para ver si surge algún cambio en los resultados. Encuentre una forma de programar sus rutinas de modo que sean fácilmente reutilizables; con una buena implementación, este nuevo ajuste debe ser cuestión de un par de minutos con pocos o ningún paso manual.

Resolución espacial

En observaciones astronómicas e imágenes en general, llamamos resolución espacial a la distancia angular minima a la que pueden estar dos fuentes puntuales de luz y aun poder ser reconocidas como objetos individuales.

En el caso de la astronomía, este efecto tiene que ver con la dispersión de la luz al atravezar la atmósfera, la cual hace que una estrella, que debería en principio aparecer como una fuente puntual (pues las estrellas están muy lejos), aparezca en cambio como una mancha. Así, si dos estrellas están demasiado cerca sus manchas se superpondrán hasta el punto en que sea imposible distinguirlas como fuentes individuales (Ver imágenes en este link)

Para modelar este efecto, típicamente consideramos la acción de la atmósfera como la convolución de la imagen "perfecta" (como se vería desde el espacio) con un kernel gaussiano. El ancho de esa función gaussiana 2D caracteriza las condiciones de observación, varía con las condiciones climáticas y para cada sitio de la Tierra.

La resolución espacial normalmente se toma como el FWHM de la gaussiana caracteristica registrada durante una observación. Es decir, si dos estrellas están a una distancia aparente en el cielo menor que el FWHM del efecto atmosférico, la luz de ambas fuentes se mezclará después de la convolución hasta el punto de impedir reconocerlas de modo individual.

Además, la atmósfera puede interactuar de maneras distintas con la luz de distintas longitudes de onda, de manera que el ancho de la gaussiana puede ser distinto para observaciones con diferentes filtros.

El objetivo de esta tarea es medir de forma aproximada la resolución espacial en una noche de observación en Zapatoca, Santander (Colombia), a partir de una foto del cielo estrellado.

Ejercicio: Pasos

  • Leer la imagen almacenada en la carpeta data como un array de numpy. Ese array estará compuesto de 3 matrices, una tras otra, correspondiente a los canales R,G,B
  • Combinar los 3 array para generar una versión blanco y negro de la imagen, en la cual ella consiste de una sola matriz 2D. Puede usar su intuición y prueba y error para combinar las 3 imágenes, explicando el procedimiento elegido. Esto será más interesante que usar un comando desconocido de una biblioteca sofisticada que haga las cosas como una caja negra (queremos practicar numpy)
  • Recorte un sector de la imagen conteniendo una estrella individual y ajuste una gaussiana 2D simétrica a la imagen de la estrella por mínimos cuadrados, incluyendo una constante aditiva (el cielo "vacio" brilla)
  • Repita este procedimiento para varias estrellas y presente alguna estadística sobre las medidas de la FWHM de las distintas gaussianas: histograma, media, mediana, desviación estándar
  • Repita el mismo ejercicio sobre cada una de las bandas R,G,B separadamente y comente si observa diferencias en los resultados

Instrucciones generales

  • La entrega debe ser un archivo de markdown llamado Entrega.md incluyendo todo: Texto con las explicaciones, bloques de código, ecuaciones, gráficos.
  • También debe haber un notebook (Entrega.ipynb) con todos los códigos y resultados, por si deseo revisar la ejecución de alguna parte del código, pero en principio el archivo de markdown debería ser autocontenido, como su reporte final.
  • No olvide identificarse y dar un contexto amigable del contexto a resolver, así como explicar todos sus procedimientos y comentar los códigos apropiadamente
  • Fraccione el código en celdas de acuerdo a la lógica de la solución
  • Exploraciones complementarias al ejercicio serán muy bien recibidas

**El objetivo es que si su instructor desea correr el código pueda hacerlo, para eso va el notebook, pero que esto no sea necesario para evaluar la tarea, para eso va el markdown con todas las explicaciones, códigos, ejemplos y resultados. Aprovecharemos la ventaja doble que nos ofrece markdown: 1) GitLab va a renderizar el archivo proveyendo una visualización adecuada; 2) nos permite combinar texto (levemente) enriquecido, formulas en latex, bloques de código e imágenes en un solo formato con una sintaxis sencilla **