三原色光模式

三原色光模式（RGB color model，又称RGB表色系统、RGB颜色模型、红绿蓝颜色模型，是一种加色模型，将红（Red）、绿（Green）、蓝（Blue）三原色的色光以不同的比例相加混色，以合成产生各种色彩光。

RGB颜色模型的主要目的是在电子系统中检测，表示和显示图像，比如电视和电脑，利用大脑强制视觉生理模糊化（失焦），将红绿蓝三原色子像素合成为一色彩像素，产生感知色彩（其实此真彩色并非加色法所产生的合成色彩，原因为该三原色光从来没有重叠在一起，只是人类为了“想”看到色彩，大脑强制眼睛失焦而形成。情况其实就有点像看那些 autostereograms 的立体图时，大脑与眼睛扭曲才能看到“想”看的立体影像的情况）。红绿蓝三色模型在传统摄影中也有应用。在电子时代之前，基于人类对颜色的感知，RGB颜色模型已经有了坚实的理论支撑。

RGB是一种依赖于设备的颜色空间：不同设备对特定RGB值的检测和重现都不一样，因为颜色物质（荧光剂或者染料）和它们对红、绿和蓝的单独响应水平随着制造商的不同而不同，甚至是同样的设备不同的时间也不同。

## 相加原色

<image>

光的三原色是红色、绿色和蓝色，三种光相加会成为白色光。这是由于人类有三种视锥细胞分别对红、绿和蓝光最敏感。

三原色光和绘画中的“三原色”不同。绘画时用三种颜色青色（Cyan）、洋红色（Magenta）和黄色（Yellow）以不同的比例配合，会产生许多种颜色。如果三种原色中最深的色料相加，理论上会成为黑色，但实际上是深灰色，因此需要独立的黑色颜料。三色颜料加上黑色（blacK）便是“CMYK色彩空间”。

## 选择红绿蓝的生理原因

三原色的原理不是出于物理原因，而是由于生理原因造成的。人的眼睛内有几种辨别颜色的锥形感光细胞，分别对黄绿色、绿色和蓝紫色（或称靛色）的光最敏感（波长分别为564、534和420纳米），如果辨别黄绿色的细胞受到的刺激略大于辨别绿色的细胞，人的感觉是黄色；如果辨别黄绿色的细胞受到的刺激大大高于辨别绿色的细胞，人的感觉是红色。虽然三种细胞并不是分别对红色、绿色和蓝色最敏感，但这三种光可以分别对三种锥形细胞产生刺激。

不同的生物眼中辨别颜色的细胞并不相同，例如鸟类眼中有四种分别对不同波长光线敏感的细胞，而一般哺乳动物只有两种，所以对它们来说只有两种原色光。

既然“三原色的原理不是出于物理原因，而是由于生理原因造成的”，那么前段所说的“用三种原色的光以不同的比例加和到一起，形成各种颜色的光”显然就不大合适。使用三原色并不足以重现所有的色彩，准确地说法应该是“将三原色光以不同的比例复合后，对人的眼睛可以形成与各种频率的可见光等效的色觉。”只有那些在三原色的色度所定义的颜色三角内的颜色，才可以利用三原色的光以非负量相加混合得到。

例如，红光与绿光按某种比例复合，对三种锥状细胞刺激后产生的色觉可与眼睛对单纯的黄光的色觉等效。但决不能认为红光与绿光按某种比例复合后生成黄光，或黄光是由红光和绿光复合而成的。

## RGB颜色模型理论与应用的历史

### 摄影

早期的摄影都是以冲晒照片为主，所以是以减色法来达成。

到近代数码摄影的流行，感光元件都以感受三原色的光来组成相片，到后来的YUV。

### 彩色电视

#### 彩色显示屏（近距离观看）

至今为止，所有的彩色显示屏都是应用三原色光加色技术，以RGB 三原色作为子像素构成一像素，由多个像素构成整个画面。早期的彩色显示屏主要是以阴极射线管（Cathode ray tube，CRT) 为主，其后是液晶显示器（英语：liquid-crystal display，LCD）都是。

#### 大型彩色显示屏（远距观看）

大型彩色显示屏主要也应用三原色光加色技术，以 RGB 三原色 的LED构成一像素，由多个像素构成整个画面。

## RGB设备

### 三原色光模仿真彩色显示

红绿蓝的三原色光显示技术广泛用于电视和计算机的显示器，利用红、绿、蓝三原色作为子像素组成的真色彩像素，透过眼睛及大脑的模糊化,“人类看到”不存在于显示器上的感知色彩。最常见的有阴极射线管显示屏、LED显示屏、液晶显示屏和等离子显示屏等。三种原色光在每一象素中以0-255 (28)强度组合成从全黑色到全白色之间各种不同的颜色光，目前在计算机硬件中采取每一象素用24bit（位元）表示的方法，所以三种原色光各分到8比特，每一种原色的强度依照8比特的最高值28分为256个值。用这种方法可以组合16777216种颜色。最新的显卡、显示屏及软件，已可支援到 230 , 即可以产生出 1073741824种颜色。

### RGBW 模仿真彩色

近年，有鉴于传统RGB技术呈现纯白色时不够光亮及较为耗电，不少公司纷纷研发出没有颜色过滤物料的子像素，形成纯白色，并把有关技术称为RGBW，如三星的PenTile和索尼的WhiteMagic。

### 光线遇上萤幕时

近距离使用手机萤幕，在室内无光线干扰下，将不完全是白色的照明灯光投射在手机萤幕上，萤幕先形成最明显的蓝光，将照明灯靠近萤幕，再次形成范围较广的浅绿加上边缘小范围红光，把照明灯拉远后，将这三种颜色混合一起变成白光，也能正确发觉RGB出现在使用的手机例子之一。

## 非线性

由于伽玛校正，在计算机显示设备上的颜色输出的强度通常不是直接正比于在图象文件中R, G和B值。就是说，即使值0.5非常接近于0到1.0（完全强度）的一半，计算机显示器在显示 (0.5, 0.5, 0.5)时候的光强度通常（在标准2.2-gamma CRT/LCD上）是在显示 (1.0, 1.0, 1.0)时候的大约22%，而不是50%。

## 数值表示

一个颜色显示的描述是由三个数值控制的，他分别为R、G、B。但三个数值位为最大时，显示为白色，当三个数值最小时，显示为黑色。

数值表示可以使用以下几种不同的方式：

- 浮点：从0到1之间可用的数来表示。
- 百分比：从0%到100%。
- 整数：使用0到255之间的一字节（8比特）表示，通常表示为十进制和十六进制的数值。高端数字图像设备通常会使用更大的整数以区分更精细的阶级来表示，比如0~1023（10bit）、0~65535（16bit），或更大。

例如红色在不同方式下的表示：

方式｜RGB 表示

浮点｜(1.0, 0.0, 0.0)

百分比｜(100%, 0%, 0%)

八位数字｜(255, 0, 0) 或 #FF0000 (十六进制)

十六位数字｜(65535, 0, 0)

RGB与YUV转换公式 (RGB取值范围均为0~255)

- Y=0.299R＋0.587G＋0.114B ⁄ R=Y＋1.14V
- U=－0.147R－0.289G＋0.436B ⁄ G=Y－0.39U－0.58V
- V=0.615R－0.515G－0.100B ⁄ B=Y＋2.03U

## 几何表示

<image>

颜色通常都是用三种成分来定义的，不仅RGB颜色模型是这样，其它比如CIELAB和YUV也是如此。于是便采用三维空间来进行描述，把三种成分的数值当做欧几里得空间中普通笛卡尔坐标系的坐标值。在RGB模型中使用0到1之间的非负数作为立方体的坐标值，将原点（0,0,0）作为黑色，强度值沿坐标轴方向递增到达位于对角线（1,1,1）处的白色。

一个RGB组合（r,g,b）表示代表一个给定颜色的点在立方体内部、表面或者边上的三维坐标。这种表示方法使得在计算两个颜色相近程度时只需简单计算它们之间的距离：距离越短颜色越接近。

- 0100ff

## 计算机显示模式

### 24比特模式

每像素24位（bits per pixel，bpp）编码的RGB值：使用三个8位无符号整数（0到255）表示红色、绿色和蓝色的强度。这是当前主流的标准表示方法，用于真彩色和JPEG或者TIFF等图像文件格式里的通用颜色交换。它可以产生一千六百万种颜色组合，对人类的眼睛来说，其中有许多颜色已经是无法确切的分辨。

下图展示了24 bpp的RGB立方体的三个“完全饱和”面，它们被展开到平面上：

- (0, 0, 0)是黑色、(255, 255, 255)是白色、(255, 0, 0)是红色、(0, 255, 0)是绿色、(0, 0, 255)是蓝色、(255, 255, 0)是黄色、(0, 255, 255)是青色或水色、(255, 0, 255)是洋红色｜黄色（255,255,0）｜绿色(0,255,0)｜青色或水色(0,255,255)

红色(255,0,0)｜

<image>

｜蓝色(0,0,255)

红色(255,0,0)｜洋红色(255,0,255)

上述定义使用名为“全值域” RGB的约定。颜色值也经常被认为是取值于0到255之间，这可以被映射到其他数字编码。

- RGB 值使用0、255，三个“完全饱和”面离散化，可显示8种颜色
- FFFF00｜#00FF00｜#00FFFF
- FF0000｜#000000｜#0000FF
- FFFFFF｜#FF0000｜#FF00FF
- RGB 值使用0、128、255，三个“完全饱和”面离散化，可显示20种颜色
- FFFF00｜#80FF00｜#00FF00｜#00FF80｜#00FFFF
- FF8000｜#808000｜#008000｜#008080｜#0080FF
- FF0000｜#800000｜#000000｜#000080｜#0000FF
- FFFFFF｜#FFFFFF｜#800000｜#800080｜#8000FF
- FFFFFF｜#FFFFFF｜#FF0000｜#FF0080｜#FF00FF
- RGB 值使用0、64、128、192、255，三个“完全饱和”面离散化，可显示62种颜色
- FFFF00｜#C0FF00｜#80FF00｜#40FF00｜#00FF00｜#00FF40｜#00FF80｜#00FFC0｜#00FFFF
- FFC000｜#C0C000｜#80C000｜#40C000｜#00C000｜#00C040｜#00C080｜#00C0C0｜#00C0FF
- FF8000｜#C08000｜#808000｜#408000｜#008000｜#008040｜#008080｜#0080C0｜#0080FF
- FF4000｜#C04000｜#804000｜#404000｜#004000｜#004040｜#004080｜#0040C0｜#0040FF
- FF0000｜#C00000｜#800000｜#400000｜#000000｜#000040｜#000080｜#0000C0｜#0000FF
- FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#400000｜#400040｜#400080｜#4000C0｜#4000FF
- FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#800000｜#800040｜#800080｜#8000C0｜#8000FF
- FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#C00000｜#C00040｜#C00080｜#C000C0｜#C000FF
- FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#FF0000｜#FF0040｜#FF0080｜#FF00C0｜#FF00FF
- RGB 值使用0、51、104、153、204、255，三个“完全饱和”面离散化，可显示92种颜色
- FFFF00｜#CCFF00｜#99FF00｜#66FF00｜#33FF00｜#00FF00｜#00FF33｜#00FF66｜#00FF99｜#00FFCC｜#00FFFF
- FFCC00｜#CCCC00｜#99CC00｜#66CC00｜#33CC00｜#00CC00｜#00CC33｜#00CC66｜#00CC99｜#00CCCC｜#00CCFF
- FF9900｜#CC9900｜#999900｜#669900｜#339900｜#009900｜#009933｜#009966｜#009999｜#0099CC｜#0099FF
- FF6600｜#CC6600｜#996600｜#666600｜#336600｜#006600｜#006633｜#006666｜#006699｜#0066CC｜#0066FF
- FF3300｜#CC3300｜#993300｜#663300｜#333300｜#003300｜#003333｜#003366｜#003399｜#0033CC｜#0033FF
- FF0000｜#CC0000｜#990000｜#660000｜#330000｜#000000｜#000033｜#000066｜#000099｜#0000CC｜#0000FF
- FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#330000｜#330033｜#330066｜#330099｜#3300CC｜#3300FF
- FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#660000｜#660033｜#660066｜#660099｜#6600CC｜#6600FF
- FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#990000｜#990033｜#990066｜#990099｜#9900CC｜#9900FF
- FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#CC0000｜#CC0033｜#CC0066｜#CC0099｜#CC00CC｜#CC00FF
- FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#FFFFFF｜#FF0000｜#FF0033｜#FF0066｜#FF0099｜#FF00CC｜#FF00FF

使用每原色8-比特的全值域RGB可以有256级别的白-灰-黑深浅变化，255个级别的红色、绿色和蓝色（和它们的等量混合）的深浅变化，但是其他色相的深浅变化要少一些。由于gamma校正，256级别不表示同等间隔的强度。

典型使用上，数字视频的RGB不是全值域的。视频RGB是有比例和偏移量的约定，即 (16, 16, 16)是黑色，(235, 235, 235)是白色。例如，这种比例和偏移量用在了CCIR 601的数字RGB定义中。

### 16色

在这种模式中有16种基本颜色，它们分别是：

### 16比特模式

16比特模式分配给每种原色各为5比特，其中绿色为6比特，因为人眼对绿色分辨的色调更敏感。但某些情况下每种原色各占5比特，余下的1比特不使用。

### 32比特模式

实际就是24比特模式，余下的8比特不分配到像素中，这种模式是为了提高数据输送的速度（32比特为一个DWORD，DWORD全称为Double Word，一般而言一个Word为16比特或2个字节，处理器可直接对其运算而不需额外的转换）。同样在一些特殊情况下，如DirectX、OpenGL等环境，余下的8比特用来表示象素的透明度（Alpha）。

## 网页安全颜色

网页安全颜色应用的也是三原色光24比特模式，但网景色谱（Netscape Color Cube）将其确定为216种，用6种数码#00, #33, #66, #99, #CC, #FF(RGB 值分别是 0、51、102、153、204 和 255) 组合成216种排列方法表示颜色。一般使用者就不会被1670万种颜色所迷惑。这种表示颜色的方式被互联网在 HTML 3.2采纳为标准方法。此色谱又被称为网站设计颜色。

- 000000｜#330000｜#660000｜#990000｜#CC0000｜#FF0000
- 000033｜#330033｜#660033｜#990033｜#CC0033｜#FF0033
- 000066｜#330066｜#660066｜#990066｜#CC0066｜#FF0066
- 000099｜#330099｜#660099｜#990099｜#CC0099｜#FF0099
- 0000CC｜#3300CC｜#6600CC｜#9900CC｜#CC00CC｜#FF00CC
- 0000FF｜#3300FF｜#6600FF｜#9900FF｜#CC00FF｜#FF00FF
- 003300｜#333300｜#663300｜#993300｜#CC3300｜#FF3300
- 003333｜#333333｜#663333｜#993333｜#CC3333｜#FF3333
- 003366｜#333366｜#663366｜#993366｜#CC3366｜#FF3366
- 003399｜#333399｜#663399｜#993399｜#CC3399｜#FF3399
- 0033CC｜#3333CC｜#6633CC｜#9933CC｜#CC33CC｜#FF33CC
- 0033FF｜#3333FF｜#6633FF｜#9933FF｜#CC33FF｜#FF33FF
- 006600｜#336600｜#666600｜#996600｜#CC6600｜#FF6600
- 006633｜#336633｜#666633｜#996633｜#CC6633｜#FF6633
- 006666｜#336666｜#666666｜#996666｜#CC6666｜#FF6666
- 006699｜#336699｜#666699｜#996699｜#CC6699｜#FF6699
- 0066CC｜#3366CC｜#6666CC｜#9966CC｜#CC66CC｜#FF66CC
- 0066FF｜#3366FF｜#6666FF｜#9966FF｜#CC66FF｜#FF66FF
- 009900｜#339900｜#669900｜#999900｜#CC9900｜#FF9900
- 009933｜#339933｜#669933｜#999933｜#CC9933｜#FF9933
- 009966｜#339966｜#669966｜#999966｜#CC9966｜#FF9966
- 009999｜#339999｜#669999｜#999999｜#CC9999｜#FF9999
- 0099CC｜#3399CC｜#6699CC｜#9999CC｜#CC99CC｜#FF99CC
- 0099FF｜#3399FF｜#6699FF｜#9999FF｜#CC99FF｜#FF99FF
- 00CC00｜#33CC00｜#66CC00｜#99CC00｜#CCCC00｜#FFCC00
- 00CC33｜#33CC33｜#66CC33｜#99CC33｜#CCCC33｜#FFCC33
- 00CC66｜#33CC66｜#66CC66｜#99CC66｜#CCCC66｜#FFCC66
- 00CC99｜#33CC99｜#66CC99｜#99CC99｜#CCCC99｜#FFCC99
- 00CCCC｜#33CCCC｜#66CCCC｜#99CCCC｜#CCCCCC｜#FFCCCC
- 00CCFF｜#33CCFF｜#66CCFF｜#99CCFF｜#CCCCFF｜#FFCCFF
- 00FF00｜#33FF00｜#66FF00｜#99FF00｜#CCFF00｜#FFFF00
- 00FF33｜#33FF33｜#66FF33｜#99FF33｜#CCFF33｜#FFFF33
- 00FF66｜#33FF66｜#66FF66｜#99FF66｜#CCFF66｜#FFFF66
- 00FF99｜#33FF99｜#66FF99｜#99FF99｜#CCFF99｜#FFFF99
- 00FFCC｜#33FFCC｜#66FFCC｜#99FFCC｜#CCFFCC｜#FFFFCC
- 00FFFF｜#33FFFF｜#66FFFF｜#99FFFF｜#CCFFFF｜#FFFFFF