视频编码方法

文档序号:7581847阅读:184来源:国知局
专利名称:视频编码方法
技术领域
本发明总地来说涉及数据压缩领域,并且更加具体地讲,涉及一种对由图像元素(像素)组成的帧的序列进行编码的方法,所述序列被再分为连续的帧组(GOF),上述帧组自身被再分为包含先前帧A和当前帧B的连续的帧对(POF),所述方法执行三维(3D)子带分解,该三维子带分解包括在被视为3D体积的所述序列中对与各个GOF相应的空间-时间数据应用的滤波步骤,所述分解与在每个GOF中对所述POF A和B和对在每个时间分解层次上获得的相应低频时间子带对(POS)进行的运动估计和补偿步骤一起被应用于所述GOF,这一运动补偿时间滤波处理在每个先前帧A中一方面产生沿着与借助所述运动估计步骤定义的运动向量相对应的运动轨迹进行了滤波的相连像素,及另一方面会产生根本没有被滤波的剩余数量的所谓的不相连像素。
本发明还涉及一种嵌入在一计算机可用介质中的计算机可读程序码,用于在处理器执行所述程序时使计算机系统执行该编码方法。
近几年来,三维(3D)子带分析已经被越来越多地研究用于视频压缩。被视为3D体积的帧序列的3D或(2D+t)子波分解确实提供了一种自然的空间分辨率和帧速率可伸缩性。小波变换所产生的系数构成了一个锥状的层级结构,其中借助系数之间的亲子衍生从属关系的3D定向树定义了空间时间关系,并且所产生的系数在分级树内的深入扫描和渐进位平面编码技术给出了期望的质量可调整性。如

图1所述,这种方法的实际应用阶段是对八帧的帧组(GOF)使用简单的二抽头小波滤波器来产生运动补偿时间子频带。
在所示的实现方式中,输入视频序列被划分成多个帧组(GOF),且每个GOF先进行运动补偿(MC)后进行时间滤波(TF),其中每个GOF本身又被再分成连续的帧对(与用于所谓的运动补偿时间滤波,或MCTF模块的输入数量相同)。对产生的第一时间分解级的低频(L)时间子带进一步进行滤波(TF),并当只剩两个时间低频子带(根部时间子带)时停止该处理,其中每一个代表该GOF的第一个半组和第二个半组的时间近似值。在图1的例子中,用F1至F8表示所示组的帧,虚箭头对应高通时间滤波,而其它箭头对应低通时间滤波。该图示出了分解的两个阶段(L和H=第一阶段;LL和LH=第二阶段)。在所示8个帧的组的每个时间分解层次上,产生一组运动向量场(在本例中,是第一层次上的MV4,第二层次上的MV3)。
当将Haar多分辨率分析用于时间分解时,由于在每个时间分解层次上,在所考虑的帧组中的每两个帧之间产生了一个运动向量场,所以运动向量场的数目等于时间子带中帧的数目的一半,即在运动向量场的第一个层次上为4而在第二个层次上为2。仅对输入序列的每两个帧实施运动估计(ME)和运动补偿(MC),并且通常是用前向方式进行的。用这些非常简单的滤波器,每个低频时间子带(L)代表输入帧对的时间平均数,而高频时间子带(H)包含MCTF步骤之后的残留误差。
不幸的是,由于场景中运动的单一和物体的遮挡/露出,所以运动补偿时间滤波可能会出现根本没有被滤波的不相连图像元素(或像素)的问题(或者还会出现被滤波了两次的双重相连像素的问题)。将参照图2介绍一种尝试解决该问题的传统方案,该图示出了在每栏仅有一个像素的理论帧中实施对完整像素的运动补偿的情况下的不相连(和双重相连)像素(用黑点表示不相连像素,用圆圈表示双重相连像素,而其它的相连像素用被圆圈圈起来的黑点表示)。
对每个连续的帧对(当前帧B与对应的先前帧A关联)来说,通过滤波和抽选来产生包含时间低层子带L和时间高层子带H的一对子带。如示出了块的边界BB的图2所述,a0至a6是先前帧A的像素,b0至b6是当前帧B的像素,l0至l6是时间子带L的低通系数的值,及h0至h6是时间子带H的高通系数的值。沿着通过块匹配方法定义的运动轨迹对相连像素(如a2)进行滤波。
根据所述传统解决方案,对于先前帧A中的一个不相连像素(如图2中的a3或a4),将初始值插入到时间低层子带中。对于先前帧A中的双重相连像素(如图2中的a0),对当前帧B选取的像素进行任意选择,只要解码器应用相同的选择在图2中,选择了h2,而不是h1,以便计算l0(如S.J.Choi和J.W.Woods于1999年2月,在IEEETransactions on Image Processing杂志的第2期第8卷的第155页至167页的文件《视频的运动补偿3D子带编码(Motion-compensated 3Dsubband coding of video)》中,提出了从上至下和从左至右地扫描当前帧,并且为低通系数的计算考虑指向它的当前帧中的第一个像素)。
在半像素运动补偿的情况下,对所有整数向量的管理是一样的。对半像素向量来说,截断指向先前帧A中半像素位置的运动向量,使其指向所述先前帧中的整数像素,如图3所述,其中半像素位置用叉表示,并用弧形箭头示出了对像素b2的截断机制,在这种情况下,向量被朝向图象的顶部截断(这种截断机制必须与解码器中的完全相同,从而保证正确的重建)。
在所有情况下,不相连像素的数目表现出3D子带编码/解码方法的缺陷,因为它严重地影响到了图象的质量,尤其是剧烈运动的序列或最后的时间分解层次(对于它们来说,时间相关性不太好)。
因此本发明的一个目的是避免上述缺陷,并提供一种因为减少了不相连像素的数目而提高了编码效率的视频编码方法。
最后,本发明涉及一种如说明书的前言部分中所定义的编码方法,其中,所述运动估计步骤包括,考虑可行的半像素运动补偿和根据其的截断机制,其中当运动向量由当前帧B指向对应的先前帧A中的子像素位置时,所述运动向量被截断以指向所述先前帧中的完整像素,所述截断机制依赖于所述子像素位置的邻接情况。
接下来将结合附图,通过实施例来描述本发明,其中图1示出了一个具有运动补偿的两阶段时间多分辨率分析;图2阐述了对完整像素进行运动补偿时的不相连(和双重相连)像素的问题;图3阐述了半像素运动向量时向量截断的原理;图4阐述了本发明的原理,基于其半像素位置优选地是与之前不相连的先前帧中对应像素的位置关联的。
图5阐述了半像素位置的潜在关系的三种不同类型;图6给出了四分之一像素位置的潜在关系的五个例子;图7给出了当存在一个大于最近的完整像素之间的距离的距离时,图6的四分之一像素位置的潜在关系的扩充实施例。
本发明的目的是减少不相连像素的数目,从而提高3D子带方法的编码效率。为此,本发明的原理是,根据所研究的像素的相邻情况,从现在开始,将如图3所示的“惯常的”向量截断机制修改为将半像素位置与完整像素位置关联起来。例如,在图3中,通过向帧顶部的向量截断(见图3中的弯箭头),把位于a0和a1之间的作为当前帧B中像素b2的参考位置的半像素位置与整数位置a1关联起来,然而像素a0仍然是不相连的。在这种特殊情况下,于是按照本发明,提出了把半像素位置与a0关联起来以代替a1,这样使不相连像素的数目减一。图4中图解说明了这种技术方案,其中,由于像素a1已相连,所以弧形箭头表示把半像素位置与位置a0关联了起来,然而像素a0仍然是不相连的。
为了保证正确重建,为半像素运动向量这样提出的向量关联机制必须与解码器端一致。由于在编码和解码两端能够以对称方式使用的仅有的共同信息是运动向量场(因为它是唯一完全发送的信息),因此在编码端提出的方案将与可以映射到解码端的向量关系协议相关联。
如图5中所示,可以注意到,在先前帧A中,在垂直方向(V)上(图3中所示的背景技术情形下的情况或者附图4中所示的按照本发明的情形下的情况)、水平方向(H)、或两个方向(HV)上所标出的每个非整数像素的位置可以是半像素位置。需要注意的是,在V和H情况下,对于与较近的整数位置相关联而言,只有两个自然位置,由双圆圈表示,而在HV的情况下,有四个可能的相邻位置。对于所有这些半像素位置而言,向量关联必须要在对已经与参考整数位置自然相关的整数向量加以考虑的前提下尽力使不相连像素的数量最小例如如下所述。在下面的算法的指令中给出了实现这种向量关联手法的可行实例<pre listing-type="program-listing"><![CDATA[  for each pixel(i,j)in previous frame   {   status(i,j)=unconnected;   }  for each pixel(k,l)in the current frme with an integer vector(vk,vl)   {  if sta tus(k-vk,1-vl)=unconnected   {status(k-vk,1-vl)=connected;  associa ted(k-vk,1-vl)=(k,l)  }  }  for each pixel(k,l)in the current frame with a V half-pixel vector(vk,vl)  {  if status(k-vk,1-vl-0.5)=unconnected   {  status(k-vk,1-vl-0.5)=connected;  associated(k-vk,1-vl-0.5)=(k,1-0.5)   }  else if status(k-vk,1-vl+0.5)=unconnected  {  status(k-vk,1-vl+0.5)=connected;  associated(k-vk,1-vl+0.5)=(k,1+0.5)  }   }  for each pixel(k,l)in the current frame woth a H half-pixel vector(vk,vl)   {   if sta tus(k-vk-0.5,1-vl)=unconnected   {  status(k-vk-0.5,1-vl)=connected;  associated(k-vk-0.5,1-vl)=(k-0.5,1)  }  else if status(k-vk+0.5,1-vl)=unconnected   {  status(k-vk+0.5,1-vl)=connected;  associated(k-vk+0.5,1-vl)=(k+0.5,1)  }  }for each pixel(k,l)in the current frame with a HV half-pixel vec tor(vk,vl)  {  if sta tus(k-vk-0.5,1-vl-0.5)=unconnected   {  sta tus(k-vk-0.5,1-vl-0.5)=connected;  associa ted(k-vk-0.5,1-vl-0.5)=(k-0.5,1-0.5)  }  else if sta tus(k-vk-0.5,1-vl+0.5)=unconnected   {  sta tus(k-vk-0.5,1-vl+0.5)=connected;  associated(k-vk-0.5,1-vl+0.5)=(k-0.5,1+0.5)  }  else if sta tus(k-vk+0.5,1-vl-0.5)=unconnected   {  sta tus(k-vk+0.5,1-vl-0.5)=connected;  associa ted(k-vk+0.5,1-vl-0.5)=(k+0.5,1-0.5)  }  else if sta tus(k-vk+0.5,1-vl+0.5)=unconnected   {  sta tus(k-vk+0.5,1-vl+0.5)=connected;  associated(k-vk+0.5,1-vl+0.5)=(k+0.5,1+0.5)  }  }]]></pre>借助“status(i,j)”并且只要对当前帧一进行处理(更加准确地说,对当前帧的每个像素),这种算法就能够将参考帧的像素状态存储在表中。所述表“status(i,j)”在处理开始时被初始为“不相连”,并以与扫描顺序相同的顺序处理当前帧的每个像素。只要参考帧中不相连的像素一变成“相连”,那么就修改“status(i,j)”并使其变为“相连”。因此,在任何时候,都可以借助该表得知所述状态。
有很重要的一点要注意,上面给出的公开内容仅仅是说明性的,且本发明不局限于上述的实现方式。尽管主要是在半像素运动补偿的环境中对本发明加以介绍,但是它还能很好地应用于采用与半像素精度不同的子像素精度进行的运动补偿。对于四分之一像素位置的可能关联例如已在图6中进行了阐述(其中,单个圆圈对应整数像素位置,叉对应四分之一像素位置,及双圆圈对应自然关联的整数位置)。该关联还可以被扩充至具有比到最近的整数像素之间的距离更长的距离的整数像素,如图7所述(其中用被方框框起来的圆圈表示这些距离较长的整数像素位置)在第二次选择时,如果更接近的整数像素已经是相连的了,那么向量关联机制选择这些间隔的整数位置。
权利要求
1.一种对由图像元素(像素)组成的帧序列进行编码的方法,所述序列被再分为连续的帧组(GOF),上述帧组自身被再分为包含先前帧A和当前帧B的连续的帧对(POF),所述方法执行三维(3D)子带分解,该三维子带分解包括在被视为3D体积的所述序列中对与各个GOF相应的空间-时间数据应用的滤波步骤,所述分解与在每个GOF中对所述POF A和B和对在每个时间分解层次上获得的相应低频时间子带对(POS)进行的运动估计和补偿步骤一起被应用于所述GOF,这一运动补偿时间滤波处理在每个先前帧A中一方面产生沿着与借助所述运动估计步骤定义的运动向量相对应的运动轨迹进行了滤波的相连像素,及另一方面会产生根本没有被滤波的剩余数量的所谓的不相连像素,所述运动估计步骤包括,考虑可行的半像素运动补偿,根据其的截断机制,当运动向量由当前帧B指向对应的先前帧A中的子像素位置时,将所述运动向量截断成指向所述先前帧中的整数像素,所述向量截断机制取决于所述子像素位置的邻接情况。
2.如权利要求1所述的编码方法,其中,所述向量截断机制是借助依据紧邻的整数像素是相连还是不相连的事实对对每个先前帧A的顶部或对所述帧的底部进行向量截断操作来实现的,以便在所述关联之前将涉及的子像素位置与仍未相连的整数像素关联起来。
3.如权利要求2所述的编码方法,其中对位于帧对或子带内被指向且在垂直方向、水平方向或垂直和水平两个方向上为半像素位置的所有位置执行所述向量截断方法,在所述关联前,借助与紧邻的仍未相连的整数像素的自然关联来完成向量截断操作。
4.如权利要求2所述的编码方法,其中对位于帧对或子带内被指向且在垂直方向、水平方向或任意一个截断方向上为四分之一像素位置的所有位置执行所述向量截断方法,在所述关联前,借助与紧邻的仍未相连的整数像素的自然关联来完成向量截断操作。
5.如权利要求2所述的编码方法,其中对位于帧对或子带内被指向且在垂直方向、水平方向或任意一个截断方向上为四分之一像素位置的所有位置执行所述向量截断方法,如果紧邻的整数像素是相连的,那么借助与一个具有比到最近的整数像素的距离更长的距离的不相连的整数像素的关联来完成向量截断操作。
6.一种嵌入在计算机可用介质中的计算机可读程序代码,用于促使计算机系统执行权利要求1至5中任何一项所述的编码方法,此时借助处理器来实现所述程序。
7.一种编码设备,包括一个含有权利要求6中所述的计算机可读程序代码的处理器。
全文摘要
本发明涉及一种编码帧序列的方法,将三维子带分解和运动估计和补偿步骤一起应用于连续的帧组中。由于这些步骤会产生一些严重影响图象最终质量的不相连的像素,所以提出了本发明以减少不相连像素的数目,其中当运动向量由当前帧B指向先前参考帧A中的子像素位置时,截断所述运动向量,使其指向位于所述位置的相邻范围内的所述先前帧的整数像素并且取决于它。
文档编号H04N7/26GK1717937SQ200380104260
公开日2006年1月4日 申请日期2003年11月20日 优先权日2002年11月27日
发明者E·巴劳 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1