视频编码方法及装置与流程

文档序号:30787893发布日期:2022-07-16 08:49阅读:99来源:国知局
视频编码方法及装置与流程

1.本技术涉及图像压缩技术领域,特别涉及视频编码方法。本技术同时涉及视频编码装置,一种计算设备,以及一种计算机可读存储介质。


背景技术:

2.随着多媒体技术的发展,用户对于视频的要求也越来越高,所以视频高清化和高帧率化趋势对视频的压缩性能也提出更高要求,国际标准化组织vceg和mpeg又共同推出新一代高性能视频编码标准——h.265/hevc,在hevc中对量化之后的系数使用了率失真量化算法进行计算,以此在不影响视频质量的前提下节省码率。
3.目前,hevc中率失真量化算法的编码过程是基于每一步代价最小进行元素选择,这是一种贪心算法。由于元素之间的编码是相互影响的原因,在前一个元素进行调整之后,可能导致后续的元素性能变差,因此,如何获取比传统率失真量化算法性能更好的系数是目前亟需解决的问题。


技术实现要素:

4.有鉴于此,本技术实施例提供了视频编码方法。本技术同时涉及视频编码装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的视频编码中rdoq算法对参数优化的缺陷。
5.根据本技术实施例的第一方面,提供了一种视频编码方法,包括:
6.获取目标视频帧中的目标系数组,根据所述目标系数组确定编码节点序列,其中,所述编码节点序列中包括所述目标系数组中的每个编码节点的编码系数;
7.确定每个编码系数对应的编码状态节点及相邻两个编码系数对应编码状态节点之间的子节点路径,其中,每个子节点路径包括编码代价;
8.根据编码状态节点和编码状态节点间的子节点路径生成状态转移路径图,其中,所述状态转移路径图包括多条编码路径;
9.根据每条编码路径的路径编码代价在所述状态转移路径图中确定目标编码路径。
10.根据本技术实施例的第二方面,提供了一种视频编码装置,包括:
11.获取模块,被配置为获取目标视频帧中的目标系数组,根据所述目标系数组确定编码节点序列,其中,所述编码节点序列中包括所述目标系数组中的每个编码节点的编码系数;
12.第一确定模块,被配置为确定每个编码系数对应的编码状态节点及相邻两个编码系数对应编码状态节点之间的子节点路径,其中,每个子节点路径包括编码代价;
13.生成模块,被配置为根据编码状态节点和编码状态节点间的子节点路径生成状态转移路径图,其中,所述状态转移路径图包括多条编码路径;
14.第二确定模块,被配置为根据每条编码路径的路径编码代价在所述状态转移路径图中确定目标编码路径。
15.根据本技术实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述视频编码方法的步骤。
16.根据本技术实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现所述视频编码方法的步骤。
17.本技术提供的视频编码方法,包括:获取目标视频帧中的目标系数组,根据所述目标系数组确定编码节点序列,其中,所述编码节点序列中包括所述目标系数组中的每个编码节点的编码系数;确定每个编码系数对应的编码状态节点及相邻两个编码系数对应编码状态节点之间的子节点路径,其中,每个子节点路径包括编码代价;根据编码状态节点和编码状态节点间的子节点路径生成状态转移路径图,其中,所述状态转移路径图包括多条编码路径;根据每条编码路径的路径编码代价在所述状态转移路径图中确定目标编码路径。
18.本技术一实施例实现了确定每一种可能的状态转移路径,并计算每条状态转移路径的路径编码代价,通过选取整体编码代价最小的编码路径,作为最终的状态转移路径,从而获得算法性能更好的系数,在实际编码中节省更多码率。
附图说明
19.图1是本技术一实施例提供的一种传统rdoq算法的流程图;
20.图2是本技术一实施例提供的一种视频编码方法的流程图;
21.图3是本技术一实施例提供的一种视频编码方法的状态转移图;
22.图4是本技术一实施例提供的一种标准算法变量变化流程图;
23.图5是本技术另一实施例提供的一种视频编码方法的状态转移图;
24.图6是本技术一实施例提供的一种应用于视频压缩的视频编码方法的处理流程图;
25.图7是本技术一实施例提供的一种视频编码方法的实施流程图;
26.图8是本技术一实施例提供的一种视频编码装置的结构示意图;
27.图9是本技术一实施例提供的一种计算设备的结构框图。
具体实施方式
28.在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。
29.在本技术一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术一个或多个实施例。在本技术一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本技术一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
30.应当理解,尽管在本技术一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,
第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
31.首先,对本技术一个或多个实施例涉及的名词术语进行解释。
32.hevc:(high efficiency video coding),高清视频编码,一种新的视频压缩标准,用来以替代h.264/avc编码标准,2013年1月26号,hevc正式成为国际标准。
33.rdoq:(rate distortion optimized quantization),率失真量化技术,一种系数优化算法,率失真优化的目标是:在一定的码率限制下,减少视频的失真;在允许一定的失真下,把视频压缩到最小。
34.wfsa:(weighted finite stateacceptor),加权有限状态接受器,一种基于状态机的动态优化技术。
35.cg:(coeffcient),系数组,一个4乘4的矩形区域。
36.代价:是一个64位的整数值,数字越大表示编码当前的系数需要的比特越多或者失真越大。
37.hevc中对量化之后的系数使用了rdoq计算,对cg内的系数进行微调,在不影响视频质量的前提下,节省码率。根据hevc的标准,其计算方法如下:
38.按照扫描顺序依次扫描cg内的系数(主要分为z扫描,水平扫描和垂直扫描),假设当前扫描位置为scanposincg,编码方向中最后一个非零系数的位置为lastscanpos;
39.若当前扫描位置scanposincg》lastscanpos,计算当前位置的代价;
40.若当前扫描位置scanposincg==lastscanpos,那么当前系数幅值maxabslevel一定大于0,那么计算当前位置幅值为maxabslevel和maxabslevel-1时的代价,选择代价最小的那一个作为最终的幅值;
41.若当前扫描位置scanposincg《lastscanpos,且当前系数的幅值为0,计算当前位置的代价;
42.若当前位置scanposincg《lastscanpos,且当前系数的幅值maxabslevel小于3,计算maxabslevel、maxabslevel-1和0的代价,选择代价最小的那一个作为最终的幅值;
43.若当前位置scanposincg《lastscanpos,且当前系数的幅值maxabslevel大于等于3,计算maxabslevel和maxabslevel-1的代价,选择代价最小的那一个作为最终的幅值。
44.例如,假设有如表1的一组系数,按照列的方式反向编码,也就是按照“0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,2”的方式进行编码。
45.表1
46.2200100000001000
47.具体编码流程可以参见图1,图1是本技术一实施例提供的一种传统rdoq算法的流程图,其中,按照hevc中编码的流程,需要首先编码前面连续的11个0,需要花费10057696的代价;“2”编码为1需要花费10271386的代价,编码为2需要花费14180512的代价,按照hevc中的逻辑,这里选择代价最小的10271386,也就是编码为1;接着编码第一列第四行的“1”,编码为1需要花费10879973的代价,编码为0需要花费11223460的代价,这里选择代价最小
的10879973,也就是编码为1;接着编码第一列第三行的“0”,花费代价7655158;编码第一列第二行的“1”,编码为1需要花费5698792的代价,编码为0需要花费15763286的代价,这里选择代价最小的5698792,也就是编码为1。编码第一列第一行的“2”,该元素是大于1的,所以该元素可以编码为“2”,可以编码为“2-1=1”,又由于该元素不是最后一个非0元素(最后一个非0元素是第二列第一行的2),且小于3,所以,还可以编码为“0”,编码为2需要花费12396794的代价,编码为1需要花费48316079的代价,编码为0需要花费131368282的代价,最终选择代价最小的12396794,所以编码为2。经过前面的几个步骤,rdoq算法将“0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,2”的序列调整为“0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,2”的序列,也就是将编码顺序中第一个出现的2调整为了1,且最终的代价为10057696+10271386+10879973+

+12396794=56959799。
48.从上面的编码过程中我们可以看出,hevc中rdoq算法的编码过程是选择对当前元素来说性能最好的编码方式。可以理解为这是一种贪心算法的方式,但是这种方式,可能会有一个问题:某个元素的调整对它自身来说性能可能是最好的,但是,可能会导致后续元素性能变差,因为元素之间的编码是相互影响的。
49.基于此,在本技术中提供了视频编码方法,本技术同时涉及视频编码装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
50.图2是根据本技术一实施例提供的一种视频编码方法的流程图,具体包括以下步骤:
51.步骤202:获取目标视频帧中的目标系数组,根据所述目标系数组确定编码节点序列,其中,所述编码节点序列中包括所述目标系数组中的每个编码节点的编码系数。
52.其中,目标视频帧可以理解为在一段视频的所有视频帧中确定出的一个目标视频帧,针对该目标视频帧进行后续的编码处理。目标系数组可以理解为在目标视频帧中的一个像素矩阵,该像素矩阵为4乘4,目标系数组中的每个单元的系数可以理解为像素元素,针对目标系数组中的编码系数进行微调,在不影响视频质量的前提下,对视频帧进行压缩,可以节省码率。编码节点序列可以理解为按照扫描顺序依次扫描目标系数组生成的序列,编码节点序列中包括目标系数组中的每个编码系数。因此,编码节点可以理解为编码顺序,按照编码节点的顺序对编码系数进行编码。
53.在实际应用中,首先从一段视频的多个视频帧中确定出目标视频帧之后,从目标视频帧中选取一个目标系数组,根据目标系数组可以确定出编码节点序列,后续根据编码节点序列进行编码处理,完成对系数的优化。
54.在本技术一具体实施例中,获取目标视频帧中的目标系数组,目标系数组可以参见表1,根据目标系数组确定编码节点序列,编码节点序列为“0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,2”,其中,编码节点序列中的数字即为目标系数组中的系数。
55.具体地,根据所述目标系数组确定编码节点序列,包括:
56.根据预设获取规则在所述目标系数组中获取每个编码系数;
57.根据获取结果确定编码节点序列。
58.其中,预设获取规则可以理解为上述的扫描顺序,预设获取规则可以是z扫描获取、水平扫描获取、垂直扫描获取,根据预设获取规则可以获取不同顺序的编码节点序列。
59.在实际应用中,按照hevc标准可以垂直正向扫描获取目标系数组中的每个编码系
数,并在后续按照列的方式反向编码。
60.在本技术一具体实施例中,沿用上例,根据预设的获取规则,按照垂直扫描从左向右依次获取目标系数中的每个编码系数,根据获取结果确定编码节点序列为“0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,2”。
61.步骤204:确定每个编码系数对应的编码状态节点及相邻两个编码系数对应编码状态节点之间的子节点路径,其中,每个子节点路径包括编码代价。
62.其中,编码状态节点可以理解为编码系数的编码状态的节点,并且,编码状态节点的顺序是按照编码节点顺序进行排列。每个编码状态节点都有输入和输出,例如,参见图3,图3示出了本技术一实施例提供的一种视频编码方法的状态转移图,其中,状态12有两条输出,分别是“0/11223460”和“1/1264720”,有一条输入“2/14180512”。相邻两个编码系数对应的编码状态节点可以理解为按照编码节点顺序进行状态转移的两个编码状态节点,例如,图3中的编码状态节点11和编码状态节点12。
63.在实际应用中,每个编码系数可以编码至对应的系数,例如,编码状态节点12输入“2/14180512”,表示从状态11输入2这个系数,将以14180512的代价到状态12,根据本技术提供的rdoq算法的状态转移图可以清楚的观察到每相邻两个编码状态节点中所花费的代价。
64.在本技术一具体实施例中,沿用上例,确定编码节点序列“0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,2”中,每个编码系数对应的编码状态节点,确定出编码状态节点共有38个,确定每相邻两个编码系数对应编码状态节点之间的子节点路径,其中,每条子节点路径都包括有各自的编码代价。
65.具体地,任意一个编码系数对应的编码状态节点可通过下述方法确定,包括:
66.确定目标编码节点的目标编码系数和上一编码节点;
67.根据所述目标编码节点、参考节点和所述目标编码系数确定所述目标编码节点对应的至少一个编码幅值;
68.根据每个编码幅值和所述上一编码节点对应编码状态节点的属性信息,确定所述目标编码节点对应编码状态节点的属性信息;
69.根据每个编码状态节点的属性信息确定所述目标编码节点对应的编码状态节点。
70.其中,目标编码节点可以理解为目标编码系数在目标系数组中的位置,也即目标编码系数在编码节点序列中的排列顺序,例如,在表1中,第4行第4列的“0”即为第一个,其scanposincg等于0。上一编码节点可以理解为在目标编码节点之前的一个编码节点,例如,在表1中第1行第2列的编码系数“2”的编码节点为scanposincg等于12,其上一编码节点为第2行第2列的编码系数“0”的编码节点,其scanposincg等于11。
71.参考节点可以理解为按照扫描顺序中的最后一个非零系数在编码节点序列中的位置,例如,在表1中,按照“2,1,0,1,2,0,0...0”顺序进行扫描,其最后一个非零系数为第5位的“2”,则参考节点即为“2”在编码节点序列中的位置,表示为lastscanpos,lastscanpos=12。
72.编码幅值可以理解为当前编码系数可以编码成的maxabslevl的值,在一般情况下,在当前编码系数为n的情况下,其编码幅值为n和n-1,此时需要计算出n编码成n的代价和编码成n-1的代价。
73.状态节点的属性信息可以理解为确定状态节点生成的信息,状态节点的属性信息主要是算法运行过程中的6个变量,分别是c1、c2、c1idx、c2idx,goriceparam、scanposincg,其中,goriceparam为莱斯参数,scanposincg为当前像素元素位置,即当前系数在编码节点序列中的位置,具体地,这些变量会根据上一编码状态节点的变量和编码幅值进行改变,从而更新变量至获得下一个编码状态节点的属性信息。
74.在实际应用中,根据参考节点可以从编码节点序列中确定出从哪儿开始不等于0,从参考节点开始编码。随着算法的进行,c1、c2、c1idx、c2idx,goriceparam、scanposincg这些变量的值将发生变化。
75.初始时,c1=1,c2=0,goriceparam=0,c1idx=0,c2idx=0,scanposincg=0。这些数字和计算每个编码系数的代价有关,当变量的值发送变化时,计算出来的代价都不一样,参见图4,图4是本技术一实施例提供的一种标准算法变量变化流程图,其中,c1、c2、c1idx和c2idx,由标准算法根据图4所示的流程图进行变化,其中,当前编码状态节点属性信息中的变量参数会根据上一编码状态节点属性信息中的变量参数及编码幅值计算得到。例如,在上一编码状态节点的c1=1时,若编码幅值为1,则当前编码状态节点的c1变为2;在上一编码状态节点的c1=1时,若编码幅值大于1,则当前编码状态节点的c1变为0;在上一编码状态节点的c1=2时,若编码幅值为1,则当前编码状态节点的c1变为3;在上一编码状态节点的c1=3时,若编码幅值为1,则当前编码状态节点的c1还是为3;在上一编码状态节点的c1=0时,不论编码幅值为多少,当前编码状态节点的c1一直为0;在上一编码状态节点的c1=3时,若编码幅值大于1,则当前编码状态节点的c1变为0。在上一编码状态节点的c2=0时,若编码幅值大于1,则当前编码状态节点的c2=1;在上一编码状态节点的c2=1时,若编码幅值大于1,则当前编码状态节点的c2=2;在上一编码状态节点的c2=2时,若编码幅值大于1,则当前编码状态节点的c2还是为2。c1idx的的变化规则是在编码幅值大于等于1时,在上一编码状态节点的c1idx进行加1处理,c2idx的的变化规则是在编码幅值大于等于2时,在上一编码状态节点的c2idx进行加1处理。初始时,goriceparam=0,这个数值也和计算代价有关,goriceparam的值不一样,计算出来的代价就不一样。hevc标准也规定了goriceparam变化方式,本技术在此不作具体限制。
76.参见图5,图5是本技术另一实施例提供的一种视频编码方法的状态转移图,其中,有编码状态节点0至编码状态节点38,每个编码状态节点中都标注有各自属性信息中的变量参数,每一列的scanposincg数值是一样的。在图5中每一列编码状态节点的scanposincg数值都是一样的,因为本次处理的编码系数是16个,按照逆向顺序进行处理,所以scanposincg是按照15到0变换。例如,图5中编码状态节点11的变量参数为c1=1,c2=0,goriceparam(图中简写为r)=0,c1idx=0,c2idx=0,scanposincg=11,根据编码状态节点11的属性信息中的变量参数及编码状态节点12的编码幅值计算出编码状态节点12的变量参数为c1=0,c2=2,goriceparam=0,c1idx=2,c2idx=2,scanposincg=12。
77.在本技术一具体实施例中,沿用上例,确定目标编码节点为scanposincg=4,其目标编码系数为2,上一编码节点为scanposincg=5.根据目标编码节点、参考节点和目标编码系数确定目标编码节点对应的编码幅值为2和1,根据编码幅值和上一编码节点对应编码状态节点的属性信息,确定目标编码节点对应编码状态节点的属性信息,在编码幅值为2时,c1=0,c2=1,goriceparam=0,c1idx=1,c2idx=1,生成图5中的编码状态节点12;在
编码幅值为1时,c1=2,c2=0,goriceparam=0,c1idx=1,c2idx=0,生成图5中的编码状态节点13。
78.具体地,根据每个编码状态节点的属性信息确定所述目标编码节点对应的编码状态节点,包括:
79.确定目标属性信息和所述目标属性信息对应的目标编码幅值;
80.判断所述目标编码节点中是否存在所述目标属性信息对应的目标编码状态节点;
81.若是,则确定所述目标编码状态节点为所述目标属性信息对应的编码状态节点;
82.若否,则在所述目标编码节点中创建所述目标属性信息对应的编码状态节点。
83.其中,目标属性信息可以理解为在多个属性信息中确定出的一个属性信息,目标编码幅值可以理解为该目标属性信息对应的编码幅值。
84.在实际应用中,在相同编码节点的一列中可能会有属性信息相同的编码状态节点,在已有属性信息相同的编码状态节点的情况下,则不新建编码状态节点,而是将已存在的编码状态节点作为目标属性信息的目标编码状态节点。
85.在本技术一具体实施例中,沿用上例,在图5中,编码状态节点25输出编码幅值为“2”时,目标属性信息为c1=0,c2=1,goriceparam=0,c1idx=2,c2idx=1,scanposincg=0,则在scanposincg=0这一列中寻找是否有相同属性信息的编码状态节点,发现已存在编码状态节点30的属性信息与目标属性信息相同,则将编码状态节点30作为目标编码状态节点。
86.在本技术另一具体实施例中,沿用上例,在图5中,编码状态节点12输出编码幅值为“0”时,目标属性信息为c1=0,c2=1,goriceparam=0,c1idx=1,c2idx=1,scanposincg=4,则在scanposincg=4这一列中寻找是否有相同属性信息的编码状态节点,发现没有存在属性相同的编码状态节点,则创建一个编码状态节点,该编码状态节点为图5中的编码状态节点12。
87.具体地,确定相邻两个编码系数对应编码状态节点之间的子节点路径,还包括:
88.根据相邻两个编码状态节点之间的编码幅值计算所述相邻两个编码状态节点之间的编码代价;
89.将所述编码幅值和所述编码代价绑定至所述相邻两个编码状态节点之间的子节点路径。
90.在实际应用中,在确定出相邻两个编码状态节点之后,可以根据这两个编码状态节点的编码幅值计算出相邻两个编码状态节点之间的编码代价,并将编码幅值和编码代价绑定至所述相邻两个编码状态节点之间的子节点路径上,以此生成状态转移路径图。
91.在本技术一具体实施例中,沿用上例,确定相邻两个编码状态节点分别是编码状态节点11和编码状态节点12,根据这两个编码状态节点之间的编码幅值“2”计算出编码代价为14180512,将编码幅值和编码代价绑定至编码状态节点11和编码状态节点12的子节点路径上。
92.步骤206:根据编码状态节点和编码状态节点间的子节点路径生成状态转移路径图,其中,所述状态转移路径图包括多条编码路径。
93.其中,状态转移路径图可以理解为根据编码节点序列生成的路径图,其中,包括每个编码状态节点与相邻编码状态节点的路径,即编码路径。
94.在实际应用中,一条编码节点序列会有多条代价不同的编码路径,根据传统rdoq算法,是在编码时的每一步取代价小的编码幅值进行编码,而本技术则是在计算出所有可能发生的编码路径,确定出代价总和最小的编码路径。
95.在本技术一具体实施例中,沿用上例,根据38个编码状态节点和编码状态节点间的子节点路径生成状态转移路径图,其中,状态转移路径图可以参见图5,图5中包括有多条编码路径。
96.需要注意的是,编码状态节点26有两个输入,分别是从编码状态节点20的输入“1/4967584”和编码状态节点21的输入“0/15763286”,由于这两条输入都到达同一个编码状态节点,所以,只需要保留整体代价最小的那一条“路径”即可,也就是从“0-》11-》13-》16-》20-》26”和“0-》11-》13-》17-》21-》26”这两条路径中保留代价最小的一条,另一条路径就是无效的冗余的路径。由于展示的效果,这个图上都没有删除冗余的路径,其他状态上也有类似的冗余的路径,比如状态30,32,34,36和37等。
97.具体地,根据编码状态节点和编码状态节点间的子节点路径生成状态转移路径图,包括:
98.根据每个编码状态节点和相邻两个编码状态节点间的子节点路径确定多条编码路径;
99.根据多条编码路径生成状态转移路径图。
100.在实际应用中,根据每个编码状态节点和相邻两个编码状态节点间的子节点路径可以确定出多条编码路径,根据编码路径都可以完成编码,但是每条编码路径的代价不同,为了节省码率应该选取代价最小的编码路径。
101.在本技术一具体实施例中,根据38个编码状态节点和相邻两个编码状态节点的子节点路径确定出多条编码路径,根据多条编码路径生成状态转移路径图,状态转移路径图可以参见图5。
102.具体地,任意一条编码路径可通过下述方法确定,包括:
103.确定起始编码状态节点为目标编码状态节点;
104.根据所述目标编码状态节点和所述目标编码状态节点对应的子节点路径确定下个编码状态节点,将所述下个编码状态节点作为当前编码状态节点并继续执行根据所述目标编码状态节点和所述目标当前编码状态节点对应的子节点路径确定下个编码状态节点的操作,直至目标编码状态节点为最终编码状态节点。
105.在实际应用中,确定编码路径可以理解为确定一条路径上每个目标编码状态节点和每个目标编码状态节点对应的子节点路径,从而形成一条编码路径。具体地,可以是根据当前编码状态节点和当前编码状态节点的子节点路径确定出下一个编码状态节点,并根据下一个编码状态节点继续确定,依次类推,直至确定出最后一个编码状态节点。
106.在本技术一具体实施例中,沿用上例,确定起始编码状态节点0为目标编码状态节点,根据目标编码状态节点确定出和目标编码状态节点对应的子节点路径确定下一个编码状态节点1,并将编码状态节点1作为目标编码状态节点,并进行确定出下一个编码状态节点2,依次类推,直至确定出最后一个编码状态节点28。
107.步骤208:根据每条编码路径的路径编码代价在所述状态转移路径图中确定目标编码路径。
108.其中,目标编码路径可以理解为确定出的代价最小的编码路径,即为根据本技术提供的视频编码方法获取出的最优的编码路径。
109.在实际应用中,根据状态转移路径图可以确定每条编码路径的路径编码代价,选取路径编码代价最小的编码路径作为目标编码路径。
110.在本技术一具体实施例中,沿用上例,参见图5,从状态转移路径图中选择代价最小的路径作为最优路径,并通过路径回溯的方式,选出最终的系数。比如状态32所在的路径是整体代价最小的路径,通过路径回溯的方法可以知道“32-》26-》20-》16-》13-》11-》
…‑
》0”这样一条路径是代价最小的。
111.具体地,根据每条编码路径的编码代价在所述状态转移路径图中确定目标编码路径,包括:
112.根据每条编码路径上的每条子节点路径的编码代价计算每条编码路径对应的路径编码代价;
113.确定路径编码代价最小的编码路径为目标编码路径。
114.其中,路径编码代价可以理解为整条编码路径的代价,本技术是根据每一种可能的路径代价求和整体最小的结果进行选择,因此需要计算出整条编码路径的代价。
115.在实际应用中,根据整条编码路径的代价确定出的目标编码路径,相较于传统算法确定出的编码路径,可以获取到性能更好的系数,在实际编码中最高可节省0.62%的码率。
116.在本技术一具体实施例中,沿用上例,分别计算出每条编码路径的路径编码代价,选择路径编码代价最小的编码路径作为目标编码路径,计算出代价最小的路径为“0-》11-》13-》16-》20-》26-》32”,可以计算这条路径的代价为56572078,比原始rdoq算法的代价56959799要小。根据目标编码路径可以获取到对应的编码系数,分别是“0...0,1,0,0,0,2”。
117.本技术提供的一种视频编码方法,包括:获取目标视频帧中的目标系数组,根据所述目标系数组确定编码节点序列,其中,所述编码节点序列中包括所述目标系数组中的每个编码节点的编码系数;确定每个编码系数对应的编码状态节点及相邻两个编码系数对应编码状态节点之间的子节点路径,其中,每个子节点路径包括编码代价;根据编码状态节点和编码状态节点间的子节点路径生成状态转移路径图,其中,所述状态转移路径图包括多条编码路径;根据每条编码路径的路径编码代价在所述状态转移路径图中确定目标编码路径。通过根据编码节点序列确定出每条编码路径,并计算出每条编码路径的代价总和,根据代价总和选择最终的编码路径作为目标编码路径,相较于传统算法选择的编码路径,目标编码路径的代价更小,从而可以节省编码时的码率,减小失真。
118.下述结合附图6,以本技术提供的视频编码方法在视频压缩的应用为例,对所述视频编码方法进行进一步说明。其中,图6示出了本技术一实施例提供的一种应用于视频压缩的视频编码方法的处理流程图,具体包括以下步骤:
119.步骤602:获取目标视频帧中的目标系数组,根据预设获取规则在所述目标系数组中获取每个编码系数,根据获取结果确定编码节点序列。
120.在本技术一具体实施例中,获取表1中的目标系数组,根据预设获取规则在目标系数组中获取每个编码系数,根据获取结果确定编码节点序列,编码节点序列为“0,0,0,0,0,
0,0,0,0,0,0,2,1,0,1,2”。
121.在实际应用中,当确定编码节点序列之后,就可以确定初始编码状态节点的scanposincg,参见图7,图7示出了本技术一实施例提供的一种视频编码方法的实施流程图,首先,根据编码节点序列确定初始的编码状态节点的scanposincg=15,根据每个编码状态节点的scanposincg的值判断是否进行状态转移,若scanposincg大于等于0,则根据根据编码幅值(maxabslevel)和上一编码状态节点的属性信息对当前编码状态节点的c1,c2,c1idx,c2idx和goriceparam进行更新,并进行状态转移,在scanposincg小于0时则无需进行状态转移,说明此时编码状态节点已经为最后的编码状态节点,此刻可以选出整体代价最小的状态,并回溯得到代价最小的路径,得到最优的系数。
122.步骤604:确定每个编码系数对应的编码状态节点及相邻两个编码系数对应编码状态节点之间的子节点路径。
123.在本技术一具体实施例中,确定每个编码系数对应的编码状态节点需要根据当前编码节点、参考节点和上一编码节点来确定,具体地,假设当前位置为scanposincg,处理完当前位置之后,scanposincg=scanposincg-1,直到为0,初始时scanposincg=15;
124.若当前扫描位置scanposincg》lastscanpos,计算当前位置的代价,更新c1,c2,c1idx,c2idx和goriceparam的值,并根据这些值生成新的状态,比如图5中的编码状态节点0~11,虽然编码状态节点0~11的c1,c2,c1idx,c2idx和goriceparam的值是一样的,但是,他们的scanposincg值不同,所以,给他们分配不同的状态号;
125.若当前扫描位置scanposincg==lastscanpos,那么当前系数幅值maxabslevel一定大于0,计算当前位置幅值为maxabslevel和maxabslevel-1时的代价,并更新c1,c2,c1idx,c2idx和goriceparam五个值,并进行状态转移;图5中状态11到状态12和状态13的转移就属于这种情况;
126.若当前扫描位置scanposincg《lastscanpos,且当前系数的幅值为0,计算对应的代价值,并进行转移,但状态内部的c1,c2,c1idx,c2idx和goriceparam值不变;图5中状态14到18,15到19,16到20,17到21就属于这种情况;
127.若当前位置scanposincg《lastscanpos,且当前系数的幅值maxabslevel小于3,计算maxabslevel、maxabslevel-1和0的代价,并更新c1,c2,c1idx,c2idx和goriceparam五个值的状态进行转移;图5中状态22到状态38之间的转移就属于这种情况。
128.若当前位置scanposincg《lastscanpos,且当前系数的幅值maxabslevel大于等于3,计算maxabslevel和maxabslevel-1的代价,并进行转移。
129.步骤606:根据编码状态节点和编码状态节点间的子节点路径生成状态转移路径图。
130.在本技术一具体实施例中,沿用上例,根据上述方法确定出编码状态节点和编码状态节点间的子节点路径之后,则可以生成状态转移路径图。
131.步骤608:根据每条编码路径的路径编码代价在所述状态转移路径图中确定目标编码路径。
132.在本技术一具体实施例中,沿用上例,从最后一个系数转移的编码状态节点中,选出整体代价最小的路径所对应的系数,作为最终的系数。从最后一列编码状态节点28~38,这11个编码状态节点中,选出整体代价最小的编码状态节点32,并进行编码状态节点回溯,
得到路径“0-》11-》13-》16-》20-》26-》32”,并将这些状态对应的系数值作为最终的系数值。可以计算这条路径的代价为56572078,比原始rdoq算法的代价56959799要小。
133.本技术提出的一种应用于视频压缩的视频编码方法,包括:获取目标视频帧中的目标系数组,根据预设获取规则在所述目标系数组中获取每个编码系数,根据获取结果确定编码节点序列;确定每个编码系数对应的编码状态节点及相邻两个编码系数对应编码状态节点之间的子节点路径;根据编码状态节点和编码状态节点间的子节点路径生成状态转移路径图;根据每条编码路径的路径编码代价在所述状态转移路径图中确定目标编码路径。通过根据编码节点序列确定出每条编码路径,并计算出每条编码路径的代价总和,根据代价总和选择最终的编码路径作为目标编码路径,相较于传统算法选择的编码路径,目标编码路径的代价更小,从而可以节省编码时的码率,减小失真。
134.与上述方法实施例相对应,本技术还提供了视频编码装置实施例,图8示出了本技术一实施例提供的一种视频编码装置的结构示意图。如图8所示,该装置包括:
135.获取模块802,被配置为获取目标视频帧中的目标系数组,根据所述目标系数组确定编码节点序列,其中,所述编码节点序列中包括所述目标系数组中的每个编码节点的编码系数;
136.第一确定模块804,被配置为确定每个编码系数对应的编码状态节点及相邻两个编码系数对应编码状态节点之间的子节点路径,其中,每个子节点路径包括编码代价;
137.生成模块806,被配置为根据编码状态节点和编码状态节点间的子节点路径生成状态转移路径图,其中,所述状态转移路径图包括多条编码路径;
138.第二确定模块808,被配置为根据每条编码路径的路径编码代价在所述状态转移路径图中确定目标编码路径。
139.所述获取模块802,进一步被配置为:
140.根据预设获取规则在所述目标系数组中获取每个编码系数;
141.根据获取结果确定编码节点序列。
142.所述第一确定模块804,进一步被配置为:
143.确定目标编码节点的目标编码系数和上一编码节点;
144.根据所述目标编码节点、参考节点和所述目标编码系数确定所述目标编码节点对应的至少一个编码幅值;
145.根据每个编码幅值和所述上一编码节点对应编码状态节点的属性信息,确定所述目标编码节点对应编码状态节点的属性信息;
146.根据每个编码状态节点的属性信息确定所述目标编码节点对应的编码状态节点。
147.所述第一确定模块804,进一步被配置为:
148.确定目标属性信息和所述目标属性信息对应的目标编码幅值;
149.判断所述目标编码节点中是否存在所述目标属性信息对应的目标编码状态节点;
150.若是,则确定所述目标编码状态节点为所述目标属性信息对应的编码状态节点;
151.若否,则在所述目标编码节点中创建所述目标属性信息对应的编码状态节点。
152.所述第一确定模块804,进一步被配置为:
153.根据相邻两个编码状态节点之间的编码幅值计算所述相邻两个编码状态节点之间的编码代价;
154.将所述编码幅值和所述编码代价绑定至所述相邻两个编码状态节点之间的子节点路径。
155.所述生成模块806,进一步被配置为:
156.根据每个编码状态节点和相邻两个编码状态节点间的子节点路径确定多条编码路径;
157.根据多条编码路径生成状态转移路径图。
158.所述生成模块806,进一步被配置为:
159.确定起始编码状态节点为目标编码状态节点;
160.根据所述目标编码状态节点和所述目标编码状态节点对应的子节点路径确定下个编码状态节点,将所述下个编码状态节点作为当前编码状态节点并继续执行根据所述目标编码状态节点和所述目标当前编码状态节点对应的子节点路径确定下个编码状态节点的操作,直至目标编码状态节点为最终编码状态节点。
161.所述第二确定模块808,进一步被配置为:
162.根据每条编码路径上的每条子节点路径的编码代价计算每条编码路径对应的路径编码代价;
163.确定路径编码代价最小的编码路径为目标编码路径。
164.本技术提供的一种视频编码装置,包括:获取模块,被配置为获取目标视频帧中的目标系数组,根据所述目标系数组确定编码节点序列,其中,所述编码节点序列中包括所述目标系数组中的每个编码节点的编码系数;第一确定模块,被配置为确定每个编码系数对应的编码状态节点及相邻两个编码系数对应编码状态节点之间的子节点路径,其中,每个子节点路径包括编码代价;生成模块,被配置为根据编码状态节点和编码状态节点间的子节点路径生成状态转移路径图,其中,所述状态转移路径图包括多条编码路径;第二确定模块,被配置为根据每条编码路径的路径编码代价在所述状态转移路径图中确定目标编码路径。通过根据编码节点序列确定出每条编码路径,并计算出每条编码路径的代价总和,根据代价总和选择最终的编码路径作为目标编码路径,相较于传统算法选择的编码路径,目标编码路径的代价更小,从而可以节省编码时的码率,减小失真。
165.上述为本实施例的一种视频编码装置的示意性方案。需要说明的是,该视频编码装置的技术方案与上述的视频编码方法的技术方案属于同一构思,视频编码装置的技术方案未详细描述的细节内容,均可以参见上述视频编码方法的技术方案的描述。
166.图9示出了根据本技术一实施例提供的一种计算设备900的结构框图。该计算设备900的部件包括但不限于存储器910和处理器920。处理器920与存储器910通过总线930相连接,数据库950用于保存数据。
167.计算设备900还包括接入设备940,接入设备940使得计算设备900能够经由一个或多个网络960通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备940可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
168.在本技术的一个实施例中,计算设备900的上述部件以及图9中未示出的其他部件
也可以彼此相连接,例如通过总线。应当理解,图9所示的计算设备结构框图仅仅是出于示例的目的,而不是对本技术范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
169.计算设备900可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备900还可以是移动式或静止式的服务器。
170.其中,处理器920执行所述计算机指令时实现所述的视频编码方法的步骤。
171.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的视频编码方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述视频编码方法的技术方案的描述。
172.本技术一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现如前所述视频编码方法的步骤。
173.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的视频编码方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述视频编码方法的技术方案的描述。
174.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
175.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,randomaccess memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
176.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
177.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
178.以上公开的本技术优选实施例只是用于帮助阐述本技术。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本技术的内容,可作很多的修改和变化。本技术选取并具体描述这些实施例,是为了更好地解释本技术的原
理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本技术。本技术仅受权利要求书及其全部范围和等效物的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1