一、图像色彩转换
(1)原理
- 首先我们讲解下图像的一种表示方法:RGB
- 其次我们再了解下图像的另一个表示:HSB,也叫作HSV
RGB
RGB,是指颜色的三原色,分别代表红色(red),绿色(green),蓝色(blue),用这是三种颜色混合可以表示任意的颜色。RGB是根据颜色发光的原理来设计的,比如这里有红绿蓝三道光,当三束光混合在一起的时候,其呈现的最终的光效颜色就取决于这三种原色光的强弱了。
- 比如说红光最强,绿光和蓝光几乎没有,那么最后结果肯定呈现为红光了。
- 如果蓝光很弱,红光和绿光非常强,那么结果就是红光和绿光的混合光,也就黄光。
- 如果红绿蓝三种光都非常强,那么就会呈现三种光的混合光,也就是白光。
- 如果三种光都非常弱,那就几乎没有光,自然就是黑色了。
混合光图
这是一张平面图,没有很好地体现三原色的混合关系,可以看下面的三维立体图。
实际上可以对 RGB 色值建立一个三维坐标系,坐标原点就在上图中所看不见的那个正方体顶点,像左延伸为 R 红色轴,向右延伸为 B 蓝色轴,向上延伸为 G 绿色轴。
RGB 在进行色彩表示时使用了 256 阶,也就是从 0-255,可以由一个字节来表示。数值越大,RGB 三个轴,每个轴对应的数值越大,就代表其亮度越高,最亮就对应着 255,最暗就对应着 0。三个轴上的三个数字联合起来可以用来表示一个颜色。
例如:
- (255, 255, 255) 就代表 RGB 都是满的,组成白色。
- (255, 255, 0) 就代表 R 红色是满的,G 绿色是满的,B 蓝色是没有的,红色和绿色混合为黄色,所以它就表示黄色。
- (0, 0, 0) 就代表 RGB 都是没有的,呈现黑色。
因此,通过这三个数值,我们就可以实现任何颜色的表示了。
HSB
如果我们要做一张图片的色彩的转换,了解RGB还不足以支撑我们去完成这个任务。因为要对一张图片实现色彩的转换,需要调节的是色相。那么色相是什么呢?它就是我们将要谈到的HSB中的H了。
HSB,又叫做 HSV,其实也是三个参数,分别是色调(Hue)、饱和度(Saturation)、明度(Brightness),在 HSV 中 V 代表 Value,也是明度(Brightness)的意思。通过这三个值,我们同样可以表示任意的颜色。
首先我们看看 HSV (HSB) 颜色模型的坐标轴图吧,它可以用这么一个锥形的坐标来表示:
色调,Hue,它是一种角度度量,就是图中 Hue 所示的角度