一、概述
视频编码与音频编码类似,也包括模/数转换和压缩编码两个过程,如图所示。
[插图]图4-36 黑白视频编码光传感器由众多的光电器件组成的阵列构成,光电器件可将照射到表面的光的强弱转换成电信号。成像的过程就是矩阵扫描过程,当景物光照射到光传感器表面时,矩阵高速开关电路逐行逐点地将每点的电信号按顺序输出,便可完整地将整幅景物电信号扫描出来。扫描得到的模拟图像信号经过ADC转换成数字图像信号,再经过压缩编码得到压缩的数字图像信号。
经过上述处理得到的是黑白图像(严格来讲应该称为灰度图像)的数字信号,要想得到彩色图像的数字信号怎么办?
根据三基色原理,每个像素的颜色都可以分解成红绿蓝(RGB)三种颜色,如图所示。
可以先利用分色棱镜,将入射光线分解成红、绿、蓝三束光线,如图所示。
光线射入第一个棱镜(A),蓝色成分的光束被低通滤镜的涂层(F1)反射。蓝光是波长短的高频光,而波长更长的低频光可以通过。蓝光经由棱镜另一面全反射后,由棱镜A射出。其余的光线进入棱镜(B),然后被第二个涂层(F2)分裂,红光被反射,而波长较短的光能够穿透。红光同样经过棱镜A和B之间的一个细小的空气隙全反射,其余的绿色成分光线则进入棱镜C。
再将红、绿、蓝三束光线分别照射到3个光传感器上,如图所示。
最后通过模/数转换、压缩编码得到RGB三路数字信号,如图所示。
注意:光传感器不能感知光的颜色,只能感知光的强弱,并将其转换成电信号。
二、模/数转换
1.采样
视频信号的采样从时间和空间两个维度进行,如图所示。
时间离散化:间隔一定时间对图像采样一次,将图像离散化为一系列的帧。
空间离散化:从水平和垂直两个方向,间隔一定距离对图像采样一次,将图像离散化为一系列的像素。
1)空间采样
一般将图像的水平像素数与垂直像素数的乘积称为视频分辨率。
例如:
PAL制式VCD的视频分辨率为352×288;
PAL制式DVD的视频分辨率为720×576。
视频分辨率在一定程度上反映了视频的清晰度。
一般按照分辨率的不同将视频分为标清、高清、全高清和超高清,如表所示。
为便于对比,将各种清晰度的视频分辨率画到一张图中,如图所示。
很明显8K视频的清晰度是4K视频的4倍,4K视频的清晰度是高清视频的4倍。
2)时间采样
由于人类眼睛的特殊生理结构,如果所看画面的帧率高于16FPS(帧/秒),就会认为是连贯的,这种现象被称为视觉暂留,如图所示。这就是为什么电影胶片是一格一格播放的,但人眼看到的却是连续画面的原因。
每秒显示的帧数被称为帧率。
一般视频的帧率是固定的,例如,25FPS或30FPS,如图所示。
2.量化和编码
根据颜色的不同,将视频图像分为黑白图像、灰度图像和彩色图像。
1)黑白图像
如图所示,每个像素的颜色只有黑白两色,用1个比特0或1表示即可。
传送一帧分辨率为720×480的黑白图像需要传输720×480=345.6kbit=43.2KB数据。
如果帧率取30FPS,则视频码率为345.6×30=10368kbit/s=10.4Mbit/s。
2)灰度图像
灰度图像如图所示。黑色与白色之间还有许多级的颜色深度。以256级灰度为例,每个像素的颜色需要用8个比特来表示。
传送一帧分辨率为720×480的灰度图像需要传输720×480×8=2764.8kbit=345.6KB数据。
如果帧率取30FPS,则视频码率为2 764.8×30=82 944kbit/s=82.9Mbit/s。
3)彩色图像
彩色图像如图所示。
每个像素需要用红、蓝、绿三种颜色来表示。每种颜色的深浅可以划分为很多级,如果分为256级,则每种颜色需要8个比特来表示,每个像素三种颜色需要24个比特来表示。
传送一帧分辨率为720×480的彩色图像需要传输720×480×24=8.29Mbit=1.04MB数据。如果帧率取30FPS,则视频码率为8.29×30=248.7Mbit/s。
TIPS:视频码率
视频码率与视频分辨率、帧率、每像素编码的比特数有关:视频码率=视频分辨率×帧率×每像素编码比特数假定:视频分辨率:720×480;帧率:30 FPS;每像素编码比特数:24 bit;视频码率为:720×480×30×24=8.29×30=248.7Mbit/s。
三、视频压缩
码率高达248.7Mbit/s的视频在通信系统中传输是不现实的,必须对视频数据进行压缩才行。
1.色彩空间压缩
前面讲解视频的空间采样时,针对灰度图像,每个像素只进行了1次采样。而针对彩色图像,每个像素都进行了3次采样:红色、绿色和蓝色信号各采样1次。
空间采样时,针对每个像素采样了3次,得到的R、G、B信号电平如图所示。
有没有什么办法可以减小彩色视频的采样频率呢?
答案是肯定的,人眼具有对亮度敏感、对色度不敏感的特点,如图所示,可以利用这一点来降低色度信号的采样频率。
(1)首先对每个像素的红色(R)、绿色(G)、蓝色(B)信号电平进行转换处理,得到亮度(Y)、蓝色色差(Cb)、红色色差(Cr)电平信号,如图所示。
以如下转换公式为例:
Y=0.257R+0.504G+0.098B+16
Cb=-0.148R-0.291G+0.439B+128
Cr=0.439R-0.368G-0.071B+128
注:R、G、B和Y、Cb、Cr的取值范围均为0~255。
下面再看一下图4-47所示的那个简单的彩色图像,该图像转换后得到的亮度信号(Y)、蓝色色差信号(Cb)、红色色差信号(Cr)电平如图所示。 (2)然后再进行二次采样:对亮度信号Y,保持每个像素采样一次;对色差信号Cb和Cr,降低采样频率,例如,每2个像素采样1次,得到YCbCr电平如图所示。 采用RGB信号时,每个像素每种颜色采样一次,假定采用256级量化,每个像素RGB三种颜色最终编码为8+8+8=24比特。 而采用YCbCr信号时,亮度信号Y每个像素采样一次,色差信号Cb和Cr两个像素采样一次,同样采用256级量化,最终平均每个像素编码为8+4+4=16比特,相对于RGB信号压缩了33%。
2.可变帧率压缩
VFR:Variable Frame Rate,可变帧率。
为了达到减小视频文件体积或者改善动态画面质量的目的,可以不采用固定的帧率,而是在动态画面时使用较大的帧率,在静态画面时使用较小的帧率,这就是可变帧率,如图所示。
3.视频图像压缩视频
图像压缩算法分为两类:
单独对每一帧图像进行压缩,如M-JPEG压缩算法。
利用相似性,将相邻几帧图像联合起来进行压缩,如MPEG压缩算法。
1)M-JPEG压缩
M-JPEG压缩算法单独对每一帧图像进行压缩编码,完全不考虑图像之间的相似性,如图所示。
2)MPEG压缩
MPEG压缩算法会考虑图像之间的相似性,对图像进行差分编码。对第1帧完整图像进行压缩编码,后面2帧的静态部分(树)不参与编码,图像解码时参考第1帧即可,只针对变化的部分(人)进行编码,如图所示。MPEG压缩得到的视频码率相对于M-JPEG压缩大大降低。
MPEG压缩中图像被分为:I帧、P帧和B帧,如图所示。
I帧:帧内编码帧,又被称为关键帧,是B帧和P帧进行压缩编码的参考帧。针对关键帧,要对完整图像进行帧内压缩编码。
P帧:帧间预测编码帧。与前面的I帧或P帧图像进行对比,针对差异部分进行帧间压缩编码。P帧在解码时要依赖参考帧,因此对传输错误比较敏感。B帧:双向预测编码帧。同时与前面和后面的I帧或P帧图像进行对比,针对差异部分进行帧间压缩编码。B帧在解码时要把前后的参考帧都缓存下来之后才能开始解码,处理时延大,对参考帧的依赖性更强。
MPEG压缩还采用了基于块的运动补偿技术:如果视频中存在大量物体运动的话,上述的差分编码将无法显著减少数据量,可以采用基于块的运动补偿技术,如图所示。
构成新帧的大量信息都可以在前面的帧中找到,但可能会在不同的位置上。因此这种技术将一帧图像分为一系列块。通过在参考帧中查找匹配块的方式,逐块地构建新帧。如果发现匹配的块,编码器只需要对参考帧中发现匹配块的位置进行编码。与对整块的实际内容进行编码相比,只对块的运动信息进行编码可以减少数据量。
4.视频压缩标准
为了适应不同带宽和视频质量的要求,针对MPEG压缩主要出了三个标准:MPEG-1、MPEG-2和MPEG-4,如表所示。
目前网络视频中常用的视频压缩标准是H.264,也就是MPEG-4 Part 10,又被称为AVC(高级视频编码),是MPEG-4系列标准中的一个新标准,如图所示。
H.264标准推荐的视频码率如表所示。
可以看到压缩后的480P视频码率只有1.8Mbit/s,相对于压缩前的视频码率248.7Mbit/s,还不到其1%,压缩率非常高。
|