8-Bit-Only Aggressive Compression Plan (Quality 50/25/10)
Summary
All candidates will use 8-bit images only (no 16-bit outputs), then apply aggressive lossy compression with quality levels 50, 25, 10. Selection is based on max compression under automated (SNR, PSNR, SSIM) and manual QC gates.
Compression Candidates (all 8-bit)
- Global min-max -> JP2 (
q=50,25,10) - Percentile clipping (e.g., p0.1–p99.9) -> JP2 (
q=50,25,10) - Percentile clipping -> WebP (
q=50,25,10) - Percentile clipping -> JPEG (
q=50,25,10)
Pipeline
- Build manifest from
data/subset_raw(well/site/channel/path/size). - Convert each TIFF to 8-bit using each normalization strategy.
- Compress each 8-bit image for each codec/quality pair.
- Compute per-image metrics vs original (original normalized to matched dynamic range):
compression_ratio,SNR,PSNR,SSIM
- Produce summaries:
- per-image CSV
- per-candidate global + per-channel stats
- leaderboard (Pareto sorted by ratio then quality)
Manual Inspection
- Stratified sample: 30–50 images across
ch1–ch5. - Panels per sample: original / compressed / abs-diff / histogram.
- Reviewer checklist: cellular boundary clarity, puncta/texture retention, artifacts (blur/ringing/banding), pass/fail note.
Selection Rules
- Hard gates:
- decode success = 100%
- manual fail rate ≤ 10%
- p5 thresholds:
PSNR >= 32 dB,SSIM >= 0.95,SNR >= 25 dB
- Winner:
- highest median compression ratio among gate-passing candidates
- tie-break: higher median SSIM, then PSNR
Public Interface / Config Changes
- Add
cpjump.compressionblock in dataset.yml:bit_depth_mode: "8bit_only"(mandatory)normalization_methods: ["minmax","percentile"]codecs: ["jp2","webp"]quality_levels: [50,25,10]- QC thresholds and output paths
- Extend file discovery in image_loader.py for compressed extensions used in experiments.
- Add scripts:
scripts/compression/compress_images.pyscripts/compression/evaluate_quality.pyscripts/compression/manual_inspection.pyscripts/compression/run_pipeline.py
Tests
- 8-bit conversion correctness for min-max and percentile methods.
- Parsing/grouping works for compressed outputs.
- Metric functions validated on identical and degraded cases.
- End-to-end subset run creates all expected artifacts.
- Source TIFF files remain unchanged.
Assumptions and Defaults
- 8-bit-only is strict: no 16-bit compressed candidate is allowed.
- Initial run is subset smoke test on
data/subset_raw. - Quality sweep is fixed at
50,25,10for all candidates. - If all fail gates, next iteration adjusts normalization/clipping policy before changing quality sweep.
Last updated on