Algoritmo para apilar imágenes astronómicas

Estoy buscando un algoritmo simple para comparar imágenes astronómicas (de la misma región del cielo) entre sí, calcular su movimiento y rotación, para finalmente apilarlas.

Por el momento ya tengo un algoritmo más o menos funcional. Primero extraigo todas las estrellas de una imagen (incluida información como brillo y FWHM), y luego camino por todos los "puntos" resultantes y creo triángulos a partir del punto actual y esas otras dos estrellas que tienen la distancia más corta a este. estrella.

Esta lista de triángulos se crea para cada imagen. Después de esto, tomo una imagen como referencia y luego recorro la lista de triángulos en la imagen de referencia para encontrar un triángulo en la otra imagen con la misma longitud de cada lado del triángulo (también "permito" cierta tolerancia debido a un mínimo diferencias relativas de las posiciones de las estrellas en cada imagen). Para estos partidos, calculo el movimiento y la rotación en relación con la imagen de referencia. El último paso es encontrar los triángulos emparejados que tienen el mismo movimiento relativo y rotación que las otras coincidencias. Esto se hace calculando la desviación estándar, clasificando los triángulos que no están dentro de 1 o 2 sigma y repitiendo este proceso hasta que tenga una desviación estándar muy pequeña.

La última parte, encontrar triángulos "válidos" con el mismo movimiento/rotación, funciona bien. El problema es que a veces solo tengo como 2 o 3 triángulos "válidos" de 300 triángulos iniciales. Todos los demás triángulos tienen longitudes de lado diferentes a las de la imagen de referencia.

Así que asumo que es la forma en que genero mis triángulos iniciales lo que causa el problema. Ordenar las estrellas por su brillo y usar estos datos para generar los triángulos tampoco funciona. Entonces, ¿hay una mejor manera de crear los triángulos iniciales en todas las imágenes?

Cuando dice que es la misma región del cielo, ¿significa que hay una superposición significativa entre las imágenes (como si estuviera tratando de eliminar la fluctuación atmosférica), o está tratando de hacer algo como unir imágenes para hacer un mosaico a partir de un muchas imágenes superpuestas parcialmente?
Sí, se superponen significativamente. También podría decir que es exactamente la misma región con menos de 10 píxeles de movimiento normalmente. También puede comparar diferentes sesiones de grabación en las que tiene un poco más de movimiento y también algo de rotación, pero la mayor parte del área es visible en cada imagen. Al apilar las imágenes, quiero minimizar el ruido de fondo (alta SNR) y también obtener un mayor valor de bits de color por canal.
¿Supongo que estás familiarizado con astrometry.net? No responde a su pregunta, pero puede ayudar.

Respuestas (2)

Esta página sobre un producto comercial entra en detalles sobre su algoritmo. Hace la combinación de triángulos que describe, con algo así como recocido simulado para obtener una solución más óptima.

La respuesta aceptada a esta pregunta estrechamente relacionada recomienda el software Hugin panorama ; es de código abierto, por lo que debería poder obtener los algoritmos utilizados.

ligeramente relacionado; ImageJ y sus complementos se usan principalmente para biología, pero pueden funcionar en imágenes astronómicas. Las técnicas de imágenes fluorescentes a menudo producen imágenes con muchos puntos diminutos sobre un fondo negro. biología.stackexchange.com/a/80795/27918

Eche un vistazo a SCAMP para astrometría y SWarp para apilamiento. Al igual que el software mencionado en la otra respuesta, ambos son de código abierto, por lo que puede verificar qué algoritmos usan.

La documentación de SCAMP está aquí , con una explicación del algoritmo en el capítulo 6.7 (página 25). También hay un artículo breve , pero el manual parece más completo.

Tenga en cuenta que el software está escrito teniendo en cuenta los detectores de mosaico multi-CCD de campo amplio, por lo que lo que hacen puede ser excesivo para lo que tiene en mente.