在 Web 浏览器中查看之前,RGB 图像是否会自动转换为 sRGB?

Are RGB images converted to sRGB automatically before being viewed in web browser?

如果我们有 RGB 图像,大多数浏览器,事实上,显示器只支持 sRGB space。我想了解一些重要的事情。 monitor/web 是否将图像中的每个像素转换为 sRGB 然后显示?这意味着我们实际上看到的是图像的 sRGB 版本。

另外,如果是这样,我们可以使用哪个公式进行转换,如果我们自己进行转换,我想我们会得到一个 'looks' 与原始图像完全相同的图像?

简单来说:RGB 是一种颜色 space 而 sRGB 是一种颜色 profile.

A profile 将 RGB 值解释为特定上下文,例如设备、软件、浏览器等,以确保您在用户可能会看到您图片的各种设备上具有一致的颜色。

没有配置文件的 RGB 值基本上是无用的,因为显示设备或软件必须猜测如何将 RGB 值映射到显示颜色 space。等价于假设您收到 100 张未知货币的钞票,并被要求将其兑换成您的本国货币。它不起作用 – 您需要知道如何映射这两个值。

所以基本上您不必担心自己解读图像。对于 web 来说,似乎最合理的方法是始终转换为 sRGB profile(图像颜色 space 仍然是 RGB)并让浏览器进行解释。

您会发现看似最新的信息,其中包含主要浏览器的图形以及它们在 this EIZO page 上正确显示 sRGB 配置文件的能力。

PS:为了增加围绕颜色管理的普遍混淆——颜色 space 有时可能被称为 颜色模型 颜色配置文件 有时可能被称为 颜色 space.

注意:我使用我认为最常见的表示法(因此作为先前答案中的备用表示法):RGB 是一种颜色模型,[因此计算各种公式事物,但没有定义的比色法、比例和伽玛; sRGB 是一种 颜色 space,因此具有定义的色域;使用颜色 space 我们知道哪种颜色可以描述,哪种不能; profile是一个设备的特征(所以它定义了设备特定的颜色space),intent,通常还有一些计算方法变换颜色。

sRGB 是由计算机制造商和软件公司定义的,目的是使颜色标准化,但是对于旧屏幕和低分辨率来说,这真的没什么大不了的。注意:他们使用了 Rec.709 (HDTV) 的原色,但具有不同的白点和伽玛(观看条件不同:我们在较暗的房间里看电视和电影;我们有工作用的电脑,我们在较亮的房间里使用).

所以正常的方式(在颜色配置文件之前):图像有 3 个通道,每个通道的值从 0 到 255,一个用于红色,一个用于绿色,一个用于蓝色。这是直接发送到视频内存,视频卡发送这些值而不修改它们(在数字 RGB 信号上)到屏幕。屏幕对 3 个子像素的强度使用 3 个通道值。注意:对比度和亮度控制 [在 CRT 屏幕上] 允许进行一些修正。

因为假设的颜色 space 是 sRGB(并且屏幕是为显示 sRGB 而构建的),这是标准,并且由 HTML 标准化(作为默认颜色 space ).因此,如果您的浏览器没有明确的颜色 space(例如对于图像),它将假定它是 sRGB,因此它不会更改值。

屏幕改进,内容的创建和修改开始在计算机上完成,并且有许多媒体具有不同的颜色space,图像开始指定颜色space:电视有有限的范围(16-235)和不同的伽马(和白点),DCI-P3(数字电影)有不同的伽马和原色(宽色域),打印通常需要更宽的色域(忘记小型 CMYK 打印机),打印照片还需要不同的动态范围、伽马、白色和颜色 space.

所以现在(假设是 RGB 图像,但请注意许多图像不是 RGB,而是 YCC(例如 JPEG)),图像应该有自己的配置文件,它告诉我们相机的颜色特性(所以哪个红色是值 255,0,0)。颜色感知程序将检查输出配置文件和输入配置文件,并调整颜色,以便最终结果接近预期颜色。

因此,如果您有未配置文件或 sRGB 图像,并且您的屏幕没有配置文件(或 fake sRGB 配置文件):将显示值 255,0,0您的屏幕可以显示的最强烈的 "red-dest" 红色。

如果您有未配置文件的图像,但输出屏幕有配置文件:如果意图是 "absolute":屏幕会尽可能根据 sRGB 匹配颜色。色域外将与色域中更接近的颜色一样。 "relative" 意图:它缩放许多值,这样您就不会看到高亮显示(许多色域外值的颜色相同)。眼睛会矫正,所以你会适应(我们会很快适应,例如不饱和颜色 spaces 作为 sRGB)。其他意图更多地与图形有关,因此它保留了以下值:与原始版本不同,但尽可能不同(对于情节和漫画来说这可能很好)。

如果你有个人资料图片,它几乎是一样的,只是你会发现更多不同之处。

AdobeRGB 图像(但没有配置文件)将在大多数广色域屏幕(启用了广色域)上以正确的饱和度显示,并且将在 RGB 屏幕上显示为不饱和(如果没有配置文件) ; "absolute and perceptual intent" 可以纠正饱和度不足)。

相反,一张 sRGB 图像,但在 Adob​​eRGB 上显示会被视为过于饱和。如果图像有个人资料,图像将被正确看到。

在 RGB 图像(通常格式)上,您不能让颜色超出此类图像的色域:255,0,0 和 0,255,0 以及 0,0,255 是图像颜色的原色 space ,因此您只能描述其颜色 space 中的颜色(如果指定了 none,则假定为 sRGB)。在某些格式上情况并非如此,在这些格式中允许使用负值或高于 "white values" 的值,例如关于具有浮点值的格式 (openEXR)。

注意:宽色域屏幕通常有一个硬件按钮来切换颜色 space,从原生到 sRGB(和返回),因为许多应用程序与颜色配置文件不兼容,但我们仍然需要浏览器和邮件。

如果你有兴趣,Giorgianni 等人的书。 (来自柯达)是一个很好的介绍:两位作者都在柯达工作(所以电影[照片,电影],但他们正在制作 PhotoCD),所以在屏幕和颜色 space 方面存在很多问题,并且意图。 ICC(个人资料的标准)是(在我看来)这本书的后续:ICC 站点有关于该主题的各种信息。

图像文件中的像素值只是数字。如果图像“在”space 大于 sRGB(例如 ProPhoto),像素值将仅在启用色彩管理或您自己执行转换的情况下“转换”为 sRGB。

如果有颜色管理引擎,浏览器或设备只会将非 sRGB 颜色的标记图像space转换为 sRGB。

在没有颜色管理和标准 sRGB 显示器的情况下,所有图像都将“好像”显示为 sRGB,无论其颜色如何space。 IE。它们可能显示不正确。

即使使用颜色管理,如果图像未标记,它将显示为系统设置使用的任何默认值(通常是 sRGB)。

至于公式: 转换通常称为“色域映射”——您实际上是将色度分量从一个 space 映射到另一个。我将在下面通过链接讨论多种技术和方法。

如果您想自己进行颜色space 转换,请查看Bruce Lindbloom's site. If you want a color management engine you can play around with, check out Argyll, and here is a list of open source tools.


编辑添加: 术语和技术

因为这里还有其他答案和一些“替代”(虚假)信息,所以我在这里编辑我的答案以添加并帮助澄清。

更正

  1. sRGB 使用与 Rec.709(又名 HDTV)相同的主要 白点色度。音调响应曲线略有不同。
  2. sRGB 由 HP 和 Microsoft 于 1996 年开发,大约在 1998 年被 IEC 定为国际标准。
  3. W3.org(万维网联盟。)将 sRGB 设置为所有网络内容的标准,在 CSS 颜色中定义。
    • 旁注,“HTML”不是标准组织,它是一种标记语言。 sRGB 已添加到 CSS 3 标准。
  4. 如果没有适当的颜色管理系统,配置文件将不起作用。

要清楚(参考另一个答案):RGB 是一种颜色模型,sRGB 是一种颜色SPACE,以及像 ICC 这样的可解析描述sRGB 的配置文件是颜色配置文件。

其次,sRGB 是网络内容的标准,在网络浏览器中没有显示配置文件的 RGB 值名义上假定为 sRGB,因此在 most 中被解释为 sRGB浏览器。但是,如果用户具有宽色域(非 sRGB 显示器)并且没有颜色管理,那么非颜色管理的浏览器通常会以显示器的颜色 space 显示,这可能会产生意想不到的结果。

条款

  • RGB是加法COLORMODEL。它之所以如此命名,是因为它是一种三刺激模型,它使用三种窄带光“颜色”(红绿和蓝),选择这些颜色来尽可能独立地刺激每种眼锥类型。

  • sRGB是一种颜色SPACE。颜色 space 是颜色模型的子集,但添加了诸如原色的色度、白点和色调响应曲线(又名 TRC 或伽玛)等细节。

  • sRGB-IEC61966-2.1.icc是sRGB颜色space的ICC颜色PROFILE,用于通知色彩管理软件具体细节,以便进行适当的转换。

    • 一些配置文件与打印机等特定设备相关。
    • 一些配置文件被用作“工作 space”。
    • ICC 配置文件包含一些与数学相关的信息,以便将配置文件应用于给定目标。
  • 色彩管理 是一个系统,它使用有关设备配置文件和工作颜色的信息 space 来处理输出、查看、软打样的转换在显示器等上。参见 This Crash Course on CM

  • LUT 或 LookUp Table 是另一种可用于转换图像或应用颜色“外观”的文件类型。

  • 色域映射是将一种颜色space的颜色坐标转换或映射到另一种颜色坐标的技术space。执行此操作的方法取决于许多因素,以及所需的结果或渲染意图。

  • Rendering intent 表示使用的方法,如,它应该是感知的吗?绝对比色法?相对于黑点补偿?饱和?参见 this discussion of mapping and Argyll.

技巧

Colorspace 变换和转换非常重要。并不是说把图像数据通过一个名义公式贴出来就能得到好的结果。

阅读上面的几个链接会有所帮助,我还想建议 Elle Stone's site. 特别是关于个人资料。