视频的时代终结了吗?
本文章绝大部分参考吴枫博士的一场报告会,感觉挺有意思,就整理并整合了自己的想法。
摘要:
此篇文章主要讲解了视频编码的流程,并且主要通过讲解H.264,然后并在此基础上讲解了下一代视频编码HEVC的现状,进而发出疑问,对未来视频处理的研究空间和前景的发出一个探讨。
首先简单介绍下现有的视频压缩历史
1: 视频压缩(图像压缩)无处不在,其广泛性直接看图!
2:目前的标准有哪些?
MPGE H.264到底是什么?
下面简单讲述MPEG和H.264的历史。
MPEG标准主要有以下五个,MPEG-1、MPEG-2、MPEG-4、MPEG-7及MPEG-21等。该专家组建于1988年,专门负责为CD建立视频和音频标准,而成员都是为视频、音频及系统领域的技术专家。及后,他们成功将声音和影像的记录脱离了传统的模拟方式,建立了ISO/IEC1172压缩编码标准,并制定出MPEG-格式,令视听传播方面进入了数码化时代。因此,大家现时泛指的MPEG-X版本,就是由ISO(International Organization for Standardization)所制定而发布的视频、音频、数据的压缩标准。
MPEG标准的视频压缩编码技术主要利用了具有运动补偿的帧间压缩编码技术以减小时间冗余度,利用DCT技术以减小图像的空间冗余度,利用熵编码则在信息表示方面减小了统计冗余度。这几种技术的综合运用,大大增强了压缩性能。
MPEG-1
MPEG-1标准于1992年正式出版,其标题为“码率约为1.5Mb/s用于数字存贮媒体活动图像及其伴音的编码”。
MPEG-1层1 数字盒式录音带
MPEG-1层2 DAB,VCD,DVD
MPEG-1层3 Internet,MP3音乐
MPEG-2
MPEG-2标准于1994年公布MPEG-2编码标准希望囊括数字电视、图像通信各领域的编码标准,MPEG-2按压缩比大小的不同分成五个,档次(profile),每一个档次又按图像清晰度的不同分成四种图像格式,或称为级别(level)。五个档次四种级别共有20种组合,但实际应用中有些组合不太可能出现,较常用的是11种组合。
MPEG-4
MPEG-4在1995年7月开始研究,1998年11月被ISO/IEC批准为正式标准,正式标准编号是ISO/IEC14496,它不仅针对一定比特率下的视频、音频编码,更加注重多媒体系统的交互性和灵活性。这个标准主要应用于视像电话、视像电子邮件等,对传输速率要求较低,在4800-6400bits/s之间,分辨率为176*144。MPEG-4利用很窄的带宽,通过帧重建技术、数据压缩,以求用最少的数据获得最佳的图像质量。利用MPEG-4的高压缩率和高的图像还原质量可以把DVD里面的MPEG-2视频文件转换为体积更小的视频文件。经过这样处理,图像的视频质量下降不大但体积却可缩小几倍,可以很方便地用CD-ROM来保存DVD上面的节目。另外,MPEG-4在家庭摄影录像、网络实时影像播放也大有用武之地。
MPEG-4利用很窄的带宽,通过帧重建技术,压缩和传输数据,以求以最少的数据获得最佳的图象质量。
与MPEG-1和MPEG-2相比,MPEG-4的特点是其更适于交互AV服务以及远程监控。MPEG-4是第一个使你由被动变为主动(不再只是观看,允许你加入其中,即有交互性)的动态图象标准;它的另一个特点是其综合性;从根源上说,MPEG-4试图将自然物体与人造物体相溶合(视觉效果意义上的)。MPEG-4的设计目标还有更广的适应性和可扩展性。
H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式,它即保留了以往压缩技术的优点和精华又具有其他压缩技术无法比拟的许多优点。
1.低码率(Low Bit Rate):和MPEG2和MPEG4 ASP等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3。
显然,H.264压缩技术的采用将大大节省用户的下载时间和数据流量收费。
2.高质量的图象:H.264能提供连续、流畅的高质量图象(DVD质量)。
3.容错能力强:H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具。
4.网络适应性强:H.264提供了网络抽象层(Network Abstraction Layer), 使得H.264的文件能容易地在不同网络上传输(例如互联网,CDMA,GPRS,WCDMA,CDMA2000等)。
H.264 到底是什么?
下面详细讲解下H.264的主要结构
H.264主要目标就是相比任何已有的视频编码标准提出一种能够有稳定高质量的视频编码。
实现有几个功能:
1:把输入的图像或者每一帧分割成若干像素的小块(16*16像素),这样我们处理视频的主要问题就转移到处理这些像素块。
2:对原始的这些16*16的像素块进行最初的各种变换以便减少各种空间冗余,这些空间变换主要包括:空间的预测,空间变换,量化,以及编码。
3:减少视频中各帧间的时间冗余,因为视频的每帧之间存在很大的相关性,所以冗余很大。所以我们只需记录下这个帧和上个帧或几个帧之间的变化即可。这里主要用到了运动估计和运动补偿。(这里运动估计就是我们用前一帧或者前几帧的信息来预测后一帧的信息,其实由于每帧都被块状话,应该说块运动估计更准确。而运动补偿就是为了实现无损压缩,我们预测的帧肯定存在误差,所以运动补偿就是真实的后一帧减去预测的帧)。
4: 继续去除存在着各帧间的空间冗余(如,预测的帧和真实的帧之间存在差异,这些差异也会有不少冗余)。当然这些冗余也还是通过空间转化,量化,和熵编码实现。
对于运动估计和运动预测,H.264是通过不同大小的像素块来实现的(16*16,8*8,4*4)。
这里的空间变换是integer based transform (有点像DCT,但是克服了DCT的可逆不匹配缺点)。 对于熵编码:这里可以有两种方法,一个是VLC(variable length codes)变长编码,另一个是具有内容自适应性的算术编码。这两种编码的主要区别是 VLC的编码长度是整数值,比较容易,计算复杂度低,而算术编码编码效率要高,其编码长度可以精确到小数,平均码长可以达到信源的熵值,但是计算复杂度高。
因为去除空间冗余,熵编码都是已经很成熟的研究,空间冗余牵涉到的变换和量化在信号处理和通信原理等都已经很成熟了,熵编码在信息论等也都已经有原理支持,所以视频处理中最核心的也就是运动预测了。
那么H.264核心的运动预测是如何实现的呢?
下面就简单讲些运动预测的内容。
首先预测是针对的对象时块元素,由于这里运动估计和运动预测有几种模式(也就是16*16像素块的几种不同的处理)。如下图所示:
当然不同模式下的预测和运动补偿都是有各自特点的,16*16像素块分的块越多,运动矢量也就越多。当然块越小,预测也就越准确,但随之而来的复杂度也就高了。
比较常见的是下面这种模式:
既然模式出来后,那么如何预测?
下面就拿其中的一种模式作为例子吧,比如Mode 0(vertical),那么
a,e,i and m 和A相等
b,f,j and n 和B 相等
c,g,k and 0 和C相等
d,h,l,and p 和D相等
相信目前为止,大家对H.264的流程应该有个基本的了解。
下一代视频编码标准
由于H.264/MPEG-4 AVC是在03年发布的,时值已经8年,那么 随着网络技术和终端处理能力的不断提高,人们对目前广泛使用的MPEG-2, MPEG-4, H.264等,提出了新的要求。希望能够提供:1)高清,2)3D,3)移动无线,以满足新的家庭影院、远程监控、数字广播、移动流媒体、便携摄像、医学成像等心领域的应用。另外,H.264/AVC发布后,经过几年的积累(新型运动补偿、变换、插值和熵编码等技术的发展), 具备了推出新一代视频编码标准的技术基础。
2010年4月在德国德累斯顿召开了JCT-VT第一次会议,确定新一代视频编码标准名称:HEVC(High Efficiency Video Coding),并且建立了测试模型(TMuC),成立了AD HOC小组,分领域搜集和审阅技术提案。初步定于2012年7月完成标准的最终稿。
新一代视频压缩标准的核心目标是在H.264/AVC high profile 的基础上,压缩效率提高一倍。即在保证相同视频图像质量的前提下,视频流的码率减少50%。在提高压缩效率的同时,可以允许编码端适当提高复杂度。
HEVC依然沿用H.263就开始采用的混合编码框架。帧间和帧内预测编码:消除时间域和空间域的相关性。变换编码:对残差进行变换编码以消除空间相关性 。熵编码:消除统计上的冗余度。HEVC将在混合编码框架内,着力研究新的编码工具或技术,提高视频压缩效率。
现在HEVC具体有什么进展吗?
从当前HEVC 对比H.264来看,因为HEVC的框架是基于H.264的,所以只是在质量上的改善,没有质的飞越。
具体来说: 从以前的16*16像素块输入到64*64像素块的输入,在更大空间上进行研究。可以支持 4*4 到 64*64更多的模式。计算精度也从 8 bits 到 10 bits。 提供了自适应环形滤波器。运动预测从以前的9个方面编程现在的34个方向(16*16 编程64*64必然会导致方向的变化)。
目前总的来说HEVC利用更高的复杂度来追求更高,更好的效果。目前压缩比确实提高了40%,编码时间也提高了0.9 到2.4 倍。但是用户对计算机的需求不可能像摩尔定律那样一直更新,目前的计算机已经满足基本用户的需求。所以利用复杂度来换取精确度,压缩比的模式还是很具有一定的局限性。
难道视频压缩的时代真的走到了尽头?
看下面这图,给我们的直观感觉是如果追求更好的压缩比必然以计算复杂度为代价!而且目前的HEVC也是这种趋势,按照这种发展,用户的计算机需求如果增长很慢的话,那视频时代该往哪里发展?
路该怎么走?... …
视频压缩的空间到底有多大?… …
其实仔细想一想,我们的理论基础都是基于传统信号处理,信号分析的知识,计算机图形的知识用的不是很多,说不定有很多其他的学科或者知识可以应用到视频,开拓视频的一个新的时代,或者走出视频处理的原始框架(目前所有的视频处理都是基于一个框架)?
还有,现在是多核和云的世界,
而且多核和云肯定也会对传统的视频编码格式带来一定的很大的冲击,至少在传统基础上要改变你的编程结构,编程参数等以适应编码需求。
由于视频压缩中最核心的一个环节是运动预测,由于运动预测的对象是基于像素块的,而像素块的预测并不是线性的,其预测关系如下图:
所以这就给并行处理带来很大的困难,如何并行处理?或是重新找一种线性的预测方式?
当多核和云出来之后,那么视频中以复杂度为代价换取压缩比的模式还继续存在吗?
其实我们应该说视频的下一个时代才刚刚开始!