一种边界滤波强度的确定方法及装置与流程

文档序号:11263871阅读:179来源:国知局
一种边界滤波强度的确定方法及装置与流程

本发明涉及视频编解码技术领域,特别涉及一种边界滤波强度的确定方法及装置。



背景技术:

在现代视频编解码领域中,基于块的变换编码在图像压缩编码中得到广泛应用,随着码率的降低,量化变得粗糙,在块的边界会出现不连续,形成重建图像的明显缺陷,称为块效应。

在现代视频编解码标准中,通常会增加去块效应的模块,用于减少块效应,例如h.264、h.265、avs、vpx系列等都内置有去块效应滤波器。去块效应滤波器的作用为确定滤波强度,以及根据确定的滤波强度对变换块的边界进行滤波。其中,在h.264标准中,视频的编码单元块为16*16大小的宏块,其对应的一组变换块可以为4个8*8大小的变换块或16个4*4大小的变换块;在h.265标准中,视频的编码单元块为64*64、32*32、16*16或8*8大小的编码单元cu(codingunit),其对应的一组变换块可以为其本身或四叉树划分得到的、且存在未被划分的各层变换单元tu(transformunit)。

目前,现有的边界滤波强度是根据变换块的编码参数确定的,如边界两侧的变换块是否有帧内编码模式,边界两侧变换块是否有非零dct(discretecosinetransform,离散余弦变换)系数或边界两侧变换块的运动参数是不是差别较大等等。其中,对于1个变换块,若该变换块存在非零dct系数,则将其对应的cbf(codedblockflag,编码块标志)的值设为1,否则设为0,并将cbf存储在提前开辟的缓存区中。

当决定一个变换块边界的去块效应滤波强度时,例如针对一个长度为32的边界,需要将该边界划分为8个长度为4的边界,针对8个边界,逐个判断长度为4的边界相邻两侧的变换块对应的cbf值,是否至少有一个为1。如果至少有一个为1,将去块效应滤波器的滤波强度确定为1(对h.265标准而言)或2(对h.264标准而言),否则设为0。可见,现有的方法,是串行判断并确定出这8个长度为4的边界的滤波强度的,导致滤波强度的确定过程所消耗的时间较多,降低了视频的编解码速度。



技术实现要素:

本发明实施例的目的在于提供一种边界滤波强度的确定方法及装置,以减少滤波强度确定过程所消耗的时间。

为达到上述目的,本发明实施例公开了一种边界滤波强度的确定方法,应用于视频编解码设备,方法包括:

获得目标视频编解码过程中得到的重建图像中每个编码单元块对应的一组变换块;

获得该组变换块中每个变换块对应的cbf值;

将每个变换块对应的cbf值按预设顺序组合为一个cbf码字,其中,所述cbf码字的每一位对应一个变换块的cbf值;

并行将所述cbf码字与预先构建的边界常量表中的每一项进行指定运算,分别得到每个所述边界对应的运算结果;所述的边界常量表中的每一项为每个边界的常量值,所述边界常量表中的常量值为预先根据边界相邻的块对应的cbf值在cbf码字中的位置确定的;

根据所述运算结果,分别确定每个所述边界的滤波强度。

较佳的,当利用h.264标准,对目标视频进行编解码时,所述编码单元块为:宏块;

所述cbf码字的位数根据每组变换块中变换块的数量确定。

较佳的,所述将每个变换块对应的cbf值按预设顺序组合为一个cbf码字,包括:

针对每个编码单元块对应的一组变换块,如果该组变换块的个数为4,则将该组变换块分别对应的4个cbf值以及4个0作为8个比特位数据,按照预设顺序,组合成一个1字节大小的cbf码字;

或,

针对每个编码单元块对应的一组变换块,如果该组变换块的个数为16,则将该16个变换块各自对应的16个cbf值作为16个比特位数据,按照预设顺序,组合成一个2字节大小的cbf码字。

较佳的,当利用h.265标准,对目标视频进行编解码时,所述编码单元块为:编码单元cu;

所述将每个变换块对应的cbf值按预设顺序组合为一个cbf码字,包括:

如果未对所述编码单元进行四叉树划分,则将自身作为所述一组变换块,利用该编码单元对应的cbf值以及0,按照预设顺序,组合为一个1字节大小的cbf码字;

或,

将利用四叉树划分得到的各层变换单元tu作为所述一组变换块,利用各层tu分别对应的cbf值以及0,按照预设顺序组合为1个cbf码字,其中,被划分了的该层tu对应的cbf值设为0,且四叉树划分的tu总层数不大于3。

较佳的,所述边界常量表中的常量值为预先根据边界相邻的块对应的cbf值在cbf码字中的位置确定的,具体包括:

当利用h.264标准,对目标视频进行编解码时,判断该边界与所述一组变换块中的1个变换块是否相邻;

如果是,则将(1<<(k-1))确定为该边界的常量值,其中,k为与该边界相邻的变换块对应的cbf值在cbf码字中的比特位数;

否则,将(1<<(m-1))+(1<<(n-1)),确定为该边界的常量值,其中,m为与该边界相邻的2个变换块中1个变换块对应的cbf值在cbf码字中的比特位数,n为与该边界相邻的2个变换块中另1个变换块对应的cbf值在cbf码字中的比特位数。

较佳的,所述边界常量表中的常量值为预先根据边界相邻的块对应的cbf值在cbf码字中的位置确定的,具体包括:

当利用h.265标准,对目标视频进行编解码时,针对每一条边界,初始化该边界的常量值为0;

逐层遍历每一层中所有的变换单元tu,以判断所述边界是否为其中一个tu的边界;

如果是,将所述边界的当前常量值加(1<<(a-1)),其中,a为该边界所属的tu对应的cbf值在cbf码字中的比特位数;

将遍历完成得到的常量值,确定为所述边界的常量值。

较佳的,所述指定运算为:与运算,

所述根据所述运算结果,分别确定每个所述边界的滤波强度,包括:

针对每个所述边界,若所述边界对应的运算结果为0,则将0确定为所述边界的滤波强度,否则,将1确定为该边界的滤波强度。

为达到上述目的,本发明实施例公开了一种边界滤波强度的确定装置,应用于视频编解码设备,装置包括:

第一获得模块,用于获得目标视频编解码过程中得到的重建图像中每个编码单元块对应的一组变换块;

第二获得模块,用于获得该组变换块中每个变换块对应的cbf值;

组合模块,用于将每个变换块对应的cbf值按预设顺序组合为一个cbf码字,其中,所述cbf码字的每一位对应一个变换块的cbf值;

运算模块,用于并行将所述cbf码字与预先构建的边界常量表中的每一项进行指定运算,分别得到每个所述边界对应的运算结果;所述的边界常量表中的每一项为每个边界的常量值,所述边界常量表中的常量值为预先根据边界相邻的块对应的cbf值在cbf码字中的位置确定的;

确定模块,用于根据所述运算结果,分别确定每个所述边界的滤波强度。

较佳的,当利用h.264标准,对目标视频进行编解码时,所述编码单元块为:宏块;

所述cbf码字的位数根据每组变换块中变换块的数量确定。

较佳的,所述组合模块,具体用于:

针对每个编码单元块对应的一组变换块,如果该组变换块的个数为4,则将该组变换块分别对应的4个cbf值以及4个0作为8个比特位数据,按照预设顺序,组合成一个1字节大小的cbf码字;

或,

针对每个编码单元块对应的一组变换块,如果该组变换块的个数为16,则将该16个变换块各自对应的16个cbf值作为16个比特位数据,按照预设顺序,组合成一个2字节大小的cbf码字。

较佳的,当利用h.265标准,对目标视频进行编解码时,所述编码单元块为:编码单元cu;

所述组合模块,具体用于:

如果未对所述编码单元进行四叉树划分,则将自身作为所述一组变换块,利用该编码单元对应的cbf值以及0,按照预设顺序,组合为一个1字节大小的cbf码字;

或,

将利用四叉树划分得到的各层变换单元tu作为所述一组变换块,利用各层tu分别对应的cbf值以及0,按照预设顺序组合为1个cbf码字,其中,被划分了的该层tu对应的cbf值设为0,且四叉树划分的tu总层数不大于3。

较佳的,所述运算模块,具体用于:

当利用h.264标准,对目标视频进行编解码时,判断该边界与所述一组变换块中的1个变换块是否相邻;

如果是,则将(1<<(k-1))确定为该边界的常量值,其中,k为与该边界相邻的变换块对应的cbf值在cbf码字中的比特位数;

否则,将(1<<(m-1))+(1<<(n-1)),确定为该边界的常量值,其中,m为与该边界相邻的2个变换块中1个变换块对应的cbf值在cbf码字中的比特位数,n为与该边界相邻的2个变换块中另1个变换块对应的cbf值在cbf码字中的比特位数。

较佳的,所述运算模块,具体用于:

当利用h.265标准,对目标视频进行编解码时,针对每一条边界,初始化该边界的常量值为0;

逐层遍历每一层中所有的变换单元tu,以判断所述边界是否为其中一个tu的边界;

如果是,将所述边界的当前常量值加(1<<(a-1)),其中,a为该边界所属的tu对应的cbf值在cbf码字中的比特位数;

将遍历完成得到的常量值,确定为所述边界的常量值。

较佳的,所述指定运算为:与运算,

所述确定模块,具体用于:

针对每个所述边界,若所述边界对应的运算结果为0,则将0确定为所述边界的滤波强度,否则,将1确定为该边界的滤波强度。

由上述的技术方案可见,本发明实施例提供了一种边界滤波强度的确定方法及装置,应用于视频编解码设备,获得目标视频编解码过程中得到的重建图像中每个编码单元块对应的一组变换块;获得该组变换块中每个变换块对应的cbf值;将每个变换块对应的cbf值按预设顺序组合为一个cbf码字,其中,所述cbf码字的每一位对应一个变换块的cbf值;并行将所述cbf码字与预先构建的边界常量表中的每一项进行指定运算,分别得到每个所述边界对应的运算结果;所述的边界常量表中的每一项为每个边界的常量值,所述边界常量表中的常量值为预先根据边界相邻的块对应的cbf值在cbf码字中的位置确定的;根据所述运算结果,分别确定每个所述边界的滤波强度。

本发明实施例中,将一组中每个变换块对应的cbf值按预设顺序组合为一个cbf码字,并行将所述cbf码字与预先构建的边界常量表中的每一项进行指定运算,再根据运算结果,分别确定每个所述边界的滤波强度。由于整个运算过程是并行进行的,无需串行判断并确定出各个边界的滤波强度,从而减少滤波强度的确定过程所消耗的时间,提高了视频的编解码速度。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的边界滤波强度的确定方法的一种流程示意图;

图2为一种16个4*4大小的变换块的组成示意图;

图3为本发明实施例提供的一种编码单元cu的划分示意图;

图4为本发明实施例提供的边界滤波强度的确定装置的一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面首先对本发明实施例提供的一种边界滤波强度的确定方法进行详细说明。

需要说明的是,本发明实施例优选适用于视频编解码设备。例如,基于h.264视频编解码标准或h.265视频编解码标准的视频编解码设备。

参见图1,图1为本发明实施例提供的边界滤波强度的确定方法的一种流程示意图,可以包括如下步骤:

s101,获得目标视频编解码过程中得到的重建图像中每个编码单元块对应的一组变换块;

具体的,当利用h.264标准,对目标视频进行编解码时,所述编码单元块为:大小为16*16的宏块,其对应的一组变换块可以是4个大小为8*8的变换块,或者16个大小为4*4的变换块。

具体的,当利用h.265标准,对目标视频进行编解码时,所述编码单元块称为:编码单元cu,大小可以为64*64、32*32、16*16或者8*8,其对应的变换块称为变换单元tu。

s102,获得该组变换块中每个变换块对应的cbf值;

具体的,对于1个变换块,若该变换块存在非零dct系数,则将其对应的cbf的值设为1,否则设为0,并将cbf存储在提前开辟的缓存区中。在实际应用中,可以从该缓存区中,获得上述一组变换块中每个变换块对应的cbf值。

s103,将每个变换块对应的cbf值按预设顺序组合为一个cbf码字,其中,所述cbf码字的每一位对应一个变换块的cbf值;

具体的,所述cbf码字的位数是根据每组变换块中变换块的数量确定的。

具体的,在h.264视频编解码标准中,所述将每个变换块对应的cbf值按预设顺序组合为一个cbf码字,可以针对每个编码单元块对应的一组变换块,如果该组变换块的个数为4,则将该组变换块分别对应的4个cbf值以及4个0作为8个比特位数据,按照预设顺序,组合成一个1字节大小的cbf码字,其中,按照预设顺序进行组合,可以为:将4个8*8的变换块的cbf值置于1个字节的最后4个比特(即第1位到第4位),该字节的前4个比特置0(即第5位到第8位),此时cbf码字的位数是8(cbf码字的大小不够一个1字节的,可以将比特位置0,使其大小达到1字节);

或,

针对每个编码单元块对应的一组变换块,如果该组变换块的个数为16,则将该16个变换块各自对应的16个cbf值作为16个比特位数据,按照预设顺序,组合成一个2字节大小的cbf码字。其中,预设顺序,可以是16个4*4的变换块的排序。

示例性的,图2为一种16个4*4大小的变换块的组成示意图。如图2所示,每1个面积最小的正方形代表1个4*4的边界块,是由1个的16*16的宏块划分而成。变换块中心的数字序号0、1、2……14、15,分别代表变换块0、变换块1、变换块2……变换块14和变换块15。

该16个4*4的变换块排序依次为:变换块0(对应的cbf值为c0)、变换块1(对应的cbf值为c1)、变换块2(对应的cbf值为c2)、……、变换块14(对应的cbf值为c14)、变换块15(对应的cbf值为c15)。由变换块排序,对应得到该16个变换块分别对应的cbf值的预设顺序为:c15(置于2个字节的第16个比特位)、c14(置于2个字节的第15个比特位)、……、c2(置于2个字节的第3个比特位)、c1(置于2个字节的第25个比特位)、c0(置于2个字节的第1个比特位)。按照该预设顺序,组合成1个2字节大小的cbf码字,该cbf码字为:c15c14c13c12c11c10c9c8c7c6c5c4c3c2c1c0。

另外,位于变换块边界上的数字序号0、1、2、……、38、39,分别代表边界0、边界1、边界2、……、边界38和边界39,共40个长度为4的边界。

具体的,在h.265视频编解码标准中,所述将每个变换块对应的cbf值按预设顺序组合为一个cbf码字,如果未对所述编码单元进行四叉树划分,则将自身作为所述一组变换块,利用该编码单元对应的cbf值以及0,按照预设顺序,组合为一个1字节大小的cbf码字,其中,按照预设顺序组合成一个1字节大小的cbf码字,可以为:将该编码单元cu对应的cbf值置于1个字节的第1个比特位,该字节的其余比特位置0;

或,

将利用四叉树划分得到的各层变换单元tu作为所述一组变换块,利用各层tu分别对应的cbf值以及0,按照预设顺序组合为1个cbf码字,其中,被划分了的该层tu对应的cbf值设为0,且四叉树划分的tu总层数不大于3。

具体的,当利用h.265标准,对目标视频进行编解码时,针对每个编码单元块cu,如果利用四叉树将所述cu划分为两层,则将所述cu对应的第二层4个变换单元tu,作为所述一组变换块,并利用第二层tu分别对应的cbf值以及0,按照预设顺序,组成一个1字节大小的cbf码字。

其中,由于第一层cu被划分成4个tu,可以把第一层cu对应的cbf值设为0,将其放在1个字节的第1位,将第二层4个tu对应的4个cbf值依次放在第2位至第5位,字节的其余比特位置0,以组成一个1字节大小的cbf码字。

如果,利用四叉树将所述cu划分为三层且存在未被划分的第二层tu,则将所述cu对应的、存在的第二层tu和第三层tu,作为所述一组变换块,并利用存在的各层tu分别对应的cbf值以及0,按照预设顺序,组成一个3字节大小的cbf码字。

其中,由于第一层cu被划分为4个tu,可以将第一层cu对应的cbf值设为0,将其放在3个字节的第1个比特位,将第二层tu分别对应的cbf值放在该3个字节的第2位至第5位,其中,将第二层4个tu中、被划分了的tu对应的cbf值设为0。然后,将划分到的第三层tu对应的cbf值,可以从第6位开始依次放置完,最后将该3个字节的其余比特位置0,以组成1个3字节大小的cbf码字。或者,将划分到的第三层tu对应的cbf值,可以从第9位开始依次放置完,最后将该3个字节的空余比特位置0。

示例性的,图3为本发明实施例提供的一种编码单元cu的划分示意图。如图3所示,0、1、2、3、4、5、6、7、8、9、10、……、14、15、16、17、18、19、20、21、……、30、31、32、33、34、35分别代表边界的序号,a、b、c、d、e、f、g、h、i、j、k、l、m分别代表划分得到的变换单元tu,其中,第一层cu被划分为4个第二层tu,第二层tu中的3个tu又被划分为第三层12个tu,变换单元i未被划分。

由前述可知,利用四叉树将所述cu划分为三层且存在未被划分的第二层tu的情况下,组成的一个3字节大小的cbf码字可以为:000cmclckcj0000chcgcfcecdcccbca0ci000,或者cmclckcj0000chcgcfcecdcccbca0000ci000。其中,cm、cl、ck、cj、ch、cg、cf、ce、cd、cc、cb、ca、ci分别为变换单元m、l、k、j、h、g、f、e、d、c、b、a、i分别对应的cbf值。

并且,该cbf码字的第1比特位的0表示第一层tu(即cu本身)对应的cbf值,第2比特位的0表示a、b、c、d组成的第二层1个tu(即该tu被划分为了第三层的变换单元a、b、c、d)所对应的cbf值,第3比特位的0表示e、f、g、h组成的第二层另个tu对应的cbf值,第5比特位的0表示表示j、k、l、m组成的第二层再一个tu对应的cbf值,位于cj和ch中间的4个0表示由于第二层变换单元i未被四叉树划分、导致未划分到的4个不存在的第三层tu所对应的cbf值,其余比特位的0均无实际意义。

如果,利用四叉树将所述cu划分为三层且不存在未被划分的第二层tu,则将所述cu对应的第三层16个tu,作为所述一组变换块,并利用第三层tu分别对应的cbf值以及0,按照预设顺序,组成一个3字节大小的cbf码字。

其中,由于第一层cu被划分为4个tu,该4个第二层的tu又被划分成总共16个第三层的tu,则可以将第一层tu对应的1个cbf值设为0,将其放在3个字节的第1个比特位,将第二层tu对应的4个cbf值也设为0,将该4个0放在该3个字节的第2位至第5位,将第三层16个tu分别对应的cbf值依次放在该3个字节的第6位至第21位,其余比特位置0,以组成一个3字节大小的cbf码字。

需要说明的是,将每个变换块对应的cbf值按预设顺序组合为一个cbf码字,具体按照哪种预设顺序,需要根据所使用的视频编解码标准,以及每组变换块或每组变换单元tu的划分情况来确定,上述所给出的预设顺序仅仅作为示例,并不应该构成对本发明实施例的限定。

s104,并行将所述cbf码字与预先构建的边界常量表中的每一项进行指定运算,分别得到每个所述边界对应的运算结果;所述的边界常量表中的每一项为每个边界的常量值,所述边界常量表中的常量值为预先根据边界相邻的块对应的cbf值在cbf码字中的位置确定的;

具体的,所述边界常量表中的常量值为预先根据边界相邻的块对应的cbf值在cbf码字中的位置确定的,具体包括:

当利用h.264标准,对目标视频进行编解码时,判断该边界与所述一组变换块中的1个变换块是否相邻;

其中,该组变换块为4个,该边界可以与其中的1个变换块相邻(可理解为该边界仅属于其中1个变换块的边界),或者与其中的2个变换块相邻(可理解为该边界属于这2个变换块的共有边界)。

如果是,则将(1<<(k-1))确定为该边界的常量值,其中,k为与该边界相邻的变换块对应的cbf值在cbf码字中的比特位数;

否则,将(1<<(m-1))+(1<<(n-1)),确定为该边界的常量值,其中,m为与该边界相邻的2个变换块中1个变换块对应的cbf值在cbf码字中的比特位数,n为与该边界相邻的2个变换块中另1个变换块对应的cbf值在cbf码字中的比特位数。

示例性的,如图2所示,在一组变换块为16个4*4变换块的情况下,由上述可知,组合得到的cbf码字为c15c14c13c12c11c10c9c8c7c6c5c4c3c2c1c0。其中,边界29相邻的2个变换块为变换块3和变换块9,分别对应的cbf值在cbf码字中比特位数,分别是4和10,即m=4、n=10,或者m=10、n=4。则确定出,边界29的常量值(1<<(m-1))+(1<<(n-1))=(1<<3)+(1<<9)。同理,可确定边界34的常量值为(1<<12)+(1<<14),边界1的常量值(1<<(k-1))=(1<<2)。

具体的,所述边界常量表中的常量值为预先根据边界相邻的块对应的cbf值在cbf码字中的位置确定的,具体可以包括:

当利用h.265标准,对目标视频进行编解码时,针对每一条边界,初始化该边界的常量值为0;

逐层遍历每一层中所有的变换单元tu,以判断所述边界是否为其中一个tu的边界;

如果是,将所述边界的当前常量值加(1<<(a-1)),其中,a为该边界所属的tu对应的cbf值在cbf码字中的比特位数;

将遍历完成得到的常量值,确定为所述边界的常量值。

示例性的,如图3所示,在将所述cu划分为三层且存在未被划分的第二层tu的情况下,组成的cbf码字可以为:000cmclckcj0000chcgcfcecdcccbca0ci000,或者cmclckcj0000chcgcfcecdcccbca0000ci000。

以组成的cbf码字为000cmclckcj0000chcgcfcecdcccbca0ci000为例进行说明。针对边界0,初始化其在常量表中的常量值为0,逐层遍历每一层中的所有tu,首先判断出该边界0是其中第一层最大的tu(其对应的cbf值在cbf码字中的比特位数为1)的边界,则将边界0的当前常量值加上1,得到常量值为1。然后,判断出该边界是其中第二层第1个被划分了的tu(其对应的cbf值在cbf码字中的比特位数为2)的边界,则将当前常量值1再加上(1<<1),得到常量值为1+(1<<1)。最后,又判断出边界0是第三层第1个tu(其对应的cbf值在cbf码字中的比特位数为6)的边界,则将当前常量值1+(1<<1)再加上(1<<5),最终遍历完成,得到的边界0在边界常量表中的常量值即为1+(1<<1)+(1<<5)。

同理,可得到其他任一边界的常量值。例如,边界2或3是第一层1个tu、第二层1个未被划分的tu所共有的边界,其所属的第一层tu对应的cbf值在cbf码字中的比特位数为1,该边界所属的第二层变换单元i对应的cbf值在cbf码字中的比特位数为4。并且,边界2还是第二层变换单元i对应的、没划分到的第三层四个tu中第一个tu(i没被划分到第三层,没划分到的第三层4个tu类似于a、b、c、d,第一个tu类似于a、e、j,图3中未示出)的边界,该第一个tu对应的cbf值(由于该tu没划分到,其cbf值设为0)在cbf码字中的比特位数为14,则将1+(1<<3)+(1<<13),确定为边界2的常量值。然而,边界3属于第二层变换单元i对应的、没划分到的第三层四个tu中的第三个tu(类似于c、g、l,图中未示出),其对应的cbf值在cbf码字中的位数为16,故将1+(1<<3)+(1<<15)确定为边界3的常量值。

边界4只是第三层变换单元a和b共有的边界,其中,变换单元a和b分别对应的cbf值在cbf码字中的比特位数分别是6和7,则将(1<<5)+(1<<6)确定为边界4的常量值。

边界5所属的第三层变换单元c对应的cbf值在cbf码字中的比特位数为8,该边界所属的第三层变换单元d对应的cbf值在cbf码字中的比特位数为9,则将(1<<7)+(1<<8),确定为边界5的常量值。

同时,针对边界7,它是第二层2个tu、第三层2个tu共4个tu所共有的边界。其所属的第二层被划分了的2个tu所分别对应的cbf值在cbf码字中的比特位数分别是2和3,所属的第三层的2个tu所分别对应的cbf值在cbf码字中的比特位数分别是9和12,则最终边界7的常量值是(1<<1)+(1<<2)+(1<<8)+(1<<11)。

再如,边界8在第二层是块i和块jklm(被划分为了j、k、l、m四个第三层的块)的共有边界,块i和块jklm对应的cbf值在cbf码字中的比特位数分别为4和5。在第三层,它是变换单元i对应的、没划分到的第三层四个tu中的第二个tu(类似于b、f、k,图中未示出)和块j的公共边界,块i对应的、未划分到的第三层第二个tu和块j对应的cbf值在cbf码字中的位数分别是15和18,则将(1<<3)+(1<<4)+(1<<14)+(1<<17),确定为边界8的常量值。

s105,根据所述运算结果,分别确定每个所述边界的滤波强度。

具体的,所述指定运算为:与运算,

所述根据所述运算结果,分别确定每个所述边界的滤波强度,包括:

针对每个所述边界,若所述边界对应的运算结果为0,则将0确定为所述边界的滤波强度,否则,将1确定为该边界的滤波强度。

示例性的,如图3所示,以cbf码字为000cmclckcj0000chcgcfcecdcccbca0ci000=000000000000000000001000为例,并行将该cbf码字与每个边界的常量值进行与运算,分别得到每个边界对应的运算结果,在根据所述运算结果,分别确定每个边界的滤波强度。例如,将该cbf码字与边界2的常量值1+(1<<3)+(1<<13)进行与运算,运算结果为000000000000000000001000,可见不为0,此时可以将1确定为边界2的滤波强度。同理,可以同时确定出其他每个边界的滤波强度。

可见,将一组中每个变换块对应的cbf值按预设顺序组合为一个cbf码字,并行将所述cbf码字与预先构建的边界常量表中的每一项进行指定运算,在根据运算结果,分别确定每个所述边界的滤波强度。由于整个运算过程是并行进行的,无需串行判断并确定出各个边界的滤波强度,从而减少滤波强度的确定过程所消耗的时间,提高了视频的编解码速度。

参见图4,图4为本发明实施例提供的边界滤波强度的确定装置的一种结构示意图,与图1所示的流程相对应,该确定装置可以包括:第一获得模块401、第二获得模块402、组合模块403、运算模块404和确定模块405。

第一获得模块401,用于获得目标视频编解码过程中得到的重建图像中每个编码单元块对应的一组变换块;

第二获得模块402,用于获得该组变换块中每个变换块对应的cbf值;

组合模块403,用于将每个变换块对应的cbf值按预设顺序组合为一个cbf码字,其中,所述cbf码字的每一位对应一个变换块的cbf值;

运算模块404,用于并行将所述cbf码字与预先构建的边界常量表中的每一项进行指定运算,分别得到每个所述边界对应的运算结果;所述的边界常量表中的每一项为每个边界的常量值,所述边界常量表中的常量值为预先根据边界相邻的块对应的cbf值在cbf码字中的位置确定的;

确定模块405,用于根据所述运算结果,分别确定每个所述边界的滤波强度。

具体的,当利用h.264标准,对目标视频进行编解码时,所述编码单元块为:宏块;

所述cbf码字的位数根据每组变换块中变换块的数量确定。

具体的,所述组合模块403,具体用于:

针对每个编码单元块对应的一组变换块,如果该组变换块的个数为4,则将该组变换块分别对应的4个cbf值以及4个0作为8个比特位数据,按照预设顺序,组合成一个1字节大小的cbf码字;

或,

针对每个编码单元块对应的一组变换块,如果该组变换块的个数为16,则将该16个变换块各自对应的16个cbf值作为16个比特位数据,按照预设顺序,组合成一个2字节大小的cbf码字。

具体的,当利用h.265标准,对目标视频进行编解码时,所述编码单元块为:编码单元cu;

所述组合模块403,具体用于:

如果未对所述编码单元进行四叉树划分,则将自身作为所述一组变换块,利用该编码单元对应的cbf值以及0,按照预设顺序,组合为一个1字节大小的cbf码字;

或,

将利用四叉树划分得到的各层变换单元tu作为所述一组变换块,利用各层tu分别对应的cbf值以及0,按照预设顺序组合为1个cbf码字,其中,被划分了的该层tu对应的cbf值设为0,且四叉树划分的tu总层数不大于3。

具体的,所述运算模块404,具体用于:

当利用h.264标准,对目标视频进行编解码时,判断该边界与所述一组变换块中的1个变换块是否相邻;

如果是,则将(1<<(k-1))确定为该边界的常量值,其中,k为与该边界相邻的变换块对应的cbf值在cbf码字中的比特位数;

否则,将(1<<(m-1))+(1<<(n-1)),确定为该边界的常量值,其中,m为与该边界相邻的2个变换块中1个变换块对应的cbf值在cbf码字中的比特位数,n为与该边界相邻的2个变换块中另1个变换块对应的cbf值在cbf码字中的比特位数。

具体的,所述运算模块404,具体用于:

当利用h.265标准,对目标视频进行编解码时,针对每一条边界,初始化该边界的常量值为0;

逐层遍历每一层中所有的变换单元tu,以判断所述边界是否为其中一个tu的边界;

如果是,将所述边界的当前常量值加(1<<(a-1)),其中,a为该边界所属的tu对应的cbf值在cbf码字中的比特位数;

将遍历完成得到的常量值,确定为所述边界的常量值。

具体的,所述指定运算为:与运算,

所述确定模块405,具体用于:

针对每个所述边界,若所述边界对应的运算结果为0,则将0确定为所述边界的滤波强度,否则,将1确定为该边界的滤波强度。

可见,将一组中每个变换块对应的cbf值按预设顺序组合为一个cbf码字,并行将所述cbf码字与预先构建的边界常量表中的每一项进行指定运算,在根据运算结果,分别确定每个所述边界的滤波强度。由于整个运算过程是并行进行的,无需串行判断并确定出各个边界的滤波强度,从而减少滤波强度的确定过程所消耗的时间,提高了视频的编解码速度。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:rom/ram、磁碟、光盘等。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1