Posts 位图的色彩模式与通道
Post
Cancel

位图的色彩模式与通道

一、 前言

位图是我们最常见到的图像形式之一, 是以许多点阵(像素)稠密聚集组成的整体

通道可以看做是组成完整位图的分量—-比如RGB模式下, 图像由R G B三个通道组成

最常见的模式就是RGB模式, 但也存在其他模式, 它们有各自的应用场景

二、 正篇

2.1 RGB色彩模式

RGB图像由三个颜色通道组成。8 位/通道的 RGB 图像中的每个通道有 256 个可能的值,这意味着该图像有 1600 万个以上可能的颜色值。有时将带有 8 位/通道 (bpc) 的 RGB 图像称作 24 位图像(8 位 x 3 通道 = 24 位数据/像素)。通常将使用24位RGB组合数据位表示的的位图称为真彩色位图。

RGB模式又被称为三原色光模式, 将三原色的色光以不同比例相加, 合成产生各种色彩光

三原色叠加

我们平常看到的电子屏幕, 其实不是色光直接叠加后的结果: 它们没有重叠在一起, 只是因为大脑的有关的视觉机制, 强制将它们组合在一起, 才让我们看到组合后的了各种颜色

  • 常见的计算机RGB显示模式: 24比特模式、 32比特模式

24比特模式即RGB各8位->每个颜色通道强度的取值范围(0-255)

不同的强度组合成不同的颜色, 一个RGB的三元组组成了一个像素色彩的描述

24bit mode

32比特模式实际上是24位模式, 为了提高数据传送的速度塞了8位无关的数据

但在DirectX,OpenGL等环境下, 余下的8位数据表示像素的透明度(Alpha通道)

2.2 CMYK色彩模式

CMYK模式的中文是印刷四分色模式,利用色料的三原色混色原理,加上黑色油墨,共计四种颜色混合叠加,形成所谓“全彩印刷”

为了和前面的RGB模式联系起来, 在这里补充一个光学常识, 如果明白的话就直接跳过吧

*光学三原色和色料三原色的区别及形成原因

在小学的美术课上, 不出意外的话会教授三原色的知识, 不知道有没有人像我一样纠结三原色到底是红黄蓝还是红绿蓝

到了初中, 有人告诉我一种是光学三原色, 一种是色学三原色, 现在看来这种说法有点不够准确了

高中物理告诉我, 人眼’看到’物体, 是因为物体反射的光进入了我们的眼睛. 不同频率的光对应了不同的颜色, 所以我们的视觉实际接收到的信号, 就是进入我们眼睛的不同频率的光

不同物体呈现出不同的颜色, 是因为它们对不同频率光的吸收率不同:

  • 我们看到了绿色的树叶, 是因为树叶按特性吸收了各种频率的光后, 留下的光呈现出绿色
  • 我们看到书上的红色字体, 是因为油墨吸收过后反射的光是红色

这和显示器的原理不同:

  • 显示器是自发光的, 发出什么光我们接受什么光
  • 印刷物是反射光的, 我们接受的光其实是环境光(一般是白光)经过吸收反射的结果

结合上面的RGB模式, 光学三原色是Red红Green绿Blue蓝, 色学三原色即为它们的补色: 即Cyan青Magenta洋红Yello黄

  • 青色光(0, 255, 255) = 白光(255, 255, 255) - 红光(255, 0, 0)

也就是说, 我们看到的青色颜料, 其实就是”只吸收红光的物体”

同理:

  • 洋红色光(255, 0, 255) -> 洋红色颜料是”只吸收绿光的物体”
  • 黄色光(255, 255, 0) -> 黄色颜料是”只吸收蓝光的物体”

这样只吸收一种原色光的特性很适合进行混色:

混色

  • 对于色光, 我们使用加法进行混色, 如红光与绿光叠加: 红光(255, 0, 0) + 绿光(0, 255, 0) = 黄色光(255, 255, 0)
  • 而对于色料, 我们采用减法, 假设基础光(环境光)为白光(255, 255, 255): 基础光(255, 255, 255) - 洋红颜料吸收(0, 255, 0) - 青色颜料吸收(255, 0, 0) = 蓝光(0, 0, 255), 所以我们将洋红和青色颜料混合在一起, 就可以得到蓝色颜料

好的, 以上内容都在解释为什么印刷不用红绿蓝三色的颜料, 让我们回到正题, 讨论CMYK编码

通过上面的介绍, CMY的含义应该很好猜了: 分别是Cyan青Magenta洋红Yello黄, 而最后的K则是BLACK

CMYK

因为颜料的混合不是那么理想, 所以最常用的黑色单独用一种油墨以提高印刷质量

CMYK的四个颜色通道的取值都是0-100, 即0%-100%, 下面这张图应该会给你一些实感:

cmyk-kqblue

CMYK的色彩范围是远远小于RGB的, 所以不做印刷的话, 尽量不要选择CMYK模式, 更不要和RGB来回转换(换一次失真一次)

本来不应该扯这么远的, 毕竟搞计算机的重点还是在RGB模式,CMYK基本上就是设计师和印刷厂应该研究的东西了(捂脸). 真正地印刷起来, 设备因素、环境因素还有各种因素, 水深得很, 如果对CMYK有兴趣, 推荐看这篇文章

对于码农们来说, 最有用的也许就是四个通道的取值范围了)

2.3 索引颜色模式

这是一种单通道的模式: 正如名字那样, 是通过”查表”来获得颜色的

索引颜色十分有限, 一共有256种颜色, 也就是说只需要一个8位的单通道即可描述颜色, 比起三通道/四通道的RGB, 大大缩小了文件的体积, 由于色彩空间十分有限和索引的特性, 我们几乎无法对它进行任何有关颜色的编辑, 这时我们一般先将其转换成RGB模式进行编辑(在Photoshop的使用过程中, 这样的做法非常常见)

autodesk-indexed-color

上图是在AutoCAD中选择索引颜色的窗口

  • 这种囊中羞涩的感觉有没有在哪里的图片体会到?
  • 没错, GIF就是这种感觉!

GIF使用的就是索引颜色模式, 所以当我们兴致勃勃制作GIF后, 出来的色彩可能会让你大失所望

2.4 灰度和位图

把这两个放在一起说的原因, 是因为它们都是黑白的

  • 灰度图像就是我们常说的黑白图像, 当我们使用黑白打印机的时候, 彩色图片都会转换成灰度图像打印出来
  • 位图非彼位图, 文章标题的位图是相对于矢量图的概念, 而这里的位图则是一种色彩模式

大致了解一下之后先看两组图片

第一组

第二组是放大后的效果

第二组

可以看到灰度图片有灰色的过渡, 而位图非黑即白

我们很容易猜测出:

  • 灰度是单通道的(黑白)、 多位的(不同程度的灰色)
  • 位图是单通道的(黑白)、 一位的(0和1表示黑白两色)

其实灰度的取值也是在0%-100%之间(可能是便于印刷?)

2.5 Lab色彩模式

这个色彩模式可能最陌生, 我也是在photoshop中偶然看到的, 当时我一个朋友在发愁如何对照片的亮度进行量化, 我也算碰巧给了他一些思路

Lab模式是一种RGB和CMYK之间的替代颜色模式,Lab模式不能用于任何实际的输出设备(不像RGB和CMYK), 但具有独特的优势:

  • Photoshop的内部颜色计算是通过Lab颜色实现的
  • Lab模式的色域最宽,比起RGB和CMYK的颜色空间能提供更广的色域
  • Lab是基于人眼视觉原理创立的颜色模式,与人视觉的工作方式非常相似,理论上它概括了人眼所能看到的所有颜色

Lab如其名, 由Lab三个通道组成

  • L通道(也称“明度”通道)包含亮度信息,即保存图像的黑白信息。Lab颜色的很大一部分功能都源于颜色信息与亮度信息的分离

L通道

  • a通道包含绿色和洋红色信息。在某个给定的像素点,A通道值为0表示该像素既不是绿色也不是洋红色。在Photoshop中,a通道值为-128时表示该像素完全是绿色,+127表示该像素完全是洋红色。这种颜色结构被称为对抗色,因为通道中的颜色位于颜色刻度的两端。

a通道

  • 在Photoshop中,当b通道值为0时,该像素是黄色和蓝色之间的中性色调。b通道刻度上的-128表示纯蓝色,+127表示纯黄色。

b通道

三、 参考资料

This post is licensed under CC BY 4.0 by the author.

使用OpenCV进行人脸识别的三种算法

Python正则表达式