82f71fcc961ed0278233abaf233a7451a385e105
Stage 04 frame extract:
- New lib_frame_qc.py: per-frame Laplacian/contrast/blue-dominance scoring
- Classes: bottom_visible / water_no_bottom / turbid_water / out_of_water
- Sample 1/5 frames after extraction, write qc.json per segment
- Record metrics (frames_total, frames_bottom_visible, bottom_visible_pct)
- Mark job degraded when bottom_visible_pct < 50%
Per-AUV viser view:
- scripts/viser_auv.py loads all PLYs of an AUV, color per file
- POST /pipeline/missions/{id}/auvs/{auv}/view rsyncs ply -> worker
- launches viser on hashed port 9300+, returns URL
- _pipeline.html exposes AUV list, JS handler opens viser tab
cosma-qc
COSMA post-acquisition QC pipeline — reconstruction photogrammétrique par GoPro (lingbot-map), queue de jobs distribués, dashboard web pour suivi terrain le jour même.
Objectif
Après une acquisition AUV (2 GoPros × 2-3 AUVs × heures d'enregistrement), savoir rapidement si la couverture est complète avant de replier la mission — sans attendre les 30 jours du traitement photogrammétrique complet.
Pipeline
SSD plugged ─┐
├─▶ Ingestion ─▶ Frame extraction (per GoPro × segment)
│ │
│ ▼
│ Job queue (SQLite)
│ │
│ ┌──────────────┼──────────────┐
▼ ▼ ▼ ▼
Dashboard Worker .87 Worker .84 (scalable)
(FastAPI) (3060) (3090)
│ │ │
│ └─▶ PLY ◀──────┘
│ │
│ ▼
└──────── ICP stitch (Open3D) ─▶ viser viewer
Stack
- Backend : FastAPI + SQLite
- Frontend : HTMX (UI réactive sans build JS)
- Queue : table SQLite + workers SSH-triggered
- Monitoring : polling
nvidia-smisur .87 / .84,dfpour disque - Reconstruction : lingbot-map (GCT-Stream windowed)
- Stitch : Open3D ICP
Déploiement
- Service sur .82 (stable, Caddy pour URL propre)
- Workers : SSH vers .87 (3060 12 GB) et .84 (3090 24 GB)
État
Scaffold en cours.
Languages
Python
76.3%
HTML
11.6%
CSS
11.5%
Dockerfile
0.6%