Sistema para generar datasets sintéticos de aberraciones ópticas simuladas mediante polinomios de Zernike, con capacidad de añadir ruidos físicamente realistas.
Características clave:
- Simulación física precisa: Interferogramas con aberraciones ópticas personalizables usando polinomios de Zernike
- Control detallado: Sistema de configuración para:
- Combinar múltiples modos de aberración
- Parametrizar coeficientes (±λ) y muestras por clase
- Reproducir experimentos mediante semillas (Ver Configuraciones Avanzadas)
- Ruidos realistas: Modelos físicos documentados con control de:
- Intensidad de ruido (σ gaussiano, densidad de polvo, de Poisson)
- Perfiles de movimeinto (vibración mecánica)
El repositorio incluye actualmente dos tipos de datasets pregenerados para distintos casos de uso:
Contiene interferogramas con modos Zernike individuales, ideales para:
- Entrenamiento de modelos de clasificación
- Estudio de aberraciones aisladas
- Calibración de sistemas ópticos
Dataset generado con la configuracion en configs/pure_aberrations.yaml
Combina múltiples modos Zernike con ruido físico, diseñado para:
- Simulación de condiciones realistas
- Validación de algoritmos de reconstrucción
{: width="250"}
Dataset generado con la configuracion en configs/mixed_aberrations.yaml
Características comunes:
- Formato: TIFF 16-bit (512×512px)
- Metadatos: Incluyen coeficientes Zernike exactos
- Métricas: 20+ parámetros de calidad óptica (detalles)
git clone https://github.com/isaultirado77/optical_aberration_database.git
cd optical_aberration_database
pip install -r requirements.txt
├── configs/ # Plantillas YAML de configuración
├── data/ # Datasets generados
├── examples/ # Ejemplos de uso
├── src/
│ ├── aberrations/ # Generación de aberraciones
│ ├── metrics/ # Cálculo de métricas
│ └── scripts/ # Scripts CLI para generación y preprocesamiento
├── visualization/ # Animaciones y gráficos
├── tests/ # Pruebas unitarias
└── docs/ # Documentación técnica
# Dataset básico
python -m src.scripts.generate_dataset \
-c configs/pure_aberrations.yaml \
-o data/pure_aberrations
# Configuración personalizada
python -m src.scripts.generate_dataset \
--config configs/demo.yaml \
--output data/demo_output\
--seed 42
python -m src.scripts.preprocess_data \
--input_dir data/demo_output/raw \
--output_dir data/demo_output/processed \
--config configs/preprocess_config.yaml
Consular la documentación para detalles generación y procesamiento de datos.
El sistema calcula automáticamente 20+ métricas por imagen, incluyendo:
Categoría | Métricas Clave | Documentación |
---|---|---|
Estadísticas | Entropía, Curtosis | Detalles |
Calidad Óptica | Strehl Ratio, RMS | Teoría |
Texturas | Haralick Features | Referencia |
-
Teoría de Polinomios de Zernike
Fundamentos matemáticos de los polinomios ortogonales y su relación con aberraciones ópticas clásicas (defocus, astigmatismo, coma, etc.). -
Modelos de Ruido
Implementación física de 4 tipos de ruido:- Gaussiano (electrónico)
- Poisson (cuántico)
- Partículas de polvo
- Vibración mecánica
Incluye interpretación física y descripcion de parámetros de configuración.
-
Especificación de Datasets
Estructura completa de archivos generados:- Formato TIFF 16-bit
- Metadatos técnicos (YAML)
- Métricas en CSV
- Jerarquía de directorios recomendada.
-
Configuraciones Avanzadas
Guía detallada de archivos de configuración YAML para:- Combinación de modos Zernike (
coefficients
) - Perfiles de ruido (
noise_profiles
) - Metadatos de simulación (
metadata
)
- Combinación de modos Zernike (
-
Referencia de Métricas
Catálogo de 20+ métricas calculadas automáticamente:- Estadísticas: Entropía, curtosis, energía
- Calidad óptica: RMS, Strehl ratio, PSNR
- Texturas: Características de Haralick
Con fórmulas matemáticas y rangos típicos.
-
Modos Zernike e Implementación
Detalles técnicos del generador de interferogramas:- Ejemplos de código para combinaciones complejas
- Visualización de frentes de onda
- Haz fork del proyecto
- Crea una rama (
git checkout -b feature/nueva-aberracion
) - Haz commit de tus cambios (
git commit -m 'Añade soporte para X'
) - Haz push a la rama (
git push origin feature/nueva-aberracion
) - Abre un Pull Request
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 (CC-BY-NC-SA-4.0)