当前位置: 首页 > 专利查询>中南大学专利>正文

一种基于不可分二次变换模式的帧内快速选择方法技术

技术编号:18530489 阅读:60 留言:0更新日期:2018-07-25 15:13
本发明专利技术公开了一种基于不可分二次变换模式的帧内快速选择方法,通过利用同位置不同深度的编码单元CU的在视频序列中的时空相关性,提前预测NSST最佳模式的索引值,跳过其不必要的索引循环过程,避免编码流程中耗时的NSST模式选择过程,在保证视频主观质量下降可忽略不计的情况下,降低编码器的计算复杂度,减少编码时间,提高编码效率。同时,本发明专利技术所述方案简单易行,有利于新一代视频编码标准的产业化推广。

【技术实现步骤摘要】
一种基于不可分二次变换模式的帧内快速选择方法
本专利技术属于视频编解码领域,特别涉及一种基于不可分二次变换模式的帧内快速选择方法。
技术介绍
NSST(Non-separableSecondaryTransform)是不可分二次变换。在早期视频编码中,编码器使用DCT(DiscreteCosineTransform)离散余弦变换来进行视频压缩。但传统的DCT是一种次优变换,当残差信号具有较大的对角分量时,DCT无法有效的对信号能量进行压缩。在新一代视频编码标准中,NSST代替了原本标准中的DCT,通过二次变换对信号进行有效压缩。最近,新一代视频编码标准的制定引入了大量的新型编码工具,NSST则是其中之一。近年来,随着高清、超高清视频(分辨率达4K×2K、8K×4K)应用逐步走进人们的视野,视频压缩技术受到了巨大的挑战,视频压缩编码标准体系也得到了迅猛发展,此外,各式各样的视频应用也随着网络和存储技术的发展不断涌现,如今,数字视频广播、移动无线视频、远程检测、医学成像和便携摄影等,都已走进人们的生活,大众对于视频质量的要求也越来越高,因此,视频应用的多样化和高清化趋势对于比H.265/HEVC编码效率更高的下一代视频编码标准提出了更强烈的要求。正是在这样的背景下,ITU-TVCEG的VCEG(视频编码专家组)和ISO/IEC的MPEG(动态图像专家组)于2016年成立了视频编码探究联合小组JVET(JointVideoExplorationTeam),旨在探讨新一代视频编码标准的研发和制定。新一代的视频编码标准依旧采用混合编码框架,包括变换、量化、熵编码、帧内预测、帧间预测以及环路滤波等模块,但是,为了提高视频压缩率,该标准采用QTBT(Quadtreeplusbinarytree)的划分结构,取代了HEVC的四叉树划分。在QTBT结构下,去掉了多种划分类型如CU、PU和TU分离观念,支持更弹性的CU划分类型来更好的匹配视频数据的局部特征,CU的深度划分不再是以单独的深度Depth来表示,而是由四叉树深度划分QTDepth和二叉树深度划分BTDepth共同表述。同时在各个模块引入了一系列相当耗时的新型编码工具,这些提高压缩率的改进大幅度提高了编码器的计算复杂度,不利于新一代视频编码标准的产业化推广。因此,在保证视频主观质量下降可忽略不计的情况下优化编码器并减少编码时间是视频编解码领域亟待研究和解决的问题之一。在新一代视频编码标准中,进行帧内预测时,每个CU(编码单元)完成系数变换之后,会传输一个索引。当索引值为0时,表示当前CU没有非零系数;当索引值为2时,表示当前CU使用Planar(平面预测模式)或DC(角度预测模式)进行编码;当索引值为3时,表示当前CU使用帧内角度预测模式进行编码。只有在当前CU的非零系数个数不为0时,NSST的索引值才被传输,其它情况下不被传输,默认值为0。NSST共包含4个索引值,每个索引值对应不同的二次变换方式,索引值分别为0、1、2、3。NSST索引值为0时,表示当前CU不使用二次变换。索引值为1~3时,则表示启用当前CU使用二次变换。通过对新一代视频编码标准的参考软件JEM的测试分析发现,在AllIntra配置下,NSST索引循环的编码时间约占总编码时间的30%。因此,如果能通过对相关信息的判断,提前缩小NSST索引循环范围,从而避免不必要的二次变换模式计算,可有效提高新一代视频编码标准的帧内编码效率。NSST的索引循环:在编码器端,当前CU以NSST索引值为循环,循环4次,通过比较率失真函数RDCost选择当前编码块的最佳NSST模式,即选出最佳模式的索引值。
技术实现思路
本专利技术是针对现有技术中新一代视频编码标准,帧内编码效率过低,提出一种基于不可分二次变换模式的帧内快速选择方法,通过提前预测NSST最佳模式的索引值,跳过其不必要的索引循环过程,在保证视频主观质量下降可忽略不计的情况下,降低编码器的计算复杂度,减少编码时间,提高编码效率。一种基于不可分二次变换模式的帧内快速选择方法,包括以下步骤:步骤1:利用当前深度下的编码单元CU的四叉树划分深度QTDepth和二叉树划分深度BTDepth,判断是否满足进入条件1,若不满足,则进入步骤2,否则,进入步骤4;条件1:QTDepth≧2&&BTDepth≧1满足条件1表明当前CU的深度较高,跳过当前深度下的NSST索引循环,直接进入步骤4;深度低的CU进入步骤2,即进行当前深度下完整的NSST索引循环;步骤2:对当前深度下的编码单元CU进行完整的NSST的索引循环,选取当前深度下编码单元CU的最佳NSST模式,并获得最佳NSST模式下的索引值BestNSSTidx;计算当前层编码单元CU的总深度DepthCount,并将当前层编码单元的索引值BestNSSTidx、二叉树划分深度BTDepth、划分方向标志位BTSplitFlag分别存入数组Ref_CUNSSTidx的第一列至第三列中,所在行的取值与DepthCount的取值相同;即依次存入Ref_CUNSSTidx[DepthCount][0],Ref_CUNSSTidx[DepthCount][1],Ref_CUNSSTidx[DepthCount][2]中;其中,Ref_CUNSSTidx为每个编码单元CU的二维数组,大小为100*3,且数组中元素均初始化为-1;DepthCount=QTDepth+BTDepth;BTDepth由编码器配置文件决定,取值为[0,3];BTSplitFlag取值为0或1,0表示水平划分,1表示垂直划分;步骤3:判断当前深度下的编码单元CU是否满足条件2,若是,则对编码单元CU进行下一深度的编码,返回步骤1,若否,当前编码单元CU完成所有NSST索引循环,返回步骤1,对下一个编码单元CU进行判断;条件2:QTDepth≦4&&BTDepth≦3步骤4:统计数组Ref_CUNSSTidx[100][0]中元素取值分别为0、1、2、3的个数分别为n0、n1、n2、n3,若n0、n1、n2、n3互不相等,则从n0、n1、n2、n3中选取最大值赋值给NSST模式第一最佳预测的索引值Nfin1,进入步骤5,否则返回步骤2;当n0、n1、n2、n3中存在任意两个数相同时,表明当前深度下的CU需进行完整的NSST索引循环;步骤5:分别统计数组Ref_CUNSSTidx中DepthCount不为-1,BTDepth不为0,BTSplitFlag分别为0和1所在行对应的NSSTidx的个数Num1、Num2与总和Total1、Total2;步骤6:令i的初始值为0,依次扫描数组Ref_CUNSSTidx中的每一行元素,判断每一行中的元素是否满足条件3:条件3:Ref_CUNSSTidx[i][0]≠-1&&Ref_CUNSSTidx[i][1]≠0&&Ref_CUNSSTidx[i][2]=0若所有行均不满足,则令N1=Total1/Num1,进入步骤7,若当前行满足,则令Num1=Num1+1,Total1=Total1+Ref_CUNSSTidx[i][0],i=i+1,继续本文档来自技高网
...

【技术保护点】
1.一种基于不可分二次变换模式的帧内快速选择方法,其特征在于,包括以下步骤:步骤1:利用当前深度下的编码单元CU的四叉树划分深度QTDepth和二叉树划分深度BTDepth,判断是否满足进入条件1,若不满足,则进入步骤2,否则,进入步骤4;条件1:QTDepth≧2&&BTDepth≧1步骤2:对当前深度下的编码单元CU进行完整的NSST的索引循环,选取当前深度下编码单元CU的最佳NSST模式,并获得最佳NSST模式下的索引值BestNSSTidx;计算当前层编码单元CU的总深度DepthCount,并将当前层编码单元的索引值BestNSSTidx、二叉树划分深度BTDepth、划分方向标志位BTSplitFlag分别存入数组Ref_CUNSSTidx的第一列至第三列中,所在行的取值与DepthCount的取值相同;其中,Ref_CUNSSTidx为每个编码单元CU的二维数组,大小为100*3,且数组中元素均初始化为‑1;DepthCount=QTDepth+BTDepth;BTDepth由编码器配置文件决定,取值为[0,3];BTSplitFlag取值为0或1,0表示水平划分,1表示垂直划分;步骤3:判断当前深度下的编码单元CU是否满足条件2,若是,则对编码单元CU进行下一深度的编码,返回步骤1,若否,当前编码单元CU完成所有NSST索引循环,返回步骤1,对下一个编码单元CU进行判断;条件2:QTDepth≦4&&BTDepth≦3步骤4:统计数组Ref_CUNSSTidx[100][0]中元素取值分别为0、1、2、3的个数分别为n0、n1、n2、n3,若n0、n1、n2、n3互不相等,则从n0、n1、n2、n3中选取最大值赋值给NSST模式第一最佳预测的索引值Nfin1,进入步骤5,否则返回步骤2;步骤5:分别统计数组Ref_CUNSSTidx中DepthCount不为‑1,BTDepth不为0,BTSplitFlag分别为0和1所在行对应的NSSTidx的个数Num1、Num2与总和Total1、Total2;步骤6:令i的初始值为0,依次扫描数组Ref_CUNSSTidx中的每一行元素,判断每一行中的元素是否满足条件3:条件3:Ref_CUNSSTidx[i][0]≠‑1&&Ref_CUNSSTidx[i][1]≠0&&Ref_CUNSSTidx[i][2]=0若所有行均不满足,则令N1=Total1/Num1,进入步骤7,若当前行满足,则令Num1=Num1+1,Total1=Total1+Ref_CUNSSTidx[i][0],i=i+1,继续扫描数组中的下一行,直到所有行均扫描完,令N1=Total1/Num1,进入步骤7;步骤7:令i的初始值为0,依次扫描数组Ref_CUNSSTidx中的每一行元素,判断每一行中的元素是否满足条件3:条件3:Ref_CUNSSTidx[i][0]≠‑1&&Ref_CUNSSTidx[i][1]≠0&&Ref_CUNSSTidx[i][2]=1若所有行均不满足,则令N2=Total2/Num2,进入步骤8,若当前行满足,则令Num2=Num2+1,Total2=Total2+Ref_CUNSSTidx[i][0],i=i+1,继续扫描数组中的下一行,直到所有行均扫描完,令N2=Total2/Num2,进入步骤8;步骤8:结合当前深度下编码单元CU的划分方向标志位和N1、N2,计算NSST模式第二最佳预测的索引值Nfin2;...

【技术特征摘要】
1.一种基于不可分二次变换模式的帧内快速选择方法,其特征在于,包括以下步骤:步骤1:利用当前深度下的编码单元CU的四叉树划分深度QTDepth和二叉树划分深度BTDepth,判断是否满足进入条件1,若不满足,则进入步骤2,否则,进入步骤4;条件1:QTDepth≧2&&BTDepth≧1步骤2:对当前深度下的编码单元CU进行完整的NSST的索引循环,选取当前深度下编码单元CU的最佳NSST模式,并获得最佳NSST模式下的索引值BestNSSTidx;计算当前层编码单元CU的总深度DepthCount,并将当前层编码单元的索引值BestNSSTidx、二叉树划分深度BTDepth、划分方向标志位BTSplitFlag分别存入数组Ref_CUNSSTidx的第一列至第三列中,所在行的取值与DepthCount的取值相同;其中,Ref_CUNSSTidx为每个编码单元CU的二维数组,大小为100*3,且数组中元素均初始化为-1;DepthCount=QTDepth+BTDepth;BTDepth由编码器配置文件决定,取值为[0,3];BTSplitFlag取值为0或1,0表示水平划分,1表示垂直划分;步骤3:判断当前深度下的编码单元CU是否满足条件2,若是,则对编码单元CU进行下一深度的编码,返回步骤1,若否,当前编码单元CU完成所有NSST索引循环,返回步骤1,对下一个编码单元CU进行判断;条件2:QTDepth≦4&&BTDepth≦3步骤4:统计数组Ref_CUNSSTidx[100][0]中元素取值分别为0、1、2、3的个数分别为n0、n1、n2、n3,若n0、n1、n2、n3互不相等,则从n0、n1、n2、n3中选取最大值赋值给NSST模式第一最佳预测的索引值Nfin1,进入步骤5,否则返回步骤2;步骤5:分别统计数组Ref_CUNSSTidx中DepthCount不为-1,BTDepth不为0,BTSplitFlag分别为0和1所在行对应的NSSTidx的个数Num1、Num2与总和Total1、Total2;步骤6:令i的初始值为0,依次扫描数组Ref_CUNSSTidx中的每一行元...

【专利技术属性】
技术研发人员:张昊王塞博雷诗哲牟凡符婷
申请(专利权)人:中南大学
类型:发明
国别省市:湖南,43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1