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

视频编解码方法、装置、计算机可读介质及电子设备与流程

2022-08-31 02:21:31 来源:中国专利 TAG:


1.本技术属于计算机技术领域,具体涉及一种视频编解码方法、视频编解码装置、计算机可读介质以及电子设备。


背景技术:

2.在视频编码过程中,编码端通常需要对原始视频数据与预测视频数据之间的残差数据进行变换、量化及熵编码处理之后发送给解码端。如果残差系数能量不够集中,尤其是在变换跳过模式下,残差系数的分布更为系数,将导致扫描区域的范围在编码时占用较多的必特,因而导致编码效率降低的问题,影响了视频的压缩性能。


技术实现要素:

3.本技术的目的在于提供一种视频编解码方法、视频编解码装置、计算机可读介质以及电子设备,至少在一定程度上克服相关技术中存在的视频编解码效率低的技术问题。
4.本技术的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本技术的实践而习得。
5.根据本技术实施例的一个方面,提供一种视频解码方法,该方法包括:获取视频图像帧的编码块的尺寸,所述编码块的尺寸包括所述编码块的宽度和高度;从所述编码块的码流中解码得到与所述编码块的基于扫描区域的系数编码srcc扫描区域相关的范围变量的取值,所述范围变量包括对应于所述宽度的宽度范围变量以及对应于所述高度的高度范围变量;根据所述编码块的尺寸和所述范围变量的差值确定所述srcc扫描区域的边界坐标,所述边界坐标包括对应于所述宽度范围变量的右端横坐标以及对应于所述高度范围变量的下端纵坐标。
6.根据本技术实施例的一个方面,提供一种视频解码装置,该装置包括:尺寸获取模块,被配置为获取视频图像帧的编码块的尺寸,所述编码块的尺寸包括所述编码块的宽度和高度;变量解码模块,被配置为从所述编码块的码流中解码得到与所述编码块的srcc扫描区域相关的范围变量的取值,所述范围变量包括对应于所述宽度的宽度范围变量以及对应于所述高度的高度范围变量;坐标确定模块,被配置为根据所述编码块的尺寸和所述范围变量的差值确定所述srcc扫描区域的边界坐标,所述边界坐标包括对应于所述宽度范围变量的右端横坐标以及对应于所述高度范围变量的下端纵坐标。
7.在本技术的一些实施例中,基于以上技术方案,所述坐标确定模块被配置为:按照如下公式确定所述srcc扫描区域的边界坐标;
8.srx=width-1-width_minus1_minus_scan_region_x;
9.sry=height-1-height_minus1_minus_scan_region_y;
10.其中,srx为所述右端横坐标,sry为所述下端纵坐标,width为所述宽度,height为所述高度,width_minus1_minus_scan_region_x为所述宽度范围变量,height_minus1_minus_scan_region_y为所述高度范围变量。
11.在本技术的一些实施例中,基于以上技术方案,所述变量解码模块包括:二元符号解码单元,被配置为在所述编码块的码流中,按照索引号递增的顺序依次对所述索引号对应的二元符号进行解码得到所述二元符号的取值;位置变量赋值单元,被配置为若当前二元符号的取值为预设的第一数值,则以所述当前二元符号对应的当前索引号为位置变量赋值;范围变量赋值单元,被配置为根据所述位置变量的取值对与所述编码块的srcc扫描区域相关的范围变量进行赋值。
12.在本技术的一些实施例中,基于以上技术方案,所述范围变量赋值单元包括:取值比较子单元,被配置为将所述位置变量的取值与预设的第二数值进行比较;第一赋值子单元,被配置为若所述位置变量的取值小于或等于所述第二数值,则以所述第二数值为所述范围变量赋值;数值确定子单元,被配置为若所述位置变量的取值大于所述第二数值,则根据所述位置变量的取值确定前缀值,并根据所述当前二元符号之后的其他二元符号的解码结果确定后缀值;第二赋值子单元,被配置为以所述前缀值和所述后缀值的和为所述范围变量赋值。
13.在本技术的一些实施例中,基于以上技术方案,所述数值确定子单元还被配置为:根据第一映射向量对所述位置变量的取值进行映射处理,得到与所述位置变量的取值相对应的第一映射值;根据所述第一映射值确定前缀值。
14.在本技术的一些实施例中,基于以上技术方案,所述数值确定子单元还被配置为:根据所述位置变量的取值确定待解码的其他二元符号的目标数量;对所述当前二元符号之后的目标数量个其他二元符号进行解码得到后缀值。
15.在本技术的一些实施例中,基于以上技术方案,所述数值确定子单元还被配置为:按照旁路解码的方式对所述当前二元符号之后的目标数量个其他二元符号进行熵解码;以所述目标数量作为定长码的长度,按照len位定长码的方式对熵解码结果进行反二值化得到后缀值。
16.在本技术的一些实施例中,基于以上技术方案,所述二元符号解码单元包括:增量赋值子单元,被配置为为所述二元符号对应的上下文索引增量赋值;模型确定子单元,被配置为根据赋值得到的上下文索引增量确定与所述二元符号相对应的上下文模型;取值解码子单元,被配置为基于所述上下文模型,通过cabac解码引擎对所述二元符号进行算数解码得到所述二元符号的取值。
17.在本技术的一些实施例中,基于以上技术方案,所述增量赋值子单元被配置为:以所述二元符号对应的索引号为上下文索引增量赋值。
18.在本技术的一些实施例中,基于以上技术方案,所述增量赋值子单元被配置为:根据所述编码块的通道信息为所述上下文索引增量的初始值赋值;根据所述编码块的通道信息以及所述编码块的尺寸确定位移量;根据所述初始值、所述索引号以及所述位移量确定对所述二元符号对应的上下文索引增量进行赋值。
19.在本技术的一些实施例中,基于以上技术方案,所述增量赋值子单元还被配置为:若所述编码块为亮度块,则以预设的第三数值为所述上下文索引增量的初始值赋值;若所述编码块为色度块,则确定与所述编码块的尺寸相关的第四数值,并在所述第三数值的基础上增大所述第四数值后为所述上下文索引增量的初始值赋值。
20.在本技术的一些实施例中,基于以上技术方案,所述增量赋值子单元还被配置为:
根据第二映射向量对所述编码块的尺寸进行映射处理,得到与所述编码块的尺寸相对应的第二映射值;以所述第二映射值作为与所述编码块的尺寸相关的第四数值。
21.在本技术的一些实施例中,基于以上技术方案,所述增量赋值子单元还被配置为:若所述编码块为亮度块,按照公式shift_x=clip3(0,2,(logv 1)》》2)确定位移量,其中shift_x为位移量,v为所述编码块的尺寸;若所述编码块为色度块,按照公式shift_x=clip3(0,2,(t》》3))确定位移量,其中shift_x为位移量,t为所述编码块的尺寸。
22.在本技术的一些实施例中,基于以上技术方案,所述变量解码模块包括:索引区间确定单元,被配置为确定多个连续的由整数组成的索引区间,所述索引区间包括区间下限和区间上限;前缀值解码单元,被配置为在所述编码块的码流中解码得到前缀值;目标区间确定单元,被配置为根据所述前缀值与索引阈值的数值关系确定所述范围变量的取值所在的目标索引区间,所述索引阈值为第一个索引区间的区间上限;补偿值确定单元,被配置为根据所述目标索引区间的区间下限确定补偿值;范围变量确定单元,被配置为根据所述补偿值确定所述范围变量的取值。
23.在本技术的一些实施例中,基于以上技术方案,所述前缀值解码单元包括:截断值确定子单元,被配置为根据区间个数和最后一个索引区间的区间下限确定截断值;前缀值解码子单元,被配置为基于所述截断值,按照截断一元码的方式在所述编码块的码流中进行熵解码和反二值化得到前缀值。
24.在本技术的一些实施例中,基于以上技术方案,所述前缀值解码单元被配置为:通过cabac解码方式对所述编码块的码流进行解码得到前缀值。
25.在本技术的一些实施例中,基于以上技术方案,所述范围变量确定单元包括:第一变量赋值子单元,被配置为若所述目标索引区间为第一个索引区间,则以所述补偿值为所述范围变量赋值;第二变量赋值子单元,被配置为若所述目标索引区间是除所述第一个索引区间以外的其他索引区间,则在所述编码块的码流中解码得到后缀值,并以所述补偿值与所述后缀值的和为所述范围变量赋值。
26.在本技术的一些实施例中,基于以上技术方案,所述第二变量赋值子单元还被配置为:根据所述目标索引区间的区间上限和区间下限在所述编码块的码流中确定待解码的二元符号的目标数量;在所述编码块的码流中对目标数量的二元符号进行熵解码;以所述目标数量作为定长码的长度,按照len位定长码的方式对熵解码结果进行反二值化得到后缀值。
27.在本技术的一些实施例中,基于以上技术方案,所述第二变量赋值子单元还被配置为:从多个候选解码方法中选取目标解码方法;按照所述目标解码方法在所述编码块的码流中解码得到后缀值。
28.在本技术的一些实施例中,基于以上技术方案,所述变量解码模块包括:解码方法选取单元,被配置为从多个候选解码方法中选取目标解码方法;目标方法解码单元,被配置为按照所述目标解码方法在所述编码块的码流中解码得到与srcc扫描区域相关的范围变量的取值。
29.在本技术的一些实施例中,基于以上技术方案,所述多个候选解码方法包括如下解码方法中的至少一种:基于截断一元码的解码方法;基于一元码的解码方法;基于len位定长码的解码方法;基于k阶指数哥伦布码的解码方法。
30.在本技术的一些实施例中,基于以上技术方案,所述视频解码装置应用于满足以下条件中的任意一个的编码块:变换跳过模式的编码块;图像级帧内预测变换跳过允许标志值为1的编码块;图像级帧间预测变换跳过允许标志值为1的编码块;图像级帧内预测变换跳过允许标志值和图像级帧间预测变换跳过允许标志值均为1的编码块;所有编码块。
31.根据本技术实施例的一个方面,提供一种视频编码方法,该方法包括:获取视频图像帧的编码块的尺寸,所述编码块的尺寸包括所述编码块的宽度和高度;获取所述编码块的基于扫描区域的系数编码srcc扫描区域的边界坐标,所述边界坐标包括对应于所述宽度的右端横坐标以及对应于所述高度的下端纵坐标;根据所述编码块的尺寸和所述边界坐标的差值确定与所述srcc扫描区域相关的范围变量的取值,并对所述范围变量进行编码,所述范围变量包括对应于所述宽度的宽度范围变量以及对应于所述高度的高度范围变量。
32.根据本技术实施例的一个方面,提供一种视频编码装置,该装置包括:尺寸获取模块,被配置为获取视频图像帧的编码块的尺寸,所述编码块的尺寸包括所述编码块的宽度和高度;坐标获取模块,被配置为获取所述编码块的基于扫描区域的系数编码srcc扫描区域的边界坐标,所述边界坐标包括对应于所述宽度的右端横坐标以及对应于所述高度的下端纵坐标;变量编码模块,被配置为根据所述编码块的尺寸和所述边界坐标的差值确定与所述srcc扫描区域相关的范围变量的取值,并对所述范围变量进行编码,所述范围变量包括对应于所述宽度的宽度范围变量以及对应于所述高度的高度范围变量。
33.根据本技术实施例的一个方面,提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上技术方案中的视频解码方法。
34.根据本技术实施例的一个方面,提供一种电子设备,该电子设备包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行如以上技术方案中的视频解码方法。
35.根据本技术实施例的一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上技术方案中的视频解码方法。
36.在本技术实施例提供的技术方案中,根据srcc扫描区域的边界坐标的统计特性,提出了一种针对srcc扫描区域边界坐标的编解码方法,即不直接对srcc扫描区域右端横坐标和下端纵坐标进行编码,而是编码与边界坐标以及编码块的尺寸相关的范围变量。在解码时,先从码流里解码并推导出范围变量的值,随后即可求得srcc扫描区域的边界坐标。本技术实施例提供的编解码方法能够减少编码所需比特数,有助于提升系数编码的编解码效率,从而进一步提升视频压缩性能。
37.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
38.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
这些附图获得其他的附图。
39.图1示出了可以应用本技术实施例的技术方案的示例性系统架构的示意图。
40.图2示出视频编码装置和视频解码装置在流式传输系统中的放置方式示意图。
41.图3示出了一个视频编码器的基本流程图。
42.图4示出了通过srcc技术标记出的扫描区域。
43.图5示出了对标记出的扫描区域进行扫描的顺序示意图。
44.图6示出了本技术一个实施例中的视频解码方法的步骤流程图。
45.图7示出了本技术一个实施例中基于二元符号的码流分布位置解码范围变量的步骤流程图。
46.图8示出了本技术一个实施例中对二元符号进行解码的步骤流程图。
47.图9示出了本技术一个实施例中为二元符号对应的上下文索引增量赋值的步骤流程图。
48.图10示出了本技术的一个实施例中基于索引区间解码范围变量的步骤流程图。
49.图11示出了本技术一个实施例中的视频编码方法的步骤流程图。
50.图12示出了本技术实施例提供的视频解码装置的结构框图。
51.图13示出了本技术实施例提供的视频编码装置的结构框图。
52.图14示意性示出了适于用来实现本技术实施例的电子设备的计算机系统结构框图。
具体实施方式
53.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本技术将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
54.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本技术的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本技术的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本技术的各方面。
55.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
56.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
57.需要说明的是:在本文中提及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
58.图1示出了可以应用本技术实施例的技术方案的示例性系统架构的示意图。
59.如图1所示,系统架构100包括多个终端装置,所述终端装置可通过例如网络150彼
此通信。举例来说,系统架构100可以包括通过网络150互连的第一终端装置110和第二终端装置120。在图1的实施例中,第一终端装置110和第二终端装置120执行单向数据传输。
60.举例来说,第一终端装置110可对视频数据(例如由终端装置110采集的视频图片流)进行编码以通过网络150传输到第二终端装置120,已编码的视频数据以一个或多个已编码视频码流形式传输,第二终端装置120可从网络150接收已编码视频数据,对已编码视频数据进行解码以恢复视频数据,并根据恢复的视频数据显示视频图片。
61.在本技术的一个实施例中,系统架构100可以包括执行已编码视频数据的双向传输的第三终端装置130和第四终端装置140,所述双向传输比如可以发生在视频会议期间。对于双向数据传输,第三终端装置130和第四终端装置140中的每个终端装置可对视频数据(例如由终端装置采集的视频图片流)进行编码,以通过网络150传输到第三终端装置130和第四终端装置140中的另一终端装置。第三终端装置130和第四终端装置140中的每个终端装置还可接收由第三终端装置130和第四终端装置140中的另一终端装置传输的已编码视频数据,且可对已编码视频数据进行解码以恢复视频数据,并可根据恢复的视频数据在可访问的显示装置上显示视频图片。
62.在图1的实施例中,第一终端装置110、第二终端装置120、第三终端装置130和第四终端装置140可为服务器、个人计算机和智能电话,但本技术公开的原理可不限于此。本技术公开的实施例适用于膝上型计算机、平板电脑、媒体播放器和/或专用视频会议设备。网络150表示在第一终端装置110、第二终端装置120、第三终端装置130和第四终端装置140之间传送已编码视频数据的任何数目的网络,包括例如有线和/或无线通信网络。通信网络150可在电路交换和/或分组交换信道中交换数据。该网络可包括电信网络、局域网、广域网和/或互联网。出于本技术的目的,除非在下文中有所解释,否则网络150的架构和拓扑对于本技术公开的操作来说可能是无关紧要的。
63.在本技术的一个实施例中,图2示出视频编码装置和视频解码装置在流式传输环境中的放置方式。本技术所公开主题可同等地适用于其它支持视频的应用,包括例如视频会议、数字tv(television,电视机)、在包括cd、dvd、存储棒等的数字介质上存储压缩视频等等。
64.流式传输系统可包括采集子系统213,采集子系统213可包括数码相机等视频源201,视频源创建未压缩的视频图片流202。在实施例中,视频图片流202包括由数码相机拍摄的样本。相较于已编码的视频数据204(或已编码的视频码流204),视频图片流202被描绘为粗线以强调高数据量的视频图片流,视频图片流202可由电子装置220处理,电子装置220包括耦接到视频源201的视频编码装置203。视频编码装置203可包括硬件、软件或软硬件组合以实现或实施如下文更详细地描述的所公开主题的各方面。相较于视频图片流202,已编码的视频数据204(或已编码的视频码流204)被描绘为细线以强调较低数据量的已编码的视频数据204(或已编码的视频码流204),其可存储在流式传输服务器205上以供将来使用。一个或多个流式传输客户端子系统,例如图2中的客户端子系统206和客户端子系统208,可访问流式传输服务器205以检索已编码的视频数据204的副本207和副本209。客户端子系统206可包括例如电子装置230中的视频解码装置210。视频解码装置210对已编码的视频数据的传入副本207进行解码,且产生可在显示器212(例如显示屏)或另一呈现装置上呈现的输出视频图片流211。在一些流式传输系统中,可根据某些视频编码/压缩标准对已编码的视
频数据204、视频数据207和视频数据209(例如视频码流)进行编码。该些标准的实施例包括itu-t h.265。在实施例中,正在开发的视频编码标准非正式地称为下一代视频编码(versatile video coding,vvc),本技术可用于vvc标准的上下文中。
65.应注意,电子装置220和电子装置230可包括图中未示出的其它组件。举例来说,电子装置220可包括视频解码装置,且电子装置230还可包括视频编码装置。
66.在本技术的一个实施例中,以国际视频编码标准hevc(high efficiency video coding,高效率视频编码)、vvc(versatile video coding,多功能视频编码),以及中国国家视频编码标准avs为例,当输入一个视频帧图像之后,会根据一个块大小,将视频帧图像划分成若干个不重叠的处理单元,每个处理单元将进行类似的压缩操作。这个处理单元被称作ctu(coding tree unit,编码树单元),或者称之为lcu(largest coding unit,最大编码单元)。ctu再往下可以继续进行更加精细的划分,得到一个或多个基本的编码单元cu,cu是一个编码环节中最基本的元素。以下介绍对cu进行编码时的一些概念:
67.预测编码(predictive coding):预测编码包括了帧内预测和帧间预测等方式,原始视频信号经过选定的已重建视频信号的预测后,得到残差视频信号。编码端需要为当前cu决定选择哪一种预测编码模式,并告知解码端。其中,帧内预测是指预测的信号来自于同一图像内已经编码重建过的区域;帧间预测是指预测的信号来自已经编码过的、不同于当前图像的其它图像(称之为参考图像)。
68.变换及量化(transform&quantization):残差视频信号经过dft(discrete fourier transform,离散傅里叶变换)、dct(discrete cosine transform,离散余弦变换)等变换操作后,将信号转换到变换域中,称之为变换系数。变换系数进一步进行有损的量化操作,丢失掉一定的信息,使得量化后的信号有利于压缩表达。在一些视频编码标准中,可能有多于一种变换方式可以选择,因此编码端也需要为当前cu选择其中的一种变换方式,并告知解码端。量化的精细程度通常由量化参数(quantization parameter,简称qp)来决定,qp取值较大,表示更大取值范围的系数将被量化为同一个输出,因此通常会带来更大的失真及较低的码率;相反,qp取值较小,表示较小取值范围的系数将被量化为同一个输出,因此通常会带来较小的失真,同时对应较高的码率。
69.熵编码(entropy coding)或统计编码:量化后的变换域信号将根据各个值出现的频率进行统计压缩编码,最后输出二值化(0或者1)的压缩码流。同时,编码产生其他信息,例如选择的编码模式、运动矢量数据等,也需要进行熵编码以降低码率。统计编码是一种无损的编码方式,可以有效的降低表达同样信号所需要的码率,常见的统计编码方式有变长编码(variable length coding,简称vlc)或者基于上下文的二值化算术编码(content adaptive binary arithmetic coding,简称cabac)。
70.基于上下文的自适应二进制算术编码(cabac)过程主要包含3个步骤:二进制化、上下文建模和二进制算术编码。在对输入的语法元素进行二值化后,可以通过常规编码模式和旁路编码模式(bypass)对二元数据进行编码。旁路编码模式(bypass coding mode),它无须为每个二元位分配特定的概率模型,输入的二元位bin值直接用一个简单的旁路编码器进行编码,以加快整个编码以及解码的速度。一般情况下,不同的语法元素之间并不是完全独立的,且相同语法元素自身也具有一定的记忆性。因此,根据条件熵理论,利用其他已编码的语法元素进行条件编码,相对于独立编码或者无记忆编码能够进一步提高编码性
能。这些用来作为条件的已编码符号信息称为上下文。在常规编码模式中,语法元素的二元位顺序地进入上下文模型器。编码器根据先前编码过的语法元素或二元位的值,为每一个输入的二元位分配合适的概率模型,该过程即为上下文建模。通过ctxidxinc(context index increment,上下文索引增量)和ctxidxstart(context index start,上下文起始索引)即可定位到语法元素所对应的上下文模型。将bin值和分配的概率模型一起送入二元算术编码器进行编码后,需要根据bin值更新上下文模型,也就是编码中的自适应过程。
71.环路滤波(loop filtering):经过变化及量化的信号会通过反量化、反变换及预测补偿的操作获得重建图像。重建图像与原始图像相比由于存在量化的影响,部分信息与原始图像有所不同,即重建图像会产生失真(distortion)。因此,可以对重建图像进行滤波操作,例如去块效应滤波(deblocking filter,简称db)、sao(sample adaptive offset,自适应像素补偿)或者alf(adaptive loop filter,自适应环路滤波)等滤波器,可以有效降低量化所产生的失真程度。由于这些经过滤波后的重建图像将作为后续编码图像的参考来对将来的图像信号进行预测,因此上述的滤波操作也被称为环路滤波,即在编码环路内的滤波操作。
72.在本技术的一个实施例中,图3示出了一个视频编码器的基本流程图,在该流程中以帧内预测为例进行说明。其中,原始图像信号sk[x,y]与预测图像信号做差值运算,得到残差信号uk[x,y],残差信号uk[x,y]经过变换及量化处理之后得到量化系数,量化系数一方面通过熵编码得到编码后的比特流,另一方面通过反量化及反变换处理得到重构残差信号u'k[x,y],预测图像信号与重构残差信号u'k[x,y]叠加生成图像信号图像信号一方面输入至帧内模式决策模块和帧内预测模块进行帧内预测处理,另一方面通过环路滤波输出重建图像信号s'k[x,y],重建图像信号s'k[x,y]可以作为下一帧的参考图像进行运动估计及运动补偿预测。然后基于运动补偿预测的结果s'r[x m
x
,y my]和帧内预测结果得到下一帧的预测图像信号并继续重复上述过程,直至编码完成。
[0073]
基于上述的编码过程,在解码端针对每一个cu,在获取到压缩码流(即比特流)之后,进行熵解码获得各种模式信息及量化系数。然后量化系数经过反量化及反变换处理得到残差信号。另一方面,根据已知的编码模式信息,可获得该cu对应的预测信号,然后将残差信号与预测信号相加之后即可得到重建信号,重建信号再经过环路滤波等操作,产生最终的输出信号。
[0074]
在上述的编解码过程中,对残差信号的变换处理使得残差信号的能量集中在较少的低频系数,也就是多数系数值较小。然后经过后续的量化模块后,较小系数值将变为零值,极大降低了编码残差信号的代价。但是,由于残差分布的多样性,单一的dct变换无法适应所有的残差特性,因此,dst7和dct8这样的变换核被引入到变换处理过程中,并且对残差信号进行的水平变换和竖直变换可以采用不同的变换核。以amt(adaptive multiple core transform,自适应多核变换)技术为例,对于一个残差信号进行变换处理可能选择的变换组合如下所示:(dct2,dct2)、(dct8,dct8)、(dct8,dst7)、(dst7,dct8)和(dst7,dst7)。对于残差信号具体选择哪种变换组合,需要在编码端使用rdo(rate

distortion optimization,率失真优化)进行决策。另外,在残差块内残差分布相关性较弱的情况下,可
以不经过变换过程而直接对残差信号进行量化,即变换跳过。标识当前残差块是否属于变换跳过模式可以通过显式编码和隐式导出两种方式。
[0075]
由于残差信号在经过变换和量化处理后的量化系数块中非零系数较大概率会集中在块的左边和上方区域,而块的右边和下方区域往往为0,因此引入了srcc技术中,通过srcc技术可以标记出每个量化系数块(尺寸为w
×
h)中包含的非零系数的左上区域的大小为(srx 1)
×
(sry 1),其中srx是量化系数块中最右面的非零系数的横坐标,sry是量化系数块中最下面的非零系数的纵坐标,且左上角起点坐标为(0,0),1≤srx 1≤w,1≤sry 1≤h,而该区域外的系数均为0。srcc技术利用(srx,sry)来确定一个量化系数块中需要扫描的量化系数区域,如图4所示,只有(srx,sry)标记的扫描区域内的量化系数需要编码,编码的扫描顺序如图5所示,可以是从右下角到左上角的反向z字型扫描。
[0076]
srcc区域内的待编码的系数采用的是分层的方法进行编码。具体来讲,首先,对srcc扫描区域坐标进行编码。然后,在srcc区域内,基于扫描顺序,逐一编码标识当前位置上的系数是否为0的flag(significant flag)。与此同时,记录非零系数位置和统计非零系数个数。如果非零系数个数大于0,则需要对相应位置的非0系数绝对值和符号进行编码。
[0077]
以avs3标准作为示例,视频编解码器使用了基于扫描区域的系数编码技术(scan region based coefficient coding,srcc)。在对srcc区域内的所有系数进行编码前,要先对srcc扫描区域右端横坐标scan_region_x(值为srx)和下端纵坐标scan_region_y(值为sry)进行编码。在现有的avs标准中,是直接对scan_region_x的值srx和scan_region_y的值sry进行编码。
[0078]
考虑到srcc区域的边界主要取决于当前块内最右边和最下边非零系数的位置。对于经过变换的编码块,其变换后的能量主要集中在有限的低频系数位置,因此,srcc区域的面积,以及srx和sry倾向于较小值。然而,对于变换跳过模式的编码块,由于不存在变换过程,残差系数能量没有被集中,非零系数的分布可能相对更为稀疏。因此,变换跳过模式的编码块的srcc区域的面积,以及srx和sry相对来讲倾向于更大值。因此,如果在变换跳过模式下,也直接对srx和sry进行编码,可能会使得在编码变换跳过模式下的srx和sry时需要更多比特,从而导致编码效率的降低。
[0079]
本技术根据变换跳过模式下srcc区域坐标的统计特性,提出了一种srcc扫描区域坐标的编解码方法,即不直接对srcc扫描区域右端横坐标scan_region_x的值srx和下端纵坐标scan_region_y的值sry进行编码,而是编码width-1-srx的值(记为width_minus1_minus_scan_region_x)和height-1-sry的值(记为height_minus1_minus_scan_region_y),解码时,先从码流里解码并推导出width_minus1_minus_scan_region_x和height_minus1_minus_scan_region_y的值,随后即可求得srcc扫描区域右端横坐标scan_region_x的值srx=width-1-width_minus1_minus_scan_region_x,下端纵坐标scan_region_y的值sry=height-1-height_minus1_minus_scan_region_y。改进后的编码方式能够减少编码所需比特数,有助于提升系数编码的编码效率,从而进一步提升视频压缩性能。
[0080]
本技术提出的srcc扫描区域坐标的编码方法,不局限于应用在变换跳过模式下的srcc扫描区域坐标编码上。它可以使用在其它编码模式下的系数编码中的srcc扫描区域坐标编码上,例如,运用在所有块的srcc扫描区域坐标编码中,例如,在图像级帧内预测变换跳过允许标志值为1的时候使用;例如,在图像级帧间预测变换跳过允许标志值为1的时候
使用;例如,在图像级帧内预测变换跳过允许标志值和图像级帧间预测变换跳过允许标志值均为1的时候使用,等等。
[0081]
在一些可选的实施方式中,在变换跳过模式下编码width_minus1_minus_scan_region_x和height_minus1_minus_scan_region_y,在其它模式下保持原先的编码方式,即直接编码srx和sry。
[0082]
在其他一些可选的实施方式中,所有块的srcc扫描区域坐标编码方式都采用编码width_minus1_minus_scan_region_x和height_minus1_minus_scan_region_y的方法。
[0083]
在其他一些可选的实施方式中,另一种结合方式为,在变换跳过模式下保持原先的编码方式,即直接编码srx和sry,在其它模式下编码width_minus1_minus_scan_region_x和height_minus1_minus_scan_region_y。
[0084]
在其他一些可选的实施方式中,在图像级帧内预测变换跳过允许标志值为1的时候编码width_minus1_minus_scan_region_x和height_minus1_minus_scan_region_y,在其它条件下保持原先的编码方式,即直接编码srx和sry。
[0085]
在其他一些可选的实施方式中,在图像级帧间预测变换跳过允许标志值为1的时候编码width_minus1_minus_scan_region_x和height_minus1_minus_scan_region_y,在其它条件下保持原先的编码方式,即直接编码srx和sry。
[0086]
在其他一些可选的实施方式中,在图像级帧内预测变换跳过允许标志值和图像级帧间预测变换跳过允许标志值均为1的时候编码width_minus1_minus_scan_region_x和height_minus1_minus_scan_region_y,在其它条件下保持原先的编码方式,即直接编码srx和sry。
[0087]
本技术实施例可以通过显式编码或者隐含导出的方式确定编码块是否采用变换跳过模式。其中,显式编码是在解码系数绝对值之前对用于表示编码块是否采用变换跳过模式的标志flag进行解码,以基于标志的解码结果明确当前的编码块是否需要跳过变换过程。隐含导出(即隐择变换跳过,implicit selection of transform skip)是在没有相应标志的情况下,对系数解码结果进行统计,再根据统计结果判断是否跳过变换过程。例如,可以先解码出所有系数,计算所有非零系数的数量,以及所有系数(包括零系数)中偶数系数的数量,然后根据非零系数的数量的奇偶性,或者所有系数中偶数系数的数量的奇偶性,去隐式地推导当前编码块是否采用变换跳过(例如,非零系数的数量为奇数时,确定当前编码块采用了变换跳过;而在非零系数的数量为偶数时,确定当前编码块未采用变换跳过。例如,所有系数中偶数系数的数量为偶数时,确定当前编码块采用了变换跳过;而在所有系数中偶数系数的数量为奇数时,确定当前编码块未采用变换跳过)。
[0088]
图像级帧内预测变换跳过允许标志和图像级帧间预测变换跳过允许标志是用于控制是否能够在帧内/帧间使用隐择变换跳过的标志。在本技术的实施例中,涉及与变换跳过模式相关的语法元素解释如下。
[0089]
隐择变换跳过允许标志ist_skip_enable_flag:
[0090]
二值变量。值为
‘1’
表示可使用隐择变换跳过;值为
‘0’
表示不应使用隐择变换跳过。变量istskipenableflag的值可以通过对语法元素ist_skip_enable_flag解码得到。如果位流中不存在语法元素ist_skip_enable_flag,可以将istskipenableflag赋值为0。
[0091]
帧间变换跳过允许标志inter_transform_skip_enable_flag:
[0092]
二值变量。值为
‘1’
表示可使用帧间变换跳过;值为
‘0’
表示不应使用帧间变换跳过。变量intertransformskipenableflag的值可以通过对语法元素inter_transform_skip_enable_flag解码得到。如果位流中不存在语法元素inter_transform_skip_enable_flag,可以将intertransformskipenableflag赋值为0。
[0093]
图像级帧内预测变换跳过允许标志picture_ist_skip_enable_flag:
[0094]
二值变量。值为
‘1’
表示当前图像的亮度帧内预测残差块和亮度编码块复制帧内预测残差块可使用变换跳过方法;值为
‘0’
表示当前图像的亮度帧内预测残差块和亮度编码块复制帧内预测残差块不应使用变换跳过方法。变量pictureistskipenableflag的值可以通过对语法元素picure_ist_skip_enable_flag解码得到。如果位流中不存在语法元素picture_ist_skip_enable_flag,可以将pictureistskipenableflag赋值为0。
[0095]
图像级帧间预测变换跳过允许标志picture_inter_trasform_skip_flag:
[0096]
二值变量。值为
‘1’
表示当前图像的亮度帧间预测残差块残差块可使用变换跳过方法;值为
‘0’
表示当前图像的亮度帧间预测残差块不应使用变换跳过方法。pictureinterskipenableflag的值可以通过对语法元素picture_inter_trasform_skip_flag解码得到。如果位流中不存在语法元素picture_inter_trasform_skip_flag,可以将pictureinterskipenableflag赋值为0。
[0097]
下面结合具体应用场景对本技术实施例的技术方案的实现细节进行详细阐述。
[0098]
图6示出了本技术一个实施例中的视频解码方法的步骤流程图,该视频解码方法可以由具有计算处理功能的设备来执行,比如可以由终端设备或服务器来执行。如图6所示,该视频解码方法主要可以包括如下的步骤s610至步骤s630。
[0099]
步骤s610:获取视频图像帧的编码块的尺寸,编码块的尺寸包括编码块的宽度和高度。
[0100]
在本技术的一个实施例中,视频图像帧序列包括了一系列图像,每张图像可以被进一步划分为条带(slice),条带又可以划分为一系列的lcu(或ctu),lcu包含有若干cu。视频图像帧在编码时是以块为单位进行编码处理,在一些新的视频编码标准中,比如在h.264标准中有宏块(macroblock,mb),宏块可进一步划分成多个可用于预测编码的预测块(prediction)。在hevc标准中,采用编码单元cu、预测单元(prediction unit,pu)和变换单元(transform unit,tu)等基本概念,从功能上划分了多种块单元,并采用全新的基于树的结构进行描述。比如cu可以按照四叉树划分为更小的cu,而更小的cu还可以继续划分,从而形成一种四叉树结构。本技术实施例中的编码块可以是cu,或者是比cu更小的块,如对cu进行划分得到的更小的块。
[0101]
步骤s620:从编码块的码流中解码得到与编码块的基于扫描区域的系数编码srcc扫描区域相关的范围变量的取值,范围变量包括对应于宽度的宽度范围变量以及对应于高度的高度范围变量。
[0102]
在本技术的一个实施例中,从码流中对与scan_region_x相关的语法元素进行解码和反二值化,所推导得到的值赋给宽度范围变量width_minus1_minus_scan_region_x,宽度范围变量表示的含义是当前编码块的宽度width减去1再减去srcc扫描区域的右端横坐标scan_region_x的值srx所得到的结果。然后,可以从码流中对与scan_region_x相关的语法元素进行解码和反二值化,所推导得到的值记为高度范围变量height_minus1_minus_
scan_region_y,高度范围变量表示的含义是当前编码块的高度height减去1再减去srcc扫描区域的下端纵坐标scan_region_y的值sry所得到的结果。
[0103]
步骤s630:根据编码块的尺寸和范围变量的差值确定srcc扫描区域的边界坐标,边界坐标包括对应于宽度范围变量的右端横坐标以及对应于高度范围变量的下端纵坐标。
[0104]
由宽度范围变量的定义,可以确定宽度范围变量、srcc扫描区域的右端横坐标的取值以及编码块的宽度之间,满足如下公式:
[0105]
width_minus1_minus_scan_region_x (srx 1)=width
[0106]
由此可得srcc扫描区域右端横坐标scan_region_x的取值为:
[0107]
srx=width-1-width_minus1_minus_scan_region_x。
[0108]
由高度范围变量的定义,可以确定高度范围变量、srcc扫描区域的下端纵坐标的取值以及编码块的高度之间,满足如下公式:
[0109]
height_minus1_minus_scan_region_y (sry 1)=height
[0110]
由此可得srcc扫描区域下端纵坐标scan_region_x的取值为:
[0111]
sry=height-1-height_minus1_minus_scan_region_y。
[0112]
在本技术的一个实施例中,可以根据二元符号在码流中的位置分布特点对范围变量进行解码。图7示出了本技术一个实施例中基于二元符号的码流分布位置解码范围变量的步骤流程图。如图7所示,在以上实施例的基础上,步骤s620中的从编码块的码流中解码得到与编码块的srcc扫描区域相关的范围变量的取值,可以包括如下的步骤s710至步骤s730。
[0113]
步骤s710:在编码块的码流中,按照索引号递增的顺序依次对索引号对应的二元符号进行解码得到二元符号的取值。
[0114]
在本技术的一个实施例中,将编码块的码流中的二元符号记作bin,其对应的索引号为binidx。对于binidx=0~(group_idx[min(t,32)-1]-1),逐一在码流中按cabac方式熵解码第binidx位的bin值。当需要解码的是width_minus1_minus_scan_region_x时,令t=width。当需要解码的是height_minus1_minus_scan_region_y时,令t=height。其中,group_idx[64]={0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11}。
[0115]
步骤s720:若当前二元符号的取值为预设的第一数值,则以当前二元符号对应的当前索引号为位置变量赋值。
[0116]
在本技术的一个实施例中,取第一数值为0,如果当前解码得到的当前二元符号的取值为0,即bin=0,则可以将位置变量pos赋值为当前二元符号对应的当前索引号,即令pos=binidx。而如果当前二元符号的取值不是第一数值(例如取值为1,即bin=1),则令binidx=binidx 1,继续读取后续的其他二元符号。
[0117]
步骤s730:根据位置变量的取值对与编码块的srcc扫描区域相关的范围变量进行赋值。
[0118]
在本技术的一个实施例中,根据位置变量的取值对与编码块的srcc扫描区域相关的范围变量进行赋值的方法可以包括:将位置变量的取值与预设的第二数值进行比较;若位置变量的取值小于或等于第二数值,则以第二数值为范围变量赋值;若位置变量的取值
大于第二数值,则根据位置变量的取值确定前缀值,并根据当前二元符号之后的其他二元符号的解码结果确定后缀值;以前缀值和后缀值的和为范围变量赋值。
[0119]
举例而言,第二数值取值为3,如果位置变量的取值pos《=3,则将width_minus1_minus_scan_region_x或者height_minus1_minus_scan_region_y赋值为pos。而如果位置变量的取值pos》3,则需要进一步确定前缀值和后缀值,从而根据前缀值和后缀值的和当前解码的范围变量width_minus1_minus_scan_region_x或者height_minus1_minus_scan_region_y进行赋值。
[0120]
在本技术的一个实施例中,根据位置变量的取值确定前缀值的方法可以包括:根据第一映射向量对位置变量的取值进行映射处理,得到与位置变量的取值相对应的第一映射值;根据第一映射值确定前缀值。
[0121]
举例而言,第一映射向量记作min_in_group[14]={0,1,2,3,4,6,8,12,16,24,32,48,64,96},在位置变量的取值大于第二数值时,令前缀值为pre=min_in_group[pos]。
[0122]
在本技术的一个实施例中,根据当前二元符号之后的其他二元符号的解码结果确定后缀值的方法可以包括:根据位置变量的取值确定待解码的其他二元符号的目标数量;对当前二元符号之后的目标数量个其他二元符号进行解码得到后缀值。可选地,本技术实施例可以按照旁路解码bypass的方式对当前二元符号之后的目标数量个其他二元符号进行熵解码;然后以目标数量作为定长码的长度,按照len位定长码的方式对熵解码结果进行反二值化得到后缀值。
[0123]
举例而言,在位置变量的取值大于第二数值时并确定相应的前缀值pre之后,本技术实施例可以继续在码流里按bypass方式解码len=(pos-2)》》1个bin并按照len位定长码(见下方表1)的方式进行反二值化得到后缀值suf;那么当前解码的宽度范围变量width_minus1_minus_scan_region_x或者高度范围变量height_minus1_minus_scan_region_y可以赋值为pre suf。
[0124]
表1 synelval与二元符号串的关系(长度为len的定长码)
[0125][0126]
图8示出了本技术一个实施例中对二元符号进行解码的步骤流程图。如图8所示,
在以上实施例的基础上,步骤s710中的按照索引号递增的顺序依次对索引号对应的二元符号进行解码得到二元符号的取值的方法可以包括如下的步骤s810至步骤s830。
[0127]
步骤s810:为二元符号对应的上下文索引增量赋值。
[0128]
步骤s820:根据赋值得到的上下文索引增量确定与二元符号相对应的上下文模型。
[0129]
步骤s830:基于上下文模型,通过cabac解码引擎对二元符号进行算数解码得到二元符号的取值。
[0130]
在本技术的一个实施例中,可以以二元符号对应的索引号为上下文索引增量赋值,即ctxidxinc=binidx。
[0131]
在本技术的一个实施例中,也可以根据二元符号的相关位置信息对上下文索引增量进行赋值。图9示出了本技术一个实施例中为二元符号对应的上下文索引增量赋值的步骤流程图。如图9所示,在以上实施例的基础上,步骤s810中的为二元符号对应的上下文索引增量赋值的方法可以包括如下的步骤s910至步骤s930。
[0132]
步骤s910:根据编码块的通道信息为上下文索引增量的初始值赋值。
[0133]
在本技术的一个实施例中,若编码块为亮度块,则以预设的第三数值为上下文索引增量的初始值赋值;若编码块为色度块,则确定与编码块的尺寸相关的第四数值,并在第三数值的基础上增大第四数值后为上下文索引增量的初始值赋值。
[0134]
在本技术的一个实施例中,确定与编码块的尺寸相关的第四数值的方法可以包括:根据第二映射向量对编码块的尺寸进行映射处理,得到与编码块的尺寸相对应的第二映射值;以第二映射值作为与编码块的尺寸相关的第四数值。
[0135]
举例而言,第三数值可以取值为0,如果当前编码块是亮度块,则令ctxidxinc=0。如果当前编码块是色度块,则令ctxidxinc=ctxidxinc 25 prefix_ctx[logv]。其中,第二映射向量记作prefix_ctx[8]={0,0,0,3,6,10,15,21}。当需要解码的是width_minus1_minus_scan_region_x时,令v=width,则logv=log(width)。当需要解码的是height_minus1_minus_scan_region_y时,令v=height,则logv=log(height)。
[0136]
步骤s920:根据编码块的通道信息以及编码块的尺寸确定位移量。
[0137]
在本技术的一个实施例中,若编码块为亮度块,按照公式shift_x=clip3(0,2,(logv 1)》》2)确定位移量,其中shift_x为位移量,v为编码块的尺寸,当需要解码的是width_minus1_minus_scan_region_x时,令v=width,则logv=log(width)。当需要解码的是height_minus1_minus_scan_region_y时,令v=height,则logv=log(height)。若编码块为色度块,按照公式shift_x=clip3(0,2,(t》》3))确定位移量,其中shift_x为位移量,t为编码块的尺寸,当需要解码的是width_minus1_minus_scan_region_x时,令t=width。当需要解码的是height_minus1_minus_scan_region_y时,令t=height。。
[0138]
步骤s930:根据初始值、索引号以及位移量确定对二元符号对应的上下文索引增量进行赋值。
[0139]
在本技术的一个实施例中,如果binidx等于0,则令ctxidxinc保持当前值,即令ctxidxinc=ctxidxinc。如果binidx大于0,且前一个bin为1,且binidx小于group_idx[min(t,32)-1],则令ctxidxinc=ctxidxinc (binidx》》shift_x)。
[0140]
图10示出了本技术的一个实施例中基于索引区间解码范围变量的步骤流程图。如
图10所示,在以上实施例的基础上,步骤s620中的从编码块的码流中解码得到与编码块的srcc扫描区域相关的范围变量的取值,可以包括如下的步骤s1010至步骤s1050。
[0141]
步骤s1010:确定多个连续的由整数组成的索引区间,索引区间包括区间下限和区间上限。
[0142]
本技术实施例首先确定一系列数值为整数的区间,记为r0,r1,r2,

,rn,其中rx的索引为x,区间rx可以表示为[rx_start,rx_end)。表2示出了本技术一个实施例中的索引区间划分方式。
[0143]
表2区间划分
[0144]
区间rx区间范围[rx_start,rx_end)r0[0,r0_end)r1[r0_end,r1_end)r2[r1_end,r2_end)r3[r2_end,r3_end)
……rx
[r
x-1
_end,r
x
_end)
……rn-1
[r
n-2
_end,r
n-1
_end)rn[r
n-1
_end,rn_end)
[0145]
举例而言,相关索引区间的取值可以表示为:r0=[0,5),r1=[5,9),r2=[9,17),r3=[17,max_tu_size),max_tu_size为编解码器所规定的变换单元tu的最大尺寸。
[0146]
步骤s1020:在编码块的码流中解码得到前缀值。
[0147]
在本技术的一个实施例中,可以根据区间个数和最后一个索引区间的区间下限确定截断值;然后基于截断值,按照截断一元码的方式(见下方表3)在编码块的码流中进行熵解码和反二值化得到前缀值。其中截断值可以取值为maxval=r0_end n-1。
[0148]
在本技术的一个实施例中,也可以通过cabac解码方式对编码块的码流进行解码得到前缀值,其中每个二进制位具有对应的上下文模型。
[0149]
步骤s1030:根据前缀值与索引阈值的数值关系确定范围变量的取值所在的目标索引区间,索引阈值为第一个索引区间的区间上限。
[0150]
举例而言,以第一个索引区间的区间上限r0_end作为索引阈值,如果pre等于r0_end x-1(x=1~n-1),可以确定范围变量的取值属于区间r
x
=[r
x-1
_end,r
x
_end)。
[0151]
步骤s1040:根据目标索引区间的区间下限确定补偿值。
[0152]
步骤s1050:根据补偿值确定范围变量的取值。
[0153]
在本技术的一个实施例中,若目标索引区间为第一个索引区间,则以补偿值为范围变量赋值;若目标索引区间是除第一个索引区间以外的其他索引区间,则在编码块的码流中解码得到后缀值,并以补偿值与后缀值的和为范围变量赋值。
[0154]
举例而言,如果pre小于等于r0_end-1,可以令补偿值offset=pre。如果pre等于r0_end x-1(x=1~n-1),则待解码的width_minus1_minus_scan_region_x或height_minus1_minus_scan_region_y的值属于区间r
x
=[r
x-1
_end,r
x
_end)。在此基础上,可以令offset等于r
x-1
_end。
[0155]
在本技术的一个实施例中,在编码块的码流中解码得到后缀值的方法可以包括:根据目标索引区间的区间上限和区间下限在编码块的码流中确定待解码的二元符号的目标数量;在编码块的码流中对目标数量的二元符号进行熵解码;以目标数量作为定长码的长度,按照len位定长码的方式对熵解码结果进行反二值化得到后缀值。
[0156]
举例而言,本技术实施例可以将待解码的二元符号的目标数量记作len=ceil(log2(r
x
_end-r
x-1
_end))。按照len位定长码的方式反二值化(见上方表1)并推导得到后缀值suf,则待解码的width_minus1_minus_scan_region_x或height_minus1_minus_scan_region_y的值为offset suf。
[0157]
在本技术的一个实施例中,在编码块的码流中解码得到后缀值的方法可以包括:从多个候选解码方法中选取目标解码方法;按照目标解码方法在编码块的码流中解码得到后缀值。
[0158]
在本技术的一个实施例中,可供选择的多个候选解码方法可以包括:基于截断一元码(截断值maxval=r
x
_end-offset-1)的解码方法(见下方表3);基于一元码的解码方法(见下方表4);基于len位定长码的解码方法(见上方表1);基于k阶指数哥伦布码的解码方法(见下方表5)。
[0159]
表3 synelval与二元符号串的关系(截断一元码的2种形式:表3-1或表3-2)
[0160]
表3-1
[0161][0162]
表3-2
[0163][0164]
表4 synelval与二元符号串的关系(包括2种一元码形式:表4-1或表4-2)
[0165]
表4-1
[0166][0167]
表5-2
[0168]
[0169]
表5 k阶指数哥伦布码表
[0170][0171][0172]
下面以索引区间r0=[0,5),r1=[5,9),r2=[9,17),r3=[17,max_tu_size),即n=3,x=0~3,r0_end=5为例进行说明如下,其中,max_tu_size为编解码器所规定的tu的最大尺寸。
[0173]
(1)首先确定一系列数值为整数的区间,r0=[0,5),r1=[5,9),r2=[9,17),r3=[17,max_tu_size);
[0174]
(2)从码流中按照截断一元码的方式(见表3,截断值maxval=5 3-1=7)解码和反二值化得到前缀值pre。如果pre小于等于4,令offset=pre,则待解码的width_minus1_minus_scan_region_x或height_minus1_minus_scan_region_y的值即为offset。
[0175]
(3)可选的,pre采用cabac的方式进行熵解码,每个二进制位具有对应的上下文模型;
[0176]
(4)如果pre等于5(x=1),则待解码的width_minus1_minus_scan_region_x或
height_minus1_minus_scan_region_y的值属于区间r1=[5,9)。令offset等于5,从码流中熵解码2位比特,按照2位定长码的方式反二值化(见表1)并推导得到后缀值suf,那么待解码的width_minus1_minus_scan_region_x或height_minus1_minus_scan_region_y的值即为offset suf。
[0177]
(5)可选的,对于以上步骤(4),也可以按照包括但不限于以下方式之一对后缀值suf进行熵解码和反二值化并推导出其值:
[0178]
(5-1)按照k阶指数哥伦布码(见表5)的方式对后缀值suf反二值化;
[0179]
(5-2)按照截断一元码(见表3,截断值maxval=r
x
_end-offset-1=9-5-1=3)的方式对后缀值suf反二值化;
[0180]
(5-3)按照一元码(见表4)的方式对后缀值suf反二值化。
[0181]
(6)如果pre等于6(x=2),则待解码的width_minus1_minus_scan_region_x或height_minus1_minus_scan_region_y的值属于区间r2=[9,17),令offset等于9,从码流中熵解码3位比特,按照3位定长码的方式反二值化(见表1)并推导得到后缀值suf,那么待解码的width_minus1_minus_scan_region_x或height_minus1_minus_scan_region_y的值即为offset suf。
[0182]
(7)可选的,对于以上步骤(6),也可按照包括但不限于以下方式之一对后缀值suf进行熵解码和反二值化并推导出其值:
[0183]
(7-1)按照k阶指数哥伦布码(见表5)的方式对后缀值suf反二值化;
[0184]
(7-2)按照截断一元码(见表3,截断值maxval=r
x
_end-offset-1=17-9-1=7)的方式对后缀值suf反二值化;
[0185]
(7-3)按照一元码(见表4)的方式对后缀值suf反二值化。
[0186]
(8)如果pre等于7,则待解码的width_minus1_minus_scan_region_x或height_minus1_minus_scan_region_y的值属于区间r3=[17,max_tu_size);,令offset等于17,继续从码流中进行熵解码,按照k阶指数哥伦布码的方式反二值化(见表5)并推导得到后缀值suf。则待解码的width_minus1_minus_scan_region_x或height_minus1_minus_scan_region_y的值为offset suf。
[0187]
(9)可选的,对于以上(8),也可按照包括但不限于以下方式之一对后缀值suf进行熵解码和反二值化并推导出其值:
[0188]
(9-1)按照len=ceil(log2(rn_end-r
n-1
_end))位定长码的方式反二值化(见表1)并推导得到后缀值suf;
[0189]
(9-2)按照截断一元码(见表3)的方式对后缀值suf反二值化;
[0190]
(9-3)按照一元码(见表4)的方式对后缀值suf反二值化。
[0191]
在本技术的一个实施例中,从编码块的码流中解码得到与srcc扫描区域相关的范围变量的取值的方法可以包括:从多个候选解码方法中选取目标解码方法;按照目标解码方法在编码块的码流中解码得到与srcc扫描区域相关的范围变量的取值。在本技术的一个实施例中,可供选择的多个候选解码方法可以包括:基于截断一元码的解码方法(见上方表3);基于一元码的解码方法(见上方表4);基于len位定长码的解码方法(见上方表1);基于k阶指数哥伦布码的解码方法(见上方表5)。
[0192]
以上实施例从解码侧的角度介绍了关于srcc扫描区域边界坐标的解码方案,而在
编码侧可以使用与以上各个实施例相对应的编码方案。图11示出了本技术一个实施例中的视频编码方法的步骤流程图。该视频编码方法可以由具有计算处理功能的设备来执行,比如可以由终端设备或服务器来执行。如图11所示,该视频编码方法主要可以包括如下的步骤s1110至步骤s1130。
[0193]
步骤s1110:获取视频图像帧的编码块的尺寸,编码块的尺寸包括编码块的宽度和高度;
[0194]
步骤s1120:获取编码块的基于扫描区域的系数编码srcc扫描区域的边界坐标,边界坐标包括对应于宽度的右端横坐标以及对应于高度的下端纵坐标;
[0195]
步骤s1130:根据编码块的尺寸和边界坐标的差值确定与srcc扫描区域相关的范围变量的取值,并对范围变量进行编码,范围变量包括对应于宽度的宽度范围变量以及对应于高度的高度范围变量。
[0196]
本技术实施例中的视频编码方法的相关内容细节与以上实施例中的视频解码方法相对应,此处不再赘述。
[0197]
基于以上各实施例,本技术根据srcc扫描区域的边界坐标的统计特性,提出了一种针对srcc扫描区域边界坐标的编解码方法,即不直接对srcc扫描区域右端横坐标和下端纵坐标进行编码,而是编码与边界坐标以及编码块的尺寸相关的范围变量。在解码时,先从码流里解码并推导出范围变量的值,随后即可求得srcc扫描区域的边界坐标。本技术实施例提供的编解码方法能够减少编码所需比特数,有助于提升系数编码的编解码效率,从而进一步提升视频压缩性能。
[0198]
应当注意,尽管在附图中以特定顺序描述了本技术中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
[0199]
以下介绍本技术的装置实施例,可以用于执行本技术上述实施例中的视频编解码方法。图12示出了本技术实施例提供的视频解码装置的结构框图。如图12所示,视频解码装置1200主要可以包括:尺寸获取模块1210,被配置为获取视频图像帧的编码块的尺寸,所述编码块的尺寸包括所述编码块的宽度和高度;变量解码模块1220,被配置为从所述编码块的码流中解码得到与所述编码块的srcc扫描区域相关的范围变量的取值,所述范围变量包括对应于所述宽度的宽度范围变量以及对应于所述高度的高度范围变量;坐标确定模块1230,被配置为根据所述编码块的尺寸和所述范围变量的差值确定所述srcc扫描区域的边界坐标,所述边界坐标包括对应于所述宽度范围变量的右端横坐标以及对应于所述高度范围变量的下端纵坐标。
[0200]
在本技术的一些实施例中,基于以上实施例,所述坐标确定模块被配置为:按照如下公式确定所述srcc扫描区域的边界坐标;
[0201]
srx=width-1-width_minus1_minus_scan_region_x;
[0202]
sry=height-1-height_minus1_minus_scan_region_y;
[0203]
其中,srx为所述右端横坐标,sry为所述下端纵坐标,width为所述宽度,height为所述高度,width_minus1_minus_scan_region_x为所述宽度范围变量,height_minus1_minus_scan_region_y为所述高度范围变量。
[0204]
在本技术的一些实施例中,基于以上各实施例,所述变量解码模块1220包括:二元符号解码单元,被配置为在所述编码块的码流中,按照索引号递增的顺序依次对所述索引号对应的二元符号进行解码得到所述二元符号的取值;位置变量赋值单元,被配置为若当前二元符号的取值为预设的第一数值,则以所述当前二元符号对应的当前索引号为位置变量赋值;范围变量赋值单元,被配置为根据所述位置变量的取值对与所述编码块的srcc扫描区域相关的范围变量进行赋值。
[0205]
在本技术的一些实施例中,基于以上各实施例,所述范围变量赋值单元包括:取值比较子单元,被配置为将所述位置变量的取值与预设的第二数值进行比较;第一赋值子单元,被配置为若所述位置变量的取值小于或等于所述第二数值,则以所述第二数值为所述范围变量赋值;数值确定子单元,被配置为若所述位置变量的取值大于所述第二数值,则根据所述位置变量的取值确定前缀值,并根据所述当前二元符号之后的其他二元符号的解码结果确定后缀值;第二赋值子单元,被配置为以所述前缀值和所述后缀值的和为所述范围变量赋值。
[0206]
在本技术的一些实施例中,基于以上各实施例,所述数值确定子单元还被配置为:根据第一映射向量对所述位置变量的取值进行映射处理,得到与所述位置变量的取值相对应的第一映射值;根据所述第一映射值确定前缀值。
[0207]
在本技术的一些实施例中,基于以上各实施例,所述数值确定子单元还被配置为:根据所述位置变量的取值确定待解码的其他二元符号的目标数量;对所述当前二元符号之后的目标数量个其他二元符号进行解码得到后缀值。
[0208]
在本技术的一些实施例中,基于以上各实施例,所述数值确定子单元还被配置为:按照旁路解码的方式对所述当前二元符号之后的目标数量个其他二元符号进行熵解码;以所述目标数量作为定长码的长度,按照len位定长码的方式对熵解码结果进行反二值化得到后缀值。
[0209]
在本技术的一些实施例中,基于以上各实施例,所述二元符号解码单元包括:增量赋值子单元,被配置为为所述二元符号对应的上下文索引增量赋值;模型确定子单元,被配置为根据赋值得到的上下文索引增量确定与所述二元符号相对应的上下文模型;取值解码子单元,被配置为基于所述上下文模型,通过cabac解码引擎对所述二元符号进行算数解码得到所述二元符号的取值。
[0210]
在本技术的一些实施例中,基于以上各实施例,所述增量赋值子单元被配置为:以所述二元符号对应的索引号为上下文索引增量赋值。
[0211]
在本技术的一些实施例中,基于以上各实施例,所述增量赋值子单元被配置为:根据所述编码块的通道信息为所述上下文索引增量的初始值赋值;根据所述编码块的通道信息以及所述编码块的尺寸确定位移量;根据所述初始值、所述索引号以及所述位移量确定对所述二元符号对应的上下文索引增量进行赋值。
[0212]
在本技术的一些实施例中,基于以上各实施例,所述增量赋值子单元还被配置为:若所述编码块为亮度块,则以预设的第三数值为所述上下文索引增量的初始值赋值;若所述编码块为色度块,则确定与所述编码块的尺寸相关的第四数值,并在所述第三数值的基础上增大所述第四数值后为所述上下文索引增量的初始值赋值。
[0213]
在本技术的一些实施例中,基于以上各实施例,所述增量赋值子单元还被配置为:
根据第二映射向量对所述编码块的尺寸进行映射处理,得到与所述编码块的尺寸相对应的第二映射值;以所述第二映射值作为与所述编码块的尺寸相关的第四数值。
[0214]
在本技术的一些实施例中,基于以上各实施例,所述增量赋值子单元还被配置为:若所述编码块为亮度块,按照公式shift_x=clip3(0,2,(logv 1)》》2)确定位移量,其中shift_x为位移量,v为所述编码块的尺寸;若所述编码块为色度块,按照公式shift_x=clip3(0,2,(t》》3))确定位移量,其中shift_x为位移量,t为所述编码块的尺寸。
[0215]
在本技术的一些实施例中,基于以上各实施例,所述变量解码模块1120包括:索引区间确定单元,被配置为确定多个连续的由整数组成的索引区间,所述索引区间包括区间下限和区间上限;前缀值解码单元,被配置为在所述编码块的码流中解码得到前缀值;目标区间确定单元,被配置为根据所述前缀值与索引阈值的数值关系确定所述范围变量的取值所在的目标索引区间,所述索引阈值为第一个索引区间的区间上限;补偿值确定单元,被配置为根据所述目标索引区间的区间下限确定补偿值;范围变量确定单元,被配置为根据所述补偿值确定所述范围变量的取值。
[0216]
在本技术的一些实施例中,基于以上各实施例,所述前缀值解码单元包括:截断值确定子单元,被配置为根据区间个数和最后一个索引区间的区间下限确定截断值;前缀值解码子单元,被配置为基于所述截断值,按照截断一元码的方式在所述编码块的码流中进行熵解码和反二值化得到前缀值。
[0217]
在本技术的一些实施例中,基于以上各实施例,所述前缀值解码单元被配置为:通过cabac解码方式对所述编码块的码流进行解码得到前缀值。
[0218]
在本技术的一些实施例中,基于以上各实施例,所述范围变量确定单元包括:第一变量赋值子单元,被配置为若所述目标索引区间为第一个索引区间,则以所述补偿值为所述范围变量赋值;第二变量赋值子单元,被配置为若所述目标索引区间是除所述第一个索引区间以外的其他索引区间,则在所述编码块的码流中解码得到后缀值,并以所述补偿值与所述后缀值的和为所述范围变量赋值。
[0219]
在本技术的一些实施例中,基于以上各实施例,所述第二变量赋值子单元还被配置为:根据所述目标索引区间的区间上限和区间下限在所述编码块的码流中确定待解码的二元符号的目标数量;在所述编码块的码流中对目标数量的二元符号进行熵解码;以所述目标数量作为定长码的长度,按照len位定长码的方式对熵解码结果进行反二值化得到后缀值。
[0220]
在本技术的一些实施例中,基于以上各实施例,所述第二变量赋值子单元还被配置为:从多个候选解码方法中选取目标解码方法;按照所述目标解码方法在所述编码块的码流中解码得到后缀值。
[0221]
在本技术的一些实施例中,基于以上各实施例,所述变量解码模块1220包括:解码方法选取单元,被配置为从多个候选解码方法中选取目标解码方法;目标方法解码单元,被配置为按照所述目标解码方法在所述编码块的码流中解码得到与srcc扫描区域相关的范围变量的取值。
[0222]
在本技术的一些实施例中,基于以上各实施例,所述多个候选解码方法包括如下解码方法中的至少一种:基于截断一元码的解码方法;基于一元码的解码方法;基于len位定长码的解码方法;基于k阶指数哥伦布码的解码方法。
[0223]
在本技术的一些实施例中,基于以上各实施例,所述视频解码装置1200应用于满足以下条件中的任意一个的编码块:变换跳过模式的编码块;图像级帧内预测变换跳过允许标志值为1的编码块;图像级帧间预测变换跳过允许标志值为1的编码块;图像级帧内预测变换跳过允许标志值和图像级帧间预测变换跳过允许标志值均为1的编码块;所有编码块。
[0224]
图13示出了本技术一个实施例中的视频编码装置的结构框图。如图13所示,视频编码装置1300主要可以包括:尺寸获取模块1310,被配置为获取视频图像帧的编码块的尺寸,所述编码块的尺寸包括所述编码块的宽度和高度;坐标获取模块1320,被配置为获取所述编码块的基于扫描区域的系数编码srcc扫描区域的边界坐标,所述边界坐标包括对应于所述宽度的右端横坐标以及对应于所述高度的下端纵坐标;变量编码模块1330,被配置为根据所述编码块的尺寸和所述边界坐标的差值确定与所述srcc扫描区域相关的范围变量的取值,并对所述范围变量进行编码,所述范围变量包括对应于所述宽度的宽度范围变量以及对应于所述高度的高度范围变量。
[0225]
本技术各实施例中提供的视频解码装置的具体细节已经在对应的方法实施例中进行了详细的描述,此处不再赘述。
[0226]
图14示意性地示出了用于实现本技术实施例的电子设备的计算机系统结构框图。
[0227]
需要说明的是,图14示出的电子设备的计算机系统1400仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
[0228]
如图14所示,计算机系统1400包括中央处理器1401(central processing unit,cpu),其可以根据存储在只读存储器1402(read-only memory,rom)中的程序或者从存储部分1408加载到随机访问存储器1403(random access memory,ram)中的程序而执行各种适当的动作和处理。在随机访问存储器1403中,还存储有系统操作所需的各种程序和数据。中央处理器1401、在只读存储器1402以及随机访问存储器1403通过总线1404彼此相连。输入/输出接口1405(input/output接口,即i/o接口)也连接至总线1404。
[0229]
以下部件连接至输入/输出接口1405:包括键盘、鼠标等的输入部分1406;包括诸如阴极射线管(cathode ray tube,crt)、液晶显示器(liquid crystal display,lcd)等以及扬声器等的输出部分1407;包括硬盘等的存储部分1408;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分1409。通信部分1409经由诸如因特网的网络执行通信处理。驱动器1410也根据需要连接至输入/输出接口1405。可拆卸介质1411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1410上,以便于从其上读出的计算机程序根据需要被安装入存储部分1408。
[0230]
特别地,根据本技术的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1409从网络上被下载和安装,和/或从可拆卸介质1411被安装。在该计算机程序被中央处理器1401执行时,执行本技术的系统中限定的各种功能。
[0231]
需要说明的是,本技术实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以
是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、闪存、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0232]
附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0233]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本技术的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0234]
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本技术实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本技术实施方式的方法。
[0235]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。
[0236]
应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求来限制。
再多了解一些

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

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

相关文献