可变长度编码方法

文档序号:7910057阅读:647来源:国知局
专利名称:可变长度编码方法
技术领域
本发明涉及一种视频编解码器,具体而言,涉及视频编解码器中的一种可变长度编码方法。
背景技术
一般而言,要发射或者储存的信号都被描述成划分成列的几个码元。将每个码元表示为具有特定长度的代码叫做编码。在这里,将每个码元表示为具有相同长度的代码叫做固定长度编码,以及将每个码元表示为具有不同长度的代码的叫做VLC(可变长度编码)。
在可变长度编码方法中,当将每个码元描述成具有不同长度的代码的时候,将长度较短的代码分配给出现频率相对高的码元,将较长的代码分配给出现频率相对低的码元。因此,与将相同长度代码分配给所有码元的固定长度编码方法相比,可以用较少的比特数来表示信号。
与固定长度编码方法相比,可变长度编码在压缩信号信息量的时候非常有效,但是在信道差错频繁出现的无线电环境中则不是那么有效。也就是说,当描述特定码元的代码受到信道差错影响的时候,固定长度编码中只有有关的码元会丢失。而在可变长度编码中,因为每个码元的每个代码都具有自己的长度,因此不仅会丢失有关的码元,还会丢失后续码元。因此,在3GPP(第三代伙伴合作项目)标准所定义的H.263视频编解码器的可变长度编码过程中提出了检测无线电环境信道差错的各种方法。
图1是说明一般的视频通信系统的框图。如图1所示,这种视频通信系统被粗略地划分成一个发射单元和一个接收单元。这个发射单元包括一个摄像机101和一个H.263编码器102,该编码器用来将摄像机101拍摄的图像编码成H.263格式,并且以无线方式将它们发射出去。因此,摄像机101拍摄的图像被H.263编解码器102编码,并通过无线信道发射给接收单元。
该接收单元包括视频解码器103、差错检测器104、纠错器105和显示器106。该H.263解码器103将通过无线信道发射的H.263比特流解码成MPEG或者H.263格式,以及差错检测器104检测解码信号中的信道差错。因此,纠错器105纠正或者隐藏检测到的差错,并且通过显示器106显示出来。在这里,利用已经正确地解码的前面的图像部分或者当前图像部分来纠正这些差错。
总之,为了消除空间和时间冗余,该H.263编码器分别采用了一种DCT(离散余弦变换)方法和一种MC(运动补偿)方法。在通过二维空间变换消除数据的相关性的离散余弦变换方法中,对8像素乘以8像素的图像块单元进行空间转换。在这里,因为经过了空间转换的数据倾向于集中在一边,因此在量化以后才将它们发射出去。
在连续时间图像中,人或者物体的运动主要出现在屏幕的中心部分。通过利用这一特性,在运动补偿方法中消除了时间冗余。具体地说,通过在不变的部分(或者具有最小变化的部分)中填充从前面的图像取出来的相似部分,能够使要发射的数据量最小。如上所述,发现图像之间最相似的宏块叫做ME(运动估计),作为位移的运动描述度称做运动矢量。
图2是说明通用H.263编码器结构的一个框图。如图2所示,当输入图像的当前宏块与前面图像的任意宏块都不相似时,编码控制器202就控制视频通信系统,让它处于一种帧内模式(intra mode),当有一个相似的宏块时,编码控制器202就控制视频通信系统,让它处于一种帧间模式(inter mode)。在帧内模式中,第一个开关201按照来自编码控制器202的模式控制信号输出一个输入图像给DCT单元204。在帧间模式中,第一个开关201输出一个输入图像给补偿器210。
如果确定的模式是帧内模式,就通过DCT单元204和量化器205将输入图像输入到VLC 203,而不考虑以前的图像,并且该VLC 203利用从编码控制器202输出的模式控制信号和量化参数对输入图像进行编码。
另一方面,当确定的模式是帧间模式的时候,通过反量化器206和反DCT 207恢复出来的以前的图像被储存在帧缓冲器209中。利用储存在帧缓冲器209中的以前的图像和通过第一个开关201收到的当前输入图像,运动估计器211搜索(以前的图像中)与当前宏块最相似的宏块。该运动补偿器210按照从运动估计器211输出的运动矢量来补偿宏块,并且第一个减法器200输出当前宏块和运动补偿后的宏块之间的差。因此,通过DCT单元204和量化器205在VLC 203中将相减的图像最终编码,并发射出去。
第二个开关212将运动补偿以后的宏块输出给加法器208。加法器208将运动补偿后的宏块加到以前的图像上去,将它输出给帧缓冲器209。通过8乘8单元对输入数据采样以后,在DCT单元204中将输入数据进行DCT变换,转换系数按照压缩比在量化器205中进行量化。在量化数据中,该VLC 203将出现频率较高的数据编码成较小的码字,因而能够获得最终的数据压缩效果。在这种编码方法中,为了能够获得较高的压缩比和最大的编码效率,采用了由宏块单元进行独立编码的一种方法。
图3给出了一种H.263比特流。从VLC 205输出的H.263比特流被划分成四层,即块层、宏块层、GOB(块组)层和图像层。该块层由8乘8个像素组成,其是最低层。宏块层由4个亮度块和两个色度块组成。另外,GOB块由多个宏块层(对于QCIF(四分之一公共中间格式)尺寸有9个宏块层)组成,以及图像层由多个(对于QCIF尺寸有9个)GOB层组成。
图4是说明图3所示宏块层的一个框图。宏块层被大致地划分成一个头部部分和一个块数据部分。该头部部分包括一个COD(编码宏块指示)标志,用于说明宏块是编码的宏块还是未编码宏块;一个MCBPC(色度信号的宏块类型和编码块模式)标志,其中具有关于宏块模式和色度块的编码模式信息;一个CBPY(亮度的编码块模式)标志,它具有关于亮度块的编码模式信息;一个DQUANT(量化参数差值)标志,它具有量化步长尺寸,也就是压缩程度信息。
MB头部中还包括一个MVD(运动矢量数据)标志;以及块数据,其中有每个块经过离散余弦变换处理得到的结果信息(纹理)。该MVD不是当前宏块的运动矢量值,而是当前宏块运动矢量和估计出来的运动矢量之间的差,以及它是通过减少比特数量来提高编码效率。
下面参考宏块和附图5来介绍相关技术中的编码过程。首先,根据从编码控制器202收到的模式控制信号,VLC 203确定包括当前宏块的帧的图像类型是P图像(也就是互图像)还是I图像(也就是内图像),如同步骤S501所示。如果它是P图像,就将一个特定的值写入COD标志,如同步骤S502所示。当在当前的宏块没有任何运动信息,并且六个块都没有纹理信息(都是“0”)的时候,该COD标志是“1”。否则,该COD标志就是“0”,如同步骤S503所示。
因此,当COD标志是“1”的时候,然后对下一个宏块进行编码。但是,当COD标志是“0”的时候,就执行以下步骤。另外,如果判断结果表明它是I图像,就写入MCBCP标志和CBPY标志,而不写入COD标志,如同步骤S504和S505所示。在这里,该MCBPC标志表明宏块的格式,以及两个颜色差分信号块的模式,并且该CBPY标志说明四个亮度信号块的模式。该模式分别地说明有关包括宏块中的颜色差和亮度信息的6个块的纹理信息的存在。
然后写DQUANT标志。该DQUANT标志用于表明在以前写过的QP和当前宏块QP之间的差,并且用于在编码控制单元202中调整压缩程度。因此,当宏块模式是帧间模式或者帧内模式的时候,因为DQUANT等于0,因此它被跳过去,而不用被写入,就象步骤S506和S507所说明的一样。
然后,写一个运动矢量差值。在这里,只在互宏块中存在运动矢量,它说明最接近的前一帧与当前宏块在x和y方向上之间距离有多远。在视频编码中,不是按照运动矢量的本来样子编码,而是对它与预测的运动矢量之间的差值进行编码。这样做叫做MVD。因此,除了帧内模式宏块以外,必须写MVD标志。但是,在帧内模式宏块中,没有任何必要写,就象步骤S508和步骤S509所说明的一样。
如上所述,在编码器中经过了编码处理以后,当通过信道发射编码的宏块的时候,某个接收机(图中没有画出)收到它,并对它进行解码。
一般而言,在H.263解码器中,当代码本或者代码表中没有某个比特流的码元的时候(无效代码),就将它检测为一个差错。但是在差错检测方法中,当代码本中偶然存在一个发生了差错的比特流的时候,就不可能找出准确的差错发生位置。
例如,当一个比特流实际上出现差错的时候,因为误解概率远远大于“无效代码”判断概率,在利用代码本的传统差错检测方法中可能检测不到差错,虽然检测到了差错,它也可能总是在比实际差错的发生晚一些的时候检测到的。
在信道差错的发生中,H.263解码器中“无效代码”出现概率就是一个码字在代码本中没有的概率。
-P图像的MCBPC代码表0.110%-I图像的MCBPC代码表1.37%-CBPY代码表3.125%-MVD代码表0.061%-TCOEF(量化变换系数)代码表0.195%如上所述,在利用代码本的检测方法中,宏块单元检测差错的发生原因是一个1比特COD标志作为宏块初始信息。在这里,该COD标志表明宏块是否是编码的,当某个宏块几乎与前面的图像的宏块相似的时候,就将COD标志设置为“1”,并且发射纹理信息的时候不对它进行编码。它主要是应用于在图像中没有任何运动的背景部分的宏块。
因此,当接收机错误地理解了COD标志值的时候,就很可能发生检测差错。更加详细地说,因为摄像机101的运动,当当前图像与前面的图像不相似的时候,就将当前图像所有宏块的COD标志设置成“0”,并且编码地发射纹理信息和运动信息。
但是,当编码的图像的某个宏块发生差错的时候,如果接收机的H.263解码器103没有检测到发生了差错的宏块,它就从下一个宏块开始失去同步,因此它读出的COD是错误的。
而且,当失去同步的宏块的COD标志值连续地是“1”的时候,就不可能检测到作为数字“1”的宏块的差错,原因在于,宏块解码错误,因此检测差错随着宏块的数量增加而增加。

发明内容
按照一个或者多个实施例,一种可变长度编码方法包括将视频编码器收到的当前图像和以前的图像的对应部分进行比较;如果所述对应部分是互相相似的,就通过将当前图像的COD(编码宏块显示)标志设置为特定值进行编码。该对应部分每个至少包括一个宏块。这个特定值近似等于“0”。
在一些实施例中,将MCBPC(色度信号的宏块类型和编码块模式)标志设置成等于第一个值,例如近似等于“1”。将CBPY(色度信号的编码块模式)标志设置成等于第二个值,例如近似等于“11”。将MVD(运动矢量数据)标志设置成等于第三个值,例如近似等于“0”。
在特定的实施例中,一种可变长度编码方法包括确定宏块的编码模式;确定宏块的编码模式为帧间模式的时候,将宏块头部的COD(编码宏块指示)标志设置为第一个值;将MCBPC(色度信号的宏块类型和编码块模式)标志设置为第二个值;将CBPY(亮度信号的编码块模式)标志设置为第三个值;以及将MVD(运动矢量数据)标志设置为第四个值。
下面通过参考附图,对本发明进行更加详细的介绍,本领域中的技术人员会更加了解本发明的这些实施例和其它实施例,本发明并不局限于这里公开的任何特定实施例。


用于更好地理解本发明,同时构成本说明书一部分的

了本发明的实施例并结合说明用于解释本发明的基本原理。
图1是说明一般视频通信的一个框图;图2是说明一般H.263编码器结构的一个框图;
图3是说明H.263比特的列的层结构的一个示例性示意图;图4是说明图3所示宏块层语法的一个示例性示意图;图5是说明传统技术中在可变长度编码里宏块层语法设置方法的一个流程图;和图6是说明本发明的可变长度编码中宏块层语法设置方法的一个流程图。
本发明中不同附图里以相同数字标注的特征、单元和方面表示这个系统的一个或者多个实施例里相同、等价或者相似的特征、单元或者方面。
具体实施例方式
在本发明的一个或者多个实施例中,提供了由于图形解码器(例如H.263解码器)中的COD值减少检测差错的方法。因此,这种可变长度编码方法将宏块的COD标志固定为第一个值(例如“0”),并通过检查(例如)安排在第一个值的COD标志来检测差错,虽然在前面的宏块中没有检测到差错。
参考图6,在步骤S601中,VLC 203根据从编码控制器202收到的模式控制信号,确定其中包括了当前宏块的帧的图像类型是P图像还是I图像。如果是P图像,将某个值写入COD标志,如同步骤S602所示。例如,在当前宏块中没有任何运动信息,并且这些块没有任何纹理信息(也就是“0”)的时候,将COD(编码宏块指示)标志设置成一个预先确定的值,比方说“1”。否则,将这个COD标志设置成一个默认值,比方说“0”。
如果输入的帧是一个P图像,就写这个COD标志。但是,当输入的这个帧不是一个P图像的时候,在步骤S604中,就按照下面将详细介绍的方式写MCBPC标志。如果输入的帧是一个P图像,然后就确定COD标志是不是一个预先确定的值(例如1或者0),例如如步骤S603所说明的一样。如果这个COD标志是例如“1”,就将这个COD标志写成“0”,将MCBPC标志写成“1”,以及将CBPY标志写成“11”。
在一些实施例中,将MVD标志写成“0”。这就意味着当前宏块几乎与前一帧中同一位置的一个宏块完全相同,可以原封不动地使用这个宏块。更加具体地说,为了方便无线电信道中的差错检测,在作为编码的最后步骤的可变长度编码过程中,将说明是编码还是未编码信息的COD标志固定为特定值(例如“0”),按照步骤S610~S613写关于宏块层的标志值。
例如,如果COD标志是“0”,输入的帧是一个I图像。按照步骤S604和S605所示写了MCBCP标志和CBPY标志以后,写(例如)DQUANT标志。如果宏块的模式是一个帧间模式或者一个帧内模式,当DQUANT是0的时候,就跳过去而不写,如同步骤S606、S607所示。当宏块是在帧内模式的时候,就写MVD标志。但是,如果宏块处于帧内模式,就根本没有必要如同步骤S608和S609所示那样写。
在本发明的编码方法中,因为COD标志不能是“1”,因此,解码器可以通过检查这个COD标志来检测差错。如果在前面的宏块中出现了差错,并且没有被检测到(也就是说,在一些实施例中假设一个比特列内0和1的出现概率是50%),用当前宏块COD标志的1个比特就能够以(例如)50%的概率检测到差错。随着比特数量的增加,编码效率可以略微降低(大约1%)。因此,可以进行更加精确的差错检测,提高无线电环境中的差错恢复能力,从而获得更好的图像质量。
在采用例如H.263运动图像编解码器的视频通信的本发明中的可变长度运动图像编码方法中,通过对某个标志进行固定编码,比方说可变长度编码过程中的COD标志,有可能检测无线信道中出现的差错,从而提高数据恢复能力。
权利要求
1.一种可变长度编码方法,包括比较通过视频编码器接收的当前图像和前面的图像的对应部分;和根据所述对应部分互相相似,通过固定当前图像的COD(编码宏块指示)标志为确定值来进行编码。
2.如权利要求1所述的方法,其中所述对应部分的每一部分包括至少一个宏块。
3.如权利要求1所述的方法,其中所述特定值近似等于“0”。
4.如权利要求1所述的方法,进一步包括将MCBPC(色度信号的宏块类型和编码块模式)标志设置成等于第一个值,其中该第一个值近似等于“1”。
5.如权利要求1所述的方法,进一步包括将CBPY(亮度信号的编码块模式)标志设置为等于第二个值,其中该第二个值近似等于“11”。
6.如权利要求1所述的方法,进一步包括将MVD(运动矢量数据)标志设置成等于第三个值,其中该第三个值近似等于“0”。
7.一种可变长度编码方法,包括下列步骤确定宏块的编码模式;当宏块的编码模式被确定为处于帧间模式的时候,将宏块头部的一个COD(编码宏块指示)标志设置为第一个值;将MCBPC(色度信号的宏块类型和编码块模式)标志设置成第二个值;将CBPY(亮度信号的编码块模式)标志设置为第三个值;和将MVD(运动矢量数据)标志设置为第四个值。
8.如权利要求7所述的方法,其中所述的第一个值近似为“0”,所述第二个值近似为“1”,所述第三个值近似为“11”,所述第四个值近似为“0”。
9.一种可变长度编码系统,包括确定宏块编码模式的装置;当宏块的编码模式被确定为帧间模式的时候,将宏块头部的COD(编码宏块指示)标志设置为第一个值的装置;将MCBPC(色度信号的宏块类型和编码块模式)标志设置为第二个值的装置;将CBPY(亮度信号的编码块模式)标志设置为第三个值的装置;和将MVD(运动矢量数据)标志设置为第四个值的装置。
10.如权利要求9所述的系统,其中所述的第一个值近似为“0”,所述第二个值近似为“1”,所述第三个值近似为“11”,所述第四个值近似为“0”。
11.一种视频编解码器中的可变长度编码方法,该方法包括下列步骤确定宏块是否是按照第一种模式编码的;如果该宏块不是按照第一种模式编码的,就写COD(编码宏块指示)标志;确定所述COD标志是否等于第一个值;响应于所述COD标志等于第一个值,将所述COD标志改成第二个值、将MCBPC(色度信号的宏块类型和编码块模式)标志写成第三个值、将CBPY(亮度信号的编码块模式)标志写成第四个值、将MVD(运动矢量数据)标志写成第五个值,否则写MCBPC标志和CBPY标志;确定QP的差值是否等于第六个值;和响应于QP的差值不等于第六个值,写DQUANT标志。
全文摘要
本发明公开一种可变长度编码方法。该方法包括比较视频编码器收到的当前图像和前面的图像的对应部分;以及如果所述对应部分互相相似,就通过将当前图像的COD(编码宏块指示)标志固定为某个值来进行编码。
文档编号H04N7/26GK1491040SQ03154668
公开日2004年4月21日 申请日期2003年8月22日 优先权日2002年8月24日
发明者文基雄 申请人:Lg电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1