掌桥专利:专业的专利平台
掌桥专利
首页

利用来自空间邻居的信息的CABAC上下文建模

文献发布时间:2024-04-18 19:58:30


利用来自空间邻居的信息的CABAC上下文建模

引用并入

本申请要求于2023年3月23日提交的美国专利申请第18/125,631号“利用来自空间邻居的信息的CABAC上下文建模(CABAC CONTEXT MODELING WITH INFORMATION FROMSPATIAL NEIGHBORS)”的优先权,该专利申请要求于2022年4月6日提交的美国临时申请第63/328,093号“利用来自空间邻居的信息的CABAC上下文建模(CABAC Context Modelingwith Information from Spatial Neighbors)”的优先权。在先申请的公开内容通过引用整体并入本文。

技术领域

本公开描述了总体上涉及视频编解码的实施例。

背景技术

本文中提供的背景描述是为了总体地呈现本公开的上下文。就在本背景部分中描述的工作以及在提交时可能不具有现有技术资格的本说明书的各方面而言,目前指定的发明人的工作既没有明确地也没有隐含地承认为本公开的现有技术。

图像/视频压缩可以帮助在不同的设备、存储和网络上传输图像/视频文件,同时将质量下降降至最低。在一些示例中,视频编解码器技术可以基于空间和时间冗余对视频进行压缩。在一示例中,视频编解码器可以使用被称为帧内预测的技术,该技术可以基于空间冗余对图像进行压缩。例如,帧内预测可以使用来自重建下的当前图片的参考数据用于样本预测。在另一示例中,视频编解码器可以使用被称为帧间预测的技术,该技术可以基于时间冗余对图像进行压缩。例如,帧间预测可以利用运动补偿从先前重建的图片预测当前图片中的样本。运动补偿通常由运动矢量(MV)指示。

发明内容

本公开的各方面提供了用于视频编码/解码的方法和装置。在一些示例中,用于视频解码的装置包括接收电路和处理电路。

根据本公开的一方面,提供了一种在视频解码器中执行的视频解码方法。在该方法中,可以从已编码视频码流接收当前块的已编码信息。已编码信息可以包括与当前块相关联的上下文编码的语法元素。语法元素可以指示当前块的解码参数。可以基于当前块的两个以上空间相邻块的解码参数来确定与上下文编码的语法元素相关联的基于上下文的自适应二进制算术编码(CABAC)上下文模型。可以基于确定的与上下文编码的语法元素相关联的CABAC上下文模型对上下文编码的语法元素进行解码。可以基于已解码语法元素来重建当前块。

在一些实施例中,当前块的两个以上空间相邻块可以包括右上相邻块、上方相邻块、左上相邻块、左侧相邻块和左下相邻块。

在一些实施例中,当前块的两个以上空间相邻块可以包括与当前块的左侧相邻的一列相邻块和与当前块的上方相邻的一行相邻块。

在示例中,可以将CABAC上下文模型确定为被分配给与语法元素相关联的第一二进制数的四个候选上下文模型中的一个。

在示例中,可以基于(i)当前块的空间相邻块的数量等于或高于阈值,和(ii)与空间相邻块中的每一个空间相邻块相关联的合并子块标志为假,或与空间相邻块中的每一个空间相邻块相关联的帧间仿射标志为假,或与空间相邻块中的每一个空间相邻块相关联的局部光照补偿标志为假,将CABAC上下文模型确定为四个候选上下文模型中的一个。

在一些实施例中,阈值可以等于4。

在示例中,可以基于(i)当前块的空间相邻块的数量等于4,和(ii)与空间相邻块中的每一个空间相邻块相关联的合并子块标志为假,或与空间相邻块中的每一个空间相邻块相关联的帧间仿射标志为假,或与空间相邻块中的每一个空间相邻块相关联的局部光照补偿标志为假,将CABAC上下文模型确定为四个候选上下文模型中的第四上下文模型。

响应于(i)当前块的空间相邻块的数量不等于或不大于阈值,或(ii)与空间相邻块中的每一个空间相邻块相关联的合并子块标志为真,或与空间相邻块中的每一个空间相邻块相关联的帧间仿射标志为真,或与空间相邻块中的每一个空间相邻块相关联的局部光照补偿标志为真,可以基于左侧相邻块的第一解码参数或上方相邻块的第二解码参数中的一个从四个候选上下文模型中的第一候选上下文模型、第二候选上下文模型或第三候选上下文模型中选择CABAC上下文模型。

可以基于(i)响应于左侧相邻块可用,左侧相邻块的第一解码参数,或(ii)基于上方相邻块可用,上方相邻块的第二解码参数,空间相邻块来选择CABAC上下文模型。

在一些实施例中,语法元素可以是帧间仿射标志、合并子块标志、局部光照补偿标志、非帧间标志、编码单元跳过标志、预测模式标志或帧间基于矩阵的帧内预测(mip)标志中的一个。

根据本公开的另一方面,提供了一种装置。该装置包括处理电路。处理电路可以被配置为执行所描述的用于视频解码/编码的方法中的任一者。

本公开的各方面还提供了一种存储指令的非易失性计算机可读介质,指令在由计算机执行以用于视频解码时,使得计算机执行用于视频解码/编码的方法。

附图说明

根据以下详细描述和附图,所公开的主题的其它特征、性质和各种优点将更加明显,其中:

图1是通信系统(100)的示例性框图的示意性图示。

图2是解码器的示例性框图的示意性图示。

图3是编码器的示例性框图的示意性图示。

图4是根据本公开的一些实施例的用于根据基于上下文的自适应二进制算术编码(CABAC)对二进制数进行解码的示例性流程图。

图5示出了当前块的空间邻居的示例性位置。

图6示出了当前块的空间邻居的示例性位置。

图7示出了概述根据本公开的一些实施例的解码过程的流程图。

图8示出了概述根据本公开的一些实施例的编码过程的流程图。

图9是根据实施例的示例性计算机系统的示意性图示。

具体实施方式

图1示出了本申请一些示例中视频处理系统(100)的框图。所述视频处理系统(100)是本申请公开的主题、在流式传输环境中的视频编码器和视频解码器的一种示例应用。本申请所公开主题可同等地适用于其它支持视频的应用,包括例如视频会议、数字TV、流式服务,在包括CD、DVD、存储棒等的数字介质上存储压缩视频等等。

视频处理系统(100)包括采集子系统(113),所述采集子系统可包括数码相机等视频源(101),所述视频源创建未压缩的视频图片流(102)。在实施例中,视频图片流(102)包括由数码相机拍摄的样本。相较于已编码的视频数据(104)(或已编码的视频码流),视频图片流(102)被描绘为粗线以强调高数据量的视频图片流,视频图片流(102)可由电子装置(120)处理,所述电子装置(120)包括耦接到视频源(101)的视频编码器(103)。视频编码器(103)可包括硬件、软件或软硬件组合以实现或实施如下文更详细地描述的所公开主题的各方面。相较于视频图片流(102),已编码的视频数据(104)(或已编码的视频码流)被描绘为细线以强调较低数据量的已编码的视频数据,其可存储在流式传输服务器(105)上以供将来使用。一个或多个流式传输客户端子系统,例如图1中的客户端子系统(106)和客户端子系统(108),可访问流式传输服务器(105)以检索已编码的视频数据(104)的副本(107)和副本(109)。客户端子系统(106)可包括例如电子装置(130)中的视频解码器(110)。视频解码器(110)对已编码的视频数据的传入副本(107)进行解码,且产生可在显示器(112)(例如显示屏)或另一呈现装置(未描绘)上呈现的输出视频图片流(111)。在一些流式传输系统中,可根据某些视频编码/压缩标准对已编码的视频数据(104),(107)和(109)(例如视频码流)进行编码。该些标准的实施例包括ITU-T H.265。在实施例中,正在开发的视频编码标准非正式地称为下一代视频编码(Versatile Video Coding,VVC),本申请可用于VVC标准的上下文中。

应注意,电子装置(120)和电子装置(130)可包括其它组件(未示出)。举例来说,电子装置(120)可包括视频解码器(未示出),且电子装置(130)还可包括视频编码器(未示出)。

图2示出了一个示例性的视频解码器(210)的框图。视频解码器(210)可设置在电子装置(230)中。电子装置(230)可包括接收器(231)(例如接收电路)。视频解码器(210)可用于代替图1实施例中的视频解码器(110)。

接收器(231)可接收将由视频解码器(210)解码的一个或多个已编码视频序列。在一实施例中,一次接收一个已编码视频序列,其中每个已编码视频序列的解码独立于其它已编码视频序列的解码。可从信道(201)接收已编码视频序列,所述信道可以是通向存储已编码的视频数据的存储装置的硬件/软件链路。接收器(231)可接收已编码的视频数据以及其它数据,例如,可转发到它们各自的使用实体(未标示)的已编码音频数据和/或辅助数据流。接收器(231)可将已编码视频序列与其它数据分开。为了防止网络抖动,缓冲存储器(215)可耦接在接收器(231)与熵解码器/解析器(220)(此后称为“解析器(220)”)之间。在某些应用中,缓冲存储器(215)是视频解码器(210)的一部分。在其它情况下,所述缓冲存储器(215)可设置在视频解码器(210)外部(未标示)。而在其它情况下,视频解码器(210)的外部设置缓冲存储器(未标示)以例如防止网络抖动,且在视频解码器(210)的内部可配置另一缓冲存储器(215)以例如处理播出定时。而当接收器(231)从具有足够带宽和可控性的存储/转发装置或从等时同步网络接收数据时,也可能不需要配置缓冲存储器(215),或可以将所述缓冲存储器做得较小。当然,为了在互联网等业务分组网络上使用,也可能需要缓冲存储器(215),所述缓冲存储器可相对较大且可具有自适应性大小,且可至少部分地实施于操作系统或视频解码器(210)外部的类似元件(未标示)中。

视频解码器(210)可包括解析器(220)以根据已编码视频序列重建符号(221)。这些符号的类别包括用于管理视频解码器(210)的操作的信息,以及用以控制显示装置(212)(例如,显示屏)等显示装置的潜在信息,所述显示装置不是电子装置(230)的组成部分,但可耦接到电子装置(230),如图2中所示。用于显示装置的控制信息可以是辅助增强信息(Supplemental Enhancement Information,SEI消息)或视频可用性信息(VideoUsability Information,VUI)的参数集片段(未标示)。解析器(220)可对接收到的已编码视频序列进行解析/熵解码。已编码视频序列的编码可根据视频编码技术或标准进行,且可遵循各种原理,包括可变长度编码、霍夫曼编码(Huffman coding)、具有或不具有上下文灵敏度的算术编码等等。解析器(220)可基于对应于群组的至少一个参数,从已编码视频序列提取用于视频解码器中的像素的子群中的至少一个子群的子群参数集。子群可包括图片群组(Group of Pictures,GOP)、图片、图块、切片、宏块、编码单元(Coding Unit,CU)、块、变换单元(Transform Unit,TU)、预测单元(Prediction Unit,PU)等等。解析器(220)还可从已编码视频序列提取信息,例如变换系数、量化器参数值、运动矢量等等。

解析器(220)可对从缓冲存储器(215)接收的视频序列执行熵解码/解析操作,从而创建符号(221)。

取决于已编码视频图片或一部分已编码视频图片(例如:帧间图片和帧内图片、帧间块和帧内块)的类型以及其它因素,符号(221)的重建可涉及多个不同单元。涉及哪些单元以及涉及方式可由解析器(220)从已编码视频序列解析的子群控制信息控制。为了简洁起见,未描述解析器(220)与下文的多个单元之间的此类子群控制信息流。

除已经提及的功能块以外,视频解码器(210)可在概念上细分成如下文所描述的数个功能单元。在商业约束下运行的实际实施例中,这些单元中的许多单元彼此紧密交互并且可以彼此集成。然而,出于描述所公开主题的目的,概念上细分成下文的功能单元是适当的。

第一单元是缩放器/逆变换单元(251)。缩放器/逆变换单元(251)从解析器(220)接收作为符号(221)的量化变换系数以及控制信息,包括使用哪种变换方式、块大小、量化因子、量化缩放矩阵等。缩放器/逆变换单元(251)可输出包括样本值的块,所述样本值可输入到聚合器(255)中。

在一些情况下,缩放器/逆变换单元(251)的输出样本可属于帧内编码块。帧内编码块是不使用来自先前重建的图片的预测性信息,但可使用来自当前图片的先前重建部分的预测性信息的块。此类预测性信息可由帧内图片预测单元(252)提供。在一些情况下,帧内图片预测单元(252)采用从当前图片缓冲器(258)提取的已重建信息生成大小和形状与正在重建的块相同的周围块。举例来说,当前图片缓冲器(258)缓冲部分重建的当前图片和/或完全重建的当前图片。在一些情况下,聚合器(255)基于每个样本,将帧内预测单元(252)生成的预测信息添加到由缩放器/逆变换单元(251)提供的输出样本信息中。

在其它情况下,缩放器/逆变换单元(251)的输出样本可属于帧间编码和潜在运动补偿块。在此情况下,运动补偿预测单元(253)可访问参考图片存储器(257)以提取用于预测的样本。在根据符号(221)对提取的样本进行运动补偿之后,这些样本可由聚合器(255)添加到缩放器/逆变换单元(251)的输出(在这种情况下被称作残差样本或残差信号),从而生成输出样本信息。运动补偿预测单元(253)从参考图片存储器(257)内的地址获取预测样本可受到运动矢量控制,且所述运动矢量以所述符号(221)的形式而供运动补偿预测单元(253)使用,所述符号(221)例如是包括X、Y和参考图片分量。运动补偿还可包括在使用子样本精确运动矢量时,从参考图片存储器(257)提取的样本值的内插、运动矢量预测机制等等。

聚合器(255)的输出样本可在环路滤波器单元(256)中被各种环路滤波技术采用。视频压缩技术可包括环路内滤波器技术,所述环路内滤波器技术受控于包括在已编码视频序列(也称作已编码视频码流)中的参数,且所述参数作为来自解析器(220)的符号(221)可用于环路滤波器单元(256)。视频压缩技术还可响应于在解码已编码图片或已编码视频序列的先前(按解码次序)部分期间获得的元信息,以及响应于先前重建且经过环路滤波的样本值。

环路滤波器单元(256)的输出可以是样本流,所述样本流可输出到显示装置(212)以及存储在参考图片存储器(257),以用于后续的帧间图片预测。

一旦完全重建,某些已编码图片就可用作参考图片以用于将来预测。举例来说,一旦对应于当前图片的已编码图片被完全重建,且已编码图片(通过例如解析器(220))被识别为参考图片,则当前图片缓冲器(258)可变为参考图片存储器(257)的一部分,且可在开始重建后续已编码图片之前重新分配新的当前图片缓冲器。

视频解码器(210)可根据例如ITU-T H.265标准中的预定视频压缩技术执行解码操作。在已编码视频序列遵循视频压缩技术或标准的语法以及视频压缩技术或标准中记录的配置文件的意义上,已编码视频序列可符合所使用的视频压缩技术或标准指定的语法。具体地说,配置文件可从视频压缩技术或标准中可用的所有工具中选择某些工具作为在所述配置文件下可供使用的仅有工具。对于合规性,还要求已编码视频序列的复杂度处于视频压缩技术或标准的层级所限定的范围内。在一些情况下,层级限制最大图片大小、最大帧率、最大重建取样率(以例如每秒兆(mega)个样本为单位进行测量)、最大参考图片大小等。在一些情况下,由层级设定的限制可通过假想参考解码器(Hypothetical ReferenceDecoder,HRD)规范和在已编码视频序列中用信号表示的HRD缓冲器管理的元数据来进一步限定。

在实施例中,接收器(231)可连同已编码视频一起接收附加(冗余)数据。所述附加数据可以是已编码视频序列的一部分。所述附加数据可由视频解码器(210)用以对数据进行适当解码和/或较准确地重建原始视频数据。附加数据可呈例如时间、空间或信噪比(signal noise ratio,SNR)增强层、冗余切片、冗余图片、前向纠错码等形式。

图3示出了示例性的的视频编码器(303)的框图。视频编码器(303)设置于电子装置(320)中。电子装置(320)包括传输器(340)(例如传输电路)。视频编码器(303)可用于代替图1实施例中的视频编码器(103)。

视频编码器(303)可从视频源(301)(并非图3实施例中的电子装置(320)的一部分)接收视频样本,所述视频源可采集将由视频编码器(303)编码的视频图像。在另一实施例中,视频源(301)是电子装置(320)的一部分。

视频源(301)可提供将由视频编码器(303)编码的呈数字视频样本流形式的源视频序列,所述数字视频样本流可具有任何合适位深度(例如:8位、10位、12位……)、任何色彩空间(例如BT.601Y CrCB、RGB……)和任何合适取样结构(例如Y CrCb 4:2:0、Y CrCb 4:4:4)。在媒体服务系统中,视频源(301)可以是存储先前已准备的视频的存储装置。在视频会议系统中,视频源(301)可以是采集本地图像信息作为视频序列的相机。可将视频数据提供为多个单独的图片,当按顺序观看时,这些图片被赋予运动。图片自身可构建为空间像素阵列,其中取决于所用的取样结构、色彩空间等,每个像素可包括一个或多个样本。所属领域的技术人员可以很容易理解像素与样本之间的关系。下文侧重于描述样本。

根据实施例,视频编码器(303)可实时或在所要求的任何其它时间约束下,将源视频序列的图片编码且压缩成已编码视频序列(343)。施行适当的编码速度是控制器(350)的一个功能。在一些实施例中,控制器(350)控制如下文所描述的其它功能单元且在功能上耦接到这些单元。为了简洁起见,图中未标示耦接。由控制器(350)设置的参数可包括速率控制相关参数(图片跳过、量化器、率失真优化技术的λ值等)、图片大小、图片群组(group ofpictures,GOP)布局,最大运动矢量搜索范围等。控制器(350)可用于具有其它合适的功能,这些功能涉及针对某一系统设计优化的视频编码器(303)。

在一些实施例中,视频编码器(303)在编码环路中进行操作。作为简单的描述,在实施例中,编码环路可包括源编码器(330)(例如,负责基于待编码的输入图片和参考图片创建符号,例如符号流)和嵌入于视频编码器(303)中的(本地)解码器(333)。解码器(333)以类似于(远程)解码器创建样本数据的方式重建符号以创建样本数据。将重建的样本流(样本数据)输入到参考图片存储器(334)。由于符号流的解码产生与解码器位置(本地或远程)无关的位精确结果,因此参考图片存储器(334)中的内容在本地编码器与远程编码器之间也是按比特位精确对应的。换句话说,编码器的预测部分“看到”的参考图片样本与解码器将在解码期间使用预测时所“看到”的样本值完全相同。这种参考图片同步性基本原理(以及在例如因信道误差而无法维持同步性的情况下产生的漂移)也用于一些相关技术。

“本地”解码器(333)的操作可与例如已在上文结合图2详细描述视频解码器(210)的“远程”解码器相同。然而,另外简要参考图2,当符号可用且熵编码器(345)和解析器(220)能够无损地将符号编码/解码为已编码视频序列时,包括缓冲存储器(215)和解析器(220)在内的视频解码器(210)的熵解码部分,可能无法完全在本地解码器(333)中实施。

在实施例中,除存在于解码器中的解析/熵解码之外的任何解码器技术,也以相同或基本上相同的功能形式存在于对应的编码器中。因此,本申请侧重于解码器操作。可简化编码器技术的描述,因为编码器技术与全面地描述的解码器技术互逆。在某些区域中提供更详细的描述。

在操作期间,在一些实施例中,源编码器(330)可执行运动补偿预测编码。参考来自视频序列中被指定为“参考图片”的一个或多个先前已编码图片,所述运动补偿预测编码对输入图片进行预测性编码。以此方式,编码引擎(332)对输入图片的像素块与参考图片的像素块之间的差异进行编码,所述参考图片可被选作所述输入图片的预测参考。

本地视频解码器(333)可基于源编码器(330)创建的符号,对可指定为参考图片的图片的已编码视频数据进行解码。编码引擎(332)的操作可为有损过程。当已编码视频数据可在视频解码器(图3中未示)处被解码时,重建的视频序列通常可以是带有一些误差的源视频序列的副本。本地视频解码器(333)复制解码过程,所述解码过程可由视频解码器对参考图片执行,且可使重建的参考图片存储在参考图片存储器(334)中。以此方式,视频编码器(303)可在本地存储重建的参考图片的副本,所述副本与将由远端视频解码器获得的重建参考图片具有共同内容(不存在传输误差)。

预测器(335)可针对编码引擎(332)执行预测搜索。即,对于将要编码的新图片,预测器(335)可在参考图片存储器(334)中搜索可作为所述新图片的适当预测参考的样本数据(作为候选参考像素块)或某些元数据,例如参考图片运动矢量、块形状等。预测器(335)可基于样本块逐像素块操作,以找到合适的预测参考。在一些情况下,根据预测器(335)获得的搜索结果,可确定输入图片可具有从参考图片存储器(334)中存储的多个参考图片取得的预测参考。

控制器(350)可管理源编码器(330)的编码操作,包括例如设置用于对视频数据进行编码的参数和子群参数。

可在熵编码器(345)中对所有上述功能单元的输出进行熵编码。熵编码器(345)根据例如霍夫曼编码、可变长度编码、算术编码等技术对各种功能单元生成的符号进行无损压缩,从而将所述符号转换成已编码视频序列。

传输器(340)可缓冲由熵编码器(345)创建的已编码视频序列,从而为通过通信信道(360)进行传输做准备,所述通信信道可以是通向将存储已编码的视频数据的存储装置的硬件/软件链路。传输器(340)可将来自视频编码器(303)的已编码视频数据与要传输的其它数据合并,所述其它数据例如是已编码音频数据和/或辅助数据流(未示出来源)。

控制器(350)可管理视频编码器(303)的操作。在编码期间,控制器(350)可以为每个已编码图片分配某一已编码图片类型,但这可能影响可应用于相应的图片的编码技术。例如,通常可将图片分配为以下任一种图片类型:

帧内图片(I图片),其可以是不将序列中的任何其它图片用作预测源就可被编码和解码的图片。一些视频编解码器容许不同类型的帧内图片,包括例如独立解码器刷新(Independent Decoder Refresh,“IDR”)图片。所属领域的技术人员了解I图片的变体及其相应的应用和特征。

预测性图片(P图片),其可以是可使用帧内预测或帧间预测进行编码和解码的图片,所述帧内预测或帧间预测使用至多一个运动矢量和参考索引来预测每个块的样本值。

双向预测性图片(B图片),其可以是可使用帧内预测或帧间预测进行编码和解码的图片,所述帧内预测或帧间预测使用至多两个运动矢量和参考索引来预测每个块的样本值。类似地,多个预测性图片可使用多于两个参考图片和相关联元数据以用于重建单个块。

源图片通常可在空间上细分成多个样本块(例如,4×4、8×8、4×8或16×16个样本的块),且逐块进行编码。这些块可参考其它(已编码)块进行预测编码,根据应用于块的相应图片的编码分配来确定所述其它块。举例来说,I图片的块可进行非预测编码,或所述块可参考同一图片的已经编码的块来进行预测编码(空间预测或帧内预测)。P图片的像素块可参考一个先前编码的参考图片通过空间预测或通过时域预测进行预测编码。B图片的块可参考一个或两个先前编码的参考图片通过空间预测或通过时域预测进行预测编码。

视频编码器(303)可根据例如ITU-T H.265建议书的预定视频编码技术或标准执行编码操作。在操作中,视频编码器(303)可执行各种压缩操作,包括利用输入视频序列中的时间和空间冗余的预测编码操作。因此,已编码视频数据可符合所用视频编码技术或标准指定的语法。

在实施例中,传输器(340)可在传输已编码的视频时传输附加数据。源编码器(330)可将此类数据作为已编码视频序列的一部分。附加数据可包括时间/空间/SNR增强层、冗余图片和切片等其它形式的冗余数据、SEI消息、VUI参数集片段等。

采集到的视频可作为呈时间序列的多个源图片(视频图片)。帧内图片预测(常常简化为帧内预测)利用给定图片中的空间相关性,而帧间图片预测则利用图片之间的(时间或其它)相关性。在实施例中,将正在编码/解码的特定图片分割成块,正在编码/解码的特定图片被称作当前图片。在当前图片中的块类似于视频中先前已编码且仍被缓冲的参考图片中的参考块时,可通过称作运动矢量的矢量对当前图片中的块进行编码。所述运动矢量指向参考图片中的参考块,且在使用多个参考图片的情况下,所述运动矢量可具有识别参考图片的第三维度。

在一些实施例中,双向预测技术可用于帧间图片预测中。根据双向预测技术,使用两个参考图片,例如按解码次序都在视频中的当前图片之前(但按显示次序可能分别是过去和将来)第一参考图片和第二参考图片。可通过指向第一参考图片中的第一参考块的第一运动矢量和指向第二参考图片中的第二参考块的第二运动矢量对当前图片中的块进行编码。具体来说,可通过第一参考块和第二参考块的组合来预测所述块。

此外,合并模式技术可用于帧间图片预测中以改善编码效率。

根据本申请公开的一些实施例,帧间图片预测和帧内图片预测等预测的执行以块为单位。举例来说,根据HEVC标准,将视频图片序列中的图片分割成编码树单元(codingtree unit,CTU)以用于压缩,图片中的CTU具有相同大小,例如64×64像素、32×32像素或16×16像素。一般来说,CTU包括三个编码树块(coding tree block,CTB),所述三个编码树块是一个亮度CTB和两个色度CTB。更进一步的,还可将每个CTU以四叉树拆分为一个或多个编码单元(coding unit,CU)。举例来说,可将64×64像素的CTU拆分为一个64×64像素的CU,或4个32×32像素的CU,或16个16×16像素的CU。在实施例中,分析每个CU以确定用于CU的预测类型,例如帧间预测类型或帧内预测类型。此外,取决于时间和/或空间可预测性,将CU拆分为一个或多个预测单元(prediction unit,PU)。通常,每个PU包括亮度预测块(prediction block,PB)和两个色度PB。在实施例中,编码(编码/解码)中的预测操作以预测块为单位来执行。以亮度预测块作为预测块为例,预测块包括像素值(例如,亮度值)的矩阵,例如8×8像素、16×16像素、8×16像素、16×8像素等等。

应注意,可以使用任何合适的技术来实现视频编码器(103)和(303)以及视频解码器(110)和(210)。在实施例中,可以使用一个或多个集成电路来实现视频编码器(103)和(303)以及视频解码器(110)和(210)。在其他实施例中,可以使用执行软件指令的一个或多个处理器来实现视频编码器(103)和(303)以及视频解码器(110)和(210)。

本公开包括与熵编码相关的实施例。例如,可以基于来自当前块的空间相邻块的信息来确定与当前块相关联的基于上下文的自适应二进制算术编码(CABAC)的上下文模型。

局部光照补偿(LIC)可以是对当前块和当前块的预测块之间的局部光照变化进行建模的帧间预测技术。局部光照变化可以被建模为当前块模板和参考块模板之间的局部光照变化的函数。该函数的参数可以由标度α和偏移β表示,其可以形成线性等式α*p[x]+β以补偿光照变化,其中p[x]是由参考图片上的位置x处的MV指向的参考样本。由于可以基于当前块模板和参考块模板来推导α和β,因此当前块模板和参考块模板可以不需要信令开销。然而,可能需要为高级运动矢量预测(AMVP)模式发信号通知LIC标志以指示LIC的使用。

先前在VVC之外提出的局部光照补偿可以用于单预测帧间CU,但需要做出如下修改:

(1)帧内邻居样本可以用于LIC参数推导中;

(2)对于具有少于32个亮度样本的块禁用LIC;

(2)可以基于对应于当前CU的模板块样本,而不是对应于第一左上16x16单元的部分模板块样本,对非子块模式和仿射模式两者执行LIC参数推导;并且

(3)通过使用基于块MV的运动补偿(MC)生成参考块模板的样本。块MV可以不被舍入为整数像素精度。

例如在VVC中,相较于HEVC中的设计,CABAC可以包含以下主要变化:

(1)核心CABAC引擎;

(2)分离用于变换块和变换跳过块的残差编码结构;以及

(3)用于变换系数的上下文建模。

HEVC中的CABAC引擎使用64个不同代表性概率状态之间的基于表的概率转换过程。在HEVC中,在计算新的间隔范围之前,可以将表示编码引擎的状态的当前间隔范围(例如,ivlCurrRange)量化为4个值的集。可以使用包含所有64x4的8比特预先计算的值的表来实现HEVC状态转换,以近似ivlCurrRange*pLPS(pStateIdx)的值,其中pLPS是最小可能符号(LPS)的概率并且pStateIdx是当前状态的索引。此外,可以使用预先计算的查找表(LUT)来实现解码决策。例如,可以基于LUT来确定LPS范围(例如,ivlLpsRange),如以下等式(1)所示。LPS范围ivlLpsRange可以进一步用于更新当前间隔范围ivlCurrRange并计算输出二进制数值(例如,binVal)。

ivlLpsRange=rangeTabLps[pStateIdx][qRangeIdx] 等式(1)

例如,在VVC中,可以由概率索引pStateIdx线性地表示概率。因此,所有计算都可以使用等式进行,而无需LUT操作。为了提高概率估计的准确性,可以应用多假设概率更新模型。在二进制算术编码器的间隔细分中使用的pStateIdx可以是两个概率pStateIdx0和pStateIdx1的组合。这两个概率可以与CABAC的每个上下文模型相关联,并且可以进一步用不同的自适应速率独立地更新。每个上下文模型的pStateIdx0和pStateIdx1的自适应速率可以基于相关联的二进制数的统计来预训练。pStateIdx的概率估计可以是来自两个假设(例如,pStateIdx0和pStateIdx1)的估计的平均值。

图4示出了用于在VVC中对单个二进制决策进行解码(例如,对二进制数进行解码)的示例性流程图(400)。如流程图(400)所示,在(S410)处,可以接收上下文表(例如,ctxTable)和上下文索引(例如,ctxIdx)的输入变量。在一些实施例中,输入变量还可以包括当前间隔范围(例如,ivlCurrRange)和间隔偏移(例如,ivlOffset)。在(S420)处,可以确定量化范围索引(例如,qRangeIdx)、概率状态(例如,pState)、最大可能符号的值(例如,valMps)和最小可能符号间隔范围(例如,ivlLpsRange)的变量,并且可以将ivlCurrRange更新为ivlCurrRange-ivlLpsRange。在(S430)处,当ivlOffset小于ivlCurrRange时,如(S450)所示,可以将二进制数值(例如,binVal)确定为valMps。当ivlOffset等于或大于ivlCurrRange时,如(S440)所示,可以将二进制数值(例如,binVal)确定为1-valMps,可以将ivlOffset递减ivlCurrRange,并且可以将ivlCurrRange设置为等于ivlLpsRange。在(S460)处,可以基于shift0、shift1和二进制数值这些参数来更新pStateIdx0和pStateIdx0。在(S370)处,可以基于确定的pStateIdx0和pStateIdx0来执行解码器中的重归一化(renormalization)处理(例如,RenormD)。

类似于HEVC,VVC CABAC还可以具有在每一条带的开始处调用的量化参数(QP)依赖初始化过程。给定条带的亮度QP的初始值,上下文模型的初始概率状态(表示为preCtxState)可以用等式(2)至(4)推导如下。

m=slopeIdx×5–45 等式(2)

n=(offsetIdx<<3)+7等式(3)

preCtxState = Clip3(1, 127, ((m × (QP - 32)) >> 4) + n) 等式(4)

其中,可以将slopeIdx和offsetIdx限制为3比特,并且总的初始化值由6比特精度表示。上下文模型的初始概率状态preCtxState直接表示线性域中的概率。因此,preCtxState在其被输入到算术编码引擎(例如,CABAC)之前可能仅需要适当的移位操作。相应地,可以保存(或跳过)对数到线性域的映射以及256字节的表。可以进一步基于preCtxState来确定pStateIdx0及pStateIdx1,如以下等式(5)和(6)所示:

pStateIdx0 = preCtxState << 3等式(5)

pStateIdx1 = preCtxState << 7等式(6)

在CABAC的解码过程中,对解码过程的输入可以是语法元素的所有二进制字符串。可以基于二进制化过程来获得语法元素的二进制字符串。解码过程的输出可以是语法元素的值。解码过程可以指定如何为每个语法元素解析二进制字符串的每个二进制数。在对每个二进制数进行解析之后,可以将得到的二进制字符串(或解析的二进制字符串)与基于二进制化过程获得的语法元素的所有二进制字符串进行比较。比较的结果可以确定如下:(1)如果二进制字符串(或得到的二进制字符串)等于二进制字符串中的一个,则语法元素的对应值是输出。(2)否则(例如,二进制字符串不等于二进制字符串中的一个),则对下一比特进行解析。当对每个二进制数进行解析时,变量binIdx递增1,从针对第一二进制数将binIdx设置为等于0开始。每个二进制数的解析由两个有序步骤指定:(1)可以使用binIdx作为输入且使用ctxTable、ctxIdx和bypassFlag作为输出来调用ctxTable、ctxIdx和bypassFlag的推导过程。(2)可以使用ctxTable、ctxIdx和bypassFlag作为输入且使用二进制数的值作为输出来调用算术解码过程。

在ctxTable、ctxIdx和bypassFlag的推导过程中,推导过程的输入可以是二进制字符串中的当前二进制数的位置。二进制字符串中的当前二进制数的位置可以表示为二进制数索引(例如,binIdx)。推导过程的输出可以是ctxTable、ctxIdx和bypassFlag。ctxTable、ctxIdx和bypassFlag的值可以基于表1中的对应语法元素的binIdx的条目(或值)如下推导。

表1.将ctxInc分配给具有上下文已编码二进制数的语法元素

如果表1中的条目不等于“旁路”、“结束”或“无”,则可以通过调用DecodeDecision过程来对binIdx的值进行解码。如表1所示,变量ctxInc可以由表1中的对应条目指定。当表1中针对binIdx列出一个以上值时,可以在括号中给定的条目中进一步指定针对对应binIdx的ctxInc的分配过程。对于initType的当前值和当前语法元素,可以将变量ctxIdxOffset设置为等于ctxIdx的最小值。可以将ctxIdx设置为等于ctxInc与ctxIdxOffset之和。可以将bypassFlag设置为等于0。

如果表1中的条目等于“旁路”,则可以通过调用DecodeBypass过程来对binIdx的值进行解码。因此,可以将ctxTable设置为等于0。可以将ctxIdx设置为等于0。可以将bypassFlag设置为等于1。

如果表1中的条目等于“结束”,则可以通过调用DecodeTerminate过程来对binIdx的值进行解码。因此,可以将ctxTable设置为等于0。可以将ctxIdx设置为等于0。可以将bypassFlag设置为等于0。

如果表1中的条目等于“无”,则对应语法元素不出现binIdx的值。

在使用左侧和上方语法元素的ctxInc的推导过程中,推导过程的输入可以是亮度位置(x0,y0),指定相对于当前图片的左上样本的当前亮度块的左上亮度样本、颜色分量cIdx、当前编码四叉树深度cqtDepth、双树信道类型chType、亮度样本中的当前编码块的宽度cbWidth和高度cbHeight以及在编码树语义中推导的变量。变量可以包括allowSplitBtVer、allowSplitBtHor、allowSplitTtVer、allowSplitTtHor和allowSplitQt。推导过程的输出可以是上下文索引ctxInc。

在一些实施例中,可以将位置(xNbL,yNbL)设置为等于(x0-1,y0),并且可以基于将位置(xCurr,yCurr)设置为等于(x0,y0),将相邻位置(xNbY,yNbY)设置为等于(xNbL,yNbL),将checkPredModeY设置为等于FALSE,以及将cIdx设置为输入来调用相邻块可用性的推导过程。可以将推导过程的输出分配给availableL。

在一些实施例中,可以将位置(xNbA,yNbA)设置为等于(x0,y0-1),并且可以基于将位置(xCurr,yCurr)设置为等于(x0,y0),将相邻位置(xNbY,yNbY)设置为等于(xNbA,yNbA),将checkPredModeY设置为等于FALSE,以及将cIdx设置为输入来调用相邻块可用性的推导过程。可以将推导过程的输出分配给availableA。

在示例中,可以将位置(xCtb,yCtb)设置为等于(x0>>CtbLog2SizeY,y0>>CtbLog2SizeY),可以将位置(xCtbA,yCtbA)设置为等于(xNbA>>CtbLog2SizeY,yNbA>>CtbLog2SizeY),并且可以将位置(xCtbL,yCtbL)设置为等于(xNbL>>CtbLog2SizeY,yNbL>>CtbLog2SizeY)。

ctxInc的分配可以用表2中指定的condL和condA指定如下。表2示出了使用左和上语法元素的ctxInc的规范。如表2中所示,对于语法元素alf_ctb_flag[cIdx][xCtb][yCtb]、alf_ctb_cc_cb_idc[xCtb][yCtb]、alf_ctb_cc_cr_idc[xCtb][yCtb]、split_qt_flag、split_cu_flag、cu_skip_flag[x0][y0]、pred_mode_ibc_flag[x0][y0]、intra_mip_flag、inter_affine_flag[x0][y0]和merge_subblock_flag[x0][y0],可以如下用等式(7)确定ctxInc:

ctxInc=(condL&&availableL)+(condA&&availableA)+ctxSetIdx*3等式(7)

对于语法元素pred_mode_flag[x0][y0]和non_inter_flag,可以如下用等式(8)确定ctxInc:

ctxInc=(condL&&availableL)||(condA&&availableA)等式(8)

表2.使用左和上语法元素的ctxInc的规范

/>

在相关示例中,仅使用来自当前块的上方和左侧相邻块的信息来推导用于当前块的CABAC上下文模型(诸如用于inter_affine_flag或merge_subblock_flag)可能是低效的。

在本公开中,用于当前块的一些语法元素的上下文模型可以取决于当前块的两个以上空间相邻块的信息。语法元素可以包括帧间仿射标志(例如,inter_affine_flag)和/或子块合并标志(例如,merge_subblock_flag)和/或lic_flag(例如,用以指示光照补偿工具是否用于某一块/区域的标志)等。在一些实施例中,语法元素可以在表2中示出。

为了简单和清楚起见,可以基于作为示例性语法元素的inter_affine_flag来提供本公开的实施例。

在本公开中,一个或多个附加上下文增量(例如,ctxInc)可以用于确定当前块的语法元素。ctxInc可以指示上下文模型的上下文索引(例如,ctxIdx)。例如,可以将ctxIdx设置为等于ctxInc与ctxIdxOffset之和。ctxIdxOffset可以是固定值,其取决于语法元素的类型和条带(I、B和P)的类型。可以使用诸如当前块的大小、当前块的类型和当前块的相邻块的信息的信息来计算上下文增量(例如,ctxInc)。相应地,可以根据当前块的M个空间相邻块的信息来推导语法元素的上下文模型,其中M可以是正整数。

在实施例中,M可以等于5。当前块的5个空间邻居可以如图5所示。如图5所示,当前块(502)可以包括右上(B0)相邻块、上(B1)相邻块、左上(B2)相邻块、左(A1)相邻块和左下(A0)相邻块。相邻块中的每一个可以具有各种大小。例如,图5中的每个相邻块可以包括4×4亮度样本。

在实施例中,M可以等于从左下(LB)位置到左上(AL)位置,以及从左上(AL)位置到右上(AR)位置的所有子块的数量,其可以在图6中示出。如图6所示,当前块(602)可以包括与当前块(602)的左侧相邻的一列相邻块(例如,LB、L0、L1、L2、L3、AL)和与当前块(602)的上方相邻的一行相邻块(AL、A3、A2、A1、A0和AR)。相邻块中的每一个可以具有各种大小。例如,图6中的每个相邻块可以包括4×4亮度样本。

在一实施例中,用于inter_affine_flag的附加ctxInc可以如表3中所示。如表3所示,可以将ctxInc的四个值(例如,0、1、2和3)提供给inter_affine_flag的第一上下文已编码二进制数(例如,binIdx=0)。

表3.将ctxInc分配给具有上下文已编码二进制数的语法元素

在另一实施例中,用于merge_subblock_flag的附加ctxInc可以如表4中所示。如表4所示,可以将ctxInc的四个值(例如,0、1、2和3)提供给merge_subblock_flag的第一上下文已编码二进制数(例如,binIdx=0)。

表4.将ctxInc分配给具有上下文已编码二进制数的语法元素

在实施例中,可以基于以下两个条件的组合将用于inter_affine_flag的ctxInc设置为3:(1)5个(例如,图5中的A0、A1、B0、B1和B2)空间邻居中的N个或更多个是可用的。在示例中,N等于4。(2)对于可用的空间邻居中的每一个,合并子块标志(例如,MergeSubblockFlag)为假或帧间仿射标志(InterAffineFlag)为假:

(MergeSubblockFlag[xNb][yNb]||InterAffineFlag[xNb][yNb])

否则,如果不满足两个条件中的至少一个,则可以分别根据左侧和上方邻居的条件condL和condA推导inter_affine_flag的ctxInc的值。可以基于表2确定condL和condA。可以基于如下等式(9)将ctxInc确定为0、1或2:

ctxInc = ( condL && availableL ) | | ( condA && availableA ) 等式(9)

例如,如表2中所示,对于inter_affine_flag,condL对应于MergeSubblockFlag[xNbL][yNbL]||InterAffineFlag[xNbL][yNbL],并且condA对应于MergeSubblockFlag[xNbA][yNbA]||InterAffineFlag[xNbA][yNbA]。在示例中,当满足(condL&&available L)并且不满足(condA&&avaialbeA)时,可以将ctxInc确定为0。在示例中,当不满足(condL&&available L)并且满足(condA&&avaialbeA)时,可以将ctxInc确定为1。在示例中,当满足(condL&&available L)和(condA&&avaialbeA)两者时,可以将ctxInc确定为2。

在实施例中,可以基于以下两个条件的组合将用于merge_subblock_flag的ctxInc设置为3:(1)5个(例如,图5中的A0、A1、B0、B1和B2)空间邻居中的N个或更多个是可用的。在示例中,N等于4。(2)对于可用的空间邻居中的每一个,合并子块标志(例如,MergeSubblockFlag)为假或帧间仿射标志(例如,InterAffineFlag)为假:

(MergeSubblockFlag[xNb][yNb]||InterAffineFlag[xNb][yNb])

否则,如果不满足两个条件中的至少一个,则可以分别根据左和上邻居的条件condL和condA推导merge_subblock_flag的ctxInc的值。可以基于表2确定condL和condA。可以基于如下等式(10)将ctxInc确定为0、1或2:

ctxInc=(condL&&availableL)||(condA&&availableA) 等式(10)

在实施例中,可以基于当前块的两个以上相邻块推导当前块的LIC标志(例如,lic_flag)的上下文模型。如果lic_flag的值为真,则LIC标志可以指示将LIC应用于当前块。否则,如果lic_flag的值为假,则不对当前块应用LIC。

如表5所示,可以将ctxInc的四个值提供给lic_flag的第一上下文已编码二进制数(例如,binIdx=0)。表6示出了当前块的左侧相邻块的条件和上方相邻块的条件。

表5.将ctxInc分配给具有上下文已编码二进制数的语法元素

表6.使用左和上语法元素的ctxInc的规范

在示例中,可以基于以下两个条件的组合将用于lic_flag的ctxInc设置为3:(1)5个(例如,图5中的A0、A1、B0、B1和B2)空间邻居中的N个或更多个是可用的。在示例中,N等于4。(2)可用的空间邻居中的每一个的LIC标志为假。否则,如果不满足两个条件中的至少一个,则可以分别根据左和上邻居的条件condL和condA推导lic_flag的ctxInc。可以基于表6确定condL和condA。可以基于如下等式(11)将ctxInc确定为0、1或2:

ctxInc=(condL&&availableL)||(condA&&availableA) 等式(11)

在实施例中,可以将类似的上下文建模方法应用于当前具有使用左和上语法元素推导的ctxInc的其它语法元素,诸如non_inter_flag、cu_skip_flag、pred_mode_flag、intra_mip_flag等。因此,可基于两个以上相邻块推导non_inter_flag、cu_skip_flag、pred_mode_flag、intra_mip_flag的上下文模型。

图7示出了概述根据本公开的实施例的过程(700)的流程图。过程(700)可以用于视频解码器中。在各种实施例中,过程(700)由处理电路执行,诸如执行视频解码器(110)的功能的处理电路、执行视频解码器(210)的功能的处理电路等。在一些实施例中,过程(700)以软件指令实现,因此当处理电路执行软件指令时,处理电路执行过程(700)。该过程开始于(S701)并进行到(S710)。

在(S710)处,从已编码视频码流接收当前块的已编码信息。已编码信息包括与当前块相关联的上下文编码的语法元素。语法元素指示当前块的解码参数。

在(S720)处,基于当前块的两个以上空间相邻块的解码参数来确定与上下文编码的语法元素相关联的基于上下文的自适应二进制算术编码(CABAC)上下文模型。

在(S730)处,基于确定的与上下文编码的语法元素相关联的CABAC上下文模型对上下文编码的语法元素进行解码。

在(S740)处,可以基于已解码语法元素来重建当前块。

在一些实施例中,当前块的两个以上空间相邻块包括右上相邻块、上方相邻块、左上相邻块、左侧相邻块和左下相邻块。

在一些实施例中,当前块的两个以上空间相邻块包括与当前块的左侧相邻的一列相邻块和与当前块的上方相邻的一行相邻块。

在示例中,将CABAC上下文模型确定为被分配给与语法元素相关联的第一二进制数的四个候选上下文模型中的一个。

在示例中,基于(i)当前块的空间相邻块的数量等于或高于阈值,和(ii)与空间相邻块中的每一个空间相邻块相关联的合并子块标志为假,或与空间相邻块中的每一个空间相邻块相关联的帧间仿射标志为假,或与空间相邻块中的每一个空间相邻块相关联的局部光照补偿标志为假,将CABAC上下文模型确定为四个候选上下文模型中的一个。

在一些实施例中,阈值等于4。

在示例中,基于(i)当前块的空间相邻块的数量等于4,和(ii)与空间相邻块中的每一个空间相邻块相关联的合并子块标志为假,或与空间相邻块中的每一个空间相邻块相关联的帧间仿射标志为假,或与空间相邻块中的每一个空间相邻块相关联的局部光照补偿标志为假,将CABAC上下文模型确定为四个候选上下文模型中的第四上下文模型。

响应于(i)当前块的空间相邻块的数量不等于或不大于阈值,或(ii)与空间相邻块中的每一个空间相邻块相关联的合并子块标志为真,或与空间相邻块中的每一个空间相邻块相关联的帧间仿射标志为真,或与空间相邻块中的每一个空间相邻块相关联的局部光照补偿标志为真,基于左侧相邻块的第一解码参数或上方相邻块的第二解码参数中的一个从四个候选上下文模型中的第一候选上下文模型、第二候选上下文模型或第三候选上下文模型中选择CABAC上下文模型。

在示例中,基于(i)响应于左侧相邻块可用,左侧相邻块的第一解码参数,或(ii)基于上方相邻块可用,上方相邻块的第二解码参数,来选择CABAC上下文模型。

在一些实施例中,语法元素是帧间仿射标志、合并子块标志、局部光照补偿标志、非帧间标志、编码单元跳过标志、预测模式标志或帧间基于矩阵的帧内预测(mip)标志中的一个。

然后,过程进行到(S799)并结束。

可以适当地调整过程(700)。可以修改和/或省略过程(700)中的一个或多个步骤。可以增加一个或多个附加步骤。可以使用任何合适的实现顺序。

图8示出了概述根据本公开的实施例的过程(800)的流程图。过程(800)可以用于视频编码器中。在各种实施例中,过程(800)由处理电路执行,诸如执行视频编码器(103)的功能的处理电路、执行视频编码器(303)的功能的处理电路等。在一些实施例中,过程(800)以软件指令实现,因此当处理电路执行软件指令时,处理电路执行过程(800)。该过程开始于(S801)并进行到(S810)。

在(S810)处,从多个候选上下文模型中确定基于上下文的自适应二进制算术编码(CABAC)上下文模型,以基于当前块的两个以上空间相邻块的编码参数对与当前块相关联的语法元素进行编码。

在(S820)处,基于确定的CABAC上下文模型对与当前块相关联的语法元素进行上下文编码。语法元素指示当前块的编码参数。

在(S830)处,基于确定的CABAC上下文模型生成当前块的已编码信息,其中已编码信息包括与当前块相关联的上下文编码的语法元素。

然后,过程进行到(S899)并结束。

可以适当地调整过程(800)。可以修改和/或省略过程(800)中的一个或多个步骤。可以增加一个或多个附加步骤。可以使用任何合适的实现顺序。

上述技术可以通过计算机可读指令实现为计算机软件,并且物理地存储在一个或多个计算机可读介质中。例如,图9示出了计算机系统(900),其适于实现所公开主题的某些实施例。

所述计算机软件可通过任何合适的机器代码或计算机语言进行编码,通过汇编、编译、链接等机制创建包括指令的代码,所述指令可由一个或多个计算机中央处理单元(CPU),图形处理单元(GPU)等直接执行或通过译码、微代码等方式执行。

所述指令可以在各种类型的计算机或其组件上执行,包括例如个人计算机、平板电脑、服务器、智能手机、游戏设备、物联网设备等。

图9所示的用于计算机系统(900)的组件本质上是示例性的,并不用于对实现本申请实施例的计算机软件的使用范围或功能进行任何限制。也不应将组件的配置解释为与计算机系统(900)的示例性实施例中所示的任一组件或其组合具有任何依赖性或要求。

计算机系统(900)可以包括某些人机界面输入设备。这种人机界面输入设备可以通过触觉输入(如:键盘输入、滑动、数据手套移动)、音频输入(如:声音、掌声)、视觉输入(如:手势)、嗅觉输入(未示出),对一个或多个人类用户的输入做出响应。所述人机界面设备还可用于捕获某些媒体,气与人类有意识的输入不必直接相关,如音频(例如:语音、音乐、环境声音)、图像(例如:扫描图像、从静止影像相机获得的摄影图像)、视频(例如二维视频、包括立体视频的三维视频)。

人机界面输入设备可包括以下中的一个或多个(仅绘出其中一个):键盘(901)、鼠标(902)、触控板(903)、触摸屏(910)、数据手套(未示出)、操纵杆(905)、麦克风(906)、扫描仪(907)、照相机(908)。

计算机系统(900)还可以包括某些人机界面输出设备。这种人机界面输出设备可以通过例如触觉输出、声音、光和嗅觉/味觉来刺激一个或多个人类用户的感觉。这样的人机界面输出设备可包括触觉输出设备(例如通过触摸屏(910)、数据手套(未示出)或操纵杆(905)的触觉反馈,但也可以有不用作输入设备的触觉反馈设备)、音频输出设备(例如,扬声器(909)、耳机(未示出))、视觉输出设备(例如,包括阴极射线管屏幕、液晶屏幕、等离子屏幕、有机发光二极管屏的屏幕(910),其中每一个都具有或没有触摸屏输入功能、每一个都具有或没有触觉反馈功能——其中一些可通过诸如立体画面输出的手段输出二维视觉输出或三维以上的输出;虚拟现实眼镜(未示出)、全息显示器和放烟箱(未示出))以及打印机(未示出)。

计算机系统(900)还可以包括人可访问的存储设备及其相关介质,如包括具有CD/DVD的高密度只读/可重写式光盘(CD/DVD ROM/RW)(920)或类似介质(921)的光学介质、拇指驱动器(922)、可移动硬盘驱动器或固体状态驱动器(923),诸如磁带和软盘(未示出)的传统磁介质,诸如安全软件保护器(未示出)等的基于ROM/ASIC/PLD的专用设备,等等。

本领域技术人员还应当理解,结合所公开的主题使用的术语“计算机可读介质”不包括传输介质、载波或其它瞬时信号。

计算机系统(900)还可以包括通往一个或多个通信网络的接口。例如,网络可以是无线的、有线的、光学的。网络还可为局域网、广域网、城域网、车载网络和工业网络、实时网络、延迟容忍网络等等。网络还包括以太网、无线局域网、蜂窝网络(GSM、3G、4G、5G、LTE等)等局域网、电视有线或无线广域数字网络(包括有线电视、卫星电视、和地面广播电视)、车载和工业网络(包括CANBus)等等。某些网络通常需要外部网络接口适配器,用于连接到某些通用数据端口或外围总线(949)(例如,计算机系统(900)的USB端口);其它系统通常通过连接到如下所述的系统总线集成到计算机系统(900)的核心(例如,以太网接口集成到PC计算机系统或蜂窝网络接口集成到智能电话计算机系统)。通过使用这些网络中的任何一个,计算机系统(900)可以与其它实体进行通信。所述通信可以是单向的,仅用于接收(例如,无线电视),单向的仅用于发送(例如CAN总线到某些CAN总线设备),或双向的,例如通过局域或广域数字网络到其它计算机系统。上述的每个网络和网络接口可使用某些协议和协议栈。

上述的人机界面设备、人可访问的存储设备以及网络接口可以连接到计算机系统(900)的核心(940)。

核心(940)可包括一个或多个中央处理单元(CPU)(941)、图形处理单元(GPU)(942)、以现场可编程门阵列(FPGA)(943)形式的专用可编程处理单元、用于特定任务的硬件加速器(944)、图形适配器(950)等。这些设备以及只读存储器(ROM)(945)、随机存取存储器(946)、内部大容量存储器(例如内部非用户可存取硬盘驱动器、固态硬盘等)(947)等可通过系统总线(948)进行连接。在某些计算机系统中,可以以一个或多个物理插头的形式访问系统总线(948),以便可通过额外的中央处理单元、图形处理单元等进行扩展。外围装置可直接附接到核心的系统总线(948),或通过外围总线(949)进行连接。在示例中,所述屏幕(910)可以连接至图形适配器(950)。外围总线的体系结构包括外部控制器接口PCI、通用串行总线USB等。

CPU(941)、GPU(942)、FPGA(943)和加速器(944)可以执行某些指令,这些指令组合起来可以构成上述计算机代码。该计算机代码可以存储在ROM(945)或RAM(946)中。过渡数据也可以存储在RAM(946)中,而永久数据可以存储在例如内部大容量存储器(947)中。通过使用高速缓冲存储器可实现对任何存储器设备的快速存储和检索,高速缓冲存储器可与一个或多个CPU(941)、GPU(942)、大容量存储器(947)、ROM(945)、RAM(946)等紧密关联。

所述计算机可读介质上可具有计算机代码,用于执行各种计算机实现的操作。介质和计算机代码可以是为本申请的目的而特别设计和构造的,也可以是计算机软件领域的技术人员所熟知和可用的介质和代码。

作为实施例而非限制,具有体系结构(900)的计算机系统,特别是核心(940),可以作为处理器(包括CPU、GPU、FPGA、加速器等)提供执行包含在一个或多个有形的计算机可读介质中的软件的功能。这种计算机可读介质可以是与上述的用户可访问的大容量存储器相关联的介质,以及具有非易失性的核心(940)的特定存储器,例如核心内部大容量存储器(947)或ROM(945)。实现本申请的各种实施例的软件可以存储在这种设备中并且由核心(940)执行。根据特定需要,计算机可读介质可包括一个或一个以上存储设备或芯片。该软件可以使得核心(940)特别是其中的处理器(包括CPU、GPU、FPGA等)执行本文所述的特定过程或特定过程的特定部分,包括定义存储在RAM(946)中的数据结构以及根据软件定义的过程来修改这种数据结构。另外或作为替代,计算机系统可以提供逻辑硬连线或以其它方式包含在电路(例如,加速器(944))中的功能,该电路可以代替软件或与软件一起运行以执行本文所述的特定过程或特定过程的特定部分。在适当的情况下,对软件的引用可以包括逻辑,反之亦然。在适当的情况下,对计算机可读介质的引用可包括存储执行软件的电路(如集成电路(IC)),包含执行逻辑的电路,或两者兼备。本申请包括任何合适的硬件和软件组合。

虽然本申请已对多个示例性实施例进行了描述,但实施例的各种变更、排列和各种等同替换均属于本申请的范围内。因此应理解,本领域技术人员能够设计多种系统和方法,所述系统和方法虽然未在本文中明确示出或描述,但其体现了本申请的原则,因此属于本申请的精神和范围之内。

相关技术
  • 基于上下文的局部空间信息建模方法
  • 一种基于上下文邻居关系建模的会话社交推荐方法
技术分类

06120116498431