原文下载地址:http://files.cnblogs.com/IlvDanping1024/VideoCompress.pdf
第3章
视频压缩
摘要 表示一个高质量的数字视频所需的信息容量通常是非常大的,这对于网络分布的大量内容而言已成为一个挑战。这就是为什么必须将数据压缩的主要原因。关于压缩过程有一个比较清晰的认识就是关键在于开发新的方法来提高其时间效率。
关键字 数字图像 数字视频 视频压缩 网络视频
目前数字视频通信呈现在许多应用场景,例如广播节目,网络视频流,视频采集,以及体现在其他场合。问题的核心在于在一定的比特率条件下实现尽可能高的保真度传输源数据,或者以尽可能低的比特率传输源数据的同时保证传输数据的保真度。而两种情况下,都在比特率和保真度之间有一个基本的权衡。
现实中,数字视频会占用大量的存储空间。从摄像机采集到的视频,未压缩的情况下每秒视频约占用17MB空间。正因为需要占用如此大的空间,视频在上传到网络前必须压缩。为了更好的了解什么是数字视频,必须实现数据压缩的重要性以及压缩过程为什么需要耗费如此大的计算开销,本文首先介绍视频的基本组成。
3.1 图片压缩
一个数字图像或一帧的数字视频通常包括三个矩形阵列的整数值样本,每个包含三刺激色的阵列均表示图像中的特定空间区域。图片编码通常使用到的一种颜色表示方法包括三种组成元素,Y,Cb,Cr。Y分量为亮度,代表图像的亮度,如图3.1。另外两个色度分量Cb,Cr分别表示颜色从灰色朝向蓝色和红色的偏离程度。因为人类视觉系统的亮度更敏感比浓度,通常使用一个采样结构的色度分量阵列每个只有四分之一是很多样本对应的亮度分量阵列(一半的数量的样品在两个水平和垂直的维度)。这就是4:2:0抽样[16]。每个分量的振幅通常用8位字节的采样精度表示消费者质量的视频,这意味着,每个分量中的每一个像素可以假定值从0到255。
基于这种采样结构,一个1980×1024的原始图像文件的分辨率,拥有200万像素以上的分量,共5.8MB的数据。对于一个单独的图片,它并不是多大的数据。然而对于几十个图像的组合物,数据的大小就成了一个问题,特别是这些图像需要在网络中传送。在这种情况下,我们必须减少要发送的数据量。这个过程就被称为压缩。
基本的图像压缩过程,用于JPEG[63、64]标准,可以总结为以下步骤[16]。压缩过程如实例图3.2:
1.图像的颜色表示从RGB转换到YCbCr格式,包括一个亮度分量(Y),表示亮度,和两个色度分量(Cb和Cr),表示颜色。
2.色度数据的分辨率通常是由一个因子2减小。这就是所谓的二次取样并反应了一个事实就是人的眼睛对精细的色度细节比对精细的亮度细节更不敏感。
3.图像被分割成8×8像素的块。对于每个块,每个Y,Cb,Cr数据分量经过一次离散余弦变换(DCT)。离散馀弦转换类似于傅里叶变换,在某种意义上,它产生一个空间频率谱。
4.量化频率分量的振幅。人类的视觉是在大面积上的颜色或亮度中的小的变化比起高频亮度的变化更为敏感。因此,高频分量的幅值存储比低频分量的幅值存储精度更低。编码器的图像质量设置(例如,50或95在0 - 100之间在独立的JPEG库[12])影响每个频率成分的分辨率减少程度。如果使用过低的质量设置中,高频分量被完全丢弃。
5.将得到的数据可用于所有的8×8块进一步使用无损压缩算法。无损算法允许确切的原始数据从压缩数据的重建。例子是霍夫曼[52]算法或Lempel-Ziv–Welch 编码[53,54]。
压缩比可以根据需要通过改变量化阶段中使用的除数进行调整。更激进的因子意味着更大的压缩比。十到一的压缩通常得到的图像与原图像无法通过肉眼区分。一百到一的压缩通常能达到,但看上去比原来的有明显的扭曲。适当的压缩级别需根据使用场合进行设置。
图3.3示出了压缩比如何影响解码图像的最终质量。出现这种情况是由于量化步长,它引入了不能被解码处理回收的损失。因此这种压缩过程使有损压缩经受住了考验。另一方面,如果我们缩短压缩过程中的量化步长,我们可以通过解码经无损压缩得到的图像后,完全重建原始图像。
3.2 无损视频压缩
数字视频包括一系列的数字图像,在视频的背景下被称为帧。帧在恒定的速率下连续快速的显示。我们以帧每秒(FPS)来测量帧的显示速率。
一个视频中每秒的帧数越多,用来表示视频所需的数据空间就越大。然而以减少视频中每秒的帧数来达到降低数据空间的大小并不是一种良好的压缩解决方法,因为较小的帧速率,导致依次显示的图像连续性感知就急剧下降。实践中,使用20-30帧速率来表示视频。
视频压缩需求的产生由需要在给定的介质(例如网络)中存储和传输这样的信息决定。30帧每秒的视频,空间分辨率为3209×240像素,每像素8位的色分辨率,存储所需要的文件空间约52Mbps,这使得它几乎不可能在目前许多国家的Internet网络基础设施中传输。
由于数字视频是连续显示的图像序列,一种简单的压缩方法就是将每个图像分开压缩。这项压缩研究开始于20世纪60年代中期[13,14]。这个过程基本上是在每个单一的视频帧中进行无损图像压缩,它被定义由MJPEG标准[16,67]。
一般情况下,在无损压缩过程中每个图像或每一帧都是被独立压缩,并没有考虑到与后续帧之间的冗余。即每帧都需要经过上述的无损压缩处理过程。
这个基本模型相对于压缩比是非常低效的。如果我们考虑高清晰度的视频,与更大的空间分辨率和更高的帧速率,这是很必要去寻求一种能进一步探索视频特征的方法,从而达到具有令人满意的数据量压缩同时不降低内容的质量。
3.3 有损视频压缩
有损视频压缩的定义,经过压缩、解压的视频与原始视频不同,并且损失不可逆。作为有损压缩的结果,它变得不可能经过解压后重建原始文件。有损压缩通常为提高压缩比是必需的,因为这在使用无损压缩过程是不可行的。在这个过程中,原始数据的部分被丢弃,以大幅降低来表示它所需的比特数。理想的情况下,这样做是不会带来显著失真。在视频的情况下,许多被丢弃的信息是不察觉的眼睛,这使得这个过程成了无损压缩一个很好的替代。然而当压缩比变得相当高,可能带来非常明显的效果退化,最终导致打开的内容无法识别。
绝大多数现代编码器,如H.264[17],VP8[68],WMV等,基本是在有损压缩算法基础上实现的。
执行一种有损视频压缩过程中,大多数编码器监测视频的两个显着的特点:空间和时间冗余。因为每个视频帧可以被视为一个独立的图像,图像压缩技术可直接对它们应用,这将采取措施以降低空间冗余度,利用相邻的像素之间的相关性,以减少来表示每个帧所需的比特数量。对于图像压缩过程,它可以在每帧的压缩过程中加入量化步长,这将可以减少需要用于代表相似值的信息的符号数量。经过有损压缩过程,原始值将不能再被恢复,在内容上造成无法修复的丢弃。正如前面提到的,越大的量化步长,就会给每帧带来越大的内容损失。通常情况下,这些损失可以在图像中通过细小的信息块标识出来,如图3.3所示。
此外,大多数所所描绘的场景基本上只是重复的图片在拍摄后没有显著的变化,因此视频可以通过只发送变化的视频场景更有效的表示,而不是重复编码所有区域。我们参考图像间或帧间编码技术,能够使用时序冗余来提高编码效率是从根本上区分视频压缩和上述例证的帧内压缩流程。
间压缩的基本方法是计算对应的块中的当前帧和先前帧之间的预测误差。然后误差值被传递到压缩过程中,压缩帧生成的预测结果通常被称为P-帧。当我们使用当前帧和先前帧作为参考时,该帧被称为B-帧(双向帧),如图3.4所示。
如图3.5所示,运动补偿是一个过程,其中每个图像帧通常被划分成一个固定的方块数组。在该帧的每一个块中,在图像区域内搜索参考帧中包含的允许编码器可以支持的最大的词条数。搜索最好的匹配块,以使得到最小的预测误差,通常最小化均方差值或平均绝对差,更容易计算。通常情况下块的大小是16×16像素的顺序,而且最大位移是大约64像素块的原始位置。大多数可用的搜索策略都使用了某种采样机制。最简单的搜索方法是穷举搜索。
例示图3.6 是一个在块结构中执行运动补偿的例子,引用MPEG-4被称为“Foreman”的测试序列[55]。需要注意的是静止背景使用大量的具有非常相似的运动矢量的数据块来表示(从开始到每个块的中心用短线条表示)。
3.4 视频压缩与网络分发
互联网视频分发已不是一个新的过程,然而,它在过去几年内越来越受到欢迎,主要是网络连通性和宽带的改善。尽管可用带宽有了显著的增加,今天的互联网在需要更高的数据传输速率的情况下,例如,无压缩视频,有效的传输内容的能力有限。为了让视频内容在使用普通的互联网连接下交换,信息必须被压缩到较低的数据速率,最好达到几千比特每秒的序列。第一个流行的解决方案是由Real Networks公司在1997年开发的,实时视频,基于H.263编码器,分发一个视频不超过28,8Kbps的拨号连接到互联网。
随着时间的推移,新的更好的压缩算法被推出,实现在更低的比特率下传送更高的质量。在过去的几年中,互联网的视频压缩技术已发展到H.264/AVC压缩标准[17],这是现有的压缩效率最高的编解码器之一。
H.264/AVC项目的目的是在不增加设计的复杂性下,创建一个新的标准比以前标准,例如MPEG-2[56],H.263[57],或MPEG-4第2部分[58],能在比特率大大降低的前提下,提供良好的视频质量。过于复杂的设计,使这个解决方案不切实际,过于昂贵的实施。标准化的H.264/AVC的第一个版本在2003年5月完成,并流行至今。
互联网发行的视频压缩技术的演变是一个占据主导地位的技术总是被取代的情况。实时视频,这是1997至2004年最热门的技术。在这一年里微软的Windows Media服务利用新WMV9编解码器占据了主导地位,引入了一个新的过程,以获得更好的视频压缩质量。这项技术迅速成为最流行的互联网视频技术,迫使那些使用真正的解决方案迁移到微软的平台。然而,随着微软的Windows Vista项目的优先次序,停止他们的媒体平台的进一步发展,使得Adobe在开发一个类似的平台后,参与视频市场的竞争。然而,Adobe公司,并没有一个很好的视频压缩标准(Sorenson Spark[59])。为了使自己的产品更有吸引力,他们专注于用户体验和一体化的播放器里面的网页[60]。
通过这种方法,Adobe的Flash媒体平台引起关注的被称为YouTube,在2005年决定采用Adobe的技术作为自己的视频平台。随着互联网视频的普及,很大一部分是由于在YouTube的现象,在Flash 媒体平台开始从与微软的技术对抗中来获得市场,并占据互联网视频技术的主导地位。
2007年,Adobe为了提升视频质量,加入了H.264技术支持他们的Flash播放器,自此,它成为了现实中网页视频的标准。
互联网视频技术演变的分析中,我们强调视频压缩的标准在不断变化中。这短短的历史,因为每一种格式/标准变化都有相关的工作,所有的传统内容,必须重新编码,使其符合新标准。这一事实对那些专门做大量视频转码的大量的播放设备有很大的影响。此外,这个过程通常是相当复杂的,耗时的,消耗资源的,而且很慢。
最后值得注意的是,互联网视频消费已不再是受计算机或网络浏览器的限制。现在有更完善的设备播放视频功能,并支持不同的视频格式。这意味着,它在通常情况下,一个单一的视频需要进行转换几次格式,以确保与不同的设备的兼容性。最糟糕的是,每次一个新的设备,一个新的支持的格式投入市场,所有的旧内容也必须进行转码。
内容制作者,从经济的观点来看,没有多大兴趣在一个大的转码基础设施的投资。首先,他们不知道一个新的格式什么时候成为流行,而且其次,在新的格式投入市场后,他们只需要一个向新的格式进行转码的过程。 如果他们投资在一个大的,能够处理转码工作硬件设施,很可能将保持闲置资源的很大一部分时间。
云使资源的需求分配成为了可能,在另一方面,非常适合这种情况,允许根据当前的需要用于提供计算机的处理和存储能力。当不再需要,这些资源将被释放。
在此基础上,能够在云环境中有效的处理视频成为了媒体制作公司的战略。这是本研究的重点。在下面的章节中,我们所提出的架构,展示了如何实现在云平台部署的细节。