Files
mars-panorama-pipeline/README.md
Franck Garnier 97e7101855 Initial commit: Dockerfile, pipeline script, docker-compose
- Dockerfile based on debian:bookworm with Hugin 2024, Python 3, OpenCV
- Automated panorama pipeline for NavCam and Mastcam-Z
- CLAHE preprocessing for cpfind, render with originals
- NavCam tile 01+04 combining with 16px overlap
- docker-compose.yml for homelab deployment

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 10:26:47 -04:00

65 lines
2.1 KiB
Markdown

# Mars Panorama Pipeline
Automated panorama stitching for NASA Mars rovers (Perseverance, Curiosity) using Hugin CLI tools in Docker.
## Quick Start
```bash
# Build the image
docker build -t mars-panorama-pipeline .
# Run a NavCam panorama (sol 1813)
docker run --rm \
-v /mnt/astro/mars_rovers:/data \
-v /mnt/astro/mars_rovers/images/panorama/perseverance:/output \
mars-panorama-pipeline \
--sol 1813 --camera NAVCAM_LEFT
# Run a Mastcam-Z panorama (sol 1817)
docker run --rm \
-v /mnt/astro/mars_rovers:/data \
-v /mnt/astro/mars_rovers/images/panorama/perseverance:/output \
mars-panorama-pipeline \
--sol 1817 --camera MCZ_LEFT
# List available sequences for a sol
docker run --rm \
-v /mnt/astro/mars_rovers:/data \
mars-panorama-pipeline \
--sol 1813 --camera NAVCAM_LEFT --list-only
```
## With Docker Compose
```bash
docker compose run panorama --sol 1813 --camera NAVCAM_LEFT
```
## Pipeline Steps
1. **Find sequence** — Query MySQL for panorama-capable image sequences
2. **Combine tiles** — NavCam tiles 01+04 with 16px overlap blending
3. **CLAHE preprocessing** — Vignette correction + contrast normalization (for cpfind only)
4. **cpfind** — Feature matching on CLAHE images (aggressive params)
5. **cpclean** — Remove outlier control points
6. **Swap to originals** — Replace CLAHE images with originals in PTO
7. **autooptimiser** — Geometry-only optimization (NO photometric -m flag)
8. **nona + enblend** — Remap and blend final panorama
9. **Export PNG** — Convert TIFF output to PNG
## Supported Cameras
| Camera | Rover | FOV | Tile combining |
|--------|-------|-----|---------------|
| NAVCAM_LEFT/RIGHT | Perseverance | 82.17° (combined) | Yes (01+04, 16px overlap) |
| MCZ_LEFT/RIGHT | Perseverance | 25.6° (wide zoom) | No |
## Configuration
Environment variables (or .env file):
- `MYSQL_HOST` — MySQL server (default: 192.168.1.42)
- `MYSQL_PORT` — MySQL port (default: 3306)
- `MYSQL_USER` — MySQL user (default: soldan)
- `MYSQL_PASSWORD` — MySQL password
- `MYSQL_DATABASE` — Database name (default: mars_rovers)