Skip to main content

Astronomical super-resolution with drizzle for wide field-of-view images

Project description

astroSR: Astronomical Super-Resolution with Drizzle Algorithm

CI Python Version License: MIT PyPI Version codecov

Overview

astroSR implements the Drizzle algorithm (Fruchter & Hook, 2002) for astronomical image combination and super-resolution reconstruction. The package provides precise photometric flux conservation through pixel-to-pixel mapping with configurable overlap area calculations, enabling resolution enhancement beyond the native pixel scale of input images.

Key Features

  • Faithful Drizzle Implementation: Complete implementation of the Fruchter & Hook (2002) algorithm with exact flux conservation
  • Resolution Enhancement: Achieves spatial resolution improvement through optimal dithering pattern exploitation
  • Flexible Weighting: Supports per-image weighting based on exposure time, image quality, or other metrics
  • Multiple Kernel Types: Square, Gaussian, and tophat kernels for different reconstruction requirements
  • WCS Support: Full World Coordinate System handling for precise geometric transformations
  • Noise Control: Configurable pixel fraction parameter for noise correlation management

Theoretical Background

The achievable resolution gain depends on:

  • Number of input images and their dithering pattern
  • Alignment precision and point spread function characteristics
  • Signal-to-noise ratio of individual exposures

For well-dithered observations, the effective resolution improvement typically ranges from 1.5× to 3× the native pixel scale, with optimal results achieved using 4-9 input images.

Installation

From PyPI (Recommended)

pip install astrosr

From Source

git clone https://github.com/dot-gabriel-ferrer/astroSR.git
cd astroSR
pip install .

Development Installation

git clone https://github.com/dot-gabriel-ferrer/astroSR.git
cd astroSR
pip install -e .[dev]

Requirements

  • Python ≥ 3.9
  • NumPy ≥ 1.20.0
  • Astropy ≥ 6.0
  • SciPy ≥ 1.7.0
  • Matplotlib ≥ 3.5.0
  • DrizzlePac ≥ 3.6.0

Usage

Command Line Interface

Basic usage for combining dithered images:

astrosr \
    --input img1.fits img2.fits img3.fits img4.fits \
    --output combined.fits \
    --scale-factor 2.0 \
    --pixfrac 0.8

Advanced usage with custom weighting:

astrosr \
    --input obs1.fits obs2.fits obs3.fits \
    --output result.fits \
    --scale-factor 2.0 \
    --pixfrac 0.8 \
    --weights 1.0 2.0 1.5 \
    --kernel gaussian \
    --save-weight-map

Python API

from astrosr import drizzle_super_resolution

# Basic combination
drizzle_super_resolution(
    input_files=['img1.fits', 'img2.fits', 'img3.fits', 'img4.fits'],
    output_file='superres.fits',
    scale_factor=2.0,
    pixfrac=0.8
)

# Advanced configuration
result = drizzle_super_resolution(
    input_files=['obs1.fits', 'obs2.fits', 'obs3.fits'],
    output_file='output.fits',
    scale_factor=2.0,
    pixfrac=0.8,
    weights=[1.0, 1.2, 0.8],
    kernel='gaussian',
    pixel_scale=0.5,  # arcsec/pixel
    save_weight_map=True,
    preserve_flux=True
)

Parameters

Parameter Type Default Description
input_files list - List of input FITS files
output_file str - Output FITS filename
scale_factor float 2.0 Resolution improvement factor
pixfrac float 0.8 Drizzle pixel fraction (0.6-1.0)
kernel str 'square' Kernel type: 'square', 'gaussian', 'tophat'
weights list None Per-image weights
pixel_scale float auto Output pixel scale (arcsec/pixel)
save_weight_map bool False Save weight map alongside output

Applications

Dithered Observations

Combine multiple exposures with sub-pixel offsets to achieve super-resolution:

drizzle_super_resolution(
    input_files=['dither_01.fits', 'dither_02.fits', 'dither_03.fits', 'dither_04.fits'],
    output_file='superres.fits',
    scale_factor=2.0
)

Quality-Weighted Combination

Weight images by exposure time or image quality:

drizzle_super_resolution(
    input_files=['short_exp.fits', 'long_exp.fits'],
    output_file='weighted.fits',
    weights=[1.0, 3.0],  # 3x weight for longer exposure
    scale_factor=1.8
)

Mosaic Construction

Combine overlapping fields into a unified high-resolution image:

drizzle_super_resolution(
    input_files=['field_a.fits', 'field_b.fits', 'field_c.fits'],
    output_file='mosaic.fits',
    scale_factor=1.5
)

Validation and Testing

The implementation has been validated for:

  • Photometric accuracy (< 1% flux conservation error)
  • Geometric precision in coordinate transformations
  • Proper handling of NaN pixels and image boundaries
  • Resolution enhancement verification

Comprehensive test suite available in tests/ directory.

Documentation

Scientific References

  1. Fruchter, A. S., & Hook, R. N. (2002). Drizzle: A method for the linear reconstruction of undersampled images. Publications of the Astronomical Society of the Pacific, 114(792), 144-152. https://doi.org/10.1086/338393
  2. Gonzaga, S., et al. (2012). The DrizzlePac Handbook. Space Telescope Science Institute.
  3. Koekemoer, A. M., et al. (2003). HST Dither Handbook. Space Telescope Science Institute.
  4. Fruchter, A. S., et al. (2016). The panchromatic Hubble Andromeda Treasury. Astrophysical Journal, 83(1), 6. https://doi.org/10.3847/0004-637X/83/1/6

Project Structure

astrosr/
├── src/astrosr/
│   ├── __init__.py
│   └── drizzle_super_resolution.py
├── tests/
│   └── test_drizzle_super_resolution.py
├── scripts/
│   ├── run_drizzle.py
│   └── batch_drizzle.py
├── docs/
│   ├── usage.md
│   ├── algorithm.md
│   └── api.md
├── examples/
│   ├── demo_drizzle.py
│   └── README.md
├── pyproject.toml
└── README.md

Contributing

Contributions are welcome. Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch from main
  3. Implement changes with comprehensive tests
  4. Ensure all tests pass and documentation is updated
  5. Submit a pull request with detailed description

License

This project is licensed under the MIT License - see the LICENSE file for details.

Citation

If you use astroSR in your research, please cite:

Ferrer Jorge, E. Gabriel (2025). astroSR: Astronomical Super-Resolution with Drizzle Algorithm [Computer software]. https://github.com/dot-gabriel-ferrer/astroSR

Contact

Elías Gabriel Ferrer Jorge Email: gabrielferrerjorge@gmail.com GitHub: dot-gabriel-ferrer

Acknowledgments

  • Original Drizzle algorithm: Andrew Fruchter and Richard Hook (Space Telescope Science Institute)
  • DrizzlePac reference implementation: Space Telescope Science Institute
  • Astropy community for astronomical Python ecosystem

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

astrosr-1.0.4.tar.gz (27.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

astrosr-1.0.4-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file astrosr-1.0.4.tar.gz.

File metadata

  • Download URL: astrosr-1.0.4.tar.gz
  • Upload date:
  • Size: 27.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for astrosr-1.0.4.tar.gz
Algorithm Hash digest
SHA256 007e22c0691690edd1c71077fda3fc0a6a94d9aceeb00d5a4d7f6d797c8bd056
MD5 19f42cf457f18f6363235913b85b5c5e
BLAKE2b-256 a3511ea9082fe2a0af7991fb484413836fac32cc7f6c165e3bac0ab40a6a0b16

See more details on using hashes here.

File details

Details for the file astrosr-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: astrosr-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for astrosr-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 2e0325809949ee90f9c734e42a07d5c536a4bacd2b629c4c7c4f362a4af00969
MD5 3087591e33fa86f04d87b9336ca19dbc
BLAKE2b-256 4b51870f9d52ba365d9f242c19119f8e691298cd9d62a463a1a5326a6674691c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page