summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-25 11:00:06 +0200
committerPaul Buetow <paul@buetow.org>2026-03-25 11:00:06 +0200
commit4b642f7762a0d5f432c81f1d5b87554dffd972de (patch)
tree9e00231dcff10ea0173b54489064df65968cf64f
parentf0805e634fa5a46e6cbcb1fa83659c552eb260a1 (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.py18
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