1.一种H.266/VVC帧间编码的CU快速划分方法,其特征在于,包括以下步骤:
S1、获取H.266/VVC编码器当前编码帧正在编码的CU编码单元数据以及参考帧数据,获取以先进后出维护划分模式的栈;
S2、判断当前CU的相邻MV运动矢量是否一致,如果一致则进入步骤S3,否则进入步骤S5并将所有划分模式入栈;
S3、通过当前CU坐标与MV相加得到参考帧对应位置坐标,若对应位置的CU范围没有超出图像范围,则进入步骤S4,否则进入步骤S5并将所有划分模式入栈;
S4、判断当前CU是否为正方形,如果是正方形,则使用9MV模型选择部分划分模式,如果是长方形,则使用横向6MV或者纵向6MV模型选择部分划分模式;其中9MV模型将一个正方形区域划分为9个相同大小的正方形,并将正方形的中心作为MV采样点,横向6MV和纵向6MV模型将一个矩形划分为6个相同大小的矩形,并将正方形的中心作为MV采样点;
S5、结束CU划分模式的初始化;
所述步骤S4如果是正方形,则使用9MV模型选择部分划分模式;具体包括:基于S3步骤中所得到的参考帧对应位置坐标,取一个与当前编码CU相同大小的区域,并根据该区域的形状决定使用哪种模型;若该区域是正方形,则使用9MV模型,其中,9MV模型将一个正方形区域划分为9个相同大小的正方形,并将正方形的中心作为MV采样点;H.266/VVC的CU划分模式有四叉划分、二叉划分、三叉划分以及不划分四种选择,其中,四叉划分为QT,三叉划分为水平三叉划分HTT和竖直三叉划分VTT,二叉划分为水平二叉划分HBT和竖直二叉划分VBT,最后是不划分NoSplit,共六种模式;在使用9MV模型时,第一步,判断1,2,3点的MV是否一致;若一致,进入再一步,如果不一致,则判断1,4,7的MV是否一致,如果一致,则将HTT和HBT模式入栈,如果不一致,则将容易分成多个块的QT,VTT,HTT模式入栈;第二步,判断4,5,
6的MV是否一致,若一致,则进入下一步,否则将VTT和VBT模式加入栈;第三步,判断7,8,9的MV是否一致,若一致,则进入下一步,否则将VTT和VBT模式加入栈;第四步若所有MV一致,则不向栈中添加任何模式,否则仅将VTT模式加入栈;
所述步骤S4中如果是长方形,则使用横向6MV或者纵向6MV模型选择部分划分模式,具体包括:
在使用横向6MV模型时,第一步,若1,2不一致,但1,3,5一致,则将HTT和HBT加入栈;若
1,3,5不一致,则加入VTT和HTT模式;若1,2一致,则进入下一步;第二步,若3,4不一致,则添加VTT和VBT模式进入栈,若一致,进入下一步;第三步,若5,6不一致,则添加VTT和VBT进入栈,否则进入下一步;第四步若所有MV一致,则不加入划分模式,否则仅将VTT模式加入栈;
在使用纵向6MV模型时,第一步,若1,2不一致,且1,3,5不一致,则加VTT、HTT模式;若1,3,5一致,则添加VTT、VBT模式;若1,2一致,则进入下一步;第二步,若3,4不一致,则将HTT、HBT入栈,若一致,进入下一步;第三步,若5,6不一致,则将HTT和HBT入栈,否则进入下一步;第四步若所有MV一致,则不加入划分模式,否则仅将HTT加入栈。
2.根据权利要求1所述的一种H.266/VVC帧间编码的CU快速划分方法,其特征在于,所述步骤S1、获取H.266/VVC编码器当前编码帧正在编码的CU数据以及参考帧数据,获取以先进后出维护划分模式的栈;在H.266/VVC编码器中,CU划分模式的初始化过程在initCULevel函数中实现,在初始化过程中,编码器会遍历所有划分模式,并将可以执行的划分模式推入栈中,之后在编码器的率失真优化过程中,编码器会从栈顶到栈底逐一调用这些划分模式,并选出率失真代价最低的模式作为最终的划分模式。
3.根据权利要求1所述的一种H.266/VVC帧间编码的CU快速划分方法,其特征在于,所述步骤S2、判断当前CU的相邻MV是否一致,如果一致则进入步骤S3,否则进入步骤S5并将所有划分模式入栈,具体包括:判断当前CU的相邻MV是否一致,相邻MV取自当前CU的左侧CU和上方CU,如果由于当前编码CU位于图像的最左侧或最上方位置而导致左侧CU或上方CU不存在,则直接进入步骤S5并将所有划分模式入栈;判断MV是否一致,即比较当前CU的左侧CU和上方CU的MV的水平分量和垂直分量是否相等,如果相等,则进入步骤S3,否则进入步骤S5并将所有划分模式入栈。
4.根据权利要求3所述的一种H.266/VVC帧间编码的CU快速划分方法,其特征在于,所述步骤S3具体包括以下步骤:
S3,通过当前CU坐标与MV相加得到参考帧对应位置坐标,通过当前CU坐标与MV相加得到参考帧对应位置坐标的方法如公式(1)和公式(2)所示,其中Xcol和Ycol是参考帧对应位置的坐标;Xcur和Ycur是当前帧正在编码CU的位置坐标;MVx和MVy是左侧CU和上方CU的MV的水平分量和垂直分量;如果得到的Xcol和Ycol以及加上当前CU的长和宽的范围没有超出图像的长和宽,则进入步骤S4,否则进入S5并将所有划分模式入栈;
Xcol=Xcur+MVx (1)
Ycol=Ycur+MVy (2) 。
5.根据权利要求1所述的一种H.266/VVC帧间编码的CU快速划分方法,其特征在于,所述步骤S5具体包括:H.266/VVC帧间编码的过程原本需要遍历所有划分模式,CU的初始化过程将可以加入的模式放入栈中,而经过S4步骤的提前筛选,只将部分模式入栈,并结束初始化过程,最后编码器从这些模式中选出一种率失真代价最低的划分方式作为最终划分方式。
6.一种存储介质,该存储介质内部存储计算机程序,其特征在于,所述计算机程序被处理器读取时,执行上述权利要求1~5任一项的方法。