Suite y Estación de Trabajo Integral para Astrofotografía de Paisaje, Cielo Profundo y Eventos Astronómicos
📖 Manual de Usuario • 📝 Registro de Cambios • 🤝 Contribuir • 🗺️ Hoja de Ruta
AstroLoom es una suite de posprocesado astronómico no destructivo diseñada específicamente para fotógrafos nocturnos, astrofotógrafos de paisaje (nightscapes), cazadores de eclipses y amantes de las circumpolares y panorámicas de gran campo.
Impulsada por una arquitectura híbrida que combina una interfaz gráfica reactiva en Python (PySide6) con un potente motor de cómputo nativo en Rust (astroloom_rs), AstroLoom ofrece máxima fidelidad matemática en coma flotante de 32 bits con renderizado a más de 160 FPS y un consumo mínimo de memoria RAM.
-
Renderizado Directo a Memoria Qt: Volcado en búfer contiguo plano
BGRA8888a >160 FPS (~6 ms en 4K), sin copias intermedias en Python ni recolección de basura (GC). -
Kernels Vectorizados SIMD & Rayon: Apilado Kappa-Sigma (
$2.77\times$ más rápido que Numba JIT), interpolación elástica TPS connalgebra, y modos de fusión de capas a máxima velocidad de CPU. - Calibración RAW In-Place: Calibración matemática pura pre-debayer directamente sobre la matriz de fotodiodos del RAW (0 bytes de memoria RAM adicional).
-
E/S y Códecs Nativos: Lectores/escritores nativos en Rust para FITS (<15 ms en 60 MP), PSD multicapa de 16 bits (sin dependencias de
pytoshop), e ingesta multihilo de cabeceras RAW.
| Módulo | Descripción y Capacidades Clave |
|---|---|
| 1. Apilador (Stacker) | Apilado dual cielo/suelo con alineación estelar subpíxel, corrección elástica TPS para gran angular, segmentación semántica de horizonte con IA (U²-Net) y rechazo Kappa-Sigma con relleno reflectivo BORDER_REFLECT. |
| 2. Revelador / Editor | Procesado no destructivo de 32 bits: Estirado Hiperbólico (GHS), separación de estrellas por IA (StarNet++ v2 DirectML), curvas tonales por capa, supresión de contaminación lumínica (RBF 2D y modelo elíptico), balance fotométrico Gaia (PCC) y paletas Dual-Band OSC. |
| 3. Eclipses (HDR) | Fusión HDR de series de bracketing solar/lunar con traspaso gradual anti-anillos. Arsenal coronal completo (Steerable G2, Larson-Sekanina, SWAP, WOW Bilateral, NAFE, NRGF, MGN) y exportación a PSD multicapa de 16 bits. |
| 4. Eclipses (Collage) | Montaje cronológico automatizado de fases sobre paisajes con trayectorias geométricas (diagonal, arco, romboide), espaciado regular y fusión transparente. |
| 5. Startrails | Circumpolares continuas o efecto cometa en streaming |
| 6. Lluvias de Meteoros | Detección algorítmica de bólidos, cribado en galería interactiva, filtros anti-aviones/satélites y reproyección al radiante celeste con flujo neto. |
| 7. Panorámicas (Mosaicos) | Cosido 2D multifila de ultra-alta resolución, alineación por asterismos en Rust (<2 ms), fusión híbrida Dual-Zone (árboles nítidos sin efecto fantasma) y auto-recorte rectangular |
AstroLoom integra un sistema completo de composición no destructiva con capas de ajuste y capas ráster de imagen:
-
Transferencia Directa Eclipses
$\to$ Revelador: Exporta pilas completas de filtros coronales procesados al Revelador con un solo clic. - Modos de Fusión Profesionales: Normal, Trama (Screen), Luminosidad (Luminosity), Luz Suave (Soft Light), Superponer (Overlay) y Multiplicar (Multiply) acelerados en paralelo con Rust Rayon.
- Máscaras de Pincel Espaciales: Dibuja o borra sobre cualquier capa para aplicar filtros y ajustes de forma localizada.
- Persistencia Completa (.devloom): Almacenamiento seguro en ZIP con máscaras y capas ráster en PNG de 16 bits sin pérdida.
Haz doble clic en astroloom.bat en la carpeta principal del proyecto. El script detectará tu entorno virtual Python o la instalación del sistema y lanzará la interfaz sin consolas secundarias.
-
Clonar el Repositorio:
git clone https://github.com/shilmar/AstroLoom.git cd AstroLoom -
Instalar Dependencias de Python:
pip install -r requirements.txt
-
Compilar el Motor Nativo Rust (Recomendado para Máximo Rendimiento):
pip install maturin cd astroloom_rs maturin develop --release cd ..
(Si no se compila el módulo nativo, AstroLoom activará automáticamente su modo de reserva transparente en Python/NumPy sin interrumpir el funcionamiento).
-
Aceleración por GPU (Opcional - NVIDIA CUDA):
# Para CUDA 12.x: pip install cupy-cuda12x -
Iniciar la Aplicación:
python run_app.py
flowchart LR
A["1. Captura RAW"] --> B["2. Apilador (Cielo/Suelo)"]
B --> C["3. Revelador (GHS + StarNet AI)"]
C --> D["4. Capas y Curvas Tonales"]
D --> E["5. Exportar (TIFF 16/32-bit o PSD)"]
📖 Para una guía detallada paso a paso de cada módulo, parámetros y atajos de teclado, consulta el Manual de Usuario Oficial.
AstroLoom/
├── astroloom_rs/ # Núcleo nativo de alto rendimiento en Rust (PyO3 + Rayon + SIMD)
│ ├── src/ # Kernels de apilado, RBF, blend modes, deconv, FITS, PSD...
│ └── Cargo.toml # Configuración del paquete nativo
├── core/ # Lógica astronómica en Python (calibración, AI, máscaras, PCC...)
├── gui/ # Interfaz gráfica moderna en PySide6 (Qt)
│ ├── developer/ # Pipeline de renderizado y estado del revelador
│ ├── widgets/ # Lienzo interactivo, gestor de capas, curvas, histograma...
│ └── tab_*.py # Pestañas de Apilador, Revelador, Eclipses, Startrails, Panos...
├── locales/ # Soporte multilingüe (español e inglés)
├── MANUAL_DE_USUARIO.md # Guía detallada y completa para usuarios
├── CHANGELOG.md # Historial de versiones y cambios
└── run_app.py # Punto de entrada de la aplicación
Las contribuciones son bienvenidas. Si deseas colaborar:
- Revisa nuestra Guía de Contribución.
- Cumple con el Código de Conducta.
- Asegúrate de que las pruebas automatizadas pasen (
pytest).
AstroLoom integra ideas y algoritmos inspirados en investigaciones pioneras de la comunidad astrofotográfica y científica:
- Agentic-Eclipse-Library por Pere Guerra (PeterWar): Algoritmos de fusión coronal HDR, normalización y filtrado de eclipses solares.
- StarNet++ por Nikita Misiura: Red neuronal pionera para el desacoplo de estrellas.
- Miloslav Druckmüller: Fundamentos matemáticos de filtrado multiescala (MGN) y ecualización adaptativa difusa (NAFE).
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.