专利名称:视频编码方法及相应的编码装置的制作方法
技术领域:
本发明涉及的是一种视频编码方法用于一个划分成宏块的视频帧序列,而这些宏块本身又划分为许多块,针对序列的每一帧,该方法包括下列的步骤(A)在第一次编码传送中利用一个固定的量化步长对该帧进行编码,来产生第一个输出位流和与该帧的每个宏块相关的统计数字;(B)根据上述统计数字,在第二次编码传送中采用一个可变的量化步长再次对该帧进行编码,利用一个相对于第一个输出位流的修正的位数,来产生该帧的每个宏块的第二个输出位流。
本发明还涉及一个相应的编码装置。
例如在1996年3月的S.R.Ely的BBC-RD报告文件“MPEG视频编码基本教学指南”(“MPEG video codinga basic tutorialintroduction”)中描述的目前在数字电视领域广泛使用的MPEG-2标准,已经通过卫星和电缆被用于广播装置中,并有望很快用于数字地面广播中。一个适用MPEG-2标准的视频编码器产生一个MPEG-2顺应位流,即一个具有六层语法的位流序列、图像组(或GOP)、图像(或帧)、片、宏块和块(每个帧被划分成宏块,每个宏块包含四个亮度块和两个色度块,每个块包括8×8像素)。
这样的一个编码器区别三种类型的帧I、P或B,每个GOP为一组帧,由一个I帧开始,并包括给定数量的P和B帧。在一个I帧的每个宏块中,每个8×8块经历一个离散余弦变换(DCT),所得的变换系数被量化(为每个宏块选择一个量化的比例因子),对所产生的量化DCT系数进行扫描并利用一个可变长度的代码(VLC)对其进行编码。在一个P帧中,为了将每个宏块编码为一个I型(如上所述)或一个P型,采用了一个判断,即借助于一个由一个位移矢量来识别的单向预测。对于每个宏块,该位移矢量指出在上一帧中进行的预测和该宏块本身(当前帧中)之间的平移,如上所述,对于一个I帧中的每个宏块,仅有它们之间的误差被编码(并用一个相关的位移矢量来发送)。在一个B帧中,在上述的两个编码技术之间(一个I宏块或一个P宏块的编码,单向预测编码是基于如上所述的前一个帧或后一个帧)和一个双向预测编码之间也进行一个判断,由此进行一个类似的误差编码,但仅当通过插入一个向后位移补偿预测和一个向前位移补偿预测来获得一个位移补偿预测之后才进行判断。
在利用视频编码器进行编码之后(根据帧类型利用一个各自的压缩度在编码时,B帧产生最小的位数,然后是P帧,I帧),所获得的位流被存储在一个编码输出缓冲器中并发射,最后被存储在一个存储介质中或立即由一个解码器的缓冲器接收并解码。在编码的位流中,可以通过控制用于每个宏块的量化器(quantizer)步长,来修正每个I、P、B帧的编码过程产生的位数,采用一个较大的量化器步长时,这种自适应的量化产生的位数要比采用较小的量化器步长时的位数少。
已经提出,为了在这样一种编码器的输出满足一个所要求的约束,要按照这样一个方式来实现编码方法,使得只有在至少两次编码传送之后才能获得输出的编码位流。例如,在国际专利申请WO99/07158(PHF 98524)中,在第一次传送中利用一个不变的量化器步长来编码帧序列,因此所产生的位流没有必须满足所要求的约束,但是该第一次传送允许获得该处理过的帧的统计数字(例如,位移矢量,帧的复杂度等等)。在该分析步骤之后,进行处理该统计数字的第二次传送,来至少对量化器步长进行修正,并因此实现有关帧的每个宏块的位的更协调分布。
通过将用于编码每个帧的位数进行不同地分配(同时保证不超过最大的信道速率,以避免解码器一侧的缓冲问题),获得一个可变的比特率,在前面描述的应用中,MPEG-2标准允许在可以播送一个节目的比特率中具有一个很大的灵活性。但是,比特率越低,就会出现越多的压缩人工产物(artifact)。这些人工产物可能是空间的(分块、响铃、角显露)或时间的(蚊式噪声),对于观众来讲是很讨厌的。
因此,本发明的第一个目的是提出一种解码方法,由此减少由于上述人工产物所造成的可感知的干扰。
为此目的,本发明涉及一种如在本说明的前言部分所定义的视频编码方法,此外,其特征在于它在第一次和第二次传递之间,还包括下列步骤(a)解码所述第一个输出位流,来产生一个解码的输出位流;(b)在该解码的位流中,检测分块的人工产物,来建立一个在所有宏块的内部块边界处发生的阻断效应的映像;(c)依照该映像修正统计数字,据此进行第二次编码传送。
在实现该编码方法的一个有利的实施方案中,所述人工产物检测步骤包括下列的子步骤-如果在每个宏块的四个内部块边界中的每一边界上没有发现阻断效应,则将该边界与一个第一值相关联,否则,在相反的情况下与一个第二值相关联;-为每一个宏块定义一个全局值G,作为上述四个值的补充;-为整个帧建立与处理过的帧的宏块相关联的所有全局值的映像;-对于每个宏块,根据一个由相应的全局值决定的比例系数来修正上述统计数字。
更具体地讲,该第一编码传送可以用来产生一个第一输出位流和与处理过的帧的每个原始宏块的相关复杂度,然后利用该修正子步骤将该宏块的复杂度乘以一个比例系数,该比例系数与相关的宏块对应的全局值成线性关系。
根据该编码方法的一个改进方法,在重新编码之前,它可以包括如下的附加步骤(a)根据下面的表达式计算一个归一化因数F(norm)=X(in)/X(out)其中X(in)和X(out)分别为根据上述的映像进行修正前后的统计值的总和;(b)在修正后将每个统计值乘以该归一化因数。
本发明的另一个目的是提出实现对应于上述的依照本发明的编码方法的编码装置。
下面将参考附图,对本发明进行进一步的描述,附图中
图1示出了一个具有两次编码传送的常规编码方案;图2说明了一个对该依照本发明的编码方案的修正;图3示出了一个宏块的内部边界;图4说明了依照本发明的编码方法的另一个实施方案;图5示出了一个实现图4中的方法的例子。
如图1所示,概要介绍了一个如前面提到的专利文件WO 99/07158中所描述的编码方案。每个连续的帧FRA是在第一传送FP中在一个编码器中处理的,其间量化器步长Q为恒定的。在该第一次传送结束时,可以得到某些信息(图1中由STAT1表示)被处理宏块的复杂度、与每个宏块相关的位移矢量等等。根据这些信息,进行第二次传送SP1,产生一个输出位流OB,其间针对该帧的每个宏块修正量化器的步长,以便在OB中修正对应于每个宏块的位分配。
根据本发明,可以按图2中所示对上述编码方案进行修正,以便减少人工产物的数量。在第一次传送FP的结束时得到的输出位流OB1被解码,解码的位流被发送给一个下文中描述的阻断效应检测器DET。该检测器产生一个阻断的人工产物映像BAM,该映像被存储起来,并用来修正统计数字(本发明的情况中为复杂度),在图2中表示为STAT2。然后进行第二次传送,在其输出可以得到一个输出位流OB2,但是现在为每个宏块采用了一个不同的量化器步长(对于图1中的第二次传送SP1),结果是减少了最初观察到的人工产物。
由检测器DET实现的阻断效应的检测操作执行如下。如前所述,一个宏块包含四个块。除了宏块间的阻断效应之外,认为阻断效应出现在任何宏块的内部,在四个块内边界中的任意一个边界处(图3中用A、B、C、D表示)。值V(A)、V(B)、V(C)、V(D)与上述每个边界相关联如果没有阻断效应,该值为“0”,否则为“1”。然后,对于每个宏块,定义一个全局值G=V(A)+V(B)+V(C)+V(D),构成一个存储每个宏块的G值的阻断因素映射。对于每个宏块,可以得到一个借助于第一次传送处理所获得的第一传送复杂度。例如,在美国专利US 5680483(PHF94510)中定义了一幅图像或一幅图像的一部分的复杂度,多个文件中,如美国专利US 5929914(PHF95584),描述了一种方案,来估计一个复杂度并表明这样一个复杂度和一个编码器比特率控制之间的联系。然后,将该复杂度X1乘以一个取决于全局值G的值,产生一个修正的复杂度X2=X1×C(G),其中C是一个由G决定的系数,例如,根据下面的关系表来决定
但是,当将这样一种方法用于非常斑驳的图像时,整个图像的复杂度乘以同样的因数。那么,就失去了图像水平的调节,图像的复杂度权重比GOP中的高,干扰了GOP水平的调节。
然后,如图4中所示(图4说明了图2中虚线表示部分的修正),通过在编码器中提供一个对一种输出复杂度进行归一化的附加步长,对图2中的编码方案进行改进。该附加步长包括下面两个操作。首先,根据下面的表达式F(norm)=X(in)/X(out)计算一个归一化因数,其中对于相关帧的所有宏块而言,X(in)为STAT2接收到的对于相关帧的所有宏块而言的Xin值的总和,X(out)为在STAT2的输出中得到的Xout值的总和。第二,利用一个在STAT2和SP2之间设置的一个乘法器(MUL)将STAT2输出值Xout乘以F(norm)。
如图4所示,本发明的另一个实施方案可以包括下列修正在要编码的输入帧为I或P型时,将归一化系数设置为1,这允许在GOP调节中使这样的帧过加权。对于该实施方案,提供了一个附加的判断步骤,在图4中用虚线显示,表示为DES。
这样,可以在图5中的视频编码装置中实现所描述的编码方法,其中每个块对应一个在控制器55管理下完成的特定功能。所说明的编码装置依次包括一个接收图像帧序列的输入缓冲器51、一个减法器549、一个离散余弦变换(DCT)电路521、一个量化电路522、一个可变长度的编码电路523、一个输出缓冲器524、一个允许修改电路522中的量化步长的比特率调节电路525。电路521-525构成了编码分支52的主要部件,与之相关联的有包含一个反量化电路531的预测分支53、一个反DCT电路532和一个预测子系统。该预测子系统本身包含一个加法器541、一个缓冲器542和一个在第二输入处接收位移估计电路543的输出的位移补偿电路544(该估算是基于对在缓冲器51的输出获得的输入信号的分析)。位移补偿电路544的输出信号被送回到加法器541的第二输入,并传送到减法器549(该减法器还接收缓冲器51的输出信号,用于发送该输出信号与电路544发往编码分支的输出信号之间的差值)。在第一次传送FP之后,将所说明的编码装置的输出发往阻断效应解码级,其输出被发往阻断效应检测器DET。然后,在执行第二次传送SP2之前,利用由检测器DET产生的阻断人工产物映像BAM来修正统计数字。而后,借助于计算F(norm)的电路F和乘法器MUL来实现附加的归一化步骤。
上面,对本发明的优选实施方案进行了说明和描述。这些说明和描述不是本发明的全部或者将本发明限制于所介绍的精确形式,对于一个本领域的熟练人员来讲,显然可以根据上述的技术,在本发明的范围之内对本发明进行修正和更改。例如,可以用硬件、软件或一个硬件和软件的组合来实现这里所描述的装置,但不排除可以用一个单一硬件或软件来实现几个功能,或着可以用一个硬件组合或软件组合,或硬件和软件的组合来实现一个单一的功能。所描述的方法和装置可以利用任何类型的计算机系统或其他适用于执行这里所描述的方法的设备来实现。一个典型的硬件和软件的组合可以是一个具有一个程序的通用计算机系统,当该程序被装载并执行时,它控制该计算机系统,使其执行这里所描述的方法。
或者,可以采用一个特殊用途的计算机,该计算机包含用来执行本发明的一个或多个操作任务的专用硬件。本发明也可以包含在一个计算机程序产品中,该产品包含能够实现所描述的方法和功能的所有特征,并且当被装入到计算机系统时,能够执行这些方法和功能。在本说明的上下文中,计算机程序、软件程序、程序、程序产品和软件意指任何语言、代码或表示法中的一套指令表达式,用来使一个系统具有一个信息处理能力,直接地或者在(a)转换到另一种语言、代码或表示法;和/或(b)以一种不同的材料形式再现之后,执行一个特定的功能。
权利要求
1.一种视频编码方法,用于一个划分为宏块的视频的帧序列,而宏块本身又被划分为块,针对所述序列的每一帧,该方法包括下列步骤(A)在第一次编码传送中利用一个固定的量化步长对该帧进行编码,来产生第一个输出位流和与该帧的每个宏块相关的统计数字;(B)根据上述统计数字,在第二次编码传送中采用一个可变的量化步长再次对该帧进行编码,利用一个相对第一个输出位流的修正的位数,来产生该帧的每个宏块的第二个输出位流。该方法的进一步的特征是,在第一次和第二次传递之间,它还包括下列步骤(a)解码所述第一个输出位流,来产生一个解码的输出位流;(b)在该解码的位流中,检测阻断人工产物,来建立一个在所有宏块的块内边界处发生的阻断效应的映像;(c)依照该映像来修正统计数字,据此进行第二次编码传送。
2.依照权利要求1的编码方法,其中所述人工产物检测步骤包括下列子步骤-如果在每个宏块的四个块内边界的每一边界上都没有发现阻断效应,则将该边界与一个第一值相关联,否则,在相反的情况下与一个第二值相关联;-为每一个宏块定义一个全局值G,作为上述四个值的补充;-为整个帧建立与处理过的帧的宏块相关联的所有全局值的映像;-对于每个宏块,根据一个取决于相应全局值的比例系数来修正上述统计数字。
3.依照权利要求2的编码方法,其中该第一编码传送可以用来产生第一输出位流和与被处理帧的每个原始宏块相关的复杂度,然后利用该修正子步骤将该宏块的复杂度乘以一个与相关宏块对应的全局值成线性关系的比例系数。
4.对一个视频帧序列进行编码的装置,该视频帧序列被划分为宏块,而宏块本身又被分成块,该装置包括a)至少一个编码分支,顺序包括至少一个量化电路和一个可变长度电路;b)一个控制电路,针对序列的每一帧来控制下列步骤的实现(A)在第一次编码传送中利用一个固定的量化步长对该帧进行编码,来产生第一个输出位流和与该帧的每个宏块相关的统计数字;(B)根据上述统计数字,在第二次编码传送中采用一个可变的量化步长再次对该帧进行编码,利用一个相对第一个输出位流的被修正的位数,来产生该帧的每个宏块的第二个输出位流;(C)在第一次和第二次编码传送中,一个附加步骤包括下列子步骤(a)解码第一个输出位流,来产生一个解码的输出位流;(b)在该解码的位流中,检测阻断人工产物,来建立一个在所有宏块的块内边界处发生的阻断效应的映像;(c)依照该映像修正统计数字,据此进行第二次编码传送。
5.一种依照权利要求1的编码方法,其特征是,在重新编码步骤之前,它还包括下列附加的步骤(a)根据下面的表达式计算一个归一化因数F(norm)=X(in)/X(out)其中X(in)和X(out)分别为根据上述的映像进行修正前后的统计值的总和;(b)在修正后将每个统计值乘以该归一化因数。
6.依照权利要求5的视频编码方法,其中如果有待编码的输入帧为I或P型,归一化因数被设置为1。
7.一种对一个视频帧序列进行编码的装置,该视频帧序列被划分为宏块,而宏块本身又被分成块,该装置包括(a)至少一个编码分支,顺序包括至少一个量化电路和一个可变长度电路;(b)一个控制电路,针对该序列的每一帧来控制下列步骤的实现(A)在第一次编码传送中,利用一个固定的量化步长对该帧进行编码,来产生第一个输出位流和与该帧的每个宏块相关的统计数字;(B)解码第一个输出位流,来产生一个解码的输出位流;(C)在该解码的位流中,检测阻断人工产物,来建立一个在所有宏块的块内边界处发生的阻断效应的映像;(D)依照该映像修正统计数字,(E)根据上述统计数字,在第二次编码传送中采用一个可变的量化步长再次对该帧进行编码,对于该帧的每个宏块,利用一个相对第一个输出位流被修正的位数,来产生该帧的每个宏块的第二个输出位流;该装置的进一步特征是,还提供了一个控制电路,在重新编码步骤之前,针对序列中的每一帧,来控制下列附加步骤的实现(a)根据下面的表达式计算一个归一化因数F(norm)=X(in)/X(out)其中X(in)和X(out)分别为根据上述的映像进行修正前后的统计值的总和;(b)在修正后将每个统计值乘以该归一化因数。
全文摘要
本发明涉及一种适用于一个视频帧序列的视频编码方法,包括的步骤有在第一次编码传送中利用一个固定的量化步长对每一帧进行编码,解码该编码的位流,为该帧建立一个阻塞人为因素的映像,和根据由该映像决定的修正对该帧进行重新编码,用于在一个采用可变的量化步长的编码传送中,产生一个第二输出位流,相对于第一输出位流,它具有一个修正的位数。在一个改进的实施方案中,一个附加的归一化操作用来在重新编码步骤之前,消除某些不利的影响。
文档编号H04N7/50GK1460384SQ02800948
公开日2003年12月3日 申请日期2002年3月26日 优先权日2001年3月29日
发明者V·罗尔 申请人:皇家菲利浦电子有限公司