数字视频技术论文-多视点视频编解码

数字视频技术论文-多视点视频编解码
数字视频技术论文-多视点视频编解码

多视点视频编解码

吕永超

[摘要]与二维视频编码有所不同,多视点视频编码还存在不同视点间

的空间冗余,因此除了进行运动估计和运动补偿外,还需要对立体视频

进行视差补偿预测,来消除视点间的空间冗余,提高视频压缩的效率。

大模块所占比率大,耗时少,小模块所占比例小,但是耗时多。而且,

立体视频编码中,小模块模式相对于平面视频编码所占的比例更少,这

也说明了立体视频编码中模式选择的重要性。JMVC测试模型遍历所有模式然后选择最优编码模式,致使编码速度低下。我们通过快速模式选择,尽可能的减少小模块模式的预测,在保证图像质量和压缩效率的基础上,大幅度的提高了立体视频编码速度。CPU单独解码效率较低,最多仅能

支持6个视点1280X720P格式的高清视频实时解码。而基于本文提出的CPU和GPU混合解码技术,由于IDCT和彩色空间变换这些并行运算均有GPU完成,充分发掘了当前GPU的特点,CPU主要负责解码控制类型的

运算,整体解码运算效率较高,可以实时解码8个视点的1280X720P格

式的高清视频。

[关键词] 多视点视频快速帧间模式选择 IDCT和图像彩色空间变换

目录

第一章绪论 (1)

第二章多视点视频编码 (1)

2.1多视点视频编码原理 (1)

2.2视频编码方案 (2)

2.3立体视频运动估计搜索算法 (3)

2.4快速帧间模式选择 (3)

2.5本章小结 (3)

第三章基于GPU和CPU混合运算的解码技术 (4)

3.1 IDCT运算在GPU上实现的基本原则 (4)

3.2图像彩色空间变化在GPU上的实现 (4)

3.3 本章小结 (4)

参考文献 (5)

第一章绪论

立体视频压缩与平面视频压缩的主要区别在于立体视频压缩利用了视点间的视差信息进行编码,大幅度的提高了压缩率,从而也解决了立体视频庞大数据信息的存储和传输问题。

编码优化包括快速运动估计搜索算法的实现以及快速帧间模式选择算法的实现,它们都是在

保证立体视频编码质量的前提下,提高立体视频的编码速度。解码器移植包括PC端和WM手机

端实现H.264解码并显示。

视频编码框图,主要包括参考帧管理,运动估计,模式选择,变换,量化,重排列和嫡编码

几个部分。JMVC是通过参考帧管理实现进行运动估计和视差估计的,从而确保了视频编码的高

效率。本文主要工作集中在虚线框中的运动估计和模式选择部分,在帧间预测时通过实现S-UMHexagon Search算法提高运动搜索的速率,在模式选择部分进行快速模式选择,提前判断最

优模式,降低编码复杂度,从而提高编码速率。变换一般是用来去除图像信号中的相关性并减

少图像编码的动态范围,量化则是用来减少图像编码长度,减少图像恢复中不必要的信息,二

者的目的都是降低码率,实现图像压缩。嫡编码是无损压缩,解码时能够无失真的恢复原数据,它实现了图像信息到数字信号的转换。

第二章多视点视频编码

本章首先介绍了多视点视频编码原理方案和立体视频运动估计搜索算法;然后详细介绍了快速帧

间模式选择。

2.1多视点视频编码原理

多视点视频编码原理如下图所示,ME代表运动估计,DE代表视差估计,MD代表模式选择,T

代表变换,Q代表量化,R代表重排列,E代表嫡编码,T?1代表反变换,Q?1代表反量化。

以两视点为例,进行立体视频编码。

(1)第一视点按照二维视频编码(H.264的步骤进行编码。

(2)第二视点第一帧,采用帧内预测的同时,以第一视点第一帧为参考进行视差补偿预测,并存

储视差矢量和残差。

(3)第二视点非第一帧,以第二视点己编码帧为参考进行运动补偿预测,遍历所有模式,记录最

优预测块的运动矢量MV 1、残差D开销COST1;然后以第一视点同一时间的图像为参考进行视差

补偿预测,遍历所有模式,记录最优块的视差矢量DV2、残差D2及开销COST2;选择开销最小的

模式为最佳编码模式,记录矢量和残差。

借鉴单视点视频编码的运动补偿技术来实现视差补偿,消除视点间的冗余信息。具体实现方法

如下:首先将视点间的参考图像和同一视点编码的参考图像统一放入参考图像列表进行管理,然

后利用匹配算法搜索得到最佳匹配块,接着将当前编码块和预测块做差值,得到残差和矢量

(MV/DV),最后对残差进行压缩编码。这也是JVT推荐的测试模型JMVC中使用的处理方法。

2.2视频编码方案

JMVC测试模型在立体视频压缩方面有着高效的压缩效率及优良的参考帧管理机制。我们选择

使用JMVC测试模型进行立体视频压缩,但是其编码速度极其缓慢,我们就必须进行JMVC编码

速率优化。本

文主要从运动估计搜索算法和快速模式选择算法两个方面着手,实现编码速率的提高。

2.3立体视频运动估计搜索算法

几种常见的搜索算法有:全局搜索算法、三步搜索法、菱形搜索法、以及复合搜索算法等。由

于物体的运动千变万化,很难用一种简单的模型去描述,所以实际上大多采用多种搜索算法的

组合方式,即复合搜索算法。采用符合搜索算法可以很大程度上提高预测的编码效率和性能。

2.4快速帧间模式选择

在立体视频编码过程中,由于视差估计的存在,使得模式8x8, 8x4, 4x8,4x4所占比例减少,但是这些小预测块消耗的时间最长。因此我们为了大幅度缩短编码时间,必须进行帧间模式的

快速选择,尽可能的减少小预测块的遍历。

视频图像的内容可以粗略分为3种:平坦背景区域、复杂背景区域、运动区域。背景区域在视

频中占有较大的比例,我们选用较大的预测块(如16x16,16x8,8x16),这也意味着用于表示运动矢量和分割区域类型的比特会比较少。而对于运动区域,它所占的比例小,同时我们必须选用

较小的预测块或者intra预测,这也意味着用于表示运动矢量和分割区域类型的比特会比较多,并且搜索过程耗时比较长,视差补偿预测的引用运动区域的“转变”,使得小模块预测比例更小。如果能够较早的判断当前宏块是较大预测块还是较小预测块,就能够大幅度缩短编码时间。

(1)利用率失真损耗

模块越小,搜索时间越长,我们应当尽可能少的遍历小模块模式。

1.对16x16模块进行运动估计,并判断是否为SKIP模式。若为是,则不进行其他模式的预测;

2.计算16x8, 8x16模块的率失真损耗,若16x16模块的率失真损耗小于这两种模式,则认为

采用大模块预测,不进行8x8, 8x4, 4x8模块预测;

3.计算8x8, 8x4, 4x8子块的率失真损耗,若8x8的率失真损耗小于8x4,4x8模块,则不进

行4x4模块预测;

4.择率失真损耗最小的模块作为最优模式进行编码。

(2)利用细节块能量

通过计算细节块能量,提前判断宏块是采用大尺寸还是小尺寸模式进行编码,能够降低计算

复杂度,缩短编码时间。

1.对16X16模块进行运动估计,并判断是否为SKIP模式。若为是,则不进行其他模式的预测;

2.将16x16分成4个8x8的块,通过DCT变化系数计算其细节程度,当高细节块数目大于2,并且尺6X16 > 0.7时,认为当前宏块要进行小模块模式预测,否则,只进行大模块模式预测(16x16, 16x8, 8x16)

3.计算8x8模块的4个4x4DCT系数块的能量,当细节块数目大于2,并且尺Xs > 0.7时,认为要进行4x4模块的预测,否则只进行8x8, 8x4, 4x8模式预测。

4.选择率失真损耗最小的模块最为最优编码方式进行编码。

(3)利用运动矢量

较大预测块预测说明用来表示运动矢量和分割区域的比特比较少,较小预测块预测说明用来

表示运动矢量和分割区域的比特较多。如果两种预测块的运动矢量相等,那么我们就采用较大

预测块进行预测。以16x16, 16x8, 8x16为例,当16x16的运动矢量和16x8, 8x16的运动矢量

相同时,我们就可以认为当前块为大模块模式,采用16x16进行编码。

1.对16x16模块进行运动估计,并判断是否为SKIP模式。若为是,则不进行其他模式的预测;

2.进行16x16, 16x8, 8x16模块预测,并比较3种模式的运动矢量,当3种模式的运动矢量

相等时,则采用16x16模式进行编码。否则跳转3;

3.进行8x8, 8x4, 4x8模块预测,如果运动矢量相等,则不进行4x4模块预测;

4.选择率失真损耗最小的模块最为最优编码方式进行编码。

经过试验测试,这种方法比较适合单一参考帧的情况,对于立体视频编码效果不太理想,只有SKIP模式判断提高了编码速度,这是因为立体视频编码中绝大部分都是B-Slice,并且参考帧

为视点间参考,利用运动矢量判断约束条件太多,提高的编码速度不理想。

2.5本章小结

一般而言,一个编码器主要包括5个基本功能模块:帧间和帧内预测、变换和反变换、量化和

反量化、环路滤波、熵编码。

与二维视频编码有所不同,立体视频编码还存在不同视点间的空间冗余,因此除了进行运动

估计和运动补偿外,还需要对立体视频进行视差补偿预测,来消除视点间的空间冗余,提高视

频压缩的效率。

大模块所占比率大,耗时少,小模块所占比例小,但是耗时多。而且,立体视频编码中,小

模块模式相对于平面视频编码所占的比例更少,这也说明了立体视频编码中模式选择的重要性。JMVC测试模型遍历所有模式然后选择最优编码模式,致使编码速度低下。我们通过快速模式选择,尽可能的减少小模块模式的预测,在保证图像质量和压缩效率的基础上,大幅度的提高了

立体视频编码速度。

第三章基于GPU和CPU混合运算的解码技术

本章详细介绍了使用于立体视频解码的IDCT和图像彩色空间变换的GPU实现方法。

3.1 IDCT运算在GPU上实现的基本原则

国内外学者己经研究了很多年基于CPU等通用处理器的快速二维DCT/IDCT算法。传统的基于CPU的IDCT快速算法中,基本思想是利用加法和移位操作来代替乘法操作。但是这些算法的运算结构类似于FFT的蝶形运算,它会导致每个参与变换的点都经过不同的计算路径,这与GPU 要求对海量的输入数据执行相同的操作是相违背的,对于GPU来说,这种传统的算法都是不合适的。所以本文认为要在GPU上实现IDCT算法,最合适的还是采用类似矩阵相乘的算

法。

因为基于矩阵乘法的IDCT算法对于每个块中的每个数据来说会经历

相同的计算流程,这是相当符合GPU的工作特性的。

Y=K*F*K T就是采用矩阵相乘的IDCT变换公式

其中,K是变换核矩阵,F是输入数据,Y是输出数据。

3.2图像彩色空间变化在GPU上的实现

颜色空间变换的算法非常简单,只要按照下式进行计算即可。

R=Y+128+1.402Cr

G=Y+128-0.34414Cr-0.71414Cb

B=Y+128+1.772Cb

这种算法本身对于每个像素的计算都是独立的,因此很适合使用GPU来并行运算。最简单的方法就是利用GPU数据多通道的特性,依次把YCbCr放入同一个像素的不同通道来输入。这样不用做任何额外的纹理访问或纹理坐标变换操作,即可完成颜色空间变换的计算。

对于多视角立体视频解码来说,多个视点的图像彩色空间变化是相互独立的,可以并行处理。这里本文提出可以将多个视点解码得到的YUV图像拼接成一幅图像,

存入纹理后通过一次渲染运算得到所有视点的图像彩色空间变换结果。

由于GPU的并行运算特性,这种方法不但能够减少GPU和CPU的数据互交次数,而且也很大程度的提高了多视角视频图像彩色空间变换的整体效率。

3.3 本章小结

CPU单独解码效率较低,最多仅能支持6个视点1280X720P格式的高清视频实时解码。而基于本文提出的CPU和GPU混合解码技术,由于IDCT和彩色空间变换这些并行运算均有GPU完成,充分发掘了当前GPU的特点,CPU主要负责解码控制类型的运算,整体解码运算效率较高,可以实时解码8个视点的1280X720P格式的高清视频。

参考文献

[1] 羊飞帆,多视点视频编码方案及其差错控制技术的研究,科技传播,2012

[2] 周晓亮,基于感知的多视点彩色深度视频联合编码方案,宁波大学,2012

[3] 占涛,基于MPEG-2的多视点编码及对象分割技术研究,安徽工业大学,2011

[4] 袁振,多视点立体视频编解码算法的研究与应用,天津大学,2010

[5] 严恺,多视角立体视频编解码的关键技术研究,上海交通大学,2010

[6] 陈芳民,立体视频编解码及流式传输研究,北京邮电大学,2013

[7] 陈海棠,多视点视频编码和虚拟视点合成技术的研究,南京邮电大学,2010

[8] 陈晶晶,多视点立体视频解码算法的优化及应用,天津大学,2012

[9] 张程风,立体视频中视差估计研究,合肥工业大学,2010

[10] 朱政,信源解码系统设计与多视点视频编码方法研究,浙江大学,2010

[11] 俞钰琼,基于压缩感知的多视点视频处理技术,吉林大学,2014

[12] 吕晓杰,压缩感知及其在多视点视频编码中的应用,吉林大学,2013

[13] 杨洋,基于MVC的立体视频编码及播放系统的设计与实现,华中科技大学,2013

[14] 李海霞,多视点立体视频编码及同步研究。安徽工业大学,2012

[15] 孙笑一,自由视点视频编码技术研究,北京邮电大学,2015

相关主题
相关文档
最新文档