颜色的表达有多种不同的方式,每一种颜色系统所适合的用途都各不相同。最基本的一种表达方式为 RGB 颜色空间。
RGB RGB 是所有其他颜色空间的基础,在计算机图形学中,它是颜色空间的首选。
Gamma 校正
Gamma CRT和 LCD CRT 的输出特性相反。
CRT LCD 2.2~2.5 RGB 1/
该效应所带来的影响是,视频摄像机和计算机图形学程序,通过一种被称为“Gamma 校正”的流程,可以预先对其 RGB 输出流进行预校正,以便补偿所针对的显示器的非线性,并就眼睛实际感受场景的方式形成一种有现实意义的模型。图 1 示出了这样一种流程。
经过 Gamma RGB RG’B 空间,其中亮度值 Y 可以从这些座标中提取出来。严格来讲,“Luma”一词应该仅指这类经过“Gamma 校正”的亮度值而真正的“亮度(luminance)”Y 是一个颜色科学方面的术语,它是从 R、G B 的加权和(未经过 Gamma 校正)所获得的。
在本系列文章中,当我们谈论 YCbCr 和 RGB 颜色空间时,我们是指经过 Gamma校正的分量,换句话说,YCbCr 或者 R’GB’。
虽然 RGB 通道格式是呈现现实世界颜色的一种自然而然的方案,但 3 个通道中的每一个都与另外两个高度相关。你独立观看一幅特定图像的 R、G B 通道,就可以发现这一点——你在每个通道中都能感受到整幅图像。另外,RGB 并非图像处理的最佳选择,因为如果要变动一个通道,则也必须在另外两个通道进行更改,而且每个通道的带宽相同。
为了减少所需要的传输带宽并提高视频压缩比,人们提出了其他的颜色空间方案,这些变量是高度非相关的,从而能提供优于 RGB 的压缩特性。其中最流行的一些方案——YPbPr、YCbCr YUV——全都是将亮度信号分量与两个色度分量分离开。这种分离运算是借助等比例缩放的色差因子(B’‐Y(R’‐Y’)Pb/Cb/U BY’)因子,Pr/Cr/V 等项对应于(R’‐YYPbPr YUV NTSC PAL 系统,YCbCr 则与分量化数字视频有关。
亮度和色度信息的分离,可以节省图像处理带宽。另外,正如我们马上就会看到的那样,我们可以通过子采样的方法,在视觉效果不会出现较大损失的前提下,大大减小色度信号带宽。这对于需大量处理视频数据的系统来说,是一个受欢迎的特色。
作为在两个颜色空间之间进行转换的一个实例,如下的方程示出了如何在Y’CbCr R’G’B 8bit YR’,G’ B 16235,而 Cr 和 Cb 的变化范围是 16240。
色度子采样
由于人眼的杆状细胞要多于锥状细胞,故对于亮度的敏感能力要优于对色差的敏感能力。幸运的是(或者事实上通过设计可实现的是),YCbCr Y Cb Cr 的关注程度不那么高。于是,通过对这些色度值进行子采样的方法,视频标准和压缩算法可以大幅度缩减视频带宽。
在对该问题进行进一步讨论之前,让我们先解析一些术语。假设在进行子采样前,我们拥有一路全带宽的 YCbCr 流,即视频源产生了一路像素分量构成的数据流,其形式如图 2a 4:4:4 YCbCr4 NTSC 4’。第三个数,如果与第二个数相同的话,则意味着没有垂直方向上的色度子采样。另一方面,如果它等于 0,则两条线之间存在一次 2:1 的色度子采样。于是,4:4:4 意味着在每条线上的像素都有自己独有的 Y、Cr Cb 信号分量。 现在,如果我们通过在水平方向上对色度信号进行因数为 2 的子采样,对一个4:4:4 YCbCr 信号进行滤波,于是将得到 4:2:2 YCbCr。‘4:2:2’意味着在给定的视频行上对应 2 4 (Y,Cb) (Y,Cr)chroma pair 2b 4:2:2 YCbCr 4:4:4 YCbCr 4:4:4 YCbCr 而言在带宽方面缩小了 33%。正如我们马上要讨论的那样,4:2:2 YCbCr 是 ITU‐R BT.601 视频推荐方案的一个基础,它是数字视频信号在不同的子系统组件之间进行传输时最常用的一种格式。
应注意的是,4:2:2 并非是唯一的色度子采样方案。图 3 示出了得到广泛应用的其他一些方案。例如,我们可以如图 3c 4 4:4:4 YCbCr 4:1:1 YCbCr 流。这里,色度对在空间上与每个以 4 为间隔的亮度值相一致。这一色度过滤方案可以节省 50%的带宽。4:1:1 YCbCr 是一种在视频压缩算法的输入和视频解压缩算法的输出方面广受欢迎的格式。
另外一种在视频压缩/解压缩方面得到广泛应用的算法是 4:2:0 YCbCr,由于几个原因,它要比我们已经阐述过的其他方案更为复杂。其中一个原因是,Cb Cr 分量均在水平和垂直方向上受到了因数为 2 的子采样。这意味着我们不得不存储多条视频线,才能产生出该子采样流。而且,对应 4:2:0 YCbCr 信号还存在两种广受欢迎的格式。MPEG‐2 3d MPEG1 和 JPEG 算法所采用的格式则是一种色度信号位于 Y 采样之间的中点上的方案(图 3d,底图)。
数字视频
在上世纪 90 年代中期以前,几乎所有的视频都采用了模拟格式。正是在那之后,诸如 MPEG‐2 FCC DTV
从根本上来说,视频的数字化同时包括了对模拟视频信号的采样和量化。在视频帧的 2D 框架之中,采样最终体现为将栅格状的图像空间划分为小块的区域,并根据每个区域中颜色空间分量的强度来为其分配相对幅值。请注意,模拟视频信号已经被从垂直方向上(离散的多行扫描)和时间上(每秒分立的多帧图像)
量化是指在采样过程中设法确定这些离散幅值的过程。8bit 视频是消费类应用中常用的格式,在每个颜色通道(R、GB 或者 YCbCr)中,0 代表最暗(全黑),255 10bit 12bit
数字视频的出现,在很大程度上为 NTSC 和 PAL ITU NTSC 和 PAL
他们确定了 2 种独立的推荐方案-ITUR BT.601 ITU‐R BT656。这两种方案合起来,就定义了一种结构,该结构能让不同的数字视频系统部件实现互操作。鉴于 BT.601 定义了数字视频传输所用的参数,BT.656 定义了接口本身。
ITU-R BT.601(前 CCIR-601)
BT.601 规定了对视频信号进行数字化编码的方法,它利用了 YCbCr 颜色空间,以更好地利用通道带宽。它建议将 4:2:2 YCbCr 作为广播视频的首选格式。同时也提供了同步信号(HSYNC,VSYNCFIELD)和时钟信号,以便划定有效视频区的边界。图 4 示出了同步信号、时钟和数字信号之间典型的时序关系。
每个 BT.601 Y、Cr 或 Cb 8 10bit NTSC PAL
的有效视频画面中每行有 720 个像素 30 /s 的 NTSC 有 525 PAL 100 625 PAL 25 帧/s 的速率适应同样的标准。
BT.601规定Y值的额定值范围从16235CbCr则从16到240128的量值对应着无颜色。有时,由于噪声或者截断误差的存在,一个量值可能会超出额定值边界之外,但永远不会取值到0或者255 ITU-R BT.656 (前 CCIR-656)
BT.601规划了对视频进行数字编码的方法,而BT.656则实际定义了实施BT.60127MHz的时钟(在NTSC 30 帧/s条件下)以及810条连线(具体取决于像素的分辨率)。所有的同步化信号都嵌入到数据流中,因此无需额外添加硬件连线。
位串行模式只需要在单个通道上传输一路复用化的10bit/像素串行数据流,不过它需要运用复杂的同步化、频谱整形和时钟恢复调理等技术手段。此外,其位时钟速率接近300MHz,因此要在很多系统中实施基于采用串行位形式的BT.656是极富挑战性的任务。从我们的目标出发,我们将把注意力仅放在位并行模式上。
图56示出了ITU-R BT. 656525/60 NTSC)和625/50 (PAL)系统的帧划分方法和数据流的特性
在BT.656HV)和场(F)信号作为嵌入到视频数据流中的一串字节来发送,这一串字节构成了一个控制字。有效视频起点(SAV)和有效视频终点(EAVSAVH发生1-0切换时,EAVH发生0-1切换时。整个视频场由有效的视频+水平消隐(EAV和SAVV1的空间)组成。
视频的场从F位的切换开始。“奇数场”由F0表示,而F=112,而隔行扫描的视频则要求专门对每个场进行独立的处理,因为每个场交替的扫描行组合起来最终形成实际的视频图像。
图 7 更为详细地示出了 SAV 和 EAV 代码。请注意,视频数据有一个由三个字节构成的前导码( 8bit 视频是 0xFF, 0x00 , 0x00 ,而 10bit 视频则是 0x3FF, 0x000, 0x000 ),后面跟随着 XY 状态字,这个字除了包含 F (场) , V (垂直消隐) 和 H (水平消隐)位之外,还包含了 4 个保护位,以实现单位错误的检测和纠正。请注意, F 和 V 只能作为 EAV 序列的一部分来变化(即,从 H = 0 切换到 H = 1 )。此外,请注意,对于 10bit 视频来说,增加的两位实际上是最低位,而不是最高位。
图中:8bit Data8位数据,10bit Data——10位数据
各个数位的定义如下:
? F = 0 for Field 1
? F = 0 ,场 1
? F = 1 for Field 2
? F = 1 场 2
? V = 1 during Vertical Blanking
? V = 1 垂直消隐期间
? V = 0 when not in Vertical Blanking
? V = 0 未在垂直消隐期内
? H = 0 at SAV
? H = 0 @ SAV
? H = 1 at EAV
? H = 1 @ EAV
? P3 = V XOR H
? P2 = F XOR H
? P1 = F XOR V
? P0 = F XOR V XOR H
垂直消隐间隔(V1的时间)可以被用来发送非视频的信息,如音频、文字电视广播(teletext)、字幕(closed‐captioningBT.6560xFF, 0x00, 0x00”前导码,而是以“0x00, 0xFF, 0xFF
假定并不发送辅助数据,则在水平和垂直消隐间隔期间,(Cb, Y, Cr, Y, Cb, Y, 0x80, 0x10, 0x80, 0x10, 0x80, 0x10…)。另外,请注意,由于0x00 和 0xFF等量值专门用于控制前导码,故不能用作有效视频流的一部分10bit0x000 0x0030x3FC 0x3FF)等量值也都被专门留出,以免给8bit的视频引用造成问题。
上述就是我们关于数字视频的概念介绍。在下一小节中,我们将把注意力放在如何从系统角度来考察视频技术上,讨论视频流是如何进入和输出嵌入式系统的。