本文将为读者提供亮度(chroma sub-sampling)最简单的解释;以及所有这些术语跟视频的关联性。
亮度(Y)
最初问世的是黑白电视。黑白图像只包含黑、白和各种灰。所有这些值以前(现在也一样)只能通过变化的亮度得到。
纯粹的日光是白色(或至少对我们的使用目的而言足够白)。当无光线反射(一个黑体),我们就得到了黑色。通过变化光线的强度,我们得到不同程度的灰色。记住,灰色是人脑的一种感知。
用科学术语来表示的话, 光的明亮程度以亮度(Luminance)来衡量。“亮度”这个词直接由CIE定义,跟人眼视觉相关。在视频领域,它由字母 Y 表示。
亮度信号(Y')
正如我们在论述伽玛的文章中所见,明亮程度会为了显示而被“歪曲”,这个过程我们称之为伽玛压缩。研究者没把这种亮度叫做“扭曲亮度”,而是决定将其称为 视频编码亮度,即亮度信号(Luma),由字母 Y' 表示。
只要我们谈及与视频有关的亮度值,我们谈的就是亮度信号(Y')。当 SDI 接口输出一路4:2:2或其他格式的视频信号时,正确的标记符号是 Y'CbCr。注意到Y带着撇号吗?这种亮度已经被“伽玛化”了,或者说已经被应用了一种编码伽玛。
从之前解释 RGB 的文章我们已知,如果 Y 是 RGB 的孩子,那么 Y' 就是 R'G'B' 的孩子。
色度(C)
色度是 信号中的色彩信息。当彩色电视问世时,它并非从零自建了一套体系,彩电信号的研究者找到了一种方式,让彩电跟亮度信号相关联。由此我们知道,色彩的两个代表符号命名为 Cb 和 Cr。
不过要注意,这不意味着绿色被忽略了。从 RGB 你得到了 XYZ,而从 XYZ 你衍生了 xyY,然后得到 Y'CbCr。实际图像看起来是这样的:
最顶上的是完整 RGB 图像。如果要将它按照 Y'CbCr 分割,Y' 的图像是第二幅,Cb 的图像是第三幅,Cr 的图像是第四幅。别以为就因为 Cb 里有 “b” 而 Cr 里有 “r” 它的意思就是蓝色或红色 —— 就像你不会认为一个叫做 Mr. Red 的人肤色是红的一样。
色度采样和子采样
这么做的 目标是“降低带宽”。亮度成为了亮度信号,位深降至8,色彩空间(Rec.709、PAL、NTSC)降为人眼范围的一半或少于一半,数据使用压缩算法进行压缩,诸如此类。那我们还能进一步压缩吗?
当然可以。类似人脑对视杆细胞和视锥细胞的解读,研究者意识到,他们可以将色彩分成亮度和色度 —— 那么做没问题,因为我们的眼睛既展示了 RGB 表现也展示了 Y'CbCr 表现。所以压缩才会成功!
通过一套复杂的试错法以及大量测试,研究者发现他们其实可以抛开1/2或甚至3/4的色彩信息而大部分人并不会察觉。人还每天吃掉人工香料而不自知呢。
但这在数据压缩方式上不管用,而要真正理解数据压缩原理,你需要了解什么是采样。当从模拟数据(或数字数据)只对色度信息(色彩)进行采样时,我们称之为色度采样。
当不充分采样时(就像薯片没充满整袋),这个过程称为色度子采样。
这是一种压缩类型,可以应用在摄影机进行录制的时候,或之后应用于处理过程中。子采样就是你不进行1:1采样,也就是说,你会略去一些数据。那就是目标,即降低带宽。
如今应用最广泛的模型就是 Y'CbCr 模型。一起来看看这个图:
从上图可见,全部四个彩色格子看起来相同,尽管最左边的格子比最右边的格子少了很多色彩信息。图源:Janke at English Wikipedia
Y'CbCr 是色彩空间吗?
Y'CbCr 并不是一种色彩空间,严格来说也不是一种色彩模型。它只不过 是一种编码系统。你会发现有很多人混淆这些术语,问出这样的问题:“我该用哪个色彩空间,YUV、444还是 RGB?”这就像是在问,我应该喂哪头奶牛?看起来像奶牛那头?看起来像奶牛长了角的那头?还是我从不同角度看到的同一头奶牛?
是不是很癫?但这正是你不去好好理解术语会造成的情况。
对于高清电视,是这样的:
RGB 是色彩模型;
Rec.709 是彩色空间;
Y'CbCr 是亮度信号和色度编码系统;
Y'CbCr 中的数字是告诉你所使用的亮度信号和色度采样类型;
4:2:0和4:2:2有相同的亮度信号值,但色度值不同;
3:1:1和4:2:2的亮度信号和色度值都不相同;
别忘了 —— 色彩模型、色彩空间、色彩编码 —— 是三个完全不同的东西。
出处:wolfcrow
翻译:LorianneW | 盖雅翻译小组