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

使用调色板模式进行视频编解码的方法和装置与流程

2022-10-26 23:32:01 来源:中国专利 TAG:

使用调色板模式进行视频编解码的方法和装置
1.相关申请
2.本技术要求于2020年1月11日提交的名称为“video coding using palette mode[使用调色板模式的视频编解码]”的美国临时专利申请号62/959,913的优先权,该美国临时专利申请通过引用以其全文并入。
技术领域
[0003]
本技术总体上涉及视频数据编解码和压缩,并且具体地,涉及使用调色板模式进行视频编解码的方法和系统。


背景技术:

[0004]
如数字电视、膝上型计算机或台式计算机、平板计算机、数码相机、数字录音设备、数字媒体播放器、视频游戏机、智能电话、视频电话会议设备、视频流式传输设备等各种电子设备都支持数字视频。电子设备通过实施由mpeg-4、itu-t h.263、itu-th.264/mpeg-4第10部分、高级视频编解码(avc)、高效视频编解码(hevc)和通用视频编解码(vvc)标准定义的视频压缩/解压缩标准来发送、接收、编码、解码和/或存储数字视频数据。视频压缩典型地包括执行空间(帧内)预测和/或时间(帧间)预测以减少或去除视频数据中固有的冗余。对于基于块的视频编解码,将视频帧划分为一个或多个条带,每个条带具有多个视频块,所述视频块也可以被称为编码树单元(ctu)。每个ctu可以包含一个编码单元(cu)或递归地分割成较小的cu,直到达到预设的最小cu尺寸。每个cu(也称为叶cu)包含一个或多个变换单元(tu),并且每个cu还包含一个或多个预测单元(pu)。可以以帧内、帧间或ibc模式对每个cu进行编解码。相对于同一视频帧内的相邻块中的参考样点,使用空间预测对视频帧的帧内编解码(i)条带中的视频块进行编码。视频帧的帧间编解码(p或b)条带中的视频块可以相对于同一视频帧内的相邻块中的参考样点使用空间预测或相对于其他先前和/或未来参考视频帧中的参考样点使用时间预测。
[0005]
基于先前已被编码的参考块(例如,相邻块)的空间或时间预测产生针对待编解码的当前视频块的预测块。查找参考块的过程可以通过块匹配算法来完成。表示待编解码的当前块与预测块之间的像素差的残差数据被称为残差块或预测误差。根据指向形成预测块的参考帧中的参考块的运动矢量、以及残差块来对帧间编码块进行编码。确定运动矢量的过程典型地被称为运动估计。根据帧内预测模式和残差块对帧内编码块进行编码。为了进一步压缩,将残差块从像素域变换到变换域,例如频域,从而产生残差变换系数,然后可以对所述残差变换系数进行量化。可以扫描最初布置为二维阵列的量化的变换系数,以产生变换系数的一维矢量,并且然后将其熵编码为视频比特流,以实现更多的压缩。
[0006]
然后,将已编码视频比特流保存在计算机可读存储介质(例如,闪速存储器)中,以被具有数字视频能力的另一个电子设备访问,或者直接以有线或无线方式传输到电子设备。然后,电子设备通过例如解析已编码视频比特流以从比特流获得语法元素并且至少部分地基于从比特流获得的语法元素将数字视频数据从已编码视频比特流重建为其原始格
式来执行视频解压缩(其是与上文描述的视频压缩相反的过程),并且在电子设备的显示器上渲染重建数字视频数据。
[0007]
随着数字视频质量从高清到4k
×
2k或甚至8k
×
4k,待编码/解码的视频数据量呈指数增长。如何在保持已解码视频数据的图像质量的同时更高效地对视频数据进行编码/解码方面一直存在挑战。


技术实现要素:

[0008]
本技术描述了与视频数据编码和解码有关的实施方式,并且更具体地,描述了与使用调色板模式进行视频编码和解码的系统和方法有关的实施方式。
[0009]
根据本技术的第一方面,一种对视频数据进行解码的方法包括:从比特流接收与编码单元相关联的多个语法元素,其中,所述多个语法元素指示所述编码单元的尺寸和所述编码单元的编码树类型;根据所述编码单元的编码树类型确定用于所述编码单元的最小调色板模式块尺寸;根据确定所述编码单元的尺寸大于所述最小调色板模式块尺寸:从所述比特流接收与所述编码单元相关联的调色板模式启用标志;以及根据所述调色板模式启用标志从所述比特流中解码所述编码单元。
[0010]
根据本技术的第二方面,一种电子装置包括一个或多个处理单元、存储器以及被存储在所述存储器中的多个程序。所述程序当由所述一个或多个处理单元执行时使所述电子装置执行如上文描述的对视频数据进行解码的方法。
[0011]
根据本技术的第三方面,一种非暂态计算机可读存储介质存储用于由具有一个或多个处理单元的电子装置执行的多个程序。所述程序当由所述一个或多个处理单元执行时使所述电子装置执行如上文描述的对视频数据进行解码的方法。
附图说明
[0012]
被包括在内以提供对实施方式的进一步理解并且并入本文并构成说明书的一部分的附图图示了所描述的实施方式,并且与说明书一起用于解释基本原理。相似的附图标记指代对应的部分。
[0013]
图1是图示了根据本公开的一些实施方式的示例性视频编码和解码系统的框图。
[0014]
图2是图示了根据本公开的一些实施方式的示例性视频编码器的框图。
[0015]
图3是图示了根据本公开的一些实施方式的示例性视频解码器的框图。
[0016]
图4a至图4e是图示了根据本公开的一些实施方式的如何将帧递归地划分成具有不同尺寸和形状的多个视频块的框图。
[0017]
图5a至图5d是图示了根据本公开的一些实施方式的使用调色板表来对视频数据进行编解码的示例的框图。
[0018]
图6是图示了根据本公开的一些实施方式的示例性过程的流程图,视频解码器通过该过程实施解码视频数据的技术。
[0019]
图7是图示了根据本公开的一些实施方式的示例上下文自适应二进制算术编解码(cabac)引擎的框图。
具体实施方式
[0020]
现在将详细参考具体实施方式,附图中图示了这些实施方式的示例。在以下详细描述中,阐述了许多非限制性的具体细节,以便帮助理解本文提出的主题。但是对于本领域的普通技术人员将显而易见的是,在不脱离权利要求的范围的情况下,可以使用各种替代性方案,并且可以在没有这些具体细节的情况下实践主题。例如,对于本领域普通技术人员将显而易见的是,本文提出的主题可以在具有数字视频能力的许多类型的电子设备上实施。
[0021]
图1是图示了根据本公开的一些实施方式的用于并行地对视频块进行编码和解码的示例性系统10的框图。如图1所示,系统10包括源设备12,该源设备生成并且编码视频数据,以由目的地设备14在稍后时间解码。源设备12和目的地设备14可以包括多种电子设备中的任何一种,该多种电子设备包括台式计算机或膝上型计算机、平板计算机、智能电话、机顶盒、数字电视、相机、显示设备、数字媒体播放器、视频游戏机、视频流式传输设备等。在一些实施方式中,源设备12和目的地设备14配备有无线通信能力。
[0022]
在一些实施方式中,目的地设备14可以经由链路16接收待解码的已编码视频数据。链路16可以包括能够将已编码视频数据从源设备12移到目的地设备14的任何类型的通信介质或设备。在一个示例中,链路16可以包括用于使源设备12能够实时地将已编码视频数据直接传输到目的地设备14的通信介质。已编码视频数据可以根据如无线通信协议等通信标准来调制并传输到目的地设备14。通信介质可以包括任何无线或有线通信介质,如射频(rf)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络(如局域网、广域网、或全球网(如互联网))的一部分。通信介质可以包括路由器、交换机、基站或可以用于促进从源设备12到目的地设备14的通信的任何其他设备。
[0023]
在一些其他实施方式中,已编码视频数据可以从输出接口22传输到存储设备32。随后,存储设备32中的已编码视频数据可以由目的地设备14经由输入接口28访问。存储设备32可以包括各种分布式或本地访问的数据存储介质中的任一种,如硬盘驱动器、蓝光光盘、dvd、cd-rom、闪速存储器、易失性存储器或非易失性存储器或用于存储已编码视频数据的任何其他合适的数字存储介质。在进一步示例中,存储设备32可以对应于可以保持由源设备12生成的已编码视频数据的文件服务器或另一个中间存储设备。目的地设备14可以经由流式传输或下载从存储设备32访问所存储的视频数据。文件服务器可以是能够存储已编码视频数据并且将已编码视频数据传输到目的地设备14的任何类型的计算机。示例性文件服务器包括web服务器(例如,用于网站)、ftp服务器、网络附加存储(nas)设备、或本地磁盘驱动器。目的地设备14可以通过任何标准数据连接访问已编码视频数据,该连接包括适于访问被存储在文件服务器上的已编码视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,dsl、电缆调制解调器等)或两者的组合。从存储设备32传输已编码视频数据可以是流式传输、下载传输或两者的组合。
[0024]
如图1所示,源设备12包括视频源18、视频编码器20和输出接口22。视频源18可以包括如视频捕获设备等的源,例如摄像机、包含先前捕获的视频的视频档案、用于从视频内容提供方接收视频的视频馈送接口和/或用于生成计算机图形数据作为源视频的计算机图形系统或这种源的组合。作为一个示例,如果视频源18是安全监控系统的摄像机,则源设备12和目的地设备14可以形成拍照电话或视频电话。然而,本技术中描述的实施方式通常可
以适用于视频编解码并且可以应用于无线和/或有线应用。
[0025]
捕获的、预先捕获的或计算机生成的视频可以由视频编码器20进行编码。已编码视频数据可以经由源设备12的输出接口22被直接传输到目的地设备14。已编码视频数据也可以(或替代性地)被存储到存储设备32上,以供目的地设备14或其他设备以后访问,以进行解码和/或回放。输出接口22可以进一步包括调制解调器和/或发射器。
[0026]
目的地设备14包括输入接口28、视频解码器30和显示设备34。输入接口28可以包括接收器和/或调制解调器,并且通过链路16接收已编码视频数据。通过链路16传送的或在存储设备32上提供已编码视频数据可以包括由视频编码器20生成的各种语法元素,以供视频解码器30用于解码视频数据。这种语法元素可以被包括于在通信介质上传输的、被存储在存储介质上、或被存储在文件服务器中的已编码视频数据内。
[0027]
在一些实施方式中,目的地设备14可以包括显示设备34,该显示设备可以是集成显示设备和被配置为与目的地设备14通信的外部显示设备。显示设备34向用户显示已解码视频数据并且可以包括各种显示设备中的任何一种,如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一种类型的显示设备。
[0028]
视频编码器20和视频解码器30可以根据专有或行业标准(如vvc、hevc、mpeg-4第10部分、高级视频编解码(avc)或这种标准的扩展)进行操作。应当理解,本技术不限于特定的视频编码/解码标准,并且可以适用于其他视频编码/解码标准。通常设想,源设备12的视频编码器20可以被配置为根据这些当前或未来标准中的任何一种来对视频数据进行编码。类似地,通常还设想,目的地设备14的视频解码器30可以被配置为根据这些当前或未来标准中的任何一种来对视频数据进行解码。
[0029]
视频编码器20和视频解码器30各自可以实施为各种适合的编码器电路中的任何一种,如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或其任何组合。当部分地在软件中实施时,电子设备可以将用于软件的指令存储在合适的非暂态计算机可读介质中并且使用一个或多个处理器在硬件中执行指令以执行本公开中公开的视频编码/解码操作。视频编码器20和视频解码器30中的每一个可以被包括在一个或多个编码器或解码器中,该一个或多个编码器或解码器中的任一个可以被集成为相应设备中的组合编码器/解码器(codec)的一部分。
[0030]
图2是图示了根据本技术中描述的一些实施方式的示例性视频编码器20的框图。视频编码器20可以执行对视频帧内的视频块的帧内预测编码和帧间预测编码。帧内预测编码依赖于空间预测来减少或去除给定视频帧或图片内的视频数据的空间冗余。帧间预测编码依赖于时间预测以减少或去除视频序列的邻近视频帧或图片内的视频数据的时间冗余。
[0031]
如图2所示,视频编码器20包括视频数据存储器40、预测处理单元41、已解码图片缓冲器(dpb)64、加法器50、变换处理单元52、量化单元54和熵编码单元56。预测处理单元41进一步包括运动估计单元42、运动补偿单元44、划分单元45、帧内预测处理单元46和帧内块复制(bc)单元48。在一些实施方式中,视频编码器20还包括用于视频块重建的反量化单元58、逆变换处理单元60和加法器62。去块滤波器(未示出)可以位于加法器62与dpb 64之间,以对块边界进行滤波,以从重建的视频中去除块效应伪像。还可以使用除了去块滤波器之外的环路滤波器(未示出)来对加法器62的输出进行滤波。视频编码器20可以采用固定或可编程硬件单元的形式,或可以被划分在所图示的固定或可编程硬件单元中的一个或多个
中。
[0032]
视频数据存储器40可以存储待由视频编码器20的部件编码的视频数据。视频数据存储器40中的视频数据可以例如从视频源18获得。dpb 64是存储参考视频数据以用于由视频编码器20对视频数据进行编码(例如,在帧内预测编码模式或帧间预测编码模式下)的缓冲器。视频数据存储器40和dpb 64可以由多种存储器设备中的任何一种形成。在各个示例中,视频数据存储器40可以与视频编码器20的其他部件一起在片上(on-chip),或者相对于那些部件在片外(off-chip)。
[0033]
如图2所示,在接收到视频数据之后,预测处理单元41内的划分单元45将视频数据划分为视频块。该划分还可以包括根据预设的分割结构(如与视频数据相关联的四叉树结构)将视频帧划分为条带、瓦片、或其他更大的编码单元(cu)。视频帧可以被划分成多个视频块(或称为瓦片的视频块集)。预测处理单元41可以基于误差结果(例如,编码率和失真级别)为当前视频块选择多个可能的预测编码模式之一,如多个帧内预测编码模式之一或多个帧间预测编码模式之一。预测处理单元41可以将所得的帧内预测编码块或帧间预测编码块提供给加法器50以生成残差块,并且提供给加法器62以重建编码块以随后用作参考帧的一部分。预测处理单元41还将如运动矢量、帧内模式指示符、划分信息和其他这种语法信息等语法元素提供给熵编码单元56。
[0034]
为了为当前视频块选择适当的帧内预测编码模式,预测处理单元41内的帧内预测处理单元46可以相对于与待编解码的当前块相同的帧中的一个或多个相邻块执行对当前视频块的帧内预测编码,以提供空间预测。预测处理单元41内的运动估计单元42和运动补偿单元44相对于一个或多个参考帧中的一个或多个预测块执行对当前视频块的帧间预测编码,以提供时间预测。视频编码器20可以执行多个编码通道,例如,来为视频数据的每个块选择适当的编码模式。
[0035]
在一些实施方式中,运动估计单元42根据视频帧序列内的预定模式通过生成运动矢量来确定当前视频帧的帧间预测模式,该运动矢量指示当前视频帧内的视频块的预测单元(pu)相对于参考视频帧内的预测块的位移。由运动估计单元42执行的运动估计是生成运动矢量的过程,该过程估计了视频块的运动。运动矢量例如可以指示当前视频帧或图片内的视频块的pu相对于参考帧内的预测块(或其他已编码单元)的位移,该预测块相对于在当前帧内编码的当前块(或其他已编码单元)。预定模式可以将序列中的视频帧指定为p帧或b帧。帧内bc单元48可以以与由运动估计单元42确定运动矢量以进行帧间预测的方式类似的方式确定用于进行帧内bc编码的矢量,例如,块矢量,或者可以利用运动估计单元42来确定块矢量。
[0036]
预测块是在像素差方面被认为与待编解码的视频块的pu紧密匹配的参考帧的块,该像素差可以由绝对差和(sad)、平方差和(ssd)或其他差值度量来确定。在一些实施方式中,视频编码器20可以计算被存储在dpb 64中的参考帧的子整数像素位置的值。例如,视频编码器20可以插入参考帧的四分之一像素位置、八分之一像素位置或其他分数像素位置的值。因此,运动估计单元42可以相对于全像素位置和分数像素位置执行运动搜索并且以分数像素精度输出运动矢量。
[0037]
运动估计单元42通过将pu的位置与从第一参考帧列表(列表0)或第二参考帧列表(列表1)中选择的参考帧的预测块的位置进行比较来计算帧间预测编码帧中的视频块的pu
的运动矢量,该列表中的每一个标识被存储在dpb 64中的一个或多个参考帧。运动估计单元42将计算的运动矢量发送到运动补偿单元44,并且然后发送到熵编码单元56。
[0038]
由运动补偿单元44执行的运动补偿可以涉及基于由运动估计单元42确定的运动矢量获取或生成预测块。在接收当前视频块的pu的运动矢量后,运动补偿单元44可以在参考帧列表中的一个中定位运动矢量所指向的预测块,从dpb 64取得预测块并且将预测块转发到加法器50。然后,加法器50通过从被编码的当前视频块的像素值中减去由运动补偿单元44提供的预测块的像素值来形成具有像素差值的残差视频块。形成残差视频块的像素差值可以包括亮度量差或色度量差或两者。运动补偿单元44还可以生成与视频帧的视频块相关联的语法元素,以供视频解码器30在对视频帧的视频块进行解码时使用。语法元素可以包括例如定义用于标识预测块的运动矢量的语法元素、指示预测模式的任何标志、或本文描述的任何其他语法信息。注意,运动估计单元42和运动补偿单元44可以是高度集成的,但是出于概念性目的而分开图示。
[0039]
在一些实施方式中,帧内bc单元48可以以与上文结合运动估计单元42和运动补偿单元44所描述的方式类似的方式来生成矢量并且获取预测块,但是其中预测块与被编码的当前块处于同一帧中,并且其中相对于运动矢量,该矢量被称为块矢量。具体地,帧内bc单元48可以确定帧内预测模式以用于对当前块进行编码。在一些示例中,帧内bc单元48可以例如在单独的编码通道期间使用各种帧内预测模式对当前块进行编码,并且通过率失真(rate-distortion)分析来测试其性能。接下来,帧内bc单元48可以在各种测试的帧内预测模式中选择适当的帧内预测模式来使用并相应地生成帧内模式指示符。例如,帧内bc单元48可以使用针对各种测试的帧内预测模式的率失真分析来计算率失真值并且在测试的模式中选择具有最佳率失真特性的帧内预测模式作为要使用的适当的帧内预测模式。率失真分析通常确定已编码块与原始的未编码块(被编码以产生已编码块)之间的失真(或误差)量以及用于产生已编码块的比特率(即,比特数)。帧内bc单元48可以从各个已编码块的失真和速率来计算比值,以确定哪个帧内预测模式展现出块的最佳率失真值。
[0040]
在其他示例中,帧内bc单元48可以全部或部分地使用运动估计单元42和运动补偿单元44,以根据本文描述的实施方式执行用于帧内bc预测的这种功能。在任一种情况下,对于帧内块复制,预测块可以是就像素差而言被视为与待编解码的块紧密匹配的块,该像素差可以由绝对差和(sad)、平方差和(ssd)或其他差度量确定,并且预测块的识别可以包括计算子整数像素位置的值。
[0041]
无论预测块是根据帧内预测来自同一帧还是根据帧间预测来自不同帧,视频编码器20都可以通过从被编码的当前视频块的像素值中减去预测块的像素值来形成残差视频块,从而形成像素差值。形成残差视频块的像素差值可以包括亮度分量差和色度分量差。
[0042]
如上文描述的,帧内预测处理单元46可以对当前视频块进行帧内预测,作为由运动估计单元42和运动补偿单元44执行的帧间预测,或者由帧内bc单元48执行的帧内块复制预测的替代方案。具体地,帧内预测处理单元46可以确定帧内预测模式以用于对当前块进行编码。为此,帧内预测处理单元46可以例如在单独的编码通道期间使用各种帧内预测模式对当前块进行编码,并且帧内预测处理单元46(或在一些示例中为模式选择单元)可以从测试的帧内预测模式中选择适当的帧内预测模式来使用。帧内预测处理单元46可以将指示块的所选帧内预测模式的信息提供给熵编码单元56。熵编码单元56可以对指示比特流中的
所选帧内预测模式的信息进行编码。
[0043]
在预测处理单元41经由帧间预测或帧内预测确定当前视频块的预测块之后,加法器50通过从当前视频块中减去预测块来形成残差视频块。残差块中的残差视频数据可以被包括在一个或多个变换单元(tu)中,并且被提供给变换处理单元52。变换处理单元52使用如离散余弦变换(dct)或概念上类似的变换等变换将残差视频数据变换为残差变换系数。
[0044]
变换处理单元52可以将所得的变换系数发送到量化单元54。量化单元54对变换系数进行量化以进一步降低比特率。量化过程还可以减小与系数中的一些或所有系数相关联的比特深度。量化程度可以通过调整量化参数来修改。在一些示例中,量化单元54然后可以执行对包括量化的变换系数的矩阵的扫描。替代性地,熵编码单元56可以执行扫描。
[0045]
量化之后,熵编码单元56使用例如上下文自适应可变长度编解码(cavlc)、上下文自适应二进制算术编解码(cabac)、基于语法的上下文自适应二进制算术编解码(sbac)、概率区间划分熵(pipe)编码或其他熵编码方法或技术将量化的变换系数熵编码为视频比特流。然后可以将已编码比特流传输到视频解码器30,或将其存档在存储设备32中,以供以后传输到视频解码器30或由视频解码器取得。熵编码单元56还可以对被编码的当前视频帧的运动矢量和其他语法元素进行熵编码。
[0046]
反量化单元58和逆变换处理单元60分别应用反量化和逆变换以在像素域中重建残差视频块,以生成用于预测其他视频块的参考块。如上所述,运动补偿单元44可以从dpb 64中存储的帧的一个或多个参考块中生成运动补偿的预测块。运动补偿单元44还可以将一个或多个内插滤波器应用于预测块以计算用于运动估计中的子整数像素值。
[0047]
加法器62将重建的残差块添加到由运动补偿单元44产生的运动补偿的预测块,以产生参考块用于存储在dpb 64中。参考块然后可以由帧内bc单元48、运动估计单元42和运动补偿单元44用作预测块,以对后续视频帧中的另一个视频块进行帧间预测。
[0048]
图3是图示了根据本技术的一些实施方式的示例性视频解码器30的框图。视频解码器30包括视频数据存储器79、熵解码单元80、预测处理单元81、反量化单元86、逆变换处理单元88、加法器90和dpb 92。预测处理单元81进一步包括运动补偿单元82、帧内预测处理单元84和帧内bc单元85。视频解码器30可以执行通常与上文结合图2关于视频编码器20所描述的编码过程相反的解码过程。例如,运动补偿单元82可以基于从熵解码单元80接收到的运动矢量生成预测数据,而帧内预测单元84可以基于从熵解码单元80接收到的帧内预测模式指示符生成预测数据。
[0049]
在一些示例中,可以给视频解码器30的单元分配任务以执行本技术的实施方式。同样,在一些示例中,本公开的实施方式可以在视频解码器30的一个或多个单元之间进行划分。例如,帧内bc单元85可以单独或与视频解码器30的其他单元(如运动补偿单元82、帧内预测处理单元84和熵解码单元80)组合执行本技术的实施方式。在一些示例中,视频解码器30可以不包括帧内bc单元85,并且帧内bc单元85的功能可以由预测处理单元81的其他部件(如运动补偿单元82)执行。
[0050]
视频数据存储器79可以存储待由视频解码器30的其他部件解码的视频数据,比如已编码视频比特流。例如,可以经由对视频数据进行有线或无线网络传送或者通过访问物理数据存储介质(例如,闪存驱动器或硬盘)从存储设备32、本地视频源(如相机)获得被存储在视频数据存储器79中的视频数据。视频数据存储器79可以包括存储来自已编码视频比
特流的已编码视频数据的已编码图片缓冲器(cpb)。视频解码器30的已解码图片缓冲器(dpb)92存储参考视频数据,以用于由视频解码器30对视频数据进行解码(例如,在帧内预测编码模式或帧间预测编码模式下)。视频数据存储器79和dpb 92可以由多种存储器设备中的任一种形成,如动态随机存取存储器(dram),包括同步dram(sdram)、磁阻式ram(mram)、电阻式ram(rram)或其他类型的存储器设备。出于说明性目的,视频数据存储器79和dpb 92在图3中被描绘为视频解码器30的两个不同的部件。但是对于本领域技术人员将显而易见的是,视频数据存储器79和dpb 92可以由相同的存储器设备或单独的存储器设备提供。在一些示例中,视频数据存储器79可以与视频解码器30的其他部件一起在片上,或者相对于那些部件在片外。
[0051]
在解码过程期间,视频解码器30接收表示已编码视频帧的视频块的已编码视频比特流和相关联的语法元素。视频解码器30可以在视频帧级别和/或视频块级别接收语法元素。视频解码器30的熵解码单元80对比特流进行熵解码以生成量化的系数、运动矢量或帧内预测模式指示符和其他语法元素。熵解码单元80然后将运动矢量和其他语法元素转发到预测处理单元81。
[0052]
当视频帧被编码为帧内预测编码(i)帧或用于其他类型的帧中的帧内编码预测块时,预测处理单元81的帧内预测处理单元84可以基于信号传输的帧内预测模式和来自当前帧的先前解码块的参考数据来生成当前视频帧的视频块的预测数据。
[0053]
当视频帧被编码为帧间预测编码(即,b或p)帧时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收到的运动矢量和其他语法元素产生当前视频帧的视频块的一个或多个预测块。每个预测块可以从参考帧列表之一内的参考帧产生。视频解码器30可以基于被存储在dpb 92中的参考帧使用默认构造技术构造参考帧列表:列表0和列表1。
[0054]
在一些示例中,当根据本文描述的帧内bc模式对视频块进行编解码时,预测处理单元81的帧内bc单元85基于从熵解码单元80接收到的块矢量和其他语法元素,为当前视频块产生预测块。预测块可以处于与由视频编码器20定义的当前视频块相同的图片的重建的区域内。
[0055]
运动补偿单元82和/或帧内bc单元85通过解析运动矢量和其他语法元素来确定当前视频帧的视频块的预测信息,并且然后使用预测信息来产生被解码的当前视频块的预测块。例如,运动补偿单元82使用接收到的语法元素中的一些来确定用于对视频帧的视频块进行编码的预测模式(例如,帧内预测或帧间预测)、帧间预测帧类型(例如,b或p)、帧的参考帧列表中的一个或多个参考帧列表的构造信息、帧的每个帧间预测编码视频块的运动矢量、帧的每个帧间预测编码视频块的帧间预测状态以及用于对当前视频帧中的视频块进行解码的其他信息。
[0056]
类似地,帧内bc单元85可以使用接收到的语法元素中的一些(例如,标志)来确定当前视频块是使用以下各项预测的:帧内bc模式、帧的视频块处于重建的区域内并且应被存储在dpb 92中的构造信息、帧的每个帧内bc预测视频块的块矢量、帧的每个帧内bc预测视频块的帧内bc预测状态以及用于对当前视频帧中的视频块进行解码的其他信息。
[0057]
运动补偿单元82还可以如由视频编码器20在对视频块进行编码期间使用的那样使用内插滤波器来执行内插以计算参考块的子整数像素的内插值。在这种情况下,运动补偿单元82可以从接收到的语法元素确定由视频编码器20使用的内插滤波器并且使用内插
滤波器来产生预测块。
[0058]
反量化单元86使用由视频编码器20针对视频帧中的每个视频块计算的用于确定量化程度的相同的量化参数,对在比特流中提供的并且由熵解码单元80进行熵解码的量化的变换系数进行反量化。逆变换处理单元88将逆变换(例如,逆dct、逆整数变换或概念上类似的逆变换过程)应用于变换系数,以便在像素域中重建残差块。
[0059]
在运动补偿单元82或帧内bc单元85基于矢量和其他语法元素生成当前视频块的预测块之后,加法器90通过对来自逆变换处理单元88的残差块以及由运动补偿单元82和帧内bc单元85生成的对应预测块求和来重建当前视频块的已解码视频块。环路滤波器(未示出)可以被定位在加法器90与dpb 92之间,以进一步处理已解码视频块。然后将给定帧中的已解码视频块存储在dpb 92中,该dpb存储用于对接下来的视频块进行后续运动补偿的参考帧。dpb 92或与dpb 92分开的存储器设备还可以存储已解码视频以供稍后呈现在如图1的显示设备34等的显示设备上。
[0060]
在典型的视频编解码过程中,视频序列典型地包括帧或图片的有序集合。每个帧可以包括三个样点阵列,分别表示为sl、scb和scr。sl是亮度样点的二维阵列。scb是cb色度样点的二维阵列。scr是cr色度样点的二维阵列。在其他实例中,帧可以是单色的,并且因此仅包括亮度样点的一个二维阵列。
[0061]
如图4a所示,视频编码器20(或更具体地,划分单元45)通过首先将帧划分为一组编码树单元(ctu)来生成帧的已编码表示。视频帧可以包括从左到右以及从上到下以光栅扫描顺序连续排序的整数个ctu。每个ctu是最大的逻辑编码单元,并且由视频编码器20在序列参数集中用信号传输ctu的宽度和高度,使得视频序列中的所有ctu具有相同的尺寸,即128
×
128、64
×
64、32
×
32和16
×
16中的一个。但是应当注意,本技术不必限于特定的尺寸。如图4b所示,每个ctu可以包括亮度样点的一个编码树块(ctb)、色度样点的两个对应的编码树块以及用于对编码树块的样点进行编解码的语法元素。语法元素描述像素的编码块的不同类型的单元的属性以及可以如何在视频解码器30处重建视频序列,该语法元素包括帧间预测或帧内预测、帧内预测模式、运动矢量和其他参数。在单色图片或具有三个单独的色彩平面的图片中,ctu可以包括单个编码树块和用于对编码树块的样点进行编解码的语法元素。编码树块可以是n
×
n样点块。
[0062]
为了实现更好的性能,视频编码器20可以对ctu的编码树块递归地执行如二叉树划分、三叉树划分、四叉树划分或两者的组合等树划分,并且将ctu划分为较小的编码单元(cu)。如图4c描绘的,首先将64
×
64ctu 400划分为四个较小的cu,每个cu的块尺寸为32
×
32。在四个较小的cu中,cu 410和cu 420按块尺寸各自被划分为四个16
×
16的cu。两个16
×
16cu 430和440按块尺寸各自进一步划分为四个8
×
8的cu。图4d描绘了图示了如图4c中所描绘的ctu 400的划分过程的最终结果的四叉树数据结构,四叉树的每个叶节点对应于相应尺寸在32
×
32至8
×
8范围内的一个cu。类似于图4b描绘的ctu,每个cu可以包括亮度样点的编码块(cb)和相同尺寸的帧的色度样点的两个对应的编码块,以及用于对编码块的样点进行编解码的语法元素。在单色图片或具有三个单独的色彩平面的图片中,cu可以包括单个编码块和用于对编码块的样点进行编解码的语法结构。应当注意,图4c和图4d中描绘的四叉树划分仅用于说明目的,并且可以将一个ctu分割为多个cu以适应基于四叉树/三叉树/二叉树划分的不同的局部特性。在多类型树结构中,一个ctu被四叉树结构划分,并且每
个四叉树叶cu可以进一步被二叉树结构或三叉树结构划分。如图4e所示,有五种划分类型,即四元划分、水平二元划分、垂直二元划分、水平三元划分以及垂直三元划分。
[0063]
在一些实施方式中,视频编码器20可以进一步将cu的编码块划分为一个或多个m
×
n预测块(pb)。预测块是样点的应用相同预测(帧间或帧内)的矩形(正方形或非正方形)块。cu的预测单元(pu)可以包括亮度样点的预测块、色度样点的两个对应的预测块以及用于对预测块进行预测的语法元素。在单色图片或具有三个单独的色彩平面的图片中,pu可以包括单个预测块和用于对预测块进行预测的语法结构。视频编码器20可以生成cu的每个pu的亮度、cb及cr预测块的预测亮度、cb及cr块。
[0064]
视频编码器20可以使用帧内预测或帧间预测来生成pu的预测块。如果视频编码器20使用帧内预测来生成pu的预测块,则视频编码器20可以基于与pu相关联的帧的已解码样点来生成pu的预测块。如果视频编码器20使用帧间预测来生成pu的预测块,则视频编码器20可以基于除与pu相关联的帧之外的一个或多个帧的已解码样点来生成pu的预测块。
[0065]
在视频编码器20生成cu的一个或多个pu的预测亮度、cb和cr块之后,视频编码器20可以通过从其原始亮度编码块中减去cu的预测亮度块来生成cu的亮度残差块,使得cu的亮度残差块中的每个样点指示cu的预测亮度块之一中的亮度样点与cu的原始亮度编码块中的对应样点之间的差。类似地,视频编码器20可以分别生成cu的cb残差块和cr残差块,使得cu的cb残差块中的每个样点指示cu的预测cb块之一中的cb样点与cu的原始cb编码块中的对应样点之间的差,并且cu的cr残差块中的每个样点可以指示cu的预测cr块之一中的cr样点与cu的原始cr编码块中的对应样点之间的差。
[0066]
此外,如图4c所图示的,视频编码器20可以使用四叉树划分来将cu的亮度、cb和cr残差块分解为一个或多个亮度、cb和cr变换块。变换块是样点的应用相同变换的矩形(正方形或非正方形)块。cu的变换单元(tu)可以包括亮度样点的变换块、色度样点的两个对应的变换块以及用于对变换块样点进行变换的语法元素。因此,cu的每个tu可以与亮度变换块、cb变换块和cr变换块相关联。在一些示例中,与tu相关联的亮度变换块可以是cu的亮度残差块的子块。cb变换块可以是cu的cb残差块的子块。cr变换块可以是cu的cr残差块的子块。在单色图片或具有三个单独的色彩平面的图片中,tu可以包括单个变换块和用于对变换块的样点进行变换的语法结构。
[0067]
视频编码器20可以将一个或多个变换应用于tu的亮度变换块以生成tu的亮度系数块。系数块可以是变换系数的二维阵列。变换系数可以是标量。视频编码器20可以将一个或多个变换应用于tu的cb变换块以生成tu的cb系数块。视频编码器20可以将一个或多个变换应用于tu的cr变换块以生成tu的cr系数块。
[0068]
在生成系数块(例如,亮度系数块、cb系数块或cr系数块)之后,视频编码器20可以对系数块进行量化。量化通常是指将变换系数量化以可能地减少用于表示变换系数的数据量从而提供进一步压缩的过程。在视频编码器20对系数块进行量化之后,视频编码器20可以对指示量化的变换系数的语法元素进行熵编码。例如,视频编码器20可以对指示量化的变换系数的语法元素执行上下文自适应二进制算术编解码(cabac)。最终,视频编码器20可以输出包括形成编码帧和相关联数据的表示的比特序列的比特流,该比特流被保存在存储设备32中或被传输到目的地设备14。
[0069]
在接收到由视频编码器20生成的比特流之后,视频解码器30可以解析比特流以从
比特流中获得语法元素。视频解码器30可以至少部分地基于从比特流获得的语法元素来重建视频数据的帧。重建视频数据的过程通常与由视频编码器20执行的编码过程是相反的。例如,视频解码器30可以对与当前cu的tu相关联的系数块执行逆变换以重建与当前cu的tu相关联的残差块。视频解码器30还通过将当前cu的pu的预测块的样点添加到当前cu的tu的变换块的对应样点来重建当前cu的编码块。在重建帧的每个cu的编码块之后,视频解码器30可以重建该帧。
[0070]
如上所述,视频编解码主要使用两种模式,即,帧内预测(intra-frame prediction)(或帧内预测(intra-prediction))和帧间预测(inter-frame prediction)(或帧间预测(inter-prediction))来实现视频压缩。基于调色板(palette-based)的编解码是许多视频编解码标准采用的另一编解码方案。在可能特别适用于屏幕生成的内容编解码的基于调色板的编解码中,视频编解码器(例如,视频编码器20或视频解码器30)形成表示给定块的视频数据的颜色的调色板表。调色板表包括给定块中最主要的(例如,经常使用的)像素值。给定块的视频数据中不经常表示的像素值不被包括在调色板表中,或者作为逃逸(escape)颜色被包括在调色板表中。
[0071]
调色板表中的每个条目包括调色板表中对应像素值的索引。可以对块中样点的调色板索引进行编解码,以指示调色板表中的哪个条目要被用于预测或重建哪个样点。调色板模式开始于为图片、条带、瓦片或视频块的其他这种分组的第一块生成调色板预测值的过程。如下文将解释的,后续视频块的调色板预测值典型地通过更新先前使用的调色板预测值来生成。出于说明的目的,假设调色板预测值是在图片级别定义的。换句话说,图片可以包括多个编码块,每个编码块具有其自己的调色板表,但是对于整个图片有一个调色板预测值。
[0072]
为了减少用信号传输视频比特流中的调色板条目所需的比特,视频解码器可以利用调色板预测值来确定调色板表中的新调色板条目,以重建视频块。例如,调色板预测值可以包括来自先前使用的调色板表的调色板条目,或者甚至可以通过包括最近使用的调色板表的所有条目来用最近使用的调色板表来被初始化。在一些实施方式中,调色板预测值可以包括少于来自最近使用的调色板表的所有条目,并且然后结合来自其他先前使用的调色板表的一些条目。调色板预测值可以具有与用于编解码不同块的调色板表相同的大小,或者可以比用于编解码不同块的调色板表更大或更小。在一个示例中,调色板预测值被实施为包括64个调色板条目的先进先出(fifo)表。
[0073]
为了从调色板预测值生成视频数据块的调色板表,视频解码器可以从已编码视频比特流接收调色板预测值的每个条目的一比特标志。该一比特标志可以具有指示调色板预测值的相关联条目将被包括在调色板表中的第一值(例如,二进制一)或者指示调色板预测值的相关联条目将不被包括在调色板表中的第二值(例如,二进制零)。如果调色板预测值的大小大于用于视频数据块的调色板表,则一旦达到调色板表的最大大小,视频解码器可以停止接收更多的标志。
[0074]
在一些实施方式中,调色板表中的一些条目可以在已编码视频比特流中直接用信号传输,而不是使用调色板预测值来确定。对于这种条目,视频解码器可以从已编码视频比特流接收三个单独的m比特的值,该m比特的值指示与条目相关联的亮度和两个色度分量的像素值,其中m表示视频数据的比特深度。与直接用信号传输的调色板条目所需的多个m比
特的值相比,从调色板预测值得到的那些调色板条目只需要一比特标志。因此,使用调色板预测值用信号传输一些或所有调色板条目可以显著减少用信号传输新调色板表的条目所需的比特数,从而提高调色板模式编解码的整体编解码效率。
[0075]
在许多实例中,一个块的调色板预测值是基于用于编解码一个或多个先前编解码的块的调色板表来确定的。但是,当对图片、条带或瓦片中的第一编码树单元进行编解码时,先前编解码的块的调色板表可能不可用。因此,无法使用先前使用的调色板表的条目来生成调色板预测值。在这种情况下,可以在序列参数集(sps)和/或图片参数集(pps)中用信号传输调色板预测值初始值序列,该初始值是当先前使用的调色板表不可用时用于生成调色板预测值的值。sps通常是指应用于被称为已编码视频序列(cvs)的一系列连续编码视频图片的语法元素的语法结构,如由在pps中找到的语法元素的内容确定的,该内容由在每个条带分段头部中找到的语法元素引用。pps通常是指应用于cvs内的一个或多个单独图片的语法元素的语法结构,如由在每个条带分段头部中找到的语法元素确定的。因此,sps通常被认为是比pps更高级别的语法结构,这意味着与pps中包括的语法元素相比,sps中包括的语法元素通常不那么频繁地变化并且应用于视频数据的更大部分。
[0076]
图5a至图5b是图示了根据本公开的一些实施方式的使用调色板表来对视频数据进行编解码的示例的框图。
[0077]
对于调色板(plt)模式信号传输,调色板模式被编码为针对编码单元的预测模式,即,编码单元的预测模式可以是mode_intra、mode_inter、mode_ibc和mode_plt。如果使用调色板模式,则cu中的像素值由一小组代表性颜色来表示。该组称为调色板。对于具有接近调色板颜色的值的像素,用信号传输调色板索引。对于具有调色板之外的值的像素,用逃逸符号(escape symbol)表示这些像素,并且直接用信号传输量化的像素值。当前vvc草案规范中调色板模式的语法和相关语义分别在下面的表1和表2中图示。
[0078]
为了解码调色板模式编码块,解码器需要从比特流中解码调色板颜色和索引。调色板颜色由调色板表定义并由调色板表编解码语法(例如,palette_predictor_run、num_signaled_palette_entries、new_palette_entries)来编码。针对每个cu用信号传输逃逸标志palette_escape_val_present_flag,以指示当前cu中是否存在逃逸符号。如果存在逃逸符号,则调色板表将增加一个条目,并将最后一个索引指派给逃逸模式。cu中所有像素的调色板索引形成调色板索引图,并由调色板索引图编解码语法(例如,num_palette_indices_minus1、palette_idx_idc、copy_above_indices_for_final_run_flag、palette_transpose_flag、copy_above_palette_indices_flag、palette_run_prefix、palette_run_suffix)来编码。调色板模式编码cu的示例在图5a中图示,其中调色板大小为4。cu中的前3个样点分别使用调色板条目2、0和3进行重建。cu中的“x”样点表示逃逸符号。cu级别标志palette_escape_val_present_flag指示cu中是否存在任何逃逸符号。如果存在逃逸符号,则调色板大小增加一并且使用最后一个索引来指示逃逸符号。因此,在图5a中,索引4被指派给逃逸符号。
[0079]
如果调色板索引(例如,图5a中的索引4)对应于逃逸符号,则用信号传输附加开销以指示样点的对应颜色。
[0080]
在一些实施例中,在编码器侧,有必要导出适当的调色板以与cu一起使用。对于有损编解码的调色板推导,使用了修改的k均值聚类算法。将块的第一个样点添加到调色板。
然后,对于块中的每个后续样点,计算样点与每个当前调色板颜色之间的绝对差之和(sad)。如果每个分量的失真小于与最小sad相对应的调色板条目的阈值,则将样点添加到属于调色板条目的聚类中。否则,将样点添加作为新的调色板条目。当被映射到聚类的样点数量超过阈值时,该聚类的质心将被更新并成为该聚类的调色板条目。
[0081]
在下一步骤中,按使用的降序对聚类进行排序。然后,更新与每个条目相对应的调色板条目。通常,聚类的质心被用作调色板条目。但是,当考虑到调色板条目的编解码成本时,执行率失真分析以分析来自调色板预测值的任何条目是否更适合代替质心来用作更新的调色板条目。这个过程一直持续到所有聚类都已处理或达到最大调色板大小。最后,如果聚类只有一个样点并且对应的调色板条目不在调色板预测值中,则将该样点转换为逃逸符号。另外,删除重复的调色板条目并合并它们的聚类。
[0082]
在调色板推导之后,块中的每个样点都被指派了最近的(以sad表示)调色板条目的索引。然后,将样点指派给

index



copy_above

模式。对于

index



copy_above

模式都可能的每个样点,确定每个模式的运行。然后,计算编解码该模式的成本。选择成本较低的模式。
[0083]
对于调色板表的编解码,维护调色板预测值。调色板的最大大小和调色板预测值的最大大小都可以在sps(或其他编解码级别,比如pps、条带头等)中用信号传输。在调色板预测值被重置为0的每个条带的开头对调色板预测值进行初始化。对于调色板预测值中的每个条目,都用信号传输重用标志以指示它是否是当前调色板的一部分。如图5b所示,发送重用标志palette_predictor_run。在此之后,使用0阶指数哥伦布码(exponential golomb code of order 0)通过语法num_signaled_palette_entries用信号传输新调色板条目的数量。最后,用信号传输新调色板条目new_palette_entries[]的分量值。在对当前cu进行编解码后,使用当前调色板来更新调色板预测值,并且当前调色板中未重用的来自先前调色板预测值的条目将被添加到新调色板预测值的末尾,直到达到允许的最大大小。
[0084]
为了对调色板索引图进行编解码,使用水平或垂直遍历扫描对索引进行编解码,如图5c所示。在比特流中使用palette_transpose_flag用信号显式传输扫描顺序。
[0085]
使用两种主要的调色板样点模式对调色板索引进行编解码:

index



copy_above

。在

index

模式下,用信号显式传输调色板索引。在

copy_above

模式下,复制上一行中的样点的调色板索引。对于

index



copy_above

这两种模式,运行值用信号来传输,该运行值指定使用相同模式编码的像素数。除了当使用水平扫描时的顶行、或当使用垂直扫描时的第一列、或当先前模式是

copy_above

时之外,都使用标志来用信号传输该模式。
[0086]
在一些实施例中,索引图的编解码顺序如下:首先,使用语法num_palette_indices_minusl来用信号传输cu的索引值的数量,然后是使用语法palette_idx_idc来用信号传输整个cu的实际索引值。索引的数量和索引值都在旁路模式下编解码。这会将与索引相关的旁路编解码的二进制位组合在一起。然后使用语法copy_above_palette_indices_flag、palette_run_prefix和palette_run_suffix以交错方式用信号传输调色板模式(index或copy_above)和运行。copy_above_palette_indices_flag是上下文编解码标志(只有一个二进制位),palette_run_prefix的码字是通过下面表3中描述的过程确定的,并且前5个二进制位是上下文编解码的。palette_run_suffix被编解码为旁路二进制位。最
后,将与整个cu的逃逸样点相对应的分量逃逸值组合在一起,并在旁路模式下进行编解码。在用信号传输索引值之后,用信号传输附加语法元素copy_above_indices_for_final_run_flag。该语法元素与索引的数量相结合消除了用信号传输与块中的最后一次运行相对应的运行值的需要。
[0087]
在vvc(vtm)的参考软件中,为i条带启用了双树,它将亮度分量和色度分量的编码单元分区分开。因此,调色板被分开地应用于亮度(y分量)和色度(cb和cr分量)。如果双树被禁用,则调色板将被联合地应用于y、cb、cr分量。
[0088]
表1调色板编解码语法
[0089]
[0090]
[0091]
[0092]
[0093]
[0094][0095]
表2调色板编解码语义
[0096]
[0097]
[0098]
[0099]
[0100][0101]
[0102]
表3语法palette_run_prefix的二进制码字和cabac上下文选择
[0103]
[0104]
[0105][0106]
在第15次jvet会议上,提出了基于行的cg(文档编号为jvet-o0120,可在http://phenix.int-evry.fr/jvet/中访问)以简化vtm6.0中的调色板模式中的缓冲器使用和语法。作为变换系数编解码中使用的系数组(cg),cu被划分为多个基于行的系数组,每个系数组由m个样点构成,其中对于每个cg,对索引运行、调色板索引值和逃逸模式的量化颜色进行顺序编码/解析。因此,可以在解析语法元素(例如,cg的索引运行、调色板索引值和逃逸量化颜色)后重建基于行的cg中的像素,这大大降低了vtm6.0中的调色板模式下的缓冲器需求,其中必须在重建之前解析(并存储)整个cu的语法元素。
[0107]
在该申请中,基于遍历扫描模式将调色板模式的每个cu划分为m个样点的多个分段(在这个测试中m=8),如图5d所示。
[0108]
每个分段中调色板运行编解码的编码顺序如下:对于每个像素,用信号传输一个上下文编解码的二进制位run_copy_flag=0,该二进制位指示该像素与前一个像素的模式相同,即,前一个扫描像素和当前像素都具有运行类型copy_above或者前一个扫描像素和当前像素都具有运行类型index和相同的索引值。否则,用信号传输run_copy_flag=1
[0109]
如果当前像素和前一个像素是不同的模式,则用信号传输指示像素的运行类型(即,index或copy_above)的一个上下文编解码的二进制位copy_above_palette_indices_flag。在这种情况下,如果样点在第一行(水平遍历扫描)或第一列(垂直遍历扫描),则解码器不必解析运行类型,因为默认使用index模式。如果先前解析的运行类型是copy_above,则解码器也不必解析运行类型。
[0110]
在对一个分段中的像素进行调色板运行编解码之后,(index模式的)索引值和量化的逃逸颜色被编码为旁路二进制位,并与上下文编解码二进制位的编码/解析分开分组,以提高每个基于行的cg内的吞吐量。由于现在在运行编解码之后对索引值进行编码/解析,因此编码器不必用信号传输索引值的数量num_palette_indices_minus1和最后的运行类型copy_above_indices_for_final_run_flag。cg调色板模式的语法如表4所示。
[0111]
表4调色板编解码语法
[0112]
[0113]
[0114]
[0115]
[0116][0117]
图6是图示了根据本公开的一些实施方式的示例性过程的流程图600,视频解码器(例如,视频解码器30)通过该过程实施解码视频数据的技术。
[0118]
对于vvc中的调色板模式,调色板模式可以适用于等于或小于64
×
64像素的cu。在一些实施例中,提出了最小调色板模式块尺寸以降低复杂度,使得对于尺寸小于最小调色板模式块尺寸的编码单元禁用调色板模式。例如,提出了对尺寸小于某个阈值(例如,16个样点)的所有块禁用调色板模式。因为有不同的色度格式(例如,4∶4∶4、4∶2∶2、4∶2∶0)和不同的编码树类型(例如,single_tree、dual_tree_luma和dual_tree_chroma),所以这个阈值可能会变化。注意,“single_tree”指示图像的亮度分量和色度分量以相同的方式被划分,使得这两个分量在调色板模式下共享相同的调色板表和调色板预测值。相比之下,“dual_tree”指示图像的亮度分量和色度分量被单独地划分,使得这两个分量在调色板模式下具有不同的调色板表和调色板预测值。例如,对于具有“dual_tree”类型的yuv 4∶2∶0格式,即,单独考虑不同的分量,应禁用针对小于16个样点的cu的色度分量的调色板模式以降低复杂度。下表5给出了所提出的语法的一个示例。
[0119]
表5——不同编码树类型和色度格式下的调色板模式启用标志
[0120][0121]
在表5中,pred_mode_plt_flag指定对于编码单元是启用(例如,值1)还是禁用(例如,值0)调色板模式。如subwidthc和subheightc等参数与编码单元的色度格式关联如下:
[0122]
色度格式subwidthcsubheightc单色114∶4∶4114∶2∶2214∶2∶022
[0123]
在单色采样中,只有一个在名义上被认为是亮度阵列的样点阵列。在4∶2∶0采样中,两个色度阵列中的每一个具有亮度阵列的一半高度和一半宽度。在4∶2∶2采样中,两个色度阵列中的每一个具有亮度阵列的相同高度和一半宽度。在4∶4∶4采样中,两个色度阵列中的每一个具有与亮度阵列相同的高度和宽度。
[0124]
在另一个实施例中,对于单树情况,取决于亮度块尺寸而对小尺寸块禁用调色板模式。在yuv 420格式的一个示例中,在单树情况下,取决于亮度块尺寸而对小于16个像素的cu禁用调色板模式。在一个特定示例中,可以为包含8
×
4个亮度样点和两个4
×
2色度样点的8
×
4cu启用调色板模式,因为调色板启用取决于亮度样点的尺寸而不考虑色度尺寸。
[0125]
在比特流的解码期间,视频解码器30首先从比特流接收与编码单元相关联的多个语法元素(610)。多个语法元素指示编码单元的尺寸和编码单元的编码树类型。例如,编码单元的编码树类型可以是single_tree、dual_tree_luma或dual_tree_chroma之一。视频解码器30然后根据编码单元的编码树类型确定编码单元的最小调色板模式块尺寸(620)。例如,如上表5所示,当编码单元的编码树类型为single_tree或dual_tree_luma时,视频解码器30将最小调色板模式块尺寸设置为16个样点。当编码单元的编码树类型为dual_tree_chroma时,视频解码器30首先确定编码单元的色度格式,然后如上表所示根据色度格式设置最小调色板模式块尺寸。例如,当色度格式为4∶4∶4时,最小调色板模式块尺寸为16个样点;当色度格式为4∶2∶2时,最小调色板模式块尺寸为32个样点;并且当色度格式为4∶2∶0时,最小调色板模式块尺寸为64个样点。
[0126]
根据确定编码单元的尺寸大于最小调色板模式块尺寸(630),视频解码器30从比
特流接收与编码单元相关联的调色板模式启用标志(640),然后根据调色板模式启用标志从比特流解码编码单元(650)。在一些实施例中,当调色板模式启用标志指示针对编码单元启用了调色板模式时,视频解码器30从比特流生成用于当前单元的调色板表(670),然后使用所生成的调色板表从比特流解码编码单元(680),如上文结合图5a至图5d所描述的。
[0127]
图7是图示了根据本公开的一些实施方式的示例性上下文自适应二进制算术编解码(cabac)引擎的框图。
[0128]
上下文自适应二进制算术编解码(cabac)是熵编码形式,用于许多视频编解码标准,例如h.264/mpeg-4avc、高效视频编解码(hevc)和vvc。cabac基于算术编解码,经过一些创新和改变以使其适应视频编解码标准的需要。例如,cabac对二进制符号进行编解码,从而保持低复杂度并且允许对任何符号的更常用比特进行概率建模。概率模型是基于局部上下文而自适应地选择的,从而允许更好地对概率建模,因为编解码模式通常在局部良好相关。最后,cabac通过使用量化的概率范围和概率状态来使用免乘法范围划分(multiplication-free range division)。
[0129]
cabac针对不同的上下文有多种概率模式。cabac首先将所有非二进制符号转换为二进制。然后,对于每个二进制位(或称为比特),编解码器选择要使用的概率模型,然后使用来自附近元素的信息来优化概率估计。最后应用算术编解码来压缩数据。
[0130]
上下文建模提供对编解码符号的条件概率的估计。利用适合的上下文模型,可以根据要编码的当前符号附近的已编解码符号,通过在不同概率模型之间切换来利用给定的符号间冗余。编解码数据符号涉及以下阶段。
[0131]
二值化:cabac使用二进制算术编解码,这意指仅对二进制决策(1或0)进行编码。在算术编解码之前,非二进制值符号(例如变换系数或运动矢量)被“二值化”或被转换为二进制代码。该过程类似于将数据符号转换为可变长度代码的过程,但二进制代码在传输之前(通过算术编解码器)被进一步编码。对二值化符号的每个二进制位(或“比特”)重复阶段。
[0132]
上下文模型选择:“上下文模型”是针对二值化符号的一个或多个二进制位的概率模型。可以根据最近编解码的数据符号的统计数据从可用模型的选择中选择该模型。上下文模型存储每个二进制位为“1”或“0”的概率。
[0133]
算术编码:算术编解码器根据所选择的概率模型对每个二进制位进行编码。注意,每个二进制位只有两个子范围(对应于“0”和“1”)。
[0134]
概率更新:基于实际编解码的值更新所选的上下文模型(例如,如果二进制位值为“1”,则增加为“1”的频率计数)。
[0135]
通过将每个非二进制语法元素值分解为二进制位序列,cabac中每个二进制位值的进一步处理取决于相关联的编解码模式决策,其可以被选择为常规模式或旁路模式。后者是为二进制位选择的,这些二进制位假设是均匀分布的,因此,整个常规二进制算术编码(和解码)过程被简单地绕过。在常规编码模式中,每个二进制位值使用常规二进制算术编解码引擎进行编码,其中,相关联的概率模型要么基于语法元素的类型和语法元素的二值化表示中的二进制位位置或二进制位索引(binidx)通过固定选择确定,要么根据相关的辅助信息(side information)(例如,cu/pu/tu的空间邻居、分量、深度或尺寸,或tu内的位置)从两个或更多个概率模型中自适应地选择。概率模型的选择称为上下文建模。作为一个
重要的设计决策,后一种情况通常仅被应用于最频繁观察到的二进制位,而其他通常不太频繁观察到的二进制位将使用联合的(通常是零阶)概率模型来处理。以这种方式,cabac能够在子符号级别上进行选择性自适应概率建模,因此,提供了一种用于在显著降低整体建模或学习成本的情况下利用符号间冗余的高效工具。注意,对于固定和自适应情况两者,原则上,从一个概率模型到另一个概率模型的切换可以发生在任何两个连续常规编解码的二进制位之间。总之,cabac中上下文模型的设计反映了在避免不必要的建模成本开销和在很大程度上利用统计依赖性的冲突目标之间找到良好折衷的目的。
[0136]
cabac中概率模型的参数是自适应的,这意味着模型概率对二进制位源的统计变化的自适应是在编码器和解码器中以后向自适应和同步方式在逐个二进制位的基础上执行的;这个过程称为概率估计。为此,cabac中的每个概率模型都可以取126个不同状态中的一个状态,其中相关联的模型概率值p的范围在区间[0:01875;0:98125]内。每个概率模型的这两个参数作为7位条目被存储在上下文存储器中:6位用于63个概率状态中的每一个,表示最小概率符号(lps)的模型概率plps;1位表示nmps,即最大概率符号(mps)的值。
[0137]
在一个或多个示例中,所描述的功能可以在硬件、软件、固件或其任何组合中实施。如果在软件中实施,则功能可以作为一个或多个指令或代码被存储在计算机可读介质上或通过计算机可读介质进行传输并且由基于硬件的处理单元执行。计算机可读介质可以包括对应于如数据存储介质等有形介质的计算机可读存储介质或包括有助于例如根据通信协议将计算机程序从一个地方转移到另一个地方的任何介质的通信介质。以这种方式,计算机可读介质通常可以对应于(1)非暂态的有形计算机可读存储介质或者(2)如信号或载波等通信介质。数据存储介质可以是可以被一个或多个计算机或者一个或多个处理器访问以取得用于实施本技术中描述的实施方式的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
[0138]
在对本文中实施方式的描述中使用的术语仅出于描述特定实施方式的目的,并且不旨在限制权利要求的范围。如对实施方式的描述和所附权利要求中使用的,单数形式“一个(a)”、“一种(an)”和“所述(the)”旨在也包括复数形式,除非上下文另有明确指示。还将理解的是,本文所使用的术语“和/或”是指并涵盖相关联列举项目中的一个或多个项目的任何和所有可能组合。将进一步理解的是,当在本说明书中使用术语“包括(comprises)”和/或“包括(comprising)”时,其指定陈述的特征、元件和/或部件的存在,但不排除一个或多个其他特征、元件、部件和/或其组的存在或添加。
[0139]
还应理解,尽管术语第一、第二等在本文中可以用来描述各种要素,但是这些要素不应该受这些术语的限制。这些术语仅仅是用来将一个要素与另一个要素进行区分。例如,在不偏离实施方式的范围的情况下,第一电极可以被称为第二电极,并且类似地,第二电极可以被称为第一电极。第一电极和第二电极都是电极,但是第一电极和第二电极不是同一电极。
[0140]
已经出于说明和描述的目的呈现了对本技术的描述,并且描述不旨在是穷举的或以所公开的形式限于本发明。受益于前述描述和相关联附图中呈现的教导,许多修改、变型和替代性实施方式对于本领域普通技术人员将是显而易见的。选择并描述实施例以便最好地解释本发明的原理、实际应用,并且使本领域其他技术人员能够理解本发明的各种实施方式并且最好地利用基本原理以及具有适合于预期的特定用途的各种修改的各种实施方
式。因此,应当理解,权利要求的范围不应受限于所公开的实施方式的具体示例,并且修改和其他实施方式旨在被包括在所附权利要求的范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献