编码器,解码器和使用压缩mv存储的对应方法
1.本技术是分案申请,原申请的申请号是201980058430.x,原申请日是2019年12月27日,原申请的全部内容通过引用结合在本技术中。
技术领域
2.本技术实施例大体上涉及
图像处理领域,更具体地,涉及一种用于减少存储运动矢量信息的内存容量的技术。
背景技术:
3.视频
译码(视频编码和解码)广泛用于数字视频应用,例如广播数字电视、互联网和移动网络上的视频传输、视频聊天、视频会议等实时会话应用、dvd和蓝光光盘、视频内容采集和编辑系统以及可携式摄像机的安全应用。
4.即使在视频较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量有限的通信网络中发送或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后在现代电信网络中发送。由于内存资源可能有限,当在存储设备中存储视频时,视频的尺寸也可能成为问题。视频压缩设备通常在源侧使用软件和/或硬件,以在发送或存储先前对视频数据进行编码,从而减少用来表示数字视频图像所需的数据量。然后,压缩的数据在目的地侧由用于对视频数据进行解码的视频解压缩设备接收。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。
技术实现要素:
5.本发明的目的是提供一种技术方案来解决以下问题:减少存储用于推导时域运动矢量预测的信息所需的内存容量,同时将运动矢量表示和精度保持在合理范围内。
6.本发明通过提供一种运动矢量压缩方法来解决这一问题。
所述运动矢量压缩方法包括:获取时域运动矢量;使用所述时域运动矢量的二进制表示来确定压缩运动矢量,其中,所述时域运动矢量的二进制表示包括指数部分和/或尾数部分,所述指数部分包括n位,所述尾数部分包括m位,n为非负整数,m为正整数;使用所述压缩运动矢量来执行时域运动矢量预测(temporal motion vector prediction,tmvp)。
7.在一个实施例中,可以执行以下步骤:根据所述时域运动矢量的指数部分或尾数部分,执行至少一次位移位运算,得到压缩运动矢量。
8.在另一个实施例中,所述指数部分可以对应于所述二进制表示的一个或多个最高有效位(most significant bit,msb),所述尾数部分可以对应于所述二进制表示的一个或多个最低有效位(least significant bit,lsb);或者,所述指数部分可以对应于所述二进制表示的一个或多个lsb,所述尾数部分可以对应于所述二进制表示的一个或多个msb。
9.另外,当所述指数部分对应于所述二进制表示的一个或多个msb,所述尾数部分对应于所述二进制表示的一个或多个lsb时,可以通过以下步骤推导所述压缩运动矢量的值:
通过将所述二进制表示向右移动m位,推导第一移位值;将所述二进制表示的后m位推导为第一基本二进制表示;通过将所述第一基本二进制表示向左移动所述第一移位值,推导所述压缩运动矢量的值。
10.或者,当所述指数部分对应于所述二进制表示的一个或多个lsb,所述尾数部分对应于所述二进制表示的一个或多个msb时,通过以下步骤推导所述运动矢量分量的值:将所述二进制表示的后n位推导为第二移位值;通过将所述二进制表示向右移动n位,推导第二基本二进制表示;通过将所述第二基本二进制表示向左移动所述第二移位值,推导所述压缩运动矢量的值。
11.根据一个实施例,所述时域运动矢量可以包括运动矢量水平分量和运动矢量垂直分量。
12.根据另一个实施例,所述运动矢量压缩方法可以包括:对第一指示符进行译码,其中,所述第一指示符用于指示是否根据本发明所述的运动矢量压缩方法对所述时域运动矢量进行压缩。
13.所述运动矢量压缩方法可以包括:确定n的值。此外,所述确定n的值可以包括:对所述n的值进行译码;或者,将预定值设置为所述n的值;或者,根据图像
单元的分辨率,推导所述n的值,其中,所述图像单元包括图像或分块集;或者,根据译码树单元(coding tree unit,ctu)或译码单元(coding unit,cu)的尺寸,推导所述n的值。
14.更具体地,所述根据图像单元的分辨率,推导所述n的值可以包括:当所述图像单元的宽度小于第一阈值,且所述图像单元的高度小于所述第一阈值时,将所述n的值设置为0;或者,当所述图像单元的宽度小于第二阈值,且所述图像单元的高度小于所述第二阈值时,对第二指示符进行译码来表示所述n的值;或者,对第三指示符进行译码来表示所述n的值。
15.所述第二指示符可以使用1位的二值化表示,所述第三指示符可以使用2位的二值化表示。
16.在一个实施例中,所述第一指示符、所述第二指示符和/或所述第三指示符可以包括在码流中的序列参数集(sequence parameter set,sps)、图像参数集(picture parameter set,pps)、条带头或分块组头中。
17.本发明还通过提供一种运动矢量压缩方法来解决上述问题。所述运动矢量压缩方法包括:获取时域运动矢量;确定所述时域运动矢量的指数部分或尾数部分;根据所述时域运动矢量的指数部分或尾数部分,执行至少一次位移位运算,得到压缩运动矢量,其中,所述指数部分对应于所述压缩运动矢量的一个或多个最低有效位(least significant bit,lsb),所述尾数部分对应于所述压缩运动矢量的一个或多个最高有效位(most significant bit,msb);使用所述压缩运动矢量来执行时域运动矢量预测(temporal motion vector prediction,tmvp)。
18.本发明还通过提供一种基于运动矢量的译码方法来解决上述问题。所述译码方法包括:对第一标志进行译码;当所述第一标志为第一值时,执行第一方法;当所述第一标志为第二值时,执行第二方法,其中,所述第一值与所述第二值不同,当前图像块的第一运动矢量分量的原始值使用m位的二值化表示,所述第一方法包括:将所述原始值向右移动n位,其中,m
–
n等于预定值,n和m为正整数;将所述向右移动的原始值设置为所述第一运动矢量
分量的保存值(storage value);根据所述保存值,对后续图像块进行译码;所述第二方法包括:对所述原始值进行修正运算,其中,将由所述修正原始值表示的修正运动矢量分量限制在
–2m
–n–1和2m–n–1–
1之间;将所述修正原始值设置为所述第一运动矢量分量的保存值;根据所述保存值,对后续图像块进行译码。
19.在一个实施例中,在根据所述第一方法将所述向右移动的原始值设置为所述运动矢量的保存值之后,所述译码方法还可以包括:将所述保存值向左移动n位;所述根据所述保存值,对后续图像块进行译码包括:根据所述向左移动的保存值,对所述后续图像块进行译码。
20.或者,在根据第二种方法将所述修正原始值设置为所述运动矢量的保存值之后,所述译码方法还可以包括:根据所述保存值,确定所述第一运动矢量分量的恢复值,其中,所述恢复值使用m位的二值化表示,所述恢复值的后(m
–
n)位与所述保存值相同,当所述保存值为正时,所述恢复值的前n位都等于0,当所述保存值为负时,所述恢复值的前n位都等于1;所述根据所述保存值,对后续图像块进行译码包括:根据所述恢复值,对所述后续图像块进行译码。
21.在一个实施例中,所述后续图像块和所述当前块可以位于不同的图像中,所述后续图像块的预测模式可以包括时域运动矢量预测(temporal motion vector prediction,tmvp)和/或可选时域运动矢量预测(alternative temporal motion vector prediction,atmvp)。
22.在另一个实施例中,可以针对每幅图像对所述第一标志进行译码;或者,可以针对每个分块对所述第一标志进行译码;或者,可以针对每个分块集对所述第一标志进行译码;或者,可以针对每个条带对所述第一标志进行译码。
23.在又一个实施例中,所述第一标志可以包括在码流中的序列参数集(sequence parameter set,sps)、图像参数集(picture parameter set,pps)、条带头或分块组头中。
24.根据一个实施例,所述当前图像块还可以具有第二运动矢量分量,所述译码方法还可以包括:对第二标志进行译码,其中,当所述第二标志为所述第一值时,可以对所述第二运动矢量分量执行所述第一方法;当所述第二标志为所述第二值时,可以对所述第二运动矢量分量执行所述第二方法。
25.根据另一个实施例,在对所述第一标志进行译码之前,所述译码方法还可以包括:判断当前图像的分辨率是否大于或等于第一预设值;所述当前图像块可以位于所述当前图像中。
26.此外,当所述当前图像的分辨率小于所述第一预设值时,可以执行所述第二方法。
27.而且,当将所述当前图像划分为分块集时,可以执行所述第二方法;或者,当分块集的分辨率小于第二预设值时,可以执行所述第二方法。
28.根据一个实施例,在对所述第一标志进行译码之前,所述译码方法还可以包括:判断译码树单元(coding tree unit,ctu)的尺寸、译码单元(coding unit,cu)的尺寸、图像块的尺寸或当前图像块的单元的尺寸是否满足第一尺寸条件。
29.此外,如果所述ctu的尺寸、所述cu的尺寸、所述图像块的尺寸或所述当前图像块的单元的尺寸满足第二尺寸条件,则可以执行所述第一方法;或者,如果所述ctu的尺寸、所述cu的尺寸、所述图像块的尺寸或所述当前图像块的单元的尺寸满足第三尺寸条件,则可
以执行所述第二方法。
30.本发明还提供一种基于运动矢量的译码方法。所述译码方法包括:确定ctu的尺寸、cu的尺寸、图像块的尺寸或当前图像块的单元的尺寸;根据所述尺寸,执行第一方法和第二方法中的至少一种,或者,确定当前图像的分辨率;根据所述分辨率,执行所述第一方法和所述第二方法中的至少一种,其中,所述当前图像块的第一运动矢量分量的原始值使用m位的二值化表示,所述第一方法包括:将所述原始值向右移动n位,其中,m
–
n等于预定值,n和m为正整数;将所述向右移动的原始值设置为所述第一运动矢量分量的保存值;根据所述保存值,对后续图像块进行译码;所述第二方法包括:对所述原始值进行修正运算,其中,将由所述修正原始值表示的修正运动矢量分量限制在
–2m
–n–1和2m–n–1–
1之间;将所述修正原始值设置为所述第一运动矢量分量的保存值;根据所述保存值,对后续图像块进行译码。
31.还通过一种非瞬时性计算机可读存储介质来解决上述问题。所述非瞬时性计算机可读存储介质存储由处理电路执行的程序;当所述处理电路执行所述程序时,所述处理电路用于执行任一上述方法。
32.还通过一种解码器来解决上述问题。所述解码器包括电路,用于执行任一上述方法。
33.还通过一种编码器来解决上述问题。所述编码器包括电路,用于执行任一上述方法。
34.上文描述的译码可以指编码或解码。
35.下面参照附图描述本发明的其它特征和优点。在说明书中,参考意在说明本发明优选实施例的附图。应理解,这些实施例并不代表本发明的全部范围。
附图说明
36.下面将参照所附附图和示意图更加详细地描述本发明实施例,其中:
37.图1a为用于实现本技术实施例的视频译码系统的一个示例的框图;
38.图1b为用于实现本技术实施例的视频译码系统的另一个示例的框图;
39.图2为用于实现本技术实施例的视频编码器的一个示例的框图;
40.图3为用于实现本技术实施例的视频解码器的一种示例性结构的框图;
41.图4为编码装置或解码装置的一个示例的框图;
42.图5为编码装置或解码装置的另一个示例的框图;
43.图6为本技术实施例的一个示例的框图;
44.图7为本技术实施例的另一个示例的框图;
45.图8为本技术另一实施例的一个示例的框图;
46.图9是本技术另一实施例的一个示例的框图;
47.图10为本发明提供的运动矢量压缩方法的流程图。
48.在下文,相同附图标记表示相同特征或至少在功能上等效的特征,除非另有明确规定。
具体实施方式
49.以下描述中,参考形成本发明一部分并以说明的方式示出本技术实施例的具体方面或可以使用本技术实施例的具体方面的附图。应理解,本技术实施例可以在其它方面中使用,并且可以包括附图中未描绘的结构变化或逻辑变化。因此,以下详细描述不应以限制性的意义来理解,且本技术的范围由所附权利要求书界定。
50.例如,应理解,与描述方法有关的公开内容可以对用于执行所述方法的对应设备或系统也同样适用,反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包括一个或多个单元(例如功能单元)来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元分别执行多个步骤中的一个或多个),即使附图中未明确描述或说明这样的一个或多个单元。另一方面,例如,如果根据一个或多个单元(例如功能单元)来描述具体装置,则对应的方法可以包括一个步骤来执行一个或多个单元的功能(例如,一个步骤执行一个或多个单元的功能,或多个步骤分别执行多个单元中的一个或多个单元的功能),即使附图中未明确描述或说明这样的一个或多个步骤。此外,应理解,除非另外明确说明,本文中描述的各种示例性实施例和/或方面的特征可以相互组合。
51.视频译码通常是指处理形成视频或视频序列的图像序列。在视频译码领域中,术语“帧(frame)”与“图像(picture/image)”可以用作同义词。视频译码(或总称为译码)包括视频编码和视频解码两部分。视频编码在源侧执行,通常包括处理(例如通过压缩)原始视频图像,以减少表示视频图像所需的数据量(从而更高效存储和/或发送)。视频解码在目的地侧执行,通常包括相对于编码器作逆处理,以重建视频图像。实施例涉及的视频图像(或总称为图像)的“译码”应理解为视频图像或相应视频序列的“编码”或“解码”。编码部分和解码部分也合称为编解码(codec)(编码和解码)。
52.在无损视频译码情况下,可以重建原始视频图像,即重建视频图像与原始视频图像具有相同的质量(假设存储或发送期间没有传输损耗或其它数据丢失)。在有损视频译码情况下,通过量化等执行进一步压缩,来减少表示视频图像的数据量,而解码器侧无法完全重建视频图像,即重建视频图像的质量比原始视频图像的质量低或差。
53.几个视频译码标准属于“有损混合型视频编解码器”组(即,将像素域中的空间预测和时域预测与变换域中用于应用量化的2d变换译码相结合)。视频序列中的每个图像通常分割成不重叠的块集合,通常在块级处执行译码。换句话说,在编码器侧,通常在块(视频块)级处对视频进行处理(即编码),例如,通过空间(帧内)预测和/或时域(帧间)预测来生成预测块;从当前块(当前处理的块/待处理块)中减去预测块,得到残差块;在变换域中变换残差块并量化残差块,以减少待发送(压缩)的数据量,而解码器侧对经编码或压缩的块进行相对于编码器的逆处理,以重建当前块进行表示。此外,编码器与解码器的处理步骤相同,使得编码器和解码器生成相同的预测块(例如帧内预测和帧间预测块)和/或重建块,以对后续块进行处理(即译码)。
54.在以下视频译码系统10的实施例中,视频编码器20和视频解码器30根据图1至图3进行描述。
55.图1a为示例性译码系统10的示意性框图,例如可以利用本技术技术的视频译码系统10(或简称为译码系统10)。视频译码系统10中的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)为一种示例,可以为使用本技术中描述的各种示例来执行
技术的设备。
56.如图1a所示,译码系统10包括源设备12,源设备12用于将经编码的图像数据21提供给目的地设备14等,以对经编码的图像数据13进行解码。
57.源设备12包括编码器20,并且可以另外(即可选地)包括图像源16、预处理器(或预处理单元)18(例如图像预处理器18)和通信接口或通信单元22。
58.图像源16可以包括或可以是任何类型的用于捕获真实世界图像等的图像捕获设备;和/或任何类型的图像生成设备(例如用于生成计算机动画图像的计算机图形处理器);或者任何类型的用于获取和/或提供真实世界图像、计算机动画图像(例如屏幕内容、虚拟现实(virtual reality,vr)图像)和/或其任何组合(例如增强现实(augmented reality,ar)图像)的设备。图像源可以为任何类型的存储任一上述图像的存储器(memory/storage)。
59.为了区分预处理器18和预处理单元18执行的处理,图像或图像数据17也可以称为原始图像或原始图像数据17。
60.预处理器18用于接收(原始)图像数据17,并对图像数据17执行预处理,得到预处理图像19或预处理图像数据19。预处理器18执行的预处理可以包括修剪、颜格式转换(例如从rgb转换为ycbcr)、调或去噪等。可以理解的是,预处理单元18可以为可选组件。
61.视频编码器20用于接收预处理图像数据19并提供经编码的图像数据21(结合图2等描述更多细节)。
62.源设备12中的通信接口22可以用于接收经编码的图像数据21,并通过通信信道13将经编码的图像数据21(或对经编码的图像数据21进一步处理后得到的数据)发送到另一设备(例如目的地设备14)或任何其它设备,以便进行存储或直接重建。
63.目的地设备14包括解码器30(例如视频解码器30),并且可以另外(即可选地)包括通信接口或通信单元28、后处理器32(或后处理单元32)和显示设备34。
64.目的地设备14中的通信接口28用于(例如)直接从源设备12或从存储设备(例如经编码的图像数据存储设备)等任何其它源,接收经编码的图像数据21(或对经编码的图像数据21进一步处理后得到的数据),并将经编码的图像数据21提供给解码器30。
65.通信接口22和通信接口28可以用于经由源设备12与目的地设备14之间的直接通信链路(例如直接有线或无线连接)或者经由任何类型的网络(例如有线网络、无线网络或其任何组合,或者任何类型的私网和公网或其任何类型的组合)发送或接收经编码的图像数据21或经编码的数据13。
66.例如,通信接口22可以用于将经编码的图像数据21封装成合适的格式(例如数据包),和/或通过任何类型的传输编码或处理方式来处理经编码的图像数据,以便通过通信链路或通信网络进行传输。
67.例如,与通信接口22对应的通信接口28可以用于接收传输数据,并通过任何类型的对应传输解码或处理和/或解封装方式来处理传输数据,得到经编码的图像数据21。
68.通信接口22和通信接口28都可以配置为图1a中从源设备12指向目的地设备14的通信信道13的箭头所指示的单向通信接口,或者配置为双向通信接口,并且可以用于发送和接收消息等,以建立连接、确认并交换与通信链路和/或数据传输(例如经编码的图像数据传输)相关的任何其它信息,等等。
69.解码器30用于接收经编码的图像数据21并提供解码图像数据31或解码图像31(下文结合图3或图5等描述更多细节)。
70.目的地设备14中的后处理器32用于对解码图像数据31(也称为重建图像数据)(例如解码图像31)进行后处理,得到后处理图像数据33(例如后处理图像33)。后处理单元32执行的后处理可以包括颜格式转换(例如从ycbcr转换为rgb)、调、修剪或重采样,或者任何其它处理,以便提供解码图像数据31以供显示设备34等显示,等等。
71.目的地设备14中的显示设备34用于接收后处理图像数据33,以便向用户或观看者等显示图像。显示设备34可以为或可以包括任何类型的显示器(例如集成或外部显示器或显示屏),以表示重建图像。例如,显示器可以包括液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light emitting diode,oled)显示器、等离子显示器、投影仪、微型led显示器、硅基液晶显示器(liquid crystal on silicon,lcos)、数字光处理器(digital light processor,dlp)或任何类型的其它显示器。
72.尽管图1a示出了源设备12和目的地设备14作为单独的设备,但是在实施例中,设备还可以同时包括源设备12和目的地设备14或同时包括源设备12和目的地设备14的功能,即源设备12或对应功能以及目的地设备14或对应功能。在这些实施例中,可以使用相同的硬件和/或软件或使用单独的硬件和/或软件或其任何组合来实现源设备12或对应功能以及目的地设备14或对应功能。
73.根据描述,图1a所示的源设备12和/或目的地设备14中的不同单元或功能的存在和(精确)划分可以根据实际设备和应用而有所不同,这对技术人员来说是显而易见的。
74.编码器20(例如视频编码器20)或解码器30(例如视频解码器30)或者编码器20和解码器30两者可以通过图1b所示的处理电路实现,例如一个或多个微处理器、一个或多个数字信号处理器(digital signal processor,dsp)、一个或多个专用集成电路(application-specific integrated circuit,asic)、一个或多个现场可编程门阵列(field-programmable gate array,fpga)、一个或多个离散逻辑、一个或多个硬件、一个或多个视频译码专用处理器或其任意组合。编码器20可以通过处理电路46实现,以包含参照图2中的编码器20论述的各种模块和/或本文描述的任何其它编码器系统或子系统。解码器30可以通过处理电路46实现,以包含参照图3中的解码器30论述的各种模块和/或本文描述的任何其它解码器系统或子系统。处理电路可以用于执行下文描述的各种操作。如图5所示,如果上述技术部分在软件中实现,则一种设备可以将该软件的指令存储在合适的非瞬时性计算机可读介质中,并且可以使用一个或多个处理器在硬件中执行这些指令,以执行本发明技术。视频编码器20或视频解码器30可以作为组合编解码器(encoder/decoder,codec)的一部分集成在单个设备中,如图1b所示。
75.源设备12和目的地设备14可以包括多种设备中的任一种,包括任何类型的手持设备或固定设备,例如笔记本电脑/膝上型电脑、手机、智能手机、平板或平板电脑、相机、台式电脑、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏机、视频流设备(例如内容业务服务器或内容分发服务器)、广播接收器设备等,并且可以不使用或可以使用任何类型的操作系统。在一些情况下,源设备12和目的地设备14可以用于无线通信。因此,源设备12和目的地设备14可以是无线通信设备。
76.在一些情况下,图1a所示的视频译码系统10仅仅是示例性的,本技术技术可以适
用于编码设备与解码设备之间不一定包括任何数据通信的视频译码(例如视频编码或视频解码)设置。在其它示例中,从本地存储器中检索数据,通过网络发送,等等。视频编码设备可以对数据进行编码并将数据存储到存储器中,和/或视频解码设备可以从存储器中检索数据并对数据进行解码。在一些示例中,编码和解码由相互不通信而只是将数据编码到存储器和/或从存储器中检索数据并对数据进行解码的设备来执行。
77.为便于描述,本文(例如)参考由itu-t视频译码专家组(video coding experts group,vceg)和iso/iec运动图像专家组(motion picture experts group,mpeg)的视频译码联合协作团队(joint collaboration team on video coding,jct-vc)开发的高效视频译码(high-efficiency video coding,hevc)或下一代视频译码标准通用视频译码(versatile video coding,vvc)参考软件来描述本技术实施例。本领域普通技术人员理解本发明实施例不限于hevc或vvc。
78.编码器和编码方法
79.图2为用于实现本技术技术的示例性视频编码器20的示意性框图。在图2的示例中,视频编码器20包括输入端201(或输入接口201)、残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、环路滤波器单元220、解码图像缓冲器(decoded picture buffer,dpb)230、模式选择单元260、熵编码单元270和输出端272(或输出接口272)。模式选择单元260可以包括帧间预测单元244、帧内预测单元254和分割单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(未示出)。图2所示的视频编码器20也可以称为混合视频编码器或基于混合型视频编解码器的视频编码器。
80.残差计算单元204、变换处理单元206、量化单元208和模式选择单元260可以组成编码器20的前向信号路径,而反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波器220、解码图像缓冲器(decoded picture buffer,dpb)230、帧间预测单元244和帧内预测单元254可以组成视频编码器20的后向信号路径,其中,视频编码器20的后向信号路径对应于解码器(参见图3中的视频解码器30)的信号路径。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。
81.图像和图像分割(图像和块)
82.编码器20可以用于通过输入端201等接收图像17(或图像数据17)。图像17可以是形成视频或视频序列的图像序列中的图像。接收到的图像或图像数据也可以是预处理图像19(或预处理图像数据19)。为了简单起见,以下描述使用图像17。图像17也可以称为当前图像或待译码图像(尤其是在视频译码中将当前图像与同一视频序列(也就是同样包括当前图像的视频序列)中的其它图像(例如先前的编码和/或解码图像)区分开)。
83.(数字)图像为或可以视为具有强度值的像素点组成的二维阵列或矩阵。阵列中的像素点也可以称为像素(pixel/pel)(图像元素的简称)。阵列或图像的水平方向和垂直方向(或轴线)上的像素点数量限定了图像的尺寸和/或分辨率。为了表示颜,通常采用三个颜分量,即图像可以表示为或包括三个像素点阵列。在rgb格式或颜空间中,图像包括对应的红、绿和蓝像素点阵列。但是,在视频译码中,每个像素通常以亮度和度格式或颜空间表示,例如ycbcr,包括y表示的亮度分量(有时也用l表示)以及cb和cr表示的两个度分量。亮度(luminance,简写为luma)分量y表示亮度或灰度级强度(例如在灰度等
级图像中两者相同),而两个度(chrominance,简写为chroma)分量cb和cr表示度或颜信息分量。相应地,ycbcr格式的图像包括亮度像素点值(y)的亮度像素点阵列和度值(cb和cr)的两个度像素点阵列。rgb格式的图像可以转换或变换为ycbcr格式,反之亦然。该过程也称为颜变换或转换。如果图像是黑白的,则该图像可以只包括亮度像素点阵列。相应地,图像可以为例如黑白格式的亮度像素点阵列或4:2:0、4:2:2和4:4:4颜格式的亮度像素点阵列和两个对应的度像素点阵列。
84.在实施例中,视频编码器20可以包括图像分割单元(图2中未示出),用于将图像17分割成多个(通常不重叠)图像块203。这些块也可以称为根块、宏块(h.264/avc),或译码树块(coding tree block,ctb)或译码树单元(coding tree unit,ctu)(h.265/hevc和vvc)。图像分割单元可以用于对视频序列中的所有图像使用相同的块尺寸和使用限定块尺寸的对应网格,或者在图像或图像子集或图像组之间改变块尺寸,并将每个图像分割成对应块。
85.在其它实施例中,视频编码器可以用于直接接收图像17中的块203,例如组成图像17的一个、几个或所有块。图像块203也可以称为当前图像块或待译码图像块。
86.与图像17一样,图像块203同样是或可以视为具有强度值(像素点值)的像素点组成的二维阵列或矩阵,但是图像块203的尺寸比图像17的尺寸小。换句话说,块203可以包括(例如)一个像素点阵列(例如黑白图像17情况下的亮度阵列或者彩图像情况下的亮度阵列或度阵列)或三个像素点阵列(例如彩图像17情况下的一个亮度阵列和两个度阵列)或根据所采用的颜格式的任何其它数量和/或类型的阵列。块203的水平方向和垂直方向(或轴线)上的像素点数量限定了块203的尺寸。相应地,一个块可以为m
×
n(m列
×
n行)个像素点阵列,或m
×
n个变换系数阵列等。
87.在实施例中,图2所示的视频编码器20可以用于逐块对图像17进行编码,例如对每个块203执行编码和预测。
88.残差计算
89.残差计算单元204用于通过如下方式根据图像块203和预测块265(后续详细介绍了预测块265)来计算残差块205(也称为残差205)以得到像素域中的残差块205:例如,逐个像素点(逐个像素)从图像块203的像素点值中减去预测块265的像素点值。
90.变换
91.变换处理单元206可以用于对残差块205的像素点值进行离散余弦变换(discrete cosine transform,dct)或离散正弦变换(discrete sine transform,dst)等变换,得到变换域中的变换系数207。变换系数207也可以称为变换残差系数,表示变换域中的残差块205。
92.变换处理单元206可以用于应用dct/dst的整数近似,例如为h.265/hevc指定的变换。与正交dct变换相比,这种整数近似通常通过某一因子按比例缩放(scale)。为了维持经过正变换和逆变换处理的残差块的范数,使用其它缩放因子作为变换过程的一部分。缩放因子通常是根据某些约束条件来选择的,例如缩放因子是用于移位运算的2的幂、变换系数的位深度、准确性与实现成本之间的权衡等。例如,通过逆变换处理单元212等为逆变换(以及在视频解码器30侧通过逆变换处理单元312等为对应的逆变换)指定具体的缩放因子;相应地,可以在编码器20侧,通过变换处理单元206等为正变换指定对应的缩放因子。
93.在实施例中,视频编码器20(对应地,变换处理单元206)可以用于输出一种或多种
变换的类型等变换参数,例如直接输出或由熵编码单元270进行编码或压缩后输出,使得(例如)视频解码器30可以接收并使用变换参数进行解码。
94.量化
95.量化单元208用于通过标量量化或矢量量化等对变换系数207进行量化,得到量化变换系数209。量化系数209也可以称为量化变换系数209或量化残差系数209。
96.量化过程可以减少与部分或全部变换系数207相关的位深度。例如,可以在量化期间将n位变换系数向下舍入到m位变换系数,其中,n大于m。可以通过调整量化参数(quantization parameter,qp)修改量化程度。例如,对于标量量化,可以应用不同程度的缩放来实现较细或较粗的量化。较小量化步长对应于较细量化,而较大量化步长对应于较粗量化。可以通过量化参数(quantization parameter,qp)表示合适的量化步长。例如,量化参数可以为合适的量化步长的预定义集合的索引。例如,较小的量化参数可以对应于精细量化(较小量化步长),较大的量化参数可以对应于粗糙量化(较大量化步长),反之亦然。量化可以包括除以量化步长,而反量化单元210等执行的对应和/或反解量化可以包括乘以量化步长。根据hevc等一些标准的实施例可以使用量化参数来确定量化步长。一般而言,可以根据量化参数使用包含除法的等式的定点近似来计算量化步长。可以引入其它缩放因子来进行量化和解量化,以恢复可能由于在量化步长和量化参数的等式的定点近似中使用的缩放而修改的残差块的范数。在一种示例性实现方式中,可以合并逆变换和解量化的缩放。或者,可以使用自定义量化表,并在码流等中将量化表从编码器通过信号发送到解码器。量化是有损操作,其中,量化步长越大,损耗越大。
97.在实施例中,视频编码器20(对应地,量化单元208)可以用于输出量化参数(quantization parameters,qp),例如直接输出或由熵编码单元270进行编码后输出,使得(例如)视频解码器30可以接收并使用量化参数进行解码。
98.反量化
99.反量化单元210用于对量化系数进行量化单元208的反量化,得到解量化系数211,例如根据或使用与量化单元208相同的量化步长,执行与量化单元208所执行的量化方案相反的反量化方案。解量化系数211也可以称为解量化残差系数211,对应于变换系数207,但是由于量化造成损耗,解量化系数211通常与变换系数不相同。
100.逆变换
101.逆变换处理单元212用于进行变换处理单元206进行的变换的逆变换,例如逆离散余弦变换(discrete cosine transform,dct)或逆离散正弦变换(discrete sine transform,dst),得到像素域中的重建残差块213(或对应的解量化系数213)。重建残差块213也可以称为变换块213。
102.重建
103.重建单元214(例如加法器或求和器214)用于通过如下方式将变换块213(即重建残差块213)添加到预测块265以得到像素域中的重建块215:例如,逐个像素点将重建残差块213的像素点值和预测块265的像素点值相加。
104.滤波
105.环路滤波器单元220(或简称“环路滤波器”220)用于对重建块215进行滤波,得到经过滤波的块221,或一般用于对重建像素点进行滤波,得到经过滤波的像素点。例如,环路
滤波器单元用于顺利进行像素转变或提高视频质量。环路滤波器单元220可以包括一个或多个环路滤波器,例如去块效应滤波器、像素点自适应偏移(sample-adaptive offset,sao)滤波器或者一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loop filter,alf)、锐化或平滑滤波器、协同滤波器,或其任意组合。虽然环路滤波器单元220在图2中示为环内滤波器,但是在其它配置中,环路滤波器单元220可以实现为环后滤波器。经过滤波的块221也可以称为经过滤波的重建块221。
106.在实施例中,视频编码器20(对应地,环路滤波器单元220)可以用于输出环路滤波器参数(例如像素点自适应偏移信息),例如直接输出或由熵编码单元270进行编码后输出,使得(例如)解码器30可以接收并使用相同的环路滤波器参数或相应的环路滤波器进行解码。
107.解码图像缓冲器
108.解码图像缓冲器(decoded picture buffer,dpb)230可以是存储参考图像或一般存储参考图像数据以供视频编码器20在对视频数据进行编码时使用的存储器。dpb 230可以由多种存储器设备中的任一种形成,例如动态随机存取存储器(dynamic random access memory,dram),包括同步dram(synchronous dram,sdram)、磁阻ram(magnetoresistive ram,mram)、电阻ram(resistive ram,rram)或其它类型的存储器设备。解码图像缓冲器(decoded picture buffer,dpb)230可以用于存储一个或多个经过滤波的块221。解码图像缓冲器230还可以用于存储同一个当前图像或不同图像(例如先前的重建图像)中的其它先前经过滤波的块(例如先前经过滤波的重建块221),并可以提供先前完整的重建(即解码)图像(和对应的参考块和像素点)和/或部分重建的当前图像(和对应的参考块和像素点),以进行帧间预测等。如果重建块215未由环路滤波器单元220进行滤波,则解码图像缓冲器(decoded picture buffer,dpb)230还可以用于存储一个或多个未经滤波的重建块215,或一般存储未经滤波的重建像素点,或未进行任何其它处理的重建块或重建像素点。
109.模式选择(分割和预测)
110.模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,并且用于从解码图像缓冲器230或其它缓冲器(例如行缓冲器,图中未示出)接收或获取原始块203(当前图像17中的当前块203)等原始图像数据以及重建图像数据(例如同一个(当前)图像和/或一个或多个先前的解码图像中的经过滤波和/或未经滤波的重建像素点或块)。重建图像数据用作帧间预测或帧内预测等预测所需的参考图像数据,得到预测块265或预测值265。
111.模式选择单元260可以用于为当前块预测模式(包括不分割)确定或选择一种分割以及确定或选择一种预测模式(例如帧内预测模式或帧间预测模式),生成对应的预测块265,以对残差块205进行计算和对重建块215进行重建。
112.在实施例中,模式选择单元260可以用于选择分割和预测模式(例如从模式选择单元260支持的或可用的预测模式中选择),所述预测模式提供最佳匹配或者说最小残差(最小残差是指传输或存储中更好的压缩),或者提供最小信令开销(最小信令开销是指传输或存储中更好的压缩),或者同时考虑或平衡以上两者。模式选择单元260可以用于根据率失真优化(rate distortion optimization,rdo)确定分割和预测模式,即选择提供最小率失真的预测模式。本文中的“最佳”、“最小”、“最优”等术语不一定指总体上“最佳”、“最小”、“最优”等,但也可以指满足终止或选择标准的情况,例如,超过或低于阈值的值或其它约束条件可能导致“次优选择”,但会降低复杂度且减少处理时域。
113.换句话说,分割单元262可以用于通过如下方式将块203分割成较小的块分割部分或子块(再次形成块):例如,通过迭代使用四叉树(quad-tree,qt)分割、二叉树(binary-tree,bt)分割或三叉树(triple-tree,tt)分割或其任意组合,并且用于(例如)对块分割部分或子块中的每一个执行预测,其中,模式选择包括选择分割块203的树结构和选择块分割部分或子块中的每一个所使用的预测模式。
114.下文将详细地描述由示例性视频编码器20执行的分割(例如由分割单元260执行)和预测处理(由帧间预测单元244和帧内预测单元254执行)。
115.分割
116.分割单元262可以将当前块203分割(或划分)成更小的分割部分,例如正方形或矩形尺寸的较小块。可以将这些较小块(也可以称为子块)进一步分割成甚至更小的分割部分。这也称为树分割或分层树分割。在根树级别0(层次级别0、深度0)等的根块可以递归地分割成两个或更多下一个较低树级别的块,例如树级别1(层级级别1、深度1)的节点。这些块可以又分割成两个或更多下一个较低级别的块,例如树级别2(层级级别2、深度2)等,直到分割结束(因为满足结束标准,例如达到最大树深度或最小块尺寸)。未进一步分割的块也称为树的叶块或叶节点。分割成两个分割部分的树称为二叉树(binary-tree,bt),分割成3个分割部分的树称为三叉树(ternary-tree,tt),分割成4个分割部分的树称为四叉树(quad-tree,qt)。
117.如上所述,本文使用的术语“块”可以是图像的一部分,特别是正方形或矩形部分。例如,参照hevc和vvc,块可以为或可以对应于译码树单元(coding tree unit,ctu)、译码单元(coding unit,cu)、预测单元(prediction unit,pu)和变换单元(transform unit,tu)和/或对应的块,例如译码树块(coding tree block,ctb)、译码块(coding block,cb)、变换块(transform block,tb)或预测块(prediction block,pb)。
118.例如,译码树单元(coding tree unit,ctu)可以为或可以包括具有3个像素点阵列的图像中的亮度像素点的一个ctb、该图像中的度像素点的两个对应ctb,或者黑白图像中的或使用3个单独颜平面和语法结构进行译码的图像中的像素点的一个ctb。这些语法结构用于对像素点进行译码。相应地,译码树块(coding tree block,ctb)可以为n
×
n个像素点块,其中,n可以设为某个值,使得一个分量划分为ctb,这就是分割。译码单元(coding unit,cu)可以为或可以包括具有3个像素点阵列的图像中的亮度像素点的一个译码块、该图像中的度像素点的两个对应译码块,或者黑白图像中的或使用3个单独颜平面和语法结构进行译码的图像中的像素点的一个译码块。这些语法结构用于对像素点进行译码。相应地,译码块(coding block,cb)可以为m
×
n个像素点块,其中,m和n可以设为某个值,使得一个ctb划分为译码块,这就是分割。
119.在实施例中,例如根据hevc,可以使用表示为译码树的四叉树结构将译码树单元(coding tree unit,ctu)划分为多个cu。在cu级决定是否使用帧间(时域)预测或帧内(空间)预测对图像区域进行译码。每个cu可以根据pu划分类型进一步划分为一个、两个或4个pu。一个pu内执行相同的预测过程,并以pu为单位向解码器发送相关信息。在根据pu划分类型执行预测过程得到残差块之后,可以根据类似于用于cu的译码树的其它四叉树结构将cu
分割成变换单元(transform unit,tu)。
120.在实施例中,例如根据当前开发的最新视频译码标准(称为通用视频译码(versatile video coding,vvc)),使用四叉树结合二叉树(quad-tree and binary-tree,qtbt)分割来分割译码块。在qtbt块结构中,一个cu可以为正方形或矩形。例如,译码树单元(coding tree unit,ctu)首先通过四叉树结构进行分割。四叉树叶节点进一步通过二叉树或三叉(ternary/triple)树结构进行分割。分割树叶节点称为译码单元(coding unit,cu),这样的分段用于预测和变换处理,无需任何进一步分割。这表示在qtbt译码块结构中,cu、pu和tu的块尺寸相同。与此同时,还提出将三叉树分割等多重分割与qtbt块结构一起使用。
121.在一个示例中,视频编码器20中的模式选择单元260可以用于执行本文描述的分割技术的任意组合。
122.如上所述,视频编码器20用于从(预定的)预测模式集合中确定或选择最佳或最优的预测模式。预测模式集合可以包括帧内预测模式和/或帧间预测模式等。
123.帧内预测
124.帧内预测模式集合可以包括35种不同的帧内预测模式,例如像dc(或均值)模式和平面模式的非方向性模式或者如hevc中定义的方向性模式,或可以包括67种不同的帧内预测模式,例如像dc(或均值)模式和平面模式的非方向性模式或者如vvc中定义的方向性模式。
125.帧内预测单元254用于根据帧内预测模式集合中的帧内预测模式,使用同一个当前图像中的相邻块的重建像素点来生成帧内预测块265。
126.帧内预测单元254(或总称为模式选择单元260)还用于将帧内预测参数(或总称为表示块的选定帧内预测模式的信息)以语法元素266的形式输出到熵编码单元270,以包含到经编码的图像数据21中,使得(例如)视频解码器30可以接收并使用预测参数进行解码。
127.帧间预测
128.(可能的)帧间预测模式集合取决于可用参考图像(即(例如)前述存储在dpb 230中的至少部分经过解码的图像)和其它帧间预测参数,例如取决于是否使用整个参考图像或只使用参考图像的一部分(例如当前块的区域周围的搜索窗口区域)来搜索最佳匹配参考块,和/或例如取决于是否执行像素插值(例如二分之一/半像素插值和/或四分之一像素插值)。
129.除上述预测模式外,还可以使用跳过模式和/或直接模式。
130.帧间预测单元244可以包括运动估计(motion estimation,me)单元和运动补偿(motion compensation,mc)单元(两者在图2中未示出)。运动估计单元可以用于接收或获取图像块203(当前图像17中的当前图像块203)和解码图像231,或者至少一个或多个先前的重建块(例如一个或多个其它/不同先前的解码图像231中的重建块),以进行运动估计。例如,视频序列可以包括当前图像和先前解码图像231,或换句话说,当前图像和先前解码图像231可以为组成视频序列中的图像序列的一部分或组成该图像序列。
131.例如,编码器20可以用于从多个其它图像中的同一个或不同图像的多个参考块中选择一个参考块,并将参考图像(或参考图像索引)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移(空间偏移)作为帧间预测参数提供给运动估计单元。这种偏移也称
为运动矢量(motion vector,mv)。
132.运动补偿单元用于获取(例如接收)帧间预测参数,并根据或使用帧间预测参数执行帧间预测,得到帧间预测块265。由运动补偿单元执行的运动补偿可以包括根据通过运动估计确定的运动/块矢量来提取或生成预测块,还可以包括对子像素精度执行插值。插值滤波可以根据已知像素的像素点生成其它像素的像素点,从而潜在地增加可以用于对图像块进行译码的候选预测块的数量。一旦接收到当前图像块对应的pu的运动矢量时,运动补偿单元可以在其中一个参考图像列表中定位运动矢量指向的预测块。
133.运动补偿单元还可以生成与块和视频条带(slice)相关的语法元素,以供视频解码器30在解码视频条带的图像块时使用。
134.熵译码
135.熵编码单元270用于将熵编码算法或方案(例如可变长度译码(variable length coding,vlc)方案、上下文自适应vlc(context adaptive vlc scheme,cavlc)方案、算术译码方案、二值化,上下文自适应二进制算术译码(context adaptive binary arithmetic coding,cabac)、基于语法的上下文自适应二进制算术译码(syntax-based context-adaptive binary arithmetic coding,sbac)、概率区间分割熵(probability interval partitioning entropy,pipe)译码或其它熵编码方法或技术)等应用于或不应用于(无压缩)量化系数209、帧间预测参数、帧内预测参数、环路滤波器参数和/或其它语法元素,得到可以通过输出端272以经编码的码流21等形式输出的经编码的图像数据21,使得(例如)视频解码器30可以接收并使用这些参数进行解码。可以将经编码的码流21发送到视频解码器30,或者将其存储在存储器中稍后由视频解码器30发送或检索。
136.视频编码器20的其它结构变型可以用于对视频流进行编码。例如,基于非变换的编码器20可以在某些块或帧没有变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,编码器20可以包括组合成单个单元的量化单元208和反量化单元210。
137.解码器和解码方法
138.图3示出了用于实现本技术技术的视频解码器30的一个示例。视频解码器30用于接收(例如)由编码器20编码的经编码的图像数据21(例如经编码的码流21),得到解码图像331。经编码的图像数据或码流包括用于解码该经编码的图像数据的信息,例如表示经编码的视频条带中的图像块的数据和相关的语法元素。
139.在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如求和器314)、环路滤波器320、解码图像缓冲器(decoded picture buffer,dpb)330、帧间预测单元344和帧内预测单元354。帧间预测单元344可以为或可以包括运动补偿单元。在一些示例中,视频解码器30可以执行大体上与参照图2中的视频编码器100描述的编码回合互逆的解码回合。
140.如参照编码器20所述,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,dpb)230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。相应地,反量化单元310在功能上可以与反量化单元110相同,逆变换处理单元312在功能上可以与逆变换处理单元212相同,重建单元314在功能上可以与重建单元214相同,环路滤波器320在功能上可以与环路滤波器220相同,解码图像缓冲器330在功能上可以与解码图像缓冲器230相同。因此,视频编码器20的相
应单元和功能的解释相应地适用于视频解码器30的相应单元和功能。
141.熵解码
142.熵解码单元304用于解析码流21(或一般为经编码的图像数据21)并对经编码的图像数据21执行熵解码等,得到量化系数309和/或解码译码参数(图3中未示出)等,例如帧间预测参数(例如参考图像索引和运动矢量)、帧内预测参数(例如帧内预测模式或索引)、变换参数、量化参数、环路滤波器参数和/或其它语法元素中的任一个或全部。熵解码单元304可以用于应用与参照编码器20中的熵编码单元270描述的编码方案对应的解码算法或方案。熵解码单元304还可以用于向模式选择单元360提供帧间预测参数、帧内预测参数和/或其它语法元素,以及向解码器30的其它单元提供其它参数。视频解码器30可以接收视频条带级和/或视频块级的语法元素。
143.反量化
144.反量化单元310可以用于从经编码的图像数据21(例如通过熵解码单元304等解析和/或解码)接收量化参数(quantization parameters,qp)(或一般为与反量化相关的信息)和量化系数,并根据这些量化参数对解码量化系数309进行反量化,得到解量化系数311。解量化系数311也可以称为变换系数311。反量化过程可以包括使用视频编码器20对视频条带中的每个视频块确定的量化参数来确定量化程度,同样也确定需要进行的反量化的程度。
145.逆变换
146.逆变换处理单元312可以用于接收解量化系数311(也称为变换系数311),并对解量化系数311进行变换,得到像素域中的重建残差块213。重建残差块213也可以称为变换块313。变换可以为逆变换,例如逆dct、逆dst、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从经编码的图像数据21(例如通过熵解码单元304等解析和/或解码)接收变换参数或相应的信息,以确定要对解量化系数311进行的变换。
147.重建
148.重建单元314(例如加法器或求和器314)可以用于通过如下方式将重建残差块313添加到预测块365以得到像素域中的重建块315:例如,将重建残差块313中的像素点值和预测块365中的像素点值相加。
149.滤波
150.环路滤波器单元320(在译码环路中或之后)用于对重建块315进行滤波,得到经过滤波的块321,从而顺利进行像素转变或提高视频质量等。环路滤波器单元320可以包括一个或多个环路滤波器,例如去块效应滤波器、像素点自适应偏移(sample-adaptive offset,sao)滤波器或者一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loop filter,alf)、锐化或平滑滤波器、协同滤波器,或其任意组合。虽然环路滤波器单元320在图3中示为环内滤波器,但是在其它配置中,环路滤波器单元320可以实现为环后滤波器。
151.解码图像缓冲器
152.随后将一个图像中的解码视频块321存储在解码图像缓冲器330中,解码图像缓冲器330存储作为参考图像的解码图像331,后续对其它图像进行运动补偿和/或输出或显示。
153.解码器30用于通过输出端312等输出解码图像311,向用户显示或供用户查看。
154.预测
155.帧间预测单元344可以与帧间预测单元244(特别是与运动补偿单元)相同,帧内预测单元354在功能上可以与帧内预测单元254相同,并根据从经编码的图像数据21(例如通过熵解码单元304等解析和/或解码)接收的分割和/或预测参数或相应的信息来决定划分或分割和执行预测。模式选择单元360可以用于根据重建图像、块或相应的像素点(经过滤波或未经滤波)执行每个块的预测(帧内预测或帧间预测),得到预测块365。
156.当将视频条带译码为经帧内译码(i)条带时,模式选择单元360中的帧内预测单元354用于根据指示(signal)的帧内预测模式和来自当前图像中的先前解码块的数据生成用于当前视频条带的图像块的预测块365。当视频图像译码为经帧间译码(b或p)条带时,模式选择单元360中的帧间预测单元344(例如运动补偿单元)用于根据运动矢量和从熵解码单元304接收的其它语法元素生成用于当前视频条带的视频块的预测块365。对于帧间预测,可以根据其中一个参考图像列表内的其中一个参考图像产生这些预测块。视频解码器30可以根据存储在dpb 330中的参考图像,使用默认构建技术来构建参考帧列表0和列表1。
157.模式选择单元360用于通过解析运动矢量和其它语法元素,确定当前视频条带的视频块的预测信息,并使用预测信息产生用于正在解码的当前视频块的预测块。例如,模式选择单元360使用接收到的一些语法元素确定用于对视频条带的视频块进行译码的预测模式(例如帧内预测或帧间预测)、帧间预测条带类型(例如b条带、p条带或gpb条带)、用于条带的一个或多个参考图像列表的构建信息、用于条带的每个经帧间编码的视频块的运动矢量、用于条带的每个经帧间译码的视频块的帧间预测状态,以及其它信息,以对当前视频条带中的视频块进行解码。
158.视频解码器30的其它变型可以用于对经编码的图像数据21进行解码。例如,解码器30可以在没有环路滤波器单元320的情况下产生输出视频流。例如,基于非变换的解码器30可以在某些块或帧没有逆变换处理单元312的情况下直接对残差信号进行反量化。在另一种实现方式中,视频解码器30可以包括组合成单个单元的反量化单元310和逆变换处理单元312。
159.应理解,在编码器20和解码器30中,可以对当前步骤的处理结果做进一步处理,然后输出到下一步骤。例如,在插值滤波、运动矢量推导或环路滤波之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进行进一步运算,例如修正(clip)或移位(shift)运算。
160.需要说明的是,可以对当前块的推导运动矢量(包括但不限于仿射模式的控制点运动矢量,仿射模式、平面模式、atmvp模式的子块运动矢量,时域运动矢量等)进行进一步运算。例如,根据运动矢量的表示位将运动矢量的值限制在预定义范围。如果运动矢量的表示位为bitdepth,则范围为
–
2^(bitdepth
–
1)~2^(bitdepth
–
1)
–
1,其中,“^”表示幂次方。例如,如果bitdepth设置为16,则范围为
–
32768~32767;如果bitdepth设置为18,则范围为
–
131072~131071。这里提供了两种根据bitdepth来限制运动矢量的方法。
161.方法1:通过平滑操作来去除溢出的最高有效位(most significant bit,msb)
162.ux=(mvx+2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
163.mvx=(ux≥2
bitdepth
–1)?(ux
–2bitdepth
):ux
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
164.uy=(mvy+2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
165.mvy=(uy≥2
bitdepth
–1)?(uy
–2bitdepth
):uy
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
166.例如,如果mvx的值为
–
32769,则使用公式(1)和(2)之后得到的值为32767。在计算机系统中,以二进制补码的形式存储十进数。
–
32769的二进制补码为1,0111,1111,1111,1111(17位),这时丢弃msb,那么得到的二进制补码为0111,1111,1111,1111(十进数为32767),这与使用公式(1)和(2)之后得到的输出结果相同。
167.ux=(mvpx+mvdx+2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
168.mvx=(ux≥2
bitdepth-1
)?(ux
–2bitdepth
):ux
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
169.uy=(mvpy+mvdy+2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
170.mvy=(uy≥2
bitdepth
–1)?(uy
–2bitdepth
):uy
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
171.这些运算可以在对mvp和mvd求和的过程中执行,如公式(5)至(8)所示。
172.方法2:对值进行修正来去除溢出的msb
173.vx=clip3(
–2bitdepth
–1,2
bitdepth
–1–
1,vx)
174.vy=clip3(
–2bitdepth
–1,2
bitdepth
–1–
1,vy)
175.其中,函数clip3的定义如下:
[0176][0177]
图4为本发明实施例提供的视频译码设备400的示意图。视频译码设备400适用于实现本文描述的公开实施例。在一个实施例中,视频译码设备400可以是解码器(例如图1a中的视频解码器30)或编码器(例如图1a中的视频编码器20)。
[0178]
视频译码设备400包括:用于接收数据的入端口410(或输入端口410)和接收单元(rx)420;用于处理所述数据的处理器、逻辑单元或中央处理器(central processing unit,cpu)430;用于发送所述数据的发送单元(tx)440和出端口450(或输出端口450);用于存储所述数据的存储器460。视频译码设备400还可以包括与入端口410、接收单元420、发送单元440和出端口450耦合的光电(optical-to-electrical,oe)组件和电光(electrical-to-optical,eo)组件,用作光信号或电信号的出口或入口。
[0179]
处理器430通过硬件和软件实现。处理器430可以实现为一个或多个cpu芯片、一个或多个核(例如多核处理器)、一个或多个fpga、一个或多个asic和一个或多个dsp。处理器430与入端口410、接收单元420、发送单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上文描述的公开实施例。例如,译码模块470执行、处理、准备或提供各种译码操作。因此,将译码模块470包含在内为视频译码设备400的功能提供了实质性的改进,并且影响了视频译码设备400到不同状态的转换。或者,以存储在存储器460中并由处理器430执行的指令来实现译码模块470。
[0180]
存储器460可以包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令和数据。例如,存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、三态内容寻址存储器(ternary content-addressable memory,tcam)和/或静态随机存取存储器(static random-access memory,sram)。
[0181]
图5为示例性实施例提供的装置500的简化框图。装置500可以用作图1的源设备12
和目的地设备14中的任一个或两个。
[0182]
装置500中的处理器502可以是中央处理器。或者,处理器502可以是现有的或今后将研发出的能够操控或处理信息的任何其它类型的设备或多个设备。虽然可以使用如图所示的处理器502等单个处理器来实施所公开的实现方式,但使用多个处理器可以提高速度和效率。
[0183]
在一种实现方式中,装置500中的存储器504可以是只读存储器(read only memory,rom)设备或随机存取存储器(random access memory,ram)设备。任何其它合适类型的存储设备都可以用作存储器504。存储器504可以包括处理器502通过总线512访问的代码和数据506。存储器504还可以包括操作系统508和应用程序510,应用程序510包括至少一个程序,这个程序使得处理器502执行本文所述方法。例如,应用程序510可以包括应用1至应用n,还包括执行本文所述方法的视频译码应用。
[0184]
装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是将显示器与触敏元件组合的触敏显示器,该触敏元件能够用于感测触摸输入。显示器518可以通过总线512与处理器502耦合。
[0185]
虽然装置500的总线512在这里示为单个总线,但是总线512可以有多个。此外,辅助存储器514可以直接与装置500中的其它组件耦合或可以通过网络被访问,并且可以包括单个集成单元(例如一个存储卡)或多个单元(例如多个存储卡)。因此,装置500可以具有各种各样的构造。
[0186]
在仿射预测过程中计算运动矢量的中间值,由此推导的mv的精度从像素长度的1/4提高到1/16。这样提高精度,导致每个运动矢量分量的运动矢量场需要的存储容量高达18位。在视频编解码器开发过程中,每个mv以4
×
4像素粒度进行存储。后来,很少尝试减少存储运动矢量信息所需的内存容量。其中一个方案是将粒度减少到网格尺寸8
×
8。[jvet-l0168]中试图降低mv精度(为了临时mv存储或本地行缓冲器或临时mv存储和本地行缓冲器)的另一种方案是:简单地从运动矢量分量值中去除最高有效位(most significant bit,msb),这导致mv表示范围缩小,进而会降低大图像和360
°
视频的预测和压缩效率。精度为1/16的运动矢量使用16位表示,这对于8k或更高分辨率的视频译码来说是不够的。另外两种技术方案提出从水平和垂直两个方向的mv分量中去除lsb,这是为了自适应性地去除msb/lsb,同时使用其它1位进行指示(signaling)。
[0187]
本发明的目的是提供一种技术方案/方法和设备,可以减少存储用于推导时域运动矢量预测的信息所需的内存容量,同时将运动矢量表示和精度保持在合理范围内。将精度保持在合理范围内表示在一定程度上降低精度,导致有一定程度的表示失真。因此,转换为浮点表示的结果是mv的失真/量化/取整值。
[0188]
当前可用的技术方案使用每个mv分量的18位值存储在参考帧中(图6的上部分)。这样导致存储mv所需的内存增加,硬件方面增加12.5%,软件方面增加100%。本发明提出使用mv分量值的16位而不是18位二进制浮点表示存储在参考帧中。然而,16位浮点表示是一个示例,本发明还包括小于16位的表示(例如10位表示)。此外,在将msb用作浮点数的指数部分的实施例1中,当图像分辨率较小时,编解码器处理相对于当前技术方案没有变化。
[0189]
本发明的基本概念是使用mv分量值的16位而不是18位二进制浮点表示存储在参考帧中。
[0190]
目的是减少存储时域mv所需的内存容量,同时将mv表示和精度保持在合理范围内。
[0191]
为了解决上述问题,公开了以下发明方面,其中,每个发明方面可以单独应用,而其中一些发明方案可以组合使用。
[0192]
1.使用mv分量的二进制浮点表示
[0193]
方法a指数部分可以为3位,这样mv表示可以具有不同的精度,即从1/16(在mv长度高达256个像素的情况下)到8个像素(在mv长度高达32k个像素的情况下)。
[0194]
方法b另一种可能的实现方式是:指数部分为2位,这将位最大mv长度减少到512个像素(在mv精度为1/16的情况下)和8k个像素(在mv精度等于1个像素的情况下)。
[0195]
2.二进制浮点表示可以在两种可能的实现方式中表示(在示例中使用3位来表示指数):
[0196]
方法a图6所示的mv分量值的msb中的指数位,执行以下mv恢复步骤(以x分量为例):
[0197]
i.shift=mvx》》13
[0198]
ii.mvx=mvx&0x01fff
[0199]
iii.mvx《《=shift
[0200]
方法b图7所示的mv分量值的lsb中的指数位,执行以下mv恢复步骤(以x分量为例):
[0201]
i.shift=mvx&0x03
[0202]
ii.mvx=mvx》》3
[0203]
iii.mvx《《=shift
[0204]
3.所提供的方法可以有条件地使用,即通过以下内容指示在sps/pps/条带头/分块组头中使用这种模式:
[0205]
方法a特殊标志,用于指示使用mv的浮点表示或hevc 16位表示;
[0206]
方法b mv值中的指数部分的位数。
[0207]
4.根据以下因素自适应性地改变指数的尺寸:
[0208]
方法a图像分辨率:
[0209]
i.如果w《2k且h《2k,则推导exp_size为0(不指示)
[0210]
ii.如果w《4k且h《4k,则指示1位移位值
[0211]
iii.否则,指示2位移位值
[0212]
方法b在ctu/cu/块/单元级指示指数尺寸:
[0213]
方法c在运动约束分块集(motion constrained tile set,mcts)内使用浮点mv表示
[0214]
i.在这种情况下,分块集尺寸会极大限制在分块集的分辨率较小时使用浮点mv表示,与本发明的第4).a方面类似。
[0215]
5.mv的垂直和水平分量的指数部分可以有独立的尺寸。
[0216]
6.其中一种可能的技术方案是:从每个mv的相同分量的值中去除矢量分量的均值(meanmvx,meanmvy),每个mv属于同一个ctu/cu/块/单元:
[0217]
方法a每个ctu/cu/块/单元分别存储两个分量的均值。将mv推导为mvx=meanmvx+
mvx(i,j),mvy=meanmvy+mvy(i,j)
[0218]
方法b将两个分量的均值存储在每个ctu/cu/块/单元的一个子单元中(左上角,例如i=0,j=0)。当i!=0且j!=0,meanmvx=mvx(0,0),meanmvy=mvy(0,0)时,将mv推导为mvx=meanmvx+mvx(i,j),mvy=meanmvy+mvy(i,j)
[0219]
方法c上述两种技术方案(6).a和6).b)中的meanmvx和meanmvy表示如下:
[0220]
i.二进制浮点16位(与技术方案1).a一样)
[0221]
ii.整数(16位)
[0222]
此外,本发明提出使用mv分量值的16位而不是18位二进制表示存储在参考帧中,其中,通过去除2个最低有效位(least significant bit,lsb)或2个最高有效位(most significant bit,msb)(取决于码流中指示的值)从18位值中获取16位值。上述指示可以通过[jvet-l0168]中描述的预定义指示机制进行。
[0223]
目的是减少存储时域mv所需的内存容量,同时将mv表示和精度保持在合理范围内。
[0224]
为了解决上述问题,公开了以下发明性方面,其中,每个发明性方面可以单独应用,而其中一些发明性方案可以组合应用。
[0225]
7.在将mv保存到运动缓冲器之前,根据码流中指示的值使用以下其中一种方法,将mv分量从18位二进制表示转换为16位表示:
[0226]
方法a通过向右算术移动2位,去除两个lsb(如图8所示)
[0227]
方法b去除两个msb(例如,通过修正到范围[-2
15
,2
15
–
1])(如图9所示)。
[0228]
根据以下规则恢复mv分量(从16位二进制表示转换为18位二进制表示):
[0229]
·
如果使用的是方法a,则将16位值向左算术移动2位,得到18位值;
[0230]
·
如果使用的是方法b,则将16位值中的2个msb(第17位和第18位)设置为0(正值的情况)或1(负值的情况),得到18位值。
[0231]
8.根据第七方面,不使用16位二进制表示来存储当前图像的运动信息。在这种情况下,使用16位二进制表示的mv,例如进行时域运动矢量预测(temporal motion vector prediction,tmvp)和/或可选时域运动矢量预测(alternative temporal motion vector prediction,atmvp)。
[0232]
9.根据第八方面,在每个帧的码流中指示从mv分量的18位二进制表示转换为16位二进制表示的方法(方法a或方法b)。
[0233]
10.根据第八方面,在每个分块的码流中指示从mv分量的18位二进制表示转换为16位二进制表示的方法(方法a或方法b)。
[0234]
11.根据第八方面,在每个分块组的码流中指示从mv分量的18位二进制表示转换为16位二进制表示的方法(方法a或方法b)。
[0235]
12.根据第八方面,在每个条带的码流中指示从mv分量的18位二进制表示转换为16位二进制表示的方法(方法a或方法b)。
[0236]
13.根据第七至第十二方面,使用特殊标志在sps/pps/条带头/分块组头中指示18位到16位转换方法(方法a或方法b)。
[0237]
14.根据第七和第八方面,根据以下因素自适应性地选择从mv分量的18位二进制表示转换到16位二进制表示的方法:
[0238]
a.图像分辨率:
[0239]
i.如果w《2k,且h《2k,则使用方法b(无需指示)
[0240]
ii.否则,不管使用方法a还是方法b,指示1位。
[0241]
b.在ctu/cu/块/单元中指示转换方法
[0242]
c.在运动约束分块集(motion constrained tile set,mcts)内使用浮点mv表示
[0243]
i.在这种情况下,分块集尺寸会极大限制在分块集分辨率较小时使用方法b
[0244]
15.mv的垂直和水平分量可以具有不同的指示方法。
[0245]
图10为本发明提供的通用运动矢量压缩方法的流程图。所述方法包括:步骤101,获取时域运动矢量;步骤102,使用所述时域运动矢量的二进制表示来确定压缩运动矢量,其中,所述二进制表示包括指数部分和/或尾数部分,所述指数部分包括n位,所述尾数部分包括m位,n为非负整数,m为正整数;步骤103,使用所述压缩运动矢量来执行时域运动矢量预测(temporal motion vector prediction,tmvp)。
[0246]
尽管本技术实施例主要根据视频译码进行了描述,但需要说明的是,译码系统10、编码器20和解码器30(相应地,系统10)的实施例以及本文描述的其它实施例也可以用于静止图像处理或译码,即对视频译码中独立于任何先前或连续图像的单个图像进行处理或译码。一般而言,如果图像处理译码仅限于单个图像17,则只有帧间预测单元244(编码器)和344(解码器)不可用。视频编码器20和视频解码器30的所有其它功能(也称为工具或技术)同样可以用于静止图像处理,例如残差计算204/304、变换206、量化208、反量化210/310、(逆)变换212/312、分割262/362、帧内预测254/354和/或环路滤波220/320、熵译码270和熵解码304。
[0247]
例如,编码器20和解码器30的实施例以及本文中描述的功能(例如参照编码器20和解码器30)可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则各种功能可以作为一个或多个指令或代码存储在计算机可读介质中或通过通信介质发送,且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,对应于有形介质(例如数据存储介质),或者包括任何根据通信协议等促进将计算机程序从一个地方传递到另一个地方的通信介质。通过这种方式,计算机可读介质一般可以对应于(1)非瞬时性的有形计算机可读存储介质或(2)信号或载波等通信介质。数据存储介质可以是通过一个或多个计算机或一个或多个处理器访问的任何可用介质,以检索用于实施本发明所述技术的指令、代码和/或数据结构。计算机程序产品可以包括计算机可读介质。
[0248]
作为示例而非限制,这类计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存或可以用于存储指令或数据结构形式的所需程序代码并且可以由计算机访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴缆线、光纤缆线、双绞线、数字用户线(digital subscriber line,dsl)或红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,则同轴缆线、光纤缆线、双绞线、dsl或红外线、无线电和微波等无线技术包含在介质的定义中。但是,应理解,计算机可读存储介质和数据存储介质并不包括连接、载波、信号或其它瞬时性介质,而是涉及非瞬时性有形存储介质。本文所使用的磁盘和光盘包含压缩光盘(compact disc,cd)、激光光盘、光学光盘、数字多功能光盘(digital versatile disc,dvd)和蓝光光盘,其中,磁盘通常以磁性方式再现数据,而光盘利用激光
以光学方式再现数据。以上各项的组合也应包括在计算机可读介质的范围内。
[0249]
可以通过一个或多个数字信号处理器(digitalsignalprocessor,dsp)、一个或多个通用微处理器、一个或多个专用集成电路(applicationspecificintegratedcircuit,asic)、一个或多个现场可编程逻辑阵列(fieldprogrammablelogicarray,fpga)或其它同等集成或离散逻辑电路等一或多个处理器来执行指令。因此,本文所使用的术语“处理器”可以指上述结构中的任一种或适于实施本文所述技术的任何其它结构。另外,在一些方面中,本文描述的各种功能可以提供在用于编码和解码的专用硬件和/或软件模块内,或者并入在组合译码器中。而且,这些技术可以在一个或多个电路或逻辑元件中完全实现。
[0250]
本发明技术可以在多种设备或装置中实现,这些设备或装置包括无线手机、集成电路(integratedcircuit,ic)或一组ic(例如芯片组)。本发明描述了各种组件、模块或单元,以强调用于执行所公开技术的设备的功能方面,但未必需要由不同的硬件单元实现。相反,如上所述,各种单元可以结合合适的软件和/或固件组合在译码器硬件单元中,或者通过包括如上所述的一个或多个处理器的互操作硬件单元的集合来提供。
[0251]
作为参考,以下逻辑运算符定义如下:
[0252]
x&&yx和y的布尔逻辑“与”运算
[0253]
x||yx和y的布尔逻辑“或”运算
[0254]
!布尔逻辑“非”运算
[0255]
x?y:z如果x为真(true)或不等于0,则求y的值,否则,求z的值。
[0256]
作为参考,以下关系运算符定义如下:
[0257]
》大于
[0258]
≥大于或等于
[0259]
《小于
[0260]
≤小于或等于
[0261]
==等于
[0262]
!=不等于
[0263]
当一个关系运算符应用于一个已被赋值“na”(不适用)的语法元素或变量时,值“na”被视为该语法元素或变量的不同值。值“na”被视为不等于任何其它值。
[0264]
作为参考,以下按位运算符定义如下:
[0265]
&按位“与”。当对整数参数运算时,运算的是整数值的补码表示。当对二进制参数运算时,如果它包括的位比另一个参数少,则通过添加更多等于0的有效位来扩展较短的参数。
[0266]
|按位“或”。当对整数参数运算时,运算的是整数值的补码表示。当对二进制参数运算时,如果它包括的位比另一个参数少,则通过添加更多等于0的有效位来扩展较短的参数。
[0267]
^按位“异或”。当对整数参数运算时,运算的是整数值的补码表示。当对二进制参数运算时,如果它包括的位比另一个参数少,则通过添加更多等于0的有效位来扩展较短的参数。
[0268]
x》》yx的补码整数表示向右算术移动y个二进制位。只有y为非负整数值时才有这
个函数定义。右移的结果是移进最高有效位(most significant bit,msb)的比特位等于移位操作之前的x的msb。
[0269]
x《《y x的补码整数表示向左算术移动y个二进制位。只有y为非负整数值时才有这个函数定义。左移的结果是移进最低有效位(least significant bit,lsb)的比特位应该等于移位操作之前的x的lsb。
[0270]
总之,本发明提供一种运动矢量压缩方法。所述运动矢量压缩方法包括:获取时域运动矢量;使用时域运动矢量的二进制表示来确定压缩运动矢量,其中,所述时域运动矢量包括指数部分和/或尾数部分,所述指数部分包括n位,所述尾数部分包括m位,n为非负整数,m为正整数;使用所述压缩运动矢量来执行时域运动矢量预测(temporal motion vector prediction,tmvp)。
技术特征:
1.一种运动矢量压缩方法,其特征在于,所述运动矢量压缩方法包括:获取时域运动矢量,所述时域运动矢量包括运动矢量水平分量和运动矢量垂直分量;使用所述时域运动矢量的二进制表示来确定压缩运动矢量,其中,所述时域运动矢量的二进制表示包括指数部分和/或尾数部分,所述指数部分包括n位,所述尾数部分包括m位,n为非负整数,m为正整数。2.根据权利要求1所述的运动矢量压缩方法,其特征在于,所述指数部分对应于所述二进制表示的一个或多个最高有效位(most significant bit,msb),所述尾数部分对应于所述二进制表示的一个或多个最低有效位(least significant bit,lsb);或者所述指数部分对应于所述二进制表示的一个或多个lsb,所述尾数部分对应于所述二进制表示的一个或多个msb。3.根据权利要求2所述的运动矢量压缩方法,其特征在于,当所述指数部分对应于所述二进制表示的一个或多个msb,所述尾数部分对应于所述二进制表示的一个或多个lsb时,通过以下步骤推导所述压缩运动矢量的值:通过将所述二进制表示向右移动m位,推导第一移位值;将所述二进制表示的后m位推导为第一基本二进制表示;通过将所述第一基本二进制表示向左移动所述第一移位值,推导所述压缩运动矢量的值。4.根据权利要求2所述的运动矢量压缩方法,其特征在于,当所述指数部分对应于所述二进制表示的一个或多个lsb,所述尾数部分对应于所述二进制表示的一个或多个msb时,通过以下步骤推导所述运动矢量分量的值:将所述二进制表示的后n位推导为第二移位值;通过将所述二进制表示向右移动n位,推导第二基本二进制表示;通过将所述第二基本二进制表示向左移动所述第二移位值,推导所述压缩运动矢量的值。5.根据权利要求1至4中任一项所述的运动矢量压缩方法,其特征在于,所述时域运动矢量包括运动矢量水平分量和运动矢量垂直分量。6.一种运动矢量压缩方法,其特征在于,所述运动矢量压缩方法包括:对第一指示符进行译码,其中,所述第一指示符用于指示是否根据权利要求1至5任一项所述的运动矢量压缩方法对所述时域运动矢量进行压缩。7.根据权利要求1至6中任一项所述的运动矢量压缩方法,其特征在于,所述运动矢量压缩方法包括:确定n的值。8.根据权利要求7所述的运动矢量压缩方法,其特征在于,所述确定n的值包括:对所述n的值进行译码;或者将预定值设置为所述n的值;或者根据图像单元的分辨率,推导所述n的值,其中,所述图像单元包括图像或分块集;或者根据译码树单元(coding tree unit,ctu)或译码单元(coding unit,cu)的尺寸,推导所述n的值。
9.根据权利要求8所述的运动矢量压缩方法,其特征在于,所述根据图像单元的分辨率,推导所述n的值包括:当所述图像单元的宽度小于第一阈值,且所述图像单元的高度小于所述第一阈值时,将所述n的值设置为0;或者当所述图像单元的宽度小于第二阈值,且所述图像单元的高度小于所述第二阈值时,对第二指示符进行译码来表示所述n的值;或者对第三指示符进行译码来表示所述n的值。10.根据权利要求9所述的运动矢量压缩方法,其特征在于,所述第二指示符使用1位的二值化表示,所述第三指示符使用2位的二值化表示。11.根据权利要求6至10中任一项所述的运动矢量压缩方法,其特征在于,所述第一指示符、所述第二指示符和/或所述第三指示符包括在码流中的序列参数集(sequence parameter set,sps)、图像参数集(picture parameter set,pps)、条带头或分块组头中。12.一种运动矢量压缩方法,其特征在于,所述运动矢量压缩方法包括:获取时域运动矢量,所述时域运动矢量包括运动矢量水平分量和运动矢量垂直分量;确定所述时域运动矢量的指数部分或尾数部分;根据所述时域运动矢量的指数部分或尾数部分,执行至少一次移位运算,得到压缩运动矢量。13.根据权利要求1至12任一项所述的方法,其特征在于,还包括:对所述时域运动矢量的信息进行编码以获得码流。14.一种非瞬时性计算机可读存储介质,其特征在于,所述非瞬时性计算机可读存储介质存储由处理电路执行的程序;当所述处理电路执行所述程序时,所述处理电路用于执行根据权利要求1至12中任一项所述的方法。15.一种编码器,其特征在于,所述编码器包括:电路,用于执行权利要求1至12中任一项所述的方法。16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有由一个或多个处理器执行的如权利要求1至12中的任一项所述方法得到的视频码流。
技术总结
本发明提供编码器,解码器和使用压缩MV存储的对应方法。所述编码器,解码器和使用压缩MV存储的对应方法包括:获取时域运动矢量;使用所述时域运动矢量的二进制表示来确定压缩运动矢量,其中,所述压缩后的时域运动矢量包括指数部分和/或尾数部分,所述指数部分包括N位,所述尾数部分包括M位,N为非负整数,M为正整数;使用所述压缩运动矢量来执行时域运动矢量预测(temporal motion vector prediction,TMVP)。TMVP)。TMVP)。
技术研发人员:
马克西姆
受保护的技术使用者:
华为技术有限公司
技术研发日:
2019.12.27
技术公布日:
2022/12/1