季節色彩分析如何成為色彩科學問題:底色、明度、彩度與對比度
Seasonal color analysis as a color-science problem (undertone, value, chroma, contrast)
季節色彩分析可視為由底色、明度、彩度和對比度構成的色彩科學問題,12 季型則是這些屬性空間中的不同區域。CIELAB 或 LCh 能將明度與色彩分開,對比度可用頭髮、皮膚和眼睛取樣區域的 L* 差異估算。DoColorAnalysis 提供免費的 12 題測試,無需照片或帳戶。
Seasonal color analysis is usually explained with fabric drapes and words like "warm" and "soft". If you're a developer, it's easier to think about it as a small color-science problem. Disclosure up front: I'm part of the team that built DoColorAnalysis, a free online color analysis tool, so this is the mental model we found useful, not a sales pitch.
The four variables
Most 12-season systems reduce a person's coloring to four properties:
- Undertone (hue direction): is the skin leaning yellow/golden (warm), pink/blue (cool), or in between (neutral)?
- Value (lightness): how light or dark the overall coloring is.
- Chroma (saturation): are the hair, skin and eye colors clear and saturated, or muted and greyed?
- Contrast: the lightness difference between hair, skin and eyes.
The seasons are just regions in that space. Spring is warm and clear, Summer is cool and soft, Autumn is warm and muted, Winter is cool and high-contrast. The 12-season version splits each into three sub-types depending on which property dominates (for example Light Spring vs Warm Spring vs Bright Spring).
Why CIELAB beats RGB here
RGB values from a photo mix lightness and color together, so they are a poor fit. CIELAB (or its cylindrical form, LCh) separates them:
-
L*maps nicely to value -
C*(chroma,sqrt(a*² + b*²)) maps to chroma - the hue angle
hand the sign ofb*(yellow vs blue) give a hint about undertone
import math
def lab_to_lch(L, a, b):
C = math.sqrt(a * a + b * b)
h = math.degrees(math.atan2(b, a)) % 360
return L, C, h
Contrast can then be approximated as the spread of L* between sampled hair, skin and eye regions.
The hard part is the photo, not the math
Lighting shifts everything. Warm indoor bulbs push skin toward yellow, phone filters raise saturation, and shadows lower L*. That's why every serious guide asks for a front-facing selfie in daylight from a window, no filter and little makeup. White-balancing against something neutral in the frame helps a lot.
Try it without code
If you want to check your own season before writing any code, the free 12-question color analysis test on docoloranalysis.com asks about veins, tanning, gold vs silver and your natural hair and eyes, and returns a likely season plus a runner-up. It runs in the browser and needs no photo or account.
Curious whether others have tried modelling seasons with k-means or a simple classifier on LCh features. Happy to compare notes in the comments.
來源:DEV Community · dev.to