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?
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.
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.
dave
HellstormDe
usuario21