HSV
HSV是一种颜色表示模型,Hue(色相)Saturation(饱和度)Value(明度)。它是一种基于感知的颜色空间,相较于RGB,更贴近人类对颜色的感知方式
Hue
- 表示颜色的类型,如红 绿 蓝等
- 范围 0-360。 0°红色, 60°黄色, 120° 绿色, 300°紫色
Saturation
- 表示颜色的纯度
- 范围从0~1 0表示颜色是灰色,没有任何鲜艳度 1表示颜色是最纯的,完全没有灰度混合
Value
- 表示颜色的亮度
- 取值范围0~1, 0表示完全黑色, 1表示颜色的最大亮度
RGB转化为HSV
- 归一化RGB值:RGB值通常在0-255,需要归一化到0-1
- 计算最大值和最小值:找到RGB中的最大值 C m a x C_{max} Cmax和最小值 C m i n C_{min} Cmin ,并计算差值$\Delta = C_{max} - C_{min} $
- 计算H,色调取决于RGB中最大值的分量:
H = { 0 , if Δ = 0 6 0 ∘ × ( G ′ − B ′ ) Δ + 36 0 ∘ , if C max = R ′ 6 0 ∘ × ( B ′ − R ′ ) Δ + 12 0 ∘ , if C max = G ′ 6 0 ∘ × ( R ′ − G ′ ) Δ + 24 0 ∘ , if C max = B ′ H = \begin{cases} 0, & \text{if } \Delta = 0 \\ 60^\circ \times \frac{(G' - B')}{\Delta} + 360^\circ, & \text{if } C_{\text{max}} = R' \\ 60^\circ \times \frac{(B' - R')}{\Delta} + 120^\circ, & \text{if } C_{\text{max}} = G' \\ 60^\circ \times \frac{(R' - G')}{\Delta} + 240^\circ, & \text{if } C_{\text{max}} = B' \end{cases} H=⎩ ⎨ ⎧0,60∘×Δ(G′−B′)+360∘,60∘×Δ(B′−R′)+120∘,60∘×Δ(R′−G′)+240∘,if Δ=0if Cmax=R′if Cmax=G′if Cmax=B′
如果H>360,需要将其模360以保持在0-360的范围
- 计算S
S = { 0 , i f Δ = 0 Δ C m a x , o t h e r w