1.绪论
人类社会的三大支柱是物质、能量和信息。具体而言,农业现代化的基础是物质,工业现代化的支柱是能量,而信息化的支柱是信息。
90 年代以来,随着Internet和移动通信的迅猛发展,视频信息和多媒体信息在Internet网络和移动网络中的处理和传输成为了当前我国信息化中的热点技术,数字视频技术在通信和广播领域获得了日益广泛的应用。
视频信息具有直观性、确切性、高效性、广泛性和高带宽性等特点。
2. 视频信号的预处理
一个基本的视频处理和通信系统大致可如下图所示,主要包括采集、预处理、视频编码、通信、图像处理以及显示等几个方面。
• 数字信号的产生:从摄像机光电转换后得到的电视信号都是模拟信号,将模拟电视信号变成数字电视信号要经过模/数(A/D)转换过程。
• 模/数转换包含三个过程,即取样、量化及编码。其中,取样的目的是将时间上连续的模拟信号变成时间上离散的信号,量化是将幅度上连续的取样值变成幅度上离散的取样值,而编码的作用是将离散化的取样值编成二进制数码。
• 取样是指用每隔一定时间的信号样值序列来代替原来的时间上连续的信号,也就是在时间上将模拟信号离散,其理论基础是奈奎斯特取样定理。
• 量化是用有限个幅度近似原来连续变化的幅度值,把模拟信号的幅度离散化。量化过程是把取样后的信号幅值归并到有限个幅度等级上,并用一个相应的数据来表示。归并过程使得量化后的信号幅度与取样信号实际幅度之间有偏差,这称为量化误差。量化误差的存在会使重现图像上产生杂波干扰,称为量化杂波或量化噪声。
• 编码则是按照一定的规律,把量化后的值用数字表示,然后转换成二值或多值的数字信号流。这样得到的数字信号可以通过电缆、微波干线、卫星通道等数字线路传输。
图像采集的功能由图像传感器实现,目前图像传感器主要有电荷耦合器件(CCD,charge coupled devices)和CMOS传感器,前者技术发展成熟,具有高解析度、低噪声、动态范围大等优点,在高端产品中得到广泛应用,后者随着半导体技术的发展,以其低成本、高的集成度、低功耗等占领了低端市场,且随着技术的不断发展,CMOS图像传感器的一些参数性能指标已达到或超过 CCD。但不论是CCD还是CMOS传感器在将实际景物转换为图像信号时总会引入各种噪声和畸变失真,因此一般需要对图像传感器的图像进行预处理,包括伽马校正、图像插值、图像校正、白平衡、图像增强以及增益控制等技术,一方面改善图像的质量,另一方面,可使得图像有利于视频编码的处理。
2.1色彩插值(Color Interpolation)
进行色彩插值的主要原因与数字成像技术中的限制有关。具体来说,CCD数字照相机的每一个感光元件只允许采集R(红色)、G(绿色)和B(蓝色)颜色分量之一。这导致每个像素点仅包含一种原色的信息,形成的图像被称为马赛克图像。
然而,为了得到完整的彩色图像,我们需要恢复出每一个像素点上的其他两个颜色分量。这就是彩色插值的主要作用,也称为彩色去马赛克处理。通过利用相邻像素之间的相关性,通过数据计算获得缺失的颜色分量,从而恢复出完整的彩色图像。
在RGB图像中,一个像素通常需要同时获取RGB三个颜色分量的值。然而,直接为每个像素配备三块分别对应RGB的滤镜不仅价格昂贵,而且制造困难,因为需要确保三块滤镜的每一个像素点都对齐。为了简化制作工艺和降低制作成本,一个像素往往只给出单色的色调值,而不能同时给出RGB三组数据。此时,就需要通过色彩插值来恢复出缺失的颜色分量。
无论是CCD还是CMOS,一个像素点往往只能给出记录从纯白到纯黑的系列色调,因而只能给出单色的色调值,不能同时给出RGB三组数据。因此,对于彩色的图像值的获取,这就需要借助色彩滤镜阵列(CFA,Color Filter Array),即图像传感器的像素表面覆盖一个多色的滤镜阵列。通过应用不同的色彩滤镜阵列,可以获得不同的图像输出阵列,其中,最常见的一种滤镜阵列的图像传感器获得的是一幅如图2.9所示的马赛克的图像阵列,即Bayer模型。
基于拜耳阵列的插值算法是常见的色彩插值方法,包括双线性插值法、色比恒定法、基于梯度的算法、自适应插值法和Ron Kimmel法则等。这些算法都是利用相邻像素之间的相关性,通过数据计算来恢复出缺失的颜色分量,从而得到完整的彩色图像。
图2.1-1 Bayer 图像阵列
显然,这种图像阵列中,每个像素值只有一个颜色的色调值,另外两个颜色的色调必须利用相邻像素之间的相关性,通过数据计算获得,这些方法通常就被称为色彩插值。
2.2 色彩纠正(color correction)
通过插值已经得到了 RGB 三元色齐全的图像(R、G、B)了,但传感器响应的这个图像与真实场景之间仍存在差异。这存在多方面的原因,涉及图像传感器中光学器件(棱镜)的光谱特性、场景的光源光照条件(诸如白光、荧光或者钨光)以及色彩滤镜的光谱特性等因素。
为了补偿这种差异,必须对图像的像素值(R、G、B)进行变换处理。这种处理需要传感器厂商在满足人眼的视觉效果的前提下,依据性能指标和测试结果综合给出。
因此,这里的色彩校正不可能做到理想的效果,只能做到尽可能地减小上述的差异性。
2.3 伽马校正(Gamma Correction)
在计算机图形领域, “伽马校正”这个术语大家并不陌生,但它的含义可能正确理解的不多。这其中又涉及到另一个术语—强度(Intensity),其表示的是每单位面积传播的(光)辐射能量。在图像显示器中,这个强度作为参量和输入的电压信号密切相关。
以目前应用的阴极射线管显示器CRT 为例,CRT 的感光材料的响应随着加载电子束电压信号的不同而不同。在理想状态时,输出的色彩强度vv和电子束的电压信号之间的关系应该是线性的,如图2.3-1 (a)所示;但实际上,如图2.3-1 (b)所示,输出的强度随着电压信号之间是非线性的。
图2.3-1(a) 理想的线性响应 图2.3-1(b)实际的非线性响应
研究表明,显示器的输出强度和输出电压的相应大致呈幂指数关系。通常我们就把这个幂指数称为伽马(gamma),为了在显示器上显示的图像效果和实际相符,有必要在摄像机获取图像后进行伽马校正,使得上述这种非线性校正为线性关系。
2.4 图像增强(Image Enhancement)
很显然,实际应用中图像传感器的输出图像经过上述的处理并不是完美的,图像质量获得的改进也是有限的,加之噪声、光照等原因,需要进一步处理,丢弃无用的信息,保留我们感兴趣的重要信息。图像增强作为一种重要的图像处理技术,目的无非就是两个:第一更适合人眼的感觉;第二有利于后续的分析处理。
图像增强主要包括直方图均衡、平滑滤波、中值滤波、锐化等内容。一般情况下,图像增强既可以在空间域实现,也可以在频域内实现。这里我们主要介绍在空间域内对图像进行点运算,它是一种既简单又重要的图像处理技术,它能让用户改变图像上像素点的灰度值,这样通过点运算处理将产生一幅新图像。总之,图像增强后,有利于视觉的效果和后续的处理,消除了相关性和高频噪声,有利于图像的压缩和处理,节省带宽。
下图就是经过锐化处理前后图像的对比:
图2.4-1锐化处理效果图
2.5 白平衡 (White Balance)
白平衡作为图像处理的一个重要术语,也随着数码相机的普及进入了人们的认识中。白平衡指的就是对白色物体的还原。当我们用肉眼观看这大千世界时,在不同的光线下,对相同的颜色的感觉基本是相同的,比如在早晨旭日初升时,我们看一个白色的物体,感到它是白的;而我们在夜晚昏暗的灯光下,看到的白色物体,感到它仍然是白的。这是由于人类从出生以后的成长过程中,人的大脑已经对不同光线下的物体的彩色还原有了适应性。但是,图像传感器没有这种人眼的适应性,在不同的光线下,由于图像传感器输出的不平衡性,造成其输出的彩色失真:或者图像偏蓝,或者偏红,如图8.5-1所示。
图2.4-1白平衡示意图
理解白平衡,涉及到另一个重要的概念:色温。所谓色温,简而言之,就是定量地以开尔文温度表示色彩。色温越高,蓝色成分就越多;色温越低,红色成分就越多,在摄影、摄像时,不同色温光源下拍摄物体,获得的图像不可避免会出现色彩上的偏差。为了获得现实际世界中各种色彩的图像,必须消除环境中光源色温的影响,即进行白平衡处理。
3. 视频编解码基础知识
3.1. 基本框图
视频编码系统的基本结构如图2-1 所示。
|
图2-1视频编解码系统
•
3.2. 视频压缩编码的必要性
裸视频的数据量非常庞大,传输网络带宽要求高,就像一辆庞大的货车只有在宽阔的马路上才能行驶一样。而在目前的低带宽网络条件下要想传输裸的视频数据是极为昂贵的,因此视频数据在传送前要先进行压缩编码,即进行视频源压缩编码,然后在网络上进行传送,以便节省传送带宽和存储空间。这里有两个要求:
1)必须压缩在一定的带宽内,即视频编码器应具有足够的压缩比;
2)视频信号压缩之后,应保持一定的视频质量。这个视频质量有两个标准:一个为主观质量,由人从视觉上进行评定;一个为客观质量,通常用信噪比(S/N)表示。
如果不问质量,一味地压缩,虽然压缩比很高,但压缩后严重失真,显然达不到要求;反之,如只讲质量,压缩比太小,也不符合要求。
当然,在以上两个要求下,视频编码器的实现应力求简单、易实现、成本低、可靠性高,这也是基本的要求。
3.3. 视频压缩编码的可能性
视频信号压缩的目的是减小数据量,降低信号传输的数码率。压缩过程实际上就是去除图像中那些与信息无关或对图像质量影响不大的部分,即冗余部分。根据视频信号的特点及人眼的视觉特性,视频信号中存在很多的冗余部分,去除图像中那些与信息无关或对图像质量影响不大的部分,这就为图像压缩提供了可能性。视频信号的冗余性表现在以下几个方面:时间和空间相关冗余、视觉冗余、熵冗余。
• 空间相关性:对于大多数电视图像来说,相邻像素之间、相邻行之间图像内容变化很小,即具有很大的相关性(或称相似性),这种相关性称为电视信号的空间相关性或帧内相关性。
• 时间相关性:电视信号是利用人眼的视觉特性,借助于快速传送相关画面的方式来再现活动画面的,因此在相邻场或帧的对应像素间也存在很强的相关性,称之为时间相关性或帧间相关性。
时间和空间相关性造成了电视信号的冗余,减少这些冗余就可以实现图像压缩。
• 人眼的视觉效果是图像质量的最直接也是最终的检验标准,对于人眼难以识别的数据或对视觉效果影响甚微的数据,都可认为是多余的数据,可以省去。这些多余部分就是视觉冗余。
例如,通过对人眼视觉特性的研究,发现人眼对静止或缓慢运动图像的灰度等级及图像细节的分辨力很高,而对快速运动图像的灰度等级及图像细节的分辨力却较低。人眼在观察大面积像块时,对灰度等级分辨力很高,而对轮廓细节的分辨力则较低;这些说明人眼接收综合信息的速率有限
3.4. 数字视频信号的压缩编码
如前所述,视频信号存在多方面的冗余性,因此压缩时采用的编码方式也有多种多样,这些方式可从不同角度进行分类编码。
(1)帧间压缩编码:又称时间冗余压缩编码。此方式在相邻帧之间进行,它利用了电视图像信号的时间相关性来消除相邻帧之间的冗余信息。这种方式对于静止图像或缓慢运动图像有很强的压缩能力,但对于快速运动图像,由于其时间相关性降低,因此压缩能力也相应减弱。
(2)帧内压缩编码:又称空间冗余压缩编码。这种编码方式是在一帧(或一场)内进行的,它利用了电视图像信号的空间相关性来消除一帧(或一场)内图像的冗余信息。在画面细节较少的情况下,这种方式可实现较大的数码率压缩。
(3)预测编码:预测编码的目的是消除图像信息的空间相关性(帧内预测)和时间相关性(帧间预测)。编码时可从不同区域选取参与预测的像素。如果只选取前一个像素来预测当前像素,称为前值预测;若选取同一行内前几个像素来预测当前像素,称为一维预测;若选取同一行及上一行内若干个像素来预测当前像素,称为二维预测。上述几种预测方式都属于帧内预测。如果除了选取同一行及上一行内相邻像素外,还选取上一帧相关位置上的像素来预测当前像素,则称为三维预测,也即帧间预测。
(4)变换编码:变换编码是利用图像在空间分布上的规律性来消除图像冗余的另一种编码方式,它将原来在空间域内描述的图像信号利用数学运算变换成在另一变换域内描述的信号。在空间上相关性很强的图像信号在变换域上表现为在某些特定区域内能量很集中,即变换系数矩阵具有某种规律性。利用这一规律性即可实现数据压缩的目的。
(5)熵编码:熵编码是一种无损压缩编码方式。若信源熵小于平均码长,则存在熵冗余。熵编码的目的就是去除熵冗余,使平均码长接近熵值,从而实现压缩码率。熵编码的基本思想是对出现概论大的符号(携带较少的信息量)用短的码字编码,对出现概论小的符号(携带较多的信息量)用长的码字编码,这样可使对不同符号编码的平均码长接近于信源熵。
3.5. H.264编码常用参数
l QP值
QP 为量化步长,在量化和反量化过程中,量化步长QP决定量化器的编码压缩率及图像精度。如果QP比较大,则量化值动态范围较小,其相应的编码长度较小,但反量化时损失较多的图像细节信息;如果QP比较小,则动态范围较大,相应的编码长度也较大,但图像细节信息损失较少。编码器可以根据图像实际动态范围自动改变QP值,在编码长度和图像精度之间折衷,达到整体最佳效果。
在H.264 中,量化步长Qstep共有52个值。当QP取最小值0时代表最精细的量化,当QP取最大值51时代表最粗糙的量化。
l I帧(Intra-coded picture)
如果一帧都采用帧内模式编码,这一帧就称为I 帧。一般用于一个序列的第一帧。它的特点是高码率,但是可单独解码,无需参考前一帧,因此也被称为关键帧。
l P 帧(Predictive-coded Picture)
参考前一帧图像进行单向预测编码得到的帧称为P帧,它的特点是码流低,但是不能单独解码,必须参考前一帧解码后的图像数据才能解码,如果丢失了前一帧数据强行解码的话解出来的图像会花掉,直到解I帧才能恢复。
l B帧()
即Bidirectionallypredicted picture,参考前后2帧图像进行双向预测编码得到的帧称为B帧,它的特点是可以反向解码,即观看视频时可以倒退观看。
l GOP:
这是Group Of Picture的意思,指两个I帧之间的距离。GOP的值定义了每隔多少个P/B帧编一个I帧(关键帧),如下图所示:
GOP=10时帧数据
如果码流传输过程中P帧丢失或破坏后会引起后续P帧解码错误从而显示花屏,因此设置适当的GOP可以让编码器定期编出I帧来阻止错误扩散并恢复图像。
Reference(参考周期)指两个P帧之间的距离。一个I帧所占用的字节数大于一个P帧,一个P帧所占用的字节数大于一个B帧(如下图所示)。
所以在码率不变的前提下,GOP值越大,P、B帧的数量会越多,平均每个I、P、B帧所占用的字节数就越多,也就更容易获取较好的图像质量;Reference越大,B帧的数量越多,同理也更容易获得较好的图像质量。
需要说明的是,通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动强制插入一个I帧,此时实际的GOP值被缩短了。另一方面,在一个GOP中,P、B帧是由I帧预测得到的,当I帧的图像质量比较差时,会影响到一个GOP中后续P、B帧的图像质量,直到下一个GOP开始才有可能得以恢复,所以GOP值也不宜设置过大。
同时,由于P、B帧的复杂度大于I帧,所以过多的P、B帧会影响编码效率,使编码效率降低。另外,过长的GOP还会影响Seek操作的响应速度,由于P、B帧是由前面的I或P帧预测得到的,所以Seek操作需要直接定位,解码某一个P或B帧时,需要先解码得到本GOP内的I帧及之前的N个预测帧才可以,GOP值越长,需要解码的预测帧就越多,seek响应的时间也越长。
3.6. 视频解码技术综述
视频解码就是编码的逆向算法,解码器能够根据码流封包里面的信息提取需要的各种编码信息,从而能自动进行解码,相对编码来说其工作量要小很多,但是由于编码器类别很多,一个好的解码器需要兼容各种编码格式。