【发布时间】:2020-04-23 04:11:56
【问题描述】:
如果我们有一个 RGB 图像,大多数浏览器,事实上,显示器只支持 sRGB 空间。我试图理解一些重要的事情。然后监视器/网络是否将图像中的每个像素转换为 sRGB 然后显示它?这意味着我们实际上看到的是图像的 sRGB 版本。
另外,如果是这样,我们可以使用哪个公式进行转换,如果我们自己进行转换,我假设我们会得到一个“看起来”与原始图像完全相同的图像?
【问题讨论】:
如果我们有一个 RGB 图像,大多数浏览器,事实上,显示器只支持 sRGB 空间。我试图理解一些重要的事情。然后监视器/网络是否将图像中的每个像素转换为 sRGB 然后显示它?这意味着我们实际上看到的是图像的 sRGB 版本。
另外,如果是这样,我们可以使用哪个公式进行转换,如果我们自己进行转换,我假设我们会得到一个“看起来”与原始图像完全相同的图像?
【问题讨论】:
图像文件中的像素值只是数字。如果图像“位于”大于 sRGB 的空间(例如 ProPhoto),则只有在启用颜色管理或您自己执行转换的情况下,像素值才会“转换”为 sRGB。
如果有颜色管理引擎,浏览器或设备只会将非 sRGB 颜色空间的标记图像转换为 sRGB。
在没有色彩管理和标准 sRGB 显示器的情况下,所有图像都将“如同”显示为 sRGB,无论其色彩空间如何。 IE。它们可能显示不正确。
即使带有色彩管理,如果图像未标记,它也会显示为系统设置使用的任何默认值(通常是 sRGB)。
至于公式:这种转换通常称为“色域映射”——您实际上是将色度分量从一个空间映射到另一个空间。我将在下面通过链接讨论多种技术和方法。
如果您想自己进行色彩空间转换,请查看Bruce Lindbloom's 网站。如果您想要一个可以使用的色彩管理引擎,请查看Argyll,这里是list of open source tools.
因为这里还有一些“替代”(虚假)信息的其他答案,所以我在这里编辑我的答案以添加和帮助澄清。
要明确(参考另一个答案):RGB 是颜色模型,sRGB 是颜色空间,像 sRGB 的 ICC 配置文件这样的可解析描述是颜色配置文件。
其次,sRGB 是 Web 内容的标准,在 Web 浏览器中没有显示配置文件的 RGB 值名义上假定为 sRGB,因此在大多数浏览器中被解释为 sRGB。但是,如果用户具有广色域(非 sRGB 显示器)并且没有色彩管理,那么非色彩管理的浏览器通常会在显示器的色彩空间中显示,这可能会产生意想不到的结果。
RGB 是一种加色MODEL。它之所以如此命名,是因为它是一个三刺激模型,它使用三种窄带光“颜色”(红绿和蓝),选择这些光以尽可能独立地刺激每种眼睛的视锥细胞类型。
sRGB 是一种颜色SPACE。颜色空间是颜色模型的子集,但会添加一些细节,例如原色的色度、白点和色调响应曲线(也称为 TRC 或 gamma)。
sRGB-IEC61966-2.1.icc 是 sRGB 颜色空间的 ICC 颜色PROFILE,用于通知颜色管理软件具体细节,以便进行适当的转换。
色彩管理是一个系统,它使用有关设备配置文件和工作色彩空间的信息来处理输出、查看、显示器上的软打样等转换。请参阅This Crash Course on CM
LUT 或 LookUp Table 是另一种可用于转换图像或应用颜色“外观”的文件类型。
色域映射是一种将一种颜色空间的颜色坐标转换或映射为不同颜色空间坐标的技术。执行此操作的方法取决于许多因素以及所需的结果或渲染意图。
渲染意图表示使用的方法,例如,它应该是感知的吗?绝对比色法?相对于黑点补偿?饱和?见this discussion of mapping and Argyll.
色彩空间变换和转换非常重要。并不是说通过一个名义公式就可以粘贴图像数据并获得良好的结果。
阅读上面的几个链接会有所帮助,我还想建议Elle Stone's site.,尤其是关于个人资料的。
【讨论】:
注意:我使用我认为最常见的表示法(如上一个答案中的替代表示法):RGB 是 颜色模型,[所以计算各种事物的公式,但没有定义比色法、刻度和伽马; sRGB 是一个色彩空间,因此具有定义的色域;通过颜色空间,我们知道可以描述哪些颜色,哪些不能; profile 是设备的特征(因此它定义了设备特定的颜色空间)、intent,并且通常还有一些转换颜色的计算方法。
sRGB 是由计算机制造商和软件公司定义的,用于标准化颜色,但在旧屏幕和低分辨率的情况下,它真的无关紧要。注意:他们使用 Rec.709 (HDTV) 的原色,但使用不同的白点和伽玛(观看条件不同:我们在较暗的房间里看电视和电影;我们有工作用的电脑,在明亮的房间里使用) )。
所以通常的方式(在颜色配置文件之前):图像有 3 个通道,每个通道的值从 0 到 255,一个用于红色,一个用于绿色,一个用于蓝色。这是直接发送到视频内存,视频卡将这些值发送到屏幕而不修改它们(在数字 RGB 信号上)。屏幕将 3 个通道值用于 3 个子像素的强度。注意:对比度和亮度控制 [在 CRT 屏幕上] 允许进行一些修正。
因为假定的颜色空间是 sRGB(并且屏幕是为显示 sRGB 而构建的),所以这是标准,并且由 HTML 标准化(作为默认颜色空间)。因此,如果您的浏览器没有明确的颜色空间(例如图像),它将假定它是 sRGB,因此不会更改值。
屏幕改进,内容的创建和修改开始在计算机上完成,并且有许多具有不同色彩空间的媒体,图像开始指定色彩空间:电视有限制范围(16-235)和不同的伽玛(和白点),DCI-P3(数字电影)具有不同的伽玛和原色(广色域),打印通常需要更宽的色域(忘记小型 CMYK 打印机),打印照片也需要不同的动态范围,伽玛,白色,和色彩空间。
所以现在(假设是 RGB 图像,但请注意许多图像不是 RGB,而是 YCC(例如 JPEG)),图像应该有自己的配置文件,它告诉我们相机的颜色特征(所以红色是值 255,0,0)。颜色感知程序将检查输出配置文件和输入配置文件,并调整颜色,以使最终结果接近预期颜色。
因此,如果您有一个未配置文件或 sRGB 图像,并且您的屏幕没有配置文件(或 假 sRGB 配置文件):值 255,0,0 将显示最强烈和“ red-dest" 屏幕可以显示的红色。
如果您有一个未配置文件的图像,但输出屏幕的配置文件:如果意图是“绝对的”:屏幕会尽力根据 sRGB 匹配颜色。色域外将与色域颜色越接近。 “相对”的意图:它缩放了许多值,因此您不会看到高光(许多超色域值的颜色相同)。眼睛会纠正,所以你会适应(我们会很快适应,例如 sRGB 等不饱和色彩空间)。其他意图更多的是关于图形,因此它保留了值:与原始值不同,但尽可能不同(对于情节和漫画,这可能很好)。
如果你有一个配置文件,它几乎是一样的,只是你会发现更多的不同。
AdobeRGB 图像(但没有配置文件)将在大多数广域屏幕(启用广域)上以正确的饱和度显示,并且在 RGB 屏幕上显示为不饱和(如果没有配置文件;"绝对和感知意图”可以纠正缺乏饱和度)。
相反,在 AdobeRGB 上显示的 sRGB 图像将被视为过于饱和。如果图像有配置文件,则可以正确看到图像。
在 RGB 图像(通常格式)上,颜色不能超出该图像的色域:255,0,0 和 0,255,0 和 0,0,255 是图像颜色空间的原色,因此您只能描述颜色空间中的颜色(如果未指定,则假定为 sRGB)。这在某些格式上是不正确的,其中允许负值或高于“白色值”的值,例如浮点值格式 (openEXR)。
注意:宽色域屏幕通常有一个硬件按钮来切换色彩空间,从原生到 sRGB(和返回),因为许多应用程序与颜色配置文件不兼容,但我们仍然需要浏览器和邮件。
如果您有兴趣,请阅读 Giorgianni 等人的书。 (来自柯达)是一个很好的介绍:两位作者都在柯达工作(所以胶片 [照片,电影],但他们正在制作 PhotoCD),因此在屏幕和色彩空间以及意图方面存在很多问题。 ICC(个人资料的标准)(在我看来)是此类书的后续:ICC 网站上有关于该主题的各种信息。
【讨论】:
简单来说:RGB 是一种颜色空间,而 sRGB 是一种颜色配置文件。
profile 将 RGB 值解释为特定的上下文,例如设备、软件、浏览器等,以确保您在用户可能会看到您的图片的各种设备上具有一致的颜色。
没有配置文件的 RGB 值基本上是无用的,因为显示设备或软件必须猜测如何将 RGB 值映射到显示颜色空间。相当于假设您收到 100 张未知货币的钞票,并被要求将其转换为您的本国货币。它不起作用——你需要知道如何映射这两个值。
所以基本上您不必担心自己解释图像。对于 web 而言,似乎是始终转换为 sRGB profile(图像色彩空间仍然是 RGB)并让浏览器进行解释的最合理方法。
您会发现似乎是最新信息,其中包含主要浏览器的图形以及它们在this EIZO page 上正确显示 sRGB 配置文件的能力。
PS:为了增加对色彩管理的普遍混淆 - 色彩空间有时可能被称为色彩模型,而色彩配置文件可能有时称为色彩空间。
【讨论】: