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

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

2022-11-16 17:16:28 来源:中国专利 TAG:

使用调色板模式的视频编解码的方法和装置
1.相关申请
2.本技术要求于2020年03月27日提交的题为“video coding using palette mode(使用调色板模式的视频编解码)”的第63/001,235号美国临时专利申请的优先权,其全部内容通过引用并入本文。
技术领域
3.本技术总体涉及视频数据编解码和压缩,并且更具体地,涉及关于使用调色板模式的视频编解码的方法和系统。


背景技术:

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


技术实现要素:

8.本技术描述了与视频数据编码和解码相关的实施方式,并且更具体地,描述了与使用调色板模式的视频编码和解码的系统和方法相关的实施方式。
9.根据本技术的第一方面,一种对视频数据进行解码的方法包括:从比特流接收与编码单元相关联的多个语法元素,其中所述多个语法元素指示所述编码单元的编码树类型以及针对所述编码单元是否启用局部双树模式;并且根据所确定的所述编码单元的编码树类型是单树并且针对所述编码单元启用局部双树模式:当所述编码单元具有等于或小于预定义阈值的尺寸时,针对所述编码单元禁用调色板模式。
10.在一些实施例中,针对所述编码单元禁用调色板模式,包括:针对所述编码单元的亮度分量和色度分量两者,禁用调色板模式。
11.在一些实施例中,针对所述编码单元禁用调色板模式,包括:仅针对所述编码单元的色度分量,禁用调色板模式。
12.根据本技术的第二方面,一种电子装置包括一个或更多个处理单元、存储器和存储在存储器中的多个程序。程序在被一个或更多个处理单元执行时使电子装置执行如上文所描述的对视频数据进行解码的方法。
13.根据本技术的第三方面,一种非易失性计算机可读存储介质存储用于由具有一个或更多个处理单元的电子装置执行的多个程序。程序在被一个或更多个处理单元执行时使电子装置执行如上文所描述的对视频数据进行解码的方法。
附图说明
14.被包括以提供对实施方式的进一步理解并且被并入本文并构成说明书的一部分的附图示出了所描述的实施方式,并且与本说明书一起用于解释基本原理。相似的附图标记指代相应的部分。
15.图1是示出根据本公开的一些实施方式的示例性视频编码和解码系统的框图。
16.图2是示出根据本公开的一些实施方式的示例性视频编码器的框图。
17.图3是示出根据本公开的一些实施方式的示例性视频解码器的框图。
18.图4a至图4e是示出根据本公开的一些实施方式的如何将帧递归地分割为不同尺寸和形状的多个视频块的框图。
19.图5a至图5d是示出根据本公开的一些实施方式的使用调色板表对视频数据进行编解码的示例的框图。
20.图6是示出根据本公开的一些实施方式的视频解码器实施对视频数据进行解码的技术的示例性过程的流程图。
21.图7是示出根据本公开的一些实施方式的示例上下文自适应二进制算术编解码
(cabac)引擎的框图。
具体实施方式
22.现在将详细参照具体实施方式,在附图中示出具体实施方式的示例。在以下详细描述中,阐述了很多非限制性具体细节以便帮助理解本文呈现的主题。但是对于本领域普通技术人员将显而易见的是,在不脱离权利要求的范围的情况下,可使用各种替代方案,并且可在没有这些具体细节的情况下实践主题。例如,对于本领域普通技术人员将显而易见的是,本文呈现的主题可在具有数字视频能力的许多类型的电子设备上实现。
23.图1是示出根据本公开的一些实施方式的用于并行地对视频块进行编码和解码的示例性系统10的框图。如图1中所示,系统10包括源设备12,源设备12生成并编码稍后将由目标设备14进行解码的视频数据。源设备12和目标设备14可包括各种各样的电子设备中的任何电子设备,包括台式计算机或膝上型计算机、平板计算机、智能电话、机顶盒、数字电视、相机、显示器设备、数字媒体播放器、视频游戏机、视频流传输设备等。在一些实施方式中,源设备12和目标设备14配备有无线通信能力。
24.在一些实施方式中,目标设备14可经由链路16接收待解码的编码视频数据。链路16可包括能够将编码视频数据从源设备12移动到目标设备14的任何类型的通信介质或设备。在一个示例中,链路16可包括使源设备12能够实时地将编码视频数据直接发送到目标设备14的通信介质。编码视频数据可根据通信标准(诸如无线通信协议)被调制,并且被发送到目标设备14。通信介质可包括任何无线或有线通信介质,诸如射频(rf)频谱或一个或更多个物理传输线。通信介质可形成基于分组的网络(例如,局域网、广域网或诸如互联网的全球网)的一部分。通信介质可包括路由器、交换机、基站或可有利于促进从源设备12到目标设备14的通信的任何其它装置。
25.在一些其它实施方式中,编码视频数据可从输出接口22被发送到存储设备32。随后,存储设备32中的编码视频数据可由目标设备14经由输入接口28被访问。存储设备32可包括各种分布式或本地访问的数据存储介质中的任何数据存储介质,诸如硬盘驱动器、蓝光光盘、dvd、cd-rom、闪存存储器、易失性或非易失性存储器、或者用于存储编码视频数据的任何其它合适的数字存储介质。在另一示例中,存储设备32可对应于文件服务器或可保持由源设备12生成的编码视频数据的另一中间存储设备。目标设备14可从存储设备32经由流传输或下载来访问存储的视频数据。文件服务器可以是能够存储编码视频数据并且将编码视频数据发送到目标设备14的任何类型的计算机。示例性文件服务器包括web服务器(例如,用于网站)、ftp服务器、网络附属存储(nas)设备或本地磁盘驱动器。目标设备14可通过适合于访问存储在文件服务器上的编码视频数据的任何标准数据连接来访问编码视频数据,标准数据连接包括无线信道(例如,wi-fi连接)、有线连接(例如,dsl、电缆调制解调器等)或无线信道和有线连接两者的组合。编码视频数据从存储设备32的传输可以是流传输、下载传输或流传输和下载传输两者的组合。
26.如图1中所示,源设备12包括视频源18、视频编码器20和输出接口22。视频源18可包括诸如以下项的源或此类源的组合:视频捕获设备(例如,摄像机)、包含先前捕获的视频的视频存档、用于从视频内容提供者接收视频的视频馈入接口、和/或用于生成作为源视频的计算机图形数据的计算机图形系统。作为一个示例,如果视频源18是安全监控系统的摄
像机,则源设备12和目标设备14可形成相机电话或视频电话。然而,本技术中所描述的实施方式通常可适用于视频编解码,并且可应用于无线和/或有线应用。
27.可由视频编码器20对捕获、预先捕获或计算机生成的视频进行编码。可经由源设备12的输出接口22直接将编码视频数据发送到目标设备14。还可(或可选地)将编码视频数据存储到存储设备32上以供稍后被目标设备14或其它设备访问,以用于解码和/或回放。输出接口22可进一步包括调制解调器和/或发送器。
28.目标设备14包括输入接口28、视频解码器30和显示器设备34。输入接口28可包括接收器和/或调制解调器,并且通过链路16接收编码视频数据。通过链路16通信传送或在存储设备32上提供的编码视频数据可包括由视频编码器20生成的各种语法元素以供视频解码器30在对视频数据进行解码时使用。此类语法元素可被包括在通信介质上发送、存储在存储介质上或存储在文件服务器上的编码视频数据内。
29.在一些实施方式中,目标设备14可包括显示器设备34,显示器设备34可以是集成显示器设备和被配置为与目标设备14通信的外部显示器设备。显示器设备34将解码视频数据显示给用户,并且可包括各种显示器设备中的任何显示器设备,诸如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一类型的显示器设备。
30.视频编码器20和视频解码器30可根据专有标准或行业标准(例如,vvc、hevc、mpeg-4、part 10、高级视频编解码(avc))或此类标准的扩展进行操作。应当理解,本技术不限于特定的视频编码/解码标准,并且可适用于其它视频编码/解码标准。通常认为源设备12的视频编码器20可被配置为根据这些当前标准或未来标准中的任何标准对视频数据进行编码。类似地,还通常认为目标设备14的视频解码器30可被配置为根据这些当前标准或未来标准中的任何标准对视频数据进行解码。
31.视频编码器20和视频解码器30可分别被实现为各种合适的编码器电路中的任何电路,诸如一个或更多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或其任何组合。当部分地以软件实现时,电子设备可将用于软件的指令存储于合适的非易失性计算机可读介质中,并且使用一个或更多个处理器执行硬件中的指令以执行本公开中所公开的视频编码/解码操作。视频编码器20和视频解码器30中的每一个可被包括在一个或更多个编码器或解码器中,编码器或解码器中的任一者可被集成为相应设备中的组合式编码器/解码器(codec)的一部分。
32.图2是示出根据本技术中描述的一些实施方式的示例性视频编码器20的框图。视频编码器20可执行对视频帧内的视频块的帧内预测编解码和帧间预测编解码。帧内预测编码依赖于空间预测以减少或移除给定视频帧或图片内的视频数据中的空间冗余。帧间预测编解码依赖于时间预测以减少或移除视频序列的相邻视频帧或图片内的视频数据中的时间冗余。
33.如图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可采取固定或可编程硬件单元的形式,或者可分散在所说明的固定或可编程硬件单元中的一个或更多个中。
34.视频数据存储器40可存储将由视频编码器20的组件编码的视频数据。视频数据存储器40中的视频数据可例如从视频源18获得。dpb 64是存储供视频编码器20(例如,以帧内或帧间预测编解码模式)在对视频数据进行编码时使用的参考视频数据的缓冲器。视频数据存储器40和dpb 64可由各种存储器设备中的任何存储器设备形成。在各种示例中,视频数据存储器40可与视频编码器20的其它组件一起在芯片上,或相对于那些组件在芯片外。
35.如图2中所示,在接收到视频数据之后,预测处理单元41内的分割单元45将视频数据分割为视频块。此分割还可包括根据与视频数据相关联的预定义的拆分结构(诸如四叉树结构)将视频帧分割为条带、分区(tile)或其它更大编码单元(cu)。视频帧可被划分为多个视频块(或被称为分区的视频块集合)。预测处理单元41可基于误差结果(例如,编解码速率和失真等级)为当前视频块选择多个可行预测编解码模式中的一个,诸如多个帧内预测编解码模式中的一个或多个帧间预测编码模式中的一个。预测处理单元41可将所得的帧内预测编码块或帧间预测编码块提供给加法器50以生成残差块,并且提供给加法器62以重建编码块以用于随后作为参考帧的一部分使用。预测处理单元41还将语法元素(诸如运动矢量、帧内模式指示符、分割信息和其它此类语法信息)提供给熵编码单元56。
36.为了选择用于当前视频块的合适的帧内预测编解码模式,预测处理单元41内的帧内预测处理单元46可以与和待编码的当前块在同一帧中的一个或更多个相邻块相关地执行当前视频块的帧内预测编解码以提供空间预测。预测处理单元41内的运动估计单元42和运动补偿单元44与一个或更多个参考帧中的一个或更多个预测块相关地执行当前视频块的帧间预测编解码以提供时间预测。视频编码器20可执行多个编码遍次,例如,来为视频数据的每个块选择合适的编解码模式。
37.在一些实施方式中,运动估计单元42通过根据视频帧序列内的预定模式生成运动矢量来确定用于当前视频帧的帧间预测模式,运动矢量指示当前视频帧内的视频块的预测单元(pu)相对于参考视频帧内的预测块的位移。由运动估计单元42执行的运动估计是生成估计针对视频块的运动的运动矢量的过程。例如,运动矢量可指示当前视频帧或图片内的视频块的pu相对于与当前帧内正被编解码的当前块(或其它编码单元)相关的参考帧内的预测块(或其它编码单元)的位移。预定模式可将序列中的视频帧指定为p帧或b帧。帧内bc单元48可以以与由运动估计单元42确定用于帧间预测的运动矢量类似的方式确定用于帧内bc编解码的矢量(例如,块矢量),或可利用运动估计单元42确定块矢量。
38.在像素差方面,预测块是被认为与待编码视频块的pu紧密匹配的参考帧的块,像素差可由绝对差总和(sad)、平方差总和(ssd)或其它差度量确定。在一些实施方式中,视频编码器20可计算用于dpb 64中存储的参考帧的子整数像素位置的值。例如,视频编码器20可对参考帧的四分之一像素位置、八分之一像素位置或其它分数像素位置的值进行内插。因此,运动估计单元42可相对于全像素位置和分数像素位置执行运动搜索并且输出具有分数像素精度的运动矢量。
39.运动估计单元42通过以下方式来计算针对帧间预测编解码帧中的视频块的pu的运动矢量:将pu的位置与从第一参考帧列表(列表0)或第二参考帧列表(列表1)选择的参考帧的预测块的位置进行比较,第一参考帧列表和第二参考帧列表中的每一个标识存储在
dpb 64中的一个或更多个参考帧。运动估计单元42将计算的运动矢量发送到运动补偿单元44,然后发送到熵编码单元56。
40.由运动补偿单元44执行的运动补偿可涉及基于由运动估计单元42确定的运动矢量提取或生成预测块。在接收到针对当前视频块的pu的运动矢量后,运动补偿单元44可在参考帧列表中的一个参考帧列表中定位运动矢量所指向的预测块,从dpb 64取回预测块,并且将预测块转发到加法器50。然后,加法器50通过从正被编解码的当前视频块的像素值减去由运动补偿单元44提供的预测块的像素值来形成像素差值的残差视频块。形成残差视频块的像素差值可包括亮度差分量或色度差分量或两者。运动补偿单元44还可生成与视频帧的视频块相关联的语法元素以供视频解码器30在对视频帧的视频块进行解码时使用。语法元素可包括例如定义用于识别预测块的运动矢量的语法元素、指示预测模式的任何标记、或本文描述的任何其它语法信息。应注意,运动估计单元42和运动补偿单元44可高度集成,但出于概念目的而单独说明。
41.在一些实施方式中,帧内bc单元48可以以与上文结合运动估计单元42和运动补偿单元44所描述的方式类似的方式生成矢量并提取预测块,但是这些预测块在与正被编码的当前块的同一帧中,并且这些矢量被称为块矢量而非运动矢量。具体地,帧内bc单元48可确定将用于对当前块进行编码的帧内预测模式。在一些示例中,帧内bc单元48可例如在单独的编码遍次期间使用各种帧内预测模式来对当前块进行编码,并且通过率失真分析来测试它们的性能。接下来,帧内bc单元48可在各种测试的帧内预测模式中选择合适的帧内预测模式以使用并相应地生成帧内模式指示符。例如,帧内bc单元48可使用率失真分析针对各种测试的帧内预测模式计算率失真值,并且在测试的模式中选择具有最佳率失真特性的帧内预测模式作为合适的帧内预测模式来使用。率失真分析大体上确定编码块与被编码以生成编码块的原始未编码块之间的失真(或误差)量、以及用于生成编码块的比特率(即,比特数量)。帧内bc单元48可从针对各种编码块的失真和速率计算比率,以确定哪个帧内预测模式展现针对块的最佳率失真值。
42.在其它示例中,帧内bc单元48可全部或部分地使用运动估计单元42和运动补偿单元44来执行根据本文描述的实施方式的用于帧内bc预测的此类功能。在任一情况下,对于帧内块复制,在像素差方面,预测块可以是被认为与待编解码的块紧密匹配的块,像素差可由绝对差总和(sad)、平方差总和(ssd)或其它差度量确定,并且预测块的识别可包括计算针对子整数像素位置的值。
43.无论预测块是来自根据帧内预测的同一帧还是来自根据帧间预测的不同帧,视频编码器20可通过从正被编解码的当前视频块的像素值减去预测块的像素值来形成像素差值,从而形成残差视频块。形成残差视频块的像素差值可包括亮度分量差和色度分量差两者。
44.作为如上文所描述的由运动估计单元42和运动补偿单元44执行的帧间预测或由帧内bc单元48执行的帧内块复制预测的替代方案,帧内预测处理单元46可对当前视频块进行帧内预测。具体地,帧内预测处理单元46可确定帧内预测模式以用于对当前块进行编码。为此,帧内预测处理单元46可例如在单独的编码遍次期间使用各种帧内预测模式来对当前块进行编码,并且帧内预测处理单元46(或在一些示例中,模式选择单元)可从测试的帧内预测模式中选择合适的帧内预测模式来使用。帧内预测处理单元46可将指示针对块选择的
帧内预测模式的信息提供给熵编码单元56。熵编码单元56可将指示选择的帧内预测模式的信息编码到比特流中。
45.在预测处理单元41经由帧间预测或帧内预测确定针对当前视频块的预测块之后,加法器50通过从当前视频块减去预测块来形成残差视频块。残差块中的残差视频数据可被包括在一个或更多个变换单元(tu)中并且提供给变换处理单元52。变换处理单元52使用变换(诸如离散余弦变换(dct)或概念上类似的变换)将残差视频数据变换为残差变换系数。
46.变换处理单元52可将所得变换系数发送到量化单元54。量化单元54对变换系数进行量化以进一步减小比特率。量化过程还可减小与系数中的一些或全部相关联的比特深度。可通过调整量化参数来修改量化程度。在一些示例中,量化单元54可随后执行对包括量化的变换系数的矩阵的扫描。可选地,熵编码单元56可执行扫描。
47.在量化之后,熵编码单元56使用例如上下文自适应可变长度编解码(cavlc)、上下文自适应二进制算术编解码(cabac)、基于语法的上下文自适应二进制算术编解码(sbac)、概率区间分割熵(pipe)编解码或另一熵编解码方法或技术,将量化的变换系数熵编码成视频比特流。然后,编码的比特流可被发送到视频解码器30,或存档于存储设备32中以供稍后发送到视频解码器30或由视频解码器30取回。熵编码单元56还可对用于正被编码的当前视频帧的运动矢量和其它语法元素进行熵编码。
48.反量化单元58和逆变换处理单元60分别应用反量化和逆变换以在像素域中重建残差视频块以用于生成用于预测其它视频块的参考块。如上文指出的,运动补偿单元44可从存储在dpb 64中的帧的一个或更多个参考块生成运动补偿预测块。运动补偿单元44还可将一个或更多个内插滤波器应用于预测块以计算子整数像素值以用于在运动估计时使用。
49.加法器62将重建的残差块加到由运动补偿单元44生成的运动补偿预测块来生成参考块以存储在dpb 64中。然后,参考块可由帧内bc单元48、运动估计单元42和运动补偿单元44用作预测块以对后续视频帧中的另一视频块进行帧间预测。
50.图3是示出根据本技术的一些实施方式的示例性视频解码器30的框图。视频解码器30包括视频数据存储器79、熵解码单元80、预测处理单元81、反量化单元86、逆变换处理单元88、加法器90和dpb 92。预测处理单元81进一步包括运动补偿单元82、帧内预测处理单元84和帧内bc单元85。视频解码器30可执行与上文结合图2关于视频编码器20所描述的编码过程基本互逆的解码过程。例如,运动补偿单元82可基于从熵解码单元80接收的运动矢量生成预测数据,而帧内预测单元84可基于从熵解码单元80接收的帧内预测模式指示符生成预测数据。
51.在一些示例中,视频解码器30的单元可被分派任务以执行本技术的实施方式。此外,在一些示例中,本公开的实施方式可分散在视频解码器30的多个单元中的一个或更多个单元中。例如,帧内bc单元85可单独地或与视频解码器30的其它单元(诸如,运动补偿单元82、帧内预测处理单元84和熵解码单元80)组合地执行本技术的实施方式。在一些示例中,视频解码器30可不包括帧内bc单元85,并且帧内bc单元85的功能可由预测处理单元81的其它组件(诸如运动补偿单元82)执行。
52.视频数据存储器79可存储将由视频解码器30的其它组件进行解码的视频数据,诸如编码视频比特流。存储在视频数据存储器79中的视频数据可例如从存储设备32、从本地视频源(诸如相机)、经由视频数据的有线或无线网络通信,或通过访问物理数据存储介质
(例如,闪存驱动器或硬盘)获得。视频数据存储器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的其它组件一起在芯片上,或相对于那些组件在芯片外。
53.在解码过程期间,视频解码器30接收表示编码视频帧的视频块和相关联的语法元素的编码视频比特流。视频解码器30可在视频帧级和/或视频块级接收语法元素。视频解码器30的熵解码单元80对比特流进行熵解码以生成量化系数、运动矢量或帧内预测模式指示符、以及其它语法元素。然后,熵解码单元80将运动矢量和其它语法元素转发到预测处理单元81。
54.当视频帧被编码为帧内预测编码(i)帧或用于其它类型的帧中的帧内编码预测块时,预测处理单元81的帧内预测处理单元84可基于用信号发送的帧内预测模式和来自当前帧的先前解码块的参考数据来生成用于当前视频帧的视频块的预测数据。
55.当视频帧被编码为帧间预测编码(即,b或p)帧时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收的运动矢量和其它语法元素生成针对当前视频帧的视频块的一个或更多个预测块。预测块中的每一个可从参考帧列表中的一个参考帧列表内的参考帧生成。视频解码器30可基于存储在dpb 92中的参考帧使用默认构建技术来构建参考帧列表,列表0和列表1。
56.在一些示例中,当根据本文描述的帧内bc模式对视频块进行编解码时,预测处理单元81的帧内bc单元85基于从熵解码单元80接收的块矢量和其它语法元素生成针对当前视频块的预测块。预测块可在由视频编码器20定义的与当前视频块的同一图片的重建区域内。
57.运动补偿单元82和/或帧内bc单元85通过解析运动矢量和其它语法元素来确定针对当前视频帧的视频块的预测信息,然后使用该预测信息生成针对正被解码的当前视频块的预测块。例如,运动补偿单元82使用接收到的语法元素中的一些语法元素来确定用于对视频帧的视频块进行编解码的预测模式(例如,帧内预测或帧间预测)、帧间预测帧类型(例如,b或p)、用于针对帧的参考帧列表中的一个或更多个的构建信息、用于帧的每个帧间预测编码视频块的运动矢量、用于帧的每个帧间预测编解码视频块的帧间预测状态、以及用于对当前视频帧中的视频块进行解码的其它信息。
58.类似地,帧内bc单元85可使用接收到的语法元素中的一些语法元素,例如标记,以确定当前视频块是使用帧内bc模式预测的、帧的哪些视频块在重建区域内且应被存储在dpb 92中的构建信息、用于帧的每个帧内bc预测视频块的块矢量、用于帧的每个帧内bc预测视频块的帧内bc预测状态、以及用于对当前视频帧中的视频块进行解码的其它信息。
59.运动补偿单元82还可使用如由视频编码器20在视频块的编码期间使用的内插滤波器执行内插,以计算针对参考块的子整数像素的内插值。在这种情况下,运动补偿单元82
可从接收到的语法元素确定由视频编码器20使用的内插滤波器,并且使用这些内插滤波器来生成预测块。
60.反量化单元86使用由视频编码器20针对视频帧中的每个视频块计算的用于确定量化程度的相同的量化参数,对在比特流中提供且由熵解码单元80熵解码的量化的变换系数进行反量化。逆变换处理单元88将逆变换(例如,逆dct、逆整数变换或概念上类似的逆变换过程)应用于变换系数,以便在像素域中重建残差块。
61.在运动补偿单元82或帧内bc单元85基于矢量和其它语法元素生成针对当前视频块的预测块之后,加法器90通过将来自逆变换处理单元88的残差块与由运动补偿单元82和帧内bc单元85生成的对应预测块相加,来重建针对当前视频块的解码视频块。环内滤波器(未示出)可位于加法器90与dpb 92之间以进一步处理解码视频块。然后,将给定帧中的解码视频块存储在dpb 92中,dpb 92存储用于接下来的视频块的后续运动补偿的参考帧。dpb 92或与dpb 92分离的存储器设备还可存储解码视频以用于稍后呈现在显示器设备(例如,图1的显示器设备34)上。
62.在典型的视频编解码过程中,视频序列通常包括帧或图片的有序集合。每一帧可包括三个样点阵列,表示为sl、scb和scr。sl是亮度样点的二维阵列。scb是cb色度样点的二维阵列。scr是cr色度样点的二维阵列。在其它情况下,帧可以是单色的,因此仅包括亮度样点的一个二维阵列。
63.如图4a中所示,视频编码器20(或更具体地,分割单元45)通过首先将帧分割为编码树单元(ctu)的集合来生成帧的编码表示。视频帧可包括以光栅扫描顺序从左到右和从上到下连续排序的整数个ctu。每个ctu是最大的逻辑编码单元,并且由视频编码器20以序列参数集用信号发送ctu的宽度和高度,使得视频序列中的所有ctu具有128
×
128、64
×
64、32
×
32和16
×
16之一的相同尺寸。但是应当注意,本技术不一定限于特定尺寸。如图4b中所示,每个ctu可包括亮度样点的一个编码树块(ctb)、色度样点的两个对应编码树块、以及用于对编码树块的样点进行编解码的语法元素。语法元素描述编码像素块的不同类型的单元的性质以及可如何在视频解码器30处重建视频序列,包括帧间预测或帧内预测、帧内预测模式、运动矢量和其它参数。在单色图片或具有三个单独颜色平面的图片中,ctu可包括单个编码树块和用于对该编码树块的样点进行编解码的语法元素。编码树块可以是n
×
n样点块。
64.为实现更好的性能,视频编码器20可对ctu的编码树块递归地执行树分割,例如二叉树分割、三叉树分割、四叉树分割或两者的组合,并且将ctu划分为较小的编码单元(cu)。如图4c中所描绘的,首先将64
×
64ctu 400划分为四个较小的cu,每个cu具有32
×
32的块尺寸。在四个较小的cu中,将cu 410和cu 420分别划分为块尺寸为16
×
16的四个cu。将两个16
×
16的cu 430和cu 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所示,存在五种分割类型,即四元分割、水平二元分割、垂直二元分割、水平三元分割和垂直三元分割。
65.在一些实施方式中,视频编码器20可进一步将cu的编码块分割为一个或更多个m
×
n预测块(pb)。预测块是被应用相同预测(帧间或帧内)的矩形(正方形或非正方形)样点块。cu的预测单元(pu)可包括亮度样点的预测块、色度样点的两个对应预测块和用于对预测块进行预测的语法元素。在单色图片或具有三个单独颜色平面的图片中,pu可包括单个预测块和用于对预测块进行预测的语法结构。视频编码器20可生成针对cu的每个pu的亮度预测块、cb预测块和cr预测块的预测亮度块、预测cb块和预测cr块。
66.视频编码器20可使用帧内预测或帧间预测来生成针对pu的预测块。如果视频编码器20使用帧内预测来生成pu的预测块,则视频编码器20可基于与pu相关联的帧的解码样点来生成pu的预测块。如果视频编码器20使用帧间预测来生成pu的预测块,则视频编码器20可基于除与pu相关联的帧之外的一个或更多个帧的解码样点来生成pu的预测块。
67.在视频编码器20生成针对cu的一个或更多个pu的预测亮度块、预测cb块和预测cr块之后,视频编码器20可通过从cu的原始亮度编码块减去cu的预测亮度块来生成针对cu的亮度残差块,使得cu的亮度残差块中的每个样点指示cu的预测亮度块之一中的亮度样点与cu的原始亮度编码块中的对应样点之间的差。类似地,视频编码器20可分别生成针对cu的cb残差块和cr残差块,使得cu的cb残差块中的每个样点指示cu的预测cb块之一中的cb样点与cu的原始cb编码块中的对应样点之间的差,并且cu的cr残差块中的每个样点可指示cu的预测cr块之一中的cr样点与cu的原始cr编码块中的对应样点之间的差。
68.此外,如图4c中所示,视频编码器20可使用四叉树分割将cu的亮度残差块、cb残差块和cr残差块分解成一个或更多个亮度变换块、cb变换块和cr变换块。变换块是被应用相同变换的矩形(正方形或非正方形)样点块。cu的变换单元(tu)可包括亮度样点的变换块、色度样点的两个对应变换块和用于对变换块样点进行变换的语法元素。因此,cu的每个tu可与亮度变换块、cb变换块和cr变换块相关联。在一些示例中,与tu相关联的亮度变换块可以是cu的亮度残差块的子块。cb变换块可以是cu的cb残差块的子块。cr变换块可以是cu的cr残差块的子块。在单色图片或具有三个单独颜色平面的图片中,tu可包括单个变换块和用于对该变换块的样点进行变换的语法结构。
69.视频编码器20可将一个或更多个变换应用于tu的亮度变换块以生成针对tu的亮度系数块。系数块可以是变换系数的二维阵列。变换系数可以是标量。视频编码器20可将一个或更多个变换应用于tu的cb变换块以生成针对tu的cb系数块。视频编码器20可将一个或更多个变换应用于tu的cr变换块以生成针对tu的cr系数块。
70.在生成系数块(例如,亮度系数块、cb系数块或cr系数块)之后,视频编码器20可对系数块进行量化。量化通常是指变换系数被量化以可能减少用于表示变换系数的数据量从而提供进一步压缩的过程。在视频编码器20对系数块进行量化之后,视频编码器20可对指示量化的变换系数的语法元素进行熵编码。例如,视频编码器20可对指示量化的变换系数的语法元素执行上下文自适应二进制算术编解码(cabac)。最后,视频编码器20可输出包括比特序列的比特流,比特序列形成编码帧和相关联数据的表示,比特流被保存于存储设备32中或被发送到目标设备14。
71.在接收到由视频编码器20生成的比特流之后,视频解码器30可解析比特流以从比特流获得语法元素。视频解码器30可至少部分地基于从比特流获得的语法元素来对视频数据的帧进行重建。对视频数据进行重建的过程通常与由视频编码器20执行的编码过程互逆。例如,视频解码器30可对与当前cu的tu相关联的系数块执行逆变换以重建与当前cu的tu相关联的残差块。视频解码器30还通过将针对当前cu的pu的预测块的样点加到当前cu的tu的变换块的对应样点,来重建当前cu的编码块。在重建针对帧的每个cu的编码块之后,视频解码器30可重建帧。
72.如上所述,视频编解码主要使用两种模式(即,帧内部预测(或帧内预测)和帧之间预测(或帧间预测))来实现视频压缩。基于调色板的编解码是已被许多视频编解码标准采用的另一编解码方案。在基于调色板的编解码(可能特别适合于屏幕生成的内容编解码)中,视频编解码器(例如,视频编码器20或视频解码器30)形成表示给定块的视频数据的颜色的调色板表。调色板表包括给定块中的最主要(例如,频繁使用的)像素值。在给定块的视频数据中不被频繁表示的像素值不包括在调色板表中或者作为逃逸颜色包括在调色板表中。
73.调色板表中的每个条目包括针对调色板表中的对应像素值的索引。针对块中的样点的调色板索引可被编码为指示来自调色板表的哪个条目将被用于预测或重建哪个样点。此调色板模式开始于生成针对图片、条带、瓦片或视频块的其它此类分组的第一块的调色板预测因子的过程。如下文将解释,通常通过更新先前使用的调色板预测因子来生成针对后续视频块的调色板预测因子。为了说明的目的,假设调色板预测因子在图片级被定义。换句话说,图片可包括多个编码块,每个编码块具有其自己的调色板表,但存在针对整个图片的一个调色板预测因子。
74.为了减少在视频比特流中用信号发送调色板条目所需的比特,视频解码器可利用调色板预测因子来确定用于重建视频块的调色板表中的新调色板条目。例如,调色板预测因子可包括来自先前使用的调色板表的调色板条目,或者甚至通过包括最近使用的调色板表的所有条目来利用最近使用的调色板表被初始化。在一些实施方式中,调色板预测因子可包括比来自最近使用的调色板表的所有条目更少的条目,然后并入来自其它先前使用的调色板表的一些条目。调色板预测因子可具有与用于编解码不同块的调色板表相同的大小,或者可大于或小于用于编解码不同块的调色板表。在一个示例中,调色板预测因子被实现为包括64个调色板条目的先进先出(fifo)表。
75.为了从调色板预测因子生成针对视频数据的块的调色板表,视频解码器可从编码视频比特流接收针对调色板预测因子的每个条目的一比特标志。一比特标志可具有指示调色板预测因子的关联条目将被包括在调色板表中的第一值(例如,二进制一)或指示调色板预测因子的关联条目将不被包括在调色板表中的第二值(例如,二进制零)。如果调色板预测因子的大小大于用于视频数据的块的调色板表,则一旦达到针对调色板表的最大大小,视频解码器就可停止接收更多标志。
76.在一些实施方式中,调色板表中的一些条目可在编码视频比特流中直接用信号发送,而不使用调色板预测因子确定。对于此类条目,视频解码器可从编码视频比特流接收指示针对与条目相关联的亮度分量和两个色度分量的像素值的三个单独m比特值,其中m表示视频数据的比特深度。与直接用信号发送的调色板条目所需的多个m比特值相比,从调色板
预测因子导出的那些调色板条目仅需要一比特标志。因此,使用调色板预测因子用信号发送一些或所有调色板条目可显著减少用信号发送新调色板表的条目所需的比特的数量,从而提高调色板模式编解码的整体编解码效率。
77.在许多情况下,针对一个块的调色板预测因子基于被用于对一个或多个先前编码的块进行编码的调色板表被确定。但是当对图片、条带或瓦片中的第一编码树单元进行编解码时,先前编解码的块的调色板表可能不可用。因此,不能使用先前使用的调色板表的条目来生成调色板预测因子。在这种情况下,可在序列参数集(sps)和/或图片参数集(pps)中用信号发送调色板预测因子初始化值的序列,调色板预测因子初始化值是用于在先前使用的调色板表不可用时生成调色板预测因子的值。sps通常是指应用于被称为已编码视频序列(cvs)的一系列连续的编码视频图片的语法元素的语法结构,其中该cvs是由每个条带片段头中找到的语法元素所提及的pps中找到的语法元素的内容确定的。pps通常是指应用于cvs内的一个或多个单独图片的语法元素的语法结构,其中该cvs是由在每个条带片段头中找到的语法元素确定的。因此,sps通常被认为是比pps更高等级的语法结构,这意味着与包括在pps中的语法元素相比,包括在sps中的语法元素通常改变频率低并且应用于更大部分的视频数据。
78.图5a至图5b是示出根据本公开的一些实施方式的使用调色板表对视频数据进行编解码的示例的框图。
79.对于调色板(plt)模式信令,调色板模式被编码为用于编码单元的预测模式,即,用于编码单元的预测模式可以是mode_intra、mode_inter、mode_ibc和mode_plt。如果利用调色板模式,则cu中的像素值被一小集合的代表性颜色表示。该集合被称为调色板。对于具有接近调色板颜色的值的像素,用信号发送调色板索引。对于具有调色板之外的值的像素,用逃逸符号表示像素,并且直接用信号发送经量化的像素值。在下面的表1和表2中分别示出了当前vvc草案规范中的调色板模式的语法和相关联的语义。
80.为了对经调色板模式编码的块进行解码,解码器需要从比特流解码出调色板颜色和索引。调色板颜色由调色板表定义并被调色板表编码语法(例如,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)被编码。图5a中示出了经调色板模式编码的cu的示例,其中调色板大小为4。cu中的前3个样点分别使用调色板条目2、0和3进行重建。cu中的“x”样点表示逃逸符号。cu级标志palette_escape_val_present_flag指示cu中是否存在任何逃逸符号。如果存在逃逸符号,则调色板大小增加1并且最后一个索引被用于指示逃逸符号。因此,在图5a中,索引4被分配给逃逸符号。
81.如果调色板索引(例如,图5a中的索引4)对应于逃逸符号,则用信号发送额外开销以指示样点的对应颜色。
82.在一些实施例中,在编码器侧,有必要推导出与cu一起使用的合适调色板。为了推
导出用于有损编码的调色板,改进的k均值聚类算法被使用。将块的第一样点添加到调色板。然后,对于来自该块的每个后续样点,计算样点与每个当前调色板颜色之间的绝对差之和(sad)。如果针对分量中的每个分量的失真小于针对与最小sad对应的调色板条目的阈值,则将样点添加到属于该调色板条目的簇。否则,添加该样点作为新调色板条目。当映射到簇的样点的数量超过阈值时,该簇的质心被更新并成为该簇的调色板条目。
83.在下一步骤中,以使用的降序对簇进行排序。然后,更新与每个条目对应的调色板条目。通常,簇质心被用作调色板条目。但是,当考虑对调色板条目进行编码的成本时,执行率失真分析以分析来自调色板预测因子的任何条目是否可能更适合于用作更新的调色板条目而非质心。继续该过程,直到所有簇都被处理或达到最大调色板大小。最后,如果簇仅具有单个样点且对应调色板条目不在调色板预测因子中,则将该样点转换为逃逸符号。另外,去除重复的调色板条目并且合并它们的簇。
84.在调色板推导之后,块中的每个样点被分配(在sad中)最近的调色板条目的索引。然后,样点被分配给“index”或“copy_above”模式。对于可能是“index”或“copy_above”模式的每个样点,确定关于每个模式的游程。然后,计算对模式进行编码的成本。选择成本较低的模式。
85.为了对调色板表进行编码,保留调色板预测因子。调色板的最大大小和调色板预测因子的最大大小两者可在sps(或其它编码级,例如pps、条带头等)中被用信号发送。在调色板预测因子被重置为0的每个条带的开始处对调色板预测因子进行初始化。对于调色板预测因子中的每个条目,用信号发送重用标志以指示该条目是否为当前调色板的部分。如图5b所示,重用标志palette_predictor_run被发送。在此之后,使用0阶指数哥伦布码通过语法num_signaled_palette_entries用信号发送新调色板条目的数量。最后,用信号发送针对新调色板条目new_palette_entries[]的分量值。在对当前cu进行编码之后,使用当前调色板来更新调色板预测因子,并且将在新调色板预测因子的末尾处添加来自先前调色板预测因子的在当前调色板中未被重用的条目,直到达到所允许的最大大小为止。
[0086]
为了对调色板索引图进行编码,使用水平遍历扫描或垂直遍历扫描对索引进行编码,如图5c所示。使用palette_transpose_flag在比特流中显式地用信号发送扫描顺序。
[0087]
使用两种主要调色板样点模式:“index”和“copy_above”对调色板索引进行编码。在“index”模式中,显式地用信号发送调色板索引。在“copy_above”模式中,复制上方行中的样点的调色板索引。对于“index”和“copy_above”模式两者,用信号发送指定使用相同模式编码的像素的数量的游程值。使用标志用信号发送模式,除了当使用水平扫描时的顶行,或当使用垂直扫描时的首列,或当先前模式是“copy_above”时。
[0088]
在一些实施例中,index_map的编码顺序如下:首先,使用语法num_palette_indices_minus1用信号发送针对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。此语法元素结合索引的数量消除了用信号发送与块中的最后一个游程对应的游程值的需要。
[0089]
在vvc(vtm)中,针对i条带启用双树,其分离针对亮度分量和色度分量的编码单元分割。结果,分别对亮度(y分量)和色度(cb和cr分量)应用调色板。如果双树被禁用,则调色板将被联合地应用于y、cb、cr分量。
[0090]
表1调色板编码的语法
[0091]
[0092]
[0093]
[0094]
[0095]
[0096]
[0097][0098]
表2调色板编码的语义
[0099]
[0100]
[0101]
[0102]
[0103]
[0104][0105]
表3关于语法palette_run_prefix的二进制码字和cabac上下文选择
[0106]
[0107]
[0108][0109]
作为变换系数编码中使用的系数组(cg),一个cu被划分为多个基于线的系数组,每个系数组由m个样点组成,其中对于每个cg,索引游程、调色板索引值和关于逃逸模式的量化颜色被顺序地编码/解析。因此,基于线的cg中的像素可在对语法元素(例如关于cg的索引游程、调色板索引值和逃逸量化颜色)进行解析后被重建,这大大降低了vtm6.0调色板模式下的缓冲区需求,其中针对整个cu的语法元素必须在重建之前被解析(和存储)。
[0110]
在本技术中,调色板模式的每个cu基于遍历扫描模式被划分成m个样点的多个片段(本测试中m=8),如图5d所示。
[0111]
关于每个片段中的调色板游程编码的编码顺序如下:对于每个像素,用信号发送一个经上下文编码的二进制位run_copy_flag=0,表示该像素与先前像素具有相同的模式,即先前扫描的像素和当前像素都是游程类型copy_above或先前扫描的像素和当前像素都是游程类型index并且具有相同的索引值。否则,用信号发送run_copy_flag=1。
[0112]
如果当前像素和先前像素具有不同的模式,则用信号发送一个经上下文编码的二进制位copy_above_palette_indices_flag,指示像素的游程类型,即index或copy_above。在这种情况下,如果样点在第一行(水平遍历扫描)或第一列(垂直遍历扫描),解码器不必解析游程类型,这是因为默认使用index模式。如果先前解析的游程类型是copy_above,解码器也不必解析游程类型。
[0113]
在对一个片段中的像素进行调色板游程编码之后,索引值(对于index模式)和量化的逃逸颜色被编码为旁路二进制位,并与经上下文编码的二进制位的编码/解析分开进行分组,以提高每个基于线的cg内的吞吐量。由于现在在游程编码之后对索引值进行编码/解析,因此编码器不必用信号发送索引值的数量num_palette_indices_minus1和最后游程类型copy_above_indices_for_final_run_flag。cg调色板模式的语法如表4所示。
[0114]
表4调色板编码的语法
[0115]
[0116]
[0117]
[0118]
[0119]
[0120]
[0121][0122]
图6是示出根据本公开的一些实施方式的视频解码器(例如,视频解码器30)实施对视频数据进行解码的技术的示例性过程的流程图600。
[0123]
对于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”类型情况,即,单独考虑色度分量,针对小于或等于16个样点的cu的色度分量应禁用调色板模式以降低复杂度。下面的表5给出了所设计的语法的一个示例。
[0124]
表5不同编码树类型和色度格式下的调色板模式启用标志
[0125][0126]
在表5中,pred_mode_plt_flag指定针对编码单元启用调色板模式(例如,值1)还是禁用调色板模式(例如,值0)。如subwidthc和subheightc的参数与编码单元的色度格式关联如下:
[0127]
色度格式subwidthcsubheightc单色114:4:4114:2:2214:2:022
[0128]
在单色采样中,仅存在一个样点阵列,其名义上被认为是亮度阵列。在4:2:0采样中,两个色度阵列中的每一个具有亮度阵列的一半高度和一半宽度。在4:2:2采样中,两个色度阵列中的每一个具有亮度阵列的相同高度和一半宽度。在4:4:4采样中,两个色度阵列中的每一个具有与亮度阵列相同的高度和相同的宽度。
[0129]
在另一实施例中,对于单树情况,针对具有小尺寸亮度块的cu禁用调色板模式。在一个示例中,在单树情况下针对具有小于或等于16个像素的亮度块的cu禁用调色板模式。在一个特定示例中,可针对含有8
×
4亮度样点和两个4
×
2色度样点的8
×
4cu启用调色板模式,这是因为调色板启用是以亮度样点的尺寸为条件而不考虑色度尺寸。
[0130]
在一些实施例中,在单树情况下,以相同方式分割cu的亮度分量(例如,y)和色度分量(例如,cb和cr)。在双树情况下,亮度分量和色度分量具有不同的分区树。在局部双树情况下,亮度分量和色度分量在单树情况下具有不同的调色板表。在局部双树情况下,针对cu内的亮度分量和色度分量分别应用调色板编解码。
[0131]
在另一实施例中,对于局部双树情况,针对小尺寸块禁用调色板模式。在一个示例中,对于局部双树情况,针对小于或等于32个像素的cu禁用调色板模式。
[0132]
在一些实施例中,调色板模式应用排除局部双树情况。在vvc中,在单树情况下,调色板模式适用于具有等于或小于64
×
64个像素且大于4
×
4个像素的亮度块的cu。在双树情况下,针对亮度分量和色度分量两者,调色板模式适用于等于或小于64
×
64个像素且大于4
×
4个像素的cu。在另一实施例中,为了降低复杂度,针对局部双树情况禁用调色板模式。下面的表6给出了vvc设计中的语法的一个示例。在vvc中,当cu的modetype等于mode_type_intra时,这意味着cu处于局部双树情况。vvc的变化如下所示。
[0133]
表6在局部双树情况下排除调色板模式的示例性语法
[0134][0135]
在另一实施例中,对于局部双树情况,仅针对色度分量禁用调色板模式。换句话说,在局部双树情况下,调色板模式适用于亮度cu,但不适用于色度cu。下面的表7给出了vvc设计中的语法的一个示例。在vvc设计中,当cu的modetype等于mode_type_intra,并且cu的treetype等于dual_tree_chroma时,这意味着cu是色度分量并且处于局部双树情况。vvc的变化在下表7中示出。
[0136]
表7在局部双树情况下仅针对色度分量禁用调色板模式的示例性语法
[0137][0138]
在一些实施例中,对于局部双树情况,针对亮度分量和色度分量两者更新调色板预测。根据当前vvc规范,在局部双树情况下,仅针对色度分量执行调色板预测的更新处理。更确切地说,在局部双树下,当在调色板模式下对每个亮度cu进行编解码时,可不更新调色板预测。在局部双树下,可在对每个调色板模式色度cu的最后色度分量进行编解码之后更新调色板预测。
[0139]
如上所述的在vvc中定义的调色板预测的更新过程对于编解码性能不是高效的。在本文公开的一些实施例中,为了提高编解码效率,在局部双树情况下,针对亮度cu和色度cu两者执行调色板预测的更新过程。更具体地,可首先在对局部双树下的每个亮度cu进行编解码时更新调色板预测,然后在对相同的局部双树下的每个色度cu进行编解码时更新调色板预测。下面的表8给出了vvc设计中的语法的一个示例。在vvc设计中,变量cidx指定当前cu的颜色/视频分量,0用于亮度分量,1用于cb分量,且2用于cr分量。vvc的变化如下所示。
[0140]
表8在局部双树情况下针对亮度分量和色度分量两者执行的调色板预测的更新处理的示例性语法
[0141][0142]
在一些实施例中,在局部双树情况下部分地更新调色板预测。如上所述,在局部双树情况下,针对亮度cu和色度cu两者执行调色板预测的更新过程。更具体地,可首先在对局部双树下的每个亮度cu进行编解码时更新调色板预测,然后对相同的局部双树下的每个色度cu进行编解码。
[0143]
考虑到局部双树下的cu都是小尺寸cu,以顺序方式对这些cu执行调色板预测的更新过程需要大量计算周期。根据一些实施例,为了降低复杂度,在局部双树情况下,一个共享调色板表被用于一些或所有cu而无需表更新。
[0144]
在一个示例中,对于局部双树情况,在调色板模式下禁用调色板预测的更新过程。下面的表9给出了vvc设计中的语法的一个示例,其中表8中从450到456的代码行也被去除。在vvc设计中,变量cidx指定当前cu的颜色分量,0用于亮度分量,1用于cb分量,且2用于cr分量。vvc的变化如下所示。
[0145]
表9在局部双树情况下针对亮度分量和色度分量两者禁用的调色板预测的更新过程的示例性语法
[0146][0147]
在一些实施例中,在局部双树情况下,针对具有小于或等于32个像素的亮度块尺寸的cu禁用调色板模式下的调色板预测的更新过程。在这种情况下,可针对8
×
8cu或包含至少8
×
8个亮度样点的更大cu启用调色板模式下的调色板预测的更新过程。
[0148]
在又一实施例中,对于局部双树情况,仅针对色度cu禁用调色板预测的更新过程。下面的表10给出了vvc设计中的语法的一个示例。在vvc设计中,变量cidx指定当前cu的颜色分量,0用于亮度分量,1用于cb分量,且2用于cr分量。vvc的变化如下所示。
[0149]
表10在局部双树情况下仅针对色度分量禁用调色板预测的更新处理的示例性语法
[0150][0151]
在一些实施例中,在局部双树情况下,针对不同的视频分量独立地更新调色板模式下的调色板预测的更新过程。
[0152]
如上所述,在局部双树的情况下,调色板预测的更新处理被顺序地执行。这也意味着在局部双树下,在调色板模式下对色度cu的解码在相同的局部双树下的所有亮度cu都被解码之后才能开始。这可能导致硬件编解码器实现中的不期望的延迟。
[0153]
为了解决上述问题,根据一些实施例,针对局部双树下的不同视频分量(例如,亮度和色度)独立地执行调色板预测更新处理,使得可与亮度分量并行地进行色度分量的调色板模式编解码。在实施例的一个示例中,在局部双树下,在局部双树的开始处的调色板被用作针对亮度cu和色度cu两者的起始调色板。
[0154]
在一些实施例中,实现了对局部双树情况下的调色板预测的更新过程的改进。在局部双树情况下,针对亮度分量和色度分量分别执行调色板预测的更新过程。更具体地,可首先在对局部双树下的每个亮度cu进行编解码时更新调色板预测,然后在对相同的局部双
树下的每个色度cu进行编解码时更新调色板预测。因此,在对局部双树下的亮度cu进行编解码时更新调色板预测时,同位像素的色度信息可能不可用,且反之亦然。
[0155]
在一些实施例中,为了提高编解码效率,对局部双树下的一个视频分量(例如,亮度和/或色度)的cu进行编解码时更新调色板预测时,可使用调色板中的先前可用候选的另一视频分量(例如,色度和/或亮度)值。在针对局部双树情况的一个示例中,在用于亮度分量的调色板预测的更新过程期间,第一可用候选的色度分量可被用作新添加的调色板条目的色度分量。下面的表11给出了vvc设计中的语法的一个示例。vvc的变化如下所示。
[0156]
表11使用第一可用候选的色度分量的调色板预测的更新过程的示例性语法
[0157][0158]
如图6中所示,在一些实施例中,视频解码器30从比特流接收与编码单元相关联的
多个语法元素,并且多个语法元素指示编码单元的编码树类型以及针对编码单元是否启用局部双树模式(610)。
[0159]
根据所确定的编码单元的编码树类型为单树并且针对编码单元启用局部双树模式(620),当编码单元具有等于或小于预定义阈值的尺寸时,视频解码器30针对编码单元禁用调色板模式(630)。
[0160]
在一些实施例中,针对编码单元禁用调色板模式(630)包括针对编码单元的亮度分量和色度分量两者禁用调色板模式(640)。
[0161]
在一些实施例中,针对编码单元禁用调色板模式(630)包括仅针对编码单元的色度分量禁用调色板模式(650)。
[0162]
在一些实施例中,仅针对编码单元的色度分量禁用调色板模式包括:从多个语法元素中确定进一步指示编码单元的视频分量是色度分量还是亮度分量;并且根据所确定的编码单元的视频分量为色度分量:针对编码单元的色度分量禁用调色板模式。
[0163]
在一些实施例中,仅针对编码单元的色度分量禁用调色板模式包括:从多个语法元素中确定进一步指示编码单元的视频分量是色度分量还是亮度分量;根据所确定的编码单元的视频分量为亮度分量:从比特流接收与编码单元的亮度分量相关联的调色板模式启用标志;并且根据调色板模式启用标志对编码单元进行解码。
[0164]
在一些实施例中,视频解码器30从比特流接收调色板预测启用语法;根据调色板预测启用语法来更新用于编码单元的亮度分量的调色板预测。
[0165]
在一些实施例中,视频解码器30禁用对用于编码单元的亮度分量的调色板预测的更新。
[0166]
在一些实施例中,视频解码器30确定最小调色板模式亮度块尺寸;并且根据所确定的编码单元的亮度分量的尺寸小于或等于最小调色板模式亮度块尺寸:禁用对用于编码单元的亮度分量的调色板预测的更新。
[0167]
在一些实施例中,最小调色板模式亮度块尺寸为32
×
32个亮度样点。
[0168]
在一些实施例中,最小调色板模式亮度块尺寸为8
×
8个亮度样点。
[0169]
在一些实施例中,多个语法元素中包括的指示针对编码单元是否启用局部双树模式的语法元素是mode_type_intra。
[0170]
在一些实施例中,多个语法元素中包括的指示编码单元的视频分量是色度分量还是亮度分量的语法元素是dual_tree_chroma。
[0171]
在一些实施例中,步骤630中的预定义阈值是32
×
32个样点。
[0172]
在一些实施例中,步骤630中的预定义阈值是16
×
16个样点。
[0173]
图7是示出根据本公开的一些实施方式的示例性上下文自适应二进制算术编解码(cabac)引擎的框图。
[0174]
上下文自适应二进制算术编码(cabac)是在许多视频编解码标准(例如,h.264/mpeg-4avc、高效视频编解码(hevc)和vvc中使用的熵编解码形式。cabac基于算术编解码,具有一些创新和改变以使其适应视频编解码标准的需要。例如,cabac对二进制符号进行编解码,这保持低复杂度并且允许对任何符号的更频繁使用的比特进行概率建模。因为编解码模式通常是局部良好相关,所以基于局部上下文自适应地选择概率模型,允许更好地建模概率。最后,cabac通过使用量化的概率范围和概率状态来使用免乘法范围除法。
[0175]
cabac具有针对不同上下文的多个概率模式。它首先将所有非二进制符号转换为二进制。然后,对于每个二进制位(或称为比特),编解码器选择使用哪个概率模型,然后使用来自附近元素的信息来优化概率估计。最后应用算术编解码来压缩数据。
[0176]
上下文建模提供对编解码符号的条件概率的估计。利用合适的上下文模型,可通过根据当前符号附近的已编解码的符号在不同概率模型之间进行切换来利用给定的符号间冗余进行编码。对数据符号进行编解码涉及以下阶段。
[0177]
二值化:cabac使用二进制算术编解码,这表示只有二进制决策(1或0)被编解码。非二进制值符号(例如变换系数或运动矢量)在算术编解码之前被“二值化”或转换为二进制代码。此过程类似于将数据符号转换为可变长度代码的过程,但二进制代码在传输之前(由算术编码器)进一步被编码。针对二值化符号的每个二进制位(或“比特”)重复这些阶段。
[0178]
上下文模型选择:“上下文模型”是针对二值化符号的一个或多个二进制位的概率模型。该模型可根据最近编解码的数据符号的统计从可用模型的选择中被选择。上下文模型存储每个二进制位为“1”或“0”的概率。
[0179]
算术编码:算术编码器根据选择的概率模型对每个二进制位进行编码。注意,对于每个二进制位(对应于“0”和“1”)只有两个子范围。
[0180]
概率更新:基于实际编解码的值更新选择的上下文模型(例如,如果二进制位值是“1”,则增加频率计数“1”)。
[0181]
通过将每个非二进制语法元素值分解为二进制位的序列,cabac中每个二进制位值的进一步处理取决于相关联的编解码模式决策,其可被选择为常规模式或旁路模式。后者是针对二进制位选择的,这些二进制位假设是均匀分布,因此,对于这些二进制位,整个常规二进制算术编码(和解码)过程被简单地绕过。在常规编解码模式中,每个二进制位值通过使用常规二进制算术编解码引擎被编码,其中相关联的概率模型基于语法元素的类型和语法元素的二值化表示中的二进制位位置或二进制位索引(binidx)通过固定选择被确定,或者相关联的概率模型根据相关的边信息(例如,空间邻近者、分量、cu/pu/tu的深度或尺寸,或tu内的位置)从两个或多个概率模型中被自适应地选择。概率模型的选择被称为上下文建模。作为一个重要的设计决策,后一种情况通常仅被应用于最频繁观察到的二进制位,而其他通常不太频繁观察到的二进制位将使用联合的、典型零阶概率模型来处理。通过这种方式,cabac能够在子符号级上进行选择性的自适应概率建模,因此,为利用符号间冗余提供了一种有效的工具,显著降低了整体建模或学习成本。注意,对于固定情况和自适应情况,原则上,从一个概率模型到另一个概率模型的切换可发生在任何两个连续的常规编解码二进制位之间。一般来说,cabac中上下文模型的设计反映了以下目的:在避免不必要的建模成本开销与在很大程度上利用统计相关性的冲突目标之间找到良好折衷。
[0182]
cabac中的概率模型的参数是自适应的,这意味着模型概率对二进制位的源的统计变化的自适应是在逐个二进制位的基础上按照后向自适应和同步的方式在编码器和解码器中执行;这个过程被称为概率估计。为此,cabac中的每个概率模型都可利用相关联的模型概率值p从126个不同状态中取一个状态,相关模型概率值p的范围在[0:01875;0:98125]区间内。每个概率模型的两个参数以7比特条目的形式存储在上下文存储器中:6比特用于代表最小概率符号(lps)的模型概率plps的63个概率状态中的每一个,并且1比特用
于nmps,即最大概率符号(mps)的值。
[0183]
在一个或更多个示例中,所描述的功能可以以硬件、软件、固件或其任何组合实施。如果以软件实施,则功能可作为一个或更多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输,并且由基于硬件的处理单元执行。计算机可读介质可包括计算机可读存储介质,其对应于诸如数据存储介质的有形介质,或对应于包括促进将计算机程序从一处传送到另一处(例如,根据通信协议)的任何介质的通信介质。以此方式,计算机可读介质通常可对应于(1)非易失性的有形计算机可读存储介质、或(2)通信介质,诸如信号或载波。数据存储介质可以是可由一个或更多个计算机或一个或更多个处理器访问以取回用于实现本技术中描述的实现方式的指令、代码和/或数据结构的任何可用介质。计算机程序产品可包括计算机可读介质。
[0184]
在本文的实施方式的描述中使用的术语仅用于描述特定实施方式的目的,并不旨在限制权利要求的范围。如在实施方式的描述和所附权利要求中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。还将理解,如本文使用的术语“和/或”是指并且涵盖相关联的所列项目中的一个或更多个的任何和所有可能的组合。将进一步理解,术语“包括”和/或“包括

的”当在本说明书中使用时,指定存在所陈述的特征、元件和/或组件,但不排除存在或添加一个或更多个其它特征、元件、组件和/或其群组。
[0185]
还将被理解,尽管本文可使用术语第一、第二等来描述各种元件,但是这些元件不应受这些术语的限制。这些术语仅用于将一个元件与另一个元件区分开。例如,在不脱离实施方式的范围的情况下,第一电极可被称为第二电极,并且类似地,第二电极可被称为第一电极。第一电极和第二电极都是电极,但它们不是相同的电极。
[0186]
本技术的描述已经出于说明和描述的目的被呈现,并且不旨在穷举或限于所公开的形式的发明。受益于在前面的描述和相关联的附图中呈现的教导,许多修改、变化和替代实施方式对于本领域普通技术人员将是显而易见的。选择和描述实施例是为了最好地解释本发明的原理、实际应用,并且使本领域的其它技术人员能够理解本发明的各种实施方式,并且最好地利用基本原理和具有适合于预期的特定用途的各种修改的各种实施方式。因此,将理解,权利要求的范围不限于所公开的实施方式的具体示例,并且修改和其它实施方式旨在被包括在所附权利要求的范围内。
再多了解一些

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

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

相关文献