前言
本文初版写于 2015 年,距今已经快十年了。当时 IPS 屏幕开始普及还没几年,低色域 TN 笔记本屏幕仍然随处可见,而且可以说多数都严重偏色。如今 OLED 屏幕已经开始从高端下放,出厂校色也趋于平常了。毕竟都过了十年了,作为相对活跃的消费电子行业,不今非昔比反而奇怪。
如今看来,这篇教程的定位其实蛮奇怪的:有专业需求的人应该早就知道该怎么做,或者早就在用支持硬件校色的设备;而大多数“普通人”其实也并不怎么在乎偏色,而如今颜色越来越准,自己折腾的必要性也大大降低了。也许会对本文感兴趣的也就限于像我自己一样的数码科技业余爱好者了吧。
近些年色彩管理在软硬件上都有了一些新东西,本文已经无力一一涉及,只在开头简单提一下吧。
1. 本文推荐使用的 DisplayCAL 自 2019 年底已停止维护。虽然使用上暂时还没什么问题,但目前也已经有其他人接手继续维护的版本。顺便说,DisplayCAL 的论坛上仍然有不少活跃用户。
2. 由于广色域(如 P3)屏幕的逐渐普及,色彩管理的必要性凸显。即使不做完整的色彩管理,对广色域屏幕做色域缩限往往是必要的。这篇文章已经总结得相当全面,简单来说,自带 sRGB 模式能用就用,其次考虑通过 GPU 驱动来控制,比如 AMD 显卡驱动自带根据 EDID 信息做色域缩限的功能,Nvidia 显卡可以使用一个叫做 novideo_srgb 的工具通过调用一个隐藏 API 来实现,Intel 用户……无解,大概要等微软的自动色彩管理(ACM,见下一条)普及了。此外,还可以考虑使用一个叫做 dwm_lut 的通用工具,但它不是直接在 GPU 驱动层面发挥作用,会有一定性能损失。
3. 微软的自动色彩管理(ACM)我至今没有条件测试。恰好最近看到一篇其他人刚刚写的文章,或许能代表目前的状态。微软搞的这东西 break 了大家使用了很多年的工作流(也是本文使用的),当前第三方应用适配也几乎等于零,但毕竟是从无到有,大家按需开启吧。更多资料我建议自行参考微软的官方文档和这里总结的信息。
4. 然后就不得不提到 HDR……目前 HDR 屏幕普遍具有的特性(如动态背光、自动亮度限制)导致了它完全无法与传统的(如本文)校色工作流程兼容。业界目前似乎是有标准化的 HDR 屏幕校准方式的(Calman?),但我都不了解。
5. 苹果最近几年在部分高端产品(如 MacBook Pro 系列)上开始提供屏幕的标准图像模式,并提供了自行校准的选项,和专业显示器上的硬件校准类似(但实际上应该还是通过 GPU 实现的)。虽然我觉得一般人是没必要再去自己给这些屏幕校色(出厂应该已经是很准了的),但如果有需要的话,这个频道里有不少实用的信息。
以下正文。
=============================================================================
这个教程是给对屏幕校色完全不懂的“普通人”写的,内容力求傻瓜化,尽量少谈技术细节,简单直接达到目的,免得折腾和纠结。
校色仪选哪款
优先考虑 x-rite 家的入门级色度计(colorimeter)产品,例如 Calibrite ColorChecker Display Pro(原 i1 Display Pro),精确性与速度都不错;或者 Calibrite ColorChecker Display(原 ColorMunki Display),质量和前者相同,但速度略慢。不太推荐 DataColor 家的产品,在 Windows 上配合 DispayCAL(见下)使用时需要手动配置驱动,无法即插即用。
校色软件用哪个
请无视校色仪厂家自带的软件,直接使用免费开源的 DisplayCAL。
校色步骤
0. 先是一点准备工作,恢复你的显示器设置为出厂默认,并且保证在下面步骤 6 开始前亮屏时间超过 30 分钟。
1. 点上面 DisplayCAL 官网链接,打开后点击“Get DisplayCAL”,然后根据你的操作系统选择“For Mac OS X”或者“For Windows”下载相应文件并安装(Mac 下直接运行加载镜像即可)。
2. 运行 DisplayCAL,软件会提示你安装 Argyll CMS,按提示下载并安装即可。
3. 把你的校色仪通过 USB 接口连接到你的电脑上,在 DisplayCAL 中选择你要校准的显示设备,然后点击右边的蓝色小按钮,随后按钮右侧就会显示你连接的校色仪名称。
4. 由于我们用的是色度计(colorimeter)而非光度计(spectrophotometer),因此需要根据待校色屏幕的光谱,在下方的“Correction”中选择合适的修正文件。例如,早些年的白色 LED 背光屏幕(都是非广色域)应该选择“Spectral: LCD White LED Family”,而近些年的白色 LED 背光屏幕的光谱则以“Spectral: LCD PFS Phosphor WLED IPS, 94% P3”最为常见。如果不能确定,也可以根据待校色屏幕的型号(参考 DisplayCAL 里显示的名字)到这里搜索热心用户分享的 CCSS 修正文件(可以多下载几个交叉验证,注意不要 CCMX)导入 DisplayCAL 使用。另外,网上的评测或者其他用户的报告也可以参考,选一个最接近的。
5. 在界面顶部的“Settings”中选择“Office & Web (D65, Gamma 2.2)”,然后转到“Profiling”选项卡,把“Amount of patches”滑块拉到最左边(macOS 上应该默认就在最左边,不用改),最后点击最下面的“Calibrate & profile”按钮。
6. 参考校色仪附带的说明书,把校色仪挂在屏幕上,测量部位大约对准新弹出的窗口中心,然后点击“Start measurement”,如果你校正的屏幕提供了分别调节红绿蓝三色的功能(台式显示器一般都有)的话,按照实时返回的测量结果把三色调节平衡,否则只需要把屏幕亮度调节到你觉得合适的水平即可(一般以 100-150 cd/m2 为宜)。
7. 调整完成后点击“Stop measurement”按钮,然后点击右边的“Continue on to calibration”按钮,接下来的过程会持续 30-150 分钟不等,期间请保持周围环境光强度没有大的变化。
8. 校色过程完成后会弹出窗口提示结果,点击“Install profile”,取下校色仪,收工。
浏览器设置
所有以下主流浏览器都存在不能正确处理除 single curve+matrix 以外形式的 ICC profile 的问题,这也是上面的校色步骤 5 中需要修改色块数量的原因。
1. Chrome 从 62.0 开始支持并默认启用色彩管理,本身不需要额外设置,然而还存在一些问题。
- Windows 下的 Chrome 只支持对图片及 CSS 元素进行色彩管理,无法处理视频(曾经也是支持的,现在却又不行了)。
- macOS 下的 Chrome 也支持对图片及 CSS 元素的色彩管理,但视频的颜色是错误的,具体原因不明。
2. 基于 Chromium 的新版 Edge 和 Chrome 一样,不需要额外设置,存在的问题也相同。
3. Firefox 一直以来支持并默认启用色彩管理,但默认的设置存在问题,需要额外设置。
- Firefox 默认只对有标记的图片和 CSS 元素进行色彩管理,无标记的则会忽略,需要手动更改设置:打开 about:config,搜索“color_management”,将“gfx.color_management.enablev4 ”改为“true”(较新版本的 Firefox 已默认为 true),将“gfx.color_management.mode”改为“1”,然后重启即可。
4. Safari(macOS)支持并默认启用完整的色彩管理,不需要额外设置。
看图应用设置
看图软件太多啦,我没有一一测试过。这里只把 XnView MP 作为例子来说一下:打开 XnView MP 的 Settings - General - ICC,勾选 “Use ICC profile for monitor (slower)”,选择“System”,然后下方的“Default profile of picture”选择“sRGB”。
Photoshop 自带完整的色彩管理系统,一般情况下不需要进行额外设置。
顺便说,Windows 10 自带的“Photos”应用,可以识别图片中的 profile,但只会将其转换到 sRGB,而不会理会我们通过校色得到的 profile ;macOS 下的 Preview 应用支持色彩管理,但图片暗部细节和其他应用(Photoshop、Safari 以及正确配置后的 XnView MP)有轻微差异,原因不明,怀疑是 bug。
mpv/IINA
1. mpv 只需要在配置文件(mpv.conf)中增加一行“icc-profile-auto”即可。
2. IINA 需要打开 Preferences - Advanced,在“Additional MPV options”中添加一行,Name 为 “icc-profile”,value 为你的 ICC profile 所在位置,不出意外的话应该是类似“~/Library/ColorSync/Profiles/xxx.icc”的形式。
madVR
1. 在 DisplayCAL 界面顶部的“Settings”中选择之前校色得到的 ICC profile 文件名,然后在 Options 菜单中勾选“Enable 3D LUT tab”和“Show advanced options”。
2. 下面切换到 3D LUT 一栏,取消勾选“Apply calibration (vcgt)”,“3D LUT file format”选择“madVR (.3dlut)”,其他选项不需要更改。
3. 点击最下方的“Create 3D LUT...”按钮,开始生成 3dlut 文件,完成后点击“Install 3D LUT”按钮,完成。
4. 如果因为某些原因导致 3D LUT 没有正常自动安装,手动安装的方法是进入 madVR 设置,在 devices - 你的屏幕设备名 - calibration 中,选择“calibrate this display by using external 3DLUT files”,确保“disable GPU gamma ramps”未勾选,然后点击下方“BT.709”那一行右侧的黄色文件夹图标,指定为刚才得到的 3dlut 文件的位置。
Q&A
Q:我不想折腾,直接把别人在同型号显示器上的校色文件拿来用可以么?
A:同型号显示器可能有类似的颜色特性,所以实在不想折腾的话可以试试;但屏幕个体差异也有可能是比较大的,所以不要指望准确,甚至得到更差的结果也不奇怪。
Q:为什么不使用光度计?
A:光度计是直接测量光谱来确定颜色,自然就不需要像色度计一样根据屏幕光谱做修正。但光度计在低亮度下灵敏度较差,速度也较慢,廉价光度计精度有限,高精度光度计又过于昂贵了。比较理想的情况是使用高精度光度计来测量屏幕光谱,生成针对色度计的修正文件,再用色度计完成实际的校色,而我们这里就选择使用网上的热心用户分享的修正文件来配合色度计校色。
Q:我不喜欢 DisplayCAL 的 profile loader 随 Windows 开机启动并一直运行,能不用它么?
A:可以,但是不推荐。如果不是因为 Windows 自带的色彩管理程序垃圾到了匪夷所思的地步,DisplayCAL 的作者也不至于非要蛋疼单独写个 profile loader 出来。Windows 自带色彩管理程序的问题主要在于当屏幕数量大于一个时,只有在扩展桌面模式下能把不同的 profile 正确应用在对应的屏幕上,其他模式下的颜色都是错误的,而且在模式间切换时几乎总是会导致颜色错误;此外在加载校正曲线时的算法也有错误。如果你只有单个屏幕且不在乎精度损失,可以在安装 DisplayCAL 时选择“Let the operating system handle calibration loading”,如已经安装则打开 Windows Color Management - Advanced,点击最下方的“Change system defaults”,新窗口中的 Advanced - Display Calibration 下勾选“Use Windows display calibration”,并在 Windows Task Scheduler 中禁用 DisplayCAL Loader Launcher。
Q:为何在创建 3D LUT 时要取消勾选默认的“Apply calibration (vcgt)”?
A: 原因详见下面 20170915 更新说明。DisplayCAL 默认选择将此选项勾上的原因是为了利用 madVR 更高精度的内部运算和抖动处理,避免显卡 gamma table 校正造成的精度损失。如果你不在意我说的几点使用体验上的不足,一定要追求尽可能高的画质,请按照 DisplayCAL 默认那样勾选“Apply calibration (vcgt)”,甚至不嫌麻烦的话,从上面校色步骤的第 5 步开始,选择“Video 3D LUT for madVR (D65, Rec. 709 / Rec. 1886)”重新挂上校色仪测量一遍,获得一个精度更高的 profile。
=============================================================================
20250214 更新:修改了校色步骤 4 关于光谱修正文件选择的部分。DisplayCAL 其实已经自带了近几年常见的 WLED 光谱的修正文件,不知为何我愣是没看到……
20250203 更新:大概是最后一次更新了。
- 增加了前言。
- 根据最近 x-rite 产品名称变化做了相应修改,顺便也不再推荐 Spyder 系列了。
- 扩充了关于色度计的光谱修正内容。对于近些年非常常见的低蓝光 WLED 背光屏幕,DisplayCAL 已经没有自带合适的修正文件了,需要额外下载一个。
- 统一默认使用 single curve+matrix 形式的 ICC profile。这么多年都不修显然是 feature 而不是 bug 了……
- 其他个别地方根据最近的变化做相应修改,个别措辞调整。
20230513 更新:时隔好几年再次观察了一下,Firefox 目前(113.0.1)播放视频时的色彩管理看起来完全正确了。
20200702 更新:Firefox 在更新到 78.0 之后修复了色彩管理失效的 bug,但是同时也“修复”了曾经能正确处理非 single curve+matrix 形式 profile 的“bug”……这样一来,所有常见浏览器都已经无法正确处理非 single curve+matrix 的 profile 了:macOS(Safari)自从 10.11 开始不行了,Chrome 从来没有行过,现在 Firefox 也不行了。因此,要保证浏览器内颜色正确,必须使用 single curve+matrix 的 profile,但是这种形式精度较低,对于大部分显示器(颜色响应线性度较好)来说不是什么问题,对于很多电视来说就没有办法了。
20200620 更新:最近发现 Firefox 出现了严重的色彩管理 bug,顺便测试了一波各个浏览器的色彩管理情况,结果非常让人失望。Firefox 在 77.0 引入的这个 bug 在 beta 阶段就已经有人报告,却一直没有修复;Firefox 至今也一直在用错误的色彩矩阵来处理视频,且从来没有支持过视频的色彩管理。Chrome 曾经支持了视频的色彩管理,却不知何时又取消了支持。结果现在在 Windows 下大概已经没有任何浏览器能在播放视频时显示正确的颜色了。本以为 Chrome 在 macOS 下会可以,结果却发现颜色也是错误的(和 Safari 以及 mpv 不一致)。结论:目前就色彩管理来说,Safari 是唯一靠谱的浏览器。
20180516 更新:为了避免 macOS 上的 bug,DisplayCAL 3.5 开始在 macOS 上默认设置即为 single curve+matrix,所以这里去掉了这个步骤。
20171114 更新:更新了关于 Chrome 的色彩管理部分,本想说可喜可贺 Chrome 终于支持色彩管理了,结果发现和 macOS 一样的 bug,这到底是 bug 还是 feature……此外添加了 Photoshop 和 Windows、macOS 自带默认图片查看应用的情况。
20171024 更新:修改了部分在 macOS 上的校色步骤。macOS 系统的色彩管理(ColorSync)在处理非 single curve + matrix profile 时存在严重的 bug,会导致很多地方(尤其是 macOS 自带的 Preview)暗部颜色被挤压(crushed)。这个 bug 应该是自从 10.11(El Capitan)开始出现,目前在 10.13(High Sierra)上仍然存在。如果你已经按照以前的方法创建了 ICC profile 不想重新跑一遍,可以按照新增的校色步骤 5.2 中进行调整之后,在 File 菜单中选择“Create profile from measurement data...”,然后选择你目前的 icc 文件,保存为一个不同的文件名,然后安装新的 ICC profile 即可。此外,增加了一条关于 3D LUT 的 Q&A。
20171022 更新:修改了浏览器和看图软件部分中和 macOS 相关的内容。macOS 系统的色彩管理颇有点微妙,我会另外撰文细说。
20170915 更新:重写了关于 madVR 的 3D LUT 设置方法,改为直接由前面得到的 ICC profile 生成,且 3D LUT 中不包含 vcgt 信息;增加了一条 Q&A 。前思后想之后,我还是觉得默认的用 madVR 的 pattern generator 重跑一遍的方式太冗长了,所以改成了直接由 ICC profile 文件生成。至于为什么要打开高级选项,取消掉 DisplayCAL 默认勾选的包含 vcgt,原因如下:1. 3D LUT 中包含 vcgt 的话,madVR 启动时就必须将已加载的曲线重置,这会导致在 madVR 启动打开视频的瞬间屏幕颜色突变(特别是如果屏幕本身在加载校正曲线前后差别较大时),同样,在播放视频结束后两秒左右,DisplayCAL profile loader 会再次加载校正曲线,屏幕颜色再次突变,使用体验不好;2. 并不是所有人、所有时候都使用全屏幕观看视频,因此当 3D LUT 中包含 vcgt 时,校正状态被重置,此时视频的颜色是正确的,但其他部分的颜色就都是错误的了。3D LUT 中不包含 vcgt 信息的话,校正曲线始终保持(也必须保持)加载状态,开始和结束播放视频时不会有颜色突变,而且能保证视频和其他桌面部分的颜色都是正确的。
20170914 更新:增加了关于浏览器、看图应用和 mpv/IINA 的设置,增加了 Q&A 部分。
20161022 更新:修订了关于加载校色仪修正文件的部分(我之前的理解有误);增加了为 madVR 制作 3D LUT 的步骤。
20160821 更新:更新了 displaycalGUI 的名称(改名为 DisplayCAL)和官网地址,以及安装过程按照最新版做了一点点简化。