diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-25 11:00:06 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-25 11:00:06 +0200 |
| commit | 4b642f7762a0d5f432c81f1d5b87554dffd972de (patch) | |
| tree | 9e00231dcff10ea0173b54489064df65968cf64f | |
| parent | f0805e634fa5a46e6cbcb1fa83659c552eb260a1 (diff) | |
photo-enhance: reduce contrast across all scene profiles by 0.10
User feedback: contrast was too high on enhanced photos (~1.20 felt heavy).
Reduced all PROFILES contrast values by 0.10 (floor 1.00):
portrait 1.10→1.00, landscape 1.20→1.10, night 1.05→1.00,
indoor 1.15→1.05, golden_hour 1.20→1.10, overcast 1.20→1.10,
beach 1.15→1.05, street 1.20→1.10, default 1.15→1.05
Retrospective fix applied to 25 existing _e.jpg photos via:
magick -function polynomial 0.9167,0.04167
(equivalent to undoing 1.20 and re-applying 1.10 around the 0.5 midpoint)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| -rw-r--r-- | smart_photo_node.py | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/smart_photo_node.py b/smart_photo_node.py index f48e5d1..d3b70e9 100644 --- a/smart_photo_node.py +++ b/smart_photo_node.py @@ -268,23 +268,23 @@ class AdaptivePhotoGrade: # multiplier, detail enhancement multiplier, denoise strength (0..1). PROFILES = { # Portraits: gentle — preserve skin tones, avoid over-sharpening hair - "portrait": dict(stops=0.30, contrast=1.10, saturation=1.00, detail=1.2, denoise=0.15), + "portrait": dict(stops=0.30, contrast=1.00, saturation=1.00, detail=1.2, denoise=0.15), # Landscapes: vivid — strong clarity, saturated skies & greens - "landscape": dict(stops=0.20, contrast=1.20, saturation=1.15, detail=1.8, denoise=0.05), + "landscape": dict(stops=0.20, contrast=1.10, saturation=1.15, detail=1.8, denoise=0.05), # Night: lift shadows aggressively, reduce sharpening (hides noise) - "night": dict(stops=0.80, contrast=1.05, saturation=0.90, detail=0.8, denoise=0.30), + "night": dict(stops=0.80, contrast=1.00, saturation=0.90, detail=0.8, denoise=0.30), # Indoor: correct typically warm/dim ambient light - "indoor": dict(stops=0.50, contrast=1.15, saturation=1.05, detail=1.3, denoise=0.10), + "indoor": dict(stops=0.50, contrast=1.05, saturation=1.05, detail=1.3, denoise=0.10), # Golden hour: enhance warmth, lift shadow detail - "golden_hour": dict(stops=0.25, contrast=1.20, saturation=1.20, detail=1.5, denoise=0.05), + "golden_hour": dict(stops=0.25, contrast=1.10, saturation=1.20, detail=1.5, denoise=0.05), # Overcast: punch contrast to compensate for flat light - "overcast": dict(stops=0.40, contrast=1.20, saturation=1.10, detail=1.6, denoise=0.08), + "overcast": dict(stops=0.40, contrast=1.10, saturation=1.10, detail=1.6, denoise=0.08), # Beach: bright scene, protect highlights, boost blues/greens - "beach": dict(stops=0.15, contrast=1.15, saturation=1.20, detail=1.7, denoise=0.05), + "beach": dict(stops=0.15, contrast=1.05, saturation=1.20, detail=1.7, denoise=0.05), # Street: punchy contrast, neutral colour - "street": dict(stops=0.35, contrast=1.20, saturation=1.05, detail=1.5, denoise=0.08), + "street": dict(stops=0.35, contrast=1.10, saturation=1.05, detail=1.5, denoise=0.08), # Balanced fallback for unrecognised labels - "default": dict(stops=0.40, contrast=1.15, saturation=1.05, detail=1.5, denoise=0.10), + "default": dict(stops=0.40, contrast=1.05, saturation=1.05, detail=1.5, denoise=0.10), } @classmethod |
