可左右滑动选省市

高精度图像和视频编解码的系数缩放实用新型专利

更新时间:2024-09-08
高精度图像和视频编解码的系数缩放实用新型专利 专利申请类型:实用新型专利;
源自:北京高价值专利检索信息库;

专利名称:高精度图像和视频编解码的系数缩放

专利类型:实用新型专利

专利申请号:CN202080063176.5

专利申请(专利权)人:北京字节跳动网络技术有限公司,字节跳动有限公司
权利人地址:北京市石景山区实兴大街30号院3号楼2层B-0035房间

专利发明(设计)人:许继征,张凯,张莉,刘鸿彬,邓智玭,王悦

专利摘要:描述了高精度图像和视频编解码的系数缩放的方法、系统和设备。该视频处理的示例方法包括,根据规则执行在视频的当前块和视频的比特流表示之间的转换,其中,该规则规定该转换包括,在编码过程中,在包含在比特流表示中之前跳过对当前块残差系数的正向变换,或在解码过程中,在不应用逆变换的情况下从比特流表示中重建当前块的残差系数,并且其中,该规则进一步规定缩放因子被应用于残差系数,而与当前块的尺寸无关。

主权利要求:
1.一种处理视频数据的方法,包括:
执行视频的当前块和所述视频的比特流之间的转换,其中,所述转换包括:为所述视频的当前块执行缩放过程,以导出所述当前块的缩放变换系数;
根据变换跳过标志,确定对于所述当前块是否跳过所述缩放变换系数的变换过程;以及基于所述确定,根据规则生成所述当前块的中间残差样点,其中,所述中间残差样点用于推导为图片重建的最终残差样点,并且其中,所述规则规定在所述确定是对所述当前块跳过所述缩放变换系数的变换过程的情况下,所述缩放变换系数直接用作所述中间残差样点,其中,所述缩放变换系数表示为d[x][y],所述中间残差样点表示为res[x][y],并且其中,在所述变换跳过标志指示对所述当前块跳过所述缩放变换系数的变换过程的情况下,d[x][y]中的每个直接用作对应的res[x][y]。
2.根据权利要求1所述的方法,其中,所述规则还规定在所述变换跳过标志指示对所述当前块跳过所述缩放变换系数的变换过程的情况下,当生成所述中间残差样点时省略将位移操作应用于所述缩放变换系数。
3.根据权利要求1所述的方法,其中,所述规则还规定在所述变换跳过标志指示对所述当前块跳过所述缩放变换系数的变换过程的情况下,生成所述中间残差样点与所述当前块的尺寸无关。
4.根据权利要求1所述的方法,其中,所述当前块是亮度块。
5.根据权利要求1所述的方法,其中,所述规则还规定在所述确定是对所述当前块应用所述缩放变换系数的变换过程的情况下,通过对所述缩放变换系数执行所述变换过程来导出所述当前块的所述中间残差样点。
6.根据权利要求1所述的方法,其中,所述缩放过程包括缩放操作或逆缩放操作,并且所述变换过程包括变换操作或逆变换操作。
7.根据权利要求1所述的方法,其中,所述转换包括将所述当前块编码成所述比特流。
8.根据权利要求1所述的方法,其中,所述转换包括从所述比特流中解码所述当前块。
9.根据权利要求1所述的方法,其中,所述规则规定所述转换包括:在编码过程中,在包含在所述比特流中之前跳过对所述当前块的残差系数的正向变换,或在解码过程中,在不应用逆变换的情况下从所述比特流中重建所述当前块的残差系数,并且其中,所述规则进一步规定,缩放因子被应用于所述残差系数,而与所述当前块的尺寸无关。
10.根据权利要求9所述的方法,其中,所述缩放因子是预定义的常数。
11.根据权利要求10所述的方法,其中,所述缩放因子是一。
12.根据权利要求9所述的方法,其中,所述缩放因子是基于内部位深度ibd。
13.根据权利要求12所述的方法,其中,所述缩放因子是(15‑ibd)。
14.根据权利要求9所述的方法,其中,缩放变换系数的变换过程被禁用,并且其中,所述变换系数的缩放过程的输出用作生成中间残差样点的输入。
15.根据权利要求1所述的方法,其中,所述转换包括对所述当前块应用变换编解码模式;
其中,所述转换中使用的反量化过程或逆变换是基于规则配置的。
16.根据权利要求15所述的方法,其中,所述反量化过程包括K比特位移操作,其中,K是整数,并且其中,所述规则规定,K是基于在所述变换编解码模式中使用的变换核的尺寸。
17.根据权利要求16所述的方法,其中,K是基于所述变换核的高度。
18.根据权利要求15所述的方法,其中,所述逆变换包括K比特位移操作,其中,K是整数,并且其中,所述规则规定K是基于所述当前块的尺寸和/或所述变换编解码模式中使用的变换核的尺寸。
19.根据权利要求18所述的方法,其中,K是基于所述当前块的高度。
20.根据权利要求18所述的方法,其中,K是基于所述变换核的高度。
21.根据权利要求15所述的方法,其中,所述反量化过程包括K比特位移操作,其中,K是整数,并且其中,所述规则规定K是基于有上限的变换块的尺寸。
22.根据权利要求21所述的方法,其中,所述变换块的尺寸大于或等于32×32,其中K是基于16×16的块尺寸。
23.根据权利要求21所述的方法,其中,所述有上限的变换块的尺寸是基于所述反量化过程的量化参数QP。
24.根据权利要求21所述的方法,其中,所述有上限的变换块的尺寸是基于所述当前块的高度和宽度之间的比率。
25.根据权利要求1所述的方法,其中,所述转换包括无损转换;
其中,在没有位移操作的情况下应用所述转换中使用的变换、逆变换、量化过程和/或反量化过程。
26.根据权利要求25所述的方法,其中,所述确定是基于在序列,或图片,或子图片,或条带,或片组,或片,或图块,或编解码树单元行,或编解码树单元,或编解码单元,或预测单元,或变换单元,或子块级别中的指示。
27.根据权利要求25所述的方法,其中,由于所述转换是无损转换,对输入应用所述变换和后续应用所述逆变换产生与所述输入匹配的位精确输出。
28.根据权利要求25所述的方法,其中,由于所述转换是无损转换,用于转换所述当前块的残差系数值和所述当前块的编解码系数的缩放因子等于一。
29.根据权利要求25所述的方法,其中,对于在所述逆变换中使用的K比特位移操作,由于所述转换是无损转换,K被设置为零。
30.根据权利要求25所述的方法,其中,由于所述转换是无损转换,所述量化过程使用设置为预定值N的量化参数QP,其中N是正整数。
31.根据权利要求30所述的方法,其中,N=4。
32.根据权利要求25所述的方法,其中,对于在所述反量化过程中使用的K比特位移操作,由于所述转换是无损转换,K被设置为零。
33.根据权利要求9至32任一所述的方法,其中,执行所述转换包括从一个或多个视频区域生成所述比特流。
34.根据权利要求9至32任一所述的方法,其中,执行所述转换包括从所述比特流生成一个或多个视频区域。
35.一种处理视频数据的装置,包括处理器和其上具有指令的非暂时性存储器,其中,所述指令在由所述处理器执行时使得所述处理器:执行视频的当前块和所述视频的比特流之间的转换,其中,所述转换包括:为所述视频的当前块执行缩放过程,以导出所述当前块的缩放变换系数;
根据变换跳过标志,确定对于所述当前块是否跳过所述缩放变换系数的变换过程;以及基于所述确定,根据规则生成所述当前块的中间残差样点,其中,所述中间残差样点用于推导为图片重建的最终残差样点,并且其中,所述规则规定在所述确定是对所述当前块跳过所述缩放变换系数的变换过程的情况下,所述缩放变换系数直接用作所述中间残差样点,其中,所述缩放变换系数表示为d[x][y],所述中间残差样点表示为res[x][y],并且其中,在所述变换跳过标志指示对所述当前块跳过所述缩放变换系数的变换过程的情况下,d[x][y]中的每个直接用作对应的res[x][y]。
36.根据权利要求35所述的装置,其中,所述规则还规定在所述变换跳过标志指示对所述当前块跳过所述缩放变换系数的变换过程的情况下,当生成所述中间残差样点时省略将位移操作应用于所述缩放变换系数。
37.根据权利要求35所述的装置,其中,所述规则还规定在所述变换跳过标志指示对所述当前块跳过所述缩放变换系数的变换过程的情况下,生成所述中间残差样点与所述当前块的尺寸无关。
38.根据权利要求35所述的装置,其中,所述当前块是亮度块。
39.根据权利要求35所述的装置,其中,所述规则还规定在所述确定是对所述当前块应用所述缩放变换系数的变换过程的情况下,通过对所述缩放变换系数执行所述变换过程来导出所述当前块的所述中间残差样点。
40.根据权利要求35所述的装置,其中,所述缩放过程包括缩放操作或逆缩放操作,并且所述变换过程包括变换操作或逆变换操作。
41.一种存储指令的非暂时性计算机可读存储介质,所述指令使得处理器:执行视频的当前块和所述视频的比特流之间的转换,其中,所述转换包括:为所述视频的当前块执行缩放过程,以导出所述当前块的缩放变换系数;
根据变换跳过标志,确定对于所述当前块是否跳过所述缩放变换系数的变换过程;以及基于所述确定,根据规则生成所述当前块的中间残差样点,其中,所述中间残差样点用于推导为图片重建的最终残差样点,并且其中,所述规则规定在所述确定是对所述当前块跳过所述缩放变换系数的变换过程的情况下,所述缩放变换系数直接用作所述中间残差样点,其中,所述缩放变换系数表示为d[x][y],所述中间残差样点表示为res[x][y],并且其中,在所述变换跳过标志指示对所述当前块跳过所述缩放变换系数的变换过程的情况下,d[x][y]中的每个直接用作对应的res[x][y]。
42.根据权利要求41所述的非暂时性计算机可读存储介质,其中,所述规则还规定在所述变换跳过标志指示对所述当前块跳过所述缩放变换系数的变换过程的情况下,当生成所述中间残差样点时省略将位移操作应用于所述缩放变换系数。
43.一种存储视频的比特流的非暂时性计算机可读记录介质,所述比特流由视频处理装置执行的方法生成,其中,所述方法包括:基于所述视频的当前块生成所述视频的比特流,其中,所述生成包括:为所述视频的当前块执行缩放过程,以导出所述当前块的缩放变换系数;
根据变换跳过标志,确定对于所述当前块是否跳过所述缩放变换系数的变换过程;以及基于所述确定,根据规则生成所述当前块的中间残差样点,其中,所述中间残差样点用于推导为图片重建的最终残差样点,并且其中,所述规则规定在所述确定是对所述当前块跳过所述缩放变换系数的变换过程的情况下,所述缩放变换系数直接用作所述中间残差样点,其中,所述缩放变换系数表示为d[x][y],所述中间残差样点表示为res[x][y],并且其中,在所述变换跳过标志指示对所述当前块跳过所述缩放变换系数的变换过程的情况下,d[x][y]中的每个直接用作对应的res[x][y]。
44.根据权利要求43所述的非暂时性计算机可读记录介质,其中,所述规则还规定在所述变换跳过标志指示对所述当前块跳过所述缩放变换系数的变换过程的情况下,当生成所述中间残差样点时省略将位移操作应用于所述缩放变换系数。
45.一种存储视频的比特流的方法,包括:
基于所述视频的当前块生成所述视频的比特流,以及
将所述比特流存储到非暂时性计算机可读存储介质中,
其中,所述生成包括:
为所述视频的当前块执行缩放过程,以导出所述当前块的缩放变换系数;
根据变换跳过标志,确定对于所述当前块是否跳过所述缩放变换系数的变换过程;以及基于所述确定,根据规则生成所述当前块的中间残差样点,其中,所述中间残差样点用于推导为图片重建的最终残差样点,并且其中,所述规则规定在所述确定是对所述当前块跳过所述缩放变换系数的变换过程的情况下,所述缩放变换系数直接用作所述中间残差样点,其中,所述缩放变换系数表示为d[x][y],所述中间残差样点表示为res[x][y],并且其中,在所述变换跳过标志指示对所述当前块跳过所述缩放变换系数的变换过程的情况下,d[x][y]中的每个直接用作对应的res[x][y]。
46.一种视频系统中的装置,包括处理器和带有指令的非暂时性存储器,其中,所述处理器执行时的所述指令,使所述处理器实施权利要求9至34任一所述的方法。
47.一种计算机可读介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现权利要求9至34任一所述的方法。 说明书 : 高精度图像和视频编解码的系数缩放[0001] 相关申请的交叉引用[0002] 本申请是于2020年9月9日提交的国际专利申请号PCT/CN2020/114227进入中国国家阶段的申请,其要求于2019年9月9日提交的国际专利申请No.PCT/CN2019/104874的优先权。以上申请的全部公开内容通过引用而并入,作为本申请的公开的一部分。技术领域[0003] 本专利文档涉及视频编解码和解码。背景技术[0004] 尽管视频压缩有所进步,数字视频在互联网和其他数字通信网络上仍占最大的带宽使用量。随着能够接收和显示视频的连接用户设备的数量增加,预计数字视频使用所需的带宽将继续增长。发明内容[0005] 本公开描述了装置、系统和方法,其涉及数字视频编解码,以及尤其是,高精度图像和视频编解码的系数缩放。[0006] 在一个示例方面中,公开了一种视频处理方法。该方法包括,根据规则执行在视频的当前块和视频的比特流表示之间的转换,其中,该规则指定,该转换包括,在编码过程中,在包含在比特流表示中之前跳过对当前块残差系数的正向变换,或在解码过程中,在不应用逆变换的情况下从比特流表示中重建当前块的残差系数,并且其中,该规则进一步指定,缩放因子被应用于残差系数,而与当前块的尺寸无关。[0007] 在另一个示例方面中,公开了一种视频处理方法。该方法包括,确定视频的当前块和视频的比特流表示之间的转换包括对当前块应用变换编解码模式;并且基于该确定来执行转换,其中,该转换中使用的反量化过程或逆变换是基于规则配置的。[0008] 在又一个示例方面中,公开了一种视频处理方法。该方法包括,视频的当前块和视频的比特流表示之间的转换包括无损转换;并且基于该确定来执行转换,其中在转换中使用的变换、逆变换、量化过程和/或反量化过程在没有位移操作的情况下被应用。[0009] 在又一个方面中,上述方法体现为处理器可执行代码的形式并存储在计算机可读程序介质中。[0010] 在又一个方面中,公开了配置为或可操作为执行上述方法的装置。该装置可以包括被编程为实施该方法的处理器。[0011] 在又一个方面中,视频解码器设备可以实施如本文档的方法。[0012] 附图、说明书和权利要求中更详细描述了本公开技术的以上和其他方面和特征。附图说明[0013] 图1示出了低频不可分离变换(Low‑FrequencyNon‑SeparableTransform,LFNST)过程的示例。[0014] 图2示出了SBT位置、类型和变换类型的示例。[0015] 图3是所提出的依赖性量化方法中使用的两个标量量化器的图示。[0016] 图4示出了所提出的依赖性量化的状态变换和量化器选择的示例。[0017] 图5是其中可以实施公开技术的视频处理系统的示例的框图。[0018] 图6是视频处理的示例硬件平台的的框图。[0019] 图7‑9是视频处理的示例方法的流程图。具体实施方式[0020] 所公开技术的实施例可以应用于现有视频编解码标准(例如,HEVC、H.265)和未来标准以改进压缩性能。在本文档中使用章节标题以提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实施方式)限制于仅相应的部分。[0021] 1概要[0022] 本文档涉及图像和视频编解码技术。具体来说,涉及图像和视频编解码中的变换、量化、反量化和逆变换。可以应用于现有的视频编解码标准,如HEVC,或即将最终确定的标准(通用视频标准)。也可以应用于未来的视频编解码标准或视频编解码器。[0023] 2背景[0024] 视频编解码标准主要是通过众所周知的ITU‑T和ISO/IEC标准发展而来的。ITU‑T制定了H.261和H.263,ISO/IEC制定了MPEG‑1和MPEG‑4视觉,这两个组织联合制定了H.262/MPEG‑2视频标准、H.264/MPEG‑4高级视频编解码(AVC)标准和H.265/HEVC标准。从H.262开始,视频编解码标准是基于混合视频编解码结构,其中使用了时间预测加变换编解码。为了探索HEVC之外的未来视频编解码技术,VCEG和MPEG于2015年联合成立了联合视频探索团队(JVET)。此后,JVET采用了许多新方法,并将其放入名为联合探索模型(JEM)的参考软件中。2018年4月,VCEG(Q6/16)和ISO/IECJTC1SC29/WG11(MPEG)成立了联合视频专家团队(JVET),致力于VVC标准的研究,目标是比HEVC降低50%的比特率。[0025] VVC草案的最新版本,即通用视频编解码(草案6)可在以下网址找到:[0026] http://phenix.it‑sudparis.eu/jvet/doc_end_user/documents/15_Gothenburg/wg11/JVET‑O2001‑v14.zip[0027] VVC的最新参考软件,名为VTM,可在以下网址找到:[0028] https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/‑/tags/VTM‑6.0rc1[0029] 2.1变换和量化[0030] 2.1.1利用高频置零的较大块尺寸变换[0031] 在VTM5中,启用了较大块尺寸变换,其中尺寸高达64×64,主要用于较高分辨率的视频,例如1080p和4K序列。对于尺寸(宽度或高度,或宽度和高度两者)等于64的变换块,高频变换系数被置零,从而仅保留低频系数。例如,对于一个M×N的变换块,M为块宽,N为块高,当M等于64时,只保留左边32列的变换系数。同样,当N等于64时,只保留前32行的变换系数。当变换跳过(transformskip)模式被用于一个较大的块时,整个块将被使用而不将任何值置零。[0032] 2.1.2核心变换的多重变换选择(MultipleTransformSelection,MTS)[0033] 除了已在HEVC中使用的DCT‑II之外,多重变换选择(MTS)方案还用于对帧内和帧间编解码块进行残差编解码。它采用从DCT8/DST7选择的多个变换。新引入的变换矩阵为DST‑VII和DCT‑VIII。表1示出了所选DST/DCT的基函数。[0034] 表1:N点输入的DCT‑II/VIII和DSTVII的变换基函数[0035][0036] 为了保持变换矩阵的正交性,将变换矩阵的量化得比HEVC中的变换矩阵更准确。为了使变换系数的中间值保持在16位范围内,在水平和垂直变换后,所有系数都有10位。[0037] 为了控制MTS方案,在SPS级别分别为帧内和帧间指定了单独的启用标志。当MTS在SPS上启用时,会信令通知CU级别标志以指示是否应用MTS。在这里,MTS仅适用于亮度。当满足以下条件时,会信令通知MTSCU级别标志。[0038] ‑宽度和高度均小于或等于32[0039] ‑CBF标志等于1[0040] 如果MTSCU标志为0,则在两个方向上都应用DCT2。但是,如果MTSCU标志等于1,则信令通知另外两个标志分别表示水平方向和垂直方向的变换类型。变换和信令映射表如表2所示。通过消除帧内模式和块形状依赖性,使用ISP和隐式MTS的统一变换选择。如果当前块是ISP模式,或者如果当前块是帧内块并且启动了帧内和帧间显式MTS,则对于水平和垂直变换核,只采用DST7。在变换矩阵精度方面,采用8位主变换核。因此,HEVC中使用的所有变换核都保持不变,包括4点DCT‑2和DST‑7、8点、16点和32点DCT‑2。此外,包括64点DCT‑2、4点DCT‑8、8点、16点、32点DST‑7和DCT‑8的其他变换核,使用8位主变换核。[0041] 表2:变换和信令映射表[0042][0043] 为了降低大尺寸DST‑7和DCT‑8的复杂度,对于尺寸(宽度或高度,或宽度和高度)等于32的DST‑7和DCT‑8块,高频变换系数被置零。仅保留16×16低频区域内的系数。[0044] 与HEVC中相同,块的残差可以使用变换跳过模式进行编解码。为了避免语法编解码的冗余,当CU级别MTS_CU_flag不等于0时,不信令通知变换跳过标志。变换跳过的块尺寸限制与JEM4中的MTS相同,这表明当块宽度和高度两者都等于或小于32时,变换跳过适用于CU。[0045] 2.1.3变换系数置零[0046] 当一个变换单元较大时,它可能需要一个较大的变换核,这比小变换的复杂性要高得多。因此,在目前的VVC设计中,当一个变换单元足够大时,会将某部分变换系数设置为0,以减少所需变换的尺寸。[0047] 具体来说,在目前的VVC草案中,定义了两个变量来反映哪部分系数将被保留:[0048] nonZeroW=Min(nTbW,(trTypeHor>0)?16:32)[0049] nonZeroH=Min(nTbH,(trTypeVer>0)?16:32)[0050] 因此,在2‑D正向变换之后,只有x=0..nonZeroW‑1和y=0..nonZeroH‑1可以包含非零系数,所有其他系数都设置为0。[0051] 我们将nonZeroW和nonZeroH表示为在宽度和高度上的实际变换尺寸,这可以与变换单元的宽度(nTbW)和高度(nTbH)不同。[0052] 2.1.4低频不可分离变换(LFNST)[0053] 在VTM5中,LFNST(low‑frequencynon‑separabletransform),也称为缩减二次变换,应用于正向主变换和量化(在编解码器处)以及反量化和逆向主变换(在解码器侧)之间,如图1所示。在LFNST中,根据块尺寸应用4×4不可分离变换或8×8不可分离变换。例如,4×4LFNST适用于小块(即min(宽度、高度)<8),而8×8LFNST适用于较大块(即min(宽度、高度)>4)。[0054] 图1示出了低频不可分离变换(LFNST)过程的示例。[0055] 下面以输入为例描述LFNST中使用的不可分离变换的应用。要应用4×4LFNST,首先将4×4输入块X表示为向量[0056][0057][0058] 不可分离变换的计算公式为 其中 表示变换系数向量,T为16×16变换矩阵。随后使用该块的扫描顺序(水平、垂直或对角线)将16×1系数向量 重新组织为4×4块。具有较小索引的系数将与较小扫描索引一起放置在4×4系数块中。[0059] 2.1.4.1缩减的不可分离变换[0060] LFNST(低频不可分离变换)是基于直接矩阵乘法的方法来应用不可分离变换,因此LFNST在单次传输(pass)中实施而无需多次迭代。然而,需要缩减不可分离的变换矩阵维度以最小化计算复杂度和存储变换系数的存储器空间。因此,LFNST中使用了缩减的不可分离变换(或RST)方法。缩减的不可分离变换的主要思想是将一个N(对于8×8NSST,N通常等于64)维向量映射到一个不同空间的R维向量,其中N/R(R[0061][0062] 其中,该变换的R行是N维空间的R基。RT的逆变换矩阵是其正变换的转置。对于8×8LFNST,在VTM5中应用了4的缩减因子,并将传统的8×8不可分离变换矩阵尺寸的64×64直连矩阵缩减为16×48直连矩阵。因此,在解码器端使用48×16逆RST矩阵以在8×8左上角区域生成核心(主要)变换系数。当应用16×48矩阵而不是具有相同变换集配置的16×64矩阵时,每个都从左上角8×8块中的三个4×4块(右下角4×4块除外)中获取48个输入数据。在降维的帮助下,存储所有LFNST矩阵的存储器使用量从10KB减少到8KB,且具有合理的性能下降。当所有TU由4×4TU或8×8TU组成时,为了进一步降低在乘法计数方面的最坏情况复杂性出现,顶部8×48和8×16矩阵分别应用于8×8TU和4×4TU。对于大于8×8TU的块,不会出现最坏情况以便8×8LFNST(即16×48矩阵)应用于左上角的8×8区域。对于8×4TU或4×8TU,4×4LFNST(即16×16矩阵)仅应用于左上角的4×4区域。对于4×N或N×4TU(N≥16),4×4LFNST分别应用于两个相邻的左上角4×4块。通过上述简化,每个样点的乘法的最坏情况次数变为8。[0063] 2.1.4.2LFNST变换选择[0064] LFNST中总共使用了4个变换集,每个变换集有2个不可分离的变换矩阵(内核)。如表3所示,从帧内预测模式到变换集的映射是预先定义的。对于每个变换集,所选择的不可分离二次变换候选由显式信令通知的LFNST索引进一步指定。在变换系数之后,该索引在比特流中每个帧内CU信令通知一次。[0065] 表3变换选择表[0066] IntraPredMode Tr.setindexIntraPredMode<0 10<=IntraPredMode<=1 02<=IntraPredMode<=12 113<=IntraPredMode<=23 224<=IntraPredMode<=44 345<=IntraPredMode<=55 256<=IntraPredMode 1[0067] 2.1.4.3LFNST索引信令通知以及与其他工具的交互[0068] 正向8×8LFNST使用16×48矩阵,以便其仅在给定的8×8区域内的左上角4×4区域中生成非零系数。换句话说,如果应用LFNST,那么除左上角4×4区域之外的8×8区域仅生成零系数。因此,当在除左上角4×4以外的8×8块区域内检测到任何非零元素时,不会对LFNST索引进行编解码,因为这意味着LFNST没有被应用。在这种情况下,推断LFNST索引为零。如果LFNST索引等于0,则不应用LFNST。否则,应用LFNST。此外,LFNST索引是上下文编解码的,但不依赖于帧内预测模式,并且只有第一个bin是上下文编解码的。[0069] 当满足以下两个条件时,有条件地应用逆LFNST:[0070] a.块尺寸大于或等于给定阈值(W>=4&&H>=4)[0071] b.变换跳过模式标志等于零[0072] 如果变换系数块的宽度(W)和高度(H)均大于4,则将8×8LFNST应用于变换系数块的左上角8×8区域。否则,将4×4LFNST应用于变换系数块的左上角min(8,W)×min(8,H)区域。[0073] 此外,LFNST适用于帧内条带和帧间条带两者中的帧内CU,并适用于亮度和色度两者。如果启用了双树(dualtree),亮度和色度的LFNST索引将分别被信令通知。对于帧间条带(双树被禁用),单个LFNST索引被信令通知并用于亮度和色度。[0074] 选择ISP模式时,LFNST被禁用,并且不会信令通知RST索引信号,因为即使将RST应用于每个可行的分区块,性能提升也非常有限。此外,禁用ISP预测残差的RST可以降低编解码复杂性。选择MIP模式时,LFNST也被禁用,并且不会信令通知索引。[0075] 2.1.5子块变换(Sub‑blockTransform,SBT)[0076] 在VTM中,为帧间预测的CU引入了子块变换。在这种变换模式下,CU中只对残差块的子部分进行编解码。当帧间预测CU中cu_cbf等于1时,cu_sbt_flag可以被信令通知以指示是整个残差块被编解码还是残差块的子部分被编解码。在前一种情况下,进一步解析帧间MTS信息以确定CU的变换类型。在后一种情况下,残差块的一部分用推断的自适应变换进行编解码,而残差块的其他部分被置零。[0077] 当SBT用于帧间编解码的CU时,SBT类型和SBT位置信息在比特流中信令通知。有两种SBT类型和两种SBT位置,如图2所示。对于SBT‑V(或SBT‑H),TU宽度(或高度)可以等于CU宽度(或高度)的一半或CU宽度(或高度)的1/4,产生2:2分割或1:3/3:1分割。2:2的分割类似于二叉树(BT)的分割,而1:3/3:1的分割类似于非对称二叉树(ABT)的分割。在ABT分割中,只有小区域包含非零残差。如果CU的一个维度在亮度样点中为8,则不允许沿该维度进行1:3/3:1分割。一个CU最多有8种SBT模式。[0078] 位置相关的变换核选择应用于SBT‑V和SBT‑H中的亮度变换块(色度TB通常使用DCT‑2)。SBT‑H和SBT‑V的两个位置与不同的核心变换相关联。更具体地,图2中指定了每个SBT位置的水平和垂直变换。例如,SBT‑V位置0的水平和垂直变换分别为DCT‑8和DST‑7。当残差TU的一侧大于32时,两个维度的变换均设置为DCT‑2。因此,子块变换共同指定残块的TU平铺(tiling)、cbf、水平和垂直核心变换类型。[0079] 变量maxSbtSize在SPS中信令通知以指定SBT可以应用的最大CU的尺寸。在VTM5中,对于HD和4K序列,编解码器将maxSbtSize设置为64;对于其他较小分辨率的序列,maxSbtSize设置为32。[0080] SBT不适用于以组合帧内‑帧间模式或TPM模式编解码的CU。[0081] 2.1.6量化[0082] 在VTM5中,MaximumQP从51扩展到63,初始QP的信令也相应地改变。当slice_qp_delta的非零值被编解码时,SliceQpY的初始值在条带(slice)部分被修改。具体来说,init_qp_minus26的值被修改为在(‑26+QpBdOffsetY)到+37的范围内。在VTM5中,当变换块的尺寸不是4的幂时,变换系数是在对QP或QPlevelScale表进行修改的同时被处理的,而不是通过乘以181/256(或181/128),以补偿变换过程的隐式缩放。[0083] 此外,相同的HEVC标量量化与称为相关标量量化的新概念一同被使用。相关标量量化指的是一种方法,其中变换系数的可容许重构值的集合取决于在重构顺序中位于当前变换系数级别之前的变换系数级别的值。这种方法的主要效果是,与HEVC中使用的传统独立标量量化相比,可容许的重建向量在N维向量空间中压缩得更密集(N表示变换块中的变换系数的数量)。这意味着,对于每N维单位体积的给定平均数量的可接受重建向量,输入向量和最接近的重建向量之间的平均失真减少了。相关标量量化的方法是通过以下方式实现的:(a)定义两个具有不同重建级别的标量量化器和(b)定义在两个标量量化器之间切换的过程。[0084] 图3为所提出的相关量化方法中使用的两个标量量化器的图示。[0085] 使用的两个标量量化器,用Q0和Q1表示,如图3所示。可用重建级别的位置由量化步长Δ唯一指定。所使用的标量量化器(Q0或Q1)未在比特流中显式地信令通知。相反,用于当前变换系数的量化器由在编解码/重建顺序中位于当前变换系数之前的变换系数级别的奇偶校验确定。[0086] 图4示出了所提出的相关量化的示例状态变换和量化器选择。[0087] 如图4所示,两个标量量化器(Q0和Q1)之间的切换是通过一个具有四种状态的状态机来实现的。状态可以取四个不同的值:0、1、2、3。其由编解码/重建顺序中当前变换系数之前的变换系数级别的奇偶校验唯一确定。在变换块的反量化开始时,状态设置为等于0。变换系数以扫描顺序重建(即,以相同的顺序对它们进行熵解码)。当前变换系数被重构后,状态更新如图4所示,其中k表示变换系数级别的值。[0088] 它还支持信令通知默认和用户定义的缩放矩阵。DEFAULT模式缩放矩阵都是展平(flat)的,所有TB尺寸的元素都等于16。IBC和帧内编解码模式当前共享相同的缩放矩阵。因此,对于USER_DEFINED矩阵的情况,MatrixType和MatrixType_DC的数量更新如下:[0089] ·MatrixType:30=2(2表示帧内&IBC/帧间)×3(Y/Cb/Cr分量)×5(方形TB尺寸:亮度从4×4至64×64,色度从2×2至32×32)[0090] ·MatrixType_DC:14=2(2表示帧内&IBC/帧间×1表示Y分量)×3(TB尺寸:16×16,32×32,64×64)+4(2表示帧内&IBC/帧间×2表示Cb/Cr分量)×2(TB尺寸:16×16,32×32)[0091] DC值针对以下缩放矩阵分开编解码:16×16、32×32和64×64。对于尺寸小于8×8的TB,一个缩放矩阵中的所有元素都会被信令通知。如果TB的尺寸大于或等于8×8,则只有一个8×8缩放矩阵中的64个元素作为基本缩放矩阵被信令通知。为了获得尺寸大于8×8的方阵,将8×8基本缩放矩阵上采样(通过元素复制)到相应的方阵尺寸(即16×16,32×32,64×64)。当应用64点变换的高频系数置零时,缩放矩阵的相应的高频也被置零。也就是说,如果TB的宽度或高度大于或等于32,则仅保留系数的左半部分或上半部分,其余系数被赋值为零。此外,64×64缩放矩阵的元素数量也从8×8减少为三个4×4子矩阵,因为右下角的4×4元素从不被使用。[0092] 2.1.7色度残差的联合编解码[0093] VTM5支持色度残差联合编解码的模式。当该模式被激活时,对于同一变换单元中的Cb和Cr块,一个单一的联合残差块被信令通知。然后,Cb残差被设置为等于被信令通知的残差,而Cr残差是通过对被信令通知的残差的符号取反来设置的。换句话说,在解码器处,为了重建色度块,将被信令通知的联合残差添加到Cb预测块并从Cr预测块中减去。联合残差使用常规色度残差编解码过程进行编解码。如果Cb和Cr编解码块标志(cbf)都为1,则表示是否使用联合残差模式的标志在比特流中用标志信令通知。[0094] 在PPS和条带头中,为联合色度残差编解码模式信令通知色度QP偏移值,该色度QP偏移值与常规色度残差编解码模式信令通知的通常色度QP偏移值分开。这些色度QP偏移值用于为使用联合色度残差编解码模式编解码的块导出色度QP值。在VTM5编解码器中,对于联合色度残差编解码模式,色度QP偏移设置为‑1,+1表示常规色度残差编解码模式。[0095] 在编解码器端,从Cb残差中减去Cr残差的平均值作为变换和量化过程的输入:[0096] resJoint=(resCb–resCr)/2[0097] 如果LMCS模式的色度缩放处于活动状态,则色度缩放以与在常规色度残差编解码模式中所用的相同方式应用于联合残差。即,对编解码的联合残差信号进行缩放。[0098] 2.2VVC草案6中的反量化和逆变换设计[0099] 2.2.1反量化[0100] 8.7.3变换系数的缩放过程[0101] 该过程的输入为:[0102] –亮度位置(xTbY,yTbY),指定当前亮度变换块的左上角样点相对于当前图片的左上角亮度样点,[0103] –变量nTbW,指定变换块宽度,[0104] –变量nTbH,指定变换块高度,[0105] –变量cIdx,指定当前块的颜色分量,[0106] –变量bitDepth,指定当前颜色分量的位深度。[0107] 该过程的输出是具有元素d[x][y]的缩放变换系数的(nTbW)×(nTbH)数组d。[0108] 量化参数qP推导如下:[0109] –如果cIdx等于0且transform_skip_flag[xTbY][yTbY]等于0,则以下适用:[0110] qP=Qp′Y(8‑950)[0111] –否则,如果cIdx等于0(且transform_skip_flag[xTbY][yTbY]等于1),则以下适用:[0112] qP=Max(QpPrimeTsMin,Qp′Y)(8‑951)[0113] –否则,如果TuCResMode[xTbY][yTbY]等于2,则以下适用:[0114] qP=Qp′CbCr(8‑952)[0115] –否则,如果cIdx等于1,则以下适用:[0116] qP=Qp′Cb(8‑953)[0117] –否则(cIdx等于2),以下适用:[0118] qP=Qp′Cr(8‑954)[0119] 变量rectNonTsFlag的推导如下:[0120] rectNonTsFlag=(((Log2(nTbW)+Log2(nTbH))&1)==1&&(8‑955)[0121] transform_skip_flag[xTbY][yTbY]==0)[0122] 变量bdShift,rectNorm和bdooffset的推导如下:[0123] bdShift=bitDepth+((rectNonTsFlag?1:0)+(8‑956)[0124] (Log2(nTbW)+Log2(nTbH))/2)‑5+dep_quant_enabled_flag[0125] bdOffset=(1<>1(8‑957)[0126] 列表levelScale[][]被指定为levelScale[j][k]={{40,45,51,57,64,72},{57,64,72,80,90,102}},其中,j=0..1,k=0..5。[0127] 设置(nTbW)×(nTbH)数组dz等于(nTbW)×(nTbH)数组TransCoeffLevel[xTbY][yTbY][cIdx]。[0128] 对于x=0..nTbW–1,y=0..nTbH‑1的缩放变换系数d[x][y]的推导,以下适用:[0129] –中间缩放因子m[x][y]推导如下:[0130] –如果下列条件中有一个或多个为真,则设置m[x][y]等于16:[0131] –sps_scaling_list_enabled_flag等于0。[0132] –transform_skip_flag[xTbY][yTbY]等于1。[0133] –否则,以下情况适用:[0134] m[x][y]=ScalingFactor[Log2(nTbW)][Log2(nTbH)][matrixId][x][y],[0135] 其中matrixId如表7‑5所示(8958)[0136] –缩放因子ls[x][y]的推导过程如下:[0137] –如果dep_quant_enabled_flag等于1,以下适用:[0138] ls[x][y]=(m[x][y]*levelScale[rectNonTsFlag][(qP+1)%6])<<((qP+1)/6)(8‑959)[0139] –否则(dep_quant_enabled_flag等于0),以下适用:[0140] ls[x][y]=(m[x][y]*levelScale[rectNonTsFlag][qP%6])<<(qP[0141] /6)(8‑960)[0142] –当BdpcmFlag[xTbY][yYbY]等于1时,修改dz[x][y]如下:[0143] –如果BdpcmDir[xTbY][yYbY]等于0且x大于0,以下适用:[0144] dz[x][y]=Clip3(CoeffMin,CoeffMax,dz[x‑1][y]+dz[x][y])(8‑961)[0145] –否则,如果BdpcmDir[xTbY][yYbY]等于1且y大于0,以下适用:[0146] dz[x][y]=Clip3(CoeffMin,CoeffMax,dz[x][y‑1]+dz[x][y])(8‑962)[0147] –dnc[x][y]推导如下:[0148] dnc[x][y]=(dz[x][y]*ls[x][y]+bdOffset)>>bdShift(8‑963)[0149] –缩放变换系数d[x][y]推导如下:[0150] d[x][y]=Clip3(CoeffMin,CoeffMax,dnc[x][y])(8‑964)[0151] 2.2.2逆变换[0152] 8.7.5缩放变换系数的变换过程[0153] 8.7.5.1概要[0154] 该过程的输入为:[0155] –亮度位置(xTbY,yTbY),指定当前亮度变换块的左上角样点相对于当前图片的左上角亮度样点,[0156] –变量nTbW,指定变换块宽度,[0157] –变量nTbH,指定变换块高度,[0158] –变量cIdx,指定当前块的颜色分量,[0159] –(nTbW)×(nTbH)数组d[x][y]的缩放变换系数,其中缩放变换系数的x=0..nTbW–1,y=0..nTbH‑1。[0160] 该过程的输出是残差样点的(nTbW)×(nTbH)数组r[x][y],其中x=0..nTbW‑1,y=0..nTbH‑1。[0161] 当lfnst_idx[xTbY][yTbY]不等于0且nTbW和nTbH均大于等于4时,以下适用:[0162] –变量predModeIntra、nLfnstOutSize、log2LfnstSize、nLfnstSize和nonZeroSize推导如下:[0163] predModeIntra=(cIdx==0)?IntraPredModeY[xTbY][yTbY]:IntraPredModeC[xTbY][yTbY](8‑965)[0164] nLfnstOutSize=(nTbW>=8&&nTbH>=8)?48:16(8‑966)[0165] log2LfnstSize=(nTbW>=8&&nTbH>=8)?3:2(8‑967)[0166] nLfnstSize=1<[0167] nonZeroSize=((nTbW==4&&nTbH==4)||(nTbW==8&&nTbH==8))?8:16(8‑969)[0168] –当intra_mip_flag[xTbComp][yTbComp]等于1且cIdx等于0时,predModeIntra设置为等于INTRA_PLANAR。[0169] –当predModeIntra等于INTRA_LT_CCLM、INTRA_L_CCLM或INTRA_T_CCLM时,predModeIntra被设置为等于IntraPredModeY[xTbY+nTbW/2][yTbY+nTbH/2]。[0170] –调用条款8.4.5.2.6中规定的广角帧内预测模式映射过程,其中,将predModeIntra、nTbW、nTbH、和cIdx作为输入,以及将修改后的predModeIntra作为输出。[0171] –x=0..nonZeroSize‑1的列表u[x]的值推导如下:[0172] xC=DiagScanOrder[2][2][x][0](8‑970)[0173] yC=DiagScanOrder[2][2][x][1](8‑971)[0174] u[x]=d[xC][yC](8‑972)[0175] –调用条款8.7.4.2中规定的一维低频不可分离变换过程,将缩放变换系数的输入长度nonZeroSize、设置为等于nLfnstOutSize的变换输出长度nTrS,x=0..nonZeroSize–1的缩放非零变换系数u[x]的列表、指定LFNST集选择的帧内预测模式predModeIntra以及所选LFNST集中变换选择的LFNST索引lfnst_idx[xTbY][yTbY]作为输入,将x=0..nLfnstOutSize‑1的列表v[x]作为输出。[0176] x=0..nLfnstSize‑1,y=0..nLfnstSize‑1的数组d[x][y]推导如下:[0177] –如果predModeIntra小于或等于34,则以下适用:[0178] d[x][y]=(y<4)?v[x+(y<[0179] ((x<4)?v[32+x+((y‑4)<<2)]:d[x][y])[0180] –否则,以下适用:[0181] d[x][y]=(x<4)?v[y+(x<[0182] ((y<4)?v[32+y+((x‑4)<<2)]:d[x][y])[0183] 变量implicitMtsEnabled的推导过程如下:[0184] –如果sps_mts_enabled_flag等于1,且以下条件之一为真,则implicitMtsEnabled设置为1:[0185] –IntraSubPartitionsSplitType不等于ISP_NO_SPLIT[0186] –cu_sbt_flag等于1,Max(nTbW,nTbH)小于等于32[0187] –sps_explicit_mts_intra_enabled_flag等于0,且CuPredMode[0][xTbY][yTbY]等于MODE_INTRA,且lfnst_idx[x0][y0]等于0,且intra_mip_flag[x0][y0]等于0[0188] –否则,implicitMtsEnabled设置为等于0。[0189] 指定水平变换核的变量trTypeHor和指定垂直变换核的变量trTypeVer推导如下:[0190] –如果cIdx大于0,则将trTypeHor和trTypeVer设置为等于0。[0191] –否则,如果implicitMtsEnabled等于1,则以下适用:[0192] –如果IntraSubPartitionsSplitType不等于ISP_NO_SPLIT或sps_explicit_mts_intra_enabled_flag等于0且CuPredMode[0][xTbY][yTbY]等于MODE_INTRA,则trTypeHor和trTypeVer推导如下:[0193] trTypeHor=(nTbW>=4&&nTbW<=16)?1:0(8‑975)[0194] trTypeVer=(nTbH>=4&&nTbH<=16)?1:0(8‑976)[0195] –否则(cu_sbt_flag等于1),根据cu_sbt_horizontal_flag和cu_sbt_pos_flag在表8‑15中指定trTypeHor和trTypeVer。[0196] –否则,根据tu_mts_idx[xTbY][yTbY]在表8‑14中指定trTypeHor和trTypeVer。[0197] 变量nonZeroW和nonZeroH的推导过程如下:[0198] –如果lfnst_idx[xTbY][yTbY]不等于0且nTbW大于等于4且nTbH大于等于4,则以下适用:[0199] nonZeroW=(nTbW==4||nTbH==4)?4:8(8‑977)[0200] nonZeroH=(nTbW==4||nTbH==4)?4:8(8‑978)[0201] –否则,以下适用:[0202] nonZeroW=Min(nTbW,(trTypeHor>0)?16:32)(8‑979)[0203] nonZeroH=Min(nTbH,(trTypeVer>0)?16:32)(8‑980)[0204] 残差样点的(nTbW)×(nTbH)数组r推导如下:[0205] 1.当nTbH大于1时,x=0..nonZeroW‑1,y=0..nonZeroH‑1的缩放变换系数d[x][y]的每一(垂直)列被变换为x=0..nonZeroW‑1,y=0..nTbH‑1的e[x][y],通过对每一列x=0..nonZeroW‑1调用条款8.7.4.4中规定的一维变换过程,将变换块的高度nTbH、缩放变换系数的非零高度nonZeroH,y=0..nonZeroH‑1的列表d[x][y]和设置为等于trTypeVer的变换类型变量trType作为输入,并且将y=0..nTbH‑1的列表e[x][y]作为输出。[0206] 2.当nTbH和nTbW两者均大于1时,x=0..nonZeroW‑1,y=0..nTbH‑1的中间样点值g[x][y],推导如下:[0207] g[x][y]=Clip3(CoeffMin,CoeffMax,(e[x][y]+64)>>7)(8‑981)[0208] 3.当nTbW大于1时,其中x=0..nonZeroW‑1,y=0..nonZeroH‑1的结果数组g[x][y]的每一行(水平)被变换为x=0..nonZeroW‑1,y=0..nTbH‑1的r[x][y],通过为每一行y=0..nTbH‑1调用条款8.7.4.4中规定的一维变换过程,将变换块的宽度nTbW,结果数组g[x][y]的非零宽度nonZeroW,x=0..nonZeroW‑1的列表g[x][y]和设置为等于trTypeHor的变换类型变量trType作为输入,并且将x=0..nonZeroW‑1的列表r[x][y]作为输出。[0209] 4.当nTbW等于1时,对于x=0..nonZeroW‑1,y=0..nonZeroH‑1,r[x][y]被设置为等于e[x][y]。[0210] 表8‑14取决于tu_mts_idx[x][y]的trTypeHor和trTypeVer规格[0211]tu_mts_idx[x0][y0] 0 1 2 3 4trTypeHor 0 1 2 1 2trTypeVer 0 1 1 2 2[0212] 表8‑15取决于cu_sbt_horizontal_flag和cu_sbt_pos_flag的trTypeHor和trTypeVer规格[0213]cu_sbt_horizontal_flag cu_sbt_pos_flag trTypeHor trTypeVer0 0 2 10 1 1 11 0 1 21 1 1 1[0214] 8.7.4.2低频不可分离变换过程[0215] 该过程的输入为:[0216] –变量nonZeroSize,指定变换输入长度,[0217] –变量nTrS,指定变换输出长度,[0218] –缩放的非零变换系数x[j],其中j=0..nonZeroSize‑1,[0219] –变量predModeIntra,指定LFNST集选择的帧内预测模式,[0220] –变量lfnstIdx,指定在所选LFNST集中变换选择的LFNST索引。[0221] 该过程的输出是经过变换的样点y[i],其中i=0..nTrS‑1。[0222] 条款8.7.4.3中规定的变换矩阵推导过程将变换输出长度nTrS、LFNST集选择的帧内预测模式predModeIntra、所选LFNST集中变换选择的LFNST索引lfnstIdx作为输入,并且将(nTrS)x(nonZeroSize)LFNST矩阵lowFreqTransMatrix作为输出。[0223] 其中i=0..nTrS‑1的变换样点列表y[i]推导过程如下:[0224][0225] 8.7.4.3低频不可分离变换矩阵推导过程[0226] 该过程的输入为:[0227] –变量nTrS,指定变换输出长度,[0228] –变量predModeIntra,指定LFNST集选择的帧内预测模式,[0229] –变量lfnstIdx,指定在所选LFNST集中变换选择的LFNST索引。[0230] 该过程的输出是变换矩阵lowFreqTransMatrix。[0231] 变量lfnstTrSetIdx根据predModeIntra在表8‑16中指定。[0232] 表8‑16lfnstTrSetIdx的指定[0233]predModeIntra lfnstTrSetIdxpredModeIntra<0 10<=predModeIntra<=1 02<=predModeIntra<=12 113<=predModeIntra<=23 224<=predModeIntra<=44 345<=predModeIntra<=55 256<=predModeIntra<=80 1[0234] 基于nTrS、lfnstTrSetIdx和lfnstIdx,推导出变换矩阵lowFreqTransMatrix,如下所示:[0235] –如果nTrS等于16,lfnstTrSetIdx等于0,lfnstIdx等于1,则以下适用:[0236][0237] –否则,如果nTrS等于16,lfnstTrSetIdx等于0,lfnstIdx等于2,则以下适用:[0238][0239][0240] –否则,如果nTrS等于16,lfnstTrSetIdx等于1,lfnstIdx等于1,则以下适用:[0241][0242] –否则,如果nTrS等于16,lfnstTrSetIdx等于1,lfnstIdx等于2,则以下适用:[0243][0244][0245] –否则,如果nTrS等于16,lfnstTrSetIdx等于2,lfnstIdx等于1,则以下适用:[0246][0247] –否则,如果nTrS等于16,lfnstTrSetIdx等于2,lfnstIdx等于2,则以下适用:[0248][0249] –否则,如果nTrS等于16,lfnstTrSetIdx等于3,lfnstIdx等于1,则以下适用:[0250][0251][0252] –否则,如果nTrS等于16,lfnstTrSetIdx等于3,lfnstIdx等于2,则以下适用:[0253][0254] –否则,如果nTrS等于48,lfnstTrSetIdx等于0,lfnstIdx等于1,则以下适用:[0255] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol0to15[m][n],其中,m=0..15,n=0..15[0256][0257][0258] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol16to31[m‑16][n],其中,m=16..31,n=0..15[0259][0260] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol32to47[m‑32][n],其中,m=32..47,n=0..15[0261][0262][0263] –否则,如果nTrS等于48,lfnstTrSetIdx等于0,lfnstIdx等于2,则以下适用:[0264] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol0to15[m][n],其中,m=0..15,n=0..15[0265][0266] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol16to31[m‑16][n],其中,m=16..31,n=0..15[0267][0268] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol32to47[m‑32][n],其中,m=32..47,n=0..15[0269][0270] –否则,如果nTrS等于48,lfnstTrSetIdx等于1,lfnstIdx等于1,则以下适用:[0271] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol0to15[m][n],其中,m=0..15,n=0..15[0272][0273] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol16to31[m‑16][n],其中,m=16..31,n=0..15[0274][0275] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol32to47[m‑32][n],其中,m=32..47,n=0..15[0276][0277] –否则,如果nTrS等于48,lfnstTrSetIdx等于1,lfnstIdx等于2,则以下适用:[0278] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol0to15[m][n],其中,m=0..15,n=0..15[0279][0280][0281] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol16to31[m‑16][n],其中,m=16..31,n=0..15[0282][0283] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol32to47[m‑32][n],其中,m=32..47,n=0..15[0284][0285][0286] –否则,如果nTrS等于48,lfnstTrSetIdx等于2,lfnstIdx等于1,则以下适用:[0287] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol0to15[m][n],其中,m=0..15,n=0..15[0288][0289] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol16to31[m‑16][n],其中,m=16..31,n=0..15[0290][0291][0292] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol32to47[m‑32][n],其中,m=32..47,n=0..15[0293][0294] –否则,如果nTrS等于48,lfnstTrSetIdx等于2,lfnstIdx等于2,则以下适用:[0295] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol0to15[m][n],其中,m=0..15,n=0..15[0296][0297][0298] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol16to31[m‑16][n],其中,m=16..31,n=0..15[0299][0300] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol32to47[m‑32][n],其中,m=32..47,n=0..15[0301][0302] –否则,如果nTrS等于48,lfnstTrSetIdx等于3,lfnstIdx等于1,则以下适用:[0303] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol0to15[m][n]其中m=0..15,n=0..15[0304][0305] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol16to31[m‑16][n]其中m=16..31,n=0..15[0306][0307] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol32to47[m‑32][n]其中m=32..47,n=0..15[0308][0309][0310] –否则,如果nTrS等于48,lfnstTrSetIdx等于3,lfnstIdx等于2,则以下适用:[0311] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol0to15[m][n]其中m=0..15,n=0..15[0312][0313] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol16to31[m‑16][n]其中m=16..31,n=0..15[0314][0315][0316] lowFreqTransMatrix[m][n]=lowFreqTransMatrixCol32to47[m‑32][n]其中m=32..47,n=0..15[0317][0318] 8.7.4.4变换过程[0319] 该过程的输入为:[0320] –变量nTbS,指定变换样点的水平样点尺寸,[0321] –变量nonZeroS,指定非零缩放变换系数的水平样点尺寸,[0322] –缩放变换系数x[j]列表,其中j=0..nonZeroS‑1,[0323] –变换核类型变量trType。[0324] 该过程的输出是经过变换的样点y[i],其中i=0..nTbS‑1。[0325] 调用条款8.7.4.5中规定的变换矩阵推导过程,其中将变换尺寸nTbS和变换核类型trType作为输入,并且将变换矩阵transMatrix作为输出。[0326] 根据trType的值,以下适用:其中i=0..nTbS‑1的变换样点y[i]的列表推导如下:[0327] –如果trType等于0,则应用以下变换矩阵乘法:[0328] 其中i=0..nTbS‑1(8‑983)[0329] –否则(trType等于1或trType等于2),以下变换矩阵乘法适用:[0330] 其中i=0..nTbS‑1(8‑984)[0331] 8.7.4.5变换矩阵推导过程[0332] 该过程的输入为:[0333] –变量nTbS,指定缩放变换系数的水平样点尺寸,[0334] –变换核类型变量trType。[0335] 该过程的输出是变换矩阵transMatrix。基于trType和nTbs,变换矩阵transMatrix推导如下:[0336] 如果trType等于0,则应用以下内容:[0337] transMatrix[m][n]=transMatrixCol0to15[m][n],其中,m=0..15,n=0..63(8‑985)[0338][0339][0340] transMatrix[m][n]=transMatrixCol16to31[m‑16][n],其中,m=16..31,n=0..63(8‑987)[0341][0342][0343][0344] transMatrix[m][n]=(n&1?‑1:1)*transMatrixCol16to31[47‑m][n](8‑989)[0345] 其中,m=32..47,n=0..63[0346] transMatrix[m][n]=(n&1?‑1:1)*transMatrixCol0to15[63‑m][n](8‑990)[0347] 其中,m=48..63,n=0..63[0348] –否则,如果trType=1,nTbs=4,则以下适用:[0349][0350] –否则,如果trType=1,nTbs=8,则以下适用:[0351][0352] –否则,如果trType=1,nTbs=16,则以下适用:[0353][0354][0355] –否则,如果trType=1,nTbs=32,则以下适用:[0356] transMatrix[m][n]=transMatrixCol0to15[m][n],其中,m=0..15,n=0..15(8‑994)[0357][0358] transMatrix[m][n]=transMatrixCol16to31[m‑16][n],其中,m=16..31,n=0..15(8‑996)[0359][0360] –否则,如果trType=2,nTbs=4,则以下适用:[0361][0362] –否则,如果trType=2,nTbs=8,则以下适用:[0363][0364] –否则,如果trType=2,nTbs=16,则以下适用:[0365][0366] –否则,如果trType=2,nTbs=32,则以下适用:[0367] transMatrix[m][n]=transMatrixCol0to15[m][n],其中,m=0..15,n=0..15(8‑1001)[0368][0369][0370] transMatrix[m][n]=transMatrixCol16to31[m‑16][n],其中,m=16..31,n=0..15(8‑1003)[0371][0372] 3一些公开的技术方案解决的技术问题[0373] 1.目前,VVC设计使用变换块的宽度和高度来确定变换和逆变换过程中的位移数,这可能会降低处理精度。[0374] 2.目前,VVC设计使用变换块的宽度和高度来确定量化和反量化过程中的位移数,这可能会降低处理精度。[0375] 3.目前,VVC量化设计可能会导致某些块尺寸的量化残差超出16位动态范围,由于其后会被剪切到16位,从而降低了编解码效率。[0376] 4.目前,向左移位应用于变换跳过以将能量与变换块对齐,这可能是不必要的。[0377] 4实施例和技术列表[0378] 下面的列表应被视为解释一般概念的示例。不应狭隘地解释这些项目。此外,这些项目可以以任何方式组合。[0379] 在以下描述中,变换跳过块可以表示不应用变换(非恒等变换)或仅应用恒等变换的块,例如带有变换跳过模式的块;带有BDPCM模式的块,带有变换和量化旁路模式的块,带有调色板模式的块。[0380] 1.对于变换跳过块,用于将解码系数转换为残差的缩放因子(例如,tsShift)可以与块尺寸无关。[0381] a.在一个示例中,缩放因子是一个常数[0382] i.在一个示例中,缩放因子可以设置为1。[0383] b.在一个示例中,缩放因子可以取决于内部位深度[0384] i.在一个示例中,缩放因子可以设置为(15‑internal_bit_depth)[0385] c.在一个示例中,不调用缩放变换系数的变换过程,且变换系数缩放过程的输出是生成中间残差样点的输入,即没有位移。[0386] 2.对于变换跳过块,变换系数的缩放过程可以与块尺寸无关。[0387] a.在一个示例中,变换系数的缩放过程中的位移可以与块尺寸无关。[0388] 3.对于以BDPCM模式编解码的块,用于将解码系数转换为残差的缩放因子(例如,tsShift)可以与块尺寸无关。[0389] a.在一个示例中,缩放因子是一个常数[0390] i.在一个示例中,缩放因子可以设置为1。[0391] b.在一个示例中,缩放因子可以取决于内部位深度[0392] i.在一个示例中,缩放因子可以设置为(15‑internal_bit_depth)[0393] c.在一个示例中,不调用缩放变换系数的变换过程,并且变换系数缩放过程的输出是生成中间残差样点的输入,即没有位移。[0394] 4.对于以BDPCM模式编解码的块,变换系数的缩放过程可以与块尺寸无关。[0395] a.在一个示例中,变换系数的缩放过程中的位移可以与块尺寸无关[0396] 5.建议反量化因子(即levelScale)可以与块是否以变换跳过模式编解码无关。[0397] 6.建议反量化因子(即levelScale)与块是否以BDPCM模式编解码无关。[0398] 7.建议在变换系数的缩放过程中,矩形块(其宽度与高度不同)的位移与块是否以变换跳过模式编解码无关。[0399] 8.建议在变换系数的缩放过程中,矩形块(其宽度与高度不同)的位移与块是否以BDPCM模式编解码无关。[0400] 9.建议变换系数缩放过程中的移位(例如,bdShift)可以取决于块是否以BDPCM模式编解码。[0401] a.在一个示例中,变换移位可以等于变换跳过块的变换移位。[0402] 10.建议块的解码系数到残差的转换中的变换移位(例如,tsShift)可以取决于块是否以BDPCM模式编解码。[0403] a.在一个示例中,变换移位可以等于变换跳过块的变换移位。[0404] 11.建议当块在BDPCM模式下编解码时,可以不允许使用缩放列表(即量化矩阵)。[0405] a.在一个示例中,BDPCM块的缩放列表中的所有条目可以是常数。[0406] i.在一个示例中,常数的值为16。[0407] 12.对于变换跳过块,可以限制反量化后的解码系数应该在TsMin到TsMax的范围内。[0408] a.在一个示例中,该范围可能不同于变换系数的范围,即从CoeffMin到CoeffMax。[0409] b.在一个示例中,TsMin可以是‑(1<[0410] c.在一个示例中,TsMax可以是[(1<[0411] d.在一个示例中,TsMin可以是‑(1<[0412] e.在一个示例中,TsMax可以是[(1<[0413] f.在一个示例中,该范围可以取决于用于变换跳过的最低允许Qp,即QpPrimeTsMin。[0414] i.在一个示例中,TsMin可以是‑(1<<(bitDepth‑(qpprimetsm‑4)/6))。[0415] ii.在一个示例中,TsMax可以是[(1<<(bitDepth‑(qpprimetsm‑4)/6))‑1]。[0416] iii.在一个示例中,TsMin可以是‑(1<[0417] iv.在一个示例中,TsMax可以是[(1<[0418] 13.对于BDPCM块,可以限制反量化后的解码系数应该在BdpcmMin到BdpcmMax的范围内。[0419] a.在一个示例中,该范围可能不同于变换系数的范围,即从CoeffMin到CoeffMax。[0420] b.在一个示例中,该范围可以等于变换跳过块的范围。[0421] c.在一个示例中,BdpcmMin可以是‑(1<<(bitDepth+1)),其中bitDepth是应用变换跳过的颜色分量的位深度。[0422] d.在一个示例中,BdpcmMax可以是[(1<<(bitDepth+1))‑1],其中bitDepth是应用变换跳过的颜色分量的位深度。[0423] e.或者,此外,该范围可以取决于是否绕过了变换和量化两者(例如,cu_transquant_bypass_flag/transquant_bypass_enabled_flag等于1)或对当前块应用无损编解码。[0424] i.在一个示例中,当绕过了变换和量化两者(例如,cu_transquant_bypass_flag/transquant_bypass_enabled_flag等于1)或对当前块应用无损编解码时,BdpcmMin和BdpcmMax可以分别设置为‑(1<<(bitDepth+1))和[(1<<(bitDepth+1))‑1]。[0425] ii.在一个示例中,当未绕过变换和量化两者(例如,cu_transquant_bypass_flag/transquant_bypass_enabled_flag等于0)或无损编解码未应用于当前块时,BdpcmMin和BdpcmMax可以分别设置为‑(1<<(bitDepth))[(1<<(bitDepth))‑1]。[0426] 14.对于变换块,反量化的位移数可以取决于实际变换尺寸(例如,不考虑置零区域的尺寸)。[0427] a.在一个示例中,反量化的位移数可以取决于实际变换的高度,即2.1.3中描述的nonZeroH。[0428] 15.对于变换块,逆变换的位移数可以取决于变换块尺寸和实际变换尺寸。[0429] a.在一个示例中,用于逆变换的位移数可以取决于变换块尺寸。[0430] b.在一个示例中,逆变换的位移数可以取决于变换块的高度。[0431] c.在一个示例中,逆变换的位移数可以取决于实际变换的高度。[0432] d.在一个示例中,逆变换的位移数可以取决于实际变换尺寸。[0433] e.在一个示例中,对于变换块尺寸与实际变换尺寸不同的块,用于逆变换的位移位次数可以不同于那些变换块尺寸等于实际变换尺寸的块。[0434] f.在一个示例中,对于变换块高度与实际变换高度不同的块,用于逆变换的位移位数可以不同于变换块高度等于实际变换高度的那些块。[0435] 16.对于变换块,反量化的位移数可以取决于有上限的(capped)变换块尺寸。[0436] a.在一个示例中,当变换块尺寸等于或大于32×32时,反量化的位移数可以依据16×16块尺寸。[0437] b.在一个示例中,是否和/或如何应用有上限的变换块尺寸可以取决于量化参数。[0438] c.在一个示例中,是否和/或如何应用有上限的变换块尺寸可以取决于块宽度是否是块高度的偶数倍。[0439] d.在一个示例中,是否和/或如何应用有上限的变换块尺寸可以取决于块高度是否是块宽度的偶数倍。[0440] 17.如果使用无损编解码,则可以在没有位移的情况下应用变换和/或量化过程。[0441] a.在一个示例中,可以将序列/图片/子图片/条带/片组/片/图块(brick)/CTU行/CTU/CU/PU/TU/子块级别标志添加到比特流中以指示当前视频单元是否通过无损编解码进行编解码。[0442] i.在一个示例中,如果使用无损编解码,则当前视频单元的相应无损标志可以设置为等于1。[0443] b.在一个示例中,如果使用无损编解码,则可以应用可逆的变换使得编码帧与原始帧位精确。[0444] i.在一个示例中,无损编解码块的变换尺寸可以固定为M×N(例如M=N=4)。[0445] ii.在一个示例中,无损编解码块的变换核可以是沃尔什哈达玛(WalshHadamard)变换。[0446] iii.在一个示例中,变换跳过可以用于无损编解码块。[0447] c.在一个示例中,如果对当前视频单元使用无损编解码,则在解码系数到残差的转换中使用的缩放因子(例如,tsShift)可以被设置为1(例如,没有缩放)。[0448] d.在一个示例中,如果对当前视频单元使用无损编解码,则逆变换的位移数可以等于0(例如,没有位移)。[0449] e.在一个示例中,如果对当前视频单元使用无损编解码,则量化参数可以被设置为N(例如N=4,例如,没有量化)。[0450] f.在一个示例中,如果对当前视频单元使用无损编解码,则反量化的位移数可以等于0(例如,没有位移)。[0451] 5实施例[0452] 以下更改(以粗体斜体标记且删除包含在括号{{}}中)是基于JVET‑O2001‑vE。[0453] 5.1实施例#1[0454] 本实施例反映了使变换跳过块的缩放因子独立于块尺寸的变化。[0455] 8.7.2缩放和变换过程[0456] 该过程的输入为:[0457] –亮度位置(xTbY,yTbY),指定当前亮度变换块的左上角样点相对于当前图片的左上角亮度样点,[0458] –变量cIdx,指定当前块的颜色分量,[0459] –变量nTbW,指定变换块的宽度,[0460] –变量nTbH,指定变换块的高度。[0461] 该过程的输出是(nTbW)×(nTbH)残差样点数组resSamples[x][y],其中,x=0..nTbW‑1,y=0..nTbH‑1。[0462] 变量bitDepth、bdShift和tsShift的推导如下:[0463] bitDepth=(cIdx==0)?BitDepthY:BitDepthC(8‑942)[0464] bdShift=Max(20‑bitDepth,0)(8‑943)[0465] tsShift=5+((Log2(nTbW)+Log2(nTbH))/2)(8‑944)[0466] 变量codedCIdx的推导如下:[0467] –如果cIdx等于0或TuCResMode[xTbY][yTbY]等于0,则将codedCIdx设置为等于cIdx。[0468] –否则,如果TuCResMode[xTbY][yTbY]等于1或2,则将codedCIdx设置为等于1。[0469] –否则,codedCIdx设置为等于2。[0470] 变量cSign设置为等于(1‑2*slice_joint_cbcr_sign_flag)。[0471] 残差样点resSamples的(nTbW)×(nTbH)数组推导如下:[0472] 1.调用条款8.7.3中规定的变换系数的缩放过程,其中将变换块位置(xTbY,yTbY)、变换块宽度nTbW和变换块高度nTbH、被设置为等于codedCIdx的颜色分量变量cIdx、当前颜色分量的位深度bitDepth作为输入,并且将缩放变换系数d的(nTbW)×(nTbH)数组作为输出。[0473] 2.残差样点r的(nTbW)×(nTbH)数组推导如下:[0474] –如果transform_skip_flag[xTbY][yTbY]等于1且cIdx等于0,则x=0..nTbW‑1,y=0..nTbH‑1的残差样点数组值r[x][y]推导如下:[0475][0476] –否则(transform_skip_flag[xTbY][yTbY]等于0或cIdx不等于0),条款8.7.4.1中规定的缩放变换系数的变换过程是将变换块位置(xTbY,yTbY)、变换块宽度nTbW和变换块高度nTbH、颜色分量变量cIdx以及缩放变换系数d的(nTbW)×(nTbH)数组作为输入,并且将残差样点r的(nTbW)×(nTbH)数组作为输出。[0477] 8.7.3变换系数的缩放过程[0478] …[0479] 变量bdShift、rectNorm和bdOffset推导如下:[0480][0481] bdShift=bitDepth+((rectNonTsFlag?1:0)+(8‑956)[0482] (Log2(nTbW)+Log2(nTbH))/2)‑5+dep_quant_enabled_flag[0483] –bdOffset=(1<>1(8‑957)[0484] 5.2实施例#2[0485] 本实施例反映了基于实际变换尺寸而不是变换块尺寸进行缩放过程的变化。[0486] 8.7.3变换系数的缩放过程[0487] 该过程的输入为:[0488] –亮度位置(xTbY,yTbY),指定当前亮度变换块的左上角样点相对于当前图片的左上角亮度样点,[0489] –变量nTbW,指定变换块宽度,[0490] –变量nTbH,指定变换块高度,[0491] –变量cIdx,指定当前块的颜色分量,[0492] –变量bitDepth,指定当前颜色分量的位深度。[0493] 该过程的输出是具有元素d[x][y]的缩放变换系数的(nTbW)×(nTbH)数组d。[0494][0495][0496] 量化参数qP推导如下:[0497] –如果cIdx等于0且transform_skip_flag[xTbY][yTbY]等于0,则以下适用:[0498] qP=Qp′Y(8‑950)[0499] –否则,如果cIdx等于0(且transform_skip_flag[xTbY][yTbY]等于1),则以下适用:[0500] qP=Max(QpPrimeTsMin,Qp′Y)(8‑951)[0501] –否则,如果TuCResMode[xTbY][yTbY]等于2,则以下适用:[0502] qP=Qp′CbCr(8‑952)[0503] –否则,如果cIdx等于1,则以下适用:[0504] qP=Qp′Cb(8‑953)[0505] –否则(cIdx等于2),以下适用:[0506] qP=Qp′Cr(8‑954)[0507] 变量rectNonTsFlag的推导如下:[0508] rectNonTsFlag=(((Log2(nTbW)+Log2(nTbH))&1)==1&&(8‑955)[0509] transform_skip_flag[xTbY][yTbY]==0)[0510] 变量bdShift,rectNorm和bdooffset的推导如下:[0511][0512] 列表levelScale[][]被指定为levelScale[j][k]={{40,45,51,57,64,72},{57,64,72,80,90,102}},其中,j=0..1,k=0..5。[0513] 设置(nTbW)×(nTbH)数组dz等于(nTbW)×(nTbH)数组TransCoeffLevel[xTbY][yTbY][cIdx]。[0514] 对于x=0..nTbW–1,y=0..nTbH‑1的缩放变换系数d[x][y]的推导,以下适用:[0515] –中间缩放因子m[x][y]推导如下:[0516] –如果下列条件中有一个或多个为真,则设置m[x][y]等于16:[0517] –sps_scaling_list_enabled_flag等于0。[0518] –transform_skip_flag[xTbY][yTbY]等于1。[0519] –否则,以下情况适用:[0520] m[x][y]=ScalingFactor[Log2(nTbW)][Log2(nTbH)][matrixId][x][y],[0521] 其中matrixId如表7‑5所示(8958)[0522] –缩放因子ls[x][y]的推导过程如下:[0523] –如果dep_quant_enabled_flag等于1,以下适用:[0524] ls[x][y]=(m[x][y]*levelScale[rectNonTsFlag][(qP+1)%6])[0525] <<((qP+1)/6)(8‑959)[0526] –否则(dep_quant_enabled_flag等于0),以下适用:[0527] ls[x][y]=(m[x][y]*levelScale[rectNonTsFlag][qP%6])<<(qP/6)(8‑960)[0528] –当BdpcmFlag[xTbY][yYbY]等于1时,修改dz[x][y]如下:[0529] –如果BdpcmDir[xTbY][yYbY]等于0且x大于0,以下适用:[0530] dz[x][y]=Clip3(CoeffMin,CoeffMax,dz[x‑1][y]+dz[x][y])(8‑961)[0531] –否则,如果BdpcmDir[xTbY][yYbY]等于1且y大于0,以下适用:[0532] dz[x][y]=Clip3(CoeffMin,CoeffMax,dz[x][y‑1]+dz[x][y])(8‑962)[0533] –dnc[x][y]推导如下:[0534] dnc[x][y]=(dz[x][y]*ls[x][y]+bdOffset)>>bdShift(8‑963)[0535] –缩放变换系数d[x][y]推导如下:[0536] d[x][y]=Clip3(CoeffMin,CoeffMax,dnc[x][y])(8‑964)[0537] 5.3实施例#3[0538] 本实施例反映了使逆变换移位依赖于实际变换尺寸和变换块尺寸的变化。[0539] 8.7.4缩放变换系数的变换过程[0540] 8.7.4.1概要[0541] 该过程的输入为:[0542] –亮度位置(xTbY,yTbY),指定当前亮度变换块的左上角样点相对于当前图片的左上角亮度样点,[0543] –变量nTbW,指定变换块宽度,[0544] –变量nTbH,指定变换块高度,[0545] –变量cIdx,指定当前块的颜色分量,[0546] –变量bitDepth,指定当前颜色分量的位深度。[0547] –缩放变换系数的(nTbW)×(nTbH)数组d[x][y],其中x=0..nTbW‑1,y=0..nTbH‑1。[0548] 该过程的输出是残差样点的(nTbW)×(nTbH)数组r[x][y],其中x=0..nTbW‑1,y=0..nTbH‑1。[0549] 当lfnst_idx[xTbY][yTbY]不等于0且nTbW和nTbH均大于等于4时,以下适用:[0550] –变量predModeIntra、nLfnstOutSize、log2LfnstSize、nLfnstSize和nonZeroSize推导如下:[0551] predModeIntra=(cIdx==0)?IntraPredModeY[xTbY][yTbY]:[0552] IntraPredModeC[xTbY][yTbY](8‑965)[0553] nLfnstOutSize=(nTbW>=8&&nTbH>=8)?48:16(8‑966)[0554] log2LfnstSize=(nTbW>=8&&nTbH>=8)?3:2(8‑967)[0555] nLfnstSize=1<[0556] nonZeroSize=((nTbW==4&&nTbH==4)||(nTbW==8&&nTbH==8))?8:16(8‑969)[0557] –当intra_mip_flag[xTbComp][yTbComp]等于1且cIdx等于0时,predModeIntra设置为等于INTRA_PLANAR。[0558] –当predModeIntra等于INTRA_LT_CCLM、INTRA_L_CCLM或INTRA_T_CCLM时,predModeIntra被设置为等于IntraPredModeY[xTbY+nTbW/2][yTbY+nTbH/2]。[0559] –8.4.5.2.6中指定的广角帧内预测模式映射过程将predModeIntra、nTbW、nTbH、cIdx作为输入,并且将修改后的predModeIntra作为输出。[0560] –x=0..nonZeroSize‑1的列表u[x]的值推导如下:[0561] xC=DiagScanOrder[2][2][x][0](8‑970)[0562] yC=DiagScanOrder[2][2][x][1](8‑971)[0563] u[x]=d[xC][yC](8‑972)[0564] –调用条款8.7.4.2中规定的一维低频不可分离变换过程,将缩放变换系数的输入长度nonZeroSize、设置为等于nLfnstOutSize的变换输出长度nTrS,x=0..nonZeroSize–1的缩放非零变换系数u[x]的列表、指定LFNST集选择的帧内预测模式predModeIntra以及所选LFNST集中变换选择的LFNST索引lfnst_idx[xTbY][yTbY]作为输入,将x=0..nLfnstOutSize‑1的列表v[x]作为输出。[0565] –x=0..nLfnstSize‑1,y=0..nLfnstSize‑1的数组d[x][y]推导如下:[0566] –如果predModeIntra小于或等于34,则以下适用:[0567] d[x][y]=(y<4)?v[x+(y<[0568] ((x<4)?v[32+x+((y‑4)<<2)]:d[x][y])[0569] –否则,以下适用:[0570] d[x][y]=(x<4)?v[y+(x<[0571] ((y<4)?v[32+y+((x‑4)<<2)]:d[x][y])[0572] 变量implicitMtsEnabled的推导过程如下:[0573] –如果sps_mts_enabled_flag等于1,且以下条件之一为真,则implicitMtsEnabled设置为1:[0574] –IntraSubPartitionsSplitType不等于ISP_NO_SPLIT[0575] –cu_sbt_flag等于1,Max(nTbW,nTbH)小于等于32[0576] –sps_explicit_mts_intra_enabled_flag等于0,且CuPredMode[0][xTbY][yTbY]等于MODE_INTRA,且lfnst_idx[x0][y0]等于0,且intra_mip_flag[x0][y0]等于0[0577] –否则,implicitMtsEnabled设置为等于0。[0578] 指定水平变换核的变量trTypeHor和指定垂直变换核的变量trTypeVer推导如下:[0579] –如果cIdx大于0,则将trTypeHor和trTypeVer设置为等于0。[0580] –否则,如果implicitMtsEnabled等于1,则以下适用:[0581] –如果IntraSubPartitionsSplitType不等于ISP_NO_SPLIT或sps_explicit_mts_intra_enabled_flag等于0且CuPredMode[0][xTbY][yTbY]等于MODE_INTRA,则trTypeHor和trTypeVer推导如下:[0582] trTypeHor=(nTbW>=4&&nTbW<=16)?1:0(8‑975)[0583] trTypeVer=(nTbH>=4&&nTbH<=16)?1:0(8‑976)[0584] –否则(cu_sbt_flag等于1),根据cu_sbt_horizontal_flag和cu_sbt_pos_flag在表8‑15中指定trTypeHor和trTypeVer。[0585] –否则,根据tu_mts_idx[xTbY][yTbY]在表8‑14中指定trTypeHor和trTypeVer。[0586] 变量nonZeroW和nonZeroH的推导过程如下:[0587] –如果lfnst_idx[xTbY][yTbY]不等于0且nTbW大于等于4且nTbH大于等于4,则以下适用:[0588] nonZeroW=(nTbW==4||nTbH==4)?4:8(8‑977)[0589] nonZeroH=(nTbW==4||nTbH==4)?4:8(8‑978)[0590] –否则,以下适用:[0591] nonZeroW=Min(nTbW,(trTypeHor>0)?16:32)(8‑979)[0592] nonZeroH=Min(nTbH,(trTypeVer>0)?16:32)(8‑980)[0593] 残差样点的(nTbW)×(nTbH)数组r推导如下:[0594] 5.当nTbH大于1时,x=0..nonZeroW‑1,y=0..nonZeroH‑1的缩放变换系数d[x][y]的每一(垂直)列被变换为x=0..nonZeroW‑1,y=0..nTbH‑1的e[x][y],通过对每一列x=0..nonZeroW‑1调用条款8.7.4.4中规定的一维变换过程,将变换块的高度nTbH、缩放变换系数的非零高度nonZeroH,y=0..nonZeroH‑1的列表d[x][y]和设置为等于trTypeVer的变换类型变量trType作为输入,并且将y=0..nTbH‑1的列表e[x][y]作为输出。[0595] 6.当nTbH和nTbW两者均大于1时,中间样点值g[x][y](其中,x=0..nonZeroW‑1,y=0..nTbH‑1),推导如下:[0596][0597] 7.当nTbW大于1时,x=0..nonZeroW‑1,y=0..nonZeroH‑1的结果数组g[x][y]的每一(水平)行被变换为x=0..nonZeroW‑1,y=0..nTbH‑1的r[x][y],通过为每一行y=0..nTbH‑1调用条款8.7.4.4中规定的一维变换过程,将变换块的宽度nTbW,结果数组g[x][y]的非零宽度nonZeroW,x=0..nonZeroW‑1的列表g[x][y]和设置为等于trTypeHor的变换类型变量trType作为输入,并且将x=0..nonZeroW‑1的列表r[x][y]作为输出。[0598] 8.当nTbW等于1时,对于x=0..nonZeroW‑1,y=0..nonZeroH‑1,r[x][y]被设置为等于e[x][y]。[0599] 8.7.2缩放和变换过程[0600] 该过程的输入为:[0601] –亮度位置(xTbY,yTbY),指定当前亮度变换块的左上角样点相对于当前图片的左上角亮度样点,[0602] –变量cIdx,指定当前块的颜色分量,[0603] –变量nTbW,指定变换块的宽度,[0604] –变量nTbH,指定变换块的高度。[0605] 该过程的输出是(nTbW)×(nTbH)残差样点数组resSamples[x][y],其中,x=0..nTbW‑1,y=0..nTbH‑1。[0606] 变量bitDepth、bdShift和tsShift的推导如下:[0607] bitDepth=(cIdx==0)?BitDepthY:BitDepthC(8‑942)[0608][0609] 5.4实施例#4[0610] 本实施例反映了使量化残差在16位范围内的变化。[0611] 8.7.3变换系数的缩放过程[0612] 该过程的输入为:[0613] –亮度位置(xTbY,yTbY),指定当前亮度变换块的左上角样点相对于当前图片的左上角亮度样点,[0614] –变量nTbW,指定变换块宽度,[0615] –变量nTbH,指定变换块高度,[0616] –变量cIdx,指定当前块的颜色分量,[0617] –变量bitDepth,指定当前颜色分量的位深度。[0618] 该过程的输出是具有元素d[x][y]的缩放变换系数的(nTbW)×(nTbH)数组d。[0619] 量化参数qP推导如下:[0620] –如果cIdx等于0且transform_skip_flag[xTbY][yTbY]等于0,则以下适用:[0621] qP=Qp′Y(8‑950)[0622] –否则,如果cIdx等于0(且transform_skip_flag[xTbY][yTbY]等于1),则以下适用:[0623] qP=Max(QpPrimeTsMin,Qp′Y)(8‑951)[0624] –否则,如果TuCResMode[xTbY][yTbY]等于2,则以下适用:[0625] qP=Qp′CbCr(8‑952)[0626] –否则,如果cIdx等于1,则以下适用:[0627] qP=Qp′Cb(8‑953)[0628] –否则(cIdx等于2),以下适用:[0629] qP=Qp′Cr(8‑954)[0630] 变量rectNonTsFlag的推导如下:[0631] rectNonTsFlag=(((Log2(nTbW)+Log2(nTbH))&1)==1&&(8‑955)[0632] transform_skip_flag[xTbY][yTbY]==0)[0633] 变量bdShift,rectNorm和bdooffset的推导如下:[0634][0635] 5.5实施例#5[0636] 本实施例反映了变换移位取决于块是否以BDPCM模式编解码。[0637] 8.7.2缩放和变换过程[0638] …[0639] 残差样点resSamples的(nTbW)×(nTbH)数组推导如下:[0640] 3.条款8.7.3中规定的变换系数的缩放过程是将变换块位置(xTbY,yTbY)、变换块宽度nTbW和变换块高度nTbH、被设置为等于codedCIdx的颜色分量变量cIdx、当前颜色分量的位深度bitDepth作为输入并且将缩放变换系数d的(nTbW)×(nTbH)数组作为输出。[0641] 4.残差样点r的(nTbW)×(nTbH)数组推导如下:[0642] –如果 transform_skip_flag[xTbY][yTbY]等于1且cIdx等于0,则x=0..nTbW‑1,y=0..nTbH‑1的残差样点数组值r[x][y]推导如下:[0643] r[x][y]=d[x][y]<[0644] –否则(transform_skip_flag[xTbY][yTbY]等于0或cIdx不等于0),条款8.7.4.1中规定的缩放变换系数的变换过程是将变换块位置(xTbY,yTbY)、变换块宽度nTbW和变换块高度nTbH、颜色分量变量cIdx、缩放变换系数d的(nTbW)×(nTbH)数组作为输入,并且将残差样点r的(nTbW)×(nTbH)数组作为输出。[0645] …[0646] 5.6实施例#6[0647] 本实施例反映了BDPCM块的反量化。[0648] 8.7.3变换系数的缩放过程[0649] …[0650] 变量rectNonTsFlag的推导如下:[0651][0652] 变量bdShift,rectNorm和bdooffset的推导如下:[0653] bdShift=bitDepth+((rectNonTsFlag?1:0)+(8‑956)[0654] (Log2(nTbW)+Log2(nTbH))/2)‑5+dep_quant_enabled_flag[0655] bdOffset=(1<>1(8‑957)[0656] 列表levelScale[][]被指定为levelScale[j][k]={{40,45,51,57,64,72},{57,64,72,80,90,102}},其中,j=0..1,k=0..5。[0657] 设置(nTbW)×(nTbH)数组dz等于(nTbW)×(nTbH)数组TransCoeffLevel[xTbY][yTbY][cIdx]。[0658] 对于x=0..nTbW–1,y=0..nTbH‑1的缩放变换系数d[x][y]的推导,以下适用:[0659] –中间缩放因子m[x][y]推导如下:[0660] –如果下列条件中有一个或多个为真,则设置m[x][y]等于16:[0661] –sps_scaling_list_enabled_flag等于0。[0662] –transform_skip_flag[xTbY][yTbY]等于1。[0663][0664] –否则,以下情况适用:[0665] m[x][y]=ScalingFactor[Log2(nTbW)][Log2(nTbH)][matrixId][x][y],[0666] 其中matrixId如表7‑5所示(8958)[0667] 5.7实施例#7[0668] 本实施例反映了矩形块的反量化因子不取决于块是变换跳过还是BDPCM模式。[0669] 8.7.2缩放和变换过程[0670] …[0671] 残差样点resSamples的(nTbW)×(nTbH)数组推导如下:[0672] 5.条款8.7.3中规定的变换系数的缩放过程是将变换块位置(xTbY,yTbY)、变换块宽度nTbW和变换块高度nTbH、被设置为等于codedCIdx的颜色分量变量cIdx、当前颜色分量的位深度bitDepth作为输入,并且将缩放变换系数d的(nTbW)×(nTbH)数组作为输出。。[0673] 6.残差样点r的(nTbW)×(nTbH)数组推导如下:[0674] –如果transform_skip_flag[xTbY][yTbY]等于1且cIdx等于0,则x=0..nTbW‑1,y=0..nTbH‑1的残差样点数组值r[x][y]推导如下:[0675][0676] –否则(transform_skip_flag[xTbY][yTbY]等于0或cIdx不等于0),条款8.7.4.1中规定的缩放变换系数的变换过程是将变换块位置(xTbY,yTbY)、变换块宽度nTbW和变换块高度nTbH、颜色分量变量cIdx、缩放变换系数d的(nTbW)×(nTbH)数组作为输入,并且将残差样点r的(nTbW)×(nTbH)数组作为输出。[0677] …[0678] 8.7.3变换系数的缩放过程[0679] …[0680] 变量rectNonTsFlag的推导如下:[0681][0682] rectFlag=((Log2(nTbW)+Log2(nTbH))&1)(8‑955)[0683] 变量bdShift,rectNorm和bdooffset的推导如下:[0684][0685] 列表levelScale[][]被指定为levelScale[j][k]={{40,45,51,57,64,72},{57,64,72,80,90,102}},其中,j=0..1,k=0..5。[0686] 设置(nTbW)×(nTbH)数组dz等于(nTbW)×(nTbH)数组TransCoeffLevel[xTbY][yTbY][cIdx]。[0687] 对于x=0..nTbW–1,y=0..nTbH‑1的缩放变换系数d[x][y]的推导,以下适用:[0688] –中间缩放因子m[x][y]推导如下:[0689] –如果下列条件中有一个或多个为真,则设置m[x][y]等于16:[0690] –sps_scaling_list_enabled_flag等于0。[0691] –transform_skip_flag[xTbY][yTbY]等于1。[0692] –否则,以下情况适用:[0693] m[x][y]=ScalingFactor[Log2(nTbW)][Log2(nTbH)][matrixId][x][y],[0694] 其中matrixId如表7‑5所示(8958)[0695] –缩放因子ls[x][y]的推导过程如下:[0696] –如果dep_quant_enabled_flag等于1,以下适用:[0697][0698] –否则(dep_quant_enabled_flag等于0),以下适用:[0699][0700] –当BdpcmFlag[xTbY][yYbY]等于1时,修改dz[x][y]如下:[0701] –如果BdpcmDir[xTbY][yYbY]等于0且x大于0,以下适用:[0702] dz[x][y]=Clip3(CoeffMin,CoeffMax,dz[x‑1][y]+dz[x][y])(8‑961)[0703] –否则,如果BdpcmDir[xTbY][yYbY]等于1且y大于0,以下适用:[0704] dz[x][y]=Clip3(CoeffMin,CoeffMax,dz[x][y‑1]+dz[x][y])(8‑962)[0705] –dnc[x][y]推导如下:[0706] dnc[x][y]=(dz[x][y]*ls[x][y]+bdOffset)>>bdShift(8‑963)[0707] –缩放变换系数d[x][y]推导如下:[0708] d[x][y]=Clip3(CoeffMin,CoeffMax,dnc[x][y])(8‑964)[0709] 5.8实施例#8[0710] 本实施例反映了变换跳过系数的约束。[0711] 7.4.9.11残差编解码语义[0712] abs_remainder[n]是在扫描位置n用Golomb‑Rice码编解码的变换系数级别的剩余绝对值。当abs_remainder[n]不存在时,它被推断为等于0。[0713] 比特流一致性的要求是ab_remainder[n]的值必须受到约束,使TransCoeffLevel[x0][y0][cIdx][xC][yC]的对应值在CoeffMin到CoeffMax的范围内,包括端点。[0714][0715] 图5示出了示例视频处理系统500的框图,其可以实施本文档的各种技术。各种实施可以包括系统500的一些或所有组件。系统500可以包括用于接收视频内容的输入502。视频内容可以以原始或未压缩格式(例如,8或10位多分量像素值)接收,或者可以以压缩或编解码格式接收。输入502可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括例如以太网、无源光网络(PON)等的有线接口和例如Wi‑Fi或蜂窝接口的无线接口。[0716] 系统500可以包括编解码组件504,其可以实现本文档中描述的各种编解码或编码方法。编解码组件504可以降低从输入502到编解码组件504输出的视频平均比特率以生成视频的编解码表示。因此,编解码技术有时被称为视频压缩或视频转码技术。编解码组件504的输出可以被存储或通过连接的通信传输,如组件506所示。在输入502处接收的视频的存储或传送的比特流(或编解码)表示可以被组件508用于生成发送到显示接口510的像素值或可显示视频。从比特流表示生成用户可见视频的过程有时被称为视频解压缩。此外,虽然某些视频处理操作被称为“编解码”操作或工具,还应认识到,编解码工具或操作用于编码器,且相应的将编解码结果反转的解码工具或操作将由解码器执行。[0717] 外围总线接口或显示接口的示例可以包括通用串行总线(USB)或高清多媒体接口(HDMI)或显示端口等。存储接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文档中描述的技术可以体现在各种电子设备中,例如移动电话、笔记本电脑、智能电话或能够执行数字数据处理和/或视频显示的其他设备。[0718] 图6是视频处理装置600的框图。装置600可用于实施本文档所述的一种或多种方法。装置600可以体现在智能电话、平板电脑、计算机、物联网(IoT)接收器等中。装置600可以包括一个或多个处理器602、一个或多个存储器604和视频处理硬件606。处理器602可以被配置为实施本文档中描述的一种或多种方法。存储器(存储器)604可用于存储用于实施在此描述的方法和技术的数据和代码。视频处理硬件606可用于在硬件电路中实施本文档中描述的一些技术。在一些实施例中,硬件606可以至少部分地在处理器602(例如,图形处理器)中。[0719] 图7是视频处理的示例方法700的流程图。方法700包括,在操作710中,根据规则执行在视频的当前块和视频的比特流表示之间的转换,该规则指定,该转换包括,在编码过程中,在包含在比特流表示中之前跳过对当前块残差系数的正向变换,或在解码过程中,在不应用逆变换的情况下从比特流表示中重建当前块的残差系数,并且其中,该规则进一步指定,缩放因子被应用于残差系数,而与当前块的尺寸无关。[0720] 图8是视频处理的示例方法800的流程图。方法800包括,在操作810,确定视频的当前块和视频的比特流表示之间的转换包括对当前块应用变换编解码模式。[0721] 方法800包括,在操作820中,基于确定执行转换,其中,转换中使用的反量化过程或逆变换是基于规则配置的。[0722] 图9是视频处理的示例方法900的流程图。方法900包括,在操作910中,确定视频的当前块和视频的比特流表示之间的转换包括无损转换。[0723] 方法900包括,在操作920中,基于确定执行转换,其中,在没有位移操作的情况下应用转换中使用的变换、逆变换、量化过程和/或反量化过程。[0724] 以下技术方案可以作为一些实施例的优选方案来实施。[0725] 1.一种视频处理方法,包括:根据规则执行在视频的当前块和视频的比特流表示之间的转换,其中,该规则规定该转换包括,在编码过程中,在包含在比特流表示中之前跳过对当前块残差系数的正向变换,或在解码过程中,在不应用逆变换的情况下从比特流表示中重建当前块的残差系数,并且其中,该规则进一步规定,缩放因子被应用于残差系数,而与当前块的尺寸无关。[0726] 2.解决方案1的方法,其中缩放因子是预定义的常数。[0727] 3.解决方案2的方法,其中缩放因子是一。[0728] 4.解决方案1的方法,其中缩放因子基于内部位深度(ibd)。[0729] 5.解决方案4的方法,其中缩放因子是(15‑ibd)。[0730] 6.解决方案1的方法,其中缩放变换系数的变换过程被禁用,并且其中变换系数的缩放过程的输出用作生成中间残差样点的输入。[0731] 7.一种视频处理方法,包括:确定视频的当前块和视频的比特流表示之间的转换包括对当前块应用变换编解码模式;并根据确定执行转换,其中,转换中使用的反量化过程或逆变换是基于规则配置的。[0732] 8.解决方案7的方法,其中反量化过程包括K比特位移操作,其中K是整数,并且其中该规则规定K是基于在变换编解码模式中使用的变换核的尺寸。[0733] 9.解决方案8的方法,其中K是基于变换核的高度。[0734] 10.解决方案7的方法,其中逆变换包括K比特位移操作,其中K是整数,并且其中该规则规定K是基于当前块的尺寸和/或变换编解码模式中使用的变换核的尺寸。[0735] 11.解决方案10的方法,其中K是基于当前块的高度。[0736] 12.解决方案10的方法,其中K是基于变换核的高度。[0737] 13.解决方案7的方法,其中反量化过程包括K‑比特位移操作,其中K是整数,并且其中该规则规定K是基于有上限的变换块的尺寸。[0738] 14.解决方案13的方法,其中变换块的尺寸大于或等于32×32,其中K是基于16×16的块尺寸。[0739] 15.解决方案13的方法,其中有上限的变换块的尺寸是基于反量化过程的量化参数(QP)。[0740] 16.解决方案13的方法,其中有上限的变换块的尺寸是基于当前块的高度和宽度之间的比率。[0741] 17.一种视频处理方法,包括确定视频的当前块和视频的比特流表示之间的转换包括无损转换;以及基于该确定来执行转换,其中在没有位移操作的情况下应用转换中使用的变换、逆变换、量化过程和/或反量化过程。[0742] 18.解决方案17的方法,其中,确定是基于在序列,或图片,或子图,或条带,或片组,或片,或图块,或编解码树单元行,或编解码树单元,或编解码单元,或预测单元,或变换单元,或子块级别中的指示。[0743] 19.解决方案17的方法,其中,由于转换是无损转换,对输入应用变换和后续应用逆变换的产生与输入匹配的位精确输出。[0744] 20.解决方案17的方法,其中,由于转换是无损转换,用于转换当前块残差系数值和当前块编解码系数的缩放因子等于1。[0745] 21.解决方案17的方法,其中,对于在逆变换中使用的K比特位移操作,由于转换是无损转换,K被设置为零。[0746] 22.解决方案17的方法,其中,由于转换是无损转换,量化过程使用设置为预定值(N)的量化参数(QP),其中N是正整数。[0747] 23.解决方案22的方法,其中N=4。[0748] 24.解决方案17的方法,其中,对于在反量化过程中使用的K比特位移操作,由于转换是无损转换,K被设置为零。[0749] 25.解决方案1至24任一的方法,其中执行转换包括从一个或多个视频区域生成比特流表示。[0750] 26.解决方案1至24任一的方法,其中执行转换包括从比特流表示生成一个或多个视频区域。[0751] 27.一种视频系统中的装置,包括处理器和带有指令的非暂时性存储器,其中,处理器执行时的指令,使处理器实施解决方案1至26任一的方法。[0752] 28.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于实施解决方案1至26任一方法的程序代码。[0753] 29.一种计算机可读介质,其存储根据解决方案1至26任一方法生成的比特流表示。[0754] 30.一种计算机可读介质,其存储根据解决方案1至26任一方法生成的编解码表示或比特流表示。[0755] 在上述方案中,进行转换包括在编码或解码操作期间使用先前决策步骤(例如,使用或不使用某些编解码或解码步骤)的结果来得出转换结果。在上述方案中,视频处理可以包括视频编解码或编码,或压缩或转码(从一种格式或码率变为另一种格式或码率)、解码或解压。此外,这些解决方案可以应用于其他视觉数据,例如图像。[0756] 本文档中所公开的和其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路或计算机软件、固件或硬件中实现,包括本文档中公开的结构及其结构等效物,或其中的一种或多种的组合。所公开的和其他实施例可以实施为一个或多个计算机程序产品,即,在计算机可读介质上编码的一个或多个计算机程序指令模块,由数据处理设备执行或控制操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质组合物,或者其中的一个或多个的组合。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组合,或其中一项或多项的组合。术语“数据处理装置”涵盖处理数据的所有装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或其中一个或多个的组合代码。传播的信号是人工生成的信号,例如机器生成的电、光或电磁信号,其被生成是为了对信息进行编码以传输到合适的接收器设备。[0757] 计算机程序(也称为程序、软件、软件应用程序、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)编写,并且可以以任何形式进行部署,包括独立程序或适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定与文件系统中的文件相对应。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论程序的单个文件中或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)。可以部署计算机程序,以在一台计算机或位于一个位置上或分布在多个位置上并通过通信网络互连的多台计算机上执行。[0758] 本文档中描述的过程和逻辑流程可以由一个或多个可编程处理器来执行,以执行一个或多个计算机程序,从而通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流程也可以由专用逻辑电路执行,并且也可以实现为专用逻辑电路,例如FPGA(fieldprogrammablegatearray,现场可编程门阵列)或ASIC(applicationspecificintegratedcircuit,应用专用集成电路)。[0759] 例如,适合于执行计算机程序的处理器包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器装置。通常,计算机还将包括或可操作地耦合到一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,以从中接收数据,或将数据传输到一个或多个大容量存储设备,或两者。但是,计算机不必具有这样的装置。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,包括例如半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内置硬盘或可移动磁盘;磁光盘;以及CDROM和DVD‑ROM磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。[0760] 尽管本专利文档包含许多细节,但是这些细节不应解释为对任何发明或可要求保护的范围的限制,而应解释为对特定发明的特定实施例可能特定的特征的描述。在单独的实施例的上下文中在本专利文档中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合来实现。此外,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此要求保护,但是在某些情况下,可以从组合中剔除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变体。[0761] 类似地,虽然在附图中以特定顺序描绘了操作,但是这不应理解为要求以所示的特定顺序或以连续的顺序执行这样的操作,或者执行所有示出的操作以实现期望的效果。此外,在该专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离。[0762] 仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容进行其他实施方式、增强和变化。

专利地区:北京

专利申请日期:2020-09-09

专利公开日期:2024-06-18

专利公告号:CN114365490B


以上信息来自国家知识产权局,如信息有误请联系我方更正!
电话咨询
读内容
搜本页
回顶部