一种视频编码标准中的亮度分量运动补偿方法及视频编码方法与流程

文档序号:24056902发布日期:2021-02-26 11:46阅读:127来源:国知局
一种视频编码标准中的亮度分量运动补偿方法及视频编码方法与流程

[0001]
本发明涉及视频编解码领域,针对high efficiency video coding(hevc)视频编码标准中的运动补偿模块提出一种单指令多数据(simd)指令的优化方法,能够降低视频编解码器的计算复杂度,减少编码时间。


背景技术:

[0002]
hevc是目前主流的视频编码标准,具有压缩效率高,计算复杂度大的特性。在hevc中,运动补偿是一种基于块的预测技术,其主要原理是为当前图像的每个像素块在已获得的图像中寻找一个最佳匹配块,利用匹配块的像素来预测当前图像像素块的像素。其中,匹配块到当前像素块的位移称为运动矢量。
[0003]
hevc支持非整像素精度的运动矢量(亮度分量最高支持1/4像素精度,色度分量最高支持1/8像素精度),这要求对匹配块进行非整像素插值,然后利用插值得到的像素作为预测像素。对于广泛使用的8比特位深视频的亮度分量而言,hevc使用7抽头或8抽头的插值,具体方法如下:
[0004]

根据运动矢量确定整像素精度匹配块的位置。匹配块中某一像素相对于匹配块的左上角像素的坐标记为(x,y),在图1中表示为a
0,0
。根据运动矢量确定精度,若只在y方向为非整像素精度,则跳转至

;若只在x方向为非整像素精度,则跳转至

;否则,跳转至


[0005]

此时x方向为整像素精度,y方向为1/4,1/2,3/4像素分别对应图1中的d
0,0
,h
0,0
,n
0,0
,插值公式为:
[0006]
d
0,0
=-a
0,-3
+4a
0,-2-10a
0,-1
+58a
0,0
+17a
0,1-5a
0,2
+a
0,3
[0007]
h
0,0
=-a
0,-3
+4a
0,-2-11a
0,-1
+40a
0,0
+40a
0,1-11a
0,2
+4a
0,3-a
0,4
[0008]
n
0,0
=a
0,-2-5a
0,-1
+17a
0,0
+58a
0,1-10a
0,2
+4a
0,3-a
0,4
[0009]
跳转至


[0010]

此时y方向为整像素精度,x方向为1/4,1/2,3/4像素分别对应图1中的a
0,0
,b
0,0
,c
0,0
,插值公式为:
[0011]
a
0,0
=-a-3,0
+4a-2,0-10a-1,0
+58a
0,0
+17a
1,0-5a
2,0
+a
3,0
[0012]
b
0,0
=-a-3,0
+4a-2,0-11a-1,0
+40a
0,0
+40a
1,0-11a
2,0
+4a
3,0-a
4,0
[0013]
c
0,0
=a-2,0-5a-1,0
+17a
0,0
+58a
1,0-10a
2,0
+4a
3,0-a
4,0
[0014]
跳转至


[0015]

此时x,y方向都为非整像素精度,插值过程分为两步。首先,利用

中的方法插值出x方向的非整像素精度值。然后,利用得到的插值结果对y方向做第二次非整像素插值。以x方向为1/4像素为例,y方向为1/4,1/2,3/4像素分别对应图1中的e
0,0
,i
0,0
,p
0,0
,插值公式为:
[0016]
e
0,0
=(-a
0,-3
+4a
0,-2-10a
0,-1
+58a
0,0
+17a
0,1-5a
0,2
+a
0,3
)>>6
[0017]
i
0,0
=(-a
0,-3
+4a
0,-2-11a
0,-1
+40a
0,0
+40a
0,1-11a
0,2
+4a
0,3-a
0,4
)>>6
[0018]
p
0,0
=(a
0,-2-5a
0,-1
+17a
0,0
+58a
0,1-10a
0,2
+4a
0,3-a
0,4
)>>6
[0019]
类似的,f
0,0
,j
0,0
,q
0,0
可以由b
0,k
插值得到,g
0,0
,k
0,0
,r
0,0
可以由c
0,k
插值得到,其中k表示-3到+4。
[0020]

对计算出的插值结果做进一步处理,将最终处理过后的值用作当前像素块相对于其左上角坐标为(x,y)像素的预测值。
[0021]
simd指令是cpu中用来一次性处理多个数据的指令,支持8比特、16比特、32比特等有符号或无符号数据的并行运算操作,非常适合用于运动补偿的插值过程。


技术实现要素:

[0022]
本发明提供一种视频编码标准中的亮度分量运动补偿方法及视频编码方法,针对8比特位深视频亮度分量的运动补偿提出了一种simd指令优化方法,该方法能够提升图1中e
0,0
,f
0,0
,g
0,0
,p
0,0
,q
0,0
,r
0,0
这6种非整像素精度插值计算的并行效率,降低视频编解码器的计算复杂度。
[0023]
本发明的技术方案为:
[0024]
一种视频编码标准中的亮度分量运动补偿方法,用于8比特位深视频亮度分量的运动补偿,其步骤包括:
[0025]
1)对匹配块i的x方向进行第一次插值,得到a
x,y+k
,b
x,y+k
和c
x,y+k
,其中k的取值范围为-3到+4;
[0026]
2)对步骤1)处理后的匹配块i进行第二次插值时,需要根据a
x,y+k
,b
x,y+k
和c
x,y+k
来插值得到e
x,y
,f
x,y
,g
x,y
,p
x,y
,q
x,y
,r
x,y
这6种非整像素;其中对于每一种所述非整像素,将第二次插值的抽头系数对应位置的输入数据记为a,b,c,d,e,f,g;然后
[0027]
3)对每一种所述非整像素,计算sub(e,a),sub(g,f),sub(d,c),sub(b,f),sub(e,d);然后计算avg(sub(e,a),sub(g,f)),结果记为s1;然后计算avg(sub(d,c),s1),结果记为s2;然后计算avg(sub(b,f),s2),结果记为s3;然后计算avg(sub(d,c),s3),结果记为s4;然后计算avg(sub(e,d),s4),结果记为s5;然后计算shr(s5,1),结果记为s6;然后计算qadd(d,s6),得到亮度分量的运动补偿插值结果;
[0028]
其中,qadd(a,b)为饱和加法指令,对两个16比特有符号数a,b做加法;sub(a,b)为减法指令,对两个16比特有符号数a,b做减法;avg(a,b)为平均指令,对两个16比特有符号数a,b求取均值,结果为(a+b)>>1;shr(a,n)为右移指令,对一个16比特有符号数a做n位算术右移;
[0029]
a
x,y
表示匹配块i中坐标为(x,y)的整像素;相对于a
x,y
,y坐标不变,x坐标偏移1/4、1/2和3/4像素的非整像素分别表示为a
x,y
、b
x,y
和c
x,y
;相对于a
x,y
,y坐标偏移1/4像素,x坐标偏移1/4、1/2和3/4像素的非整像素分别表示为e
x,y
、f
x,y
和g
x,y
;相对于a
x,y
,y坐标偏移3/4像素,x坐标偏移1/4、1/2和3/4像素的非整像素分别表示为p
x,y
、q
x,y
和r
x,y

[0030]
具体来说,本方法从以下两个方面来进行优化:
[0031]
1、在对x方向进行插值后,插值结果为16比特有符号数。传统技术在对y方向做第二次插值时,数据被扩充至32比特来进行运算,最后再将结果转换为16比特有符号数。传统技术对数据位宽的扩充导致simd指令数据并行能力降低了一倍。由于第二次插值时输入数据和输出结果都为16比特有符号数,因此本发明针对插值抽头系数的特点,设计了不需要
扩充数据位宽的插值方法,整个插值过程的数据位宽都控制在16比特。相比于传统技术,本发明提出的simd指令优化方法数据并行能力更高。
[0032]
2、传统技术使用了诸多指令周期较长的乘法指令,导致运算复杂度较高。根据插值抽头系数的特点,本发明将插值过程中的乘法指令替换为指令周期较短的加减法、移位和取平均指令,整个插值过程都没有使用乘法,整体的计算复杂度得到降低。
[0033]
与现有技术相比,本发明的积极效果为:
[0034]
本发明公开了一种基于high efficiency video coding(hevc)视频编码标准中运动补偿模块的单指令多数据(simd)指令高效优化方法。相对于传统技术,本发明改进了运动补偿模块的运算顺序和方式,提高了运算效率。本发明能够提升视频编解码器中运动补偿模块的编码速度,降低传统技术的计算复杂度。
附图说明
[0035]
图1为亮度分量的运动补偿插值位置示例图;
[0036]
图2为亮度分量的运动补偿流程图。
具体实施方式
[0037]
下面通过具体实例并配合附图,对本发明做详细的说明。
[0038]
a
x,y
表示匹配块中坐标为(x,y)的整像素。相对于a
x,y
,y坐标不变,x坐标偏移1/4,1/2,3/4像素的非整像素分别表示为a
x,y
,b
x,y
和c
x,y
;y坐标偏移1/4像素,x坐标偏移1/4,1/2,3/4像素的非整像素分别表示为e
x,y
,f
x,y
,g
x,y
;y坐标偏移3/4像素,x坐标偏移1/4,1/2,3/4像素的非整像素分别表示为p
x,y
,q
x,y
,r
x,y
。以(x,y)=(0,0)为例,对x方向进行一次插值可以得到a
0,k
,b
0,k
和c
0,k
,其中k的取值范围为-3到+4。对e
0,0
,f
0,0
,g
0,0
,p
0,0
,q
0,0
,r
0,0
这6种非整像素而言,其结果由a
0,k
,b
0,k
和c
0,k
插值得出,插值公式为:
[0039]
e
0,0
=(-a
0,-3
+4a
0,-2-10a
0,-1
+58a
0,0
+17a
0,1-5a
0,2
+a
0,3
)>>6
[0040]
f
0,0
=(-b
0,-3
+4b
0,-2

10b
0,-1
+58b
0,0
+17b
0,1

5b
0,2
+b
0,3
)>>6
[0041]
g
0,0
=(-c
0,-3
+4c
0,-2

10c
0,-1
+58c
0,0
+17c
0,1

5c
0,2
+c
0,3
)>>6
[0042]
p
0,0
=(a
0,-2-5a
0,-1
+17a
0,0
+58a
0,1-10a
0,2
+4a
0,3-a
0,4
)>>6
[0043]
q
0,0
=(b
0,-2

5b
0,-1
+17b
0,0
+58b
0,1

10b
0,2
+4b
0,3-b
0,4
)>>6
[0044]
r
0,0
=(c
0,-2

5c
0,-1
+17c
0,0
+58c
0,1

10c
0,2
+4c
0,3-c
0,4
)>>6
[0045]
本发明适用于8比特位深的视频,其像素的最大取值为255,最小取值为0。根据x方向插值的抽头系数特点,第一次插值结束后,a
0,k
,b
0,k
,c
0,k
的最大取值分别为+80
×
255,+88
×
255,+80
×
255;最小取值分别为

16
×
255,

24
×
255,

16
×
255。不失一般性,本发明取闭区间[

24
×
255,+88
×
255]作为第二次插值时输入数据的取值范围。
[0046]
为了保证数据能用16比特有符号数表示,本发明需要保证任何时候数据范围都在闭区间[

32768,+32767]以内。为此,本发明使用simd指令中16比特有符号数的饱和加法指令、减法指令、平均指令和算术右移指令。
[0047]
饱和加法指令是对两个16比特有符号数a,b做加法,结果为clip(

32768,+32767,a+b),表示为qadd(a,b),其中clip(min,max,x)函数表示将变量x的值限定在闭区间[min,max]内;减法指令是对两个16比特有符号数a,b做减法,结果为a

b,表示为sub(a,b);平均
指令是对两个16比特有符号数a,b求取均值,结果为(a+b)>>1,表示为avg(a,b);右移指令是对一个16比特有符号数a做n位算术右移,结果为a>>n,表示为shr(a,n)。
[0048]
第二次插值的抽头系数为

1,4,

10,58,17,

5,1,对应位置的输入数据记为a,b,c,d,e,f,g,其与a
0,k
,b
0,k
和c
0,k
的映射关系如表1所示。
[0049]
表1插值的输入数据映射关系表
[0050][0051][0052]
本发明的发明使用如下方法进行插值:
[0053]

计算sub(e,a),sub(g,f),sub(d,c),sub(b,f),sub(e,d)。此时减法得到的结果在闭区间[

112
×
255,+112
×
255]以内,并没有超过16比特有符号数的表示范围。
[0054]

计算avg(sub(e,a),sub(g,f)),结果记为s1。此时,由于求取均值的两个输入数据在16比特有符号数范围内,故s1也在16比特有符号数的表示范围内。
[0055]

计算avg(sub(d,c),s1),结果记为s2。此时,由于求取均值的两个输入数据在16比特有符号数范围内,故s2也在16比特有符号数的表示范围内。
[0056]

计算avg(sub(b,f),s2),结果记为s3。此时,由于求取均值的两个输入数据在16比特有符号数范围内,故s3也在16比特有符号数的表示范围内。
[0057]

计算avg(sub(d,c),s3),结果记为s4。此时,由于求取均值的两个输入数据在16比特有符号数范围内,故s4也在16比特有符号数的表示范围内。
[0058]

计算avg(sub(e,d),s4),结果记为s5。此时,由于求取均值的两个输入数据在16比特有符号数范围内,故s5也在16比特有符号数的表示范围内。
[0059]

计算shr(s5,1),结果记为s6。右移操作减小了数据大小,故s6也在16比特有符号数的表示范围内。
[0060]

计算qadd(d,s6)。该值即为亮度分量的运动补偿插值过程的结果,与插值公式(-a+4b

10c+58d+17e

5f+g)>>6输出的16比特有符号数相同。
[0061]
实施例
[0062]
本发明对亮度分量进行运动补偿的流程图如图2所示。首先,根据像素块运动矢量的整像素值找到对应的匹配块位置。若运动矢量的非整像素值为0,则无需进行插值,直接对匹配块做后处理就可以完成运动补偿过程;若运动矢量的非整像素值不为0,则根据具体值判断需要对匹配块进行插值的类型。
[0063]
a
x,y
表示匹配块中坐标为(x,y)的像素。相对于a
x,y
,y坐标不变,x坐标偏移1/4,1/2,3/4像素的非整像素分别表示为a
x,y
,b
x,y
和c
x,y
;y坐标偏移1/4像素,x坐标偏移1/4,1/2,
3/4像素的非整像素分别表示为e
x,y
,f
x,y
,g
x,y
;y坐标偏移3/4像素,x坐标偏移1/4,1/2,3/4像素的非整像素分别表示为p
x,y
,q
x,y
,r
x,y
。以(x,y)=(0,0)为例,对x方向进行一次插值可以得到a
0,k
,b
0,k
和c
0,k
,其中k的取值范围为-3到+4。对e
0,0
,f
0,0
,g
0,0
,p
0,0
,q
0,0
,r
0,0
这6种非整像素而言,其结果由a
0,k
,b
0,k
和c
0,k
插值得出。具体来讲,根据表1中插值输入数据的映射关系,对映射后的a,b,c,d,e,f,g使用如下方法进行插值:
[0064]

计算sub(e,a),sub(g,f),sub(d,c),sub(b,f),sub(e,d)。
[0065]

计算avg(sub(e,a),sub(g,f)),结果记为s1。
[0066]

计算avg(sub(d,c),s1),结果记为s2。
[0067]

计算avg(sub(b,f),s2),结果记为s3。
[0068]

计算avg(sub(d,c),s3),结果记为s4。
[0069]

计算avg(sub(e,d),s4),结果记为s5。
[0070]

计算shr(s5,1),结果记为s6。
[0071]

计算qadd(d,s6)。
[0072]
对第

步的结果做后处理就可以完成运动补偿过程。
[0073]
如果相对于a
x,y
,y坐标偏移和x坐标偏移不为上述6种非整像素,则按照传统的插值公式计算插值结果,并对结果做后处理以完成运动补偿过程。
[0074]
尽管前面公开的内容示出了本发明的示例性实施例,但应注意,在不背离权利要求限定的本发明的范围的前提下,可以进行多种改变和修改。根据这里描述的发明实施例的结构,权利要求的组成元件可以用任何功能等效的元件替代。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1