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 | 3ea7d5008a22bed08f673ea65728e50a84d50346 (patch) | |
| tree | 4b46f7a5cc10ad93a3e533749649b4b7a5a6ddb3 | |
| parent | b950375a30e13b2556d592097dbc36f5b2e57630 (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 |
