假如没有图像与视频,今天的世界会是怎样?
对于生活在互联网时代的我们来说,图像与视频是信息传达最直接的表达方式,没了它们,互联网也就等于去了半条命。网络上充斥着数以亿计的图像与视频,如此大的数据量,不可避免的会面临着存储空间与网络带宽的问题,那么我们要如何来压缩图像与视频的容量,使之能够更加节省我们的资源呢?所以,多媒体编码技术也就呼之而出了。
上图所展示的所有产品,都离不开本文所要谈的多媒体编码技术。
多媒体编码我们大致可以分为三个方向: 音频,视频,图像。在本文中,我主要介绍的是后两种形式的编码,即视觉多媒体编码。
先从宏观的角度谈一谈图像与视频编码的发展历史:
说起图像,其编码大致趋势为:JPEG -- JPEG 2000 -- JPEG XR
当然,目前使用最为广泛的标准依旧是JPEG标准,但并不代表其后发布的标准就不好,只是判断一个标准的好坏,不光光要考虑压缩率,同时也要考虑编码与解码的效率,速度及准确性,光光是压缩率高,在实际的应用中未必有太大的用处。
再来说视频,从1988年的H.261编码,到1993年的发布的MPEG-1(MPEG-1正是我们以前所用的VCD的视频标准),1996年的MPEG-2/H.262(DVD所用的标准),1999年的MPEG-4,2003年的MPEG-4 AVC/H.264, 再到正在研究的HEVC,基本上代表了最近20年来视频编码领域的发展趋势。
所谓编码即是利用视频图像数据之间极强的相关性,消除其中的冗余信息,从而达到仅保留最少的有效数据,最后再根据这些极少的信息恢复成完整的信息。冗余可分为空间上的冗余和时间上的冗余。在图像压缩中,我们通常只是去除空间冗余,而在视频压缩中,我们既可以去除空间的冗余,也可以去除时间上的冗余。
视频压缩编码框架大体有三个部分:时空预测,空间变换,熵编码。
时空预测是基于块的运动估计和运动补偿,这里我通过几幅图像来描述。
左上角是原始图像,右上角是相关图像,左下角表示的是运动估计中块的最佳匹配的矢量,右下角就是我们的预测图。
关于上图中左下角图的来源,我们可以参考下图。
在这里,对上图也就不做太多解释,其实就是一个块匹配的过程。
时空预测的结果是什么呢?
上图中下面的那张有点轮廓的图就是我们所得到的结果。
得到这样的结果,是不是压缩就结束了呢?这只是第一步。
下面我们对预测的结果进行空间变换,变换的方式很多,比如DFT, DCT, wavelet, haar等等,在这里,我们可以用DCT变换,如下图所示。
有没有发现,图像上的信息又变少了呢?大部分均为黑色,即RPG值为0,我们可以不用存储。
变换也结束了,下面就该熵编码了。熵编码是不丢失任何信息的编码,令出现次数高的符号,用最短的关键字符表示,尽可能使信息容量变小。学理工科的人或多或少都听说过Huffman编码,这就是一种最常见的熵编码。
到这里,我们的整个视频压缩框架也就差不多介绍完了。
可能有人会问,编码发展到现在,接下来还要怎么发展?
我们可以先看一张图:
随着编码压缩率的提高,计算的强度也在不断的增大,如果仅仅为了使编码从50%压缩率提升到60%,而要以牺牲多余10倍的时间为代价,那么这种编码到底是好还是不好呢?
目前要论最为主流的视频标准莫属H.264了,虽然相比于以前的标准,H.264耗费了更多的时间去编码,但这种时间对于现在的计算机来说,从时间上来说还是可以承受的。HD-DVD和蓝光均计划采用这一标准进行节目制作。H.264最大的优势是具有很高的数据压缩比率,以及其更高的编码效率,并带来高质量的视频画面。有兴趣了解H.264的同学不妨了解一下这张结构图。
目前正在研究的新一代视频标准HEVC,全称High Efficient Video Coding,整个大体框架与H.264基本一样,不过在每一步都做了些许提升,但同时也造成了编码与解码时间的消耗。所以,这里不得不提到云计算了。
对于HEVC编码来说,一个10秒的视频,用一台普通的PC居然要跑七天才能编码完成,这样的编码还会有人用吗?而云计算正好从时间上可以解决我们的问题,用成千上万个核来跑,那编码的时间对我们将不再漫长。
当然,这需要借助外力,所以,并不能说明它就一定是以后的发展趋势。不过,要是趋势都定下来了,不就没有什么挑战了吗?为什么我们不自己来发明一种编码,同时兼顾压缩率与时空复杂度呢?或许,我们可以试试。
Foster
2011年10月17日