关于 color-management
面向使用开源工作流的图像编辑者和色彩专业人士,提供 ICC 配置文件管理技能。结合原理参考与脚本,用于检查配置文件、转换色彩空间、分析色域及图像。
主要功能
- 01检查 ICC 配置文件元数据
- 02图像色彩空间转换
- 03色域检查与软打样
- 04计算图像色差
- 05显示器校准指南
- 06生成综合色彩分析报告
适用场景
- 01检查图像内嵌的 ICC 配置文件
- 02在工作色彩空间间转换图像
- 03转换前检查超出色域的颜色
- 04比较不同图像的色差
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ magnus919/ agent-skills --skill color-management安装后在 Claude Code 中输入/color-management确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreREADME.mdassets/templates/icc-profile-report.mdlch-layer-stack.mdevals/evals.jsonreferences/color-management-overview.mddcraw-pipeline.mdglossary.mdhex-quantization-and-profile-creation.mdicc-profile-operations.mdmonitor-calibration-workflow.mdsoft-proofing-workflow.mdtool-reference.mdworking-spaces-reference.mdscripts/color-difference.pycolor-report.pycolor-space-convert.pygamut-check.pyicc-profile-inspect.pysrgb-compare.pywell-behaved-check.py详细介绍
色彩管理技能
面向开源工作流的 ICC 配置文件色彩管理专家级指南。涵盖色彩科学基础、工作空间选择、ICC 配置文件操作、色域分析和实用工具用法。
快速参考
| 如果你需要…… | 加载此参考资料 | 运行此脚本 |
|---|---|---|
| 了解 CIELAB、xyY 或色彩科学基础知识 | references/color-management-overview.md | — |
| 检查 ICC 配置文件的元数据/原色/TRC | — | scripts/icc-profile-inspect.py |
| 检查配置文件是否表现良好(中性灰轴) | references/working-spaces-reference.md | scripts/well-behaved-check.py |
| 在色彩空间之间转换图像 | references/icc-profile-operations.md | scripts/color-space-convert.py |
| 检查图像中哪些颜色超出色彩空间的色域 | references/soft-proofing-workflow.md | scripts/gamut-check.py |
| 比较 sRGB 配置文件变体 | references/working-spaces-reference.md | scripts/srgb-compare.py |
| 计算两张图像之间的色差(dE) | — | scripts/color-difference.py |
| 转换前软打样图像 | references/soft-proofing-workflow.md | scripts/gamut-check.py |
| 校准并创建显示器配置文件 | references/monitor-calibration-workflow.md | — |
| 使用 dcraw 处理原始文件 | references/dcraw-pipeline.md | — |
| 了解十六进制量化并创建表现良好的配置文件 | references/hex-quantization-and-profile-creation.md | scripts/well-behaved-check.py |
| 生成全面的色彩分析报告 | — | scripts/color-report.py |
| 设置 GIMP LCH 图层堆栈,以便分别编辑色调和颜色 | assets/templates/lch-layer-stack.md | — |
| 从图像中提取嵌入的 ICC 配置文件 | references/icc-profile-operations.md | scripts/icc-profile-inspect.py |
| 了解转换意图(相对/绝对/感知) | references/color-management-overview.md | — |
| 设置 Firefox,以便浏览时进行色彩管理 | references/tool-reference.md | — |
必需工具
此技能中的脚本会检查以下工具,并报告缺少的工具。按需安装:
- ImageMagick(
convert、identify、compare、composite)——主要图像处理工具 - Exiftool——元数据和 ICC 配置文件提取
- ArgyllCMS(
xicclu、iccgamut、colprof、cctiff)——专业色彩管理 - LittleCMS(
tificc、transicc)——ICC 配置文件转换
# macOS
brew install imagemagick exiftool argyllcms littlecms
# Debian/Ubuntu
sudo apt install imagemagick libimage-exiftool-perl argyll littlecms2
# Fedora
sudo dnf install ImageMagick perl-Image-Exiftool ArgyllCMS littlecms2
Python 脚本
所有脚本都位于 scripts/。它们需要 Python 3.8+,以及以下可选依赖项:
pip install numpy colour-science Pillow # optional but recommended
每个脚本都支持 --help 标志:
python3 scripts/icc-profile-inspect.py --help
python3 scripts/well-behaved-check.py --help
注意事项
sRGB 配置文件变体
并不存在唯一的“sRGB”ICC 配置文件。不同供应商生成的配置文件在 D50 适配、十六进制量化和 TRC 编码方面各不相同。ArgyllCMS 的 sRGB.icm 和 colord 的 Shared sRGB.icm 表现良好;Adobe/color.org/Windows 2000 的变体则表现不佳(在高位深下会产生虚假的洋红色偏色)。请参阅 references/working-spaces-reference.md 和 scripts/srgb-compare.py。
矩阵配置文件无法使用感知意图
sRGB、AdobeRGB、ProPhotoRGB 以及所有其他矩阵工作空间配置文件都不支持感知或饱和度意图。为矩阵目标配置文件选择感知意图时,实际得到的是相对比色(会裁切超出色域的颜色)。“感知意图会保留所有颜色”这一说法仅适用于转换到 LUT 配置文件时(打印机配置文件、某些显示器配置文件)。
sRGB 的感知意图并不真实存在
人们常说“转换为 sRGB 时,感知意图可以保留颜色”,这其实是错误的。sRGB 是矩阵配置文件,没有感知意图表。实际发生的是相对比色意图,它会裁切颜色。要在浮点精度下保留超出色域的颜色,唯一方法是使用 LCMS2 的无界模式。
显示参照与场景参照
- 显示参照:RGB 值限制在 0.0-1.0 之间。白色(1,1,1)= 显示器最大亮度。动态范围约为 9 档。运算会进行截断。
- 场景参照:RGB 值没有上限。白色没有特殊意义。动态范围可达 20 档以上(OpenEXR)。需要使用线性伽马。运算不会进行截断。 务必确认你的编辑流程使用的是哪种模型。
无界编辑有其局限
LCMS2 无界模式允许 RGB 值小于 0 或大于 1.0,以避免转换时发生裁切。这对存储和传输很有用,但许多编辑操作(Multiply、Divide、Screen、Levels 伽马滑块、Curves、色彩校正)作用于超出色域的颜色时会产生无意义的结果。如果你不想处理超出色域的值,请使用整数精度。
区分亮度与明度并非咬文嚼字
- 亮度(Luminance):根据线性化 RGB 计算(符合辐射度学)。使用 sRGB 专用系数(R0.213 + G0.715 + B*0.072)。
- 明度(Luma):根据伽马编码的 RGB 计算(感知均匀)。使用不同的系数(GIMP 2.9+ 使用 R0.222 + G0.717 + B*0.061,经 Bradford 调整至 D50)。 GIMP 2.8 使用了错误的系数。GIMP 2.9+ 修正了这些系数。进行具有物理意义的黑白转换时,务必使用亮度(Luminance)。
相机配置文件需要负三刺激值
每种数码相机传感器的输入矩阵配置文件都需要负 XYZ 三刺激值(对 233 款 dcraw 相机的分析显示:100% 的相机有负绿色 Z 值,93% 的相机有负蓝色 Y 值)。ICC V2 禁止使用这些值;V4 则允许通过 32 位浮点数使用。如果你的工作流程会截断负值,就会丢失蓝色和绿色通道的细节。
8 位、16 位与浮点数
- 8 位:仅使用 sRGB 或 AdobeRGB(色域较小、TRC 感知均匀)。切勿使用线性伽马(会导致暗部色调断层)。
- 16 位整数:可以使用 ProPhotoRGB。线性伽马适合用于符合辐射度学的编辑。
- 32 位浮点数:可使用任意工作空间和任意 TRC。支持无界转换。场景参照 HDR 必须使用。
LCH 与 HSV 不是升级关系,而是替代关系
HSV 是 20 世纪 60 年代为运算缓慢的 CPU 设计的“快速数学”权宜方案。它无法将颜色与明暗分离。LCH(明度、彩度、色相)源自 CIELAB,可真正分别编辑颜色和明暗。GIMP 的 LCH 混合模式是开源软件中的首个正确实现。切勿在严肃编辑中使用 HSV 混合模式。
具体故障:Levels 伽马滑块 + 无界 sRGB = 灾难
如果将一张包含高饱和度红色的 ProPhotoRGB 图像转换为 32 位浮点无界 sRGB,再应用 Levels 伽马滑块调整(例如 gamma=3.0),红色会变成洋红色,图像中的镀铬物体则会变成青色。这是因为伽马滑块与色度有关——它会根据工作空间以不同方式乘算各通道。解决方法:在编辑图像时使用的同一工作空间中进行伽马调整,或使用与色度无关的操作,例如 Value 通道 Levels。
具体故障:在错误的工作空间中进行色彩校正
如果图像在 ProPhotoRGB 色彩空间中出现了绿色偏色,而你在无界 sRGB 中使用白平衡吸管进行校正,校正结果会是:草地呈青色、肤色呈橙色、天空饱和度过高,远处的红色卡车也过于饱和。即使白点本身变成了中性色,其他所有颜色仍然是错误的。色彩校正必须在产生偏色的同一色彩空间中进行。转换到其他空间再校正会产生不可预测的结果。
具体故障:使用通道进行单色混合时遇到色域外颜色
将一辆黄色卡车从相机输入配置文件转换为 sRGB,会导致黄色车身大部分区域的蓝色通道值为负数。如果随后尝试使用 Channel Mixer(Mono Mixer),通过混合蓝色通道来进行黑白转换,这些负的蓝色通道值会产生毫无意义的结果——你无法对超出色域的颜色模拟正色胶片或任何其他基于通道的效果。 必须在转换到较小色域之前进行基于通道的编辑,或者使用足以容纳所有图像颜色的工作空间。
参考资料
| 文件 | 何时加载 |
|---|---|
references/color-management-overview.md | 需要了解 CIELAB、xyY 和色彩科学基础知识 |
references/icc-profile-operations.md | 需要转换、指定、提取或创建 ICC 配置文件 |
references/tool-reference.md | 需要使用 ImageMagick、ArgyllCMS、Exiftool、LCMS 的 CLI 命令 |
references/working-spaces-reference.md | 需要工作空间数据(原色、白点、伽马值) |
references/glossary.md | 遇到不熟悉的术语 |
references/soft-proofing-workflow.md | 需要在转换前进行软打样 |
references/monitor-calibration-workflow.md | 需要校准或配置显示器 |
references/dcraw-pipeline.md | 正在处理 raw 文件,需要色彩管理工作流 |
references/hex-quantization-and-profile-creation.md | 需要创建表现良好的 ICC 配置文件 |
资源
| 文件 | 描述 |
|---|---|
assets/templates/icc-profile-report.md | 用于生成人类可读 ICC 配置文件分析报告的模板 |
assets/templates/lch-layer-stack.md | 用于分别编辑色调和颜色的 GIMP LCH 图层组模板 |