Add chroma-guided alpha suppression for background holes

Pull alpha toward 0 in the unknown band where bg_confidence is high, so green
that survives in hair gaps and hole pockets goes transparent (doc section 10).
Runs between trimap enforcement and alpha cleanup; sure-foreground pixels are
never touched, keyed by the bg_confidence we already compute.

On the two samples this clears the faint outer green halo (edge pixels
19.3k -> 16.0k) but has little *visible* effect, because their residual is no
longer green: it is magenta from the pymatting unmix on genuine semi-transparent
hair (vis-magenta p95 ~0.07, identical pre/post despill), which this pass
deliberately leaves alone. The magenta needs a separate colour fix.

Knobs live in AlphaPostSettings (chroma_suppress*, default on).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-30 18:03:09 +08:00
parent 9b7a192599
commit d6cf6ffe0c
4 changed files with 46 additions and 1 deletions
+6
View File
@@ -10,6 +10,12 @@ trimap:
unknown_radius_ratio: 0.012
fg_safe_radius_ratio: 0.006
alpha_post:
chroma_suppress: true
chroma_suppress_bg_low: 0.35
chroma_suppress_bg_high: 0.80
chroma_suppress_strength: 1.0
foreground:
enabled: true
method: ml