本技术涉及视频编解码领域,尤其涉及一种视频编码、解码方法及相关设备。
背景技术:
1、随着视频编解码技术的发展,视频彩铃、视频广告等业务得以广泛应用。上述业务对编码和解码的速度提出了更高的要求,为此,视频编解码标准h.264提出了并行编解码的方法来加速对视频的编码和解码。视频编解码标准h.264可以对每帧图像进行分割,将每帧图像划分为粒度更细的一个或多个条带(slice)。每一个slice是自包含的,意味着slice包含解码端所需的所有语法结构,视频帧解码时,以slice为单位独立解码。但是,这种独立指的是空间域上的slice独立,在编解码过程中,当前帧的编解码时仍需依赖参考帧上的多个slice。
2、在某些应用场景(比如说视频彩铃叠加宣传广告)下,需要在原始视频中叠加的部分只占图像帧画面的很小部分。但是,由于现有技术的slice编解码对参考帧的依赖限制,需要做参考帧全图像的编码和解码,从而导致计算开销极大。
技术实现思路
1、本技术实施例提供了一种视频编码、解码方法及相关设备,通过对视频的图像帧进行分割,得到待处理区域,单个待处理区域中图像块的编码依赖于参考帧中同位置的参考区域,从而在编解码时不需要进行全量编解码,可以降低计算开销。
2、第一方面,本技术实施例提供一种视频编码方法,该方法可以包括:对原始视频的图像序列中的图像帧进行分割处理,得到待处理区域,其中,所述待处理区域包含一个或多个图像块;
3、确定目标图像块在参考帧中的参考区域,其中,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述目标图像块为所述一个或多个图像块中的一个,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
4、根据所述参考区域对所述目标图像块进行编码。
5、通过该方法可以确定目标图像块(当前编码块)在参考帧中的参考区域,而参考区域所占的区域在目标图像块所属的待处理区域所占的区域内,所以对于待处理区域中目标图像块的编码仅仅依赖于参考帧中同位置的区域,不需要进行全量编码,可以降低计算开销。
6、结合第一方面,在第一方面的一种可能的实现方式中,所述确定目标图像块在参考帧中的参考区域,包括:
7、计算所述待处理区域所占的区域;
8、在所述目标图像块的运动矢量所指示的区域不在所述待处理区域所占的区域内的情况下,对所述目标图像块进行约束处理,得到所述目标图像块的约束运动矢量;其中,所述约束运动矢量所指示的区域在目标图像块所属的待处理区域所占的区域内;
9、根据所述约束运动矢量从所述的参考帧中确定所述目标图像块的参考区域。
10、可以看出,对参考区域所占的区域不在待处理区域所占的区域内的情况下,需要进行约束下的目标图像块的运动估计,从而使得参考区域所占的区域在待处理区域所占的区域内,保证在对待处理区内的图像块进行编码时可以只参考参考帧中同位置的区域。
11、结合第一方面,在第一方面的一种可能的实现方式中,所述对所述目标图像块进行约束处理,得到所述目标图像块的约束运动矢量,包括:
12、根据所述目标图像块的相邻块的运动矢量,分别计算所述相邻块的运动矢量所指示的区域与所述目标图像块之间的像素残差;
13、在存在所述像素残差为0的运动矢量的情况下,若所述像素残差为0所对应的相邻块的运动矢量所指示的区域不在所述待处理区域所占的区域内,对所述目标图像块进行约束处理,得到所述目标图像块的运动矢量。
14、可以理解的是,若上述的像素残差为0,则说明目标图像块为skip宏块。因此,在上述运动矢量所指示的区域不在待处理区域所占的区域的情况下,可以将skip宏块作为普通的图像块进行约束处理。
15、结合第一方面,在第一方面的一种可能的实现方式中,所述约束处理包括:整像素运动估计和子像素运动估计。
16、结合第一方面,在第一方面的一种可能的实现方式中,所述对所述目标图像块进行约束处理,得到所述目标图像块的运动矢量,包括:
17、根据所述目标图像块的相邻块所对应的运动矢量对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点;
18、根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量。
19、可以理解的是,目标图像块的运动矢量所指示的区域在目标图像块所属的待处理区域所占的区域内,通过整像素运动估计来保证参考区域在目标图像块所属的待处理区域所占的区域内。
20、结合第一方面,在第一方面的一种可能的实现方式中,所述根据所述目标图像块的相邻块所对应的运动矢量对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点,包括:
21、若存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则计算所述相邻块的运动矢量的第一码率失真代价;
22、根据所述第一码率失真代价中最小的第一码率失真代价所对应的运动矢量确定整像素运动搜索终点。
23、可以看出,整像素运动搜素起点是运动矢量中编码代价最小的一个,从而可以确定编码代价最小的参考区域。
24、结合第一方面,在第一方面的一种可能的实现方式中,述根据所述目标图像块的相邻块所对应的运动矢量对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点,包括:
25、若不存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则根据所述待处理区域的边界信息和所述目标图像块的位置信息,将所述目标图像块的相邻块所对应的运动矢量进行等比例缩放得到缩放后的运动矢量,其中,所述缩放后的运动矢量所指示的区域在所述待处理区域的所占的区域内;
26、计算所述缩放后的运动矢量的第二码率失真代价;
27、根据所述第二码率失真代价中最小的第二码率失真代价所对应的运动矢量确定整像素运动搜索终点。
28、可以看出,缩放后的运动矢量所指示的区域在待处理区域的所占的区域内,而所确定的整像素运动搜索终点是编码代价最小的一个,从而保证目标图像块的参考区域在待处理区域所占的区域内。
29、结合第一方面,在第一方面的一种可能的实现方式中,所述根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量,包括:
30、根据子像素插值计算关系计算子像素参考区域;
31、若所述整像素运动搜索终点对应的运动矢量所指示的区域不在所述子像素参考区域所占的区域内,则将所述整像素运动搜索终点对应的运动矢量作为所述目标图像块的运动矢量。
32、可以看出,子像素参考区域是精度更高的参考区域,在参考区域不处于子像素参考区域所占的区域时,说明存在子像素插值依赖,因此可以保存整像素运动矢量。
33、结合第一方面,在第一方面的一种可能的实现方式中,所述根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量,包括:
34、若所述整像素运动搜索终点对应的运动矢量所指示的区域在所述子像素参考区域所占的区域内,则对所述目标图像块进行子像素运动估计,得到所述目标图像块的运动矢量。
35、可以看出,子像素参考区域是精度更高的参考区域,在参考区域处于子像素参考区域所占的区域时,说明不存在子像素插值依赖,需要进行子像素估计以保证参考区域在待处理区域内。
36、结合第一方面,在第一方面的一种可能的实现方式中,述对所述目标图像块进行子像素运动估计,得到所述目标图像块的运动矢量,包括:
37、根据所述整像素运动搜索终点对所述目标图像块进行子像素运动估计,确定子像素运动矢量,所述子像素运动矢量所指向的区域在所述子像素参考区域所占的区域内;
38、计算所述子像素运动矢量的第三码率失真代价;
39、将所述第三码率失真代价中最小的第三码率失真代价所对应的子像素运动矢量作为所述目标图像块的运动矢量。
40、可以理解的是,目标图像块的运动矢量所指示的区域在目标图像块所属的待处理区域所占的区域内,通过子像素运动估计可以得到精度更高的参考区域,来保证参考区域在目标图像块所属的待处理区域所占的区域内,且不存在子像素跨区域依赖风险。
41、结合第一方面,在第一方面的一种可能的实现方式中,所述计算所述待处理区域所占的区域,包括:
42、计算所述待处理区域中第一个图像块序号和最后一个图像块的序号;
43、计算所述待处理区域所占的区域信息,所述区域信息包含所述待处理区域的行数,所述待处理区域的第一行和最后一行是否满行;
44、根据所述第一个图像块的序号、所述最后一个图像块的序号和所述区域信息计算所述待处理区域所占的区域。
45、第二方面,本技术实施例提供一种视频解码方法,该方法可以包括:解析码流得到目标图像块在参考帧中的参考区域,其中,所述目标图像块为待处理区域所包含的一个或多个图像块中的任意一个,所述待处理区域为对原始视频的图像序列中的任意图像帧进行分割处理后得到,所述待处理区域为叠加信息的区域,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
46、根据所述参考区域对所述目标图像块进行预测。
47、通过该方法可以确定目标图像块(当前解码块)在参考帧中的参考区域,而参考区域所占的区域在目标图像块所属的待处理区域所占的区域内,所以对于待处理区域中目标图像块的解码仅仅依赖于参考帧中同位置的区域,不需要进行全量解码,可以降级计算开销。
48、结合第二方面,在第二方面的一种可能的实现方式中,所述根据所述参考区域对所述目标图像块进行解码之后,还包括:
49、对未进行解码处理区域中的码流进行复制处理,其中,所述未进行解码处理区域为所述图像帧中除所述待处理区域所占的区域以外的区域。
50、第三方面,本技术实施例提供一种编码器,所述编码器包括分割单元、预测单元和熵编码单元,其中:
51、所述分割单元,用于对原始视频的图像序列中的图像帧进行分割处理,得到待处理区域,其中,所述待处理区域包含一个或多个图像块;
52、所述预测单元,还用于确定目标图像块在参考帧中的参考区域,其中,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述目标图像块为所述一个或多个图像块中的一个,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
53、所述熵编码单元,用于根据所述参考区域对所述目标图像块进行编码。
54、结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:
55、计算所述待处理区域所占的区域;
56、在所述目标图像块的运动矢量所指示的区域不在所述待处理区域所占的区域内的情况下,对所述目标图像块进行约束处理,得到所述目标图像块的约束运动矢量;其中,所述约束运动矢量所指示的区域在目标图像块所属的待处理区域所占的区域内;
57、根据所述约束运动矢量从所述的参考帧中确定所述目标图像块的参考区域。
58、结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:
59、根据所述目标图像块的相邻块的运动矢量,分别计算所述相邻块的运动矢量所指示的区域与所述目标图像块之间的像素残差;
60、在存在所述像素残差为0的运动矢量的情况下,若所述像素残差为0所对应的相邻块的运动矢量所指示的区域不在所述待处理区域所占的区域内,对所述目标图像块进行约束处理,得到所述目标图像块的运动矢量。
61、结合第三方面,在第三方面的一种可能的实现方式中,所述约束处理包括:整像素运动估计和子像素运动估计。
62、结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:根据所述目标图像块的相邻块所对应的运动矢量作为起点对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点;
63、根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量。
64、结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:若存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则计算所述相邻块的运动矢量的第一码率失真代价;
65、根据所述第一码率失真代价中最小的第一码率失真代价所对应的运动矢量确定整像素运动搜索终点。
66、结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:若不存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则根据所述待处理区域的边界信息和所述目标图像块的位置信息,将所述目标图像块的相邻块所对应的运动矢量进行等比例缩放得到缩放后的运动矢量,其中,所述缩放后的运动矢量所指示的区域在所述待处理区域的所占的区域内;
67、计算所述缩放后的运动矢量的第二码率失真代价;
68、根据所述第二码率失真代价中最小的第二码率失真代价所对应的运动矢量确定整像素运动搜索终点。
69、结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:根据子像素插值计算关系计算子像素参考区域;
70、若所述整像素运动搜索终点对应的运动矢量所指示的区域不在所述子像素参考区域所占的区域内,则将所述整像素运动搜索终点对应的运动矢量作为所述目标图像块的运动矢量。
71、结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:若所述整像素运动搜索终点对应的运动矢量所指示的区域在所述子像素参考区域所占的区域内,则对所述目标图像块进行子像素运动估计,得到所述目标图像块的运动矢量。
72、结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:
73、根据所述整像素运动搜索终点对所述目标图像块进行子像素运动估计,确定子像素运动矢量,所述子像素运动矢量所指向的区域在所述子像素参考区域所占的区域内;
74、计算所述子像素运动矢量的第三码率失真代价;
75、将所述第三码率失真代价中最小的第三码率失真代价所对应的子像素运动矢量作为所述目标图像块的运动矢量。
76、结合第三方面,在第三方面的一种可能的实现方式中,分割单元,具体用于:计算所述待处理区域中第一个图像块序号和最后一个图像块的序号;
77、计算所述待处理区域所占的区域信息,所述区域信息包含所述待处理区域的行数,所述待处理区域的第一行和最后一行是否满行;
78、根据所述第一个图像块的序号、所述最后一个图像块的序号和所述区域信息计算所述待处理区域所占的区域。
79、第四方面,本技术实施例提供一种解码器,所述解码器包括熵解码单元和帧间预测单元,其中:
80、熵解码单元,用于解析码流得到目标图像块在参考帧中的参考区域,其中,所述目标图像块为待处区域所包含的一个或多个图像块中的任意一个,所述待处理区域为对原始视频的图像序列中的任意图像帧进行分割处理后得到,所述待处理区域为叠加信息的区域,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
81、帧间预测单元,用于根据所述参考区域对所述目标图像块进行预测。
82、结合第四方面,在第四方面的一种可能的实现方式中,帧间预测单元,还用于:
83、对未进行解码处理区域中的码流进行复制处理,其中,所述未进行解码处理区域为所述图像帧中除所述待处理区域所占的区域以外的区域。
84、第五方面,本技术实施例提供了一种编码器,该编码器包括处理器和存储器,所述处理器用于执行存储器中存储的指令,以使得编码器实现前述第一方面任一项所描述的方法。
85、可选的,所述编码器还包括通信接口,所述通信接口用于接收和/或发送数据,和/或,所述通信接口用于为所述处理器提供输入和/或输出。
86、需要说明的是,上述实施例是以通过调用计算机指定来执行方法的处理器(或称通用处理器)为例进行说明。具体实施过程中,处理器还可以是专用处理器,此时计算机指令已经预先加载在处理器中。可选的,处理器还可以既包括专用处理器也包括通用处理器。
87、可选的,处理器和存储器还可以集成于一个器件中,即处理器和存储器还可以被集成在一起。
88、第五方面,本技术实施例提供了一种解码器,该编码器包括处理器和存储器,所述处理器用于执行存储器中存储的指令,以使得解码器实现前述第二方面任一项所描述的方法。
89、可选的,所述解码器还包括通信接口,所述通信接口用于接收和/或发送数据,和/或,所述通信接口用于为所述处理器提供输入和/或输出。
90、需要说明的是,上述实施例是以通过调用计算机指定来执行方法的处理器(或称通用处理器)为例进行说明。具体实施过程中,处理器还可以是专用处理器,此时计算机指令已经预先加载在处理器中。可选的,处理器还可以既包括专用处理器也包括通用处理器。
91、可选的,处理器和存储器还可以集成于一个器件中,即处理器和存储器还可以被集成在一起。
92、第六方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现前述第一方面任一项所描述的方法或者前述第二方面任一项所描述的方法。
93、第七方面,本技术提供了一种计算机程序产品,计算机程序产品包括计算机指令,当所述指令在至少一个处理器上运行时,实现前述第一方面任一项所描述的方法。
94、可选的,该计算机程序产品可以为一个软件安装包或镜像包,在需要使用前述方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
95、本技术第二至第七方面所提供的技术方案,其有益效果可以参考第一方面的技术方案的有益效果,此处不再赘述。