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

用于帧内平滑的方法和装置与流程

2021-11-20 06:37:00 来源:中国专利 TAG:

用于帧内平滑的方法和装置
1.相关申请案交叉申请
2.本技术要求于2019年3月28日提交的申请号为62/825,793的美国临时申请的优先权,其内容通过引用的方式并入本文中。
技术领域
3.本技术(本发明)实施例大体上涉及图像处理领域,更具体地涉及帧内预测,尤其是用于帧内平滑的方法和装置。


背景技术:

4.视频译码(视频编码和解码)广泛用于数字视频应用,例如广播数字tv、通过互联网和移动网络传输视频、实时会话应用(如视频聊天)、视频会议、dvd和蓝光光盘、视频内容采集和编辑系统,以及安全应用的摄像机。
5.即使在视频较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量受限的通信网络中发送或以其它方式发送时,这样可能会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中发送。由于内存资源可能有限,当在存储设备中存储视频时,视频的大小也可能成为问题。视频压缩设备通常在源侧使用软件和/或硬件,以发送或存储之前对视频数据进行编码,从而减少用来表示数字视频图像所需的数据量。然后,压缩数据在目的侧由用于对视频数据进行解码的视频解压缩设备接收。在网络资源有限而对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术能够在几乎不影响图像质量的情况下提高压缩比。


技术实现要素:

6.本技术实施例提供根据独立权利的用于编码和解码的装置和方法。
7.上述目的及其它目的通过独立权利要求请求保护的主题实现。其它实现方式在从属权利要求、说明书以及附图中是显而易见的。
8.本发明的第一方面涉及一种用于图像块帧内预测的方法。所述方法包括:获取帧内子划分(intrasub

partition,isp)信息,其中,所述isp信息表示isp是否用于划分当前块;根据所述isp信息选择插值滤波器的系数集合,其中,所述插值滤波器的系数集合为fg系数或fc系数。所述方法还包括通过将所述系数集合应用于参考样本,得到所述当前块的预测样本。
9.在第一方面的一种实现方式中,所述isp信息可以由标志intrasubpartitionssplittype表示。当intrasubpartitionssplittype不等于isp_no_split时,使用isp(即,启用isp)划分所述当前块。
10.在第一方面的一种实现方式中,当isp信息表示isp用于划分所述当前块时,块滤波状态为非平滑状态。所述块滤波状态由标志smoothstate表示,当smoothstate的值为0时,所述块滤波状态为非平滑状态。filterflag的值等于smoothstate的值,即,0。相应地,
选择fc系数。
11.本发明的第二方面涉及一种用于图像块帧内预测的方法。所述方法包括:根据帧内子划分(intrasub

partition,isp)信息检测块滤波状态,其中,所述块滤波状态包括非平滑状态、平滑状态或方向相关平滑状态;
12.根据所述块滤波状态的值选择插值滤波器的系数集合,其中,所述插值滤波器的系数集合为fg系数或fc系数;所述方法还包括通过将所述系数集合应用于参考样本,得到所述当前块的预测样本。
13.在第二方面的一种实现方式中,所述isp信息可以由标志intrasubpartitionssplittype表示。当intrasubpartitionssplittype不等于isp_no_split时,使用isp(即,启用isp)划分所述当前块。当isp信息表示isp用于划分所述当前块时,块滤波状态为非平滑状态。所述块滤波状态由标志smoothstate表示,当smoothstate的值为0时,所述块滤波状态为非平滑状态。
14.在第二方面的一种实现方式中,滤波标志(filterflag)的值可以用于表示所述插值滤波器的系数集合为fg系数或fc系数。filterflag的值等于smoothstate的值。即,当所述块滤波状态为非平滑状态时,filterflag的值为0。相应地,选择fc系数。
15.本发明的第三方面涉及一种用于图像块帧内预测的方法。所述方法包括:通过将插值滤波器应用于参考样本,获取块的预测样本,其中,所述插值滤波器的系数集合根据针对每个平滑机制执行以下步骤的决策(也称为块滤波状态)确定:
16.‑
获取表示是否应用帧内预测机制的标志的值;
17.‑
将所述获取的标志(例如intrasubpartitionsplittype)的值与预定二进制值(例如isp_no_split)进行比较;
18.其中,根据所述决策选择预定系数集合中的一个来确定所述系数集合,所述决策是将所获取的标志的值与预定二进制值进行比较的结果。
19.本发明第一方面所述的方法可由本发明第四方面所述的设备执行。所述设备包括获取单元、选择单元和预测单元。所述获取单元,用于获取帧内子划分(intrasub

partition,isp)信息,其中,所述isp信息表示isp是否用于划分当前块。所述选择单元,用于根据所述isp信息选择插值滤波器的系数集合,其中,所述插值滤波器的系数集合为fg系数或fc系数。所述预测单元,用于通过将所述系数集合应用于参考样本,得到所述当前块的预测样本。
20.本发明第二方面所述的方法可由本发明第五方面所述的设备执行。所述设备包括检测单元、选择单元和预测单元。所述检测单元,用于根据帧内子划分(intrasub

partition,isp)信息检测块滤波状态,其中,所述块滤波状态包括非平滑状态、平滑状态或方向相关平滑状态。所述选择单元,用于根据所述块滤波状态的值选择插值滤波器的系数集合,其中,所述插值滤波器的系数集合为fg系数或fc系数。所述预测单元,用于通过将所述系数集合应用于参考样本,得到所述当前块的预测样本。本发明第二方面所述的方法的其它特征和实现方式对应于本发明第五方面所述的设备的特征和实现方式。
21.本发明第三方面所述的方法可由本发明第六方面所述的设备执行。本发明第三方面提供的方法的其它特征和实现方式对应于本发明第六方面提供的设备的特征和实现方式。
22.根据第七方面,本发明涉及一种视频流解码装置,包括处理器和存储器。所述存储器存储指令,所述指令使所述处理器执行所述第一方面、第二方面或第三方面或所述第一方面、第二方面或第三方面任意可能的实现方式中的方法。
23.根据第八方面,本发明涉及一种视频流编码装置,包括处理器和存储器。所述存储器存储指令,所述指令使所述处理器执行所述第一方面、第二方面或第三方面或所述第一方面、第二方面或第三方面任意可能的实现方式中的方法。
24.根据第九方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储指令。当执行所述指令时,使一个或多个处理器用于编码视频数据。所述指令使所述一个或多个处理器执行所述第一方面、第二方面或第三方面或所述第一方面、第二方面或第三方面任意可能的实现方式中的方法。
25.根据第十方面,本发明涉及一种计算机程序,所述计算机程序包括程序代码。在计算机上执行所述程序代码时,执行所述第一方面、第二方面或第三方面或所述第一方面、第二方面或第三方面任意可能实现方式中的方法。
26.如上所述,当所述isp信息表示是否使用isp划分当前块(即,启用isp)时,根据所述方面或所述方面的实现方式,不需要根据模式来选择插值滤波器类型。这可以提高编码或解码效率。
27.以下附图和说明书详细阐述了一个或多个实施例。其它特征、目的和优点在说明书、附图以及权利要求书中是显而易见的。
附图说明
28.下面参照所附的附图和示意图对本发明实施例进行更加详细地描述,其中:
29.图1a为用于实现本发明实施例的示例性视频译码系统的框图;
30.图1b为用于实现本发明实施例的另一示例性视频译码系统的框图;
31.图2为用于实现本发明实施例的示例性视频编码器的框图;
32.图3为用于实现本发明实施例的视频解码器的示例性结构的框图;
33.图4为示例性编码装置或解码装置的框图;
34.图5为另一示例性编码装置或解码装置的框图;
35.图6示出了isp工具对两个子划分的划分;
36.图7示出了isp工具对四个子划分的划分;
37.图8示出了多参考行帧内预测;
38.图9至图11示出了平面帧内预测模式的不同参考样本选择方法;
39.图12至图13示出了dc帧内预测模式的不同参考样本选择方法;
40.图14为示例性插值滤波器类型选择的框图;
41.图15为另一示例性插值滤波器类型选择的框图;
42.图16示出了本发明提供的方法1600的实施例;
43.图17示出了本发明提供的方法1700的实施例;
44.图18示出了本发明使用的设备1800的实施例;
45.图19示出了本发明使用的设备1900的实施例;
46.图20为实现内容分发服务的内容提供系统3100的示例性结构的框图;
47.图21为终端设备的示例性结构的框图。
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提供给用于对经编码图像数据13进行解码的目的地设备14。
57.源设备12包括编码器20,另外即可选地,包括图像源16、预处理器(或预处理单元)18(如图像预处理器18)、通信接口或通信单元22。
58.所述图像源16可以包括或可以为任何类型的图像捕获设备、和/或任何类型的图像生成设备或任何类型的其它设备,其中,所述图像捕获设备例如为用于捕获现实世界图像的相机,所述图像生成设备例如为用于生成计算机动画图像的计算机图形处理器,所述其它设备用于获取和/或提供现实世界的图像、计算机生成图像(例如,屏幕内容、虚拟现实(virtualreality,vr)图像)和/或其任意组合(例如,增强现实(augmentedreality,ar)图像)。所述图像源可以为存储上述图像中的任意图像的任何类型的内存或存储器。
59.为了区分预处理器18和预处理单元18执行的处理,图像或图像数据17也可以称为原始图像或原始图像数据17。
60.预处理器18用于接收(原始)图像数据17,并对图像数据17进行预处理,以获得经预处理的图像19或经预处理的图像数据19。预处理器18执行的预处理可以包括例如修剪(trimming)、颜色格式转换(例如从rgb转换为ycbcr)、颜色校正或去噪。可以理解的是,预处理单元18可以为可选部件。
61.视频编码器20用于接收经预处理的图像数据19并提供经编码的图像数据21(下文将根据图2等进行详细描述)。
62.源设备12中的通信接口22可用于:接收经编码的图像数据21并通过通信信道13向目的地设备14等另一设备或任何其它设备发送经编码的图像数据21(或其它任意处理后的版本),以供存储或直接重建。
63.目的地设备14包括解码器30(例如视频解码器30),另外即可选地,可包括通信接口或通信单元28、后处理器32(或后处理单元32)以及显示设备34。
64.目的地设备14中的通信接口28用于直接从源设备12或从存储设备等任意其它源设备接收经编码的图像数据21(或其它任意处理后的版本),例如,存储设备为存储经编码的图像数据的存储设备,并将经编码的图像数据21提供给解码器30。
65.通信接口22和通信接口28可用于通过源设备12与目的地设备14之间的直接通信链路,例如直接有线或无线连接等,或者通过任何类型的网络,例如有线网络、无线网络或其任意组合、任何类型的私网和公网或其任意类型的组合,发送或接收经编码的图像数据21或经编码的数据13。
66.例如,通信接口22可用于将经编码的图像数据21封装为报文等合适的格式,和/或使用任意类型的传输编码或处理来处理所述经编码的图像数据,以便在通信链路或通信网
络上进行传输。
67.通信接口28与通信接口22对应,例如,可用于接收传输数据,并使用任意类型的对应传输解码或处理和/或解封装过程对传输数据进行处理,以获得经编码的图像数据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)、调色、修剪或重采样,或者用于产生供显示设备34等显示的经解码的图像数据31等任何其它处理。
71.目的地设备14中的显示设备34用于接收经后处理的图像数据33,以向用户或观看者等显示图像。显示设备34可以为或可以包括任意类型的用于表示经重建的图像的显示器,例如,集成或外部显示屏或显示器。例如,显示器可以包括液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclightemittingdiode,oled)显示器、等离子显示器、投影仪、微型led显示器、硅基液晶显示器(liquidcrystalonsilicon,lcos)、数字光处理器(digitallightprocessor,dlp)或任意类型的其它显示器。
72.尽管图1a示出了将源设备12和目的地设备14作为独立的设备,但设备实施例也可以同时包括源设备12和目的地设备14或同时包括源设备12和目的地设备14的功能,即同时包括源设备12或对应功能和目的地设备14或对应功能。在这些实施例中,源设备12或源设备12的对应功能和目的地设备14或目的地设备14的对应功能可以使用相同硬件和/或软件或通过单独的硬件和/或软件或其任意组合来实现。
73.根据描述,图1a所示的源设备12和/或目的地设备14中的不同单元或功能的存在和(准确)划分可能根据实际设备和应用而有所不同,这对技术人员来说是显而易见的。
74.所述编码器20(例如视频编码器20)或所述解码器30(例如视频解码器30),或编码器20和解码器30两者都可通过如图1b所示的处理电路实现,如一个或多个微处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(application

specificintegratedcircuit,asic)、现场可编程门阵列(field

programmablegatearray,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视频编码专家组(videocodingexpertsgroup,vceg)和iso/iec运动图像专家组(motionpictureexpertsgroup,mpeg)的视频编码联合协作团队(jointcollaborationteamonvideocoding,jct

vc)开发的高效视频编码(high

efficiencyvideocoding,hevc)、通用视频编码(versatilevideocoding,vvc)参考软件、下一代视频编码标准来描述本发明实施例。本领域普通技术人员应理解本发明实施例不限于适用hevc或vvc标准。
78.编码器和编码方法
79.图2为用于实现本技术技术的示例性视频编码器20的示意性框图。在图2的示例中,视频编码器20包括输入端201(或输入接口201)、残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、环路滤波单元220、解码图像缓冲区(decodedpicturebuffer,dpb)230、模式选择单元260、熵编码单元270和输出端272(或输出接口272)。模式选择单元260可以包括帧间预测单元244、帧内预测单元254和分割单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(未示出)。图2所示的视频编码器20也可以称为混合型视频编码器或基于混合型视频编解码器的视频编码器。
80.残差计算单元204、变换处理单元206、量化单元208和模式选择单元260组成编码器20的前向信号路径;反量化单元210、逆变换处理单元212、重建单元214、缓冲区216、环路滤波器220、解码图像缓冲区(decodedpicturebuffer,dpb)230、帧间预测单元244和帧内预测单元254组成视频编码器20的后向信号路径。其中,视频编码器20的后向信号路径对应于解码器(参见图3所示的解码器30)的信号路径。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。
81.图像和图像分割(图像和块)
82.编码器20可用于通过输入单元201等接收图像17(或图像数据17),例如,形成视频或视频序列的图像序列中的图像。接收到的图像或图像数据还可以是经预处理的图像19(或经预处理的图像数据19)。为简单起见,以下描述中称为图像17。图像17还可以称为当前图像或待译码图像(尤其在视频译码中,为区分当前图像和其它图像,其它图像例如为同一视频序列中,即同时包括当前图像的视频序列中,的先前经编码的图像和/或先前经解码的
图像)。
83.(数字)图像是或可以认为是具有强度值的样本组成的二维阵列或矩阵。该阵列中的样本也可以称为像素(pixel/pel)(图像元素的简称)。该阵列或该图像在水平方向和垂直方向(或轴线)上的样本的数量限定了该图像的大小和/或分辨率。为了表示颜色,通常采用三个颜色分量,即该图像可以表示为或者可以包括三个样本阵列。在rbg格式或色彩空间中,图像包括对应的红色、绿色、蓝色样本阵列。然而,在视频译码中,每个像素通常以亮度和色度格式或颜色空间表示,例如,ycbcr格式,其包括y表示的亮度分量(有时也用l表示)和cb和cr表示的两个色度分量。亮度(或简称luma)分量y表示亮度或灰度级强度(例如,在灰度级图像中),而两个色度(或简称chroma)分量cb和cr表示色度或颜色信息分量。相应地,ycbcr格式的图像包括亮度样本值(y)的亮度样本阵列和色度值(cb和cr)的两个色度样本阵列。rgb格式的图像可以转换或变换为ycbcr格式,反之亦然。该过程也称为颜色变换或转换过程。如果图像是黑白的,则该图像可以只包括亮度样本阵列。相应地,图像可以为例如黑白格式的亮度样本阵列或4:2:0、4:2:2和4:4:4彩色格式的亮度样本阵列和两个对应的色度样本阵列。
84.在视频编码器20的实施例中,视频编码器20可以包括图像分割单元(图2中未示出),用于将所述图像17分割成多个(通常不重叠)图像块203。这些块也可以称为根块或宏块(h.264/avc标准)或称为编码树块(codingtreeblock,ctb)或编码树单元(codingtreeunit,ctu)(h.265/hevc和vvc标准)。所述图像分割单元可以用于:对视频序列中的所有图像使用相同的块大小,并使用对应网格定义块大小,或者在图像或图像子集或图像组之间改变块大小,并将每个图像分割成对应的块。
85.在其它实施例中,视频编码器可用于直接接收所述图像17的图像块203,例如,组成所述图像17的一个、若干个或所有图像块。图像块203也可以称为当前图像块或待译码图像块。
86.与图像17一样,图像块203同样是或可以认为是具有强度值(样本值)的样本组成的二维阵列或矩阵,但是图像块203的尺寸要比图像17的尺寸小。换句话说,图像块203可以包括一个样本阵列(例如,图像17是黑白图像时,图像块203包括一个亮度阵列;图像17是彩色图像时,图像块203包括一个亮度阵列或一个色度阵列),或者包括三个样本阵列(例如,图像17是彩色图像时,图像块203包括一个亮度阵列和两个色度阵列),或者包括由所使用的颜色格式决定的任何其它数量和/或类型的阵列。图像块203在水平方向和垂直方向(或轴线)上的样本的数量限定了图像块203的大小。相应地,图像块可以为例如m
×
n(m列
×
n行)个样本阵列,或m
×
n个变换系数阵列等。
87.在图2所示的视频编码器20的实施例中,视频编码器20可用于对图像17进行逐块编码,例如,对每个图像块203进行编码和预测。
88.图2所示的视频编码器20的实施例还可以用于使用条带(slice)(也称为视频条带)对图像进行分割和/或编码,其中,可以使用一个或多个条带(通常为不重叠的)对图像进行分割或编码,并且每个条带可以包括一个或多个块(例如,ctu)。
89.图2所示的视频编码器20的实施例还可以用于使用分块组(tilegroup)(也称为视频分块组)和/或分块(tile)(也称为视频分块)对图像进行分割和/或编码,其中,可以使用一个或多个分块组(通常为不重叠的)对图像进行分割或编码,每个分块组可以包括一个或
多个块(例如,ctu)或一个或多个分块等,其中,每个分块可以为矩形等形状,可以包括一个或多个块(例如,ctu),例如完整或部分块。
90.残差计算
91.残差计算单元204可以用于根据图像块203和预测块265(下文将详细描述预测块265)通过如下方式计算残差块205(也称为残差205),例如,逐个样本(逐个像素)从图像块203的样本值中减去预测块265的样本值,得到样本域中的残差块205。
92.变换
93.变换处理单元206可以用于对残差块205的样本值执行离散余弦变换(discretecosinetransform,dct)或离散正弦变换(discretesinetransform,dst)等变换,以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,表示变换域中的残差块205。
94.变换处理单元206可以用于执行dct/dst的整数近似,例如,针对h.265/hevc指定的变换。与正交dct变换相比,该整数近似通常基于某一因子进行缩放。使用其它缩放因子作为变换过程的一部分,以维持经前向变换和逆变换处理的残差块的范数。缩放因子通常是基于某些约束条件来选择的,例如缩放因子是用于移位运算的2的幂、变换系数的位深度、准确性与实施成本之间的折衷等。例如,在编码器20侧通过逆变换处理单元212等为逆变换(在视频解码器30侧通过逆变换处理单元312等为对应的逆变换)指定具体的缩放因子,并且相应地,可以在编码器20侧通过变换处理单元206等为前向变换指定对应的缩放因子。
95.在视频编码器20的实施例中,视频编码器20(对应地,变换处理单元206)可用于,例如,直接输出或经熵编码单元270进行编码或压缩后输出一种或多种变换类型的变换参数,使得视频解码器30可以接收并使用变换参数进行解码。
96.量化
97.量化单元208用于通过执行标量化或矢量化等对变换系数207进行量化,以获得量化系数209。量化系数209也可以称为经量化的变换系数209或经量化的残差系数209。
98.量化过程可以减小与部分或全部变换系数207相关的位深度。例如,可以在量化期间将n位变换系数向下舍入到m位变换系数,其中n大于m,可以通过调整量化参数(quantizationparameter,qp)修改量化程度。例如,对于标量化,可以执行不同的缩放来实现更精细或更粗略的量化。量化步长越小,量化越精细;量化步长越大,量化越粗略。量化参数(quantizationparameter,qp)可以用于表示合适的量化步长。例如,量化参数可以是适用于预定义的一组合适的量化步长大小的索引。例如,小的量化参数可对应精细的量化(小的量化步长),大的量化参数可对应粗略的量化(大的量化步长),反之亦然。量化操作可以包括除以量化步长,而反量化单元210等执行的相应解量化或逆解量化操作可以包括乘以量化步长。在一些实施例中,根据如hevc等一些标准,可以使用量化参数来确定量化步长。通常,可以根据量化参数使用包括除法运算的等式的定点近似来计算量化步长。可以使用其它缩放因子进行量化和解量化,用于恢复残差块的范数。由于在用于量化步长和量化参数的等式的定点近似中使用了缩放,所以可能修改了该残差块的范数。在一种示例性实现方式中,可以合并逆变换和解量化中的缩放。或者,可以使用自定义的量化表并由编码器通过码流等方式向解码器指示(signal)。量化是有损操作,其中量化步长越大,损耗越大。
99.在视频编码器20的实施例中,视频编码器20(对应地,量化单元208)可用于,例如,直接输出或经熵编码单元270进行编码后输出量化参数(quantizationparameter,qp),使得视频解码器30可以接收并使用量化参数进行解码。
100.反量化
101.反量化单元210用于对量化系数执行与量化单元208所执行的量化相反的反量化,以获得解量化系数211,例如,根据或通过与量化单元208相同的量化步长执行与量化单元208所执行的量化方案相反的反量化方案。解量化系数211也可以称为解量化残差系数211,其对应于变换系数207,但是由于量化造成损耗,解量化系数211通常与变换系数不完全相同。
102.逆变换
103.逆变换处理单元212用于执行变换处理单元206所执行的变换的逆变换,例如,逆离散余弦变换(discretecosinetransform,dct)或逆离散正弦变换(discretesinetransform,dst),以获得样本域中的重建残差块213(或对应的解量化系数213)。重建残差块213也可以称为变换块213。
104.重建
105.重建单元214(例如,加法器或求和器214)用于将变换块213(即重建残差块213)与预测块265相加,例如,将重建残差块213的样本值和预测块265的样本值逐个样本进行相加,得到样本域中的重建块215。
106.滤波
107.环路滤波器单元220(或简称为环路滤波器220)用于对重建块215进行滤波,得到滤波块221,或通常用于对重建样本进行滤波,得到滤波样本值。例如,环路滤波单元用于平滑像素的突变或者提高视频质量。环路滤波器单元220可以包括一个或多个环路滤波器,如去块效应滤波器、样本自适应偏移(sample

adaptiveoffset,sao)滤波器或一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptiveloopfilter,alf)、锐化滤波器、平滑滤波器、协作滤波器或其任意组合。尽管在图2中环路滤波器单元220示出为环内滤波器,但在其它配置中,环路滤波器单元220可以实现为后环路滤波器。滤波块221也可以称为滤波重建块221。
108.在实施例中,所述视频编码器20(对应地,环路滤波器单元220)可以用于输出环路滤波器参数(例如样本自适应偏移信息),例如直接输出或由熵编码单元270进行编码后输出,使得(例如)解码器30可以接收并使用相同的环路滤波器参数或相应的环路滤波器进行解码。
109.解码图像缓冲区
110.解码图像缓冲区(decodedpicturebuffer,dpb)230可以是存储参考图像或通常存储参考图像数据的存储器,以在视频编码器20对视频数据进行编码时使用。dpb230可以由多种存储器设备中的任一者形成,例如包含同步dram(synchronousdram,sdram)的动态随机存取存储器(dynamicrandomaccessmemory,dram)、磁阻式ram(magnetoresistiveram,mram)、电阻式ram(resistiveram,rram)或其它类型的存储器设备。解码图像缓冲区(decodedpicturebuffer,dpb)230可用于存储一个或多个滤波块221。解码图像缓冲区230还可以用于存储同一当前图像的或如先前重建图像等的不同图像的其它先前滤波块如先
前重建和滤波的块221,且可提供完整的先前重建图像即经解码的图像(以及对应的参考块和样本)和/或部分重建的当前图像(以及对应的参考块和样本),例如,以进行帧间预测。解码图像缓冲区230还可以用于存储一个或多个未经滤波的重建块215,或通常存储未经滤波的重建样本,例如,未经环路滤波单元220滤波的重建块215,或未进行任何其它处理的重建块或重建样本。
111.模式选择(分割和预测)
112.模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,并且用于从解码图像缓冲区230或其它缓冲区(例如行缓冲区,图中未显示)接收或获取原始块203(当前图像17的当前块203)和重建图像数据等原始图像数据(例如同一个(当前)图像和/或一个或多个先前经解码图像的经过滤波和/或未经滤波的重建样本或重建块。重建图像数据用作帧间预测或帧内预测等预测所需的参考图像数据,用于获得预测块265或预测值265。
113.模式选择单元260可以用于为当前块预测模式(包括不分割模式)和预测模式(例如帧内预测模式或帧间预测模式)确定或选择分割模式,并生成对应的预测块265,所述预测块用于残差块205的计算以及重建块215的重建。
114.在模式选择单元260的实施例中,模式选择单元260可以用于选择分割和预测模式(例如,从模式选择单元260支持或可用的模式中选择)。所述分割和预测模式提供最佳匹配,即最小残差(最小残差意味着更好的压缩性能,以便进行发送或存储),或提供最小指示开销(最小指示开销意味着更好的压缩性能,以便进行发送或存储),或者同时考虑以上两者或在以上两者中取得平衡。模式选择单元260可以用于根据率失真优化(ratedistortionoptimization,rdo)确定分割和预测模式,即选择提供最小率失真的预测模式。本文中,术语“最佳”、“最小”、“最优”等不一定指总体上“最佳”、“最小”、“最优”等,也可以指满足终止或选择标准的情况,例如,某个值超过或低于阈值或其它限制,可能导致“次优选择”,但会降低复杂度和处理时间。
115.分割单元262可以用于将块203分割成更小的块部分或子块(子块再次形成块),例如,通过迭代地使用四叉树分割(quad

treepartitioning,qt)、二叉树分割(binary

treepartitioning,bt)或三叉树分割(triple

treepartitioning,tt)或其任何组合,并用于例如对每个块部分或子块进行预测。其中,模式选择包括选择经分割的块203的树结构以及选择应用于每个块部分或子块的预测模式。
116.下文将详细地描述由视频编码器20执行的分割(例如,由分割单元260执行)处理和预测处理(例如,由帧间预测单元244和帧内预测单元254执行)。
117.分割
118.分割单元262可以将当前块203分割(或划分)为较小的部分,例如方形或矩形小块。这些小块(也可以称为子块)可进一步分割为更小的部分。这也称为树分割或分层树分割,其中,在根树层级0(分层0、深度0)等的根块可以递归地分割为至少两个下一较低树层级的块,例如树层级1(分层1、深度1)的节点。这些块又可以分割为至少两个下一较低层级的块,例如树层级2(分层2、深度2)等,直到由于满足结束标准而结束分割,例如达到最大树深度或最小块大小。未进一步分割的块也称为树的叶块或叶节点。分割为两个部分的树称为二叉树(binary

tree,bt),分割为三个部分的树称为三叉树(ternary

tree,tt),分割为
四个部分的树称为四叉树(quad

tree,qt)。
119.如上所述,本文中使用的术语“块”可以是图像的一部分,特别是正方形或矩形部分。例如,参照hevc和vvc,块可以为或可以对应于编码树单元(codingtreeunit,ctu)、编码单元(codingunit,cu)、预测单元(predictionunit,pu)和变换单元(transformunit,tu),和/或对应于对应的块,例如,编码树块(codingtreeblock,ctb)、编码块(codingblock,cb)、变换块(transformblock,tb)或预测块(predictionblock,pb)。
120.例如,编码树单元(codingtreeunit,ctu)可以为或可以包括具有3个样本阵列的图像中的亮度样本的一个ctb、该图像中的色度样本的两个对应ctb、或黑白图像中的或使用3个独立颜色平面和语法结构进行译码的图像中的样本的一个ctb。这些语法结构用于对样本进行译码。相应地,编码树块(codingtreeblock,ctb)可以为n
×
n个样本块,其中,n可以设为某个值,使得一个分量划分为ctb,这就是分割。编码单元(codingunit,cu)可以为或可以包括具有3个样本阵列的图像中的亮度样本的一个编码块、该图像中的色度样本的两个对应编码块,或者黑白图像中的或使用3个单独颜色平面和语法结构进行译码的图像中的样本的一个编码块。这些语法结构用于对样本进行译码。相应地,编码块(codingblock,cb)可以为m
×
n个样本块,其中,m、n可以设为某个值,使得一个ctb划分为编码块,这就是分割。
121.在实施例中,例如根据hevc,可以通过表示为编码树的四叉树结构将编码树单元(codingtreeunit,ctu)划分为多个cu。在cu级作出是否使用帧间(时间)预测或帧内(空间)预测对图像区域进行译码的决策。每个cu可以根据pu划分类型进一步划分为1个、2个或4个pu。一个pu内执行相同的预测过程,并以pu为单位向解码器传输相关信息。在根据pu划分类型执行预测过程得到残差块之后,可以根据类似于用于cu的编码树类似的另一种四叉树结构将cu分割成变换单元(transformunit,tu)。
122.在实施例中,例如根据当前开发的最新视频编码标准(称为通用视频编码(versatilevideocoding,vvc)),使用使四叉树结合二叉树(quad

treeandbinary

tree,qtbt)分割来分割编码块。在qtbt块结构中,一个cu可以为正方形或矩形形状。例如,编码树单元(codingtreeunit,ctu)首先通过四叉树结构进行分割。四叉树叶节点进一步通过二叉树或三叉树结构进行分割。分割树叶节点称为编码单元(codingunit,cu),这样的分段用于预测和变换处理,无需任何进一步的分割。这表示在qtbt编码块结构中,cu、pu和tu的块大小相同。与此同时,可以将三叉树分割等多重分割与qtbt块结构一起使用
123.在一个示例中,视频编码器20中的模式选择单元260可用于执行上文描述的分割技术的任意组合。
124.如上所述,视频编码器20用于从(预定的)预测模式集合中确定或选择最佳或最优的预测模式。该预测模式集合可以包括例如帧内预测模式和/或帧间预测模式等。
125.帧内预测
126.帧内预测模式集合可以包括35种不同的帧内预测模式,例如像dc(或均值)模式和平面(planar)模式的非方向性模式或如hevc中定义的方向性模式,或者可以包括67种不同的帧内预测模式,例如像dc(或均值)模式和平面模式的非方向性模式或如vvc中定义的方向性模式。
127.帧内预测单元254用于根据帧内预测模式集合中的帧内预测模式,使用同一个当
前图像的相邻块的重建样本来生成帧内预测块265。
128.帧内预测单元254(或通常为模式选择单元260)还用于输出帧内预测参数(或通常为表示块的所选帧内预测模式的信息)以语法元素266的形式发送到熵编码单元270,以包含到经编码的图像数据21中,从而视频解码器30可执行操作,例如接收并使用用于解码的预测参数。
129.帧间预测
130.(可能的)帧间预测模式集合取决于可用参考图像(即上述存储在dpb230等中的至少部分经解码图像)和其它帧间预测参数,例如取决于是否使用整个参考图像或只使用参考图像的一部分(例如当前块的区域周围的搜索窗口区域)来搜索最佳匹配参考块,和/或例如取决于是否进行像素插值(例如二分之一/半像素插值和/或四分之一像素插值)。
131.除了上述预测模式之外,还可以使用跳过模式和/或直接模式。
132.帧间预测单元244可以包括运动估计(motionestimation,me)单元和运动补偿(motioncompensation,mc)单元(两者均未在图2中示出)。运动估计单元可用于接收或获取图像块203(当前图像17的当前图像块203)和经解码的图像231,或至少一个或多个先前重建的块,例如,一个或多个其它/不同的先前解码的图像231的重建块,来进行运动估计。例如,一个视频序列可以包括当前图像和先前解码的图像231,或者,换句话说,当前图像和先前解码的图像231可以为组成视频序列的图像序列的一部分或形成该图像序列。
133.例如,编码器20可以用于从多个其它图像中的同一个或不同图像的多个参考块中选择一个参考块,并将参考图像(或参考图像索引)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移(空间偏移)作为帧间预测参数提供给运动估计单元。该偏移也称为运动矢量(motionvector,mv)。
134.运动补偿单元用于获取如接收帧间预测参数,并根据或使用帧间预测参数进行帧间预测,得到帧间预测块265。由运动补偿单元执行的运动补偿可以包括根据通过运动估计确定的运动/块矢量来提取或生成预测块,还可以包括对子像素精度进行插值。进行插值滤波时,可以从已知像素的样本产生其它像素的样本,从而增加可用于对图像块进行译码的候选预测块的数量。接收到当前图像块的pu对应的运动矢量后,运动补偿单元可在其中一个参考图像列表中定位该运动矢量所指向的预测块。
135.运动补偿单元还可以生成与块和视频条带相关的语法元素,以供视频解码器30在解码该视频条带的图像块时使用。此外,可选的,作为条带和相应语法元素的替代,可以生成或使用分块组和/或分块以及相应的语法元素。
136.熵编码
137.熵编码单元270用于将熵编码算法或方案(例如可变长度编码(variablelengthcoding,vlc)方案、上下文自适应vlc(contextadaptivevlcscheme,cavlc)方案、算术编码方案、二值化,上下文自适应二进制算术编码(contextadaptivebinaryarithmeticcoding,cabac)、基于语法的上下文自适应二进制算术编码(syntax

basedcontext

adaptivebinaryarithmeticcoding,sbac)、概率区间分割熵(probabilityintervalpartitioningentropy,pipe)编码或其它熵编码方法或技术)等应用于或不应用于(无压缩)量化系数209、帧间预测参数、帧内预测参数、环路滤波器参数和/或其它语法元素,得到可以通过输出端272以经编码码流21等形式输出的经编码的图像数据21,使得视频
解码器30等可以接收并使用这些参数进行解码。可将经编码的码流21传输到视频解码器30,或将其存储在存储器中以供视频解码器30进行后续传输或检索。
138.视频编码器20的其它结构变化可以用于编码视频流。例如,基于非变换的编码器20能够在没有变换处理单元206的情况下直接量化某些块或帧的残差信号。在另一种实现方式中,编码器20可以具有组合成单个单元的量化单元208和反量化单元210。
139.解码器和解码方法
140.图3示出了用于实现本技术技术的示例性视频解码器30。视频解码器30用于接收例如由编码器20编码的经编码的图像数据21(例如,经编码的码流21),得到经解码的图像331。经编码的图像数据或经编码的码流包括用于解码所述经编码的图像数据的信息,例如,表示经编码的视频条带(和/或分块组或分块)的图像块的数据以及相关联的语法元素。
141.在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(如求和器314)、环路滤波器320、解码图像缓冲区(decodedpicturebuffer,dbp)330、模式应用单元360、帧间预测单元344和帧内预测单元354。帧间预测单元344可以为或可以包括运动补偿单元。在一些示例中,视频解码器30可执行大体上与图2所示视频编码器100所执行的编码过程相反的解码过程。
142.如编码器20所述,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区(decodedpicturebuffer,dpb)230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。因此,反量化单元310可以与反量化单元110具有相同的功能,逆变换处理单元312可以与逆变换处理单元212具有相同的功能,重建单元314可以与重建单元214具有相同的功能,环路滤波器320可以与环路滤波器220具有相同的功能,解码图像缓冲区330可以与解码图像缓冲区230具有相同的功能。因此,对视频编码器20的相应单元和功能的解释相应地适用于视频解码器30的相应单元和功能。
143.熵解码
144.熵解码单元304用于解析码流21(或一般为经编码的图像数据21)并对经编码的图像数据21执行熵解码等,得到量化系数309和/或经解码的译码参数(图3中未示出)等,例如帧间预测参数(例如参考图像索引和运动矢量)、帧内预测参数(例如帧内预测模式或索引)、变换参数、量化参数、环路滤波器参数和/或其它语法元素中的任一个或全部。熵解码单元304可以用于进行对应于编码器20的熵编码单元270所描述的编码方案的解码算法或方案。熵解码单元304还可以用于将帧间预测参数、帧内预测参数和/或其它语法元素提供给模式应用单元360,并将其它参数提供给解码器30中的其它单元。视频解码器30可以接收视频条带级和/或视频块级的语法元素。此外,可选的,作为条带和相应语法元素的替代,可以接收或使用分块组和/或分块以及相应的语法元素。
145.反量化
146.反量化单元310可用于从经编码的图像数据21(例如,通过熵解码单元304等解析和/或解码)接收量化参数(quantizationparameter,qp)(或通常为与反量化相关的信息)和量化系数,并基于所述量化参数对经解码的量化系数309进行反量化,以获得解量化系数311,所述解量化系数311也可以称为变换系数311。反量化过程可以包括使用视频编码器20为视频条带中的每一视频块计算的量化参数来确定量化程度,同样也确定需要执行的反量化的程度。
147.逆变换
148.逆变换处理单元312可以用于接收解量化系数311(也称为变换系数311),并对解量化系数311进行变换,得到样本域中的重建残差块213。重建残差块213也可以称为变换块313。所述变换可以为逆变换,例如逆dct、逆dst、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从经编码的图像数据21(例如通过熵解码单元304解析和/或解码)接收变换参数或相应信息,以确定将对解量化系数311执行的变换。
149.重建
150.重建单元314(例如加法器或求和器314)可以用于通过如下方式将重建残差块313添加到预测块365,例如,将重建残差块313的样本值和预测块365的样本值相加,以得到样本域中的重建块315。
151.滤波
152.环路滤波器单元320(在译码环路中或在译码环路之后)用于对重建块315进行滤波,得到滤波块321,从而平滑像素的突变或以其它方式提高视频质量等。环路滤波器单元320可以包括一个或多个环路滤波器,如去块效应滤波器、样本自适应偏移(sample

adaptiveoffset,sao)滤波器或一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptiveloopfilter,alf)、锐化滤波器、平滑滤波器、协作滤波器或其任意组合。尽管在图3中环路滤波器单元320示出为环内滤波器,但在其它配置中,环路滤波器单元320可以实现为后环路滤波器。
153.解码图像缓冲区
154.然后,将一个图像的解码视频块321存储在解码图像缓冲区330中。经解码的图像331作为参考图像存储在所述解码图像缓冲区330中,用于后续对其它图像进行运动补偿和/或后续相应输出以进行显示。
155.解码器30用于通过输出单元312等输出经解码的图像311,以向用户呈现或供用户查看。
156.预测
157.帧间预测单元344的功能可以与帧间预测单元244(特别是运动补偿单元)相同;帧内预测单元354的功能可以与帧间预测单元254相同,并根据从经编码的图像数据21接收到的分割和/或预测参数或相应信息(例如通过熵解码单元304等解析和/或解码)决策划分或分割模式并执行预测。模式应用单元360可用于根据重建图像、重建块或相应的样本(已滤波的或未滤波的)按块进行预测(帧内预测或帧间预测),得到预测块365。
158.当将视频条带译码为经帧内译码(i)条带时,模式应用单元360中的帧内预测单元354用于根据指示的帧内预测模式和来自当前图像的先前经解码块的数据为当前视频条带的图像块生成预测块365。将视频图像译码为帧间译码(即b或p)条带时,模式应用单元360中的帧间预测单元344(例如运动补偿单元)用于根据运动矢量和从熵解码单元304接收到的其它语法元素为当前视频条带的视频块生成预测块365。对于帧间预测,可以根据其中一个参考图像列表内的其中一个参考图像产生这些预测块。视频解码器30可以基于存储在dpb330中的参考图像采用默认构建技术来构建参考帧列表:列表0和列表1。除了条带(如视频条带)或作为条带的替代,可以将相同或类似过程应用于或体现于分块组(如视频分块组)和/或分块(如视频分块)上,例如,可以采用i、p或b分块组和/或分块对视频进行译码。
159.模式应用单元360用于通过解析运动矢量或相关信息以及其它语法元素,确定当前视频条带的视频块的预测信息,并使用该预测信息为正在解码的当前视频块产生预测块。例如,模式应用单元360使用接收到的部分语法元素确定译码视频条带的视频块的预测模式(例如帧内预测或帧间预测)、帧间预测条带类型(例如b条带、p条带或gpb条带)、条带的一个或多个参考图像列表的构建信息、条带的每一帧间编码视频块的运动矢量、条带的每一帧间译码视频块的帧间预测状态以及其它信息,以解码当前视频条带的视频块。除了条带(如视频条带)或作为条带的替代,可以将相同或类似过程应用于或体现于分块组(如视频分块组)和/或分块(如视频分块)上,例如,可以采用i、p或b分块组和/或分块对视频进行译码。
160.图3中所示的视频解码器30的实施例可用于使用条带(也称为视频条带)对图像进行分割和/或解码,其中,可以使用一个或多个条带(通常不重叠的)对图像进行分割或解码,并且每个条带可以包括一个或多个块(例如,ctu)。
161.图3所示的视频解码器30的实施例可以用于使用分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或解码,其中,可以使用一个或多个分块组(通常为不重叠的)对图像进行分割或解码,每个分块组可以包括一个或多个块(例如,ctu)或一个或多个分块等,其中,每个分块可以为矩形等形状,可以包括一个或多个块(例如,ctu),例如完整或部分块。
162.可以使用其它形式的视频解码器30对经编码的图像数据21进行解码。例如,解码器30能够在没有环路滤波器单元320的情况下产生输出视频流。例如,基于非变换的解码器30能够在没有逆变换处理单元312的情况下直接反量化某些块或帧的残差信号。在另一种实现方式中,视频解码器30可以具有组合成单个单元的反量化单元310和逆变换处理单元312。
163.应当理解的是,在编码器20和解码器30中,可以针对当前环节的处理结果进行进一步处理,然后输出到下一环节。例如,在插值滤波、运动矢量推导或环路滤波等之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进一步进行修正(clip)或移位(shift)等操作。
164.需要说明的是,可以对当前块的推导运动矢量(包括但不限于仿射模式的控制点运动矢量,仿射模式、平面模式、atmvp模式的子块运动矢量,时间运动矢量等)进行进一步运算。例如,根据运动矢量的表示位将该运动矢量的值限制在预定义范围。如果运动矢量的表示位为bitdepth,则运动矢量的取值范围为

2^(bitdepth

1)~2^(bitdepth

1)

1,其中^符号表示幂次方。例如,如果bitdepth设置为16,则该范围为

32768~32767;如果bitdepth设置为18,则该范围为

131072~131071。例如,推导到的运动矢量的值(例如一个8
×
8块中的4个4
×
4子块的mv)被限制,使得所述4个4
×
4子块mv的整数部分之间的最大差值不超过n个像素,例如不超过1个像素。这里提供了两种根据bitdepth限制运动矢量的方法。
165.方法1:通过流操作来去除溢出的最高有效位(mostsignificantbit,msb)
166.ux=(mvx 2
bitdepth
)%2
bitdepth
(1)
167.mvx=(ux>=2
bitdepth
‑1)?(ux
‑2bitdepth
):ux(2)
168.uy=(mvy 2
bitdepth
)%2
bitdepth
(3)
169.mvy=(uy>=2
bitdepth
‑1)?(uy
‑2bitdepth
):u(4)
170.其中,mvx为一个图像块或子块的运动矢量中的水平分量,mvy为一个图像块或子块的运动矢量中的垂直分量,ux和uy表示中间值。
171.例如,如果mvx的值为

32769,则使用公式(1)和(2)后,所得到的值为32767。在计算机系统中,十进制数以2补码的形式存储。

32769的2的补码为1,0111,1111,1111,1111(17位),然后丢弃msb,因此所得到的2的补码为0111,1111,1111,1111(十进制数为32767),与公式(1)和(2)的输出相同。
172.ux=(mvpx mvdx 2
bitdepth
)%2
bitdepth
(5)
173.mvx=(ux>=2
bitdepth
‑1)?(ux
‑2bitdepth
):ux(6)
174.uy=(mvpy mvdy 2
bitdepth
)%2
bitdepth
(7)
175.mvy=(uy>=2
bitdepth
‑1)?(uy
‑2bitdepth
):uy(8)
176.这些运算可以在对mvp和mvd求和的过程中执行,如公式(5)至(8)所示。
177.方法二:对值进行修正来去除溢出的msb
178.vx=clip3(
‑2bitdepth
‑1,2
bitdepth
‑1‑
1,vx)
179.vy=clip3(
‑2bitdepth
‑1,2
bitdepth
‑1‑
1,vy)
180.其中,vx为一个图像块或子块的运动矢量中的水平分量,vy为一个图像块或子块的运动矢量中的垂直分量;x、y和z分别对应于mv修正过程的3个输入值,函数clip3的定义如下:
[0181][0182]
图4是为本发明实施例提供的视频译码设备400的示意图。视频译码设备400适用于实现本文描述的公开实施例。在一个实施例中,视频译码设备400可以是解码器(例如图1a中的视频解码器30)或编码器(例如图1a中的视频编码器20)。
[0183]
视频译码设备400包括:入端口410(或输入端口410)和接收单元(receiverunit,rx)420,用于接收数据;处理器、逻辑单元或中央处理单元(centralprocessingunit,cpu)430,用于处理数据;发送单元(transmitterunit,tx)440和出端口450(或输出端口450),用于发送数据;存储器460,用于存储数据。视频译码设备400还可以包括耦合到入端口410、接收单元420、发送单元440和出端口450的光电(optical

to

electrical,oe)组件和电光(electrical

to

optical,eo)组件,用作光信号或电信号的出口或入口。
[0184]
处理器430通过硬件和软件实现。处理器430可以实现为一个或多个cpu芯片、核(例如,多核处理器)、fpga、asic以及dsp。处理器430与入端口410、接收单元420、发送单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上述描述的公开实施例。例如,译码模块470执行、处理、准备或提供各种译码操作。因此,将译码模块470包含在内为视频译码设备400的功能提供了实质性的改进,并且影响了视频译码设备400到不同状态的转换。或者,以存储在存储器460中并由处理器430执行的指令来实现译码模块470。
[0185]
存储器460可以包括一个或多个磁盘、磁带机以及固态硬盘,并且可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令
和数据。例如,存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read

onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、三态内容寻址存储器(ternarycontent

addressablememory,tcam)和/或静态随机存取存储器(staticrandom

accessmemory,sram)。
[0186]
图5为示例性实施例提供的装置500的简化框图。装置500可以用作图1的源设备12和目的地设备14中的任一个或两个。
[0187]
装置500中的处理器502可以是中央处理器。或者,处理器502可以是现有的或今后将开发出的能够操控或处理信息的任何其它类型的设备或多个设备。虽然可以使用如图所示的处理器502等单个处理器来实现所公开的实现方式,但使用多个处理器实现时可以提高速度和效率。
[0188]
在一种实现方式中,装置500中的存储器504可以是只读存储器(read

onlymemory,rom)设备或随机存取存储器(randomaccessmemory,ram)设备。任何其它合适类型的存储设备都可以用作存储器504。存储器504可以包括处理器502通过总线512访问的代码和数据506。存储器504还可以包括操作系统508和应用程序510,应用程序510包括至少一个程序,所述至少一个程序使得处理器502执行本文中所描述的方法。例如,应用程序510可以包括应用1至n,其包括执行本文所述方法的视频编码应用。
[0189]
装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是将显示器与触敏元件相结合的触敏显示器,该触敏显示器能够用于感测触摸输入。显示器518可以通过总线512与处理器502耦合。
[0190]
虽然装置500的总线512在图中示也为单个总线,但是总线512可以有多个。此外,辅助存储器514可以直接与装置500中的其它组件耦合或可以通过网络访问,并且可以包括单个集成单元(例如一个存储卡)或多个单元(例如多个存储卡)。因此,装置500可以具有各种配置。
[0191]
jvet

m0102中提供了帧内子划分(intrasub

partition,isp)工具的详细信息,该工具的简要说明如下:
[0192]
该isp工具根据块大小将亮度帧内预测块垂直或水平划分为2或4个子划分,如表1所示。图6和图7示出了这两种可能性的示例。所有子划分满足具有至少16个样本的条件。
[0193]
表格1基于块大小的子划分数量
[0194][0195][0196]
对于每个子划分,残差信号是通过对编码器发送的系数进行熵解码,然后进行反量化和逆变换得到的。然后对该子划分进行帧内预测,最后通过将该残差信号添加到预测信号得到相应的重构样本。因此,每个子划分的重建值可用于生成下一个子划分的预测,重复该过程。所有子划分共用同一个帧内模式。
[0197]
根据该帧内模式和使用的拆分,使用两种不同的处理顺序:正常顺序和相反顺序。在正常顺序中,待处理的第一个子划分是包括cu左上样本的子划分,然后是向下(水平划分)或向右(垂直划分)。因此,用于生成子划分预测信号的参考样本仅位于行的左侧和上方。另一方面,相反顺序从包括cu左下样本的子划分开始,然后向上继续,或者从包括cu右上样本的子划分开始,然后向左继续。
[0198]
图8示出了用于块帧内预测的参考样本的行位置。取决于参考行(referenceline)的索引,可以使用与预测块不相邻(即当参考行的索引不等于0时)的参考样本来预测预测块(块单元)的样本。
[0199]
vvc草案中对平面帧内预测模式规定如下:
[0200]
对该过程的输入包括:
[0201]

变量ntbw,表示变换块宽度;
[0202]

变量ntbh,表示变换块高度;
[0203]

相邻样本p[x][y],其中x=

1,y=

1..ntbh和x=0..ntbw,y=

1。
[0204]
该过程的输出是预测样本predsamples[x][y],其中x=0..ntbw

1,y=0..ntbh

1。
[0205]
变量nwa和nh推导如下:
[0206]
nw=max(ntbw,2)
[0207]
nh=max(ntbh,2)
[0208]
预测样本predsamples[x][y]的值推导如下,其中x=0..ntbw

1,y=0..ntbh

1:
[0209]
predv[x][y]=((nh
‑1‑
y)*p[x][

1] (y 1)*p[

1][ntbh])<<log2(nw)
[0210]
predh[x][y]=((nw
‑1‑
x)*p[

1][y] (x 1)*p[ntbw][

1])<<log2(nh)
[0211]
predsamples[x][y]=(predv[x][y] predh[x][y] nw*nh)>>(log2(nw) log2(nh) 1)
[0212]
vvc草案中对dc帧内预测过程规定如下:
[0213]
对该过程的输入包括:
[0214]

变量ntbw,表示变换块宽度;
[0215]

变量ntbh,表示变换块高度;
[0216]

相邻样本p[x][y],其中x=

1,y=

1..ntbh

1和x=0..ntbw

1,y=

1。
[0217]
该过程的输出是预测样本predsamples[x][y],其中x=0..ntbw

1,y=0..ntbh

1。
[0218]
预测样本predsamples[x][y]的值通过以下顺序步骤推导,其中x=0..ntbw

1,y=0..ntbh

1:
[0219]
1.变量dcval推导如下:
[0220]

当ntbw等于ntbh时:
[0221][0222]

当ntbw大于ntbh时:
[0223][0224]

当ntbw小于ntbh时:
[0225][0226]
2.预测样本predsamples[x][y]推导如下:
[0227]
predsamples[x][y]=dcval,其中x=0..ntbw

1,y=0..ntbh

1。
[0228]
现有技术方法仅在参考行的索引为非0时使用方向性帧内预测,即在这种情况下禁用dc帧内预测模式和平面帧内预测模式。
[0229]
不执行dc帧内预测模式的另一种情况是当使用帧内子划分(isp)时。
[0230]
vvc草案版本规定了帧内预测模式的不同编码。码流中指示的语法元素序列的选择取决于启用或禁用的特定工具。具体地,只有当intra_luma_ref_idx标志和intra_subpartitions_mode_flag标志等于0,才指示mpm标志(见表2)。
[0231]
表2中vvc规范草案版本4的修订版7中的编码单元语法规定了帧内模式索引的编码。
[0232][0233][0234]
目前,在vvc软件和规范草案中维护了多个版本的mpm清单。使用多个mpm列表的硬件设计也是不可取的。但是,如果在当前禁用帧内预测模式的情况下启用帧内预测模式,会
导致帧内标志的两种组合产生类似的帧内预测块。显然这种设计是冗余的,为了解决这个问题,指示或帧内预测部分都需要修改。
[0235]
本实施例的范围是在参考样本与预测块不相邻或预测块被进一步划分(例如使用isp)的情况下修改平面和dc帧内预测过程。修改不仅包括预测样本的确定过程,还包括参考样本滤波和位置相关帧内预测组合(position

dependentintrapredictioncombination,pdpc)过程。
[0236]
此类修改的目的是为所有帧内预测工具提供一个统一的帧内模式指示机制。
[0237]
在使用dc或平面帧内预测模式时以及当参考样本与预测块不相邻或当预测块被进一步划分(例如使用isp)的情况下,本实施例修改参考样本的处理,并引入pdpc的条件切换。处理包括从上方和左侧区域(如图8所示)的重建样本中选择参考样本及其滤波。
[0238]
本实施例提供单一统一指示机制,以编码帧内预测模式。表3提供了帧内预测模式编码的示例性统一指示方法。
[0239]
表3帧内模式索引的示例性统一编码
[0240][0241][0242]
表2和表3所示的编码方法的区别在于,在示例语法中删除了intra_luma_mpm_flag的条件指示。
[0243]
从规范中可以看出,当参考行索引为非0,平面帧内预测模式无法工作。图9所示的本发明实施例描述了如何处理这个问题。图9描述第三参考行的情况。针对平面帧内预测模式选择的参考样本用阴影填充的矩形表示。假设第一个左上样本(表示为a)的位置等于(0,0),平面帧内预测可以修改如下:
[0244]
对该过程的输入包括:
[0245]

变量refidx,表示帧内预测参考行索引;
[0246]

变量ntbw,表示变换块宽度;
[0247]

变量ntbh,表示变换块高度;
[0248]

参考样本p[x][y],其中x=
‑1‑
refidx,y=

refidx..ntbh和x=

refidx..ntbw,y=
‑1‑
refidx。
[0249]
该过程的输出是预测样本predsamples[x][y],其中x=0..ntbw

1,y=0..ntbh

1。
[0250]
变量nwa和nh推导如下:
[0251]
nw=max(ntbw,2)
[0252]
nh=max(ntbh,2)
[0253]
预测样本predsamples[x][y]的值推导如下,其中x=0..ntbw

1,y=0..ntbh

1:
[0254]
predv[x][y]=((nh
‑1‑
y)*p[x][
‑1‑
refidx] (y 1)*p[
‑1‑
refidx][ntbh])<<log2(nw)
[0255]
predh[x][y]=((nw
‑1‑
x)*p[
‑1‑
refidx][y] (x 1)*p[ntbw][
‑1‑
refidx])<<log2(nh)
[0256]
predsamples[x][y]=(predv[x][y] predh[x][y] nw*nh)>>(log2(nw) log2(nh) 1)
[0257]
图10所示的替代实施例公开了从参考行中选择用于平面帧内预测模式的参考样本的另一方法。该方法描述如下。
[0258]
对该过程的输入包括:
[0259]

变量refidx,表示帧内预测参考行索引;
[0260]

变量ntbw,表示变换块宽度;
[0261]

变量ntbh,表示变换块高度;
[0262]

相邻样本p[x][y],其中x=
‑1‑
refidx,y=
‑1‑
refidx..ntbh

refidx和x=

refidx..ntbw

refidx,y=
‑1‑
refidx。
[0263]
该过程的输出是预测样本predsamples[x][y],其中x=0..ntbw

1,y=0..ntbh

1。
[0264]
变量nwa和nh推导如下:
[0265]
nw=max(ntbw,2)
[0266]
nh=max(ntbh,2)
[0267]
预测样本predsamples[x][y]的值推导如下,其中x=0..ntbw

1,y=0..ntbh

1:
[0268]
predv[x][y]=((nh
‑1‑
y)*p[x

refidx][
‑1‑
refidx] (y 1)*p[
‑1‑
refidx][ntbh

refidx])<<log2(nw)
[0269]
predh[x][y]=((nw
‑1‑
x)*p[
‑1‑
refidx][y

refidx] (x 1)*p[ntbw

refidx][

1

refidx])<<log2(nh)
[0270]
predsamples[x][y]=(predv[x][y] predh[x][y] nw*nh)>>(log2(nw) log2(nh) 1)
[0271]
另一个替代实施例包括对两个样本使用特殊位移,这两个样本的值分别作为双预测的底行样本值和右侧样本值。从图11可以看出,参考样本是从具有间隙的参考行中选择的。本实施例描述如下。
[0272]
对该过程的输入包括:
[0273]

变量refidx,表示帧内预测参考行索引;
[0274]

变量ntbw,表示变换块宽度;
[0275]

变量ntbh,表示变换块高度;
[0276]

相邻样本p[x][y],其中x=
‑1‑
refidx,y=
‑1‑
refidx..ntbh

refidx和x=

refidx..ntbw

refidx,y=
‑1‑
refidx。
[0277]
该过程的输出是预测样本predsamples[x][y],其中x=0..ntbw

1,y=0..ntbh

1。
[0278]
变量nwa和nh推导如下:
[0279]
nw=max(ntbw,2)
[0280]
nh=max(ntbh,2)
[0281]
预测样本predsamples[x][y]的值推导如下,其中x=0..ntbw

1,y=0..ntbh

1:
[0282]
predv[x][y]=((nh
‑1‑
y)*p[x

refidx][
‑1‑
refidx] (y 1)*p[
‑1‑
refidx][ntbh])<<log2(nw)
[0283]
predh[x][y]=((nw
‑1‑
x)*p[
‑1‑
refidx][y

refidx] (x 1)*p[ntbw][
‑1‑
refidx])<<log2(nh)
[0284]
predsamples[x][y]=(predv[x][y] predh[x][y] nw*nh)>>(log2(nw) log2(nh) 1)
[0285]
当参考行索引为非0,也无法调用dc帧内预测过程。
[0286]
图12和图13所示的实施例描述了当参考行索引为非0如何使用dc模式执行帧内预测。这种情况下的样本机制与上面针对平面帧内预测模式所公开的样本机制类似。
[0287]
对该过程的输入包括:
[0288]

变量ntbw,表示变换块宽度;
[0289]

变量ntbh,表示变换块高度;
[0290]

变量refidx,表示帧内预测参考行索引;
[0291]

相邻样本p[x][y],其中x=
‑1‑
refidx,y=
‑1‑
refidx..ntbh

refidx

1和x=

refidx..ntbw

refidx

1,y=
‑1‑
refidx。
[0292]
该过程的输出是预测样本predsamples[x][y],其中x=0..ntbw

1,y=0..ntbh

1。
[0293]
预测样本predsamples[x][y]的值通过以下顺序步骤推导,其中x=0..ntbw

1,y=0..ntbh

1:
[0294]
3.变量dcval推导如下:
[0295]

当ntbw等于ntbh时:
[0296][0297]

当ntbw大于ntbh时:
[0298][0299]

当ntbw小于ntbh时:
[0300][0301]
4.预测样本predsamples[x][y]推导如下:
[0302]
predsamples[x][y]=dcval,其中x=0..ntbw

1,y=0..ntbh

1。
[0303]
在另一个发明实施例中,在参考样本与预测块不相邻时,即当参考样本的参考行索引(由intra_luma_ref_idx指示)不等于0时,禁用参考样本帧内平滑。另一个实施例包括和参考样本的参考行索引的平面帧内预测模式相关的不同参考样本滤波器。
[0304]
表4和表5提供了示例性滤波器选择。
[0305]
表4和参考样本的参考行索引相关的示例性滤波器选择
[0306][0307]
表5和参考样本的参考行索引相关的示例性滤波器选择
[0308][0309]
在本发明的另一个实施例中,当帧内子划分(isp)标志设置为1时,使用平面和dc帧内预测模式对子划分进行帧内预测。建议isp标志设置为1时不进行pdpc操作。
[0310]
对于启用isp模式的情况,dc帧内预测处理的示例性实施例如下:
[0311]

计算所述整个块的所述参考样本的dc值;
[0312]

使用所述预测dc值作为属于所述预测块的所有子块的帧内预测值。
[0313]
本发明提供一种统一参考样本和插值滤波器选择的方法和装置,使用帧内子划分和多参考行帧内预测进行帧内预测。在单个帧内预测模块(图2和图3中的254、354)中使用的若干帧内预测机制的组合需要统一处理步骤。具体地,在以下方面相同或执行最少次数
的检查:
[0314]

帧内预测模式索引的指示;
[0315]

从重建相邻样本选择的参考样本集合;
[0316]

参考样本滤波;
[0317]

子像素插值滤波。
[0318]
根据帧内预测模式索引推导帧内预测模式不如帧内预测模式指示那么重要。但是很重要的一点,推导帧内预测模式是帧内预测过程的一部分,可能会引入额外的延迟,尤其是在块大小较小时。产生这种延迟的原因是,帧内预测只有在推导出帧内预测模式后才开始,而对于较小的块,帧内预测过程更快。
[0319]
本发明实施例的目标为统一不同帧内预测机制下的帧内平滑决策步骤,包括:
[0320]

帧内子划分(isp);
[0321]

模式相关帧内平滑(mode

dependentintrasmoothing,mdis);
[0322]

宽角度帧内预测(wide

angularintraprediction,waip);
[0323]

多参考行预测(multi

referencelineprediction,mrlp);
[0324]

位置相关帧内预测组合(position

dependentintrapredictioncombination,pdpc)。
[0325]
本发明实施例是决策过程,所述决策过程通过检查以下条件集合来选择参考样本和插值滤波器。所述条件集合包括:
[0326]

块宽高比;
[0327]

主参考边长度;
[0328]

帧内预测模式;
[0329]

帧内子划分。
[0330]
本实施例的步骤如下:
[0331]

根据从码流中解析的所述标志快速检查是否需要帧内平滑,其中,检测的块滤波状态包括:
[0332]
o非平滑;
[0333]
o平滑;
[0334]
o方向相关平滑(大小相关平滑可以认为是一种方向相关平滑);
[0335]

当检测到状态为方向相关时,使用帧内预测模式和预测块内的样本数量来确定使用的帧内平滑方法,包括以下方法之一或组合:
[0336]
o调整参考样本滤波强度;
[0337]
o调整插值滤波强度,如fg、fc等;
[0338]
o进行pdpc阶段。
[0339]

当检测到所述非平滑状态时,定义帧内平滑方法的组合以不包括其中一种方法;
[0340]

当检测到所述平滑状态时,根据预测块内的样本数量指定帧内平滑方法的默认组合;
[0341]

执行包括所选帧内平滑方法组合的帧内预测。
[0342]
vvc规范草案的一部分规定的根据上述步骤状态推导如下:
[0343]
对该过程的输入包括:
[0344]

帧内预测模式predmodeintra;
[0345]

变量ntbw,表示变换块宽度;
[0346]

变量ntbh,表示变换块高度;
[0347]

变量ncbw,表示编码块宽度;
[0348]

变量ncbh,表示编码块高度;
[0349]

颜色分量索引cidx。
[0350]
该过程的输出是修改后的帧内预测模式predmodeintra、帧内预测角度intrapredangle参数reffilterflag和interpolationflag变量。
[0351]
变量nwa和nh推导如下:
[0352]

如果intrasubpartitionssplittype为isp_no_split或cidx不等于0,则以下情况适用:
[0353]
nw=ntbw
[0354]
(8

125)
[0355]
nh=ntbh
[0356]
(8

126)
[0357]

否则(intrasubpartitionssplittype不为isp_no_split且cidx等于0),则以下情况适用:
[0358]
nw=ncbw
[0359]
nh=ncbh
[0360]
将变量whratio设置为abs(log2(nw/nh))。
[0361]
对于非方块(nw不等于nh),帧内预测模式predmodeintra修改如下:
[0362]

如果以下条件为真(true),则predmodeintra设置为(predmodeintra 65)。
[0363]

nw大于nh
[0364]

predmodeintra大于等于2
[0365]

predmodeintra小于(whratio>1)?(8 2*whratio):8
[0366]

否则,如果以下条件为真,则predmodeintra设置为(predmodeintra

67)。
[0367]

nh大于nw
[0368]

predmodeintra小于等于66
[0369]

predmodeintra大于(whratio>1)?(60

2*whratio):60
[0370]
角度参数intrapredangle根据predmodeintra的值确定。
[0371]
表8

5intrapredangle规范
[0372]
predmodeintra

14

13

12

11

10
–9–8–7–6–5–4–3–2–
1234intrapredangle5123412561711281028673645751453935322926predmodeintra56789101112131415161718192021intrapredangle232018161412108643210
–1–2–
3predmodeintra2223242526272829303132333435363738intrapredangle
–4–6–8–
10

12

14

16

18

20

23

26

29

32

29

26

23

20predmodeintra3940414243444546474849505152535455intrapredangle

18

16

14

12

10
–8–6–4–3–2–
1012346predmodeintra5657585960616263646566676869707172
intrapredangle810121416182023262932353945515764predmodeintra7374757677787980
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
intrapredangle7386102128171256341512
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
[0373]
变量filterflag推导如下:
[0374]

将变量ntbs设置为log2(nw) log2(nh)。
[0375]

如果以下条件中的一个或多个为真,则filterflag设置为0。
[0376]

cidx不等于0;
[0377]

refidx不等于0;
[0378]

intrasubpartitionssplittype不为isp_no_split,cidx等于0,predmodeintra大于等于intra_angular34,且nw大于8;
[0379]

intrasubpartitionssplittype不为isp_no_split,cidx等于0,predmodeintra小于intra_angular34,且nh大于8。
[0380]

否则,如果predmodeintra为intra_planar,则变量filterflag设置为ntbs>5?1:0。
[0381]

否则,如果intrapredangle大于32,则设置变量filterflag等于1。
[0382]

否则,以下情况适用:
[0383]

变量mindistverhor设置为min(abs(predmodeintra

50),abs(predmodeintra

18))。
[0384]

变量intrahorverdistthres[ntbs]在表8

4中指定。
[0385]

变量filterflag推导如下:
[0386]

当mindistverhor大于intrahorverdistthres[ntbs]或abs(intrapredangle)>32时,filterflag设置为1。
[0387]
表8

4各种变换块大小ntbs的intrahorverdistthres[ntbs]规范
[0388][0389]
输出变量reffilterflag和interpolationflag推导如下:
[0390]

如果predmodeintra为intra_planar或predintraang为32的整数倍,则变量reffilterflag设置为filterflag,interpolationflag设置为0。
[0391]

否则,变量reffilterflag设置为0,interpolationflag设置为filterflag。
[0392]
在上述描述中,推导两个标志reffilterflag和interpolationflag。当reffilterflag为1时,参考样本在帧内预测中使用之前被滤波。例如,可以使用具有系数[121]/4的滤波器。
[0393]
interpolationflag用于控制插值滤波器的选择。当interpolationflag为1时,使用fg系数,否则在方向帧内预测过程的子样本插值步骤中使用fc系数(见表8

6)。
[0394]
表8

6插值滤波器系数fc和fg规范
[0395]
[0396][0397]
替代实施例可以规定如下:
[0398]
对该过程的输入包括:
[0399]

帧内预测模式predmodeintra;
[0400]

变量ntbw,表示变换块宽度;
[0401]

变量ntbh,表示变换块高度;
[0402]

变量ncbw,表示编码块宽度;
[0403]

变量ncbh,表示编码块高度;
[0404]

颜色分量索引cidx。
[0405]
该过程的输出是修改后的帧内预测模式predmodeintra、帧内预测角度参数reffilterflag和interpolationflag变量。
[0406]
变量nwa和nh推导如下:
[0407]

如果intrasubpartitionssplittype为isp_no_split或cidx不等于0,则以下情况适用:
[0408]
nw=ntbw
[0409]
nh=ntbh
[0410]

否则(intrasubpartitionssplittype不为isp_no_split且cidx等于0),则以下情况适用:
[0411]
nw=ncbw
[0412]
nh=ncbh
[0413]
将变量whratio设置为abs(log2(nw/nh))。
[0414]
对于非方块(nw不等于nh),帧内预测模式predmodeintra修改如下:
[0415]

predmodeintraorig设置为predmodeintra。
[0416]

如果以下条件为真,则predmodeintra设置为(predmodeintra 65)。
[0417]

nw大于nh
[0418]

predmodeintra大于等于2
[0419]

predmodeintra小于(whratio>1)?(8 2*whratio):8
[0420]

否则,如果以下条件为真,则predmodeintra设置为(predmodeintra

67)。
[0421]

nh大于nw
[0422]

predmodeintra小于等于66
[0423]

predmodeintra大于(whratio>1)?(60

2*whratio):60
[0424]
角度参数intrapredangle根据predmodeintra的值确定。
[0425]

将变量ntbs设置为log2(nw) log2(nh)。
[0426]

当以下条件之一为真时,变量smoothstate设置为0(filter_none):
[0427]

变量ntbs不大于2;
[0428]

cidx不等于0;
[0429]

refidx不等于0;
[0430]

predmodeintraorig为intra_dc;
[0431]

isp标志为启用。
[0432]

当intrapredangle大于32时,变量smoothstate设置为1(filter_always)。
[0433]

否则,smoothstate设置为2(filter_mdis)。
[0434]

如果smoothstate小于2,则filterflag设置为smoothstate。
[0435]

否则,当以下条件之一为真时,filterflag设置为1:
[0436]

predmodeintraorig为intra_planar且ntbs大于5;
[0437]

当参数predmodeintraorig大于1,参数predmodeintraorig小于67且min(abs(predmodeintra

50),abs(predmodeintra

18))大于intrahorverdistthres[ntbs]时,
[0438]
输出变量reffilterflag和interpolationflag推导如下:
[0439]

如果predmodeintra为intra_planar或predintraang为32的整数倍,则变量reffilterflag设置为filterflag,interpolationflag设置为0。
[0440]

否则,变量reffilterflag设置为0,interpolationflag设置为filterflag。
[0441]
如果smoothstate按照如下修改设置为2(filter_mdis),可以进一步优化mdis决策:
[0442]

[0443]
如果smoothstate小于2,则filterflag设置为smoothstate。
[0444]

否则,当以下条件之一为真时,filterflag设置为1:
[0445]

predmodeintraorig为intra_planar且ntbs大于5;
[0446]

predmodeintraorig大于1,predmodeintraorig小于67,且abs(intrapredangle)不小于intrapredanglethr[ntbs]。
[0447][0448]
输出变量reffilterflag和interpolationflag推导如下:
[0449]

如果predmodeintra为intra_planar或predintraang为32的整数倍,则变量reffilterflag设置为filterflag,interpolationflag设置为0。
[0450]

否则,变量reffilterflag设置为0,interpolationflag设置为filterflag。
[0451]

[0452]
基于上述实施例,用于非平滑状态的一组条件可以包括以下一项或几项:
[0453]

isp标志为启用;
[0454]

refidx大于1;
[0455]

主参考边的长度小于主参考边阈值。
[0456]
所述主参考边阈值可以为等于4、8或16的预定义常数值。
[0457]
此外,当isp标志为启用时,可以使用不同的阈值来确定filterflag的值。表6和表7举例说明predintraang参数值和intrapredmode值取决于不同的阈值。
[0458]
表6 intrapredangle取决于isp标志的值
[0459][0460][0461]
表7 intrahorverdistthres取决于isp标志的值
[0462][0463]
图14为示例性插值滤波器类型选择的框图。如图14的步骤1所示,如果isp为启用(即intrasubpartitionssplittype不等于isp_no_split),则对isp插值滤波器类型执行一步/一键式决策。当isp为启用时,不需要根据模式选择插值滤波器类型。当isp为启用时,filterflag为0,选择插值滤波器类型fc。这可能需要统一决策步骤。
[0464]
如果isp为关闭(即,没有isp),按照步骤2和步骤3执行传统方法。传统方法是需要根据模式来选择插值滤波器类型。步骤2:推导帧内预测模式。步骤3:推导插值滤波器类型的模式相关条件和大小相关条件。因此,对于传统方法,对插值滤波器类型至少有三步决策。在步骤3之后,根据步骤3推导的模式相关条件和大小相关条件选择插值滤波器类型。
[0465]
图15是与传统方法比较的另一示例性插值滤波器类型选择的框图。在传统方法中,当mrl为关闭(即refidx为0)且isp为启用(即intrasubpartitionssplittype不等于isp_no_split)时,推导帧内模式。例如,最可能模式(mostprobablemode,mpm)列表和非mpm列表是在推导帧内模式时构建的。
[0466]
然后,选择模式相关插值滤波器类型。选择模式相关插值滤波器时,会进行参考样本平滑或基于mdis的插值滤波器选择。从最近的参考行和参考列获取最小数量的参考样本。
[0467]
获取参考样本后生成帧内预测器。例如,可以在预测值生成时执行最多4个子块的顺序预测。
[0468]
与传统方法相比,本发明实施例在mrl为关闭(即refidx为0)且isp为启用(即,intrasubpartitionssplittype不等于isp_no_split)时,不需要根据模式来选择插值滤波器类型。帧内模式推导可以和滤波器选择并行进行。因此,如果在生成帧内预测时使用本发明实施例,关键步骤更少。
[0469]
因为需要迭代解码过程,isp的预测生成通常更加复杂。本发明实施例可以提高解码效率。
[0470]
具体地,以下由解码设备或编码设备实现当前块的预测编码方法和实施例。解码设备可以为图1a的视频解码器30或图3的解码器30。编码设备可以为图1a的视频编码器20或图2的编码器20。
[0471]
根据实施例1600(参见图16),步骤1601:设备获取帧内子划分(intrasub

partition,isp)信息,其中,所述isp信息表示isp是否用于划分当前块。所述isp信息由标志intrasubpartitionssplittype表示。当intrasubpartitionssplittype不等于isp_no_split时,使用isp(即,启用isp)划分所述当前块。
[0472]
步骤1602:所述设备根据所述isp信息选择插值滤波器的系数集合,其中,所述插值滤波器的系数集合为fg系数或fc系数。滤波标志(filterflag)的值表示所述插值滤波器的系数集合为fg系数或fc系数。当filterflag的值为0时,选择fc系数。否则,选择fg系数。
[0473]
当isp信息表示isp用于划分所述当前块时,块滤波状态为非平滑状态。所述块滤波状态由标志smoothstate表示,当smoothstate的值为0时,所述块滤波状态为非平滑状态。filterflag的值等于smoothstate的值。即,当所述块滤波状态为非平滑状态时,filterflag的值为0。相应地,选择fc系数。
[0474]
步骤1603:所述设备通过将所述系数集合应用于参考样本,得到所述当前块的预测样本。所述设备可以根据所述当前块的帧内预测模式,从所述插值滤波器的系数集合中确定所述插值滤波器系数;然后通过将所述确定的插值滤波器系数应用于参考样本,得到所述当前块的预测样本。
[0475]
根据实施例1700(参见图17),步骤1701:设备根据帧内子划分(intrasub

partition,isp)信息检测块滤波状态,其中,所述块滤波状态包括非平滑状态、平滑状态或方向相关平滑状态。所述isp信息由标志intrasubpartitionssplittype表示。当intrasubpartitionssplittype不等于isp_no_split时,使用isp(即,启用isp)划分所述当前块。当isp信息表示isp用于划分所述当前块时,块滤波状态为非平滑状态。所述块滤波状态由标志smoothstate表示,当smoothstate的值为0时,所述块滤波状态为非平滑状态。
[0476]
步骤1702:所述设备根据所述块滤波状态的值选择插值滤波器的系数集合,其中,所述插值滤波器的系数集合为fg系数或fc系数。滤波标志(filterflag)的值表示所述插值滤波器的系数集合为fg系数或fc系数。当filterflag的值为0时,选择fc系数。否则,选择fg系数。
[0477]
filterflag的值等于smoothstate的值。即,当所述块滤波状态为非平滑状态时,filterflag的值为0。相应地,选择fc系数。
[0478]
步骤1703:所述设备通过将所述系数集合应用于参考样本,得到所述当前块的预测样本。所述设备可以根据所述当前块的帧内预测模式,从所述插值滤波器的系数集合中确定所述插值滤波器系数;然后通过将所述确定的插值滤波器系数应用于参考样本,得到所述当前块的预测样本。
[0479]
上述实施例示出了实施例1600或1700的详细信息。
[0480]
图18示出了设备1800的实施例。设备1800可以为图1a的视频解码器30或图3的解码器30,或可以为图1a的视频编码器20或图2的编码器20。所述设备1800可用于实现实施例1600和上述其它实施例。
[0481]
用于图像帧内预测的设备1800包括获取单元1801、选择单元1802和预测单元1803。所述获取单元1801,用于获取帧内子划分(intrasub

partition,isp)信息,其中,所述isp信息表示isp是否用于划分当前块。所述选择单元1802,用于根据所述isp信息选择插值滤波器的系数集合,其中,所述插值滤波器的系数集合为fg系数或fc系数。所述预测单元1803,用于通过将所述系数集合应用于参考样本,得到所述当前块的预测样本。
[0482]
所述选择单元1802,用于当所述isp信息表示isp用于划分所述当前块时,确定块滤波状态为非平滑状态;当所述块滤波状态为非平滑状态时,选择fc系数。
[0483]
所述预测单元1803,用于根据所述当前块的帧内预测模式,从所述插值滤波器的系数集合中确定所述插值滤波器系数;然后通过将所述确定的插值滤波器系数应用于参考样本,得到所述当前块的预测样本。
[0484]
图19示出了设备1900的实施例。设备1900可以为图1a的视频解码器30或图3的解码器30,或可以为图1a的视频编码器20或图2的编码器20。所述设备1900可用于实现实施例1700和上述其它实施例。
[0485]
用于图像帧内预测的设备1900包括检测单元1901、选择单元1902和预测单元1903。所述检测单元1901,用于根据帧内子划分(intrasub

partition,isp)信息检测块滤波状态,其中,所述块滤波状态包括非平滑状态、平滑状态或方向相关平滑状态。所述选择单元1902,用于根据所述块滤波状态的值选择插值滤波器的系数集合,其中,所述插值滤波器的系数集合为fg系数或fc系数。所述预测单元1903,用于通过将所述系数集合应用于参考样本,得到所述当前块的预测样本。
[0486]
所述选择单元1902,用于根据所述块滤波状态确定滤波标志(filterflag),其中,所述filterflag的值表示所述插值滤波器的系数集合为fg系数或fc系数;根据所述滤波标志的值选择所述插值滤波器的系数集合。
[0487]
所述预测单元1903,用于根据所述当前块的帧内预测模式,从所述插值滤波器的系数集合中确定所述插值滤波器系数;然后通过将所述确定的插值滤波器系数应用于参考样本,得到所述当前块的预测样本。
[0488]
本发明提供以下一组实施例或方面:
[0489]
实施例1一种用于块帧内预测的帧内平滑方法,其特征在于,包括:
[0490]
确定所述块的平滑状态,其中,所述平滑状态包括非平滑状态、平滑状态或方向相关平滑状态;
[0491]
根据所述块的平滑状态,执行以下步骤:
[0492]
o当所述平滑状态为方向相关平滑状态时,使用方向斜率和预测块内的样本数量确定帧内平滑方法;
[0493]
o当所述平滑状态为非平滑状态时,不使用所述帧内平滑方法;或者
[0494]
o当所述平滑状态为平滑状态时,使用根据预测块内的样本数量的帧内平滑方法的默认组合。
[0495]
实施例2根据实施例1所述的方法,所述帧内平滑方法包括以下一个或多个:
[0496]
o调整参考样本滤波强度;
[0497]
o调整插值滤波强度;或
[0498]
o进行pdpc阶段。
[0499]
实施例3根据实施例1或2所述的方法,所述方向斜率根据所述预测模式索引定义为min(abs(predmodeintra

50),abs(predmodeintra

18))。
[0500]
实施例4根据实施例1或2所述的方法,所述方向斜率根据参数predintraang定义为abs(predintraang)。
[0501]
实施例5根据上述任一实施例的方法,所述帧内预测包括以下一项或多项:
[0502]

帧内子划分(isp);
[0503]

模式相关帧内平滑(mode

dependentintrasmoothing,mdis);
[0504]

宽角度帧内预测(wide

angularintraprediction,waip);
[0505]

多参考行预测(multi

referencelineprediction,mrlp);或
[0506]

位置相关帧内预测组合(position

dependentintrapredictioncombination,pdpc)。
[0507]
实施例6根据实施例5所述的方法,当所述平滑状态为方向相关平滑状态时考虑isp标志。
[0508]
实施例7根据实施例5或6所述的方法,当帧内预测模式为intra_dc时,mrlp参考索引不等于0时,或者处理色度分量时,没有将滤波状态设置为不滤波。
[0509]
实施例8根据上述任一实施例的方法,根据以下一项或多项统一所述帧内预测:
[0510]

块宽高比;
[0511]

主参考边长度;
[0512]

帧内预测模式;或
[0513]

帧内子划分。
[0514]
实施例9根据上述任一实施例的方法,所述方法还包括:
[0515]
从码流中解析一个或多个标志;
[0516]
根据所述一个或多个标志确定是否执行帧内平滑。
[0517]
如上所述,当isp为启用时,本发明实施例不需要根据模式来选择插值滤波器类型。当isp为启用时,filterflag为0,选择插值滤波器类型fc。本发明实施例提供了一种技术方案,和需要根据模式来选择插值滤波器类型的传统方法相比,步骤更少或可以忽略某个步骤。这可以提高编码或解码效率,并且还统一决策步骤。
[0518]
下文对上述实施例中所示的编码方法和解码方法的应用以及使用这些方法的系统进行说明。
[0519]
图20为用于实现内容分发业务的内容提供系统3100的框图。该内容供应系统3100包括捕获设备3102、终端设备3106,并且可选地包括显示器3126。所述捕获设备3102与所述终端设备3106通过通信链路3104进行通信。所述通信链路可以包括上述通信信道13。所述通信链路3104包括但不限于wi

fi、以太网、电缆线、无线(3g/4g/5g)、usb或其任意类型的组合等。
[0520]
所述捕获设备3102生成数据,且可以通过如上述实施例所示的编码方法对数据进行编码。或者,所述捕获设备3102可以将数据分发到流媒体服务器(图中未示出),由该服务器对数据进行编码,并将经编码的数据传输到所述终端设备3106。所述捕获设备3102包括但不限于相机、智能手机或平板电脑、计算机或膝上型电脑、视频会议系统、pda、车载设备或其任意组合等。例如,所述捕获设备3102可以包括上述源设备12。当所述数据包括视频时,所述捕获设备3102中的视频编码器20实际上可以执行视频编码处理。当所述数据包括音频(即声音)时,所述捕获设备3102中包括的音频编码器实际上可以执行音频编码处理。在一些实际场景中,所述捕获设备3102通过将经编码的视频和音频数据复用在一起来分发所述经编码的视频和音频数据。在其它实际场景中,例如在视频会议系统中,不对经编码的音频数据和经编码的视频数据进行复用。所述捕获设备3102分别将经编码的音频数据和经编码的视频数据分发到所述终端设备3106。
[0521]
在所述内容供应系统3100中,所述终端设备310接收并再现经编码的数据。所述终端设备3106可以是具有数据接收和恢复能力的设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络视频录像机(networkvideorecorder,nvr)/数字视频录像机(digitalvideorecorder,dvr)3112、tv3114、机顶盒(settopbox,stb)3116、视频会议系统3118、视频监控系统3120、个人数字助理(personaldigitalassistant,pda)3122、车载设备3124或其任意组合等,其能够解码上述经编码的数据。例如,所述终端设备3106可以包括上述目的地设备14。当经编码的数据包括视频时,所述终端设备中包括的视频解码器30优先进行视频解码。当经编码的数据包括音频时,所述终端设备中包括的音频解码器优先进行音频解码处理。
[0522]
对于带有显示器的终端设备,例如智能手机或平板电脑3108、计算机或膝上型电脑3110、网络视频录像机(networkvideorecorder,nvr)/数字视频录像机(digitalvideorecorder,dvr)3112、tv3114、个人数字助理(personaldigitalassistant,pda)3122或车载设备3124,该终端设备可以将经解码的数据馈送到该终端设备的显示器。对于不带显示器的终端设备,例如,stb3116、视频会议系统3118或视频监控系统3120,该终端设备与外接显示器3126连接,用于接收并显示经解码的数据。
[0523]
该系统中的每个设备在进行编码或解码时,可以使用如上述实施例中所示的图像编码设备或图像解码设备。
[0524]
图21为终端设备3106的示例性结构图。所述终端设备3106从捕获设备3102接收到码流之后,协议处理单元3202分析该码流的传输协议。所述协议包括但不限于实时流协议(realtimestreamingprotocol,rtsp)、超文本传输协议(hypertexttransferprotocol,http)、http直播流协议(httplivestreamingprotocol,hls)、mpeg

dash协议、实时传输协议(real

timetransportprotocol,rtp)、实时消息协议(realtimemessagingprotocol,rtmp)或其任意类型的组合等。
[0525]
所述协议处理单元3202对该码流进行处理之后,生成码流文件。将所述文件输出到解复用单元3204。所述解复用单元3204可以将经复用的数据分离为经编码的音频数据和经编码的视频数据。如上文所述,在一些实际场景中,例如在视频会议系统中,不对经编码的音频数据和经编码的视频数据进行复用。在这种情况下,经编码的数据不通过所述解复用单元3204传输到视频解码器3206和音频解码器3208。
[0526]
通过解复用处理,生成视频基本码流(elementarystream,es)、音频es,且可选地生成字幕。所述视频解码器3206包括如上述实施例描述的视频解码器30。所述视频解码器3206通过如上述实施例所示的解码方法解码所述视频es以生成视频帧,并将该数据馈送到同步单元3212。所述音频解码器3208解码所述音频es以生成音频帧,并将该数据馈送至同步单元3212。或者,在将该数据馈送至同步单元3212之前,视频帧可以存储在缓冲区中(图y未示出)。类似地,在将该数据馈送至同步单元3212之前,音频帧可以存储在缓冲区(图y未示出)。
[0527]
所述同步单元3212同步所述视频帧和所述音频帧,并将视频/音频提供给视频/音频显示器3214。例如,所述同步单元3212同步视频信息和音频信息的呈现。可以使用与经译码的音频和可视数据的呈现相关的时间戳和与数据流的分发相关的时间戳将信息译码到语法中。
[0528]
如果码流中包括字幕,则字幕解码器3210对所述字幕进行解码,使所述字幕与所述视频帧和所述音频帧同步,并将视频/音频/字幕提供给视频/音频/字幕显示器3216。
[0529]
本发明并不限于上述系统,上述实施例中的图像编码设备或图像解码设备都可以结合到其它系统,例如汽车系统。
[0530]
数学运算符
[0531]
本技术中使用的数学运算符与c编程语言中使用的数学运算符类似。但是,这里准确定义了整除运算和算术移位运算的结果,并且还定义了其它运算,如幂运算和实值除法运算。编号和计数规范通常从零开始,例如,“第一个”相当于第0个,“第二个”相当于第1个,等等。
[0532]
算术运算符
[0533]
算术运算符定义如下:
[0534]

ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
加法
[0535]
‑ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
减法(用作双参数运算符)或者非运算(用作一元前缀运算符)。
[0536]
*
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
乘法,包括矩阵乘法。
[0537][0538]
÷ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
用来表示数学等式中的除法运算,但没有截断或者四舍五入操作。
[0539]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
用来表示数学等式中的除法运算,但没有截断或者四舍五入操作。
[0540]
ꢀꢀꢀꢀꢀꢀ
用于计算f(i)的和,i取x到y之间的所有整数,包括x和y。
[0541]
x%y
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
取模运算,x除y的余数,这里x和y都必须是整数,并且x≥和y>0。
[0542]
逻辑运算符
[0543]
逻辑运算符定义如下:
[0544]
x和y的布尔逻辑“与”操作
[0545]
x||y
ꢀꢀꢀꢀ
x和y的布尔逻辑“或”操作
[0546]

ꢀꢀꢀꢀꢀꢀ
布尔逻辑“非”[0547]
x?y:z
ꢀꢀ
如果x为真或不等于0,则等于y的值;否则,等于z的值。
[0548]
关系运算符
[0549]
以下关系运算符定义如下:
[0550]
>
ꢀꢀꢀꢀ
大于
[0551]
>=
ꢀꢀ
大于等于
[0552]
<
ꢀꢀꢀꢀ
小于
[0553]
<=
ꢀꢀ
小于等于
[0554]
== 等于
[0555]
!= 不等于
[0556]
当关系运算符用于一个已赋值为“na”(不适用)的语法元素或变量时,则将值“na”视为该语法元素或变量的唯一值。值“na”不等于任何其它值。
[0557]
按位运算符
[0558]
按位运算符定义如下:
[0559]
&
ꢀꢀꢀꢀ
按位“与”运算。当对整数参数进行运算时,运算的是整数值的二进制补码表示法。当对二进制参数进行运算时,如果该二进制参数包含的位数比另一个参数的少,则通过添加更多等于0的有效位来扩展该较短的参数。
[0560]
|
ꢀꢀꢀꢀ
按位“或”运算。当对整数参数进行运算时,运算的是整数值的二进制补码表示法。当对二进制参数进行运算时,如果该二进制参数包含的位数比另一个参数的少,则通过添加更多等于0的有效位来扩展该较短的参数。
[0561]
^
ꢀꢀꢀꢀ
按位“异或”运算。当对整数参数进行运算时,运算的是整数值的二进制补码表示法。当对二进制参数进行运算时,如果该二进制参数包含的位数比另一个参数的少,则通过添加更多等于0的有效位来扩展该较短的参数。
[0562]
x>>y x的二进制补码整数表示法向右算术移动y个位元。仅当y为非负整数时,才定义该函数。右移操作的结果是移进最高有效位(mostsignificantbit,msb)的比特位应等于移位操作之前的x的msb的值。
[0563]
x<<y x的二进制补码整数表示法向左算术移动y个位元。仅当y为非负整数时,才定义该函数。左移操作的结果是移进最低有效位(leastsignificantbit,lsb)的比特位应等于移位操作之前的x的lsb的值。
[0564]
赋值运算符
[0565]
算术运算符定义如下:
[0566]

ꢀꢀ
赋值运算符
[0567]

ꢀꢀ
增,即,x 等于x=x 1;当在阵列索引中使用时,等于增运算之前变量的值。
[0568]
––ꢀ
减,即x
––
相当于x=x

1;当在阵列索引中使用时,等于减运算之前变量的值。
[0569]
= 增加指定的量,例如:x =3相当于x=x 3,x =(

3)相当于x=x (

3)。
[0570]

= 减少指定的量,例如:x

=3相当于x=x

3,x

=(

3)相当于x=x

(

3)。
[0571]
范围符号
[0572]
以下符号用于说明值的范围:
[0573]
x=y..z x取y到z的范围内的整数值(包含首尾数字),这里x,y和z都是整数,且z大于y。
[0574]
数学函数
[0575]
数学函数定义如下:
[0576][0577]
asin(x)三角反正弦函数,对参数x运算,x在

1.0至1.0(包含首尾数字)范围之间,输出值
[0578]


π
÷
2至π
÷
2(包括首尾数字)范围之间,单位弧度。
[0579]
atan(x)三角反正切函数,对参数x运算,输出值在

π
÷
2至π
÷
2(包括端值)范围之间,单位为弧度。
[0580][0581]
ceil(x)表示大于或等于x的最小整数值。
[0582]
clip1
y
(x)=clip3(0,(1<<bitdepth
y
)

1,x)
[0583]
clip1
c
(x)=clip3(0,(1<<bitdepth
c
)

1,x)
[0584][0585]
cos(x)三角余弦函数,对参数x进行运算,单位为弧度。
[0586]
floor(x)表示小于或等于x的最大整数值。
[0587][0588]
ln(x)返回自然对数中x的值(以e为底的对数,其中,e为自然对数中的底数常数2.718281828
……
)。
[0589]
log2(x)返回以2为底的对数中x的值。
[0590]
log10(x)返回以10为底的对数中x的值。
[0591][0592][0593]
round(x)=sign(x)*floor(abs(x) 0.5)
[0594][0595]
sin(x)三角正弦函数,对参数x进行运算,单位为弧度。
[0596][0597]
swap(x,y)=(y,x)
[0598]
tan(x)三角正切函数,对参数x进行运算,单位为弧度。
[0599]
运算优先级顺序
[0600]
当没有使用括号来显式的表示优先顺序时,则遵循如下规则:
[0601]

高优先级的运算在低优先级的运算之前进行。
[0602]

相同优先级的运算从左到右依次进行。
[0603]
下表从最高到最低的顺序说明运算的优先级,在表中的位置越高,优先级也越高。
[0604]
如果在c编程语言中也使用这些运算符,则本文中采用的优先级顺序与c编程语言中采用的优先级顺序相同。
[0605]
表:运算优先级从最高(表格顶部)到最低(表格底部)进行排序
[0606][0607]
逻辑运算的文字描述
[0608]
在文中,逻辑运算中的语句以数学形式描述如下:
[0609]
if(condition0)
[0610]
statement0
[0611]
elseif(condition1)
[0612]
statement1
[0613]
...
[0614]
else/*informativeremarkonremainingcondition*/
[0615]
statementn
[0616]
可以通过如下方式进行描述:
[0617]
……
如下/
……
以下为准:
[0618]

如果条件0,则语句0
[0619]

否则,如果条件1,则语句1
[0620]

...
[0621]

否则(剩余条件的提示性说明),则语句n
[0622]
每个“如果
……
否则,如果
……
否则,
……“
如果
……”
后面紧跟着
“……
如下”或
“……
以下为准”用来介绍文本中的语句。".最后一个条件“如果
……”
,否则,如果
……
否则,
……
总有一个“否则,
……”
。中间有“如果
……
否则,如果
……
否则”语句可以通过使
“……
如下”或
“……
以下为准”与结尾“否则
……”
匹配来识别。
[0623]
文本中,逻辑运算中的语句以数学形式描述如下:
[0624]
if(condition0a&&condition0b)
[0625]
statement0
[0626]
elseif(condition1a||condition1b)
[0627]
statement1
[0628]
...
[0629]
else
[0630]
statementn
[0631]
可以通过如下方式进行描述:
[0632]
……
如下/
……
以下为准:
[0633]

如果以下所有条件都为真(true),则语句0:
[0634]

条件0a
[0635]

条件0b
[0636]

否则,如果以下一个或多个条件为真,则语句1:
[0637]

条件1a
[0638]

条件1b
[0639]

...
[0640]

否则,语句n
[0641]
文本中,逻辑运算中的语句以数学形式描述如下:
[0642]
if(condition0)
[0643]
statement0
[0644]
if(condition1)
[0645]
statement1
[0646]
可以通过如下方式进行描述:
[0647]
如果条件0,则语句0
[0648]
如果条件1,则语句1
[0649]
尽管上述实施例主要描述了视频译码,但应注意的是,译码系统10、编码器20和解码器30的实施例以及本文描述的其它实施例也可以用于静止图像处理或编解码,即视频编解码中独立于任何先前或连续图像的单个图像的处理或编解码。一般情况下,如果图像处理编码仅限于单个图像17,帧间预测单元244(编码器)和344(解码器)可能不可用。视频编码器20和视频解码器30的所有其它功能(也称为工具或技术)同样可用于静态图像处理,例如残差计算204/304、变换206、量化208、反量化210/310、(逆)变换212/312、分割262/362、帧内预测254/354和/或环路滤波220/320、熵编码270和熵解码304。
[0650]
编码器20和解码器30等的实施例,以及本文描述的与编码器20和解码器30等有关的功能可以以硬件、软件、固件或其任意组合来实现。如果以软件来实现,那么各种功能可作为一或多个指令或代码存储在计算机可读介质上或通过通信介质进行传输,且通过基于硬件的处理单元来执行。计算机可读介质可包括计算机可读存储介质或通信介质,其中,计算机可读存储介质对应于例如数据存储介质的有形介质,通信介质包括促进计算机程序,
例如根据通信协议,从一处传输到另一处的任何介质。在这种方式中,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质或(2)通信介质,例如信号或载波。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索用于实现本发明中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
[0651]
作为示例而非限制,这类计算机可读存储介质可以包括ram、rom、eeprom、cd

rom或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存或可用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以称为计算机可读介质。例如,如果指令是从网站、服务器或其它远程源通过同轴电缆、光纤电缆、双绞线、数字用户线(digitalsubscriberline,dsl)或无线技术(例如红外、无线电、微波等)发送的,则介质的定义包括同轴电缆、光纤电缆、双绞线、dsl或无线技术(例如红外、无线电和微波等)。但是,应理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬时介质,而是指非瞬时有形存储介质。本文使用的磁盘和光盘包括压缩光盘(compactdisc,cd)、激光光盘、光盘、数字通用光盘(digitalversatiledisc,dvd)、软盘和蓝光光盘,盘通常磁性地再现数据,而光盘则用激光光学地再现数据。以上各项的组合也应包括在计算机可读介质的范围内。
[0652]
可通过例如一个或多个数字信号处理器(digitalsignalprocessor,dsp)、通用微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程逻辑阵列(fieldprogrammablelogicarray,fpga)或其它等效集成或离散逻辑电路等的一个或多个处理器来执行指令。因此,如本文中所使用,术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,可将本文所描述的各种功能提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或者并入到组合式编解码器中。同样,所述技术可以完全在一个或多个电路或逻辑元件中实施。
[0653]
本公开的技术可以在广泛的多种设备或装置中实施。这些设备或装置包括无线手机、集成电路(integratedcircuit,ic)或ic组(例如芯片组)。本公开中描述各种组件、模块或单元以强调经配置以执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。更确切地说,如上所述,各种单元可组合于编解码器硬件单元中或者通过互操作的硬件单元(包括如上所述的一个或多个处理器)结合合适软件和/或固件的集合来提供。
再多了解一些

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

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

相关文献