视频帧预测方法、装置、电子设备和存储介质与流程
未命名
10-25
阅读:73
评论:0
1.本公开涉及计算机技术领域,尤其涉及一种视频帧预测方法、装置、电子设备和存储介质。
背景技术:
2.扩展现实xr(extendedreality),是指通过计算机将真实与虚拟相结合,打造一个可人机交互的虚拟环境。在xr显示领域中会根据前两帧视频帧生成的运动矢量来推测下一视频帧。因此,运动矢量的准确性则直接决定了预测视频帧的质量,若运动矢量计算误差较大,则输出的预测帧会产生伪影、畸变等问题,从而影响了用户的体验。
技术实现要素:
3.提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
4.本公开提供一种视频帧预测方法、装置、电子设备和存储介质。
5.本公开采用以下的技术方案。
6.在一些实施例中,本公开提供一种视频帧预测方法,应用于扩展现实设备,包括:
7.在当前视频帧中确定匹配块的各个相邻块的运动矢量方向;
8.根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块;
9.根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量;
10.根据所述匹配块的运动矢量,预测下一视频帧。
11.在一些实施例中,本公开提供一种视频帧预测装置,包括:
12.第一处理模块,用于在当前视频帧中确定匹配块的各个相邻块的运动矢量方向;
13.第二处理模块,用于根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块;
14.第三处理模块,用于根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量;
15.第四处理模块,用于根据所述匹配块的运动矢量,预测下一视频帧。
16.在一些实施例中,本公开提供一种电子设备,包括:至少一个存储器和至少一个处理器;
17.其中,存储器用于存储程序代码,处理器用于调用所述存储器所存储的程序代码执行上述的方法。
18.在一些实施例中,本公开提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码在被处理器运行时,促使所述处理器执行上述方法。
19.本公开实施例提供的视频帧预测方法通过在当前视频帧中确定匹配块的各个相
邻块的运动矢量方向;然后根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块;进而根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量;最后根据所述匹配块的运动矢量,预测下一视频帧。由此可见,本公开在进行运动矢量计算时,不仅仅匹配与匹配块相似的目标块,还考虑了相邻块的运动矢量方向,使得可以通过相邻块的运动矢量方向来优化图像块匹配算法,从而减小运动矢量的计算误差,提高预测视频帧的质量。
附图说明
20.结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,元件和元素不一定按照比例绘制。
21.图1是本公开实施例的视频帧预测方法的流程图。
22.图2是本公开实施例的运动矢量方向的示意图。
23.图3是本公开实施例的搜索目标匹配块的示意图之一。
24.图4是本公开实施例的搜索目标匹配块的示意图之二。
25.图5是本公开实施例的搜索目标匹配块的示意图之三。
26.图6是本公开实施例的搜索目标匹配块的示意图之四。
27.图7是本公开实施例的搜索目标匹配块的示意图之五。
28.图8是本公开实施例的搜索目标匹配块的示意图之六。
29.图9是本公开实施例的电子设备的结构示意图。
具体实施方式
30.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
31.应当理解,本公开的方法实施方式中记载的各个步骤可以按和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
32.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。术语“响应于”以及有关的术语是指一个信号或事件被另一个信号或事件影响到某个程度,但不一定是完全地或直接地受到影响。如果事件x“响应于”事件y而发生,则x可以直接或间接地响应于y。例如,y的出现最终可能导致x的出现,但可能存在其它中间事件和/或条件。在其它情形中,y可能不一定导致x的出现,并且即使y尚未发生,x也可能发生。此外,术语“响应于”还可以意味着“至少部分地响应于”。
33.术语“确定”广泛涵盖各种各样的动作,可包括获取、演算、计算、处理、推导、调研、查找(例如,在表、数据库或其他数据结构中查找)、探明、和类似动作,还可包括接收(例如,
接收信息)、访问(例如,访问存储器中的数据)和类似动作,以及解析、选择、选取、建立和类似动作等等。其他术语的相关定义将在下文描述中给出。其他术语的相关定义将在下文描述中给出。
34.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
35.需要注意,本公开中提及的“一个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
36.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
37.以下将结合附图,对本公开实施例提供的方案进行详细描述。
38.如图1所示,图1是本公开实施例的视频帧预测方法的流程图,包括如下步骤。
39.步骤s01:在当前视频帧中确定匹配块的各个相邻块的运动矢量方向;
40.在一些实施例中,运动矢量是表示物体平移的方向和大小的向量,被广泛应用于视频帧编解码以及扩展现实显示技术中。其中扩展现实显示的异步空间扭曲asw(asynchronous spacewarp)技术会基于前两帧生成的运动矢量来推测下一帧,因此,运动矢量的准确性则直接决定了预测帧的质量,若运动矢量计算误差较大,则预测帧就可能会产生伪影、畸变等问题。相关技术计算运动矢量的算法主要应用于视频编解码,算法的主要原理为:将一帧画面划分为n个图像块(block),将上一帧中的某个block作为源block,假设源block在上一帧中的坐标为(x1,y1),则在当前帧中相同位置(x1,y1)的周围的一定范围内,寻找与源block画面相似度最高的block作为目标block,假设目标block在当前帧中的位置为(x2,y2),则当前block的运动矢量为(x2-x1,y2-y1)。然而,由于视频编解码使用运动矢量是用来还原原来的画面,并不用来预测视频帧,所以视频编解码中的某些误差并不会影响最终效果或对最终效果影响不大,例如当某个场景下的某个block的运动矢量计算为(0.01,0.0)和(-0.01,0.0)时,尽管两个运动矢量的方向不同,但两个运动矢量用来还原帧的效果是相同的。但是,asw技术对运动矢量的准确性要求较为严格,使用两个运动矢量方向不同的运动矢量进行视频帧预测,得到的下一帧画面效果截然不同。
41.在一些实施例中,为解决上述问题,本公开提供了一种视频帧预测方法,首先在当前视频帧中确定匹配块的各个相邻块的运动矢量方向。具体的,统计当前视频帧中匹配块的各个已经计算出运动矢量的相邻块的运动矢量方向。如图2所示,运动矢量方向分为上、下、左、右、右上、右下、左上、左下、中9个方向。
42.步骤s02:根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块;
43.在一些实施例中,以匹配块位置为中心点,建立预设搜索范围的窗口,然后根据第一运动矢量方向、第二运动矢量方向和各个相邻块与匹配块的图像块匹配误差,在窗口中搜索与匹配块的图像块匹配误差最小的点,并将图像块匹配误差最小的点作为目标匹配块。
44.步骤s03:根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量;
45.在一些实施例中,根据目标匹配块的坐标位置和匹配块的坐标位置,确定匹配块的运动矢量。
46.步骤s04:根据所述匹配块的运动矢量,预测下一视频帧。
47.在一些实施例中,通过asw技术,根据计算得到的匹配块的运动矢量,生成预测视频帧。
48.本公开实施例提供的视频帧预测方法通过在当前视频帧中确定匹配块的各个相邻块的运动矢量方向;然后根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块;进而根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量;最后根据所述匹配块的运动矢量,预测下一视频帧。由此可见,本公开在进行运动矢量计算时,不仅仅匹配与匹配块相似的目标块,还考虑了相邻块的运动矢量方向,使得可以通过相邻块的运动矢量方向来优化图像块匹配算法,从而减小运动矢量的计算误差,提高预测视频帧的质量。
49.在一些实施例中,所述根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块,包括:
50.根据所述各个相邻块的运动矢量方向,确定第一运动矢量方向和第二运动矢量方向;
51.根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块。
52.在一些实施例中,在统计与匹配块相邻的已经计算出运动矢量的块的运动矢量的方向后,统计两个运动矢量的方向,分别记为d1和d2。然而在图像块匹配算法计算中引入d1和d2,例如通过d1和d2纠正图像块匹配算法,从而输出更加准确的匹配块的运动矢量。
53.在一些实施例中,所述运动矢量方向包括中、上、下、左、右、右上、右下、左上和左下中的一种或多种。
54.在一些实施例中,如图2所示,方向“中”表示运动矢量为(0,0)。运动矢量所代表的位置的点距离某条方向线的垂直距离如果最近,那这条线代表的方向就是这个运动矢量的方向。在本实施例中,将运动矢量分为了9个方向,分别为中、上、下、左、右、右上、右下、左上和左下。
55.在一些实施例中,所述根据所述各个相邻块的运动矢量方向,确定第一运动矢量方向和第二运动矢量方向,包括:
56.当某一方向的运动矢量个数最多时,确定所述第一运动矢量方向为该方向,所述第二运动矢量方向为空;
57.当未确定所述各个相邻块的运动矢量方向时,或是所述各个相邻块的运动矢量方向均不同且已确定运动矢量方向的所述相邻块的个数大于第一预设数值时,确定所述第一运动矢量方向和所述第二运动矢量方向为空;
58.当所述各个相邻块的运动矢量方向均不同且已确定运动矢量方向的所述相邻块的个数等于所述第一预设数值时,或是已确定运动矢量方向的所述相邻块的个数大于第二预设数值,以及有两个运动矢量方向个数最多且相同时,确定其中一个运动矢量方向为所述第一运动矢量方向,另一个运动矢量方向为所述第二运动矢量方向。
59.在一些实施例中,如果相邻的块中有一个或多个块已经计算了运动矢量,则统计这些块的运动矢量的方向,如果某一方向的运动矢量个数最多,则记录个数最多的运动矢量的方向为d1,d2记为null。
60.在一些实施例中,如果相邻的块中没有已经计算的运动矢量的块,或者各个块的运动矢量的方向都不相同且可统计的运动矢量的个数大于2,则记录d1和d2为null。
61.在一些实施例中,如果各个相邻的块的运动矢量方向都不相同且可统计的运动矢量的个数等于2,或者可统计的运动矢量的个数大于4且有两个方向的运动矢量个数最多且相等,则分别记录这两个运动矢量的方向为d1和d2。
62.在一些实施例中,还包括:
63.通过图像块匹配算法计算所述各个相邻块与所述匹配块的图像块匹配误差。
64.在一些实施例中,图像块匹配算法包括但不限于三步法、新三步法、四步法和钻石法,本公开实施例以新三步法为例进行说明。
65.在一些实施例中,所述根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块,包括:
66.以所述匹配块位置为中心点,建立预设搜索范围的窗口;
67.根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,在所述窗口中搜索与所述匹配块的图像块匹配误差最小的点,并将图像块匹配误差最小的点作为所述目标匹配块。
68.在一些实施例中,所述根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,在所述窗口中搜索与所述匹配块的图像块匹配误差最小的点,并将图像块匹配误差最小的点作为所述目标匹配块,包括:
69.在所述第一运动矢量方向和所述第二运动矢量方向上确定与所述匹配块的图像块匹配误差最小的点,并将图像块匹配误差最小的点作为所述目标匹配块。
70.在一些实施例中,如图3所示,建立一个以起始点(匹配块)为中心,包括最大搜索范围的窗口,计算图中8个步长等于或略大于最大搜索半径一半的点,以及8个相邻点和起始点的匹配误差。
71.在一些实施例中,本公开是对相关技术的生成运动矢量的算法进行优化,不仅仅匹配与当前源block相似的块,同时考虑block与block之间的联系,因为相邻的block属于同一个物体的概率比较大,所以计算的运动矢量方向相同的概率也会比较高;因此本公开通过周围block的运动矢量的方向来纠正当前block可能的匹配错误,这样可以有效提高运动矢量的准确率。具体块匹配算法如下步骤所示(以三步法为例)。
72.步骤a:如果匹配误差最小的点是起始点,且d1或者d2的方向为“中”、或者两者都为null,则以起始点作为搜索结果,即目标匹配块,搜索结束。如果匹配误差最小的点是起始点(记为p0),且d1和d2的方向不为“中”、d1、d2不全为null,则计算不为null的d1和d2方向上各候选点的运动矢量与起始点运动矢量的差,如果某点(记为p1)与起始点运动矢量的差值在一定范围(记为δ)之内,即mv(p0)
–
mv(p1)《=δ,则将p1点作为匹配误差最小的点,并跳到步骤b。
73.步骤b:如果匹配误差最小的点是起始点周围的临近点,且d1或者d2的方向为起始点到该临近点的方向、或者两者都为null,则执行步骤a)、b);如果匹配误差最小的点是起始点周围的临近点,且d1和d2的方向与起始点到该临近点的方向不同且d1、d2不全为null,则计算不为null的d1和d2方向各候选点的运动矢量与起始点运动矢量的差,如果某点(记
为p1)与起始点运动矢量的差值在一定范围(记为δ)之内,即mv(p0)
–
74.mv(p1)《=δ,则将p1点作为匹配误差最小的点,并执行步骤a)、b)。
75.步骤a):如果匹配误差最小的点为边缘点,则以该点为中心,计算如图4所示的最右侧列三个点(颜色最深的三个点)的匹配误差。
76.步骤b)如果匹配误差最小的点为角点,则以该点为中心,计算如图5所示的颜色最深的五个点的匹配误差。此时匹配误差最小的点如果不为图中的中心点,则该点即为最终搜索结果;否则跳到步骤c。
77.步骤c:以步骤b中搜索到的匹配误差最小的点为中心,步长为原来的一半,以及根据步骤b计算的d1和d2来选择方向,并计算该方向上的点的匹配误差。如果d1和d2都为null,则计算如图5所示九个点的匹配误差。如果d1和d2中有一个不为null,则记为d,并选择以d为轴,以步骤b中匹配误差最小的点为中心,左右各旋转90度的范围内的点作为优先选择点,计算这些点的匹配误差。假如d为右上方向,则优先选择点的选择范围如图6所示。如图7所示,图中颜色最深的五个点为优先选择点。
78.如图8所示,进一步的,计算图中的优先选择点的匹配误差并统计出最小值m1(假如对应的点为p1),再计算另外的三个点的匹配误差,并统计出其中的最小值m2(假如对应的点为p2),假如中心红色点的匹配误差为m0(假如红色点为p0),如果m1《m2且m1《m0,则以p1为最小匹配误差点;如果m1》m2且m1《m0,且(m1
–
m2)《=δ,则也以p1为最小匹配误差点;如果m1》m2且m2《m0,且(m2
–
m1)》δ,则以p2为最小匹配误差点。
79.步骤d:重复上述步骤a至c直到步长为1,从所匹配的点中找出最小匹配误差点,即为最终搜索结果。
80.在一些实施例中,本公开在新三步法的基础上考虑了块与块之间的联系,即利用块的运动矢量方向这一因素作为块与块之间的联系,弥补了算法在计算运动矢量时仅考虑最小匹配误差的缺陷,提高了算法计算运动矢量的准确率。
81.在一些实施例中,所述根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量,包括:
82.根据所述目标匹配块的坐标位置和所述匹配块的坐标位置,确定所述匹配块的运动矢量。
83.本公开实施例还提供一种视频帧预测装置,包括:
84.第一处理模块,用于在当前视频帧中确定匹配块的各个相邻块的运动矢量方向;
85.第二处理模块,用于根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块;
86.第三处理模块,用于根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量;
87.第四处理模块,用于根据所述匹配块的运动矢量,预测下一视频帧。
88.在一些实施例中,所述第二处理模块,具体用于:
89.根据所述各个相邻块的运动矢量方向,确定第一运动矢量方向和第二运动矢量方向;
90.根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块。
91.在一些实施例中,所述运动矢量方向包括中、上、下、左、右、右上、右下、左上和左下中的一种或多种。
92.在一些实施例中,所述第二处理模块,还具体用于:
93.当某一方向的运动矢量个数最多时,确定所述第一运动矢量方向为该方向,所述第二运动矢量方向为空;
94.当未确定所述各个相邻块的运动矢量方向时,或是所述各个相邻块的运动矢量方向均不同且已确定运动矢量方向的所述相邻块的个数大于第一预设数值时,确定所述第一运动矢量方向和所述第二运动矢量方向为空;
95.当所述各个相邻块的运动矢量方向均不同且已确定运动矢量方向的所述相邻块的个数等于所述第一预设数值时,或是已确定运动矢量方向的所述相邻块的个数大于第二预设数值,以及有两个运动矢量方向个数最多且相同时,确定其中一个运动矢量方向为所述第一运动矢量方向,另一个运动矢量方向为所述第二运动矢量方向。
96.在一些实施例中,所述第二处理模块,还具体用于:
97.通过图像块匹配算法计算所述各个相邻块与所述匹配块的图像块匹配误差。
98.在一些实施例中,所述第二处理模块,还具体用于:
99.以所述匹配块位置为中心点,建立预设搜索范围的窗口;
100.根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,在所述窗口中搜索与所述匹配块的图像块匹配误差最小的点,并将图像块匹配误差最小的点作为所述目标匹配块。
101.在一些实施例中,所述第二处理模块,还具体用于:
102.在所述第一运动矢量方向和所述第二运动矢量方向上确定与所述匹配块的图像块匹配误差最小的点,并将图像块匹配误差最小的点作为所述目标匹配块。
103.在一些实施例中,所述第三处理模块,具体用于:
104.根据所述目标匹配块的坐标位置和所述匹配块的坐标位置,确定所述匹配块的运动矢量。
105.对于装置的实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离模块说明的模块可以是或者也可以不是分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
106.以上,基于实施例和应用例说明了本公开的方法及装置。此外,本公开还提供一种电子设备及计算机可读存储介质,以下说明这些电子设备和计算机可读存储介质。
107.下面参考图9,其示出了适于用来实现本公开实施例的电子设备(例如终端设备或服务器)800的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图中示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
108.电子设备800可以包括处理装置(例如中央处理器、图形处理器等)801,其可以根
据存储在只读存储器(rom)802中的程序或者从存储装置808加载到随机访问存储器(ram)803中的程序而执行各种适当的动作和处理。在ram803中,还存储有电子设备800操作所需的各种程序和数据。处理装置801、rom 802以及ram 803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。
109.通常,以下装置可以连接至i/o接口805:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置806;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置807;包括例如磁带、硬盘等的存储装置808;以及通信装置809。通信装置809可以允许电子设备800与其他设备进行无线或有线通信以交换数据。虽然图中示出了具有各种装置的电子设备800,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
110.特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置809从网络上被下载和安装,或者从存储装置808被安装,或者从rom 802被安装。在该计算机程序被处理装置801执行时,执行本公开实施例的方法中限定的上述功能。
111.需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
112.在一些实施方式中,客户端、服务器可以利用诸如http(hypertext transfer protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
113.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
114.上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电
子设备执行时,使得该电子设备执行上述的本公开的方法。
115.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
116.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
117.描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
118.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
119.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
120.根据本公开的一个或多个实施例,提供了一种视频帧预测方法,应用于扩展现实设备,包括:
121.在当前视频帧中确定匹配块的各个相邻块的运动矢量方向;
122.根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块;
123.根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量;
124.根据所述匹配块的运动矢量,预测下一视频帧。
125.根据本公开的一个或多个实施例,提供了一种方法,所述根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块,包括:
126.根据所述各个相邻块的运动矢量方向,确定第一运动矢量方向和第二运动矢量方向;
127.根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块。
128.根据本公开的一个或多个实施例,提供了一种方法,所述运动矢量方向包括中、上、下、左、右、右上、右下、左上和左下中的一种或多种。
129.根据本公开的一个或多个实施例,提供了一种方法,所述根据所述各个相邻块的运动矢量方向,确定第一运动矢量方向和第二运动矢量方向,包括:
130.当某一方向的运动矢量个数最多时,确定所述第一运动矢量方向为该方向,所述第二运动矢量方向为空;
131.当未确定所述各个相邻块的运动矢量方向时,或是所述各个相邻块的运动矢量方向均不同且已确定运动矢量方向的所述相邻块的个数大于第一预设数值时,确定所述第一运动矢量方向和所述第二运动矢量方向为空;
132.当所述各个相邻块的运动矢量方向均不同且已确定运动矢量方向的所述相邻块的个数等于所述第一预设数值时,或是已确定运动矢量方向的所述相邻块的个数大于第二预设数值,以及有两个运动矢量方向个数最多且相同时,确定其中一个运动矢量方向为所述第一运动矢量方向,另一个运动矢量方向为所述第二运动矢量方向。
133.根据本公开的一个或多个实施例,提供了一种方法,还包括:
134.通过图像块匹配算法计算所述各个相邻块与所述匹配块的图像块匹配误差。
135.根据本公开的一个或多个实施例,提供了一种方法,所述根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块,包括:
136.以所述匹配块位置为中心点,建立预设搜索范围的窗口;
137.根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,在所述窗口中搜索与所述匹配块的图像块匹配误差最小的点,并将图像块匹配误差最小的点作为所述目标匹配块。
138.根据本公开的一个或多个实施例,提供了一种方法,所述根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,在所述窗口中搜索与所述匹配块的图像块匹配误差最小的点,并将图像块匹配误差最小的点作为所述目标匹配块,包括:
139.在所述第一运动矢量方向和所述第二运动矢量方向上确定与所述匹配块的图像块匹配误差最小的点,并将图像块匹配误差最小的点作为所述目标匹配块。
140.根据本公开的一个或多个实施例,提供了一种方法,所述根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量,包括:
141.根据所述目标匹配块的坐标位置和所述匹配块的坐标位置,确定所述匹配块的运动矢量。
142.根据本公开的一个或多个实施例,提供了一种视频帧预测装置,包括:
143.第一处理模块,用于在当前视频帧中确定匹配块的各个相邻块的运动矢量方向;
144.第二处理模块,用于根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块;
145.第三处理模块,用于根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量;
146.第四处理模块,用于根据所述匹配块的运动矢量,预测下一视频帧。
147.根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个存储器和至少一个处理器;
148.其中,所述至少一个存储器用于存储程序代码,所述至少一个处理器用于调用所述至少一个存储器所存储的程序代码执行上述中任一项所述的方法。
149.根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码在被处理器运行时,促使所述处理器执行上述方法。
150.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
151.此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
152.尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
技术特征:
1.一种视频帧预测方法,应用于扩展现实设备,其特征在于,包括:在当前视频帧中确定匹配块的各个相邻块的运动矢量方向;根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块;根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量;根据所述匹配块的运动矢量,预测下一视频帧。2.根据权利要求1所述的方法,其特征在于,所述根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块,包括:根据所述各个相邻块的运动矢量方向,确定第一运动矢量方向和第二运动矢量方向;根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块。3.根据权利要求2所述的方法,其特征在于,所述运动矢量方向包括中、上、下、左、右、右上、右下、左上和左下中的一种或多种。4.根据权利要求2所述的方法,其特征在于,所述根据所述各个相邻块的运动矢量方向,确定第一运动矢量方向和第二运动矢量方向,包括:当某一方向的运动矢量个数最多时,确定所述第一运动矢量方向为该方向,所述第二运动矢量方向为空;当未确定所述各个相邻块的运动矢量方向时,或是所述各个相邻块的运动矢量方向均不同且已确定运动矢量方向的所述相邻块的个数大于第一预设数值时,确定所述第一运动矢量方向和所述第二运动矢量方向为空;当所述各个相邻块的运动矢量方向均不同且已确定运动矢量方向的所述相邻块的个数等于所述第一预设数值时,或是已确定运动矢量方向的所述相邻块的个数大于第二预设数值,以及有两个运动矢量方向个数最多且相同时,确定其中一个运动矢量方向为所述第一运动矢量方向,另一个运动矢量方向为所述第二运动矢量方向。5.根据权利要求1所述的方法,其特征在于,还包括:通过图像块匹配算法计算所述各个相邻块与所述匹配块的图像块匹配误差。6.根据权利要求4所述的方法,其特征在于,所述根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块,包括:以所述匹配块位置为中心点,建立预设搜索范围的窗口;根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,在所述窗口中搜索与所述匹配块的图像块匹配误差最小的点,并将图像块匹配误差最小的点作为所述目标匹配块。7.根据权利要求6所述的方法,其特征在于,所述根据所述第一运动矢量方向、所述第二运动矢量方向和所述各个相邻块与所述匹配块的图像块匹配误差,在所述窗口中搜索与所述匹配块的图像块匹配误差最小的点,并将图像块匹配误差最小的点作为所述目标匹配块,包括:在所述第一运动矢量方向和所述第二运动矢量方向上确定与所述匹配块的图像块匹
配误差最小的点,并将图像块匹配误差最小的点作为所述目标匹配块。8.根据权利要求1所述的方法,其特征在于,所述根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量,包括:根据所述目标匹配块的坐标位置和所述匹配块的坐标位置,确定所述匹配块的运动矢量。9.一种视频帧预测装置,其特征在于,包括:第一处理模块,用于在当前视频帧中确定匹配块的各个相邻块的运动矢量方向;第二处理模块,用于根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块;第三处理模块,用于根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量;第四处理模块,用于根据所述匹配块的运动矢量,预测下一视频帧。10.一种电子设备,包括:至少一个存储器和至少一个处理器;其中,所述至少一个存储器用于存储程序代码,所述至少一个处理器用于调用所述至少一个存储器所存储的程序代码执行权利要求1至8中任一项所述的方法。11.一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码在被计算机设备运行时,促使所述计算机设备执行权利要求1至8中任一项所述的方法。
技术总结
本公开提供视频帧预测方法、装置、电子设备和存储介质。所述视频帧预测方法包括:在当前视频帧中确定匹配块的各个相邻块的运动矢量方向;根据所述各个相邻块的运动矢量方向,以及所述各个相邻块与所述匹配块的图像块匹配误差,确定所述当前视频帧中的目标匹配块;根据所述目标匹配块和所述匹配块,确定所述匹配块的运动矢量;根据所述匹配块的运动矢量,预测下一视频帧。本公开的方法可以减小运动矢量的计算误差,提高预测视频帧的质量。提高预测视频帧的质量。提高预测视频帧的质量。
技术研发人员:王晓松
受保护的技术使用者:北京字跳网络技术有限公司
技术研发日:2023.07.24
技术公布日:2023/10/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种液体盒中袋产品输送装置的制作方法 下一篇:一种便于排气的酵素罐的制作方法