一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

帧内帧间联合预测方法、编解码方法及相关设备与流程

2021-11-24 23:41:00 来源:中国专利 TAG:


1.本技术涉及视频压缩编码技术领域,特别是涉及一种帧内帧间联合预测方法、编解码方法及相关设备。


背景技术:

2.视频是连续的图像序列,由连续的视频帧构成。由于连续的视频帧之间相似性极高,为便于储存传输,需要对原始的视频进行编码压缩,以去除空间、时间维度的冗余,以降低视频传输过程中的网络带宽和减少存储空间的占用。
3.当前,视频压缩编码技术中的帧内帧间联合预测技术,通过利用普通的帧内预测值和帧间预测值来进行联合预测,最终得到帧内帧间联合预测值。
4.然而,现有的通过帧内帧间联合预测技术得到的联合预测值,准确度不高,这也限制了视频帧的压缩率进一步提高。因此,如何提高帧内帧间联合预测方法得到的联合预测值的准确度,具有非常重要的意义。


技术实现要素:

5.本技术提供一种帧内帧间联合预测方法、编解码方法及相关设备。
6.本技术第一方面提供了一种帧内帧间联合视频帧的预测方法,方法包括:获取利用参考像素点对当前编码单元的初始帧内预测值修正后的最终帧内预测值;和/或,获取利用若干修正运动偏移量对当前编码单元的当前运动矢量进行修正后得到的最终运动矢量,并利用最终运动矢量得到最终帧间预测值;至少利用最终帧内预测值和最终帧间预测值运动矢量的其中一者,进行帧内帧间联合预测,以得到最终联合预测值。
7.因此,通过至少利用最终帧内预测值和最终帧间预测值的其中一者来进行帧内帧间联合预测,使得最终联合预测值是利用至少一个修正值修正后得到的,实现了对帧内帧间联合预测的预测值修正,有助于进一步提高视频帧的压缩率。
8.本技术第二方面提供了一种编解码方法,编解码方法包括:获取当前编码单元的最终联合预测值,其中,最终联合预测值是利用上述第一方面描述的帧内帧间联合预测方法得到的;基于最终联合预测值对当前编码单元进行编解码。
9.本技术第三方面提供了一种编解码设备,包括相互耦接的存储器和处理器,处理器用于执行存储器中存储的程序指令,以实现上述第二方面描述的编解码方法。
10.本技术第四方面提供了一种计算机可读存储介质,其上存储有程序指令,程序指令被处理器执行时实现上述第一方面描述的帧内帧间联合预测方法。
11.上述方案,通过至少利用最终帧内预测值和最终帧间预测值的其中一者来进行帧内帧间联合预测,使得最终联合预测值是利用至少一个修正值修正后得到的,实现了对帧内帧间联合预测的预测值修正,有助于进一步提高视频帧的压缩率。
附图说明
12.图1是本技术视频帧的预测方法第一实施例的第一流程示意图;
13.图2是本技术视频帧的预测方法第二实施例的第一流程示意图;
14.图3是本技术视频帧的预测方法中当前编码单元的结构示意图;
15.图4是本技术视频帧的预测方法第二实施例的第二流程示意图;
16.图5是本技术视频帧的预测方法第三实施例的第一流程示意图;
17.图6是本技术视频帧的预测方法第三实施例的第二流程示意图;
18.图7是本技术编解码方法实施例的流程示意图;
19.图8是本技术帧内帧间联合预测装置实施例的框架示意图;
20.图9是本技术编解码设备电子设备一实施例的框架示意图;
21.图10是本技术计算机可读存储介质一实施例的框架示意图。
具体实施方式
22.下面结合说明书附图,对本技术实施例的方案进行详细说明。
23.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本技术。
24.本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。
25.请参阅图1,图1是本技术视频帧的预测方法第一实施例的流程示意图。具体而言,可以包括如下步骤:
26.步骤s11:获取利用参考像素点对当前编码单元的初始帧内预测值修正后的最终帧内预测值。
27.初始帧内预测值可以是基于当前编码单元(codingunit,cu),利用通用的帧内预测方法得到的预测值,例如可以通过planar帧内预测模式得到初始帧内预测值。在本实施例中,可以先行获取当前编码单元的像素点的初始帧内预测值。
28.对于当前编码单元而言,可以再次利用当前编码单元的参考像素点对得到的初始帧内预测值进行修正,以此得到修正后的最终帧内预测值。在一个实施方式中,可以是利用参考像素点对当前编码单元的部分像素点的初始帧内预测值进行修正。例如,可以利用当前编码单元中某一像素点的左边的参考像素点的像素值和上边的参考像素点的像素值来对该像素点的初始帧内预测值进行修正,也可以是仅利用左边的参考像素点的像素值或者是仅利用上边的参考像素点的像素值进行修正。在另一个实施方式中,在利用左边或上边的参考像素点的像素值进行修正时,可以利用将全部的左边或上边的参考像素点的像素值进行滤波后得到的值来进行修正。
29.步骤s12:获取利用若干修正运动偏移量对当前编码单元的当前运动矢量进行修正后得到的最终运动矢量,并利用最终运动矢量得到最终帧间预测值。
30.在一个实施方式中,当前运动矢量可以为当前编码单元在帧间预测中的候选运动矢量。例如,当前运动矢量可以是在合并(merge)模式帧间预测中构建得到的候选列表中的
任一候选运动矢量。在另一个实施方式中,当前运动矢量可以为帧内帧间联合预测后得到的运动矢量。具体的,当前运动矢量可以是利用通用的帧内帧间联合预测方法预测后,确定的对应的运动矢量。因此,通过确定当前运动矢量为帧间预测中的候选运动矢量或者是帧内帧间联合预测后确定的运动矢量,可以对候选运动矢量或者是帧内帧间联合预测后确定的运动矢量进行进一步的修正。
31.修正运动偏移量是矢量,且修正运动偏移量是预先确定的,用于对当前运动矢量进行修正的偏移量。修正运动偏移量可以是在预测前就已确定的偏移量,也可以是在预测的过程中,根据需要进行设置的。
32.在一个实施方式中,可以在当前运动矢量的基础上,加上修正运动偏移量,例如是通过矢量运算的方法,以得到新的运动矢量。在得到新的运动矢量以后,就可以从中选择出最优(预测代价值最小)的运动矢量作为最终运动矢量。后续便可以利用得到的最终运动矢量进行帧间预测,以此得到最终帧间预测值。
33.在一个实施方式中,获取利用若干修正运动偏移量对当前编码单元的当前运动矢量进行修正后得到的最终运动矢量的步骤,具体可以包括步骤s121和步骤s122。
34.步骤s121:利用若干修正运动偏移量和当前运动矢量得到若干候选最终运动矢量。
35.在当前运动矢量为帧间预测中的候选运动矢量的情况下,可以是利用若干修正运动偏移量和每一个候选运动矢量进行组合,得到若干候选最终运动矢量。
36.在当前运动矢量为帧内帧间联合预测后得到的运动矢量的情况下,可以是利用若干修正运动偏移量和帧内帧间联合预测后得到的运动矢量进行组合,得到若干候选最终运动矢量。
37.步骤s122:从若干候选最终运动矢量中选择对应的预测代价值最小的候选最终运动矢量为最终运动矢量。
38.在得到若干候选最终运动矢量后,可以利用这些候选最终运动矢量进行帧间预测,以此得到与每一个候选最终运动矢量对应的预测代价值。帧间预测的方法可以是本领域的通用方法,此处不再赘述。以此,便可在每一个候选最终运动矢量对应的预测代价值中,选择预测代价值最小的候选最终运动矢量为最终运动矢量。
39.因此,通过利用修正运动偏移量对当前运动矢量进一步修正而得到若干最终候选运动矢量,并最终从若干最终候选运动矢量中选择预测代价值最小的最终候选运动矢量确定为最终运动矢量,实现了对当前运动矢量的进一步修正,从而可以得到更为准确的运动矢量,以此提高了运动矢量的准确度,有助于进一步提高视频帧的压缩率。
40.步骤s13:至少利用最终帧内预测值和最终帧间预测值的其中一者,进行帧内帧间联合预测,以得到最终联合预测值。
41.在得到修正后的最终帧内预测值和最终帧内预测值后,可以利用二者中的至少一者,进行帧内帧间联合预测,以此得到利用修正值(最终帧内预测值、最终帧内预测值)得到的最终联合预测值。在一个实施方式中,可以利用最终帧内预测值和最终帧间预测值进行帧内帧间联合预测,以此得到利用两个修正值得到的最终联合预测值。在一个实施方式中,可以利用最终帧内预测值和未利用修正运动偏移量修正的帧间预测值来得到的最终联合预测值。在另一个实施方式中,可以利用初始帧内预测值和最终帧间预测值来得到的最终
联合预测值。
42.因此,通过至少利用最终帧内预测值和最终帧间预测值的其中一者来进行帧内帧间联合预测,使得最终联合预测值是利用至少一个修正值修正后得到的,实现了对帧内帧间联合预测的预测值修正,有助于进一步提高视频帧的压缩率。
43.请参阅图2,图2是本技术视频帧的预测方法第二实施例的第一流程示意图。在本实施例中,上述步骤提及的“获取利用参考像素点对当前编码单元的初始帧内预测值修正后的最终帧内预测值”具体可以包括以下步骤s21和步骤s22。在本实施例中,可以将当前编码单元分为两个区域,两个区域分别为目标区域和非目标区域。具体的,距离当前编码单元的参考像素点预设距离的区域定义为目标区域,剩余区域则定义为非目标区域,目标区域的像素点为第一像素点,非目标区域的像素点为第二像素点。预设距离可以根据需要进行设定。
44.在一个实施方式中,可以根据当前编码单元的大小来设定预设距离。通过根据当前编码单元的大小来设定预设距离,可以确定使得预设距离的大小能够与当前编码单元的大小相适应,使得预设距离的设置更加合理。在一个具体实施方式中,可以通过以下公式(1)来确定预设距离。
45.scale=((log2[width]

2 log2[height]

2 2)>>2)
ꢀꢀ
(1)
[0046]
x_max=(6<<scale)>>1
ꢀꢀ
(1)
[0047]
y_max=(6<<scale)>>1
ꢀꢀ
(1)
[0048]
其中,在公式(1)中,涉及的运算关系均为c语言中的运算关系,width表示当前编码单元的宽,height表示当前单元的高,scale为中间值,x_max和y_max则为确定的预设距离,其中,x_max为距离左边参考像素点的距离,y_max为距离右边参考像素点的距离。
[0049]
请参阅图3,图3是本技术视频帧的预测方法中当前编码单元的结构示意图。在图3中,当前编码单元30包括目标区域301和非目标区域302,参考像素点31包括左边参考像素点311和上边参考像素点312。
[0050]
步骤s21:获取当前编码单元的像素点的初始帧内预测值。
[0051]
初始帧内预测值可以是利用通用的帧内预测方法得到值,例如可以通过planar帧内预测模式得到初始帧内预测值。在本实施例中,可以先行获取当前编码单元的像素点的初始帧内预测值,后续再对初始帧内预测值进行修正。
[0052]
步骤s22:基于参考像素点的像素值和第一像素点的初始帧内预测值,确定第一像素点的最终帧内预测值,将第二像素点的初始帧内预测值作为最终帧内预测值。
[0053]
在本实施例中,目标区域的第一像素点都可以认为是距离参考像素点较近的像素点,因此可以进一步利用参考像素点的像素值来对第一像素点的初始帧内预测值进行修正,以此得到更加准确的最终帧内预测值。非目标区域第二像素点可以距离参考像素点较远,其与参考像素点的关联程度较低,因此可以直接将第二像素点的初始帧内预测值作为最终帧内预测值。
[0054]
请参阅图4,图4是本技术视频帧的预测方法第二实施例的第二流程示意图。在本实施例中,上述步骤提及的“基于参考像素点的像素值和第一像素点的初始帧内预测值,确定第一像素点的最终帧内预测值”具体可以包括步骤s221至步骤s223。
[0055]
步骤s221:在参考像素点中确定与第一像素点对应的对应参考像素点。
[0056]
在一个实施方式中,与第一像素点对应的对应参考像素点可以是距离第一像素点最近的左边参考像素点和上边参考像素点,即正左参考像素点和正上参考像素点。
[0057]
在一个实施方式中,与第一像素点对应的对应参考像素点可以是以正左参考像素点或正上参考像素点为中点,一定范围内的参考像素点。例如,在正左参考像素点3个像素点的范围内,均可以认为是对应参考像素点。
[0058]
在一个实施方式中,可以将全部的左边参考像素点和上边参考像素点确定对应参考像素点。
[0059]
步骤s222:根据第一像素点与对应参考像素点的距离,确定对应参考像素点的权重。
[0060]
在一个实施方式中,可以确定对应参考像素点与第一像素点的距离较近的对应参考像素点的权重大于对应参考像素点与第一像素点的距离较远的对应参考像素点的权重。例如,第一像素点a距离正左参考像素点的距离为1个像素点,第一像素点b距离正左参考像素点的距离为2个像素点,则第一像素点a对应的正左参考像素点的权重大于第一像素点b正左参考像素点的权重。因此,通过不同的权重反映不同对应参考像素点与第一像素点的关联程度。
[0061]
在一个具体实施方式中,可以分别为左边的对应参考像素点和上边的对应参考像素点分别设置对应的权重。
[0062]
在一个实施方式中,对应参考像素点为正左参考像素点和正上参考像素点。此时可以根据第一像素点与正上参考像素点的距离,确定正上参考像素点权重,根据第一像素点与正左参考像素点的距离,确定正左参考像素点权重。在一个具体实施方式中,可以通过以下公式(2)来设置对应参考像素点的权重。
[0063]
wt=32>>min(31,((y<<1)>>scale))
ꢀꢀ
(2)
[0064]
wl=32>>min(31,((y<<1)>>scale))
ꢀꢀ
(2)
[0065]
其中,在公式(2)中,涉及的运算关系均为c语言中的运算关系,scale为上述公式(1)得到的中间值,wt为正上参考像素点权重,wl为正左参考像素点权重,(x,y)表示像素点在当前编码单元内的坐标。在一个具体实施方式中,还可以对wt和wl进行归一化处理。
[0066]
步骤s223:基于对应参考像素点的像素值、对应参考像素点的权重和第一像素点的初始帧内预测值,确定第一像素点的最终帧内预测值。
[0067]
在对应参考像素点的权重以后,可以基于对应参考像素点的像素值,对应参考像素点的权重和第一像素点的初始帧内预测值进行运算,以此得到第一像素点的最终帧内预测值。计算的方法不受限制,可以根据需要进行设置。
[0068]
在一个实施方式中,在对应参考像素点为正上参考像素点和正左参考像素点的情况下,可以是基于正上参考像素点的像素值、正左参考像素点的像素值、正上参考像素点权重、正左参考像素点权重第一像素点的初始帧内预测值,确定第一像素点的最终帧内预测值。
[0069]
在一个具体实施方式中,可以通过以下公式(3)来确定第一像素点的最终帧内预测值。
[0070]
px,y=(wl*l0,y wt*tx,0 (64

wl

wt)*p’x,y 32)>>6
ꢀꢀ
(3)
[0071]
其中,在公式(3)中,涉及的运算关系均为c语言中的运算关系,x表示第一像素点
在当前编码单元内的横坐标,y表示第一像素点在当前编码单元内的纵坐标,l0,y为左边参考像素点的像素值,tx,0为上边参考像素点的像素值,wt为上边参考像素点权重,wl为左边参考像素点权重,p’x,y为初始帧内预测值,px,y则为计算后得到的最终帧内预测值。在一个例子中,左边参考像素点例如是正左参考像素点,上边参考像素点例如是正上参考像素点。
[0072]
因此,通过利用对应参考像素点的像素值、对应参考像素点权重和第一像素点的初始帧内预测值,可以进一步的对第一像素点的预测值进行修正,以此得到更加准确的最终帧内预测值,以此能够更好地去除视频帧的空间冗余,提升视频帧的压缩率。
[0073]
请参阅图5,图5是本技术视频帧的预测方法第三实施例的第一流程示意图。在本实施例中,上述的帧内帧间联合预测方法还可以包括步骤s31和步骤s32,以获得修正运动偏移量。
[0074]
步骤s31:获取若干修正偏移幅值和若干修正偏移方向。
[0075]
修正偏移幅值和修正偏移方向可以是预先确定的。修正偏移幅值可以对当前运动矢量的大小进行修正的值,修正偏移方向可以是对当前运动矢量的方向进行修正的方向。
[0076]
步骤s32:基于若干修正偏移幅值和若干修正偏移方向,得到若干修正运动偏移量。
[0077]
在得到修正偏移幅值和修正偏移方向以后,就可以将修正偏移幅值和修正偏移方向进行组合,进而得到若干个修正运动偏移量。例如,一共有4个修正偏移方向和8个修正偏移幅值,则一共可以组合得到32个修正运动偏移量。又如,修正偏移方向可以是上方,修正偏移幅值是1个像素,则可以确定修正运动偏移量为指向上方的,大小为一个像素的矢量。
[0078]
因此,通过利用修正偏移幅值和修正偏移方向来得到修正运动偏移量,后续可以利用修正运动偏移量来对当前运动矢量进行修正,以提高运动矢量的准确度。
[0079]
在一个实施例中,对于只有一个方向的参考帧的视频帧而言,利用修正运动偏移量得到的若干最终候选运动矢量即为当前编码单元相对于参考帧的最佳匹配单元之间的相对位移。修正运动偏移量即为当前编码单元相对于参考帧的最佳匹配单元运动矢量的修正运动偏移量。
[0080]
请参阅图6,图6是本技术视频帧的预测方法第三实施例的第二流程示意图。在本实施例中,当前编码单元所属的当前帧可以具有前向参考帧和后向参考帧,也即当前帧有两个方向的参考帧。在此情况下,上述步骤提及的“修正运动偏移量”可以包括“前向修正运动偏移量”和“后向修正运动偏移量”。上述步骤提及的“基于若干修正偏移幅值和若干修正偏移方向,得到若干修正运动偏移量”具体包括步骤s321和步骤s322。
[0081]
步骤s321:确定当前帧和前向参考帧的第一距离,以及当前帧和后向参考帧的第二距离。
[0082]
当前帧和参考帧的距离,可以是当前帧的播放序号和参考帧的播放序号之间的距离。例如,当前帧的播放序号为5,前向参考帧的播放序号为1,则当前帧和前向参考帧的第一距离为4,后向参考帧的播放序号为10,则当前帧和后向参考帧的第二距离为5。
[0083]
步骤s322:基于第一距离、第二距离、修正偏移幅值和修正偏移方向,确定前向修正运动偏移量和后向修正运动偏移量。
[0084]
在确定第一距离和第二距离以后,就可以根据第一距离和第二距离的大小,以及
修正偏移幅值和修正偏移方向,来具体确定前向修正运动偏移量和后向修正运动偏移量。
[0085]
在一个实施方式中,根据第一距离和第二距离的大小,可以分成三种情况来分别确定前向修正运动偏移量和后向修正运动偏移量。
[0086]
在第一距离和第二距离相等的情况下,意味着当前帧与前向参考帧和后向参考帧的距离相同,因此可以确定前向修正运动偏移量与后向修正运动偏移量相等,然后基于修正偏移幅值和修正偏移方向得到前向修正运动偏移量或后向修正运动偏移量。
[0087]
在第一距离大于第二距离的情况下,意味着当前帧与前向参考帧的距离大于当前帧与后向参考帧的距离,此时可以确定利用修正偏移幅值和修正偏移方向得到前向修正运动偏移量,然后利用得到的前向修正运动偏移量、第一距离和第二距离得到后向修正运动偏移量。
[0088]
在一个具体实施方式中,可以通过以下公式(4)确定后向修正运动偏移量。
[0089]
mvd1=(currpocdiffl1/currpocdiffl0)*mvd0
ꢀꢀ
(4)
[0090]
其中,mvd1表示后向修正运动偏移量,mvd0表示前向修正运动偏移量,currpocdiffl1表示第二距离,currpocdiffl0表示第一距离。
[0091]
在第二距离大于第一距离的情况下,意味着当前帧与后向参考帧的距离大于当前帧与前向参考帧的距离,此时可以确定利用修正偏移幅值和修正偏移方向得到后向修正运动偏移量,然后利用得到的后向修正运动偏移量、第一距离和第二距离得到后向修正运动偏移量。
[0092]
在一个具体实施方式中,可以通过以下公式(5)确定前向修正运动偏移量。
[0093]
mvd0=(currpocdiffl0/currpocdiffl1)*mvd1
ꢀꢀ
(5)
[0094]
其中,mvd1表示后向修正运动偏移量,mvd0表示前向修正运动偏移量,currpocdiffl1表示第二距离,currpocdiffl0表示第一距离。
[0095]
在一个实施方式中,在分别得到前向修正运动偏移量和后向修正运动偏移量以后,可以利用前向修正运动偏移量和前向的当前运动矢量得到前向最终候选运动矢量,利用后向修正运动偏移量和后向的当前运动矢量得到后向最终候选运动矢量。然后从前向最终候选运动矢量选择预测代价值最小的前向最终候选运动矢量确定为前向最终运动矢量,从后向最终候选运动矢量选择预测代价值最小的后向最终候选运动矢量确定为后向最终运动矢量。
[0096]
因此,通过确定当前帧和前向参考帧的第一距离以及当前帧和后向参考帧的第二距离,可以根据第一距离和第二距离的大小关系,分别确定前向修正运动偏移量和后向修正运动偏移量。
[0097]
在一个实施例中,在采用上述的视频帧预测方法以后,可以在当前编码单元的句法元素中相应的句法元素,用于后续的解码。
[0098]
在一个实施方式中,可以在当前编码单元的句法元素中添加第一开关,并利用第一开关用于表示当前编码单元是否能够利用参考像素点得到最终帧内预测值。第一开关为开,则表示当前编码单元能够利用参考像素点得到最终帧内预测值。第一开关为关,则表示当前编码单元不能利用参考像素点得到最终帧内预测值
[0099]
进一步地,若第一开关为开,则可以在当前编码单元的句法元素中,添加第一标识用于表示第一像素点的最终帧内预测值是否为利用参考像素点的像素值和第一像素点的
初始帧内预测值得到的。
[0100]
在一个实施方式中,可以在当前编码单元的句法元素中添加第二开关,并利用第二开关用于表示是否能够利用修正运动偏移量对当前编码单元的当前运动矢量进行修正得到最终运动矢量。第二开关为开,则表示最终运动矢量能够利用修正运动偏移量得到的。第二开关为关,则表示最终运动矢量不能利用利用了修正运动偏移量得到的。
[0101]
若第二开关为开,则可以进一步地在当前编码单元的句法元素中,添加第二标识用于最终运动矢量是否为利用了修正运动偏移量得到的。
[0102]
若最终运动矢量为利用了修正运动偏移量得到的,则还可以在当前编码单元的句法元素中,添加第一索引和第二索引用于标记最终运动矢量对应的修正偏移幅值和修正偏移方向。
[0103]
因此,通过在当前编码单元的句法元素中相应的句法元素,使得后续解码时,可以根据对应的句法元素实现解码。
[0104]
请参阅图7,图7是本技术编解码方法实施例的流程示意图。编码方法包括步骤s41和步骤s42。
[0105]
步骤s41:获取当前编解码单元的最终联合预测值。
[0106]
在本实施例中,最终联合预测值是利用上述实施例提及的帧内帧间联合预测方法得到的。
[0107]
在编码时,当前编码单元的最终联合预测值可以是通过执行上述帧内帧间联合预测方法实施例的步骤得到的。在解码时,编码时的当前编码单元对应为当前解码单元。当前解码单元的最终联合预测值可以是通过对包含当前解码单元的视频码流进行联合预测相关句法元素解析,然后采用上述联合预测方法得到的。
[0108]
在一个实施方式中,可以对包含当前解码单元的视频码流进行联合预测相关句法元素解析,通过利用解析得到的句法元素,例如是通过利用上述提及的第一开关和第一标识,来确定是否需要对帧内预测值进行修正。帧内预测值可以是进行帧内预测后得到的。若确定需要对帧内预测值进行修正,则可以利用上述的帧内帧间联合预测方法中提及的对帧内预测值的修正方法进行修正,以此可以得到最终帧内预测值。
[0109]
在一个实施方式中,可以对包含当前解码单元的视频码流进行联合预测相关句法元素解析,通过利用解析得到的句法元素,例如是通过利用上述提及的第二开关和第二标识,来确定是否需要对运动矢量进行修正。运动矢量例如是在编码时通过帧内帧间联合预测后确定的运动矢量。若确定需要对运动矢量进行修正,还可以进一步利用解析得到的句法元素中确定的修正偏移幅值和修正偏移方向的索引,例如是第一索引和第二索引,结合运动矢量得到最终运动矢量,进而可以利用最终运动矢量进行运动补偿,得到最终帧间预测值。
[0110]
在一个实施方式中,可以利用得到的最终帧内预测值和最终帧间预测值进行帧内帧间联合预测,得到最终联合预测值。
[0111]
步骤s42:基于最终联合预测值对当前编码单元进行编解码。
[0112]
在编码时,在获得当前编码单元的最终联合预测值以后,可以根据通用的编码方法对当前编码单元进行编码,以实现视频帧的压缩。
[0113]
在解码时,可以根据当前解码单元的最终联合预测值,利用本领域通用的解码方
法进行解码。
[0114]
请参阅图8,图8是本技术帧内帧间联合预测装置实施例的框架示意图。在本实施例中,帧内帧间联合预测装置80包括帧内预测模块81、帧间预测模块82和联合预测模块83。帧内预测模块81用于获取利用参考像素点对当前编码单元的初始帧内预测值修正后的最终帧内预测值;帧间预测模块82用于获取利用若干修正运动偏移量对当前编码单元的当前运动矢量进行修正后得到的最终运动矢量,并利用最终运动矢量得到最终帧间预测值;联合预测模块83用于至少利用最终帧内预测值和最终帧间预测值运动矢量的其中一者,进行帧内帧间联合预测,以得到最终联合预测值。
[0115]
其中,上述的当前编码单元包括目标区域和非目标区域,其中,距离当前编码单元的参考像素点预设距离的区域为目标区域,剩余区域则为非目标区域,目标区域的像素点为第一像素点,非目标区域的像素点为第二像素点;上述的帧内预测模块81用于获取利用参考像素点对当前编码单元的初始帧内预测值修正后的最终帧内预测值,具体包括:获取当前编码单元的像素点的初始帧内预测值;基于参考像素点的像素值和第一像素点的初始帧内预测值,确定第一像素点的最终帧内预测值,将第二像素点的初始帧内预测值作为最终帧内预测值。
[0116]
其中,帧内预测模块81还用于基于当前编码单元的大小,确定预设距离。
[0117]
其中,上述的帧内预测模块81基于参考像素点的像素值和第一像素点的初始帧内预测值,确定第一像素点的最终帧内预测值,具体包括:在参考像素点中确定与第一像素点对应的对应参考像素点;根据第一像素点与对应参考像素点的距离,确定对应参考像素点的权重,其中,对应参考像素点与第一像素点的距离较近的对应参考像素点的权重大于对应参考像素点与第一像素点的距离较远的对应参考像素点的权重;基于对应参考像素点的像素值、对应参考像素点的权重和第一像素点的初始帧内预测值,确定第一像素点的最终帧内预测值。
[0118]
其中,上述的对应参考像素点包括正上参考像素点和正左参考像素点;上述的帧内预测模块81根据第一像素点与对应参考像素点的距离,确定对应参考像素点的权重,包括:根据第一像素点与正上参考像素点的距离,确定正上参考像素点权重;根据第一像素点与正左参考像素点的距离,确定正左参考像素点权重;基于对应参考像素点的像素值、对应参考像素点的权重和第一像素点的初始帧内预测值,确定第一像素点的最终帧内预测值,包括:基于正上参考像素点的像素值、正左参考像素点的像素值、正上参考像素点权重、正左参考像素点权重第一像素点的初始帧内预测值,确定第一像素点的最终帧内预测值。
[0119]
其中,帧内帧间联合预测装置80还包括句法元素模块,句法元素模块用于当前编码单元的句法元素中添加第一开关,其中,所示第一开关用于表示当前编码单元是否能够利用参考像素点得到最终帧内预测值;若第一开关为开,句法元素模块还用于在当前编码单元的句法元素中,添加第一标识用于表示最终帧内预测值是否为利用参考像素点对当前编码单元的初始帧内预测值修正后的得到的。
[0120]
其中,帧间预测模块82还用于获取若干修正偏移幅值和若干修正偏移方向;基于若干修正偏移幅值和若干修正偏移方向,得到若干修正运动偏移量。
[0121]
其中,上述的当前编码单元所属当前帧具有前向参考帧和后向参考帧,修正运动偏移量包括前向修正运动偏移量和后向修正运动偏移量;上述的帧间预测模块82用于基于
若干修正偏移幅值和若干修正偏移方向,得到若干修正运动偏移量,包括:确定当前帧和前向参考帧的第一距离,以及当前帧和后向参考帧的第二距离;基于第一距离、第二距离、修正偏移幅值和修正偏移方向,确定前向修正运动偏移量和后向修正运动偏移量。
[0122]
其中,上述的帧间预测模块82用于基于第一距离、第二距离、修正偏移幅值和修正偏移方向,确定前向修正运动偏移量和后向修正运动偏移量,包括:若第一距离和第二距离相等,则确定前向修正运动偏移量与后向修正运动偏移量相等,且基于修正偏移幅值和修正偏移方向得到前向修正运动偏移量或后向修正运动偏移量;若第一距离大于第二距离,则基于修正偏移幅值和修正偏移方向得到前向修正运动偏移量,并利用前向修正运动偏移量、第一距离和第二距离得到后向修正运动偏移量;若第一距离小于第二距离,则基于修正偏移幅值和修正偏移方向得到后向修正运动偏移量,并利用后向修正运动偏移量、第一距离和第二距离和得到前向修正运动偏移量。
[0123]
其中,上述的当前运动矢量为当前编码单元在帧间预测中的候选运动矢量、或者是通过帧间预测后选择的第一运动矢量,或者是帧内帧间联合预测后确定的第二运动矢量。
[0124]
其中,上述的句法元素模块还用于在当前编码单元的句法元素中添加第二开关,第二开关用于表示是否能够利用修正运动偏移量对当前编码单元的当前运动矢量进行修正得到所述最终运动矢量;若所述第二开关为开,则在所述当前编码单元的句法元素中,添加第二标识用于表示所述最终运动矢量是否为利用了所述修正运动偏移量得到的;若所述最终运动矢量为利用了所述修正运动偏移量得到的,则在所述当前编码单元的句法元素中,添加第一索引和第二索引用于标记所述最终运动矢量对应的修正偏移幅值和修正偏移方向。
[0125]
请参阅图9,图9是本技术编解码设备一实施例的框架示意图。编解码设备90包括相互耦接的存储器91和处理器92,处理器92用于执行存储器91中存储的程序指令,以实现上述任一帧内帧间联合预测方法实施例的步骤。在一个具体的实施场景中,编解码设备90可以包括但不限于:微型计算机、服务器,此外,编解码设备90还可以包括笔记本电脑、平板电脑等移动设备,在此不做限定。
[0126]
具体而言,处理器92用于控制其自身以及存储器91以实现上述任一帧内帧间联合视频帧的预测方法实施例的步骤。处理器92还可以称为cpu(central processing unit,中央处理单元)。处理器92可能是一种集成电路芯片,具有信号的处理能力。处理器92还可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器92可以由集成电路芯片共同实现。
[0127]
请参阅图10,图10为本技术计算机可读存储介质一实施例的框架示意图。计算机可读存储介质100存储有能够被处理器运行的程序指令101,程序指令101用于实现上述任一帧内帧间联合视频帧的预测方法实施例的步骤。
[0128]
上述方案,通过至少利用最终帧内预测值和最终帧间预测值的其中一者来进行帧内帧间联合预测,使得最终联合预测值是利用至少一个修正值修正后得到的,实现了对帧
内帧间联合预测的预测值修正,有助于进一步提高视频帧的压缩率。
[0129]
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
[0130]
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
[0131]
在本技术所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
[0132]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
[0133]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0134]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施方式方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献