Skip to content

feat: satellite-standard output, STAC v1.1.0, previews, Pseudo-Huber smoothness#40

Merged
MarcYin merged 1 commit intofeat/refactorfrom
claude/zealous-gauss
Apr 3, 2026
Merged

feat: satellite-standard output, STAC v1.1.0, previews, Pseudo-Huber smoothness#40
MarcYin merged 1 commit intofeat/refactorfrom
claude/zealous-gauss

Conversation

@MarcYin
Copy link
Copy Markdown
Owner

@MarcYin MarcYin commented Apr 3, 2026

Summary

  • Output naming: Satellite-standard L2A prefix (S2A_L2A_20240315T103045_T32UQD_BOA_B02.tif) with auto-generated STAC v1.1.0 Item (eo:bands, projection, view, processing extensions)
  • Preview PNGs: False-colour composite, AOT/TCWV colour maps, cloud mask overlay, and scatter diagnostics in preview/ subdirectory
  • Pseudo-Huber smoothness: Replace DCT-based Tikhonov smoothness with edge-preserving Pseudo-Huber penalty — quadratic for noise, linear for sharp features (fire plumes, urban emissions)
  • Code cleanup: Eliminate 85 lines of duplicated geo helpers by reusing siac.geo.resample, extract _write_bands helper, partition STAC artifact iteration

Test plan

  • All 1062 unit tests pass (pixi run test-fast)
  • Lint clean (pixi run lint)
  • Integration tests pass on CI
  • Verify STAC Item validates against stac-spec schema
  • Visual check of preview PNGs on a real scene

🤖 Generated with Claude Code

…d Pseudo-Huber smoothness

Output system:
- Satellite-standard L2A naming: S2A_L2A_YYYYMMDDTHHMMSS_T{tile}_{product}.tif
- Auto-generated STAC v1.1.0 Item with eo:bands, projection, view, processing extensions
- Preview PNGs: false-colour composite, AOT/TCWV colour maps, cloud mask overlay, scatter plots
- Reuse resample_mask_to_template from siac.geo.resample (eliminates 85 lines of duplication)
- Extract _write_bands helper in raster writer; partition STAC artifact iteration

Solver:
- Replace DCT-based smoothness with Pseudo-Huber penalty on finite differences
- Edge-preserving: quadratic for small gradients (noise), linear for large (hotspots)
- Add smoothness_delta config parameter threaded from schema through assembly
- apply_smoothness_filter now uses iterative Pseudo-Huber diffusion
- Cap multigrid grid levels at input dimensions; deduplicate collapsed levels
- Post-grid-search spatial smoothing with inflated uncertainty at invalid pixels

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@MarcYin MarcYin merged commit df76732 into feat/refactor Apr 3, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant