什么是色域、色彩空间
下图是人眼可见的颜色通过数学关系映射到平面中,也叫马蹄图。
对于显示器来说,不可能百分百显示出人眼可见的颜色,只能显示一部分。并且显示器能力不一样,显示出的范围也不一致,为了规范显示器显示颜色的范围,就有了 sRGB、Adobe RGB、display P3 等各种各样的规范来描述一张图片显示的色彩范围。对于普通人来说,sRGB 是比较常见的,DCI-P3 则是一种比较常见的广色域色彩空间。
容易比较混淆的一点是,sRGB、DCI-P3 并不能笼统的称为色彩空间(Color Space),如果你保存一张 P3 广色域图片,你可以看到在苹果的文件信息查看器中显示的色彩空间是 RGB。
这是应为常见的色彩空间有两种 RGB、CMYK,前者在数码显示设备上使用,后者则是在打印领域使用。正确的说法是 sRGB、DCI-P3 属于一种 RGB 色彩空间。
色彩管理
当我们只做一张图片时,是基于某个色彩空间制作的,比如我想只做一张广色域图片,那么就可以使用 Display P3 色彩空间来制作,制作完成后为了让其他显示器知道这张图片是使用哪个色彩空间,就会给这个图片再内嵌一个 ICC 文件来进行标识,也就是颜色描述文件,我们可以通过查看文件信息来找到:
系统读取到这个标记后,就会尝试正确的还原这个颜色。但是屏幕只能显示一种色域,如果 P3 色域的屏幕显示了 sRGB 图片,就需要做相对应的转换。
举例来说:DIsplay P3 色域包含了 sRGB 所有可见的颜色,但是 P3 显示的颜色范围更广,对于 sRGB 图片的纯红色 rgb(255,0,0) 如果不加任何处理显示在 P3 屏幕上,红色将变得更加艳丽。因此为了正确还原 sRGB 的红色,一种比较理想的方式是将 P3 色域作为一个容器,在这个容器中,将 sRGB 中的 rgb(255,0,0) 映射为 rgb(234,51,35) 进行显示,那么这个图片在 P3 显示器中就能正确的显示 sRGB 图片而不是过饱和。这个色彩转换的流程就叫做色彩管理。
小米的色彩管理
小米默认的色彩管理模式是以尽量让用户看到的内容更鲜艳为目标来的,因此它会将 sRGB 内容的颜色拉伸到 P3 色域,让内容显示得更加鲜艳,但是遇到 P3 广色域的图就无法正确还原了,因为它的流程是如下的:
- 以 sRGB 作为颜色容器
- 超过 sRGB 范围的颜色进行 clip,颜色映射到 sRGB 色域的最边缘
- 然后将映射完的颜色显示在屏幕上,低端机 sRGB 就正常显示,如果是 P3 广色域的屏幕,会将 sRGB 颜色进行暴力拉伸,颜色看起来就更加鲜艳
小米的原色模式则是跟前面提到的标准的广色域映射流程是一样的,也就是以 P3 色域为容器,sRGB 内容也不会强行拉颜色。