颜色是人类视觉感知的一种现象,人们对颜色的感知受到光的波长和光强的影响。颜色模型是色彩空间的抽象描述,它使我们能够以数学方式描述和操作颜色。
图像处理的基础在于图像本身,而图像在计算机中是由成千上万个小元素信息--像素(Pixel)组成的。每一个像素都包含了颜色,这些颜色信息在不同的色彩空间中以不同的方式表示。
RGB色彩空间:
用红、绿、蓝三原色的强度定义颜色;RGB色彩空间是最常见的加色模型,广泛用于显示设备和数字摄影。RGB模型是一种线性的颜色模型,这使得它在数字化过程中非常高效。它的缺点是难以与人眼感知的色彩致,因此在色彩处理(如色调、饱和度、亮度)时可能会有不方便之处。
对于8位的RGB图像,其每个像素值取值范围是0~255,如果某一坐标点A处红、绿、蓝三通道的像素值依次为255,255,255,那么该点表示的颜色为白色,如果该处红、绿、蓝三通道的像素值依次为0,0,0,那么该点表示的颜色为黑色,又如果该处红、绿、蓝三通道的像素值为其它值,则其表示的颜色为其它颜色。所以理论上8位RGB图可以表示的颜色种类数为255*255*255。R通道的图像就是只把红色的像素值提取出来,绿蓝像素值都为0。
下面是从左至右分别为RGB各通道的图像
|
|
|
|
|
|
HSV色彩空间: 用色相(颜色种类)、饱和度(纯度)、明度(亮度)来定义颜色;HSV色彩空间通过色相、饱和度和明度来表示颜色,具有更好的直观性,符合人类对颜色的感知方式。它常用于图像处理中的颜色提取、目标追踪、分割等任务。 ● H通道:H通道的像素值表示色调,取值范围0~360,我们可以把这个取值范围理解为角度,也即一个闭环的取值范围;S通道像素值的取值范围是0~1,值越大表示饱和度越高。 ● S通道:S通道的像素值表示图像的饱和度。饱和度是指图片彩色的纯度——图像的混合颜色越少,其饱和度越高,直观看起来就越鲜艳鲜明、视觉效果越强烈;反之图像的混合颜色越多,其饱和度越低,视觉效果越弱。 ● V通道:V通道像素值表示图像的明亮程度,取值范围也是0~1,值越大表示越亮。 HSV各通道图像效果:
|
|
||
|
|
|
|
|
H S V
LAB色彩空间:
LAB 将颜色拆分为三个完全独立的维度:
• L (Lightness - 明度):表示颜色的明暗程度。取值范围通常为 0(纯黑)到 100(纯白)。
• a (红-绿轴):表示颜色在红色和绿色之间的位置。正值为红色(+a),负值为绿色(-a),0 为中性灰。
• b (黄-蓝轴):表示颜色在黄色和蓝色之间的位置。正值为黄色(+b),负值为蓝色(-b),0 为中性灰。 (注:在常见的 8位图像处理软件中,a和b的取值范围通常被映射为 -128 到 +127。)
在2D视觉中,没有绝对“最好”的色彩空间,只有“最适合当前任务”的色彩空间。
• 如果你要找边缘、做匹配、求速度 ➔ 用 灰度 (Grayscale)降维打击。灰度将 3 通道降为 1 通道,计算量减少 2/3,同时去除了光照颜色带来的噪声,凸显了物体的物理结构。
• 如果你要按颜色抠图、做简单分割 ➔ 用 HSV / HSL。H(色相)通道对阴影和高光具有极强的免疫力。一个红苹果在阴影下,其 RGB 值会剧变,但其 HSV 中的 H 值(红色)基本保持不变。
• 如果你要做工业色差检测、无损图像增强 ➔ 用 LAB。在印刷、纺织、食品分选(如挑出变质的苹果)中,计算 Delta E (色差) 必须使用 LAB 空间。
• 如果你要训练深度学习大模型 ➔ 直接用 RGB。RGB 是数字世界的“母语”。虽然在传统算法中表现不佳,但深度学习模型具有强大的非线性拟合能力,能够自己在 RGB 的高维空间中学习到光照和颜色的隐式规律,因此通常不需要手动转换色彩空间。
理解并灵活运用色彩空间,是将一个“只能看”的图像像素矩阵,转化为“可计算、可理解”的机器视觉信息的关键第一步。