为什么我们使用RGB而不是波长来表示颜色?


47

众所周知,特定光束的颜色取决于其频率(或波长)。另外,这不是数码相机首先捕获的信息吗?那么,为什么我们要使用RGB(或CMYKHSV等)格式来数字表示颜色呢?


23
您是否曾经将能够独立测量可见光的每个波长的光谱仪的价格与能够测量三种不同颜色过滤的总光的比色计的价格进行比较?
Michael C

6
提及它是因为在其他答案中没有提到它:我们不仅仅使用RGB来表示计算机系统中的颜色。这是最常规的一种,因为它与大多数捕获和成像系统的“本机”行为相匹配,但是还有另外两种常用的表示形式:HSV和YUV。还值得看一下CIE的详细信息:人眼感知的颜色和光谱颜色是不一样的!
pjc50

4
@ pjc50这是应该回答的好信息。听起来您有一个要乞求的答案。想要创建它吗?
scottbb

19
您的问题似乎暗示任何颜色都可以用单个频率/波长来描述。但是,情况并非如此:所有灰色(包括白色)以及许多颜色(例如粉红色或棕色)都无法用单一频率描述,它们必然是多种颜色的组合。
jcaron

14
因此它将是一组(波长,强度)元组。假设我们贫穷的人只能“看到”其中三个波长(粗略近似),那么我们就可以过滤掉仅匹配波长的那个波长。哦,该死,我们最终得到三个元组(红色,强度),(绿色,强度),(蓝色,强度)。俗称RGB :-)
jcaron

Answers:


11

我认为先前的回答中存在一些误解,所以我认为这是对的。参考:Noboru Ohta和Alan R. Robertson,“比色法:基本原理和应用”(2005年)。

光源不必具有单一频率。反射光是我们在世界上看到的大多数光,不需要具有单一频率。相反,它具有能谱,即其能量含量是频率的函数。光谱可以通过称为分光光度计的仪器进行测量。

正如在19世纪发现的那样,人类看到许多具有相同颜色的不同光谱。通过灯和滤光片产生两种不同光谱的光的实验已经完成,人们被问到,这些颜色是否相同?通过这样的实验,可以验证人们看不到频谱,而只能看到具有某些加权函数的积分。

数码相机捕获的是用不同滤光片覆盖的一组光电二极管对光的响应,而不是分光光度计所能看到的完整光谱。使用了三种或四种不同类型的过滤器。结果存储在相机输出的原始文件中,尽管许多人怀疑相机制造商或多或少地将原始文件“煮熟”了(相机传感器当然是高度专有的)。可以通过对原始数据应用矩阵变换来近似生理响应。

为方便起见,不是使用近似的生理反应,而是使用其他类型的三元组数字来命名颜色,例如https://en.wikipedia.org/wiki/Lab_color_space中所述的Lab (但请注意页面警告)。一个人必须将三元组与其他人区分开,三元组可以表示估计的生理反应的全部范围,而其他三元组则不能。使用后者是因为它们确实表示计算机屏幕可以显示的颜色。它们是Lab等三元组或原始数据进行转换的结果。CMYK适用于打印机。


正确而简洁的答案!光源不必具有单一频率。
Karan Karan

1
同样,不是所有色彩的阴影都可以用单一波长的光源再现!将您的徒弟带到一家电子商店,以在下一次机会获得棕色的LED :)以及廉价的可调光源,也可以再现您的波长编码图像:)
rackandboneman

RGB不是可以或不能描述所有颜色范围的单数术语。sRGB是事实上的标准,不能描述所有人类可感知的三色刺激值-颜色-但是scRGB是sRGB的重要扩展,它通过允许三个基色为负值来覆盖整个集合。#ffff00不是纯色,但您可以从中减去蓝色。
John Dvorak

@rack如果我们放弃了“便宜”的要求,那么电控薄膜也许可以解决问题。我认为该技术尚不存在,但我很乐意看到它完成。
John Dvorak

sRGB比没有定义sRGB限制的RGB值所表示的色彩空间要小得多。其他颜色空间也是RGB的形式,但是可以表示更大的颜色空间,因为定义的限制(每个通道的最小值和最大值转换成更大的值)。
Michael C

45

成像工程师的目标始终是用照相机捕获真实世界的真实图像,并以观察者看到真实图片的方式呈现该图像。这个目标从未实现。实际上,当今最好的图像是虚弱的。如果要实现此目标,则需要戴太阳眼镜以舒适地观看阳光照射下的远景图像。

您是在问为什么相机无法捕获产生人类视觉反应的整个辐射能。为什么现代相机只能捕获三个狭窄的部分,我们称之为红色,绿色和蓝色的主要光色?

答案属于我们如何看待的类别,即人类的视觉反应。多年来,提出了许多有关人类如何看待颜色的理论。迄今为止,所有人都未能对我们如何看待颜色的各个方面给出令人满意的解释。我们的眼睛敏感的波长范围涵盖400到700微米。地球大气在这个范围内是透明的,这绝非偶然。

当我们凝视着一个光源时,除非单独显示一个特定的波长,否则我们无法区分它。当我们观察白光源时,我们无法隔离和识别任何特定的颜色。我们的眼/脑组合可以解释光的颜色,而无需分析构成频率混合的原因。利用这一点,科学家通过实验证明,通过仅混合三种不同比例的颜色,几乎可以产生所有颜色。换句话说,以不同的强度呈现给人眼的红色,绿色和蓝色的混合,可以再现大多数光谱颜色,而不是精确地近似。这是托马斯·杨(Thomas Young)(英国1773年– 1829年)题为《色彩视觉的年轻理论》的作品。

詹姆斯·克莱克·麦克斯韦(James Clerk Maxwell,英国1831年-1879年)以杨的理论为基础,向世界展示了第一部彩色照片摄影作品。1855年,他使用了三台投影仪,并将投影在单个屏幕上的三幅图像叠加在一起。每个投影仪都装有彩色滤光片。这三个图像分别是三种浅色原色之一,即红色,绿色和蓝色。投影的电影图像是通过在三张黑白胶片上分别拍摄三张照片而制作的,每张照片都通过三个光源的一个滤光片曝光。

从1855年那一天开始,人们探索了无数种制作和显示彩色图片的方法。早期的彩色电影仅使用两种颜色投影微弱的彩色图像。宝丽来公司的创始人埃德温·兰德(Edwin Land,美国1909年至1991年)尝试仅使用两种原色制作彩色图片。这仍然是实验室的好奇心。到目前为止,最忠实的彩色图像是使用三种颜色的原色制作的。但是,一个人,加布里埃尔·利普曼(Gabbriel Lippmann,法国1845年至1921年)制作了精美的彩色图像,可以捕获整个可见光谱。他设计了一种使用带有镜面背衬的黑白胶片的方法。曝光的光穿透胶片,撞击镜子,然后反射回胶片中。因此,曝光是通过两次曝光光进行的。由银组成的图像,其间距等于曝光光的波长。观看时,该胶片仅允许与曝光的光的波长匹配的光通过。可以看到一张全彩色图片,其中不含颜料染料。Lippmann工艺独特而美观,仍然不切实际。我们的胶卷和数码相机可以追溯到Maxwell所采用的方法。也许,如果您学习人类的视觉和色彩理论,也许您将成为推动我们的科学并获得第一张真实忠实图像的人。我们的胶卷和数码相机可以追溯到Maxwell所采用的方法。也许,如果您学习人类的视觉和色彩理论,也许您将成为推动我们的科学并获得第一张真实忠实图像的人。我们的胶卷和数码相机可以追溯到Maxwell所采用的方法。也许,如果您学习人类的视觉和色彩理论,也许您将成为推动我们的科学并获得第一张真实忠实图像的人。


5
R,G,B系统不是三种狭窄或特定的颜色,它们各自是一个相对较宽的光谱范围,并且它们的相对比例允许进行加色混合。
布兰登·杜贝

5
@ BlueRaja-Danny Pflughoeft-医学刚刚鉴定出带有四个视锥细胞的小群人。彩色图像可以通过专门的快速闪烁图像在黑白电视上显示。色盲人士可以使用特殊的有色眼镜恢复色觉。科学日新月异。
艾伦·马库斯

3
@AlanMarcus甚至绿色滤光片的带宽为125nm,当我们将可见光定义为400-700时,包括光谱的三分之一,因为“窄而特定的颜色”是不正确的。自由范围的三分之一不是狭义的特定颜色。
布兰登·杜贝

6
@BrandonDube:根据您要捕获还是显示图像而有所不同。捕获图像时,每个R,G,B组件必须具有广泛的范围以反映人类的感知。在显示图像时,最好使每个分量都在狭窄范围内,以实现更宽的色域。
Dietrich Epp

2
“独特而美丽的利普曼过程仍然不切实际。” - 解释为什么。还是仅仅是因为白银很贵?
aroth

35

你说,

这是数码相机首先捕获的信息。

那是不对的。就大多数人而言,大多数数码相机上的传感器对光的响应频率范围很宽,超出了人类可以看到的红外和紫外线光谱范围。由于传感器捕获如此广谱的光,因此它们是光波长的可怕区分器。大致来说,数字传感器是黑白的

对于大多数相机传感器¹,为了捕获颜色,将彩色滤光片放置在传感器的前面,称为彩色滤光片阵列(CFA)。CFA将每个传感器像素(有时称为感测器)转换为主要是红色,绿色或蓝色的光传感器。如果您将原始传感器数据视为黑白图像,它将看起来像是抖动的,有点像半色调的黑白新闻纸图像。以高放大倍率放大时,图像的各个像素将具有棋盘状外观。

适当地将原始图像数据的各个正方形解释为红色,绿色或蓝色,您将看到图像的彩色抖动版本,类似于彩色半调新闻纸文章。

拜耳彩色滤光片阵列,来自Wikimedia Commons
拜耳彩色滤光片阵列,由Wikimedia Commons 用户Cburnett提供CC BY-SA 3.0

通过将图像数据保存在相机中或在计算机上进行后期处理时,通过称为去马赛克的过程,色彩数据的阵列将通过计算方式组合在一起,以创建全分辨率RGB彩色图像。在去马赛克过程中,每个像素的RGB值是通过一种算法计算的,该算法不仅考虑像素的值,还考虑周围像素的数据。

那么,为什么我们要使用RGB格式来数字表示颜色呢?

我们使用三色颜色模型,因为这是人类感知颜色的方式。从维基百科的三色性文章中

三色颜色理论始于18世纪,当时托马斯·扬(Thomas Young)提出色觉是三种不同的感光细胞的结果。赫尔曼·冯·亥姆霍兹(Hermann von Helmholtz)随后通过色彩匹配实验扩展了Young的想法,该实验表明,具有正常视力的人需要三个波长才能创建正常的色彩范围。

因此,我们构建的摄像头以类似于我们所见的方式捕获我们所看到的内容。例如,对于旨在捕获和复制我们看到的图像的典型摄影,捕获红外和紫外波长几乎没有意义。


  1. 并非所有传感器都使用CFA。Sigma DSLR和无反光镜相机使用的Foveon X3传感器依赖于以下事实:不同波长的光穿透硅达到不同的深度。X3传感器上的每个像素都是一堆检测红色,绿色和蓝色的光电二极管。由于每个像素都是真正的RGB传感器,因此Foveon传感器不需要去马赛克。

    徕卡M Monochrom是不具有CFA在传感器上的昂贵的黑色和白色仅相机。因为没有对入射光进行过滤,所以相机对光更敏感(根据Leica,100%或1级光圈,更敏感)。


12

相机和显示器在RGB中工作的原因是因为我们的视网膜以这种方式工作

由于我们的眼睛使用这些分量(RGB)对颜色进行编码,所以这是一种非常方便的系统(尽管当然不是唯一的一种),它不仅可以对纯波长进行编码(对于每个色度分量,它们或多或少地构成视网膜响应的确定性组合) ,也可以混色。

理由是“如果任何颜色组合只能作为三种成分的组合传递到大脑,我可以通过仅呈现给定的那些孤立的纯成分的组合(通过RGB显示屏)来欺骗视觉系统,并让视觉系统将它们解码为真实的东西。

有趣的是,由于我们是三色性的,所以大多数颜色系统本质上都是三维的(Lab,HSV,YCbCr,YUV等),这并不是因为颜色的固有物理特性,而是因为我们的视觉系统有效。


欢迎使用Photo.SE。好答案!
scottbb

12

尝试简单地回答:

  • 实际上,我们无法捕获足够的信息来存储出现的所有不同波长的光的逐个频率的完整分解,即使只是在可见光谱内。使用RGB,我们可以仅使用三个数字来描述像素的颜色。如果要捕获光的整个频谱,则每个单个像素将不需要3个数字,而是一个数据图。数据传输和存储将是巨大的。

  • 这对我们来说不是必需的。我们的眼睛不仅看到三个单一波长,而是我们的每个“红色”,“绿色”和“蓝色”接收器捕获部分重叠的光:

    重叠部分使我们的大脑能够将信号的相对强度解释为基色之间的不同颜色,因此仅给出三个基色的相对信号强度,我们的视觉系统已经非常擅长逼近实际波长。RGB颜色模型可以充分再现相同级别的信息。


3
+1但是您可以适当地施加压力。我的意思是说,使用Tricromatic系统可以获得很多颜色,但绝不是所有可能的颜色。值得注意的是,确实存在着更多波段的相机,而且它们产生的图像文件很大。事实上,我们很幸运,如果不是这样的话,微动刺激就能奏效,因此我们可以处于媒体存储的
正轨之中

的确,尽管如果3个传感器原色的响应与我们眼中颜色受体响应图相匹配,则从理论上讲,它仍将在再现我们所看到的一切方面达到准确度。
thomasrutter

不,曲线重叠的方式使得某些组合的波长分布发送唯一的信号。除了确切的组合之外,其他任何东西都无法复制。因此,不幸的是,三刺激输入永远不会让您获得整个人的视觉范围。
joojaa

“除了那个确切的组合,别无他法。” -这就是我的意思,从理论上讲,如果您的传感器原色敏感且曲线完全相同,则为1:1。假设您有一个人类视网膜,然后将其放入相机中并捕获了从视网膜发出的信号。
thomasrutter

2
@ChrisBecke在这里找到了一个解释:“红色敏感锥中的促红细胞生成素对两个波长范围都敏感。主要范围在500 nm至760 nm之间,峰值在600 nm。包括绿色,黄色,橙色和红色。较小的范围在380 nm至450 nm之间,在420 nm处达到峰值。其中包括紫色和一些蓝色。较小的范围是使色调看起来形成圆形而不是直线的原因。” 来源:midimagic.sgc-hosting.com/huvision.htm
thomasrutter

8

有两个相互作用的原因。

原因(1)是(通常)眼睛从任何给定点接收多波长的光(可以这么说)。例如,白光实际上(通常)是许多不同波长的混合。没有“白色”波长。类似地,洋红色(现今通常称为“粉红色”(通过“粉红色”))是红色和蓝色的混合物,但没有绿色(这会使它显得白色)。同样,看起来绿色的东西可能包含一些石灰和一些青色成分。

因此,原因(2)是RGB是人眼的工作方式-它具有红色,绿色和蓝色传感器。

因此,将(1)和(2)组合起来:为了使人脑以与解释原始信号相同的方式解释光信号,必须以其术语进行编码。

例如,如果(相反)原件是(一个人会感觉到的)白光,但是它是使用例如紫色和红色传感器(仅这两个)编码的,则在人眼中,复制品看起来像是洋红色。同样,但更精细或更精细……白光是各种颜色的混合……如果使用例如紫色,黄色和红色的传感器进行编码……在人眼中,这种复制品看起来不是纯白色,如(副手)淡黄白色。相反,对于想象中的外星人(甚至可能对某些真实的动物)来说,它看起来像是纯白色,眼睛里有相同的传感器(即紫色,黄色和红色)。

同样,如果原件是白色的(即各种颜色的混合物),则人眼感知到的将仅用红色,绿色和蓝色编码,而仅使用红色,绿色进行复制在人们看来,蓝色和蓝色(以相同的比例)将看起来像是纯白色-关键是两种情况下信息都会丢失,但最终结果看起来很完美,因为这些损失是相对应的。不幸的是,仅当相机中的传感器[RGB]的灵敏度曲线与人眼中的传感器[RGB]的灵敏度曲线完全相同时,它们才会完全对应[请注意,每个传感器都由多种颜色激活] –例如,在两种情况下,石灰以完全相同的量激活了红色,绿色和蓝色传感器中的每个传感器。


我认为,代表大多数波长的光的混合(以纳米为单位)在大多数人类敏感度范围内,由于靠近曲线下方的积分求和较大,因此红色和绿色之间的响应比蓝色和绿色之间的响应更强黄色的波长要比青色的波长要近:它会偏黄。
can-ned_food

@ can-ned_food您忘记了我们的大脑会根据其期望看到的内容来解释来自视网膜视锥细胞的信号。这就是我们如何分辨白色物体在以5500K为中心的全光谱太阳光和以2700K为中心的相当全光谱(但不如太阳光的全光谱)下都是白色的情况,例如钨灯泡发出的光。只有当光谱的很大一部分丢失时,我们才可以从白衬衫分辨出浅蓝色衬衫(在这种情况下,因为没有红色或绿色的光)。
Michael C

@MichaelClark嗯。好吧,即使我们的视野识别出了完全白色物体上的黑体反射轮廓(对于给定的入射光谱而言,不仅是明显的白色),因此始终将物体视为白色,那么这种假设的“平等主义”光谱将与预期的黑体轮廓有所不同,不是吗?
can-ned_food

@ can-ned_food在非常有限的光谱光下,当在更完整的光谱照明下观看时,对于两个具有不同“颜色”的不同物体,视网膜中视锥细胞的响应可能是相同的。为了感知“白色”,它不是“颜色”,而是所有颜色的组合,必须有足够宽的光谱光才能在视网膜的所有三种视锥细胞中产生响应。只有在这种情况下,我们的大脑(而不是眼睛)才能将物体解释为“白色”。
Michael C

@MichaelClark是的-或几乎相同,因为一个表面比另一个表面更暗。无论如何,我还不确定我是否理解你的第一句话。我需要对此进行研究。
can-ned_food

4

tl; dr:在光谱的三个主要部分上检测光比准确分析频率要容易得多。同样,更简单的检测器意味着它可以更小。第三个原因:RGB色彩空间模仿了人眼的操作原理。


正如马克斯·普朗克(Max Planck)所证明的那样,每个炽热的物体都会发出不同频率的辐射。他屈服并证明了能量是突然爆发的,称为光子,并非像以前那样连续地辐射。从那天起,物理学就不再一样了。唯一的例外是理想的LASER / MASER,它仅发射一个频率的辐射,并且放电(氖棒等)发射具有几个隔离频率的辐射。

强度在频率上的分布称为频谱。同样,检测器也具有其光谱,在这种情况下,它是检测器对归一化强度辐射的响应的分布。

如前所述,白光是白色的,因为我们的眼睛经过进化校准,可以看到从远红外线到紫外线的阳光都变成白色。例如,树叶之所以是绿色的,是因为它们吸收了除我们所看到的绿色部分以外的所有频率。

当然,有些检测器可以收集光谱并提取信息。它们用于光发射光谱法,X射线衍射和荧光技术,其中可根据光谱评估化学成分或微观结构。对于摄影来说,这太过分了。除了天文摄影,我们要评估“化学”成分,但图像被“翻译”为假色。这些检测器准确,巨大或很小,但不准确,您需要更多的计算能力才能对其进行分析。

人眼或其他任何眼睛都不是这种情况。我们看不到物体的化学成分或键合状态。在眼中,有四个不同的“探测器”:

  • 无色:这些是最敏感的,适用于所有可见频率。没有他们,你晚上就看不到任何东西。
  • 红色:在低频区域最敏感。这就是为什么热的东西先发红光的原因。
  • 绿色:这些在高频区域最敏感。这就是为什么当进一步加热时,热的东西会从红色变成黄色。
  • 蓝调:这些在高频区域最敏感。这就是为什么加热的东西多加热后会发白的原因。如果您能越来越多地加热它们,它们将开始发出淡蓝色的光。

如果我们看彩虹,或者CD或DVD,我们会看到颜色从红色变成紫色。彩虹的给定部分的光束大部分具有一个Perticullar频率。红外线对我们的眼睛来说是看不见的,并且不会激发视网膜中的任何细胞。增加频率,光束开始仅激发红色的“单元”,而颜色ic被视为红色。光束频率增加,激发的“主要是红细胞”,一点点激发“绿色”,颜色被看成橙色。黄色光束使“绿色”更加兴奋。

摄像头中的CCD或CMOS传感器会被任何频率的光束激发,以拍摄我们的眼睛将看到的图像,就像我们只是在模仿人的眼睛一样,例如使用贝叶斯滤镜。它由三个滤色镜组成,它们的透射光谱特意类似于我们视网膜的细胞类型。

从被太阳照亮的黄纸反射的光完全射出“红色”(100%),同时完全射出“绿色”(100%),而略微射出“蓝色”(5%),因此您看到它是黄色的。如果照照类似的方式拍照,则相机会收集到激发光。在屏幕上查看图像时,屏幕会在很短的时间内向您发送100个红色光子,100个绿色光子和5个蓝色光子。视网膜的激发水平将类似于直接观察引起的激发,并且您会得到一张黄纸的照片。

如果我们要复制颜色,则还有另一个问题需要解决。使用RGB色空间,每个像素仅需要三种类型的光源。我们可以有三种彩色滤光片(LCD可以像这样工作),我们可以有三种类型的LED(可以使用LED和OLED面板),我们可以有三种类型的发光体(可以使用CRT)。如果要完全复制颜色,则每个像素需要无限数量的滤镜/光源。如果要使用色频来简化信息,也无济于事。

您也可以尝试通过色温重现颜色。我想您将只能复制橙红黄白颜色,并且您必须将每个像素加热到3000 K左右的温度。

在所有理论上的情况下,您的眼睛仍然会将实际的真实颜色转换为其RGB信号,并将其传递给您的大脑。

要解决的另一个问题是如何存储数据?常规的18MPx RGB图像由三个矩阵5184x3456单元组成,每个点的大小为8位。这意味着每个图像51 MiB的未压缩文件。如果我们想以8位分辨率存储每个像素的全光谱,则将为5184x3456x256übermatrix,从而生成4 GiB未压缩文件。这意味着在430–770 THz范围内存储256个不同频率的强度,这意味着每通道间隔为1,3 THz。

如果我可以说完全不值得付出努力...


2
同样,您不能随温度产生所有颜色,因为彩虹中不存在人类可见空间的很大一部分;)
joojaa

@scottbb谢谢您的纠正,是的,我误以为是字节,忘记了除以8。–
Crowley

2

简短的答案:由于波长是一个单一的值,并且我们可以感知的整个颜色范围无法由一个单一的值表示,因此,除了矩形实体的尺寸以外,还可以通过单一的度量来表示。

继续类推-您可以引用实体的体积,但是有许多不同的实体具有相同的体积。

RGB,CMY,HLS等都使用三个“维度”,因为现在您需要很多才能充分描述人眼所见的颜色。

波长等于HLS系统中的色相,但不能告诉您亮度或饱和度。

关于“而且,不是([波长])首先由数码相机捕获的信息吗?” ,不,不是。

正如其他人指出的那样,金盏花捕获红色,绿色和蓝色的相对强度。(并且有些至少使用了另外一种颜色,以便在关键的红色到绿色区域中提供更好的辨别力。)直接测量入射光的频率要困难得多。我们只是没有便宜的传感器可以做到这一点,当然也不是我们可以在几百万个传感器的网格中制造的传感器。而且我们仍然需要相机测量亮度和饱和度的方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.