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,这会导致明显的色调偏移和空间细节的损失。 虽然大多数内容看起来都很好,但色调和空间细节方面还是会有所损失。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库MYSQL——表的设计

文章目录 前言三大范式:几种实体间的关系:一对一关系:一对多关系:多对多关系: 前言 之前的博客中我们讲解的是关于数据库的增删改查与约束的基本操作, 是在已经创建数据库,表之上的操作。 在实…

C++自动化测试:GTest 与 GitLab CI/CD 的完美融合

在现代软件开发中,自动化测试是保证代码质量和稳定性的关键手段。对于C项目而言,自动化测试尤为重要,它能有效捕捉代码中的潜在缺陷,提高代码的可维护性和可靠性。本文将重点介绍如何在C项目中结合使用Google Test(GTe…

备忘笔记-工具:JetBrains友好工具安装配置

1、配置/脚本文件下载 1、校验地址:https://3.jetbra.in/ 打开选择可用链接,点击跳转可用页面。 2、下载文件 左上角点击下载jetbra.zip文件 下载对应全家桶软件版本号,版本号在对应卡票右上角可见。 2、安装包下载 官网地址&#xff1a…

Flask 基于wsgi源码启动流程

1. 点击 __call__ 进入到源码 2. 找到 __call__ 方法 return 执行的是 wsgi方法 3. 点击 wsgi 方法 进到 wsgi return 执行的是 response 方法 4. 点击response 方法 进到 full_dispatch_request 5. full_dispatch_request 执行finalize_request 方法 6. finalize_request …

Linux 下进程基本概念与状态

文章目录 一、进程的定义二、 描述进程-PCBtask_ struct内容分类 三、 进程状态 一、进程的定义 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定…

IDEA使用tips(LTS✍)

一、查找项目中某个外部库依赖类的pom来源 1、显示图 2、导出Maven 项目依赖的可视化输出文件 3、点击要查找的目标类,项目中定位后复制依赖名称 4、在导出的依赖的可视化文件中搜索查找 5、综上得到,Around类来自于pom中的spring-boot-starter-aop:jar…

【shell编程】函数、正则表达式、文本处理工具

函数 系统函数 常见内置命令 echo打印输出 #!/bin/bash # 输出普通文本 echo "Hello, World!"# 输出变量值 name"Alice" echo "Hello, $name"# 输出带有换行符的文本 echo -n "Hello, " # -n 选项不输出换行 echo "World!&quo…

如何选择服务器

如何选择服务器 选择服务器时应考虑以下几个关键因素: 性能需求。根据网站的预期流量和负载情况,选择合适的处理器、内存和存储容量。考虑网站是否需要处理大量动态内容或高分辨率媒体文件。 可扩展性。选择一个可以轻松扩展的服务器架构,以便…

LeetCode 904.水果成篮

LeetCode 904.水果成篮 思路🧐: 求水果的最大数目,也就是求最大长度,我们是单调的向前求解,则能够想到使用滑动窗口进行解答,可以用hash表统计每个种类的个数,kinds变量统计当前种类&#xff0c…

初始Python篇(7)—— 正则表达式

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 正则表达式的概念 正则表达式的组成 元字符 限定符 其他字符 正则表达式的使用 正则表达式的常见操作方法 match方法的…

小程序免备案:快速部署与优化的全攻略

小程序免备案为开发者提供了便捷高效的解决方案,省去繁琐的备案流程,同时通过优化网络性能和数据传输,保障用户体验。本文从部署策略、应用场景到技术实现,全面解析小程序免备案的核心优势。 小程序免备案:快速部署与优…

L14.【LeetCode笔记】返回倒数第k个节点

目录 1.题目 2.分析 思路 代码 提交结果 1.题目 面试题 02.02. 返回倒数第 k 个节点 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 注意:本题相对原题稍作改动 示例: 输入: 1->2->3->4->5 和 …

深入解析 EasyExcel 组件原理与应用

✨深入解析 EasyExcel 组件原理与应用✨ 官方:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 在日常的 Java 开发工作中,处理 Excel 文件的导入导出是极为常见的需求。 今天,咱们就一起来深入了解一款非常实用的操作 Exce…

基于Java Springboot高校教室资源管理系统

一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据库:…

k8s1.31版本最新版本集群使用容器镜像仓库Harbor

虚拟机 rocky9.4 linux master node01 node02 已部署k8s集群版本 1.31 方法 一 使用容器部署harbor (1) wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce systemctl enable docker…

C语言数据结构学习:循环队列

C语言 数据结构学习 汇总入口: C语言数据结构学习:[汇总] 1. 循环队列 队列的博客:C语言数据结构学习:队列 循环队列会预先定义最大队列空间,然后定义一个数组,通过队列头和队列尾指针分别指向开头和结尾&…

Vue——响应式数据,v-on,v-bind,v-if,v-for(内含项目实战)

目录 响应式数据 ref reactive 事件绑定指令 v-on v-on 鼠标监听事件 v-on 键盘监听事件 v-on 简写形式 属性动态化指令 v-bind iuput标签动态属性绑定 img标签动态属性绑定 b标签动态属性绑定 v-bind 简写形式 条件渲染指令 v-if 遍历指令 v-for 遍历对象的值 遍历…

小米note pro一代(leo)线刷、twrp、magisk、TODO: android源码编译

本文主要说android5 整体思路 android 5.1 twrp magisk Zygisk(Riru) Dreamland(xposed) Riru不支持android5.1, 因此只能选择Zygisk : 如果你正在使用 Android 5,你必须使用 Zygisk 因为 Riru 并不支持 Android 5. 基于magisk之上的xposed 其中提到的 作者…

自然语言处理: RAG优化之Embedding模型选型重要依据:mteb/leaderboard榜

本人项目地址大全:Victor94-king/NLP__ManVictor: CSDN of ManVictor git地址:https://github.com/opendatalab/MinerU 写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!! 写在前面: 笔者更新不易,希望走过路…

Redis 常用数据类型插入性能对比:循环插入 vs. 批量插入

Redis 是一款高性能的键值数据库,其支持多种数据类型(String、Hash、List、Set、ZSet、Geo)。在开发中,经常会遇到需要插入大量数据的场景。如果逐条插入,性能会显得较低,而采用 Pipeline 批量插入 能大幅提…