RGB 色彩空间 DaVinci Wide Gamut Intermediate(工作) FilmLight T-Log / E-Gamut(工作) ADX (ACES) ACEScg(ACES) ACEScct(ACES) ACES2065-1(ACES) Sony S-Gamut3 / S-Log3(相机) RED Wide Gamut / Log3G10(相机) 松下 V-Gamut / V-Log(相机) Canon Cinema Gamut/Canon Log(相机) ARRI Wide Gamut 3/LogC3曲线(相机) ARRI Wide Gamut 4/LogC4曲线(相机) 富士 F-Log(相机) 富士 F-Log2(相机) Cineon(相机) Blackmagic Film Gen 5(相机) Apple Log 配置文件(相机) DCI X′Y′Z′(显示) HLG(显示) ST.2084 (PQ)(显示) Rec.2020(显示) Rec.709 / BT1886(显示) sRGB(显示) P3-D65 and Display P3(显示) P3-DCI(显示) |
RGB 色彩空间
引言
RGB色彩空间,或色彩编码,由一组原色、一个白点和一个传递函数(即光电转换函数OETF或电光转换函数EOTF)定义。光电转换函数(OETF)描述了将场景光编码为场景参考编码的过程。
电光转换函数(EOTF)描述了将基于显示的图像数据解码为显示光的过程。
逆EOTF可用于对所需的显示色度进行编码,而逆OETF可用于将场景参考数据解码为(相对)场景线性值,以便进行诸如合成等操作,因为在这些操作中需要线性数据来模拟光的行为。
这些页面提供了一些最常用色彩空间的原色和传递函数的详细信息。
传递函数方程
这些方程取自相关白皮书或其他制造商文档,但在某些情况下,为了一致性或可读性可能稍作了调整。
方程以浮点形式给出,因此对数编码被归一化到0 - 1,例如,这与ACES输入设备变换(IDTs)以及Baselight和Resolve中的色彩空间形式相匹配。
相机输出和调色系统输出在 “线路上” 传输的对数信号可能有所不同,有时会缩放至整个0 - 1023编码值范围,有时会缩放至0 - 100% IRE范围(10位编码值中为64 - 940)。
对于某个色彩空间存在此类差异时,会在描述中注明,并在页面底部的IRE值表中显示。
色域图
这些页面上的色域图采用广泛使用的CIE 1931 2度视场观察者xy色度图。选择此图是因为人们对这种格式最为熟悉,且最容易与其他参考资料进行比较。然而,应该记住,这些图在感知上并非均匀的。
所有色域图似乎都排除了大面积的绿色区域,但实际上这并不像看起来那么重要,因为在该区域,相较于图中的其他区域,需要更大的距离才能表示出可察觉的差异。
在色度图上叠加麦克亚当椭圆,可以显示出不同颜色在感知上相同的区域大小(为清晰起见,显示为实际大小的10倍)。
DaVinci Wide Gamut Intermediate
达芬奇广色域搭配达芬奇中间调曲线,是Resolve色彩管理工作流程中使用的默认工作空间。
该色域旨在覆盖当前数字电影摄影机所呈现的大部分色彩,而当通过达芬奇显示渲染变换(DRT)查看时,此曲线旨在以直观方式响应传统调色操作。
Blackmagic的文档给出了达芬奇中间格式中不同级别对应的尼特值。由于这些是场景参考值,代表了一个标准化的虚拟场景,其中中灰色为18尼特。
它并不代表显示渲染后显示屏上的尼特值。
Specification link规格说明链接
Colour Science for Pythn linkPython 色彩科学链接
DaVinci Wide Gamut
表1:原色与白点(见图1)
Red | Green | Blue | 白点 |
0.8000, 0.3130 | 0.1682, 0.9877 | 0.0790, -0.1155 | 0.3127, 0.3290 (D65) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931([cs.name], title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
FilmLight T-Log / E-Gamut
FilmLight E - 色域搭配T - Log曲线,是Truelight色彩空间中使用的默认工作空间。
该色域旨在覆盖当前数字电影摄像机所呈现的大部分色彩,而当通过T - Cam显示渲染变换(DRT)查看时,该曲线旨在以直观的方式响应传统的调色操作。
Specification link规格说明链接
Colour Science for Python link Python 色彩科学链接
FilmLight E-Gamut
表1:原色与白点(见图1)
Red | Green | Blue | 白点 |
0.8000, 0.3177 | 0.1800, 0.9000 | 0.0650, -0.0805 | 0.3127, 0.3290 (D65) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931([cs.name], title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
ADX
学院密度交换(ADX)是一种类似Cineon的胶片密度编码方式(在SMPTE ST 2065 - 3中标准化),通过这种方式,扫描仪可设置为生成ADX编码的DPX文件,这些文件能够利用ADX输入变换转换为ACES。它采用了通用的胶片密度反构建方法,因此可用于多种胶片类型。
由于ADX对胶片的实际密度进行编码,存在非线性和跨通道效应,所以不能说它具有可被定义为原色的CIExy色度坐标。同样,也不存在一个简单的数学方程来描述其传输函数。
ACEScg
ACEScg是一种采用名为AP1原色的线性编码。它是ACES(学院色彩编码系统)的线性工作格式,用于合成与计算机生成图像(GCI)工作流程。AP1原色与Rec.2020的原色非常接近,但Rec.2020原色在物理上可实现,恰好位于光谱轨迹上,而AP1原色则略超出光谱轨迹,这使得它们能够完全涵盖红 - 绿边缘的所有颜色。ACEScg与ACES2065 - 1使用相同的约D60白点。
ACEScg旨在作为一种过渡性编码,仅存在于合成或渲染系统内部。根据标准,当将ACES图像数据写入文件时,应使用ACES2065 - 1编码。然而,在视觉特效(VFX)工作流程中,将ACEScg图像数据写入EXR文件以进行数据交换的情况并不少见。
如果这样做,务必明确说明实际情况,并且不应在文件元数据中设置“ACES图像容器”标志,因为这些文件并不符合该标准。
注意:Nuke软件的“写入(Write)”节点中有一个名为“写入符合ACES标准的EXR”的复选框。虽然该复选框强制实施ACES2065 - 4标准的某些元素,例如半精度浮点未压缩数据,但它并不强制进行色彩空间转换,需要用户自行确保写入的是AP0数据。由于Nuke中常用的ACES工作空间是ACEScg,除非明确选择ACES2065 - 1,否则结果将是一个包含ACEScg数据但标记为包含ACES2065 - 1数据的文件。
Colour Science for Python link Python 色彩科学链接
AP1
表1:原色与白点(见图1)
Red | Green | Blue | 白点 |
0.71300, 0.29300 | 0.16500, 0.83000 | 0.12800, 0.04400 | 0.32168, 0.33767 (ACES White) |
ACEScct
ACEScct是一种准对数编码,其原色与ACEScg一样,均为AP1 。它是ACES的标准调色格式,取代了早期的ACEScc编码,不过仍有一些调色师选择继续使用ACEScc进行工作。ACEScct在其大部分值域内呈对数特性,在低端有一个线性的“趾部”,这意味着在调色操作中,它的表现与相机对数空间类似,相机对数空间也有类似的趾部。
ACEScc没有趾部,在趾部以上与ACEScct相同,但一直保持对数特性向下延伸,只是在最底部有一个小“技巧”,使其能够达到零值,而真正的对数函数无法达到零。
ACEScct旨在作为一种过渡性编码,仅存在于调色系统内部。当将ACES图像数据写入文件时,应使用ACES2065 - 1编码。
Colour Science for Python link Python 色彩科学链接
AP1
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.71300, 0.29300 | 0.16500, 0.83000 | 0.12800, 0.04400 | 0.32168, 0.33767 (ACES White) |
ACES2065-1
ACES2065 - 1是一种线性编码,其原色被称为AP0,由SMPTE在ST 2065 - 1:2021中进行了标准化。它是ACES用于数据交换和存档的编码格式,存储在符合ACES2065 - 4标准的半精度浮点EXR文件中。AP0原色涵盖了整个光谱轨迹,使得所有可实现的颜色都能用正的AP0值进行编码。
它所使用的白点虽常被称为D60,但与CIE(国际照明委员会)定义的D60日光白点略有差异。美国电影艺术与科学学院的这份文档阐述了ACES白点的推导过程以及背后的原理。
注意:Nuke软件的“写入”节点中有一个名为“写入符合ACES标准的EXR”的复选框。虽然该复选框强制遵循ACES2065 - 4标准的某些要素,比如半精度浮点无压缩数据,但它并不强制进行色彩空间转换,需要用户自行确保写入的是AP0数据。
由于Nuke中常用的ACES工作空间是ACEScg,除非明确选择ACES2065 - 1,否则最终生成的文件虽标记为包含ACES2065 - 1数据,但实际包含的是ACEScg数据。
Colour Science for Python link Python 色彩科学链接
AP0
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.73470, 0.26530 | 0.00000, 1.00000 | 0.00010, -0.07700 | 0.32168, 0.33767 (ACES White) |
Sony S-Gamut3 / S-Log3
S - Log3是索尼S - Log曲线的第三代版本。尽管部分相机仍支持S - Log2,但S - Log3如今是最常用的变体。
S - Log3曲线可搭配S - Gamut3原色(曾称为S - Gamut)或S - Gamut3.Cine原色。S - Gamut3.Cine原色经过微调,能更好地匹配视觉上更接近红、绿、蓝的颜色,以便于进行基于显示的调色工作。
在威尼斯相机中,引入了原色的微调版本,但仍沿用S - Gamut3和S - Gamut3.Cine这两个名称。在选择输入设备变换(IDT)或其他转换方式时,了解用于编码媒体的是哪个变体至关重要,这样才能选择正确的转换方式。
索尼相机通过SDI输出的S - Log3(以及ProRes和X - AVC等记录格式),即使是4:2:2输出,其数值范围也会被扩展至0 - 1023的整个编码值范围,而在调色系统中,S - Log3会被映射到0 - 1的浮点数值范围,之后通常又会为了SDI输出而缩放至64 - 940。
这意味着,例如在ACES输入设备变换(IDTs)中,为了正确实现线性化,必须对S - Log3媒体的输入缩放进行适当设置。
大多数调色系统会根据元数据(如果存在)自动正确设置缩放,但验证缩放是否正确十分重要,特别是对于索尼相机外部录制的ProRes格式素材。
这也意味着,同样的曝光设置,连接到相机的波形监视器和连接到调色系统的波形监视器会产生不同的数值(见表5)。
更复杂的是,索尼在其文档中提到“线性IRE”和“线性反射率”,其中中灰用线性IRE值0.2和线性反射率值0.18表示。因此,在处理索尼相机的线性化数值时,有时可能需要乘以0.9的比例因子,才能与其他实现方式匹配。
Colour Science for Python link Python 色彩科学链接
RED Wide Gamut / Log3G10
随着IPP2图像管线推出,RED广色域RGB原色搭配Log3G10曲线,现已成为RED相机素材的标准场景参考编码。
Log3G10这个名称中的 “3” 表示18%灰度被编码为 (此处文档似有缺失,推测应是某个具体数值),“10” 表示数值1.0编码的是中灰以上10档曝光。还有第二条曲线叫Log3G12,它编码中灰以上12档曝光,但当前这一代相机并不需要它,所以不常用。
Colour Science for Python link Python 色彩科学链接
RED Wide Gamut RGB
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.780308, 0.304253 | 0.121595, 1.493994 | 0.095612, -0.084589 | 0.3127, 0.3290 (D65) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931([cs.name], title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()
松下 V-Gamut / V-Log
V - Gamut搭配V - Log是松下电影摄像机所采用的编码方式。部分松下摄像机设有一个名为V - Log L的设置。它使用与V - Log相同的曲线,但动态范围更为有限。
因此,V - Log和V - Log L的素材可以使用相同的线性化函数或ACES输入设备变换(IDT)。
松下摄像机通过SDI输出的V - Log(以及ProRes和X - AVC等记录格式),即使是4:2:2输出,其数值范围也会被扩展至0 - 1023的整个编码值范围,而在调色系统中,V - Log会被映射到0 - 1的浮点数值范围,之后通常又会为了SDI输出而缩放至64 - 940。
这意味着,例如在ACES输入设备变换(IDTs)中,为了正确实现线性化,必须对V - Log素材的输入缩放进行适当设置。
大多数调色系统会根据元数据(如果存在)自动正确设置缩放,但验证缩放是否正确十分重要,特别是对于松下摄像机外部录制的ProRes格式素材。
这也意味着,同样的曝光设置,连接到相机的波形监视器和连接到调色系统的波形监视器会产生不同的数值(见表2)。
Colour Science for Python link Python 色彩科学链接
V-Gamut
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.730, 0.280 | 0.165, 0.840 | 0.100, -0.030 | 0.3127, 0.3290 (D65) |
Canon Cinema Gamut / Canon Log
佳能相机为用户提供了可选择的原色和传输函数,由此产生了大量的排列组合。“电影色域(Cinema Gamut)”是佳能指定的一组原色,通常与佳能Log 2或佳能Log 3曲线搭配使用。
佳能Log 2在中灰以下有更多的色阶,因此当阴影细节尤为重要时,佳能推荐使用该曲线。它在中灰以上也有更大的宽容度。佳能Log 3则是为了便于基于显示参考的调色而设计。
最初的佳能Log是为8位录制设计的,覆盖的动态范围较小。
佳能相机通过SDI输出的佳能Log(以及ProRes和X - AVC等录制格式),即使是4:2:2输出,其数值范围也会被扩展至0 - 1023的整个编码值范围,而在调色系统中,佳能Log会被映射到0 - 1的浮点数值范围,之后通常又会为了SDI输出而缩放至64 - 940。
这意味着,例如在ACES(学院色彩编码系统)的IDT(输入设备转换)中,为了正确实现线性化,必须对佳能Log素材的输入缩放进行适当设置。
大多数调色系统在有元数据的情况下,会自动正确设置这一参数,但验证缩放设置是否正确仍然很重要,特别是对于佳能相机外部录制的ProRes格式素材。
这同样意味着,相同的曝光设置,在连接相机的波形和连接调色系统的波形上会产生不同的数值(见表格3和表格2)。
更复杂的是,佳能在其文档中提到了“场景线性(scene linear)”和“反射(reflection)”,其中中灰用“场景线性”值0.2和“反射”值0.18来表示。所以在处理佳能相机的线性化值时,有时可能需要乘以0.9的比例因子,以匹配其他实现方式。
Specification (non-official source)规范(非官方来源)
Colour Science for Python link Python 色彩科学链接
Cinema Gamut
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.7400, 0.2700 | 0.1700, 1.1400 | 0.0800, -0.1000 | 0.3127, 0.3290 (D65) |
ARRI Wide Gamut 3 / LogC3 曲线
此前被称为ALEXA广色域v3/LogCv3,但通常也被简称为LogC(更准确地说是LogC3),这是在ARRI ALEXA系列相机发布ALEXA 35及配套的LogC4编码之前(自SUP 3起),大多数ALEXA媒体所使用的编码方式。
严格来说,LogC3曲线在每个曝光指数(EI)下都略有不同。当EI值较高(高于EI1600)时,完整函数会对曲线顶端进行一定程度的压缩,目的是在对LogC值进行整数编码时防止信号削波。
ACES输入设备变换(IDT)中采用了完整的曲线,但在大多数情况下,即便拍摄时的EI值略高于或略低于EI800,使用简化的EI800版本曲线也不会引发问题。
这就是Nuke以及OCIO内置色彩空间变换中所使用的曲线版本。
Colour Science for Python link Python 色彩科学链接
ARRI Wide Gamut 3
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.6840, 0.3130 | 0.2210, 0.8480 | 0.0861, -0.1020 | 0.3127, 0.3290 (D65) |
ARRI Wide Gamut 4 / LogC4 曲线
ARRI广色域4/LogC4,有时简称为LogC4,是ARRI ALEXA 35相机媒体所使用的编码方式,它取代了之前的LogC3编码。ARRI软件开发工具包(SDK)的最新版本还允许将其他ALEXA型号相机拍摄的ARRIRAW媒体解码为LogC4。
与LogC3曲线不同,LogC4曲线与曝光指数无关。因此,无论拍摄时相机设置的曝光指数(EI)是多少,都可以使用相同的函数进行线性化处理。
Colour Science for Python link Python 色彩科学链接
ARRI Wide Gamut 4 (AWG4)
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.7347, 0.2653 | 0.1424, 0.8576 | 0.0991, -0.0308 | 0.3127, 0.3290 (D65) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931([cs.name], title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
富士 F-Log
F - Log是富士胶片相机所采用的一种编码。富士关于F - Log的白皮书指出,“F - Log的色域符合ITU - R BT.2020标准”。虽然可能不那么直观,但这意味着其原色就是Rec.2020标准的原色。
富士相机通过HDMI输出及录制的F - Log,其数值范围被扩展至0 - 1023的整个编码值范围,而在调色系统中,F - Log会被映射到0 - 1的浮点数值范围,之后通常又会为了SDI输出而缩放至64 - 940。
这意味着,例如在ACES输入设备变换(IDTs)中,为了正确实现线性化,必须对F - Log素材的输入缩放进行适当设置。
大多数调色系统会根据元数据(如果存在)自动正确设置缩放,但验证缩放是否正确十分重要,特别是对于外部录制的ProRes格式素材。
这也意味着,同样的曝光设置,连接到相机的波形监视器和连接到调色系统的波形监视器会产生不同的数值(见表2)。
Colour Science for Python link Python 色彩科学链接
F-Gamut / Rec.2020
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931(cs, title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
富士 F-Log2
F - Log2是富士胶片相机采用的一种编码方式。富士关于F - Log2的白皮书表明,“F - Log2的色域符合国际电信联盟无线电通信部门(ITU - R)BT.2020标准”。这一点可能并非一目了然,但它意味着其色彩 primaries(原色)就是Rec.2020标准所规定的那些。
富士相机通过HDMI输出以及记录的F - Log2,其数值范围被设定为整个0 - 1023的编码值区间。然而在调色系统中,F - Log2会被映射到0 - 1的浮点数值范围,之后为了SDI输出,又常常会被缩放至64 - 940的范围。
这意味着,例如在进行ACES(Academy Color Encoding System,学院色彩编码系统)的IDT(Input Device Transform,输入设备转换)时,必须对F - Log2素材的输入缩放进行恰当设置,以实现正确的线性化处理。
大多数调色系统在有元数据的情况下,会自动正确设置这一参数,但验证缩放设置是否正确仍然很重要,特别是对于外部录制的ProRes格式素材。
这同样意味着,相同的曝光设置,在连接相机的波形和连接调色系统的波形上会产生不同的数值(见表2)。
Colour Science for Python link Python 色彩科学链接
F-Gamut / Rec.2020
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931(cs, title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
Cineon
Cineon是柯达公司开发的一种用于对胶片扫描进行数字编码的格式。由于它是对胶片实际密度的编码,存在非线性和跨通道效应,所以不能说它具有可被定义为原色的CIExy色度坐标。
同样,与数码相机的对数编码不同,它并非从线性信号通过数学推导得出,因此它与场景光之间没有特定的数学关系。目前有多种公式用于将Cineon数据线性化。
Nuke Cineon
在Nuke软件中被称为“Cineon”的公式,与REDlogFilm曲线中使用的是同一个,其线性化函数为:(此处未给出具体函数内容)
其反函数为:(此处未给出具体函数内容)
数值0.0108是“黑场偏移量”,并且它是(此处表述似乎不完整),这样一来,10位编码值95(Dmin,最小密度值)的输入将产生线性零值。
Colour Science for Python link Python 色彩科学链接
代码:
import warnings
warnings.filterwarnings('ignore')
import numpy as np
import matplotlib.pyplot as plt
import colour
import colour.plotting
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
figure, axes = colour.plotting.artist()
x = np.linspace(-10, 10, 1000)
y = colour.cctf_encoding(0.18 * 2**x, 'Cineon')
axes.plot(x, y)
settings = {
'title': '',
'bounding_box': (-10, 10, 0, 1),
'x_label': 'Stops Above/Below 18% grey',
'y_label': 'Cineon',
'legend': False,
}
colour.plotting.render(**settings)
plt.show()

图1:Nuke中的Cineon曲线
Blackmagic Film Gen 5
Blackmagic相机宽色域Gen 5与Blackmagic胶片Gen 5搭配,是Blackmagic电影摄像机所采用编码的最新版本。它常被简称为Blackmagic胶片,这一称呼涵盖了其色彩原色和传输函数。
Colour Science for Python link Python 色彩科学链接
Blackmagic Camera Wide Gamut
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.7177215, 0.3171181 | 0.2280410, 0.8615690 | 0.1005841, -0.0820452 | 0.3127170, 0.3290312 (D65) |
注意:
Blackmagic规范中的白点精确到小数点后七位,而通常D65白点仅精确到小数点后四位。因此,它与其他相机对数编码的白点并非完全精确一致。
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931(cs, title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
Apple Log 配置文件
苹果日志配置文件是一种日志编码,可在 iPhone 15 Pro 中使用,并搭配 Rec.2020 原色。
iPhone 通过 HDMI 输出的苹果日志编码,其数值范围会被扩展至 0 - 1023 的整个编码值范围,而在调色系统中,它会被映射到 0 - 1 的浮点数值范围,之后通常又会为了 SDI 输出而缩放至 64 - 940。
这意味着,例如在 ACES 输入设备变换(IDTs)中,为了正确实现线性化,必须对苹果日志媒体的输入缩放进行适当设置。
大多数调色系统会根据元数据(如果存在)自动正确设置缩放,但验证缩放是否正确十分重要,特别是对于 iPhone 外部录制的 ProRes 格式素材。
这也意味着,同样的曝光设置,连接到 iPhone 的波形监视器和连接到调色系统的波形监视器会产生不同的数值(见表 2)。
我首次撰写此页面时,还无法获取 iPhone 15 Pro,所以对其特性的描述是基于苹果白皮书中对日志编码值的说明所做的假设。
后续测试表明,手机输出的数值似乎既没有正确缩放至完整的 0 - 1023 范围,也没有缩放到较窄的 64 - 940 范围,而是介于两者之间。而且输出似乎限制在 8 位,这使得它不适合进行日志处理。
需要进一步调查,以确定这是我所测试的特定手机(及固件)的个别问题,还是每台 iPhone 15 Pro 都普遍存在的情况。
如果有读者拥有合适的手机及 HDMI 波形监视器,欢迎与我联系,协助进行测试。
Colour Science for Python link Python 色彩科学链接
Rec.2020
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931([cs.name], title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
DCI X′Y′Z′
数字电影倡导联盟(Digital Cinema Initiative)规范定义了数字电影包(DCPs)中图像数据的编码方式。
DCP 的封装和压缩细节超出了本文档的范围,但用于封装的图像源是一个 12 位图像序列(通常是 TIFF 文件,称为数字电影发行母版 DCDM),它使用与设备无关的 CIE XYZ 色度学系统,但具有 2.6 的伽马值(因此在 X′Y′Z′中有上标符号),而 CIE XYZ 是线性的。
它还包含一个比例因子(在应用伽马值之前应用于线性 XYZ 数据)。这被称为归一化常数,它允许各个通道包含大于 的值,以便能产生诸如 D65 等一系列白色。因此,[4095, 4095, 4095] 的 12 位 X′Y′Z′代码值理论上会在 DCI 投影仪上产生 E 光源(等能白光)。
由于这些大于 的值在标准归一化的 DCI P3 编码中是不可能出现的,所以 ACES DCI P3 输出显示变换(ODT)在高端包含一个压缩函数,以将所有值保持在 0-1 范围内,同时仍然允许有不等的 R′G′B′值来对 ACES ~D60 白色进行编码。
由于比例因子的存在,DCDM 编码不需要这个(压缩函数),所以 ACES DCDM 输出变换不包含压缩。这意味着使用 ACES DCDM 输出变换直接编码的 DCP 与使用 DCI P3 ODT 制作的 DCI P3 母版所产生的 DCP 不会完全匹配。
ACES 2.0 Output Transforms ACES 2.0 输出变换
Colour Science for Python link Python 色彩科学链接
原色
表1:原色与白点(见图1)
Red | Green | Blue | 白点 |
1.0000, 0.0000 | 0.0000, 1.0000 | 0.0000, 0.0000 | 0.3333, 0.3333 (E) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931(cs, title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
HLG
HLG是由英国广播公司研发部(BBC R&D)和日本广播协会(NHK)开发的一种HDR编码格式。国际电信联盟无线电通信部门(ITU - R)BT.2100标准规定了HLG的电光转换函数(OETF)和逆电光转换函数(EOTF),这两者并非严格的互逆关系。之所以这样设计,是为了有意应用一种非恒等的光学到光学传递函数(OOTF),也就是 “系统伽马”。
这样做的目的在于实现 “画面渲染”,即对图像进行调整,以便在场景与显示屏之间创造出一种感知上的匹配,因为显示屏的绝对亮度通常明显低于实际场景的亮度。
HLG的系统伽马作为EOTF的一部分,是应用于亮度通道,而非像大多数EOTF那样独立应用于RGB通道。
系统伽马的指数会随着显示屏的峰值亮度而变化,其理念是,在不同显示屏上显示HLG图像时,通过应用适当的系统伽马,观众所感知到的画面效果将大致相同。
虽然BBC将HLG描述为一种场景参考编码,但在广播应用中,出于创意目的以及为了涵盖更广泛的场景动态范围,相机设置常常会偏离纯粹的OETF。
这意味着,恢复到场景光的数学转换并不明确,所以它并不完全符合场景参考编码的严格定义。因此,它变成了查尔斯·波因顿(在其博士论文附录A的定义列表中)所称的 “母版 - 显示参考编码”。
当HLG用于 “电影” 制作时,HLG信号很可能是通过将峰值白色为 的HLG逆EOTF应用于由PQ编码的显示光值,从PQ信号派生而来。这就是ACES HLG输出变换中所采用的方法。
ACES 2.0 Output TransformACES 2.0 输出变换
Colour Science for Python linkPython 色彩科学链接
Rec.2020 原色
ITU-R BT.2100 标准规定了 HLG 要使用 Rec.2020 的基色。
表 1:基色和白点(见图 1)
Red | Green | Blue | 白点 |
0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931(cs, title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
ST.2084 (PQ)
ST.2084是由杜比公司开发,并由电影与电视工程师协会(SMPTE)作为ST 2084:2014标准发布的一种显示亮度绝对编码方式。它通常被称为PQ(感知量化器),同时也在国际电信联盟无线电通信部门(ITU - R)的Rec. BT.2100标准中有相关规定。
PQ对高达[具体亮度值,原文缺失]的显示亮度进行编码,其设计目的是在整个亮度范围内实现感知上的均匀性。这也就是它被称为PQ(感知量化器)的原因。
ACES 2.0 Output Transforms ACES 2.0 输出变换
Colour Science for Python link Python 色彩科学链接
Rec.2020 原色
BT.2100规定使用Rec.2020原色搭配PQ(感知量化器),不过一些交付规范(例如网飞Netflix的要求)则是采用PQ搭配P3 - D65原色。实际上,Rec.2020 PQ图像数据常常被限制在P3 - D65色域内,Rec.2020就像是一个 “大杯装小量” 的容器,而且许多交付规范都强制要求这样做。
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931(cs, title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
Rec.2020
国际电信联盟无线电通信部门(ITU - R)的Rec. BT.2020标准,通常简称为Rec.2020,它为广色域视频定义了一组原色。尽管该规范定义了相机的电光转换函数(OETF),这似乎表明它是一种场景参考编码,但它也指出:
在典型的制作实践中,图像源的编码函数会被调整,以便在ITU - R BT.2035建议中定义的参考观看环境下,使用具有ITU - R BT.1886建议参考解码功能的参考监视器观看时,最终画面能呈现出预期的效果。
这样做的结果是,生成的图像属于查尔斯·波因顿(在其博士论文附录A的定义列表中)所称的“母版 - 显示参考”类型,因为出于创作目的对相机进行了调整,使其不再应用指定的OETF。
这意味着恢复到场景光的数学变换并不明确,所以它不符合场景参考编码的严格定义。
尽管该规范(最近一次更新于2015年)提到了采用BT.1886逆电光转换函数(EOTF)的标准动态范围(SDR)Rec.2020显示器,但广色域SDR广播一般并不常用,并且如ITU - R BT.2100标准中所规定的,Rec.2020原色更常与用于高动态范围(HDR)的ST.2084(PQ)或HLG EOTF搭配使用。
ACES 2.0 Output Transforms ACES 2.0 输出变换
Colour Science for Python link Python 色彩科学链接
原色
Rec.2020的原色恰好位于光谱轨迹上,这使得它们在物理上是可实现的(与大多数相机编码的原色不同),因此适用于实际的显示设备。然而,具备真正Rec.2020原色的显示器目前仍未广泛普及。
一些相机提供使用Rec.2020原色以对数格式进行场景参考录制的选项。
表1:原色与白点(见图1)
Red | Green | Blue | 白点 |
0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931(cs, title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
Rec.709 / BT1886
国际电信联盟无线电通信部门(ITU - R)的Rec. BT.709标准,通常简称为Rec.709,它为高清视频定义了一组原色。
尽管人们常提及 “Rec.709监视器”,但实际上Rec.709标准仅定义了相机的电光转换函数(OETF)(实际上,几乎没有相机完全精确应用该函数),却并未定义观看显示器的逆电光转换函数(EOTF)。
因此,在2011年引入通常简称为BT.1886的Rec. ITU - R BT.1886标准之前,对于显示Rec.709图像数据应采用何种正确的EOTF存在一些争议。
虽然仅定义了OETF使得Rec.709从概念上属于场景参考编码,但在广播应用中,出于创意目的以及为涵盖更广泛的场景动态范围,相机设置常常会偏离纯粹的OETF。
事实上,许多相机的默认 “Rec.709” 模式并不完全符合该标准。这意味着恢复到场景光的数学转换并不明确,所以它不符合场景参考编码的严格定义。
因此,它变成了查尔斯·波因顿(在其博士论文附录A的定义列表中)所称的 “母版 - 显示参考编码”。
Rec.709 Specification Rec.709 规范
BT.1886 Specification BT.1886 规范
ACES 2.0 Output Transform ACES 2.0 输出转换
Colour Science for Python Rec.709 link Python色彩科学Rec.709链接
Colour Science for Python BT.1886 link Python色彩科学BT.1886链接
原色
表1:原色与白点(见图1)
Red | Green | Blue | White Point |
0.640, 0.330 | 0.300, 0.600 | 0.150, 0.060 | 0.3127, 0.3290 (D65) |
sRGB
IEC 61966 - 2 - 1:1999为计算机显示器规定了标准RGB(sRGB)。然而,对于该标准究竟是规定了参考显示器的电光转换函数(EOTF),还是规定了旨在在具有纯2.2伽马EOTF的显示器上观看的图像数据编码,存在一些争议。
基于这个原因,ACES 2.0提供了两种输出转换方式,一种使用分段式sRGB曲线,另一种使用2.2伽马曲线。
此外,由于sRGB标准称其“为国际电信联盟无线电通信部门(ITU - R)BT.709 - 2标准在较暗观看环境下提供了清晰明确的参考显示器”,因此对于Rec.709图像是否应针对sRGB显示进行修改,或者是否已通过EOTF之间的差异应用了必要的修改,存在争议。
值得注意的是,ACES的sRGB输出显示变换(ODT)是针对在较暗观看环境下具有分段式sRGB EOTF的100尼特显示器指定的。这意味着Rec.709和sRGB的ODT分别在100尼特的BT.1886显示器和sRGB显示器上会产生相同的色度。
这将实现色度匹配,但在“较暗”的调色室环境中的BT.1886显示器与“普通”办公环境中的sRGB显示器之间,不一定能实现感知匹配。
一些显示渲染方式,如Baselight的T - CAM,会修改针对办公环境的渲染,以实现感知匹配而非色度匹配。
推荐观看FilmLight公司的达妮埃莱·西拉古萨诺(Daniele Siragusano)制作的关于sRGB主题的这个视频。
ACES 2.0 Output Transforms ACES 2.0 输出变换
Colour Science for Python link Python 色彩科学链接
P3-D65 and Display P3
P3 - D65是一种广色域且以显示为参考的色彩空间,主要用于投影。它是DCI P3的一种变体,采用相同的原色和电光转换函数(EOTF),但使用视频领域常用的D65白点。
苹果Display P3采用与P3 - D65投影相同的原色和白点,但它的电光转换函数是sRGB的分段函数。实际上,与sRGB类似,经测量,许多支持Display P3的设备在实际使用中似乎采用的是纯正的2.2伽马值的EOTF。
苹果将白点值高于标称白色水平的Apple Display P3称为EDR(扩展动态范围),像DaVinci Resolve和Nuke等应用程序可利用它在电脑显示器上显示HDR图像。
ACES 2.0 Output Transforms ACES 2.0 输出变换
Colour Science for Python link Python 色彩科学链接
原色
表1:原色与白点(见图1)
Red | Green | Blue | 白点 |
0.6800, 0.3200 | 0.2650, 0.6900 | 0.1500, 0.0600 | 0.3127, 0.3290 (D65) |
注意:
P3色彩空间的红色原色极轻微地超出了光谱轨迹。这意味着,尽管交付规范通常要求将受限的P3 - D65母版编码为Rec.2020格式,因为Rec.2020的原色恰好位于光谱轨迹上,但使用正值的Rec.2020值无法对P3色彩空间的全部色彩进行编码。
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931(cs, title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
P3-DCI
DCI P3是一种用于影院投影的广色域且以显示为参考的色彩空间。它有一个指定的DCI白点,但实际上,这个白点很少被用作影院内容的 “创意白点”,因为大多数人觉得它呈现出的是一种不太讨喜的绿黄色调的白色。
相反,影院内容中的中性色具有不等的P3 - DCI R′G′B′值,在投影时会产生不同的白色,比如D60或D65。ACES 1.3 P3 - DCI输出显示变换(ODTs,见以下注释)有两个变体,分别能产生D60(严格来说是ACES白色)或D65的中性色。
由于在标准归一化的DCI P3编码中,大于1的值是不可能存在的,所以ACES 1.3 DCI P3 ODTs在高端包含一个压缩函数,以将所有值保持在0 - 1范围内,同时仍允许有必要的不等R′G′B′值来对ACES ~D60白色进行编码。
注释:ODT(Output Display Transform)输出显示变换,是ACES色彩管理系统中的一个关键环节,负责将ACES色彩空间中的图像数据转换为适合特定显示设备的色彩表示,确保在不同的显示终端上都能准确地呈现色彩。
注意:
在ACES 2.0中,P3 - DCI已不再作为一种输出变换使用。上述链接指向的是旧版ACES 1.3输出显示变换(ODT)的副本。
Colour Science for Python link Python 色彩科学链接
原色
表1:原色与白点(见图1)
Red | Green | Blue | 白点 |
0.6800, 0.3200 | 0.2650, 0.6900 | 0.1500, 0.0600 | 0.3140, 0.3510 (DCI-P3) |
代码:
import numpy as np
import matplotlib.pyplot as plt
import colour.plotting
colour.utilities.filter_warnings(*[True] * 4)
COLOUR_STYLE = colour.plotting.colour_style()
MY_STYLE = {
'figure.dpi': 72,
'font.size': 14,
'axes.titlepad': 16 * 0.75,
}
plt.style.use([COLOUR_STYLE, MY_STYLE])
FIGURE, AXES = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931(cs, title='', diagram_opacity=0.25, show_spectral_locus=False, legend=False)
plt.show()

图1:CIE 1931色度图
|
|