色相(Hue)是色彩三属性之一,与色调(Hue)实际上是同一个概念,只是叫法不同。色相是指颜色的基本属性,它使我们能够区分不同的颜色,如红色、蓝色、绿色等。色相与光的波长有关,但在数字色彩表示中,我们使用数值来描述色相。
在HSV(色相、饱和度、亮度)和HSL(色相、饱和度、亮度)色彩空间中,色相是一个明确的分量,可以直接用来描述一个颜色是哪种颜色。以下是色相的计算方法:
色相的计算(HSV色彩空间)
- 归一化RGB值:首先,将RGB值归一化到[0, 1]范围。
R' = R / 255
G' = G / 255
B' = B / 255 - 找到最大值V和最小值m:计算RGB三个值中的最大值和最小值。
V = max(R', G', B')
m = min(R', G', B') - 计算色相H:色相H的计算取决于哪个颜色通道是最大值。
- 如果 R' = V,则 H = (G' - B') / (V - m)
- 如果 G' = V,则 H = 2 + (B' - R') / (V - m)
- 如果 B' = V,则 H = 4 + (R' - G') / (V - m)
计算出的H值通常需要调整到[0, 1]或者[0, 360]的范围内。如果H是负数,需要加1(对于[0, 1]范围)或者加360(对于[0, 360]范围)。
将H值转换为[0, 360]范围
H_degrees = H * 360
这样计算出的H_degrees就是色相的角度值,通常在0到360的范围内,其中:
- 0° 或 360° 表示红色
- 60° 表示黄色
- 120° 表示绿色
- 180° 表示青色(cyan)
- 240° 表示蓝色
- 300° 表示品红色(magenta)
例子
假设我们有RGB颜色(100, 150, 200):
- 归一化RGB值:
R' = 100 / 255 ≈ 0.3922
G' = 150 / 255 ≈ 0.5882
B' = 200 / 255 ≈ 0.7843 - 找到最大值V和最小值m:
V = max(0.3922, 0.5882, 0.7843) = 0.7843
m = min(0.3922, 0.5882, 0.7843) = 0.3922 - 计算色相H:
由于 B' = V,我们使用 B' 的公式:
H = 4 + (R' - G') / (V - m)
H = 4 + (0.3922 - 0.5882) / (0.7843 - 0.3922)
H ≈ 4 - 0.196 = 3.804 - 将H值转换为[0, 360]范围:
H_degrees = 3.804 * 360 ≈ 1379.44 / 4 ≈ 344.86°
所以,RGB颜色(100, 150, 200)的色相大约是345°,接近于品红色区域。
色相是用来描述颜色在色轮上的位置,它不涉及颜色的亮度和饱和度,只关注颜色本身。在图像编辑和设计中,色相调整是一个常见的操作,可以用来改变图像的整体色调而不影响其亮度和饱和度。