专利名称:一种帧内划分标志的编解码方法及装置的制作方法
技术领域:
本发明属于视频编解码领域,尤其涉及一种帧内划分标志的编解码方法及装置。
背景技术:
为了更高效的压缩高分辨率视频,正在制定中(2010 2013)的下一代国际视频标准-高效视频编码标准01evc)中,引入了编码单元的概念。具体来说,一帧图像可以分成若干个片(slice),每个slice由片头(slice header)和片数据(slice data)组成,一个slice又可以包括多个最大编码单元(largest coding unit, ixu),每个ixu根据图像区域纹理特性可以进一步划分成更小的编码单元cu,划分方式采用递归四叉树方式。对每个lcu来说,除最大深度外每个深度都存在一个划分标志用来表示该深度(层)对应的cu是否进行四叉树分割,划分标志为i时表示对该层需要进行四叉树分割,为0时表示对该层不进行四叉树分割,深度0即指根层。为表示这种递归四叉树划分方式,hevc引入了一个新的语法元素,名称为编码单元划分标志(split_coding_unit_flag,以下简称划分标志),该语法元素用于标识一个编码单元是否进行四叉树划分。巾贞内预测模式下,当前hevc参考软件hm3.0对split_coding_unit_f lag采用逐层编码方式,先编码深度0(即第i层ixu)的划分标志split_coding_unit_flag,如果深度0划分标志为1,表示允许对ixu的深度0进行四叉树划分,并编码深度0划分标志,依次递归下去,直至允许的最大分割深度maxpartitiondepth为止。一方面,对一个较大图像区域来说,通常情况下存在着图像纹理特性差异,因而进行四叉树划分的可能性较大;另一方面,编码图像存在的时间相关性会影响相邻帧相同位置编码块的划分方式。
发明内容
有鉴于此,本发明的主要目的在于提供一种帧内划分标志的编解码方法及装置,用于解决现有编码方法压缩编码效率低的技术问题。为达到上述目的,本发明的技术方案是这样实现的:基于本发明实施例提供一种巾贞内划分标志的编码方法,该方法包括:a、初始化当前编码图像第一个最大编码单元ixu地址currlcuaddr和根层划分标志为 0 的 lcu 数目 split_root_counter 为 0 ;b、获取当前编码ixu根层划分标志;c、如果当前编码ixu根层划分标志为1,则执行步骤e,否则执行步骤d ;d、如果split_root_counter为0,则保存当前编码lqj地址并递增split_root_counter,然后执行步骤f ;否则,如果split_root_counter大于0,则保存当前编码lcu与前一个根层划分标志为0的ixu地址之差并递增split_root_counter,然后执行步骤f ;e、根据ixu划分情况,递归编码除根层之外的其余各层划分标志;f、如果当前编码ixu是图像最后一个ixu,则执行步骤g,否则,递增ixu地址currlcuaddr后,执行步骤b ;
g、在片头 slice header 编码 spiit_root_counter ;h、如果split_root_counter为0,则处理完毕;否则,对第i个根层划分标志为0的lcu在slice header编码其地址,对其他根层划分标志为0的lcu在slice header编码其与前一个根层划分标志为0的ixu的地址之差,处理完毕。进一步地,在步骤a和步骤b之间还包括如下判断步骤:ab1、如果编码图像每ixu行包括非整数个ixu且当前编码ixu属于图像右边界ixu或编码图像每ixu列包括非整数个ixu且当前编码ixu属于下边界ixu,则执行步骤e,否则执行步骤b ;相应地,步骤f中,如果当前编码ixu不是图像最后一个ixu,则递增ixu地址后,执行步骤abi。进一步地,在步骤c和步骤e之间,即如果当前编码ixu根层划分标志为i时,在执行步骤e之前还包括下述步骤cel和ce2:ce1、获取当前编码ixu深度i的四个编码单元⑶的划分标志splitflagod印1、splitflagldepu splitflag2depl 和 splitflag3depl,计算出当前编码 ixu 深度 i 划分标志之和 uisumsplitflagdepl ;ce2、如果当前编码图像是序列第i个编码图像,则编码深度i划分标志,并将uisumsplitflagdepl 保存到 uisumprepicspl it [currlcuaddr];否则,计算当前编码 lcu与其前一帧紧邻图像相同位置ixu深度i划分标志之和的差u i d i ffsp i i t sum并编码uidiffsplitsum ;此外,在步骤d和步骤f之间还包括将当前编码ixu深度i划分标志之和uisumsplitflagdepl设置为预设值的步骤。基于本发明实施例提供一种帧内划分标志的解码方法,该方法包括:a、初始化当前解码图像所有ixu深度0划分标志为1,初始化第一个ixu地址currlcuaddr 为 0;b、从slice header解析出当前解码图像的根层划分标志为0的lcu数目split_root_counter ;c、如果split_root_counter为0,则进入步骤e ;否则,从slice header解析出深度0划分标志为0的第i个ixu地址和其他深度0划分标志为0的ixu与其前一个深度0划分标志为0的ixu地址之差,从而计算得到深度0划分标志为0的各ixu地址;d、将深度0划分标志为0的各ixu根层划分标志设置为0 ;e、如果解码图像每ixu行或列包含非整数个ixu且当前解码ixu属于图像右边界ixu或下边界ixu,按照原方法解码当前ixu划分标志,然后执行步骤g ;否则,执行步骤f ;f、解码除深度0之外的其余各层划分标志,然后执行步骤g ;g、如果当前解码ixu是图像最后一个ixu,则处理结束;否则,递增ixu地址,转至步骤e,解码下一个ixu,直至当前解码图像中的ixu全部处理完毕。进一步地,步骤f包括下述步骤fgl和fg2,即已经确定了当前解码ixu根层划分标志取值时,根据根层划分标志取值情况在执行步骤g之前还包括下述步骤fgl和fg2:fg1、如果当前解码ixu深度0划分标志为i且当前解码ixu属于第i个解码图像,则解码深度i划分标志并将深度i划分标志之和保存到uisumprepicspl it [currlcuaddr],转至步骤fg2 ;否则,如果当前解码ixu深度o划分标志为i且当前解码ixu不属于第i个解码图像,则解码uidiffsplitsum,计算当前解码ixu深度i划分标志及划分标志之和,保存深度i划分标志之和到uisumprepicsplit [currlcuaddr],转至步骤fg2 ;否则,如果当前解码ixu深度o划分标志为o,则将当前解码ixu深度i划分标志之和uisumsplitflagd印i设置为预设值,转至步骤g ;fg2、解码除深度0和i外的其他各深度划分标志,然后执行步骤g。基于本发明实施例提供一种帧内划分标志的编码装置,该装置包括:初始化模块,用于初始化当前编码图像第一个ixu地址currlcuaddr和根层划分标志为 0 的 lcu 数目 split_root_counter 为 0 ;边界ixu判断模块,用于判断是否解码图像每ixu行或列包含非整数个ixu且当前解码ixu属于图像右边界ixu或下边界ixu,若是则指示其它层划分标志编码模块执行,否则指示根层划分标志判断模块执行;根层划分标志判断模块,用于获取当前编码lcu根层划分标志,并判断当前编码ixu根层划分标志是否为1,若为i则指示其它层划分标志编码模块执行,否则指示计数处理模块执行;计数处理模块,用于在当前编码ixu根层划分标志为0时,保存当前编码ixu地址并递增split_root_counter,在当前编码ixu根层划分标志大于0时,保存当前编码ixu与前一个根层划分标志为0的ixu地址之差并递增split_root_counter,然后指示最后ixu判断模块执行;其它层划分标志编码模块,用于在当前编码ixu根层划分标志为i时,根据ixu划分情况,递归编码除根层之外的其余各层划分标志,然后指示最后lcu判断模块执行;最后ixu判断模块,用于判断当前编码ixu是否为图像最后一个ixu,若是指示片头编码模块执行,否则指示lcu地址递增模块执行;ixu地址递增模块,用于递增ixu地址currlcuaddr后,指示边界ixu判断模块执行;片头编码模块,用于在片头slice header编码split_root_counter,然后指示根层划分标志编码模块执行;根层划分标志编码模块,用于在split_root_counter为0时,对第i个根层划分标志为0的ixu在slice header编码其地址,对其他根层划分标志为0的ixu在sliceheader编码其与前一个根层划分标志为0的ixu的地址之差。进一步地,所述装置在根层划分标志判断模块和其它层划分标志编码模块之间还包括:深度i划分标志之和计算模块,用于当前编码ixu根层划分标志为i时,获取当前编码ixu深度i的四个编码单元⑶的划分标志splitflagodepl、splitflagldepusplitflag2depl和splitflag3depl,计算出当前编码lqj深度i划分标志之和uisumsplitflagdepl,然后指示深度i划分标志编码模块执行;深度i划分标志编码模块,用于在当前编码图像是序列第i个编码图像时,编码深度 i 划分标志,并将 uisumsplitflagdepl 保存到 uisumprepicspl it [currlcuaddr];在当前编码图像不是序列第i个编码图像时,计算当前编码lcu与其前一帧紧邻图像相同位置lqj深度i划分标志之和的差uidiffsplitsum并编码uidiffsplitsum ;然后指示其它层划分标志编码模块执行;所述装置在计数处理模块和最后ixu判断模块之间,还包括:深度i划分标志设置模块,用于将当前编码ixu深度i划分标志之和uisumsplitflagdepl 设置为预设值。基于本发明实施例提供一种帧内划分标志的解码装置,该装置包括:初始化模块,用于初始化当前解码图像所有ixu深度0划分标志为1,初始化第一个 lcu 地址 currlcuaddr 为 0 ;片头解码模块,用于从slice header解析出当前解码图像的根层划分标志为0的lcu 数目 split_root_counter ;根层划分标志解码模块,如果split_root_counter为0,则指示边界lcu判断模块执行;否则,从slice header解析出深度0划分标志为0的第i个ixu地址和其他深度0划分标志为0的ixu与其前一个深度0划分标志为0的ixu地址之差,从而计算得到深度0划分标志为0的各ixu地址;根层划分标志设置模块,将深度0划分标志为0的各ixu根层划分标志设置为0 ;边界ixu判断模块,如果解码图像每ixu行或列包含非整数个ixu且当前解码ixu属于图像右边界lcu或下边界lcu,则按照原方法解码当前lcu划分标志;否则,指示深度i划分标志解码模块执行;深度i划分标志解码模块,如果当前解码ixu深度0划分标志为i且当前解码ixu属于第i个解码图像,则解码深度i划分标志并将深度i划分标志之和保存到uisumprepicspl it [currlcuaddr],然后指示其它层划分标志解码模块执行;否则,如果当前解码lcu深度0划分标志为i且当前解码lcu不属于第i个解码图像,则解码uidiffsplitsum,计算当前解码ixu深度i划分标志及划分标志之和,保存深度i划分标志之和到uisumprepicspl it [currlcuaddr],然后指示其它层划分标志解码模块执行;否则,如果当前解码ixu深度0划分标志为0,则将当前解码ixu深度i划分标志之和uisumsplitflagdepl设置为预设值,然后指示最后lcu判断模块执行;其它层划分标志解码模块,用于解码除深度0和i外的其他各深度划分标志,然后指不最后lcu判断|吴块执行。最后lcu判断|吴块,如果当如解码lcu是图像最后一个lcu,则处理结束;否则,递增ixu地址后,指示边界ixu判断模块执行。本发明不编码深度0和i的ixu的划分标志,深度0仅编码划分标志为0的lcu地址或地址差,深度i仅编码相邻图像划分方式上存在的差异,则会有效降低深度0和i划分标志编码比特数,从而提高压缩编码效率。本发明方法在不影响图像质量和不增加编解码复杂度的情况下,降低了编码图像的编码比特数,提高了视频编码压缩的效率。
图1为本发明实施例1的编码流程图;图2为本发明实施例1的解码流程图;图3为本发明实施例2的编码流程图;图4为本发明实施例2的解码流程图5为本发明实施例3的编码流程图;图6为本发明实施例3的解码流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例并参照附图,对本发明进一步详细说明。实施例1:该实施例针对lcu深度0划分标志压缩效率不高的问题,对深度0仅编码划分标志为0的ixu地址或地址差,有效降低深度0划分标志编码比特数,提高压缩编码效率。为实施本技术方案,需要在片头语法(slice header syntax)中增加两个语法元素split_root_counter 和 split_root_addr,其中,split_root_counter 表不编码图像根层 lcu 划分标志为0的ixu个数,split_root_addr表示编码图像中深度0不进行四叉树分割的ixu地址差,同时需要对编码树语法(coding tree syntax)进行修改。上述所提到的修改如表i和表2所示。表i实施例1所述方法的slice header syntax表
权利要求
1.一种帧内划分标志的编码方法,其特征在于,该方法包括: a、初始化当前编码图像第一个最大编码单元ixu地址currlcuaddr和根层划分标志为o 的 lcu 数目 split_root_counter 为 o ; b、获取当前编码lcu根层划分标志; c、如果当前编码lcu根层划分标志为1,则执行步骤e,否则执行步骤d; d、如果split_root_counter为0,则保存当前编码lqj地址并递增split_root_counter,然后执行步骤f ;否则,如果split_root_counter大于0,则保存当前编码lcu与前一个根层划分标志为0的ixu地址之差并递增split_root_counter,然后执行步骤f ; e、根据lcu划分情况,递归编码除根层之外的其余各层划分标志; f、如果当前编码ixu是图像最后一个ixu,则执行步骤g,否则,递增ixu地址currlcuaddr后,执行步骤b ;g、在片头slice header 编石马 split_root_counter ; h、如果split_root_counter为0,则处理完毕;否则,对第i个根层划分标志为0的ixu在slice header编码其地址,对其他根层划分标志为0的lcu在slice header编码其与前一个根层划分标志为0的ixu的地址之差,处理完毕。
2.根据权利要求1所述的方法,其特征在于,在步骤a和步骤b之间还包括如下判断步骤: ab1、如果编码图像每ixu行包括非整数个ixu且当前编码ixu属于图像右边界ixu或编码图像每ixu列包括非整数`个ixu且当前编码ixu属于下边界ixu,则执行步骤e,否则执行步骤b ; 相应地,步骤f中,如果当前编码ixu不是图像最后一个ixu,则递增ixu地址后,执行步骤abi。
3.根据权利要求2所述的方法,其特征在于,在步骤c和步骤e之间,即如果当前编码ixu根层划分标志为i时,在执行步骤e之前还包括下述步骤cel和ce2: ce1、获取当前编码ixu深度i的四个编码单元⑶的划分标志splitflagod印1、splitflagldepu splitflag2depl 和 splitflag3depl,计算出当前编码 ixu 深度 i 划分标志之和 uisumspiitflagdep i ; ce2、如果当前编码图像是序列第i个编码图像,则编码深度i划分标志,并将uisumspiitflagdepi 保存到 uisumprepicsplit[currlcuaddr];否则,计算当前编码 lcu与其前一帧紧邻图像相同位置ixu深度i划分标志之和的差u i d i ff sp i i t sum并编码uidiffsplitsum ; 此外,在步骤d和步骤f之间还包括将当前编码lcu深度i划分标志之和uisumspiitflagdepi设置为预设值的步骤。
4.一种巾贞内划分标志的解码方法,其特征在于,该方法包括: a、初始化当前解码图像所有ixu深度0划分标志为1,初始化第一个ixu地址currlcuaddr 为 0 ; b、从sliceheader解析出当前解码图像的根层划分标志为0的lcu数目split_root_counter ; c、如果split_root_counter为0,则进入步骤e;否则,从slice header解析出深度0划分标志为o的第i个ixu地址和其他深度o划分标志为o的ixu与其前一个深度o划分标志为o的ixu地址之差,从而计算得到深度o划分标志为o的各ixu地址; d、将深度o划分标志为o的各ixu根层划分标志设置为o; e、如果解码图像每ixu行或列包含非整数个ixu且当前解码ixu属于图像右边界ixu或下边界ixu,按照原方法解码当前ixu划分标志,然后执行步骤g ;否则,执行步骤f ; f、解码除深度o之外的其余各层划分标志,然后执行步骤g; g、如果当前解码ixu是图像最后一个ixu,则处理结束;否则,递增ixu地址,转至步骤e,解码下一个ixu,直至当前解码图像中的ixu全部处理完毕。
5.根据权利要求4所述的方法,其特征在于,步骤f包括下述步骤fgl和fg2,即已经确定了当前解码lcu根 层划分标志取值时,根据根层划分标志取值情况在执行步骤g之前还包括下述步骤fgl和fg2: fg1、如果当前解码ixu深度o划分标志为i且当前解码ixu属于第i个解码图像,则解码深度i划分标志并将深度i划分标志之和保存到uisumprepicsplit [currlcuaddr],转至步骤fg2 ;否则,如果当前解码ixu深度o划分标志为i且当前解码ixu不属于第i个解码图像,则解码uidiffsplitsum,计算当前解码ixu深度i划分标志及划分标志之和,保存深度i划分标志之和到uisumprepicspl it [currlcuaddr],转至步骤fg2 ;否则,如果当前解码ixu深度o划分标志为o,则将当前解码ixu深度i划分标志之和uisumsplitflagd印i设置为预设值,转至步骤g ; fg2、解码除深度o和i外的其他各深度划分标志,然后执行步骤g。
6.一种帧内划分标志的编码装置,其特征在于,该装置包括: 初始化模块,用于初始化当前编码图像第一个ixu地址currlcuaddr和根层划分标志为 o 的 lcu 数目 split_root_counter 为 o ; 边界ixu判断模块,用于判断是否解码图像每ixu行或列包含非整数个ixu且当前解码ixu属于图像右边界ixu或下边界ixu,若是则指示其它层划分标志编码模块执行,否则指示根层划分标志判断模块执行; 根层划分标志判断模块,用于获取当前编码lcu根层划分标志,并判断当前编码lcu根层划分标志是否为1,若为i则指示其它层划分标志编码模块执行,否则指示计数处理模块执行; 计数处理模块,用于在当前编码ixu根层划分标志为o时,保存当前编码ixu地址并递增split_root_counter,在当前编码ixu根层划分标志大于o时,保存当前编码ixu与前一个根层划分标志为o的ixu地址之差并递增split_root_counter,然后指示最后ixu判断模块执行; 其它层划分标志编码模块,用于在当前编码lcu根层划分标志为i时,根据lcu划分情况,递归编码除根层之外的其余各层划分标志,然后指示最后lcu判断模块执行; 最后lcu判断模块,用于判断当前编码lcu是否为图像最后一个lcu,若是指示片头编码模块执行,否则指示lcu地址递增模块执行; ixu地址递增模块,用于递增ixu地址currlcuaddr后,指示边界ixu判断模块执行; 片头编码模块,用于在片头slice header编码split_root_counter,然后指示根层划分标志编码模块执行;根层划分标志编码模块,用于在split_root_counter为o时,对第i个根层划分标志为o的ixu在slice header编码其地址,对其他根层划分标志为o的ixu在slice header编码其与前一个根层划分标志为o的lcu的地址之差。
7.根据权利要求6所述的装置,其特征在于,所述装置在根层划分标志判断模块和其它层划分标志编码模块之间还包括: 深度i划分标志之和计算模块,用于当前编码lcu根层划分标志为i时,获取当前编码ixu深度i的四个编码单元⑶的划分标志splitflagodepl、splitflagldepusplitflag2depl和splitflag3depl,计算出当前编码lqj深度i划分标志之和uisumsplitflagdepl,然后指示深度i划分标志编码模块执行; 深度i划分标志编码模块,用于在当前编码图像是序列第i个编码图像时,编码深度i划分标志,并将 uisumsplitflagdepl 保存到 uisumprepicspl it [currlcuaddr];在当前编码图像不是序列第i个编码图像时,计算当前编码lcu与其前一帧紧邻图像相同位置lcu深度i划分标志之和的差uidiffsplitsum并编码uidiffsplitsum ;然后指示其它层划分标志编码模块执行; 所述装置在计数处理模块和最后lcu判断模块之间,还包括: 深度i划分标志设置模块,用于将当前编码lcu深度i划分标志之和uisumsplitflagdepl 设置为预设值。
8.—种帧内划分标志的解码装置,其特征在于,该装置包括: 初始化模块,用于初始化当前解码图像所有lcu深度0划分标志为1,初始化第一个lcu 地址 currlcuaddr 为 0 ; 片头解码模块,用于从slic`e header解析出当前解码图像的根层划分标志为0的ixu数目 split_root_counter ; 根层划分标志解码模块,如果split_root_counter为0,则指示边界ixu判断模块执行;否则,从slice header解析出深度0划分标志为0的第i个ixu地址和其他深度0划分标志为0的ixu与其前一个深度0划分标志为0的ixu地址之差,从而计算得到深度0划分标志为0的各ixu地址; 根层划分标志设置模块,将深度0划分标志为0的各lcu根层划分标志设置为0 ; 边界ixu判断模块,如果解码图像每ixu行或列包含非整数个ixu且当前解码ixu属于图像右边界ixu或下边界ixu,则按照原方法解码当前ixu划分标志;否则,指示深度i划分标志解码模块执行; 深度i划分标志解码模块,如果当前解码ixu深度0划分标志为i且当前解码ixu属于第i个解码图像,则解码深度i划分标志并将深度i划分标志之和保存到uisumprepicspl it [currlcuaddr],然后指示其它层划分标志解码模块执行;否则,如果当前解码lcu深度0划分标志为i且当前解码lcu不属于第i个解码图像,则解码uidiffsplitsum,计算当前解码ixu深度i划分标志及划分标志之和,保存深度i划分标志之和到uisumprepicspl it [currlcuaddr],然后指示其它层划分标志解码模块执行;否则,如果当前解码ixu深度0划分标志为0,则将当前解码ixu深度i划分标志之和uisumsplitflagdepl设置为预设值,然后指示最后lcu判断模块执行; 其它层划分标志解码模块,用于解码除深度0和i外的其他各深度划分标志,然后指示最后lcu判断|吴块执行; 最后lcu判断模块,如果当前解码lcu是图像最后一个lcu,则处理结束;否则,递增ixu地址后,指 示边界ixu判断模块执行。
全文摘要
本发明公开了一种帧内划分标志的编码方法,用于解决现有编码方法压缩编码效率低的技术问题。本发明对深度0仅编码划分标志为0的lcu地址或地址差,对深度1仅编码相邻图像划分方式上存在的差异,从而有效降低深度0和1划分标志编码比特数,提高压缩编码效率。
文档编号h04n7/26gk103118250sq20111036393
公开日2013年5月22日 申请日期2011年11月16日 优先权日2011年11月16日
发明者李振纲, 王宁, 左雯, 林聚财, 于培松 申请人:中兴通讯股份有限公司