视频压缩/解压缩系统的制作方法

文档序号:7738101阅读:176来源:国知局
专利名称:视频压缩/解压缩系统的制作方法
技术领域
本发明涉及视频压缩/解压缩系统,并且具体涉及多功能处理器中的数字视频系统的压缩/解压缩中滤波过程的实现。
背景技术
运动画面的实时传输被用于若干应用,如视频会议、网络会议、TV广播和视频电话。然而,由于通常用8个比特(1字节)表示画面中的每个像素来描述数字视频,所以表示运动画面需要大量的信息。这样的未压缩的视频数据导致大比特量,并且由于有限的带宽而导致不能通过传统的通信网络和传输线来实时传送。因此,为了能够进行实时视频传输,需要很大程度的数据压缩。然而,数据压缩可能会损害画面质量。因此,做了很多努力来开发压缩技术,以使得通过有限带宽数据连接的高质量视频的实时传输。在视频压缩系统中,主要目标是以尽可能少的容量表示视频信息。容量用比特来定义为常数值或者定义为比特/时间单位。在这两种情况下,主要目标是减少比特的数目。最常用的视频编码方法描述在MPEG*和H. 26*标准中,它们都使用根据先前编码和解码的画面的基于块的预测。视频数据在传输之前经历四个主要过程,即预测、变换、量化和熵编码。预测过程显著地减少被传送视频序列中的每个画面所需要的比特的数量。它利用了序列的部分与序列的其他部分的相似性。因为预测器部分对于编码器和解码器两者是已知的,所以仅需要传送差异。该差异的表示通常需要更少的容量。预测主要基于来自先前重构画面的画面内容,其中内容的位置由运动向量来定义。在典型的视频序列中,当前块M的内容会与先前解码画面中的对应块类似。如果自该先前解码的画面以后没有发生改变,则M的内容可能等同于该先前解码的画面中的相同位置的块。在其他情况下,画面中的对象可能已经被移动,使得M的内容更加等同于该先前解码的画面中的不同位置的块。这样的运动通过运动向量(V)来表示。例如,运动向量 (3 ;4)是指自该先前解码的图像以来,M的内容向左移动了 3个像素并且向上移动了 4个像
ο通过执行运动搜索来确定与块相关联的运动向量。通过将该块的内容与不同空间偏移的先前画面中的块连续比较来执行这种搜索。与当前块相比具有最佳匹配的比较块同该当前块相关联,把与之相关的偏移量确定为关联运动向量。在最近的视频编码标准中,同样的概念被扩展,使得运动向量还可以具有1/2像素值。向量分量5. 5因此表示该运动在5个像素和6个像素中间。更具体地,通过取得表示运动的像素5和表示运动的像素6之间的平均值来获得预测。由于在两个像素上操作以获得两个像素之间的像素的预测而称其为2抽头滤波器。这种类型的运动向量通常被称作具有分数像素分辨率或分数运动向量。所有的滤波操作可以通过脉冲响应来定义。平均2个像素的操作可以用脉冲响应(1/2,1/ 来表达。类似地,平均4个像素是指脉冲响应(1/4, 1/4,1/4,1/4)。在H. 264/AVC中,编码方法已经在运动分辨率和用于每个内插的像素数目两个方面上都有改善。这些方法使用具有高达1/4甚至1/8像素精确度的运动补偿预测。以下给出了整数像素位置和分数像素位置的示例(为简单起见,内插仅在A、E、U和Y之间被示出)A” E, AbcdE A, E”fgh ijk1m ηορqr stUνw χYΑ、Ε、U、Y的位置指示整数像素位置,并且Α”、Ε’、Α’和Ε”指示A-E线上的另外整数位置。c、k、m、0、w指示半像素位置。可以通过例如使用具有在整数像素值上操作的脉冲响应(1/32,-5/32,20/32,20/32,-5/32,1/32)的6抽头滤波器来获取这些位置的内插值。 例如,这样c通过下面的表达式来计算c = 1/32 · Α”-5/32 · Ε,+20/32 · Α+20/32 · Ε-5/32 · A,+1/32 · Ε”水平地或垂直地适当操作这种滤波器。当视频帧被编码为H. 264/AVC比特流时,在编码未来的帧时,最后步骤之一通常是为准备上述运动搜索而进行的半像素内插滤波。该步骤是编码过程中计算量需求最大的任务之一,并且涉及对整个帧进行滤波。随着画面分辨率的增加,尤其是如果在通用处理器上,例如个人计算机上,实现编码过程,这需要相当大量的处理器能力,甚至引入过多的延迟。


为了使本发明易于理解,以下的讨论将参考附图,其中图1是图示本发明的一个示例性实施例的流程图。

发明内容
包括在独立权利要求中所定义的特征表征本发明的方法。具体地,本发明公开了一种计算机设备中视频编码或解码过程中的方法,该方法通过预先定义的滤波操作来计算位于视频画面帧中的整数像素位置之间的内插像素位置的像素值,其中,整数像素位置的像素值被存储在计算机设备的存储器中,其中,该方法包括以下步骤确定视频画面适用于若干预定义的分辨率格式中的哪一个;对与所确定的分辨率格式相对应的帧,定义固定宽度(W)和固定高度值(H);加载与所述多个整数像素位置的像素值相对应的该计算机设备的存储器的存储器地址第一集合,其中,存储器地址的第一集合是根据固定宽度(W)和固定高度值(H)计算的或是参照所述固定宽度值(W)和所述固定高度值(H)的;以及通过使用存储器地址的第一集合中的一个或多个存储器地址从存储器连续加载多个整数像素位置的像素值,对多个整数像素位置的像素值执行滤波操作以计算多个内插像素位置的像素值。
具体实施例方式以下将通过描述示例性实施例来讨论本发明。然而,本领域技术人员将认识到在所包括的独立权利要求中定义了本发明的范围内的其他的应用和修改。当视频帧被编码为H. 264/AVC比特流时,最后两个步骤通常是去块化滤波和半像素内插滤波。这两个步骤合起来是编码过程中计算量需求最大的任务之一,并且涉及对整个帧进行滤波。在高级软件代码中,大致按下述来实现半像素内插滤波DO 1 = 1,HD0J=1,WX(I,J) =F(Y(I, J))ENDDOENDDO这里,H表示帧的高度,W表示帧的宽度,Y表示未滤波的像素,X表示滤波的像素, 并且F表示包含了在背景技术部分中描述的滤波器抽头系数的滤波函数。如根据该软件代码可解释的,循环将从左至右开始计算帧的上线中的1/2像素,并且然后对其他线连续地向下进行。对要计算的每个内插像素值,存储在存储器中的一组对应像素与各滤波器抽头系数相乘。必须从存储器中读取这些像素,因此必须知道存储器地址。上述的函数适用于处理所有类型的图像分辨率,因此H和W是未知的。这样,要得到独立于分辨率的实现(即,适合于所有类型的分辨率),就必须对每个1/2像素计算导出滤波操作中使用的像素值的存储器地址。当分辨率从 VGA (640x440)增加到 720P (1280x720)和全孔径 4K (4096x3112)时, 在使用上述循环时,关键的存储器计算成本急剧增加。例如,全孔径4K涉及12,746,752个像素的滤波,因此,必须要特别注意以处理比现代处理器的高速缓存更大的数据规模。所有已知的算法都是使用个单个函数来对像素做滤波,并且如已经指出的,这意味着以上给出的H和W二者都是未知的,并且要即时计算存储器的用于加载和存储的地址。 它们在编译时是未知的,而且需要很多额外的存储器地址的计算。在每个加载和存储之前的地址计算会使得处理器流水线拖延,这可能扰乱硬件预取,并且甚至干扰指令布局和指令缓存行为,并且造成执行端口和/或执行单元的冲突。因此,即使缓存发生作用,很多细节也可能出错,如预取问题,而这可能是造成如全孔径4K这样的大数据集的大多数故障的原因。利用伪代码,根据上述的现有技术的高级软件代码可以如下更详细地描述,DO 1 = 1,HD0J=1,W加载Y的存储器地址加载 YX(I,J) =F(Y(I, J))加载X的存储器地址存储 XENDDO
ENDDO注意,X和Y可以表示向量,并且因此加载和存储所需要的像素时,要求很多额外的地址计算。例如,从存储器一次加载16个像素,并且然后根据加载的16像素来进行所有内插像素的并行计算并非罕见。本发明提供了一种显著减少存储器加载/存储数目和地址计算的方法。为了在循环体内实现已知的存储器行为,对每种分辨率实现一个滤波器。在滤波之前,确定视频内容适用于哪种格式。根据本发明的实现如下所示,例如已经确定了具有每行640像素(帧宽) 和480行(帧高)的VGA分辨率,加载X的存储器地址加载Y的存储器地址DO I = 1,480DO J = 1,640加载 YX(I,J) =F(Y(I, J))存储 XENDDOENDDO可以看出,在滤波函数之前计算存储器地址,因此避免了对每个循环步骤的地址计算。因为分辨率是已知的,所以所有存储器加载和存储仅由循环内的像素标号I和J 来直接给定,并且可以完全避免在即时计算存储器地址时所涉及的所有缺点。然而,这需要针对每种分辨率实现独立的滤波,但由于仅支持有限数目的分辨率,所以与被滤波的帧的大小相比,可执行文件增加的大小可以被忽略不计。因此,根据本发明,针对当前的分辨率,特别地定制例如根据H. 264的像素滤波以计算内插像素值。本发明提供了公知存储器规模的滤波。对于给定的分辨率,帧中每个像素的确切存储器位置在编译时是已知的,并且不需要即时计算。因此,加载和存储变得非常高效。本发明还提供了指令的有效调度。当在编译时已知正在使用的数据位置时,编译器很容易按最有效的顺序来调度代码。这将特别促进不能对可执行文件中的指令即时重新排序的顺序执行机,但它还可以导致非序执行处理器的显著加速,因可以找到能同时运行的更多的独立指令。对照现有技术,这些滤波器的所有其他实现都使用相同的源代码来覆盖所有的分辨率。这不同于本发明的方法,此处源代码适用于每种分辨率,因此通过已知的存储器规模和有效的指令调度实现了固定循环计算的所有益处。
权利要求
1.一种计算机设备中视频编码或解码过程中的方法,所述方法用于通过预先定义的滤波操作来计算位于视频画面帧中的整数像素位置之间的内插像素位置的像素值,其中,所述整数像素位置的像素值被存储在计算机设备的存储器中,所述方法的特征在于下述步骤确定该视频画面适用于若干预定义的分辨率格式中的哪一个;对与所确定的分辨率格式相对应的帧,定义固定宽度值(W)和固定高度值(H);加载与所述多个整数像素位置的像素值相对应的该计算机设备的存储器的存储器地址第一集合,其中,所述存储器地址第一集合是根据所述固定宽度值(W)和所述固定高度值(H)而计算的或是参照所述固定宽度值(W)和所述固定高度值(H)的;通过使用来自所述存储器地址第一集合的一个或多个存储器地址从所述存储器连续加载所述多个整数像素位置的像素值,对所述多个整数像素位置的像素值执行滤波操作以计算多个内插像素位置的像素值。
2.根据权利要求1所述的方法,其特征在于加载与所述多个内插像素位置的像素值相对应的该计算机设备的存储器的存储器地址第二集合,其中,所述存储器地址第二集合是根据所述固定宽度值(W)和所述固定高度值(H)而计算的或是参照所述固定宽度值(W)和所述固定高度值(H)的;通过使用所述存储器地址第二集合中的一个或多个存储器地址来把所述多个内插像素位置的像素值连续存储到存储器中。
3.根据权利要求1或2所述的方法,其特征在于执行所述滤波操作的步骤还包括根据要计算的所述内插像素位置的相应像素值,使滤波器抽头系数乘以整数像素位置的相应加载的像素值。
4.根据权利要求1、2或3所述的方法,其特征在于所述预定义的滤波操作对应于具有滤波系数(1/32,-5/32,20/32,20/32,-5/32,1/32) 的6抽头滤波器,并且所述内插像素位置是1/2像素位置。
5.根据前述权利要求之一所述的方法,其特征在于所述若干预定义的分辨率格式是 SQCIF、QCIF、CIF、SIF、WCIF、25CIF、VGA、4CIF、4SIF、 SVGA、W4CIF、XGA、720P、1080P、Quadl080P 和全孔径 4K。
6.根据编码标准H.264/AVC在像素运动补偿中对前述权利要求之一的方法的使用。
全文摘要
本发明涉及多功能处理器中的数字视频系统的压缩/解压缩中滤波过程的实现。提供了一种显著减少存储器加载/存储次数和地址计算的方法。为了在循环内实现已知存储器行为,对每种分辨率实现一种滤波。在滤波之前,确定视频内容适用于哪一种格式,并且在运行循环之前知道每个帧的宽度和高度以及要滤波的像素值的存储器地址。对给定的分辨率,帧中每个像素的确切存储器位置在编译时是已知的,并且不需要即时(即在滤波函数的每次循环中)计算。因此,加载和存储变得非常有效。这将特别地促进不能对可执行文件的指令即时重新排序的按序执行机,还可以导致非序执行处理器的显著加速,因可找到能够同时运行的更多独立指令。
文档编号H04N5/14GK102257530SQ200980151652
公开日2011年11月23日 申请日期2009年12月17日 优先权日2008年12月19日
发明者拉斯·皮特·恩勒森 申请人:坦德伯格电信公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1