视频编码本质上是一种有损压缩,无损的压缩极限是熵。有损压缩的极限是人的视觉的差别感知能力 — Weber定理。
现在占统治地位的编解码方案都是基于块的混合编码架构。利用变换编码, 预测编码、熵编码三类经典技术, 去除视频信号的空域冗余、时域冗余及统计冗余。在这个技术路线上,从ITU-T的h261/2/3/4/5系列,到ISO/IEC的MPEG1/2/4 都是通过升级这三个部分的技术来达到更大的压缩效率。是典型的用复杂度来换取压缩效率。
当前视频的应用包括,视频监控,便携播放器,机顶盒,DVD,网络视频等。需要考察和权衡的编解码的维度包括下面部分。
编码复杂度-编码效率-传输容错性-解码复杂度-编码质量
H264为代表的主流方案的特点是,编码复杂度远远大于解码复杂度(5-10倍),编码效率还是很可观的SD(1-2Mbps)HD(4Mbps),传输容错性(利用FEC/FMO等可以达到可以接受的程度,但是没有办法合理的降级处理错误,及按照误码的比例同比例的降低质量),解码复杂度比较底(在主流的手机上可以达到高清解码),编码质量高(图像效果还是很好的。毕竟已经在当前的应用中占统治地位)。
因此总体上H264的表现还是相当优秀的。但是在后续的发展中面临一下问题
1. 再通过计算复杂度来换取编码效率的空间变小了。
2. 大量的低端编码设备需要使用低复杂度的编码算法,例如监控,救援,传感器网络等。
3. 在无线等高误码,高延迟,多经传播的网络无法很好的适应。
1.2问题虽然可以随着芯片技术的发展得到部分解决,但是由于芯片发展也进入了一个平台,所以新型的计算模型也需要改造编解码,否则无法跟上编码复杂度的要求,从H265可以看出来,虽然编码效率提升了1倍,但是编码复杂度比H264起码提升了4倍以上,当前的编码软件/芯片还无法实时编码高清。
由于H265的巨大计算复杂度,因此不适合当前的应用场景,所以不在这里介绍了,其他值得注意的研究方向有:
H264毕竟是成熟的编码框架如何充分利用当前的硬件发展来加速H264的编码也是一个很重要的方向。
加速的思路就是并行:
CPU级别的加速分为细粒度的并行就是用SIMD指令(x86的mmx,sse,sse4,avx,avx2等,arm的NEON)来加速。粗粒度的并行是利用多线程或者多核心来frame或者slice级别的并行。
快速发展的GPU计算技术,让h264编解码看到了曙光,可是GPU的并行方式是大规模的SIMD,而H264在编码过程中依赖了相邻的数据,因此并行度并不大,所以如何把H264进行改造适合GPU计算也是需要研究的方面,在这方面国防科技大学的张春元教授可以说走在了前沿。
流化H.264编码的数据并行方法 文梅,任巨,伍楠,苏华友,荀长庆,张春元
H26x的编码还是以像素为单位进行压缩,可以说H265在这方面降低冗余度的设计是登峰造极了。但是如果以对象为单位进行编码感觉应该有更高空间,MPEG-4的思路就是这样,但是由于要基于对象编码就要进行图像分割,这样需要更高的技术,因此进展不大,所以后面又和ITU-T联合起来搞了h264.
但是这条思路却是非常有优势的,由于相比像素为信息单位,视频对象为单位自然熵值更小。因此极限的压缩效率更高。当h26x遇到瓶颈的情况下,自然会走到这一步,而且如果能够降低计算复杂度,那么可以在较低的复杂度下获取相当的或者更高的编码效率。
全面的采用视频对象的方法还是有技术瓶颈的但是在某个领域确有了突破性的进展,这里要自豪的宣布一下“AVS-S2标准(2013年6月,包括AVS-S2 监控系统在内的AVS视频编码标准由IEEE颁布为编号1857的标准” 是的,就是中国提出的AVS标准系列,AVS-S2是AVS系列里的监控挡,AVS-S2能够以h264一般的复杂度,却提高了编码效率一倍,主要是利用了监控中背景长期不变,通过背景建模来降低“背景冗余”。这实际上就是把编码的层次从像素级提高到了前后景级别,已经是在可视对象级别的编码了。
所以这个思路还是有巨大的研究空间。
参见:支持监控视频高效压缩与识别的IEEE 1857标准
分布式编码是指对两个或多个相关的随机过程进行编码,每个过程分别使用不同的编码器,编码后的码流送到同一个解码器后,该解码器利用信号间的统计相关特性对所有输入的码流进行联合解码,如图所示。
若对两个统计相关的独立同分布随机过程X和y,分别进行传统的熵编码/解码,可以得到如下关系:
Rx≥H(X)
Ry≥H(y)
其中,Rx,Ry和H(x),H(y)分别为X,Y的码率和信息熵。若利用x和y之间的相关性,对x和y,进行独立编码、联合解码,可以进一步降低码率.
Wyner和Ziv将Slepian.Wblf理论结果进一步延伸到有失真的分布式编码。于视频压缩编码中一般使用有失真编码,这样Wyner-Ziv理论成为分布式视频编码的主要理论依据。
基于20世纪70年代Slapian和Wolf以及Wyner和Ziv提出的信息理论而建立的分布式信源编码,近些年被应用于视频压缩技术中,称为分布式视频编码。分布式视频编码算法被广泛研究,比较典型的分布式视频编码系统是斯坦福大学Bemd Girod小组提出的Wyner-Ziv视频编码系统,以及加州大学伯克利分校Kannan Ramchandran小组提出PRISM(Power-efficient,Robust,hlgh-compression,Syndrome.based Multimedia coding)系统。
斯坦福大学的Wyner-Ziv视频编码系统
伯克利分校的PRISM
1. 运算复杂度转移- 把运动预测等复杂度高的操作转移到了解码器端,因此编码器的复杂度转移到解码器端。
2. 固有的视频抗误码能力-分布式视频编码算法对视频帧进行独立编码,编码Wyner-Ziv帧时,仅考虑当前帧与预测边信息之间的相关性统计,只要在解码端使用符合相关性的边信息即可正确解码。因此信道传输导致的丢包或误码不会影响其它图像帧的恢复,具有较强的容错能力,而不像使用预测编码的传统视频压缩算法,网络传输错误容易
造成编码端和解码端重构缓存不匹配,从而出现误码扩散现象,严重影响恢复视频质量。
3.提高视频编码效率困难-分布式视频编码算法中,编码器对各帧图像进行独立编码,没有考虑视频序分布式视频编码的关键技术研究列的时间相关性,虽然大大降低编码端的复杂度,但却未能有效去除相邻图像的冗余信息,这将降低分布式视频编码系统的编码效率。
现在互联网点对点视频聊天的软件实际上都有。例如QQ,Skype,Facetime,还有众多的厂家的系统。但是效率出众,带宽消耗少,点对点加密的开源聊天软件还是有生存的空间。
因此为了本质上提升视频聊天的竞争力,需要重新考虑编码器的选择和改造。需要满足编码效率高,编码复杂度低等,良好的抗误码。
基于这样的考虑。可行的方案为:把AVS-S2的方案合并进x264中,然后在当前的硬件上调优。DVC编码近期看不到可以实用的可能性,只好暂时放弃。