用于编码交错形状信息的方法和设备的制作方法

文档序号:7576479阅读:349来源:国知局
专利名称:用于编码交错形状信息的方法和设备的制作方法
技术领域
本发明涉及一种用于编码交错形状信息的方法和设备;更具体地,涉及一种在未更新场估计基础上,通过修改交错形状信息的编码方式而进行高效编码的方法和设备。
在数字化可视系统,如视频电话,电视会议和高清晰度电视系统中,需要大量数字数据来确定每个视频帧信号,这是因为视频帧信号中的视频行信号包括一系列被称作象素值的数字数据。然而,由于一般传输信道的可用带宽是有限的,为了通过其传输大量数字数据,这就必须采用各种数据压缩技术以压缩或减少数据量,特别是在如视频电话和电视会议系统这样的低比特率视频信号编码器的情况下,更需要使用数据压缩技术。
一种针对低比特率编码系统的编码视频信号的技术是所谓的面向目标的分析一合成编码技术,其中输入的视频图象被分成多个目标,定义了每个目标的运动、轮廓和象素数据的三组参数通过不同的编码信道进行处理。
这种面向目标的编码方案的一个例子就是所谓MPEG(活动图象专家组)阶段4(MPEG-4)的方案。这一方案提出了一种音频-视频编码标准,这一标准允许在诸如低比特率通信、交互多媒体(例如游戏、交互电视等)和区域监视等应用中的基于内容的交互性、改进的编码效率和/或通用存取性。
根据MPEG-4,一个输入的视频图象被分成许多个视频目标平面(VOP),对应于比特流中用户可访问和处理的实体。一个VOP可以称为一个目标,且用围绕每个目标的一个封闭矩形表示,矩形的宽和高可以是16象素的最小倍数(一个宏块的尺寸),这样编码器可在逐个VOP的基础上处理输入的视频图象。
在MPEG-4中所述的VOP包括形状信息和具有亮度、色度数据的纹理信息,其中以二进制形状信号表示的形状信息被称作阿尔法(alpha)平面。阿尔法平面被分成多个二进制阿尔法块,其中每个二进制阿尔法块(BAB)一般有16×16个二进制象素。每个二进制象素或被分类成背景象素或目标象素,其中背景象素位于阿尔法平面中目标的外部,且用二进制象素值例如“0”表示,而目标象素位于目标内部且用另一个二进制象素值例如255表示。
可通过使用传统的基于位图的形状编码方法,如基于上下文的算术编码(CAE)技术及运动估计和补偿技术,对BAB内的每个二进制象素进行编码。例如,在内部模式下,通过使用内部CAE技术对当前BAB中所有二进制象素进行编码,从而产生内部CAE数据,其中根据围绕BAB中一二进制象素的预定数目例如10个二进制象素计算该二进制象素的上下文值。在相互模式下,采用相互CAE技术对当前BAB的所有二进制象素进行编码,从而产生相互CAE数据,其中对当前BAB的一个二进制象素计算其上下文值,这是根据当前BAB的该二进制象素周围的4个二进制象素和参考BAB,如有界运动补偿BAB中的5个二进制象素进行计算的,(参见MPEG-4视频检验模型版本7.0,国际标准化组织,活动图象和伴随的音频信息编码,ISO/IECJTC1/SC29/WG11 MPEG97/N1642,Bristol,1997年4月,pp28-30)。
在传统的二进制形状编码方案中,利用表示或表征BAB编码类型的BAB类型去改进编码效率。例如,如果BAB中所有的二进制象素是目标象素,那么表示BAB中所有二进制象素都是目标象素的BAB类型被编码,且传输给接收端的解码器以代替象素数据本身。所以,通过传输BAB类型作为BAB的基本二进制形状信息,可能提高编码效率。
表1
参见表1,它显示了传统技术中使用的对于BAB的7个BAB类型,其中形状运动向量差(MVDs)是形状运动向量(MVs)和形状运动向量预测因子(MVPs)之间的差值(参见MPEG-4视频检验模型版本7.0,附录,pp20-30)在表1中,BAB类型‘0’表示BAB的MVDs是0,且BAB对应于未更新,即可用最相似的候选BAB代替该BAB,而BAB类型‘1’说明BAB的MVDs有非零值,且BAB可被最相似的候选BAB代替。BAB类型为‘0’的BAB可只用BAB类型本身表示,而BAB类型为‘1’的BAB可用BAB类型和MVDs一起表示。
BAB类型‘2’表示BAB是透明的,即BAB中的所有二进制象素都被认为是背景象素,而BAB类型‘3’表示BAB是不透明的,即在BAB中的所有二进制象素都代表目标象素。只需要BAB类型就可表示BAB类型‘2’或BAB类型‘3’的BAB而无需其它数据。
BAB类型‘4’代表BAB中所有二进制象素采用内部CAE编码;BAB类型‘5’说明MVDs是零且BAB中所有二进制象素采用相互CAE编码;BAB类型‘6’表示MVDs有非零值且BAB中所有二进制象素采用相互CAE编码。用BAB类型‘4’或‘5’以及其后的内部CAE或相互CAE数据来表示具有BAB类型‘4’或‘5’的BAB。表示具有BAB类型‘6’的BAB,除了BAB类型本身外,还需要MVDs和相互CAE数据。
参见

图1,它所示的是一个传统的编码设备,用于在帧BAB或场BAB基础上对VOP的交错形状信息进行自适应编码,其中帧BAB包括M×N个象素且可以被分成顶部场BAB和底部场BAB,每个场BAB有M/2×N个象素,M是一个正偶数,N是一个正整数,一般地,M和N的值是16,且顶部场BAB和底部场BAB分别由帧BAB的奇数象素行和偶数象素行组成。VOP的交错形状信息在帧BAB基础上输入给帧检测电路10。帧检测电路10检查具有例如16×16个二进制象素的当前帧BAB是否是透明的,或是不透明的。一般地,当当前帧BAB中的象素被全0或全255所代替,如果产生的误差小于预定的阈值,那么当前帧BAB就被认为是透明的或是不透明的。如果当前帧BAB被认为是透明的或是不透明的,那么BAB类型‘2’或‘3’通过多路转换器(MUX)60被传输给发送器(未示出),且当前帧BAB的编码过程结束。
如果当前帧BAB既不是透明的也不是不透明的,那么当前帧BAB的交错形状信息被输出给编码类型确定电路20和开关30。编码类型确定电路20根据两个相邻行之间二进制象素值的差值,对当前帧BAB计算其帧和场的相关性;根据计算出的帧和场的相关性,确定基于帧的编码和基于场的编码哪一种更好;如果帧相关性等于或大于场相关性,那么编码类型‘0’被分配给当前帧BAB,反之,则编码类型‘1’被分配给当前帧BAB;且将当前帧BAB的编码类型‘0’或‘1’输出给开关30和多路转换器60,其中编码类型‘0’和‘1’分别表明当前帧BAB是基于帧编码和基于场编码的。例如,可以计算当前帧BAB的所有两个可能相邻的行,即,第1行和第2行,第2行和第3行等等的二进制象素差值之和作为帧相关性;可以计算所有两个可能相邻的奇数行,即第1行和第3行,第3行和第5行,等等,或所有两个可能相邻的偶数行,即第2行和第4行,第4行和第6行,以此类推,它们的二进制象素差值之和作为场相关性。二进制差值的和越小,相关程度越大。
开关30按编码类型将当前帧BAB的交错形状信息输出,如果编码类型是‘0’,则输出给帧编码电路40,如果编码类型是‘1’,则输出给场编码电路50。
帧编码电路40选择BAB类型‘0’,‘1’,‘4’,‘5’和‘6’中的一个作为当前帧BAB的BAB类型,并根据已确定的BAB类型以帧为基础对当前帧BAB进行编码。如果BAB类型被判定为‘0’,那么由帧编码电路40输出给MUX 60的就只有BAB类型,而如果判定的BAB类型是BAB类型‘1’,‘4’,‘5’和‘6’中的一个,那么帧编码电路40向MUX 60输出基于帧的当前帧BAB的编码数据(或帧编码数据)和确定的BAB类型。帧编码数据包括编码的MVDs和/或内部/相互CAE数据。
另一方面,如果当前帧BAB是从开关30按编码类型‘1’输出给场编码电路50的话,那么场编码电路50将当前帧BAB分成两个场BAB,即顶部场BAB和底部场BAB;选择BAB类型‘0’,‘1’,‘4’,‘5’和‘6’中的一个作为顶部场BAB和底部场BAB共同的BAB类型;根据已确定的BAB类型,以场为基础分别对这两个场BAB进行编码。值得注意的是,尽管只有一个BAB类型被分配给两个场BAB,但这两个场BAB是被分别以场为基础进行编码的。场BAB类型和场编码数据被传输给MUX 60,其中场编码数据(如果有的话)包括两个编码的MVDs和/或两个场BAB的内部/相互CAE数据,在场编码电路50中的编码方案细节将通过表2进行详细说明。
MUX 60对BAB类型,编码类型和/或帧编码或场编码数据进行多路转换,以将当前帧BAB的编码数据输出给发送器以便发送。如果在帧检测电路10中确定BAB类型是‘2’或‘3’,那么编码数据只由BAB类型组成。如果BAB类型是‘0’,那么编码数据包括编码类型和BAB类型。如果BAB类型是‘1’,‘4’,‘5’和‘6’中的一个,那么编码数据包括编码类型,BAB类型,以及取决于编码类型的帧编码或场编码数据。
参见表2,它所示的是在场编码电路50中分配给两个场BAB的BAB类型。顶部场BAB类型‘Ti’,即顶部场BAB的BAB类型,和底部场BAB类型‘Bi’,即底部场BAB的BAB类型,对应于表1中的BAB类型‘i’,i是一个范围从0到6的整数。
场编码电路50分别检测顶部场和底部场BAB类型。如果两个场BAB类型被判定为是相同的BAB类型‘0’,‘1’,‘4’,‘5’或‘6’,那么这个被确定了的BAB类型就被分配给这两个场BAB。而BAB类型‘2’或‘3’并不分配给两个场BAB,这是因为BAB类型‘2’或‘3’已在帧检测电路10中在帧的基础上被检测出来了。
表2
如果一个场BAB类型是‘0’,而另一个是‘1’,那么将BAB类型‘1’分配给两个场BAB。如果两个场BAB类型中的一个是‘6’,而另一个是‘5’,则BAB类型‘6’被分配给两个场BAB。对于余下的情况,两个场BAB都根据BAB类型‘4’,‘5’和‘6’被编码,且产生最少编码比特的BAB类型被分配给两个场BAB。
在上述传统帧一场自适应编码技术中,如果BAB类型是‘2’或‘3’,当前帧BAB的编码数据则只包含BAB类型。如果BAB类型被确定为不是‘2’或‘3’,那么就用BAB类型和编码类型以及帧编码或场编码数据(如果有的话)表示当前帧BAB。根据这样的事实,即两个场之间的相关性高于两个帧之间的相关性,且预期顶部场和底部场BAB的两个BAB类型彼此相同,由此自适应编码技术得到进一步发展。通过执行上述的形状编码,一些BAB可能需要额外的比特用来表示编码类型以及用一个BAB类型分别对两个场BAB进行编码。值得注意地是,优选的情况是根据两个场BAB彼此不同的场BAB类型对其进行编码。但是,这种情况是很少的,这是因为在视频信号的交错形状信息中,两个场BAB有同样的BAB类型的概率是很高的。通过对每两个场BAB只分配一个BAB类型而节省的比特可以补偿那些额外的比特,这样提高了编码效率。
然而,尽管上述的自适应编码技术能够提高编码效率,但还希望有一种进一步减少传输数据量的方法。例如,如果对具有场BAB类型‘0’和‘6’的两个场确定其BAB类型为‘6’,那么就会有很多比特的损失,这是因为那个具有BAB类型‘0’的场BAB将需要MVDs和相互CAE数据以代表它,而该场BAB实际只需用BAB类型‘0’来进行编码。
总之,本发明的主要目的是提出一种能通过修改交错形状信息的BAB类型进一步减少传输数据量的方法和设备。
本发明的另一个目的也是提出一种方法和设备,用于通过有选择地挑出只用BAB类型说明的BAB,从而进一步减少传输数据量。
根据本发明,提出了一种对交错形状信号的目标块进行编码的方法,其中交错形状信号包括多个图象,每个图象被分成有M×N个象素的块,象素有第一或第二二进制值中的一个值,M和N分别是正偶数,且目标块或是在M×N个象素的基础上进行基于帧的编码,或是在M/2×N个象素的基础上被进行基于场的编码,目标块代表当前图象中被编码的那个块,这一过程由如下步骤组成(a)确定是否目标块只用未更新BAB类型进行编码,其中未更新BAB类型表示目标块只由BAB类型本身进行编码,而不需要目标块的其他编码数据。
(b)如果不用未更新BAB类型对目标块进行编码,那么根据目标块和它的两个场块之间的相关程度,选择基于帧的编码类型或是基于场的编码类型作为目标块的编码类型,其中上述两个场块分别包含目标块的每个奇数行和每个偶数行,每个场块有M/2×N个象素,编码类型表示使用基于帧的编码原则和基于场的编码原则中的哪一个对目标块进行编码。
(c)如果在(b)中选择了基于场的编码,那么判断是否两个场块对应于一场未更新(one-field-no-update),其中所述一场未更新表示两个场块中的至少一个可用最相似候选场块替代。
(d)如果两个场块被判定为BAB类型为‘1’的上述一场未更新,那么寻找顶或底(top-or-bottom)和场BAB类型(BAB-type-field),其中上述顶或底指明两个场块中哪一个被最相似候选场块所替代,且场BAB类型表示那个未被顶或底指明的场块的编码条件。
(e)对非数据BAB类型,编码类型,BAB类型,顶或底,和/或场BAB类型进行多路转换。
通过结合附图对优选实施例的说明,本发明上述和其他的目的和特点将会变得很明显,其中图1所示是在二进制阿尔法块(BAB)的基础上对交错形状信息进行编码的传统设备。
图2所示的是根据本发明的优选实施例,在BAB基础上对交错形状信息进行编码的设备的原理框图。
图3是如图2中所示的一场未更新编码电路的细节框图。
图4A和4B所示的是根据本发明的用于BAB的BAB类型编码算法流程图。
参见图2,它所示的是根据本发明的优选实施例的对当前VOP上交错形状信息进行自适应编码的设备,其中交错形状信息以二进制阿尔法平面的形式出现。二进制阿尔法平面被分成多个帧BAB和有界帧BAB,这些BAB一个接着一个地输入到未更新BAB类型确定电路110,运动估计电路170和帧存储器175。一个有界帧BAB包括一个帧BAB和帧BAB周围的边界象素,其中边界象素表示顶部和底部边界的顶边界象素和底边界象素,以及左边界和右边界的左边界象素和右边界象素,顶边界和底边界的宽度分别等于帧BAB上面和下面4个象素,左边界和右边界的宽度分别等于帧BAB左面和右面的2个象素。有界帧BAB的右边界象素可能按帧BAB的最右象素而被填充。对于内部CAE和相互CAE来说,边界象素可用来组成帧BAB中的象素的上下文。
根据例如先前帧的参考二进制阿尔法平面内多个候选帧BAB,运动估计电路170对包含于当前有界帧BAB中的当前帧BAB进行基于帧的运动估计,其中先前帧是由帧存储器175输入的;在候选帧BAB中选择当前帧BAB的预测帧BAB,预测帧BAB就是最相似的候选帧BAB;对当前帧BAB计算其形状运动向量差值(MVDs);将MVDs和从帧存储器175中检索的预测有界帧BAB输出到未更新BAB类型确定电路110和帧编码电路140,其中预测有界帧BAB包括预测帧BAB,和宽度等于预测BAB周围1个象素的边界象素,以及预测有界帧中的边界象素可用来组成当前帧BAB中一个象素的上下文用于相互CAE。MVDs代表当前帧BAB的形状运动向量(MVs)和形状估计运动向量(MVPs)之间的差值,MVs表示在当前帧BAB和预测帧BAB之间的位移。
未更新BAB类型确定电路110检测是否当前帧BAB的BAB类型对应于‘0’,‘2’,或‘3’。如果检测结果是肯定的,那么BAB类型‘0’,‘2’,或‘3’作为未更新BAB类型B输出给多路转换器(MUX)160,其中BAB类型‘0’,‘2’或‘3’表示当前帧BAB可只用BAB类型本身对其编码,而不需额外数据。
具体地,当前帧BAB可以被分成16个4×4象素的子块。如果在BAB的所有子块和一个全0子块之间的误差小于或等于预定的阈值,那么该BAB的所有象素可用象素值为‘0’的背景象素代表,且表示“全0”的BAB类型‘2’被分配给这个BAB,其中全0子块是二进制象素值都为‘0’的子块。同样,如果BAB的所有二进制象素可以用象素值为‘225’的目标象素替代,那么就将表示“全255”的BAB类型‘3’分配给这个BAB。如果预定阈值被设成‘0’,那么“全0”和“全255”分别表示当前帧BAB的每个象素是背景象素和目标象素。同样,如果MVDs是零,且当前帧BAB的所有子块和它们对应的预测帧BAB的子块之间的所有误差小于或等于预定阈值,那么当前帧BAB可用由运动估计电路170输入的预测帧BAB所替代,表示“MVDs=0和未更新”的BAB类型‘0’被分配给这个BAB。
如果产生了未更新BAB类型B,那么就不需要其他BAB类型确定过程,反之,则当前有界帧BAB被输出给编码类型确定电路120,帧编码电路140,以及场BAB发生器135。编码类型确定电路120根据两个相邻行间二进制象素值的差,计算当前帧BAB的帧和场相关性;根据计算出的帧和场相关性,判断基于帧和基于场的编码哪一个更好;如果帧相关性等于或大于场相关性,那么将编码类型E‘0’分配给当前帧BAB,反之,则将编码类型E‘1’分配给当前帧BAB;输出当前帧BAB的编码类型E‘0’或‘1’到帧编码电路140,场BAB发生器135及MUX 160,其中编码类型E‘0’和‘1’分别表示当前帧BAB是被基于帧的编码和基于场的编码。
当编码类型E为‘0’时帧编码电路140被激活,并根据由编码类型确定电路120输入的当前有界帧BAB和由运动估计电路170输入的MVDs和预测有界帧BAB确定BAB类型‘1’,‘4’,‘5’和‘6’中的一个作为当前帧BAB的BAB类型。帧编码电路140将确定的BAB类型和帧编码数据输出给MUX 160,其中帧编码数据表示当前帧BAB的基于帧的编码数据。如果BAB类型是1,那么帧编码数据包括编码的MVDs;如果BAB类型是‘4’,则包括内部CAE数据;如果BAB类型是‘5’,则包括相互CAE数据;如果BAB类型是‘6’,则包括编码的MVDs和相互CAE数据。
如果馈入的是对应于‘1’的编码类型E,那么场BAB发生器135被激活。场BAB发生器135将当前有界帧BAB分成两个有界场BAB,即顶部有界场BAB和底部有界场BAB。顶部有界场BAB最好包含当前有界帧BAB的每个奇数行,并包括一个顶部场BAB和它的边界象素,其中顶部场BAB由当前帧BAB的奇数行组成。底部有界场BAB包含当前有界帧BAB的每个偶数行,还包括一个底部场BAB和它的边界象素,其中底部场BAB由当前帧BAB的偶数行组成。场BAB发生器135将两个有界场BAB输出给一场未更新确定电路180和场运动估计电路185。
场运动估计电路185对顶部场BAB和底部场BAB进行基于场的运动估计。更具体地,场运动估计电路185从帧存储器175检索例如先前帧的参考二进制阿尔法平面,并将检索的阿尔法平面分成顶阿尔法平面和底阿尔法平面,顶阿尔法平面和底阿尔法平面分别由检索的阿尔法平面的奇数行和偶数行组成。在对顶部场BAB进行的运动估计中,首先确定顶部场MVPs。顶部场MVPs可以是先前处理过的场BAB或与顶部场BAB相邻的帧BAB的MVs中的一个。此后,根据顶阿尔法平面和底阿尔法平面中的顶部场MVPs确定多个候选场BAB,候选场BAB与场BAB有相同的尺寸。然后,根据候选场BAB,对顶部场BAB进行运动估计,以确定候选场BAB中的一个作为预测的顶部场BAB。在确定了预测的顶部场BAB后,计算顶部场BAB的MVDs(顶部场MVDs),其中顶部场MVDs用顶部场MVPs和顶部场MVs的差值给出,顶部场MVs表示顶部场BAB和预测的顶部场BAB之间的位移。来自于场运动估计电路185的顶部场BAB的输出是一个顶部场标志,它表示预测的顶部场BAB所在的顶或底阿尔法平面,和顶部场MVDs,以及从帧存储器175检索的预测顶部有界场BAB,其中预测的顶部有界场BAB包括预测的顶部场BAB和在预测的顶部场BAB周围宽度等于1的边界象素。底部场BAB的运动估计方法与上述的方法相似,且输出底部场BAB的底部场标志、底部场MVDs和包括了预测的底部场BAB与它的相应的边界象素的预测的底部有界场BAB。场运动估计电路185的输出被馈入一场未更新确定电路180。对于帧BAB和场BAB的运动估计的细节,请参见上述MPEG-4。值得注意的是,可以用与上述运动估计的方法不同的方式进行运动估计。
一场未更新确定电路180判断是否两个场BAB中的一个对应于BAB类型‘0’或‘1’;且将切换信号和场数据输出到开关190,其中切换信号表示是否两个场BAB中至少有一个可以被它的相应的预测场BAB所替代,而不考虑相应的MVDs值,以及场数据包括来自场BAB发生器135的顶部有界场BAB和底部有界场BAB以及来自场运动估计电路185的输出。具体地说,一场未更新确定电路180检查是否在顶或底部场BAB与它相应的预测场BAB之间的误差小于或等于预定的阈值,这样可用相应的预测场BAB替代顶或底部场BAB。
在开关190处,两个场BAB的场数据按切换信号而被切换。具体地说,如果切换信号表示顶或底部场BAB可用它相应的预测场BAB所替代,那么场数据被输出给一场未更新编码电路200。否则,场数据将被输出到场编码电路150。
一场未更新编码电路200根据本发明的方案对两个场BAB进行编码。参见图3,它所示的是根据本发明的优选实施例的一场未更新编码电路200的详细框图,其中场数据被输出到顶或底检测电路210和场检测电路220。
首先,顶或底检测电路210确定是否一场BAB对应于BAB类型‘0’或‘1’作为未更新场,并将顶或底(T/B)‘0’或‘1’,输出到场检测电路220和MUX 160,其中T/B‘0’和‘1’分别表明对应于未更新场的底部场BAB和顶部场BAB。如果两个场BAB都对应BAB类型‘0’或‘1’,那么最好将顶部场BAB作为未更新场。顶或底检测电路210对已确定的未更新场的MVDs进行编码,即使它的值是零,并将编码的MVDs传输到MUX 160。值得注意地是,即使被确定为未更新场的BAB的BAB类型是‘0’,但根据本发明,BAB类型‘1’仍将分配给它,并且值是零的MVDs也被编码,而在传统编码方案中,BAB类型为‘0’的BAB只用BAB类型表示而不对MVDs编码。
场检测电路220找到另一个未被顶或底说明的场BAB并根据场数据确定是否场BAB类型,即另一个场BAB的BAB类型,对应于“未更新”(即,BAB类型为‘0’或‘1’)、“全0”(即,BAB类型‘2’)或“全255”(即,BAB类型‘3’)。如果场BAB类型是“未更新”、“全0”和“全255”中的一个,那么指示另一个场BAB被定义为“未更新”、“全0”或“全255”的指示信号S2被输出到场BAB类型检测电路260。如果另一个场BAB相应于“未更新”,则场检测电路220将一个场MVDs(MVDs-field),即另一个场BAB的MVDs,输入MVD编码电路240。如果场BAB类型既不是“未更新”,也不是“全0”和“全255”,那么输出场MVDs到MVD编码电路240,并且剩下的场数据,即另一个场BAB的有界场BAB和预测有界场BAB,被输出到内部或相互确定电路250。
MVD编码电路240将MVD信号S3输出到场BAB类型确定电路260,并对场MVDs进行编码,以将编码的场MVDs输出给内部或相互确定电路250和MUX160,其中MVD信号S3表示是否MVDs等于‘0’。如果场MVDs的值是零,最好不对其进行编码。
内部或相互确定电路250在剩下的场数据和编码的场MVDs的基础上对另一个场BAB执行内部CAE和相互CAE;比较内部CAE数据和编码的场MVDs,以及相互CAE数据的比特数;选择具有较少比特数的数据作为场BAC(二进制算术码)。内部或相互确定电路250输出内部/相互信号S4给场BAB类型确定电路260并输出场BAC给MUX 160,其中信号S4表示另一个场BAB是被内部CAE编码,或是被相互CAE编码。
场BAB类型确定电路260根据信号S2,S3和S4确定另一个场BAB的BAB类型,即场BAB类型,‘0’,‘1’,‘2’,‘3’,‘4’,‘5’或‘6’,并输出场BAB类型到MUX 160。详细说明地是,如果S2表示另一个场BAB对应于“全0”或“全255”,则场BAB类型被确定为‘2’或‘3’,如果S2表示另一个场BAB对应于“未更新”且S3表示“场MVDs=0”,则场BAB类型被确定为‘0’。如果S2和S3分别表示另一个场BAB和场MVDs对应“未更新”和非零值,则场BAB类型被设为‘1’。如果未输入S2,且S4表明场BAC是内部CAE数据,则场BAB类型被判定为‘4’。如果未输入S2,而S4表示场BAC是相互CAE数据,且S3表示场MVDs是零,则场BAB类型被设成‘5’,最后,如果S4对应相互CAE数据且S3对应一个有非零值的场MVDs,则场BAB类型被判定为‘6’。
参见图2,如果两个场BAB都不对应于BAB类型‘0’或‘1’,则场编码电路150根据由一场未更新确定电路180通过开关190输入的场数据将BAB类型‘4’,‘5’和‘6’中的一个作为两个场BAB共同的BAB类型。在对两个场BAB确定BAB类型的过程中,可使用传统的比特数比较方案,其中比较了采用内部CAE方案表示两个场BAB所需的比特数(即,表示两个场BAB的内部CAE数据和BAB类型‘4’的比特数)和采用相互CAE技术表示两个场BAB所需的比特数(即,表示两个场BAB的BAB类型‘5’或‘6’和相互CAE数据,以及如果两个场BAB中一个的MVDs是非零时的编码MVDs的比特数);选择对应于较少比特数的BAB类型作为两个场BAB的BAB类型。请注意,如果两个MVDs都是零,则选择BAB类型‘4’或‘5’作为两个场BAB的BAB类型,如果两个MVDs中至少有一个MVDs具有非零值,则确定BAB类型‘4’或‘6’作为两个场BAB的BAB类型。这就是说,如果一个MVDs是零且另一个有非零值,则BAB类型被确定为‘6’,两个MVDs都被编码。场编码电路150将编码的BAB类型‘4’,‘5’或‘6’,和内部CAE或相互CAE数据作为BAC输出给MUX 160。如果BAB类型是‘6’,则编码的MVDs由场编码电路150输出到MUX 160。
MUX 160对从帧编码电路140、一场未更新编码电路200和场编码电路150输入的未更新BAB类型B、编码类型E和编码数据进行多路转换,以将当前帧BAB的多路转换的数据输出到发送器(未显示)以便发送。多路转换方案的细节将用表3中所示的比特流向句法所描述。
参见表3,它所示的是根据本发明的比特流向句法。
表3<pre listing-type="program-listing"><![CDATA[MB-interlaced-shape-coding(){BAB-typeIf((BAB-type==1)‖(BAB-type>=4))encoding-typeIf((BAB-type==1)‖(BAB-type==6)){MVDs-xMVDs-y}If((BAB-type>=4)&amp;&amp;(encoding-type==4))BACIf(encoding-type==1)Interlaced-shape-information()}//End of MB-binary-shape-codingInterlaced-shape-information(){if(BAB-type==6){MVDs-x-bottomMVDs-y-bottom}if(BAB-type>=4)BAC-fieldIf(BAB-type==1){top-or-bottomBAB-type-fieldIf((BAB-type-field==1)‖(BAB-type-field==6)){MVDs-x-fieldMVDs-y-field}If((BAB-type-field>=4) BAC-field }}//End of Interlaced-shape-information()]]></pre>1比特编码类型‘0’表示两个场BAB作为一个整体被编码,即基于帧的编码,而编码类型‘1’表明两个场BAB是分别被编码的,即基于场的编码。
BAB类型是变长码,如在1和6比特之间。如果BAB类型对应于‘0’,‘2’或‘3’,它表示当前帧BAB是基于帧的编码,则无编码类型跟随。如果BAB类型是‘1’,‘4’,‘5’和‘6’中的一个,则它的后面跟随着编码类型。
1比特的顶或底‘0’表示底部场BAB对应于未更新场,而顶或底‘1’表示顶部场BAB对应于未更新场。
场BAB类型‘0’,‘1’,‘2’,‘3’,‘4’,‘5’或‘6’表示另一个未被指明顶或底的场BAB的BAB类型。
表4
具有编码类型‘0’的MVDs-x/MVDs-y表示帧BAB的MVDs的水平/垂直分量,而具有编码类型‘1’的MVDs-x/MVDs-y表示场BAB的场MVDs的水平/垂直分量,如表4所示。
如果编码类型是‘0’,则BAC是由内部CAE或相互CAE产生的帧编码数据。
如果BAB类型是‘4’,‘5’或‘6’且编码类型是‘1’,则场BAC是由内部CAE或相互CAE产生的两个场BAB的场编码数据。如果BAB类型是‘1’,编码类型是‘1’,且场BAB类型是‘4’,‘5’或‘6’,则场BAB是由内部CAE或相互CAE产生的另一个场BAB的场编码数据。
底MVDs-x/底MVDs-y表示底部场BAB的场MVDs的水平/垂直分量。场MVDs-x/场MVDs-y表示未被底或顶说明的另一个场BAB的场MVDs的水平/垂直分量,其中,如果顶或底是‘1’,则另一个场BAB指明的是BAB的底部场BAB,而如果顶或底是‘0’,则另一个场BAB指明的是顶部场BAB。
参见表5,它所示的是在场的基础上对当前场BAB进行编码的情况下,分配给两个场BAB的4种BAB类型,其中顶和底部场BAB类型‘Ti’和‘Bi’对应于传统的BAB类型‘i’,i是一个整数,范围从0到6。BAB类型‘0’,‘2’和‘3’不分配给两个场BAB,这是因为在未更新BAB类型确定电路110中已经以帧为基础检测出“MVDs=0,且未更新”、“全0”和“全255”。
表5
参见图4A和4B,它所示的是根据本发明,在BAB基础上的交错形状信息的BAB类型编码算法的流程图。
在S11步,通过根据例如先前帧的参考二进制阿尔法平面内多个候选帧BAB对当前有界帧BAB内的当前帧BAB进行基于帧地运动估计,选择出当前帧BAB的预测帧BAB,并计算出当前帧BAB的MVDs。
在S13步,在当前帧BAB的基础上确定未更新BAB类型。更为详细地说,检测当前BAB中所有象素能被全0或全255所代替,从而只用BAB类型‘2’或‘3’可代表BAB本身,如果不是这样,则进一步判定当前帧BAB的MVDs是零,且BAB被预测帧BAB例如最相似候选BAB所替代,从而只用BAB类型‘0’可代表当前帧BAB本身。如果当前帧BAB被未更新BAB类型‘2’,‘3’,或‘0’,即“全0”、“全255”或“MVDs=0且未更新”所代表,则在S14步,当前帧BAB的未更新BAB类型被编码且不进行进一步的编码算法。
如果反之,则在S16步,分别根据所有两个相邻行和所有两个相邻奇数行与偶数行上二进制象素差值,计算出当前帧BAB的帧和场相关性,从而判断是否当前帧BAB的帧相关性大于它的场相关性。如果判定基于帧的编码优于基于场的编码从而使得编码类型是“基于帧”,即,‘0’,则在S17步,确定BAB类型‘1’,‘4’,‘5’和‘6’中的一个作为当前帧BAB的BAB类型,其中BAB类型‘1’,‘4’,‘5’和‘6’分别代表用“MVDs≠0且未更新”,“内部CAE”,“MVDs=0且相互CAE”以及“MVDs≠0且相互CAE”对当前帧BAB进行编码。在S18步,BAB类型‘1’,‘4’,‘5’或‘6’和编码类型‘0’被编码;然后,在S19步,根据BAB类型‘1’,‘4’,‘5’和‘6’,多路转换当前帧BAB的帧编码数据,并且处理过程结束,其中帧编码数据包括编码的MVDs和/或BAC,即,由内部/相互CAE技术产生的内部/相互CAE数据。
同时,如果在S16步发现对应于编码类型‘1’的基于场的编码优于基于帧的编码,则在S21步,判断是否当前帧BAB的两个场BAB对应于一场未更新。换句话说,即检验是否顶部场BAB或底部场BAB可用相应的预测场BAB所替代。如果两个场BAB与一场未更新并不匹配,则在S22步,根据比特数比较方案确定两个场BAB的BAB类型‘4’,‘5’或‘6’,比特数比较方案就是比较在内部CAE方案中表示两个场BAB所需的比特数和在相互CAE方案中表示两个场BAB所需的比特数;在S23步,表示基于场编码的场BAB类型‘4’,‘5’或‘6’和编码类型‘1’被编码;在S24步,用内部/相互CAE原则先后对两个场BAB进行编码,从而产生包括两个场BAB的MVDs的场编码数据(如果有的话),和/或内部/相互CAE数据,然后处理过程结束。
如果在S21步,两个场BAB符合一场未更新,这样两个场BAB对应于场BAB类型‘1’,则在S25步判断是顶部场BAB还是底部场BAB对应于未更新场,从而可产生顶或底T/B‘0’或‘1’,然后确定场BAB类型,即另一个场BAB的BAB类型,而它并不被顶或底指明,其中场BAB类型‘0’,‘1’,‘2’,‘3’,‘4’,‘5’和‘6’分别代表相应的另一个场BAB对应于“场MVDs=0且未更新场”,“场MVDs≠0且未更新场”,“全0”,“全255”,“内部CAE”,“场MVDs=0且相互CAE”以及“场MVDs≠0且相互CAE”。在S26步,BAB类型‘1’,编码类型‘1’,顶或底‘0’或‘1’和场BAB类型‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,或‘6’被依次编码。在S27步,多路转换另一个场BAB的场编码数据,然后过程结束,其中另一个场BAB的场编码数据包括场MVDs,和/或另一个场BAB的内部/相互CAE数据。
尽管本发明只通过了某个优选实施例进行说明,但只要不脱离下面要求所阐述的本发明的精神和范围,可以进行其他的修改和变动。
权利要求
1.一种对交错形状信号的目标块编码的方法,其中交错形状信号包括多个图像,每个图像被分成多个M×N象素块,这些象素具有第一或第二象素值,M和N分别是正偶数,或是在M×N个象素的基础上采用基于帧的编码方法,或是在M/2×N个象素的基础上采用基于场的编码方法对目标块进行编码,目标块代表当前图像的待被编码的一个块,该方法包括下述步骤(a)判断是否只用未更新BAB类型对目标块编码,其中未更新BAB类型表示只用BAB类型本身对目标块编码,而无需其他附加编码数据;(b)如果不是用未更新BAB类型对目标块编码,则根据目标块和它的两个场块之间的相关程度,选择基于帧或是基于场的编码类型作为目标块的编码类型,其中所述的两个场块分别包含目标块的每个奇数行和每个偶数行,每个场块有M/2×N个象素,且编码类型指明用基于帧的编码原则还是基于场的编码原则来编码目标块;(c)如果在步骤(b)中选择了基于场的编码方法,则判断是否两个场块对应于一场未更新,其中所述的一场未更新表示两个场块中至少有一个可被最相似的候选场块所替代;(d)如果两个场块被确定为上述一场未更新的BAB类型‘1’,则找出顶或底和场BAB类型,其中所述的顶或底指明两个场块中哪一个可被最相似候选场块所替代,场BAB类型表示未被顶或底指明的另一个场块的编码条件;(e)多路转换非数据BAB类型、编码类型、BAB类型、顶或底和/或场BAB类型。
2.如权利要求1中所述的方法,其中步骤(c)包括以下步骤(c1)参照当前图像的一个或多个参考图像,对上述两个场块中的每一个块进行基于场的运动估计,从而产生它的最相似候选场块;(c2)计算上述每个场块和最相似候选场块之间的场误差,以便对上述每个场块的场误差和另一个预定阈值作比较;(c3)如果上述每个场块的场误差不大于预定阈值,则将上述每个场块判定为未更新场,其中未更新场代表上述每个场块可用最相似候选场块代替;(c4)如果上述两个场块中至少一个场块对应于未更新场,则分配一场未更新给上述两个场块。
3.如权利要求2中所述的方法,其中步骤(d)包括以下步骤(d1)判断另一个场块的场BAB类型是否是‘2’或‘3’以产生全0/全255信号,其中场BAB类型‘2’表示另一个场块与第一个参考块间的误差不大于预定阈值,而场BAB类型‘3’表示另一个场块与第二个参考块之间的误差不大于预定阈值,每个参考块都有M×N个象素且第一和第二参考块的所有象素分别具有第一和第二二进制值;(d2)对另一个场块设定未更新场信号,其中未更新场表示另一个场块的场误差小于预定阈值,从而另一个场块可用最相似候选场块代替;(d3)计算另一个场块的运动向量和它通过步骤(c1)的基于场的运动估计得到的估计因子之间的场MVDs以产生一个场MVD信号,其中场MVD信号指明是否场MVDs是零;(d4)如果场MVDs不是零,则对另一个场块的场MVDs进行编码,以产生场MVD数据(d5)如果场误差不小于预定阈值,则产生场内部编码数据和场相互编码数据,其中场内部码数据是在当前图像的预定象素基础上,通过对另一个场块的象素进行编码而产生的,而相互编码数据是在当前图像中的预定象素与另一个场块的最相似候选场块的基础上,通过对另一个场块的象素进行编码而得到的;(d6)产生一个场相互/内部信号,其中场内部/相互信号是在选定了场内部编码数据或场相互编码数据的情况下产生的;(d7)根据全0/全255信号、场MVD信号、未更新场信号和/或场内部/相互信号,确定场BAB类型。
4.如权利要求3中所述的方法,其中内部编码数据是通过采用基于内部上下文的算术编码(CAE)方法产生的,而相互编码数据是通过相互CAE方法产生的。
5.如权利要求1中所述的方法,其中未更新BAB类型包括BAB类型‘2’或‘3’,其中BAB类型‘2’表示目标块与第一参考块之间的误差不大于预定阈值,BAB类型‘3’表示目标块与第二参考块之间的误差不大于预定阈值,每个参考块有M×N个象素且第一和第二参考块的所有象素分别具有第一和第二二进制值。
6.如权利要求5中所述的方法,其中未更新BAB类型进一步包括BAB类型‘0’,它表示在目标块的运动向量和它的运动向量估计因子之间的形状运动向量差(MVDs)是零,且目标块与最相似候选块间的误差不大于预定阈值,其中最相似候选块有M×N个象素,它在当前图像的一个或多个参考图像的多个候选块中产生最小的误差。
7.如权利要求6中所述的方法,其中上述BAB类型‘0’被确定的过程如下(a1)用上述当前图像的一个或多个参考图像对目标块进行运动估计,以产生包括最相似候选块和它的运动向量的运动向量信息;(a2)计算目标块和最相似候选块之间的误差,并计算运动向量和它的估计因子之间的MVDs;(a3)分别将MVDs和目标块的误差与零和预定阈值进行比较;(a4)如果误差不大于预定阈值,则确定目标块为未更新,其中未更新表示目标块被最相似候选块所替代;(a5)如果MVDs是零且目标块对应于未更新,则产生上述的BAB类型‘0’。
8.如权利要求1中所述的方法,其中该方法在步骤(e)之前,进一步包括如下步骤(f).如果在步骤(b)中编码类型被确定为基于帧,则利用基于帧的编码原则对目标块进行编码,以产生具有帧编码数据的BAB类型,其中BAB类型代表帧编码数据的编码条件;(g).如果上述两个场块未被确定为一场未更新的BAB类型,则采用基于场的编码原则对上述两个场块进行编码,以产生具有场编码数据的BAB类型,其中BAB类型代表场编码数据的编码条件。
9.如权利要求8中所述的方法,其中在步骤(f)中BAB类型被确定为BAB类型‘1’,‘4’,‘5’和‘6’中的一个,其中BAB类型‘1’,‘4’,‘5’和‘6’分别是‘MVDs≠0且未更新”,“内部CAE”,“MVDs=0且相互CAE”,和“MVDs≠0且未更新”。
10.如权利要求8中所述的方法,其中在步骤(g)中被确定的BAB类型是BAB类型‘4’,‘5’和‘6’中的一个,其中BAB类型‘4’,‘5’和‘6’分别是“内部CAE”,“MVDs=0且相互CAE”,以及“MVDs≠0且未更新”。
11.一种对交错形状信号的目标块进行编码的设备,其中交错形状信号包括多个图像,每个图像被分成多个M×N个象素的块,象素具有第一或第二二进制值,M和N分别是正偶数,且目标块或是在M×N个象素的基础上被基于帧的编码技术所编码,或是在M/2×N个象素的基础上被基于场的编码技术所编码,目标块表示当前图像中将被编码的那个块,该设备包括未更新BAB类型确定电路,用于确定是否只用未更新BAB类型对目标块进行编码,其中未更新BAB类型代表只用BAB类型本身对目标块进行编码,而不需要目标块的其他编码数据;编码类型确定电路,用于在目标块和它的两个场块的相关程度的基础上选择基于帧或是基于场的编码类型作为其编码类型,其中上述两个场块分别包含目标块的每个奇数行和每个偶数行,每个场块有M/2×N个象素,编码类型指明用于目标块编码的是基于帧的编码原则和基于场的编码原则中的哪一个;一场未更新确定电路,用于判断是否两个场块对应于一场未更新,其中上述一场未更新表示两个场块中至少有一个可用最相似候选场块来替代;一场未更新编码电路,用于找出顶或底和场BAB类型,其中上述顶或底指明两个场块中哪一个可被最相似候选场块替代,场BAB类型表示未被顶或底说明的另一个场块的编码条件;多路转换器,用于多路转换非数据BAB类型、编码类型、BAB类型、顶或底、和/或场BAB类型。
12.如权利要求11中所述的设备,其中一场未更新确定电路包括参照当前图像的一个或多个参考图像而对上述两个场块中的每一个进行运动估计的装置,它可以产生最相似候选场块;计算上述每个场块与最相似候选场块间的场误差以将上述每个场块的场误差与另一个预定阈值作比较的装置;确定上述每个场块为未更新场的装置,其中未更新场表示上述每个场块被最相似候选场块所替代;分配一场未更新给上述两个场块的装置。
13.如权利要求12中所述的设备,其中一场未更新编码电路包括检测另一个场块的场BAB类型是否是‘2’或‘3’以产生全0/全255信号的装置,其中场BAB类型‘2’表示另一个场块与第一参考块之间的误差不大于预定阈值,而场BAB类型‘3’表示另一个场块与第二参考块之间的误差不大于预定阈值;每个参考块有M×N个象素,且第一和第二参考块中所有象素分别有第一和第二二进制值;对另一个场块设置未更新场信号的装置,其中未更新场表示另一个场块的场误差小于预定阈值,这样另一个场块被最相似候选场块所替代;计算另一个场块的运动向量和它在基于场的运动估计的基础上的估计因子之间的场MVDs,以产生场MVD信号的装置,其中场MVD信号指明是否场MVDs是零;如果该MVDs不是零则对该另一个场块的MVDs进行编码,以产生场MVD数据的装置;产生场内部编码数据和场相互编码数据的装置,其中场内部编码数据的产生是基于当前图像的预定象素对另一个场块的象素进行编码而得到的,相互编码数据是在当前图像中预定象素和另一个场块的最相似候选场块的基础上,对另一个场块的象素进行编码而产生的;产生场内部/相互信号的装置,其中场内部/相互信号是在选择了场内部编码数据或场相互编码数据时产生的;根据全0/全255信号、场MVD信号、未更新场信号和/或场内部/相互信号判断场BAB类型的装置。
14.如权利要求13中所述的设备,其中内部编码数据的产生是通过基于内部上下文的算术编码(CAE)方法,而相互编码数据的产生是通过相互CAE方法。
15.如权利要求11中所述的设备,其中未更新BAB类型包括BAB类型‘2’或‘3’,其中BAB类型‘2’表示目标块与第一参考块之间的误差不大于预定阈值,BAB类型‘3’表示目标块与第二参考块之间的误差不大于预定阈值,每个参考块有M×N个象素,第一和第二参考块的所有象素分别具有第一和第二二进制值。
16.如权利要求15中所述的设备,其中未更新BAB类型进一步包括BAB类型‘0’,这代表目标块的运动向量和它的运动向量估计因子之间的形状运动向量差(MVDs)是零,且目标块与最相似候选块间的误差不大于预定阈值,其中最相似候选块有M×N个象素,它在当前图像的一个或多个参考图象的多个候选块中产生最小误差。
17.如权利要求16中所述的设备,其中上述BAB类型‘0’被以下装置确定对目标块进行运动估计的装置,它参照上述当前图像的一个或多个参考图像进行运动估计以产生包括最相似候选块和运动向量的运动向量信息;计算目标块和最相似候选块之间的误差以及运动向量和它的估计因子之间的MVDs的装置;分别比较MVDs和目标块的误差与零和预定阈值的装置;确定目标块为未更新的装置,其中未更新代表目标块被最相似候选块所替代。
18.如权利要求11中所述的设备,还包括基于帧的编码电路,用于利用基于帧的编码原则对目标块进行编码,以产生具有帧编码数据的BAB类型,其中BAB类型表示帧编码数据的编码条件;基于场的编码电路,用于利用基于场的编码原则对所述两个场块进行编码,以产生具有场编码数据的BAB类型,其中BAB类型表示场编码数据的编码条件。
19.如权利要求18中所述的设备,其中基于帧的编码电路确定BAB类型‘1’,‘4’,‘5’和‘6’中的一个作为目标块的BAB类型,其中BAB类型‘1’,‘4’,‘5’和‘6’分别是”“MVDs≠0且未更新”,“内部CAE”,“MVDs=0且相互CAE”和“MVDs≠0且未更新。”
20.如权利要求18所述的设备,其中基于场的编码电路确定BAB类型‘4’,‘5’和‘6’中的一个作为两个场块的BAB类型,其中BAB类型‘4’,‘5’和‘6’分别是“内部CAE”,“MVDs=0且相互CAE”和“MVDs≠0且未更新。”
全文摘要
一种对交错形状信号的目标块的BAB类型进行编码的方法。在判定为未更新BAB类型之后,根据目标块和它的两个场块间的相关程度选择基于帧或基于场的编码类型。如果选择基于场的编码类型,则判断是否上述两个场块对应于一场未更新,说明上述两个场块中至少有一个场块需要传送附加的数据。如果上述两个场块被判定为一场未更新,则检测顶或底和场BAB类型并编码。
文档编号H04N7/26GK1224977SQ98102780
公开日1999年8月4日 申请日期1998年7月7日 优先权日1998年1月31日
发明者赵晟烈 申请人:大宇电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1