色彩理论基础:RGB与HSV色彩空间、色相/饱和度/明度、色彩搭配原理、直方图与色调分析
各位同学,欢迎来到色彩理论这一章。说实话,很多做图像处理的朋友,上来就调参数,效果不好就硬调。我刚开始也是这样,后来发现,不懂色彩空间,就像开车不看仪表盘——能走,但迟早要翻车。
这一章,我们就把色彩这件事彻底聊透。从最基础的RGB,到更符合人类直觉的HSV,再到直方图怎么帮我们分析一张图的“脾气”。嗯,都是干货。
RGB色彩空间:计算机的“母语”
RGB,就是红、绿、蓝三个通道。每个像素由三个0-255的数值组成。说白了,计算机就是用这三种颜色的光,混合出你能看到的所有颜色。
我在项目中遇到过一个问题:用RGB直接做颜色增强,结果人脸偏紫。为什么?因为RGB三个通道是高度耦合的——你调了R通道,G和B的视觉感受也会变。这就是RGB的“坑”。
核心要点:RGB适合显示设备,但不适合做颜色编辑。三个通道互相影响,很难独立控制“颜色”本身。
| 通道 | 取值范围 | 物理含义 |
|---|---|---|
| R(红) | 0-255 | 红色发光强度 |
| G(绿) | 0-255 | 绿色发光强度 |
| B(蓝) | 0-255 | 蓝色发光强度 |
HSV色彩空间:人类的“直觉”
HSV把颜色拆成三个更直观的分量:色相(Hue)、饱和度(Saturation)、明度(Value)。
- 色相(H):0-360度,决定是什么颜色。红色0°,绿色120°,蓝色240°。
- 饱和度(S):0-1或0-255,决定颜色有多“纯”。0是灰色,1是纯色。
- 明度(V):0-1或0-255,决定颜色有多亮。0是黑色,1是最亮。
你想想看,调整一张人像的肤色,用RGB你得同时调三个通道。用HSV呢?只需要微调H通道,肤色就偏暖或偏冷了。我习惯在HSV空间做肤色校正,效果稳定很多。
我的经验:做肤色检测时,H通道在0-30度(红到黄)范围内,S和V控制在合理区间,基本就能框住大部分亚洲肤色。我曾经用这个规则写了一个自动美白算法,效果比盲目调RGB好太多了。
RGB与HSV的转换
转换公式不复杂,但手写容易出错。我直接给代码,你拿去用。
def rgb_to_hsv(r, g, b):
r, g, b = r / 255.0, g / 255.0, b / 255.0
mx = max(r, g, b)
mn = min(r, g, b)
df = mx - mn
if mx == mn:
h = 0
elif mx == r:
h = (60 * ((g - b) / df) + 360) % 360
elif mx == g:
h = (60 * ((b - r) / df) + 120) % 360
elif mx == b:
h = (60 * ((r - g) / df) + 240) % 360
s = 0 if mx == 0 else (df / mx)
v = mx
return h, s, v
注意:OpenCV里默认的HSV范围是H:0-180, S:0-255, V:0-255。和标准HSV不一样。我曾经因为这个坑,调了半天参数都不对——原来是范围没对齐。
色彩搭配原理:让画面“舒服”
做图像美化,不是调得越鲜艳越好。色彩搭配有基本规律。
- 互补色:色相环上相差180°的颜色。比如红和青。对比强烈,适合做视觉焦点。
- 类似色:色相环上相邻的颜色。比如蓝和紫。和谐统一,适合做背景。
- 三角色:色相环上等距的三个颜色。比如红、黄、蓝。活泼但难驾驭。
我个人习惯,做人像美化时,背景和肤色尽量用类似色,唇色和眼影用互补色来提亮。这样画面既有层次,又不突兀。
直方图与色调分析:读懂图像的“心电图”
直方图,就是统计每个亮度级别有多少像素。它能告诉你一张图是偏亮还是偏暗,对比度够不够。
举个例子:一张曝光不足的照片,直方图的像素都挤在左边(暗部)。一张过曝的,都挤在右边(亮部)。一张对比度好的照片,直方图应该覆盖整个范围,中间高两边低。
实用技巧:做色调分析时,我习惯把RGB三个通道的直方图叠在一起看。如果三个通道的峰值位置差不多,说明画面色彩平衡。如果某个通道明显偏左或偏右,那就是色偏——需要做白平衡校正。
直方图还能帮你判断“色调风格”。比如日系小清新风格,直方图通常偏右(亮部多),且高光部分有轻微溢出。复古胶片风格,直方图偏左(暗部多),且中间调有压缩。
我曾经接手一个项目,客户要求把夜景人像调成“电影感”。我一看直方图,暗部全挤在0-30区间,亮部几乎没有。我做了暗部提亮、高光压缩,再微调色相,直方图变成了“中间高、两端低”的经典分布。客户说“就是这个感觉”。
知识结构图:色彩理论体系
下面这张图,把这一章的核心知识点串起来了。你保存下来,以后做项目时对照着看。
总结一下
这一章,我们聊了RGB和HSV的区别,知道了为什么做颜色编辑要用HSV。学了色彩搭配的基本原理,以及怎么用直方图分析一张图的“健康状况”。
这些理论,是后面所有实战项目的基础。你花时间吃透它,后面调参数的时候,心里就有底了。