HDR视频技术之三:色度学与颜色空间

HDR 技术的第二个理论基础是色度学。从前面的内容中可以了解到,光学以及人类视觉感知模型为人类提供了解释与分析人类感知亮度的理论基础,但是 HDR 技术不仅仅关注于提升图像与视频的亮度范围,同时也关注于提供更加丰富的色彩。因此,本章将首先介绍人眼与色度学相关的生理特征以及人类对颜色的识别方式,然后介绍颜色空间的概念,最后再回到 HDR,介绍与 HDR 相关的颜色标准。

1 色度学

由于视觉是人类的主观感受,因此无论是亮度还是颜色的研究,最根本的研基础都在于人眼的生理特征。人眼的最内层是视网膜,它布满了眼球后部的内壁。当眼球聚焦时,外部的光线在视网膜上聚焦。视网膜表面分布许多视觉细胞,人眼靠这些细胞感知外部光线,然后传递给大脑,形成视觉感知。这些视觉细胞分为两大类:视觉锥细胞以及视觉杆细胞。其中,视觉锥细胞对颜色非常敏感,而视觉杆细胞没有颜色感觉,因此人眼靠视觉锥细胞来产生颜色感知。视觉锥细胞又可以三类,它们分别对红色光,绿色光,蓝色光敏感。但是需要额外注意的是,这里提到的对某种色光敏感,不代表这种视觉锥细胞只能够感知到该中色光。也就是说,在可见光范围内的任意波长的色光,都能刺激三种视觉锥细胞,而某些特殊波长的光线能够对视觉锥细胞产生最大的刺激。

色度学研究的内容就在于如何在显示设备上产生与自然界类似的刺激,使人眼能够感受到相同的颜色。显而易见的是,最简单的方法就是对自然界的每一种颜色生产一种对应的发光原件,可以发出对应颜色的光线。但是,人眼可以识别上万中不同的颜色,而在每一个像素点设置上万个不同的发光元件基本是不可能的,而且生产上万种不同的发光元件的代价也过于高昂,因此,我们需要其他简单的,可行的方法来实现对自然世界中颜色的模拟。

可以想到的最直接的,也是人们一直以来使用的解决方式就是:利用人眼中只有三种视觉锥细胞的特性,只使用红色( r),绿色( g)和蓝色( b)三种光线,来模拟所有其他的颜色。因此,这三种颜色也被称为光的三原色。

这里需要思考一个问题:以黄色为例。在自然界中,显然将红色光与绿色光叠加,得到的新的光线的频率并不是黄色光的频率,但是,红色光与绿色光的叠加,给人眼的感受就是黄色。这种现象的原因是什么?

人眼的三种锥细胞,不同波长的光以及这些光的亮度会对三种锥细胞产生不同的刺激。同样以黄色光为例子,当人眼看见黄色光时,红视锥细胞与绿视锥细胞会产生某种程度的刺激,蓝视锥细胞则基本不产生刺激。而大脑接受到这种刺激后,产生了黄色的视觉。而通过改变红色光与绿色光的亮度,也可以使红视锥细胞与绿视锥细胞产生相同程度的刺激,而大脑接收到这样的刺激之后,同样会认为这是黄色,而非绿色与红色的混合色。

也就是说,人眼对颜色的感知,实际上是通过色光及其亮度,对三种视觉锥细胞产生刺激,然后神经系统将不同的刺激,映射为人感知中的不同的颜色。因此,模拟自然界中的颜色,实际上就是模拟它们对三种视觉锥细胞的刺激

为了实现使用三种原色光线生成其他颜色光线的目的, CIE(国际照明委员会)在1931 年组织了一项实验,通过一些观测者的观察,来确定生成不同的颜色,所需的三原色光线的强度。他们将三种波长的光: 700nm(红色光), 546.1nm(绿色光), 435.8nm(蓝色光)作为基色。在实验过程中,首先将三种基色的光投影到白色屏幕的一侧,接着,再讲第四束光-待测光投影到白色屏幕的另一侧。调节三种基色光的强度直到观测者感受到两侧的颜色一致时,就能够确定如何使用三种基色光得到各种颜色的光。

实验的最终结果是得到了三个颜色匹配函数𝑟̅(λ), 𝑔̅(λ), 𝑏̅(λ)。这三个函数分别表示产生波长为λ的光,所需的红,绿,蓝三原色光的强度。
在这里插入图片描述
实验结果的图像如上图所示。对上图中的单位做如下规定:当三原色光配比出等能白光时,三原色光各自的量称为一单位的红光[R],一单位的绿光[G]与一单位的蓝光[B]。此时三个原色光的通光量之比为 1:4.5907:0.0601。此时,任意波长的光可以通过三原色光的线性组合得到:
C ( λ ) = r ˉ ( λ ) [ 𝑅 ] + g ˉ ( λ ) [ 𝐺 ] + b ˉ ( λ ) [ 𝐵 ] ( 1 ) C(\lambda) = \bar{r}(\lambda)[𝑅] + \bar{g}(\lambda)[𝐺] + \bar{b}(\lambda)[𝐵] ( 1) C(λ)=rˉ(λ)[R]+gˉ(λ)[G]+bˉ(λ)[B]1
这就是 1931 CIE-RGB 计色系统。对于任意单色光,理论上可以全部使用 RGB 三色光表示出来。但是由于 435.8nm-546.1nm 这一段的红色光通量为负值,因此在实际生产中无法实现,所以实际上并非所有单色光(只有一个频率,不会发生色散)都可以由 RGB三原色表示出来。这里出现负值的原因是,待配色光为单色光,其饱和度很高,而 RGB三色混合后,饱和度会降低。因此,想要配出一些单色光,需要将 RGB 三色光中的某一个与待配色光混合,才能实现。此时就会出现负值。

而对于非单色光(能产生色散的色光),任意光谱分布Φ𝑒(𝜆)的 RGB 值都可以由积分得出。
R = ∫ 380 780 Φ e ( λ ) r ˉ ( λ ) d λ R = \begin{aligned} \int_{380}^{780} \Phi_e(\lambda)\bar{r}(\lambda) \mathrm{d} \lambda \end{aligned} R=380780Φe(λ)rˉ(λ)dλ

G = ∫ 380 780 Φ e ( λ ) g ˉ ( λ ) d λ G = \begin{aligned} \int_{380}^{780} \Phi_e(\lambda)\bar{g}(\lambda) \mathrm{d} \lambda \end{aligned} G=380780Φe(λ)gˉ(λ)dλ

B = ∫ 380 780 Φ e ( λ ) b ˉ ( λ ) d λ ( 2 ) B = \begin{aligned} \int_{380}^{780} \Phi_e(\lambda)\bar{b}(\lambda) \mathrm{d} \lambda \end{aligned} (2) B=380780Φe(λ)bˉ(λ)dλ2

通过这种方法就可以将单色光与非单色光用 RGB 三原色表示出来。但是,此时出现的另一个问题是,人类对于颜色的感知包括色度与亮度两部分。例如,绿色会因为亮度的不同,带给人亮绿色,绿色,暗绿色等不同的感受,但是从色度角度来说,它们都是绿色,差别仅仅体现在亮度上。因此,想要表示准确的色度信息,就需要消除亮度带来的影响。通过对颜色匹配函数归一化,可以帮助消除亮度带来的影响。

归一化的结果如下:
r ( λ ) = r ˉ ( λ ) r ˉ ( λ ) + g ˉ ( λ ) + b ˉ ( λ ) r(\lambda) = \frac{\bar{r}(\lambda)}{\bar{r}(\lambda) + \bar{g}(\lambda) + \bar{b}(\lambda)} r(λ)=rˉ(λ)+gˉ(λ)+bˉ(λ)rˉ(λ)

g ( λ ) = g ˉ ( λ ) r ˉ ( λ ) + g ˉ ( λ ) + b ˉ ( λ ) g(\lambda) = \frac{\bar{g}(\lambda)}{\bar{r}(\lambda) + \bar{g}(\lambda) + \bar{b}(\lambda)} g(λ)=rˉ(λ)+gˉ(λ)+bˉ(λ)gˉ(λ)

b ( λ ) = b ˉ ( λ ) r ˉ ( λ ) + g ˉ ( λ ) + b ˉ ( λ ) ( 3 ) b(\lambda) = \frac{\bar{b}(\lambda)}{\bar{r}(\lambda)+\bar{g}(\lambda)+\bar{b}(\lambda)} (3) b(λ)=rˉ(λ)+gˉ(λ)+bˉ(λ)bˉ(λ)3

由上面的三个式子我们可以发现, b(λ) = 1 − r(λ) − g(λ),因此,使用r(λ)与g(λ)就
可以表示整个色域。
在这里插入图片描述
理论上来说,通过上述的函数,我们已经可以通过三原色光表示所有颜色了,但是从图中我们可以发现,在系数的取值中存在负值。例如上图中 r 轴在负数部分也有取值。

这会在实际的工业生产中带来不便,因为负值的光强是无法制造出来的。因此, CIE对此进行了修改,提出了 1931 CIE-XYZ 计色系统。目的是使得系数不再出现负值。为了实现系数不再出现负值的目的, CIE 制定了一系列规则,通过坐标变换的方式,将 RGB 表示法转变成了 XYZ 表示法。简单来说,可以将 XYZ 表示法看做 RGB 表示法的一种非线性变换,这种非线性变换的结果是系数不再出现负值。此时的 XYZ 与 RGB这种自然界中存在的红光,绿光,蓝光不同,它的人为定义出的具有特殊匹配函数的三种“基色”,它的匹配函数𝑥̅(λ), 𝑦̅(λ), 𝑧̅(λ)如下图所示:
在这里插入图片描述
这里我们不需要尝试将 XYZ 与自然界中的某种波长的光线对应,这是没有必要的,我们只需要知道它们是具有如上图所示的匹配函数,并且是由 RGB 通过非线性变换得到的新的“基色”即可。

与 RGB 色度表示法类似,将𝑥̅(λ), 𝑦̅(λ), 𝑧̅(λ)进行归一化:
x ( λ ) = x ˉ ( λ ) x ˉ ( λ ) + y ˉ ( λ ) + z ˉ ( λ ) x(\lambda) = \frac{\bar{x}(\lambda)}{\bar{x}(\lambda) + \bar{y}(\lambda) + \bar{z}(\lambda)} x(λ)=xˉ(λ)+yˉ(λ)+zˉ(λ)xˉ(λ)

y ( λ ) = y ˉ ( λ ) x ˉ ( λ ) + y ˉ ( λ ) + z ˉ ( λ ) y(\lambda) = \frac{\bar{y}(\lambda)}{\bar{x}(\lambda) + \bar{y}(\lambda) + \bar{z}(\lambda)} y(λ)=xˉ(λ)+yˉ(λ)+zˉ(λ)yˉ(λ)

z ( λ ) = z ˉ ( λ ) x ˉ ( λ ) + y ˉ ( λ ) + z ˉ ( λ ) ( 4 ) z(\lambda) = \frac{\bar{z}(\lambda)}{\bar{x}(\lambda)+\bar{y}(\lambda)+\bar{z}(\lambda)} ( 4) z(λ)=xˉ(λ)+yˉ(λ)+zˉ(λ)zˉ(λ)4

归一化后, x(λ), y(λ), z(λ)与r(λ), g(λ), b(λ)的关系为:
x ( λ ) = 0.49000 𝑟 ( λ ) + 0.31000 𝑔 ( λ ) + 0.20000 𝑏 ( λ ) 0.66697 𝑟 ( λ ) + 1.13240 𝑔 ( λ ) + 1.20063 𝑏 ( λ ) x(\lambda) = \frac{0.49000𝑟(\lambda) + 0.31000𝑔(\lambda) + 0.20000𝑏(\lambda)}{0.66697𝑟(\lambda) + 1.13240𝑔(\lambda) + 1.20063𝑏(\lambda)} x(λ)=0.66697r(λ)+1.13240g(λ)+1.20063b(λ)0.49000r(λ)+0.31000g(λ)+0.20000b(λ)

y ( λ ) = 0.17697 𝑟 ( λ ) + 0.81240 𝑔 ( λ ) + 0.01063 𝑏 ( λ ) 0.66697 𝑟 ( λ ) + 1.13240 𝑔 ( λ ) + 1.20063 𝑏 ( λ ) y(\lambda) = \frac{0.17697𝑟(\lambda) + 0.81240𝑔(\lambda) + 0.01063𝑏(\lambda)}{0.66697𝑟(\lambda) + 1.13240𝑔(\lambda) + 1.20063𝑏(\lambda)} y(λ)=0.66697r(λ)+1.13240g(λ)+1.20063b(λ)0.17697r(λ)+0.81240g(λ)+0.01063b(λ)

z ( λ ) = 0.00000 𝑟 ( λ ) + 0.01000 𝑔 ( λ ) + 0.99000 𝑏 ( λ ) 0.66697 𝑟 ( λ ) + 1.13240 𝑔 ( λ ) + 1.20063 𝑏 ( λ ) ( 5 ) z(\lambda) = \frac{0.00000𝑟(\lambda) + 0.01000𝑔(\lambda) + 0.99000𝑏(\lambda)}{0.66697𝑟(\lambda) + 1.13240𝑔(\lambda) + 1.20063𝑏(\lambda)} (5) z(λ)=0.66697r(λ)+1.13240g(λ)+1.20063b(λ)0.00000r(λ)+0.01000g(λ)+0.99000b(λ)(5)

我们也可以发现z(λ) = 1 - x(λ) - y(λ)。因此, XYZ 表示法也可以只是用 X 与 Y 表示整个色域, XYZ 表示法下的色域图如下图所示:
在这里插入图片描述
XYZ 表示法与 RGB 表示法存在一定的联系并且有一些重要的性质:

  • XYZ 色度图中的原点,对应图 2, RGB 表示法中的𝐶𝑏点。同时,图 2 中的直线𝐶𝑏𝐶𝑔对应于 XYZ 表示法中的 y 轴,且经过变换后,在图 4 中的对应长度为 1,同理, 𝐶𝑏𝐶𝑟对应于 x 轴,且对应的长度也为 1.
  • 图 2 中𝐶𝑟𝐶𝑔线段上的点,在新的 XY 坐标系中,仍然在这条线段上。
  • XYZ 表示法中不会出现负值。
  • 原坐标系中的等能白光坐标(13,1 3)在新的坐标系中也为这个坐标。
  • 所有的单色光都出现在图 4 的边缘处。
  • 在 XYZ 色度图中选择任意两点, 位于两点连线之间的任何颜色都可以由这两种颜色表示出来。这也意味着 XYZ 色度图必然是一个凸形。将这个性质进行推广,任意三个光源可以混合产生的颜色,必然在这三个光源对应点形成的三角形内部。多个光源亦然。
  • 最后,很重要的一点是从图 4 我们可以发现,任何三个给定光源,都不能覆盖整个色域。几何上说,色域中不存在能包含整个色域的三角形,即人类视觉的色域不是三角形的,使用三色表示法无法表示整个人类色域,而只能表示局部。

XYZ 表示法是用来表示色度的,也就是说,使用 XYZ 表示法可以表示人眼所能看到的全部颜色,但是还不能表示亮度,因为 XYZ 表示法是归一化以后的结果。因此,通过定义𝑦̅(λ) = 𝑉(𝜆),就可以解决这个问题,其中𝑉(𝜆)是可见光的光谱光效率函数,即人眼对等能量的各种色光的敏感程度函数。由此,就可以通过𝑦̅(λ)来表示出𝑥̅(λ), 𝑧̅(λ)。
x ˉ ( λ ) = 𝑥 ( λ ) 𝑦 ( λ ) 𝑉 ( λ ) \bar{x}(\lambda) = \frac{𝑥(\lambda)}{𝑦(\lambda)}𝑉(\lambda) xˉ(λ)=y(λ)x(λ)V(λ)

y ˉ ( λ ) = 𝑉 ( λ ) \bar{y}(\lambda) = 𝑉(\lambda) yˉ(λ)=V(λ)

z ˉ ( λ ) = 𝑧 ( λ ) 𝑦 ( λ ) 𝑉 ( λ ) ( 6 ) \bar{z}(\lambda) = \frac{𝑧(\lambda)}{𝑦(\lambda)} 𝑉(\lambda) (6) zˉ(λ)=y(λ)z(λ)V(λ)(6)

这三个刺激值就可以使人眼既感受到颜色,又感受到亮度。它们也被称为“ CIE 1931标准观察观察者标准”。

而对于任意一个知道光谱分布的光Φ𝑒(𝜆),如果想要得到它在“ CIE 1931 标准观察观察者标准”下的表示方法,可以先求出对应的 XYZ 值:
X = ∫ 380 780 Φ e ( λ ) x ˉ ( λ ) d λ X = \begin{aligned} \int_{380}^{780} \Phi_e (\lambda) \bar{x} (\lambda) \mathrm{d} \lambda \end{aligned} X=380780Φe(λ)xˉ(λ)dλ

Y = ∫ 380 780 Φ e ( λ ) y ˉ ( λ ) d λ = ∫ 380 780 Φ e ( λ ) V ( λ ) d λ Y = \begin{aligned} \int_{380}^{780} \Phi_e (\lambda) \bar{y}(\lambda) \mathrm{d} \lambda \end{aligned} = \begin{aligned} \int_{380}^{780} \Phi_e(\lambda) V(\lambda) \mathrm{d} \lambda \end{aligned} Y=380780Φe(λ)yˉ(λ)dλ=380780Φe(λ)V(λ)dλ

Z = ∫ 380 780 Φ e ( λ ) z ˉ ( λ ) d λ ( 7 ) Z = \begin{aligned} \int_{380}^{780} \Phi_e(\lambda) \bar{z}(\lambda) \mathrm{d} \lambda \end{aligned} (7) Z=380780Φe(λ)zˉ(λ)dλ(7)

这里的 Y 值就是颜色的亮度。然后进行归一化:
x = 𝑋 𝑋 + 𝑌 + 𝑍 x = \frac{𝑋}{𝑋 + 𝑌 + 𝑍} x=X+Y+ZX

y = 𝑌 𝑋 + 𝑌 + 𝑍 y = \frac{𝑌}{𝑋 + 𝑌 + 𝑍} y=X+Y+ZY

z = 𝑍 𝑋 + 𝑌 + 𝑍 ( 8 ) z = \frac{𝑍}{𝑋 + 𝑌 + 𝑍}(8) z=X+Y+ZZ(8)

这里的小写 x, y 就是颜色在色度图中对应的色坐标。有了色坐标 x, y 以及亮度Y,一个光的颜色就可以被确定下来了。因此,“ CIE 1931 标准观察观察者标准”也被称为 CIE-xyY 表示法。

2 色域

上一节介绍了颜色空间,并且给出了颜色空间的常用表示方法。如图 4 中所示的舌型图,表示了人眼所能感知到的所有颜色的范围。我们需要注意的是,这些颜色是指自然界中人类所能感知到的所有颜色。在图像与视频处理领域,显示设备所能显示的颜色,远远没有自然界中的丰富多彩,产生这种情形的原因主要是生产力与技术的限制。上一节我们提到,显示设备通过在三种基色混合,来表示其他的颜色,并且我们提到“几何上说,色域中不存在能包含整个色域的三角形,即人类视觉的色域不是三角形的,使用三色表示法无法表示整个人类色域,而只能表示局部。”因此,显示设备的制作原理导致我们无法使用显示设备来显示出自然界中存在的所有颜色,而只能选择其中的一部分颜色进行显示,如何选择则取决于颜色标准。

图像领域中通常使用的色域标准来自 ITU-R,使用最广泛的是 BT.709 [1]和BT.2020 [2]标准。 BT.709 是 HDTV 的标准,也是目前普通显示设备使用的色域标准。BT.2020 是 UHDTV 的颜色标准,也是 HDR 技术所支持的色域标准。

2.1 ITU-R BT.709 标准

ITU-R BT.709 也称为 Rec.709,该标准的第一版于 1990 年发布。 BT.709 定义了𝑅′𝐺′𝐵′和𝑌′𝐶𝑏𝐶𝑟的两种编码模式,每种模式的各通道都有 8 或 10 比特两种类型,在 8位编码中, 𝑅′𝐺′𝐵′通道和𝑌′通道的标称范围是 16~235, Cb 和 Cr 通道的标称范围是 16~240 ,中性值为 128 。因此,在𝑅′𝐺′𝐵′ 中,黑色的值是(16,16,16) ,白色的值 是(235,235,235);在𝑌′𝐶𝑏𝐶𝑟中黑色的值是(16,128,128),白色的值是(235,128,128)。标准 RGB 空间的 0 和 255 仍保留作为定时参考,可能不包含颜色数据。

BT.709 标准同时支持模拟信号与数字信号,因此在 BT.709 标准内部,存在两个重要的转换: 𝑅′𝐺′𝐵′ 编码到𝑌′𝐶𝑏𝐶𝑟 编码的转换,以及模拟信号到数字信号的转换。

𝑅′𝐺′𝐵′编码下的模拟信号到𝑌′𝐶𝑏𝐶𝑟编码下的模拟信号之间的转换为:
E Y = 0.2126 E R + 0.7152 E G + 0.0722 E B E_Y = 0.2126E_R + 0.7152E_G + 0.0722E_B EY=0.2126ER+0.7152EG+0.0722EB

E C B = − 0.2126 E R − 0.7152 E G + 0.9278 E B 1.8556 E_{CB} = \frac{-0.2126E_R - 0.7152E_G + 0.9278E_B}{1.8556} ECB=1.85560.2126ER0.7152EG+0.9278EB

E C R = 0.7874 E R − 0.7152 E G − 0.0722 E B 1.5748 ( 9 ) E_{CR} = \frac{0.7874E_R - 0.7152E_G - 0.0722E_B}{1.5748}(9) ECR=1.57480.7874ER0.7152EG0.0722EB9

其中𝐸𝑌, 𝐸𝐶𝐵, 𝐸𝐶𝑅分别表示亮度信号和两种色差信号, 𝐸𝑅, 𝐸𝐺, 𝐸𝐵分别表示𝑅′, 𝐺′, 𝐵′三个通道的模拟信号值。

两种编码方式的数字图像的量化方法是:
D R , G , B = I N T [ ( 219 E R , G , B + 16 ) ⋅ 2 n − 8 ] D_{R,G,B} = INT[(219E_{R,G,B} + 16) \cdot 2^{n-8}] DR,G,B=INT[(219ER,G,B+16)2n8]

D Y = I N T [ ( 219 E Y + 16 ) ⋅ 2 n − 8 ] D_{Y} = INT[(219E_{Y} + 16) \cdot 2^{n-8}] DY=INT[(219EY+16)2n8]

D C B = I N T [ ( 224 E C B + 128 ) ⋅ 2 n − 8 ] D_{CB} = INT[(224E_{CB} + 128) \cdot 2^{n-8}] DCB=INT[(224ECB+128)2n8]

D C R = I N T [ ( 224 E C R + 128 ) ⋅ 2 n − 8 ] ( 10 ) D_{CR} = INT[(224E_{CR} + 128) \cdot 2^{n-8}] ( 10) DCR=INT[(224ECR+128)2n8]10

其中 n 表示量化信号的比特长度, INT 作为将小数化整的四舍五入功能。因此我们可以得出𝑅′𝐺′𝐵′编码下的数字信号到𝑌′𝐶𝑏𝐶𝑟编码下的数字信号之间的转换方法:
D Y = I N T [ 0.2126 D R + 0.7152 D G + 0.0722 D B ] D_Y = INT[0.2126D_R + 0.7152D_G + 0.0722D_B] DY=INT[0.2126DR+0.7152DG+0.0722DB]

D C B = I N T [ ( − 0.2126 1.8556 D R − 0.7152 1.8556 D G + 0.9278 1.8556 D B ) ⋅ 224 219 + 2 n − 1 ] D_{CB} = INT\Bigg[\Bigg( -\frac{0.2126}{1.8556}D_R-\frac{0.7152}{1.8556}D_G + \frac{0.9278}{1.8556}D_B \Bigg) \cdot \frac{224}{219} + 2^{n-1} \Bigg] DCB=INT[(1.85560.2126DR1.85560.7152DG+1.85560.9278DB)219224+2n1]

D C R = I N T [ ( 0.7874 1.5748 D R − 0.7152 1.5748 D G − 0.0722 1.5748 D B ) ⋅ 224 219 + 2 n − 1 ] ( 11 ) D_{CR} = INT\Bigg[\Bigg( \frac{0.7874}{1.5748}D_R-\frac{0.7152}{1.5748}D_G - \frac{0.0722}{1.5748}D_B \Bigg) \cdot \frac{224}{219} + 2^{n-1} \Bigg] ( 11) DCR=INT[(1.57480.7874DR1.57480.7152DG1.57480.0722DB)219224+2n1]11

2.2 ITU-R BT. 2020 标准

ITU-R BT.2020 定义了 UHDTV 的各个方面,比如显示分辨率、帧速率、色度子采样、比特深度和色彩空间,它是由国际电信联盟在 2012 年发布的。相比于 BT.709, BT.2020提供了更加广泛的颜色范围。 BT.2020 也是 HDR 技术的颜色空间。

BT.2020 标准的重要性是毋庸置疑的,正如 BT. 709 对于高清视频传输与高清显示设备制造方面起到的引导性作用, BT. 2020 标准同样也深刻地影响着消费领域超高清显示设备的设计与制造,例如目前绝大部分的 4K 平板电视的物理分辨率都是采用 BT.2020 标准的 3840× 2160,但 BT. 2020 标准绝不仅仅在分辨率方面有所提升,在色彩和刷新频率和信号格式与分析等方面也进行了相关的规定。

相对于 BT.709 标准, BT.2020 标准大幅度提升了视频信号的性能规范,色彩深度方面提高至 10bit 或 12bit,很大程度上增强了整个影像的色彩层次,色域的广度也大大增强,两种标准的色域对比如图 1.13 所示;显示分辨率方面, BT.2020 标准定义了4K 和 8K 两种分辨率,这些分辨率的宽高比为 16: 9,支持的刷新率包括 120p、 60p、59.94p、 50p、 30p、 29.97p、 25p、 24p、 23.976p。不得不提的是,在 BT.2020 标准中取消了隔行扫描,所有超高清标准下的影像都是基于逐行扫描的,无疑是历史性的突破,进一步提升了超高清影像的细腻度与流畅感。
在这里插入图片描述
与 BT.709 一致, BT.2020 也支持了𝑅′𝐺′𝐵′和𝑌′𝐶𝑏𝐶𝑟两种编码模式,以及支持模拟与数字两种信号。同样的, BT.2020 标准内部也存在两个重要的转换:两种编码模式之间的转换以及模拟信号到数字信号的转换。

𝑅′𝐺′𝐵′编码下的模拟信号到𝑌′𝐶𝑏𝐶𝑟编码下的模拟信号之间的转换:
E Y = 0.2627 E R + 0.6780 E G + 0.0593 E B E_Y = 0.2627E_R + 0.6780E_G + 0.0593E_B EY=0.2627ER+0.6780EG+0.0593EB

E C B = − 0.2627 E R − 0.6780 E G + 0.9407 E B 1.8814 E_{CB} = \frac{-0.2627E_R - 0.6780E_G + 0.9407E_B}{1.8814} ECB=1.88140.2627ER0.6780EG+0.9407EB

E C R = 0.7373 E R − 0.6780 E G − 0.0593 E B 1.4746 ( 12 ) E_{CR} = \frac{0.7373E_R - 0.6780E_G - 0.0593E_B}{1.4746}(12) ECR=1.47460.7373ER0.6780EG0.0593EB12

𝑅′𝐺′𝐵′编码下的数字信号到𝑌′𝐶𝑏𝐶𝑟编码下的数字信号之间的转换:

D Y = I N T [ 0.2627 D R + 0.6780 D G + 0.0593 D B ] D_Y = INT[0.2627D_R + 0.6780D_G + 0.0593D_B] DY=INT[0.2627DR+0.6780DG+0.0593DB]

D C B = I N T [ ( − 0.2627 1.8814 D R − 0.6780 1.8814 D G + 0.9407 1.8814 D B ) ⋅ 224 219 + 2 n − 1 ] D_{CB} = INT\Bigg[\Bigg( -\frac{0.2627}{1.8814}D_R-\frac{0.6780}{1.8814}D_G + \frac{0.9407}{1.8814}D_B \Bigg) \cdot \frac{224}{219} + 2^{n-1} \Bigg] DCB=INT[(1.88140.2627DR1.88140.6780DG+1.88140.9407DB)219224+2n1]

D C R = I N T [ ( 0.7373 1.4746 D R − 0.6780 1.4746 D G − 0.0593 1.4746 D B ) ⋅ 224 219 + 2 n − 1 ] ( 13 ) D_{CR} = INT\Bigg[\Bigg( \frac{0.7373}{1.4746}D_R-\frac{0.6780}{1.4746}D_G - \frac{0.0593}{1.4746}D_B \Bigg) \cdot \frac{224}{219} + 2^{n-1} \Bigg] (13) DCR=INT[(1.47460.7373DR1.47460.6780DG1.47460.0593DB)219224+2n1]13

除了颜色空间和色域的转换,在处理 HDR 源视频或通过图片合成 HDR 视频时,通常还要经过采样方式和光电转换函数等步骤的转化,常见的 HDR 视频符合 SMPTE ST 2084规定的转换方程的要求,按照不同要求经过 PQ 曲线或 HLG 的处理。具体可以参考本系列前面的内容。

2.3 ITU-R BT. 709 到 ITU-R BT. 2020 的颜色转换

UHDTV( Ultra-high Definition Television,超高清电视)是未来电视与显示领域的发展趋势,现在,越来越多的电视和节目制作人正开始制作 UHDTV 节目。由于 UHDTV还在刚刚起步的阶段,因此适配于 UHDTV 的节目内容数量仍然不足,因此,将原有的大量的 HDTV 的节目,通过一定的转换,转变为 UHDTV 节目,就是一个解决 UHDTV 节目数量不足的可行的方案。由于 UHDTV 支持的色域要宽于 HDTV 的色域,在转换的过程中,不可避免的需要对节目从 ITU-R BT.709 标准向 ITU-R BT.2020 标准进行颜色转换。

BT.709 到 BT.2020 的转换有一个重要的限制,即 BT.709 标准下的颜色,在 BT.2020标准下要是同样的颜色。换句话说,如果这个颜色是两种色域中都存在的,那么这个颜色在转换过程中应当保持不变;而如果这个颜色是 BT.2020 中独有的,这就需要进行颜色转换。 BT.709 到 BT.2020 的转换可以大致分为三个主要步骤:第一个步骤是逆量化,得到 BT.709 标准下的模拟信号值𝐸𝑅, 𝐸𝐺 , 𝐸𝐵。第二个是色域转换,将 BT.709 下的模拟信号值,转换为 BT.2020 标准下的模拟信号值。最后一个步骤是量化,得到 BT.2020 标准下的数字信号。选择在模拟信号域进行色域转换而不是直接在数字信号域进行色域转换的原因是为了保留更多的信息与细节。由于量化过程会存在信息的丢弃,并且 BT.709的色域比 BT.2020 小,如果直接用数字信号进行转换,无疑会使得 BT.2020 色域下的图像效果变差。因此,通过逆量化过程,恢复图像的相关细节,然后进行模拟信号的色域转换,就可以解决这个问题了。

对于原视频/节目的不同形式,转换方式也略有不同。根据信号源的亮度是否恒定,
转换方式可以分为以下两种:

非恒定亮度信号的转换

在这里插入图片描述
上图是非恒定亮度信号的转换流程图。由于 BT.709 与 BT.2020 均支持两种编码方式: 𝑅′𝐺′𝐵′和𝑌′𝐶𝑏𝐶𝑟,因此逆量化过程的输入与量化过程的输出均有两条路径。根据需求的不同,可以选择不同的输入输出模式。

每一个区块的具体实现过程以及相关函数定义,可以参考 BT.2087 [3]。

恒定亮度信号转换

在这里插入图片描述
上图是恒定亮度信号的转换流程图。由于 BT.709 与 BT.2020 均支持两种编码方式:𝑅′𝐺′𝐵′和𝑌′𝐶𝑏𝐶𝑟,因此逆量化过程的输入与量化过程的输出均有两条路径。根据需求的不同,可以选择不同的输入输出模式。

每一个区块的具体实现过程以及相关函数定义,可以参考 BT.2087。

2.4 ITU-R BT. 2020 到 ITU-R BT. 709 的颜色转换

在现在的实际 UHDTV 节目的广播过程中,特别是在同时进行 UHDTV 和 HDTV 广播的情况下,从 UHDTV 到 HDTV 的实时高质量色域转换就至关重要。也就是说,需要一些方法,来使得 UHDTV 也能够在 HDTV 设备上成功播放,并且不影响观看。这就需要从 ITUR BT. 2020 到 ITU-R BT. 709 的颜色转换,也就是 UHDTV 到 HDTV 的转换。理想情况下转换应该满足以下要求: BT.709 色域内的颜色应该保持不变;转换方法适用于于BT.2020 和 BT.709 之间的多次转换;感知的色调变化必须尽可能小;空间细节没有重大损失;不会在颜色上引入可见的不连续性;映射方法在数学上是可定义的。然后没有可以同时满足所有这些要求的通用色域映射方法。在从更广泛的色域转换到更小的色域时, BT.709 色域外的颜色修改是不可避免的。此转换必然是不同要求之间的妥协,可能因应用程序而异。色域映射算法通常受艺术创作,人类视觉,技术约束和经验等方面的影响。下面我们介绍一种从 BT.2020 到 BT.709 的基于线性矩阵的简单变换。
在这里插入图片描述
图 8 是从 BT.2020 到 BT.709 的基于线性矩阵变换的颜色转换的框图。 除了输出信号被严格限制之外,这是 ITU-R BT.2087 标准中对从 BT.709 转换到 BT.2020 所规定的操作的逆操作。 这种方法在条件限制的情况下是最直接简单的。

这种方法首先使用 ITU-R BT.2087 中规定的两个非线性到线性的传递函数(一种是用于使用电光转换功能的显示参考方法( EOTF),一种是用于使用反光电转移函数( OETF))之一将归一化的非线性 RGB 信号转换为归一化的线性 RGB 信号。接着通过矩阵运算,将 BT.2020 颜色空间的 RGB 信号转换到 BT.709 颜色空间的 RGB 信号。最后再通过使用 ITU-R BT.2087 建议书规定的两种线非线性传递函数(一种是使用反向 EOTF的显示参考方法,另一种是使用 OETF)之一将线性 RGB 信号转换为非线性 RGB 信号。从归一化线性 RGB 信号( EREGEB)到归一化非线性 RGB 信号( E′ RE′ GE′ B)的转换。

该方法具有非常理想的特性,即使在 BT.2020 和 BT.709 之间进行多次转换之后,它也不会改变BT.709 色域内的颜色。 然而, BT.709 色域之外的色彩是硬限幅的,即小于零或大于 1 的 RGB 信号( EREGEB)会被限幅为零或 1,这会导致明显的色调偏移和空间细节的损失。 虽然大多数内容看起来都很好,但色调和空间细节方面还是会有所损失。

色域转换的更多内容,将在本书第二部分的《色域映射》章节中进行介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/477559.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络中常用的激活函数(公式 + 函数图像)

激活函数是人工神经网络中的一个关键组件,负责引入非线性,从而使神经网络能够学习和表示复杂的非线性关系。没有激活函数,神经网络中的所有计算都是线性变换,而线性模型的表达能力有限,无法处理复杂的任务。 激活函数…

Redis——Raft算法

Raft使用较为广泛的强一致性、去中心化、高可用的分布式协议,即使在网络、节点故障等情况下,多个节点依然能达到一致性。 其中redis、etcd等都用到了这种算法 在Redis集群中,采取的主从复制结构,当主节点宕机后,哨兵会…

C 语言复习总结记录二

C 语言复习总结记录二 一 控制语句 1、语句的分类 表达式语句函数调用语句复合语句控制语句空语句 控制语句 控制程序的执行流程,实现程序的各种结构方式 C 语言支持三种结构 :顺序结构、选择结构、循环结构,由特定的语句定义符组成C语言…

网络无人值守批量装机-cobbler

网络无人值守批量装机-cobbler 一、cobbler简介 ​ 上一节中的pxe+kickstart已经可以解决网络批量装机的问题了,但是环境配置过于复杂,而且仅针对某一个版本的操作系统进批量安装则无法满足目前复杂环境的部署需求。 ​ 本小节所讲的cobbler则是基于pxe+kickstart技术的二…

基于深度学习CNN算法的花卉分类识别系统01--带数据集-pyqt5UI界面-全套源码

文章目录 基于深度学习算法的花卉分类识别系统一、项目摘要二、项目运行效果三、项目文件介绍四、项目环境配置1、项目环境库2、环境配置视频教程 五、项目系统架构六、项目构建流程1、数据集2、算法网络Mobilenet3、网络模型训练4、训练好的模型预测5、UI界面设计-pyqt56、项目…

HarmonyOs鸿蒙开发实战(20)=>一文学会基础使用组件导航Navigation

敲黑板,以下是重点技巧。文章末尾有实战项目效果截图及代码截图可参考 1.概要 Navigation是路由导航的根视图容器Navigation组件主要包含​导航页(NavBar)和子页(NavDestination),导航页不存在页面栈中&am…

tcpdump抓包 wireShark

TCPdump抓包工具介绍 TCPdump,全称dump the traffic on anetwork,是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具。 tcpdump可以支持的功能: 1、在Linux平台将网络中传输的数据包全部捕获过来进行分析 2、支持网络层…

已阻止加载“http://localhost:8086/xxx.js”的模块,它使用了不允许的 MIME 类型 (“text/plain”)。

记录今天解决的一个小bug 在终端启动8080端口号监听后,打开网址http://localhost:8080,发现不能正确加载页面,打开检查-控制台,出现如下警告:已阻止加载“http://localhost:8086/xxx.js”的模块,它使用了不…

使用 helm 部署 gitlab

一、下载 Gitlab chart 进入 artifacthub 官网 选择你想要的版本(我选择的chart版本是 8.4.0 , gitlab 版本是17.4.0 ) 进入到控制台,添加helm仓库 如果你想不改任何配置,你可以执行安装命令,等待安装即可helm instal…

若依-一个请求中返回多个表的信息

背景 主表是点位表关联子表 需要知道对应 合作商的信息关联子表 需要直到对应 区域的信息关联子表 需要直到对应 设备数量 实现的方案 关联实体相关的标签

C++注释

目录 1. 什么是注释 2. 语法 2.1 单行注释 2.2 多行注释 2.3 示例 3. 注释源代码的方法 3.1 使用多行注释 3.2 使用预处理器指令 #if #endif 3.3 使用条件判断语句 if (false) 4. 不能用宏定义,组成注释 5 // \ 会将源代码中的下一行也被当作注释中的一部…

使用itextpdf进行pdf模版填充中文文本时部分字不显示问题

在网上找了很多种办法 都解决不了; 最后发现是文本域字体设置出了问题; 在这不展示其他的代码 只展示重要代码; 1 引入扩展包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</v…

web——sqliabs靶场——第十三关——报错注入+布尔盲注

发现是单引号加括号闭合的 尝试联合注入 发现不太行&#xff0c;那尝试报错注入。 测试报错注入 unameadmin) and updatexml(1,0x7e,3) -- &passwdadmin&submitSubmit 爆数据库 unameadmin) and updatexml(1,concat(0x7e,database(),0x7e),3) -- &passwdadmin&a…

QT如何共享文件+拷贝文件

QString sharedFolderPathImg "\\\\" IP "/profileImage/"; // 更换为你的共享文件夹路径QDir dirImg(sharedFolderPathImg);dirImg.setFilter(QDir::NoDotAndDotDot | QDir::AllEntries);QVector<QString> curFileEntryArrayImg dirImg.entryList…

跟《经济学人》学英文:2024年11月23日这期 Why British MPs should vote for assisted dying

Why British MPs should vote for assisted dying A long-awaited liberal reform is in jeopardy in jeopardy&#xff1a;在危险中 jeopardy&#xff1a;美 [ˈdʒepərdi] 危险&#xff1b;危机&#xff1b;风险&#xff1b; 原文&#xff1a; THIS NEWSPAPER believes …

【es6进阶】vue3中的数据劫持的最新实现方案的proxy的详解

vuejs中实现数据的劫持,v2中使用的是Object.defineProperty()来实现的&#xff0c;在大版本v3中彻底重写了这部分&#xff0c;使用了proxy这个数据代理的方式&#xff0c;来修复了v2中对数组和对象的劫持的遗留问题。 proxy是什么 Proxy 用于修改某些操作的默认行为&#xff0…

D73【 python 接口自动化学习】- python 基础之正则表达式

day73 正则表达式-元字符匹配 学习日期&#xff1a;20241119 学习目标&#xff1a;正则表达式--133 正则表达式-元字符匹配 学习笔记&#xff1a; 元字符匹配 数量匹配 实践操作 总结 字符串的r标记表示&#xff0c;字符串内转移字符无效&#xff0c;作为普通字符使用正则…

Python浪漫之画明亮的月亮

目录 1、效果展示 2、完整版代码 1、效果展示 2、完整版代码 import turtledef draw_moon():# 设置画布turtle.bgcolor("black") # 背景颜色为黑色turtle.speed(10) # 设置绘制速度# 绘制月亮的外圈turtle.penup()turtle.goto(0, -100) # 移动到起始…

微信小程序包之加农炮游戏

微信小程序 - 气球射击游戏 项目简介 这是一个简单有趣的微信小程序射击游戏。玩家通过控制屏幕底部的加农炮&#xff0c;射击从上方降落的蓝色气球。游戏考验玩家的反应能力和瞄准技巧。 游戏规则 点击屏幕任意位置发射炮弹大炮会自动对准点击位置击中气球获得10分如果气球触…

autogen+ollama+litellm实现本地部署多代理智能体

autogen 是一个专门为大语言模型 (LLMs) 驱动的自治代理 (autonomous agents) 设计的 Python 库,由 Microsoft 开发和维护。它通过高度模块化和可扩展的架构,支持用户快速构建和运行多代理系统,这些代理可以在没有明确人类干预的情况下协作完成复杂任务。AutoGen 支持以最少…