A project by the STAC core team at IIT Mandi: train super-resolution models to upscale Chandrayaan-2 TMC-2 imagery (~5 m/px) towards 30 cm/px, using LRO NAC and Chandrayaan-2 OHRC imagery as high-resolution ground truth — and from that build a high-resolution lunar atlas.
The approach is to learn the TMC→NAC mapping on aligned image pairs: TMC crops resized to 24×24 px as input, the matching NAC crops at 96×96 px as target. Two model families were tried, an SRGAN and a SwinIR transformer.
Data is not in this repository. Every image, dataset and checkpoint is fetched from its original archive by
scripts/download_data.sh. Start with DATA.md.
git clone https://github.com/STAC-IITMandi/Moon-Mapping.git
cd Moon-Mapping
pip install -r requirements.txt
scripts/download_data.sh help # what's available
scripts/download_data.sh all # dirs + sample NAC images + all public weightsThe Chandrayaan-2 half needs a free PRADAN account — see DATA.md.
AI Models/ the super-resolution models
├── Moon Mapping/ SRGAN: train, generate, cascade to 16x, evaluate
├── Transformer_Model-main/ SwinIR layers written from scratch (RSTB, STL, attention)
├── SwinIR/ the project's working SwinIR copy + training notebooks
├── SwinIR-0.0/ earlier SwinIR snapshot, kept for comparison
├── Swin-Transformer/ vendored Swin Transformer backbone (Microsoft)
└── REFERENCES.md papers and code provenance
DataSet/ footprint geometry and dataset generation
├── Generator.py, Gen2.py TMC↔OHRC footprint intersection from PDS4 labels
├── tmc_break.py lunar-ellipsoid lat/lon → pixel mapping
├── crop.py, readOHRC.py cropping; reading PDS4 OHRC products
├── dataset_prep*.ipynb dataset assembly notebooks
├── TMC/coordinates.csv 3,246 TMC products, scraped with corner coordinates
└── OHRC_ShapeFiles/ ISRO-supplied OHRC footprint shapefiles
dataset-cleaning-creation-and-analysis/
├── README.md how the training pairs were built — read this first
├── scripts/ NAC calibration (ISIS), coordinate maths, crop generation
└── dataset-preparation/ scraping and intersection notebooks + CSV catalogues
docs/ ISRO data-product user guides, LTA procedure, presentations
scripts/download_data.sh fetches all data from PRADAN / LROC
DATA.md data setup guide
Mid_ISRO.pdf mid-project report
The full account is in
dataset-cleaning-creation-and-analysis/README.md.
In short:
- Find NAC images fully contained within an orthorectified TMC image (855 TMC footprints × 14,026 NAC footprints, intersected in the notebooks).
- Calibrate the NAC EDR with the LROC-recommended ISIS pipeline
(
nac2png.sh). - Crop the TMC image to the NAC extent
(
NACTMC_coords.py), then match brightness/contrast and rotate so features line up. - Cut both into 96×96 px (NAC) and 24×24 px (TMC) pairs, discarding tiles that
are mostly no-data
(
final_gen.py).
One TMC–NAC pair yields roughly 13,000 crops; two pairs were used for training.
OHRC was investigated as ground truth but largely abandoned: of ~90 OHRC images, only ~10 overlapped any TMC image.
SRGAN — AI Models/Moon Mapping/. A 16-block
SRResNet generator at ×4, cascaded twice for ×16
(cascade.py). srgan_config.py has a
single mode switch (train / generate / evaluate) that selects the paths
and hyperparameters for each stage.
SwinIR — AI Models/SwinIR/ and
AI Models/Transformer_Model-main/. A
shifted-window transformer, trained with L1, SSIM and perceptual losses in
separate runs.
Weights and data. scripts/download_data.sh checkpoints fetches the trained
SwinIR checkpoints (five files, 777 MB), training-data fetches the crops they
were trained on (1.7 GB), and swinir-weights fetches the original SwinIR
models the test scripts expect. No trained SRGAN generator is published, so the
SRGAN needs training before its generate / evaluate modes are usable — see
DATA.md § Model weights and training data.
- Chandrayaan-2 TMC-2 and OHRC — ISRO/ISSDC PRADAN
- LRO NAC — LROC archive, Arizona State University
Please observe each archive's access terms and citation requirements. PRADAN in particular enforces session and rate limits.