本发明涉及机器视觉和模式识别技术领域,尤其涉及一种avs3帧内快速划分方法、系统及存储介质。
背景技术:
avs3是中国音频视频编码标准工作组基于ieee1857.4开发的一项先进的视频编码标准,目的是进一步提高视频编码效率。为了有效应对高清视频内容数据急剧增加的问题,在avs3标准化过程中,采纳了一些提升压缩性能的编码技术。例如:更灵活的(编码单元)划分结构:四叉树划分、二叉树划分和扩展四叉树划分,以及衍生模式树和仿射模式等技术。这些技术的引进和应用使得avs3的压缩性能拥有了明显的提升,但是也大幅度增加了视频编码的时间。
avs3中,将每帧划分为多个编码单元来适应不同视频内容特征,例如四叉树划分模式、不划分模式、水平方向划分模式、垂直方向划分模式、二叉树划分模式和扩展四叉树划分模式等。由于在划分过程中,为了选择出最优划分模式,编码器会遍历当前编码单元的所有可能的划分方式,并且会对每个划分模式下的新编码单元再度遍历,较多的划分类型会让整个划分过程的时间复杂度较高。
因此,当前需要一种可以缩短avs3编码时间的技术方法。
技术实现要素:
为了解决上述技术问题,本发明的目的是提供一种快速的avs3帧内快速划分方法、系统及存储介质。
一种avs3帧内快速划分方法,包括以下步骤:
获取视频编码单元;
采用sobel算子得到所述编码单元的梯度;
获取所述编码单元梯度的投影值;
根据所述投影值与预设阈值的比对结果,选择划分模式。
进一步,所述预设阈值,包括第一阈值、第二阈值、第三阈值、第四阈值和第五阈值。
进一步,所述编码单元梯度的投影值,包括水平方向梯度的投影值、垂直方向梯度的投影值、水平方向最大梯度投影值和垂直方向最大梯度投影值;
所述编码单元梯度的投影值,还包括水平方向四个分区的梯度投影值极差、垂直方向四个分区的梯度投影值极差、水平方向相邻分区梯度投影值极差差值和垂直方向相邻分区梯度投影值极差差值;
所述编码单元梯度的投影值,还包括水平方向最大相邻分区梯度投影值极差差值、垂直方向最大相邻分区梯度投影值极差差值、水平方向最大相邻分区梯度投影值极差差值下标和垂直方向最大相邻分区梯度投影值极差差值下标。
进一步,所述根据所述投影值与预设阈值的比对结果,选择划分模式这一步骤,包括以下步骤:
若水平方向最大梯度投影值和垂直方向最大梯度投影值均小于第一阈值,而且水平方向最大相邻分区梯度投影值极差差值和垂直方向最大相邻分区梯度投影值极差差值均小于第二阈值,则选择不划分模式。
若垂直方向最大相邻分区梯度投影值极差差值大于第三阈值与水平方向最大相邻分区梯度投影值极差差值的乘积,而且垂直方向最大梯度投影值大于第四阈值与水平方向最大梯度投影值的乘积,则禁止水平方向的划分;
若水平方向最大相邻分区梯度投影值极差差值大于第三阈值与垂直方向最大相邻分区梯度投影值极差差值的乘积,而且水平方向最大梯度投影值大于第四阈值与垂直方向最大梯度投影值的乘积,则禁止垂直方向的划分。
若垂直方向最大相邻分区梯度投影值极差差值下标为1,而且垂直方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第1个元素的乘积;或者垂直方向最大相邻分区梯度投影值极差差值下标为1,而且垂直方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第3个元素的乘积,则禁止垂直方向扩展四叉树划分;
若水平方向最大相邻分区梯度投影值极差差值下标为1,而且水平方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第1个元素的乘积;或者水平方向最大相邻分区梯度投影值极差差值下标为1,而且水平方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第3个元素的乘积,则禁止水平方向扩展四叉树划分。
进一步,对于选择后的划分模式,采用率失真优化方法,获取最佳的划分模式。
进一步,所述采用sobel算子得到所述编码单元的梯度这一步骤,包括以下步骤:
对编码单元进行临近复制,补充边缘图像;
使用水平sobel算子和垂直sobel算子对编码单元进行卷积,获取水平卷积梯度值和垂直卷积梯度值;
通过水平卷积梯度值和垂直卷积梯度值得到编码单元的梯度。
本发明还提出了一种avs3帧内快速划分系统,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如上所述的一种avs3帧内快速划分方法。
本发明还提出了一种avs3帧内快速划分系统,包括:
图像获取模块,用于获取视频编码单元;
sobel梯度模块,用于采用sobel算子得到所述编码单元的梯度;
梯度投影模块,用于获取所述编码单元梯度的投影值;
模式划分模块,用于根据所述投影值与预设阈值的比对结果,选择划分模式。
本发明还提出了一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行如上所述的一种avs3帧内快速划分方法。
上述本发明的实施例中的一个或多个技术方案具有如下优点:
本发明采用了一种avs3帧内快速划分方法,采用sobel算子获取图像的梯度并计算得到梯度的投影值,通过投影值与预设阈值的比对结果,对avs3帧内模式进行快速划分,该方法利用较少的计算,就可以获得avs3帧内模式的划分结果,明显提高了编码的速度,缩短了由于递归遍历划分模式而花费的编码时间。
附图说明
图1是本发明一种avs3帧内快速划分方法的流程图;
图2是本发明使用的水平方向sobel算子和垂直方向的sobel算子示意图;
图3是水平方向扩展四叉树划分模式和垂直方向扩展四叉树划分模式的示意图;
图4是本发明实施例中一个编码单元的水平方向梯度投影值折线图;
图5是本发明实施例中一个编码单元的垂直方向梯度投影值折线图;
图6是本发明实施例中一个垂直方向二叉树划分模式编码单元的垂直方向梯度投影值折线图;
图7是本发明一种avs3帧内快速划分系统的结构示意图。
具体实施方式
下面结合附图,对本发明的技术方案进行详细描述。
参考图1,一种avs3帧内快速划分方法,包括以下步骤:
s1:获取视频编码单元;
s2:采用sobel算子得到所述编码单元的梯度;
s3:获取所述编码单元梯度的投影值;
s4:根据所述投影值与预设阈值的比对结果,选择划分模式。
在步骤s1中,获取视频编码单元这一步骤,avs3会将每帧划分为多个128×128的最大编码单元,并将最大编码单元划分为多个编码单元,即cu来适应不同的视频内容。
在步骤s2中,采用sobel算子得到所述编码单元的梯度这一步骤,采用的sobel算子检测模板如图2所示。使用该算子的主要步骤为:
对编码单元进行临近复制,补充边缘图像;其中设cu在坐标(x,y)处的像素值为p(x,y),而sobel水平卷积后得到的梯度值为gh(x,y),垂直卷积后得到的梯度值为gv(x,y),其中,w为cu的宽,h为cu的高。
使用水平sobel算子和垂直sobel算子对编码单元进行卷积,获取水平卷积梯度值和垂直卷积梯度值;
水平方向进行卷积的公式为:
gh(x,y)=p(x-1,y 1) 2*p(x,y 1) p(x 1,y 1)-p(x-1,y-1)-2*p(x,y-1)-p(x,y 1)
垂直方向进行卷积的公式为:
gv(x,y)=p(x 1,y-1) 2*p(x 1,y) p(x 1,y 1)-p(x-1,y-1)-2*p(x-1,y)-p(x-1,y 1)
通过水平卷积梯度值和垂直卷积梯度值得到编码单元的梯度,采用的公式为:
g(x,y)=|gh(x,y)| |gv(x,y)|
在步骤s3中,获取所述编码单元梯度的投影值这一步骤。首先计算cu的水平和垂直方向投影的梯度值sumy、sumx,公式中w为cu的宽,h为cu的高,公式如下:
通过sumy()和sumx()可以计算得到水平方向和垂直方向最大梯度投影值m_sumy和m_sumx:
m_sumx=max(sumx)/h
m_sumy=max(sumy)/w
其中,max()的含义为取数组最大值函数。
随后对水平方向和垂直方向上的4个分区计算梯度投影值极差,由于有4个分区,因此结果为含有4个元素的一维数组,公式如下:
以及计算水平方向和垂直方向上的相邻分区梯度投影值极差差值的差值,由于有4个分区,相邻分区梯度投影值极差差值的差值为含有3个元素的一维数组,公式如下:
其中,abs()函数的意义为取绝对值函数。
通过相邻分区梯度投影值极差差值得到水平方向和垂直方向的最大相邻分区梯度投影值极差差值m_diffy,m_diffx,以及水平方向和垂直方向的最大相邻分区梯度投影值极差差值下标my_idx,mx_idx,公式如下:
m_diffx=max(diff_x)/h
m_diffy=max(diff_y)/w
mx_idx=idx(max_diffx)
my_idx=idx(max_diffy)
其中,idx()函数的意义为取该值在数组中的下标。
在步骤s4中,根据所述投影值与预设阈值的比对结果,选择划分模式。其中,cu的划分模式主要有四叉树划分模式(qt),不划分模式(non-split),水平方向划分模式(hor),垂直方向划分模式(ver),二叉树划分模式(bt)和扩展四叉树划分模式(eqt)。在遍历划分模式的过程中,首先进行不划分模式尝试,随后会按照四叉树划分模式、二叉树水平划分模式、二叉树垂直划分模式、扩展四叉树水平划分模式和扩展四叉树垂直划分模式的顺序依次进行划分模式尝试,而且在二叉树划分和四叉树划分后的子编码单元不再进行四叉树划分。
在划分模式中,二叉树划分与水平或垂直方向结合,将编码模块,即cu沿水平方向或垂直方向划分为两块,四叉树划分则为四块。而扩展四叉树划分方式较为特殊,如图3所示,其中n表示cu对应的长度或宽度。
若水平方向最大梯度投影值和垂直方向最大梯度投影值均小于第一阈值,而且水平方向最大相邻分区梯度投影值极差差值和垂直方向最大相邻分区梯度投影值极差差值均小于第二阈值,则选择不划分模式。
若垂直方向最大相邻分区梯度投影值极差差值大于第三阈值与水平方向最大相邻分区梯度投影值极差差值的乘积,而且垂直方向最大梯度投影值大于第四阈值与水平方向最大梯度投影值的乘积,则禁止水平方向的划分;
若水平方向最大相邻分区梯度投影值极差差值大于第三阈值与垂直方向最大相邻分区梯度投影值极差差值的乘积,而且水平方向最大梯度投影值大于第四阈值与垂直方向最大梯度投影值的乘积,则禁止垂直方向的划分。
若垂直方向最大相邻分区梯度投影值极差差值下标为1,而且垂直方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第1个元素的乘积;或者垂直方向最大相邻分区梯度投影值极差差值下标为1,而且垂直方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第3个元素的乘积,则禁止垂直方向扩展四叉树划分;
若水平方向最大相邻分区梯度投影值极差差值下标为1,而且水平方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第1个元素的乘积;或者水平方向最大相邻分区梯度投影值极差差值下标为1,而且水平方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第3个元素的乘积,则禁止水平方向扩展四叉树划分。
本方法的划分模式和cu的递归划分过程相结合,递归划分方法在通过逐个模式尝试,找到当前cu的最优划分模式时,对划分模式下的子cu再度进行遍历并找到最优划分模式。本方法同样根据递归对子cu再次进行梯度计算和快速划分,对筛选后的划分模式采用率失真优化方法来确定块的最佳划分方式,直到本cu的最优划分模式被确定为不划分模式(non-split)时,不再进行划分,返回上一层递归。
在本发明的一个实施例中,获取视频编码单元(cu)之后,对cu的亮度值采用sobel算子进行检测,从而得到计算cu水平和垂直方向的投影梯度值sumy和sumx。由于eqt划分后最小子cu块的宽度或高度为原cu块的1/4,所以使用四个分区进行计算,以便于准确判断内容边界。则可以得到四个分区的梯度投影值极差x[4]和y[4],以及最大相邻分区梯度投影值极差差值max(diff_x)和max(diff_y)。
如图4和图5所示,在当前cu块适合不划分模式的情况下,cu梯度投影值普遍较低,而在宽高均等于64的情况下,max(sumx),max(sumy)均小于4000。而且纹理变化程度不大,max(diff_x)、max(diff_y)比较小,在宽高均为64时候,均小于500。因此对max(sumx),max(sumy),max(diff_x)、max(diff_y)进行归一化处理,并使用预设的第一阈值和第二阈值对水平,垂直方向最大梯度投影值和最大相邻分区梯度投影值极差差值进行判断。判断的方法与此前判断选择不划分模式的方法一致,在本实施例中,第一阈值th1和第二阈值th2的取值为:
th1=60 5*((64*64)/(cu_height*cu_width))
th2=10 5*((64*64)/(cu_height*cu_width))
其中,cu_height表示cu的高度,cu_width表示cu的宽度。
而在选择垂直划分的情况时,在数据上会表现出max(sumx)比max(sumy)大很多并且max(diff_x)也比max(diff_y)大很多的情况,此时cu纹理更多是垂直纹理,在垂直方向存在明显的内容分界。那么此时应该倾向于选择垂直划分,并禁止水平方向的划分。而选择水平划分的情况与选择垂直划分的情况相对。在根据实验考虑cu在不同阈值下的错误率和跳过划分率,平衡时间与性能之后,本实施例得到合适的第三阈值为2,第四阈值为1.5,进行划分判断的方法与此前禁止水平方向划分和禁止垂直方向划分的方法相同。
如图6所示,在选择扩展四叉树垂直划分的情况时,由于该划分模式如图2所示,在垂直方向两侧1/4位置为垂直划分,在图像中间部分为水平划分。当cu在图像中间部分更倾向于垂直划分时,并且cu的两边1/4位置在垂直方向上差异时相比中间位置差异较小时(即diff_x[1]相比于diff_x[0]/diff_x[2]较大),判断禁止垂直方向扩展四叉树划分。本实施例得到合适的第五阈值为2,进行划分判断的方法与此前禁止水平方向和垂直方向扩展四叉树划分的方法相同。
在通过本方法对4k,1080p以及720p的样例视频进行实验后,可以得到如下表所示的结果。
其中序列为输入的视频序列,bd-rate为编码性能,△t为减少的时间。可以看出,使用本方法对avs3编码方式进行优化后,在编码性能损失不大的情况下(平均bd-rate为0.70%),平均降低编码时间达到了41%,对编码时间的缩减优化效果显著。
为了实现如上所述的一种avs3帧内快速划分方法,本发明还提出了一种avs3帧内快速划分系统,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如上所述的一种avs3帧内快速划分方法。
参考图7,为了实现如上所述的一种avs3帧内快速划分方法,本发明还提出了一种avs3帧内快速划分系统,包括:
图像获取模块,用于获取视频编码单元;
sobel梯度模块,用于采用sobel算子得到所述编码单元的梯度;
梯度投影模块,用于获取所述编码单元梯度的投影值;
模式划分模块,用于根据所述投影值与预设阈值的比对结果,选择划分模式。
为了实现如上所述的一种avs3帧内快速划分方法,本发明还提出了一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行如上所述的一种avs3帧内快速划分方法。
综上所述,相较于现有技术,本发明具有以下优点:
(1)采用sobel算子获取图像的梯度并计算得到梯度的投影值,通过投影值与预设阈值的比对结果,对avs3帧内模式进行快速划分。由于本方法利用较少的计算,就可以获得avs3帧内模式的划分结果,明显提高了编码的速度,缩短了由于递归遍历划分模式而花费的编码时间。
(2)由于本发明是使用sobel算子对图像进行边缘提取操作,有一定的噪声抑制作用,可以较好地对输入的图像边缘进行检测,并检测出更多的弱边缘。
(3)本发明考虑到扩展四叉树划分模式划分后,最小子编码单元的宽和高仅为原编码单元的1/4,因此使用四个分区进行梯度计算,从而更准确地判断内容边界,提升模式划分的准确性。
对于上述方法实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
1.一种avs3帧内快速划分方法,其特征在于,包括以下步骤:
获取视频编码单元;
采用sobel算子得到所述编码单元的梯度;
获取所述编码单元梯度的投影值;
根据所述投影值与预设阈值的比对结果,选择划分模式。
2.根据权利要求1所述的一种avs3帧内快速划分方法,其特征在于:
所述预设阈值,包括第一阈值、第二阈值、第三阈值、第四阈值和第五阈值。
3.根据权利要求2所述的一种avs3帧内快速划分方法,其特征在于:
所述编码单元梯度的投影值,包括水平方向梯度的投影值、垂直方向梯度的投影值、水平方向最大梯度投影值和垂直方向最大梯度投影值;
所述编码单元梯度的投影值,还包括水平方向四个分区的梯度投影值极差、垂直方向四个分区的梯度投影值极差、水平方向相邻分区梯度投影值极差差值和垂直方向相邻分区梯度投影值极差差值;
所述编码单元梯度的投影值,还包括水平方向最大相邻分区梯度投影值极差差值、垂直方向最大相邻分区梯度投影值极差差值、水平方向最大相邻分区梯度投影值极差差值下标和垂直方向最大相邻分区梯度投影值极差差值下标。
4.根据权利要求3所述的一种avs3帧内快速划分方法,其特征在于:所述根据所述投影值与预设阈值的比对结果,选择划分模式这一步骤,包括以下步骤:
若水平方向最大梯度投影值和垂直方向最大梯度投影值均小于第一阈值,而且水平方向最大相邻分区梯度投影值极差差值和垂直方向最大相邻分区梯度投影值极差差值均小于第二阈值,则选择不划分模式;
若垂直方向最大相邻分区梯度投影值极差差值大于第三阈值与水平方向最大相邻分区梯度投影值极差差值的乘积,而且垂直方向最大梯度投影值大于第四阈值与水平方向最大梯度投影值的乘积,则禁止水平方向的划分;
若水平方向最大相邻分区梯度投影值极差差值大于第三阈值与垂直方向最大相邻分区梯度投影值极差差值的乘积,而且水平方向最大梯度投影值大于第四阈值与垂直方向最大梯度投影值的乘积,则禁止垂直方向的划分。
5.根据权利要求3所述的一种avs3帧内快速划分方法,其特征在于:所述根据所述投影值与预设阈值的比对结果,选择划分模式这一步骤,还包括以下步骤:
若垂直方向最大相邻分区梯度投影值极差差值下标为1,而且垂直方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第1个元素的乘积;或者垂直方向最大相邻分区梯度投影值极差差值下标为1,而且垂直方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第3个元素的乘积,则禁止垂直方向扩展四叉树划分;
若水平方向最大相邻分区梯度投影值极差差值下标为1,而且水平方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第1个元素的乘积;或者水平方向最大相邻分区梯度投影值极差差值下标为1,而且水平方向相邻分区梯度投影值极差差值的第2个元素大于第五阈值与第3个元素的乘积,则禁止水平方向扩展四叉树划分。
6.根据权利要求1所述的一种avs3帧内快速划分方法,其特征在于:
对于选择后的划分模式,采用率失真优化方法,获取最佳的划分模式。
7.根据权利要求1所述的一种avs3帧内快速划分方法,其特征在于:所述采用sobel算子得到所述编码单元的梯度这一步骤,包括以下步骤:
对编码单元进行临近复制,补充边缘图像;
使用水平sobel算子和垂直sobel算子对编码单元进行卷积,获取水平卷积梯度值和垂直卷积梯度值;
通过水平卷积梯度值和垂直卷积梯度值得到编码单元的梯度。
8.一种avs3帧内快速划分系统,其特征在于:包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-7中任一项所述的一种avs3帧内快速划分方法。
9.一种avs3帧内快速划分系统,其特征在于:包括:
图像获取模块,用于获取视频编码单元;
sobel梯度模块,用于采用sobel算子得到所述编码单元的梯度;
梯度投影模块,用于获取所述编码单元梯度的投影值;
模式划分模块,用于根据所述投影值与预设阈值的比对结果,选择划分模式。
10.一种存储介质,其中存储有处理器可执行的指令,其特征在于,所述处理器可执行的指令在由处理器执行时用于执行如权利要求1-7中任一项所述的一种avs3帧内快速划分方法。
技术总结