1 视频编码系统的基本结构
1. 预测编码
预测编码可以用于处理视频中的时间和空间域的冗余。视频处理中的预测编码主要分为两大类:帧内预测和帧间预测。
帧内预测:预测值与实际值位于同一帧内,用于消除图像的空间冗余;帧内预测的特点是压缩率相对较低,然而可以独立解码,不依赖其他帧的数据;通常视频中的关键帧都采用帧内预测。
帧间预测:帧间预测的实际值位于当前帧,预测值位于参考帧,用于消除图像的时间冗余;帧间预测的压缩率高于帧内预测,然而不能独立解码,必须在获取参考帧数据之后才能重建当前帧。
通常在视频码流中,I帧全部使用帧内编码,P帧/B帧中的数据可能使用帧内或者帧间编码。
2. 变换编码
目前主流的视频编码算法均属于有损编码,通过对视频造成有限而可以容忍的损失,获取相对更高的编码效率。而造成信息损失的部分即在于变换量化这一部分。在进行量化之前,首先需要将图像信息从空间域通过变换编码变换至频域,并计算其变换系数供后续的编码。
在视频编码算法中通常使用正交变换进行变换编码,常用的正交变换方法有:离散余弦变换(DCT)、离散正弦变换(DST)、K-L变换等。
3. 熵编码
视频编码中的熵编码方法主要用于消除视频信息中的统计冗余。由于信源中每一个符号出现的概率并不一致,这就导致使用同样长度的码字表示所有的符号会造成浪费。通过熵编码,针对不同的语法元素分配不同长度的码元,可以有效消除视频信息中由于符号概率导致的冗余。
在视频编码算法中常用的熵编码方法有变长编码和算术编码等,具体来说主要有上下文自适应的变长编码(CAVLC)和上下文自适应的二进制算术编码(CABAC)。
视频编码可以分为两大类,基于波形的编码和基于内容的编码。
- 视频编码方法与可采用的信源模型有关。如果采用“一幅图像由许多像素构成”的信源模型,这种信源模型的参数就是每个像素的亮度和色度的幅度值。对这些参数进行压缩编码技术称为基于波形的编码。
- 如果采用一个分量有几个物体构成的信源模型,这种信源模型的参数就是各个物体的形状、纹理和运动。对这些参数进行压缩编码的技术被称为基于内容的编码。
基于波形的编码
如上所述,利用像素间的空间相关性和帧间的时间相关性,采用预测编码和变换编码技术可大大减少视频信号的相关性,从而显著降低视频序列的码率,实现压缩编码的目标。
基于波形的编码采用了把预测编码和变换编码组合起来的基于块的混合编码方法。为了减少编码的复杂性,使视频编码操作易于执行,采用混合编码方法时,首先把一幅图像分
成固定大小的块,例如块 8×8(即每块 8 行,每行 8 个像素)、块 16×16(每块 16 行,每行 16 个像素)等等,然后对块进行压缩编码处理。
所有这些视频编码都采用了基于块的混合编码法,都属于基于波形的编码。
基于内容的编码
如上所述,基于块的编码易于操作,但由于人为地把一幅图像划分成许多固定大小的块,当包含边界的块属于不同物体时,它们分别具有不同的运动,便不能用同一个运动矢量表示该边界块的运动状态。如果强制划分成固定大小的块,这种边界块必然会产生高的预测误差和失真,严重影响了压缩编码信号的质量。
于是产生了基于内容的编码技术。这时先把视频帧分成对应于不同物体的区域,然后对其编码。具体说来,即对不同物体的形状、运动和纹理进行编码。在最简单情况下,利用二维轮廓描述物体的形状;利用运动矢量描述其运动状态;而纹理则用颜色的波形进行描述。
当视频序列中的物体种类已知时,可采用基于知识或基于模型的编码。例如,对人的脸部,已开发了一些预定义的线框对脸的特征进行编码,这时编码效率很高,只需少数比特就能描述其特征。
对于人脸的表情(如生气、高兴等),可能的行为可用语义编码,由于物体可能的行为数目非常小,可获得非常高的编码效率。
MPEG-4 采用的编码方法就既基于块的混合编码,又有基于内容的编码方法。
三维(立体)视频编码
立体视频编码是视频编码的发展方向之一,其平面信息外增加了深度信息,数据量非常庞大。立体视频编码也有两种类型的方法:第一种是基于波形的,它组合运动补偿预测和位差补偿预测。所谓位差估计即在两幅不同图像中寻找对应的点。它对预测残差图像、位差和运动矢量进行编码;第二种是基于物体的,它直接对成像物体的三维结构和运动进行编码。当物体结构简单时,可获得非常高的压缩比。其编码结构如图所示。
视频信号的预处理
一个基本的视频处理和通信系统大致可如图所示
图像采集的功能由图像传感器实现,目前图像传感器主要有电荷耦合器件(CCD, charge coupled devices)和 CMOS 传感器,前者技术发展成熟,具有高解析度、低噪声、动态范围大等优点,在高端产品中得到广泛应用,后者随着半导体技术的发展,以其低成本、高的集成度、低功耗等占领了低端市场,且随着技术的不断发展, CMOS 图像传感器的一些参数性能指标已达到或超过 CCD。
但不论是 CCD 还是 CMOS 传感器在将实际景物转换为图像信号时总会引入各种噪声和畸变失真,因此一般需要对图像传感器的图像进行预处理,包括伽马校正、图像插值、图像校正、白平衡、图像增强以及增益控制等技术,一方面改善图像的质量,另一方面,可使得图像有利于视频编码的处理。
色彩插值(Color Interpolation)
不论是 CCD 还是 CMOS 图像传感器,但为了简化工艺和降低成本,一个像素点往往只能给出记录从纯白到纯黑的系列色调,因而只能给出单色的色调值,不能同时给出 RGB 三组数据。因此,对于彩色的图像值的获取,这就需要借助色彩滤镜阵列(CFA, Color Filter Array),即图像传感器的像素表面覆盖一个多色的滤镜阵列。通过应用不同的色彩滤镜阵列,可以获得不同的图像输出阵列,其中,最常见的一种滤镜阵列的图像传感器获得的是一幅如图 2.9 所示的马赛克的图像阵列,即 Bayer模型。
色彩校正(Color Correction)
上面通过插值已经得到了 RGB 三元色齐全的图像(R、 G、 B)了,但传感器响应的这个图像与真实场景之间仍存在差异。这存在多方面的原因,涉及图像传感器中光学器件(棱镜)的光谱特性、场景的光源光照条件(诸如白光、荧光或者钨光)以及色彩滤镜的光谱特性等。下图给出了配置 RGB 色彩滤镜阵列的 CMOS 图像传感器的光谱响应曲线。
为了补偿这种差异,必须对图像的像素值(R、 G、 B)进行如下的变换处理。
其中,系数 bij 是由传感器的光谱特性、光源光照条件和滤镜的光谱特性所决定,不能简单地就给出,往往需要传感器厂商在满足人眼的视觉效果的前提下,依据性能指标和测试结果综合给出。因此,这里的色彩校正不可能做到理想的效果,只能做到尽可能地减小上述的差异性。
伽马校正(Gamma Correction)
在计算机图形领域, “伽马校正”这个术语大家并不陌生,但它的含义可能正确理解的不多。这其中又涉及到另一个术语—强度(Intensity),其表示的是每单位面积传播的(光)辐射能量。在图像显示器中,这个强度作为参量和输入的电压信号密切相关。
以目前应用最为广泛的阴极射线管显示器 CRT 为例, CRT 的感光材料的响应随着加载电子束电压信号的不同而不同。在理想状态时,输出的色彩强度 Intensity 和电子束的电压信号之间的关系应该是线性的,如下图所示;但实际上,如下图所示,输出的强度随着电压信号之间是非线性的。
研究表明,显示器的输出强度和输出电压的相应大致呈幂指数关系,如下面公式所示输出的强度随着输入电压的增长成指数增长。通常我们就把这个幂指数称为伽马(gamma)。事实上,几乎各种显示器都存在这种非线性关系,其伽马值大小在 1.7 和 2.7 之间, CRT 的伽马值一般取 2.2。
其中, I 指显示器输出的光强度; P 指显示器上加载的光束电压,一般光束电压 P 是由图像相应位置的像素值决定; γ为伽马值。
为了在显示器上显示的图像效果和实际相符,有必要在摄像机获取图像后进行伽马校正,使得上述这种非线性校正为线性关系,公式如下:
其中, Pnew 是进行了校正处理的对图像的像素值; Pold 是校正前的像素值;伽马值γ影响着校正的程度, γ=1 时,不进行校正, γ越大,像素值的校正量越大。
伽马校正的具体实现方法是多种多样的,在模拟电视中,伽马校正可采用分段折线与渐变式两种。对于分段式是通过选择二极管的配置电路,确定不同的分段导通特性来实现校正处理。数字电路技术的发展,高度灵活的数字化伽马校正得到了广泛应用,可以采用数字电路的硬件实现折线式
的伽马校正电路,也可采用软件实现渐变式伽马校正电路。如图 2.12 所示,软件实现的伽马校正的步骤分为两步; 1)建立伽马校正数据表; 2)根据输入的像素值进行查表获取伽马校正后的数据。其中,伽马校正数据表的可以通过各种公式的修正公式计算获得,也可预先设定。
图像增强(Image Enhancement)
很显然,实际应用中图像传感器的输出图像经过上述的处理并不是完美的,图像质量获得的改进也是有限的,加之噪声、光照等原因,需要进一步处理,丢弃无用的信息,保留我们感兴趣的重要信息。 图像增强作为一种重要的图像处理技术,目的无非就是两个: 第一更适合人眼的感觉;第二有利于后续的分析处理。
图像增强主要包括直方图均衡、平滑滤波、中值滤波、锐化等内容。一般情况下,图像增强既可以在空间域实现,也可以在频域内实现。 这里我们主要介绍在空间域内对图像进行点运算,它是一种既简单又重要的图像处理技术,它能让用户改变图像上像素点的灰度值,这样通过点运算处理将产生一幅新图像。总之,图像增强后,有利于视觉的效果和后续的处理,消除了相关性和高频噪声,有利于图像的压缩和处理,节省带宽。
白平衡(White Balance)
白平衡作为图像处理的一个重要术语,也随着数码相机的普及进入了人们的认识中。白平衡指的就是对白色物体的还原。当我们用肉眼观看这大千世界时,在不同的光线下,对相同的颜色的感觉基本是相同的,比如在早晨旭日初升时,我们看一个白色的物体,感到它是白的;而我们在夜晚昏暗的灯光下,看到的白色物体,感到它仍然是白的。这是由于人类从出生以后的成长过程中,人的大脑已经对不同光线下的物体的彩色还原有了适应性。但是,图像传感器没有这种人眼的适应性,在不同的光线下,由于图像传感器输出的不平衡性,造成其输出的彩色失真:或者图像偏蓝,或者偏红。
理解白平衡,涉及到另一个重要的概念:色温。所谓色温,简而言之,就是定量地以开尔文温度表示色彩。 色温越高, 蓝色成分就越多; 色温越低, 红色成分就越多,在摄影、摄像时,不同色温光源下拍摄物体,获得的图像不可避免会出现色彩上的偏差。为了很获得现实际世界中各种色彩的图像,必须消除环境中光源色温的影响,即进行白平衡处理。