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

点云压缩的方法和装置与流程

2021-11-10 05:35:00 来源:中国专利 TAG:
点云压缩的方法和装置1.通过引用并入本文2.本技术要求于2020年6月30日提交的、申请号为16/916,944、名称为“点云压缩的方法和装置”的美国专利申请的优先权,其要求于2019年7月2日提交的、申请号为62/869,946、名称为“点云编码中自适应几何量化的qp变化的信令”的美国临时申请、于2019年10月3日提交的、申请号为62/910,387、名称为“点云编码的自适应几何量化和隐式几何分区的附加信息”的美国临时申请、以及于2020年1月7日提交的、申请号为62/958,131、名称为“点云编码的自适应几何量化和并行八叉树编码的附加信息”的美国临时申请的优先权。在先申请的全部公开内容通过引用整体并入本文。
技术领域
:3.本公开描述了总体上涉及点云压缩的实施例。
背景技术
::4.本文所提供的背景描述旨在总体上呈现本公开的背景。在
背景技术
:部分以及本说明书的各个方面中所描述的目前已署名的发明人的工作所进行的程度,并不表明其在本公开提交时作为现有技术,且从未明示或暗示其被承认为本公开的现有技术。5.人们开发了各种技术来捕获和表示世界,例如世界中的对象、世界中的环境以及3维(3d)空间中的类似事物。世界的3d表示可以实现更身临其境的交互和沟通形式。点云可用作世界的3d表示。点云是3d空间中点的集合,每个点都具有关联的属性,例如颜色、材料特性、纹理信息、强度属性、反射率属性、运动相关属性、模态属性以及其它各种属性。这样的点云可能包含大量的数据,并且存储和传输可能既昂贵且又耗时。技术实现要素:6.本公开的各方面提供了点云压缩和解压缩的方法。在方法中,从已编码比特流中解码量化空间中的点云的语法信息,所述语法信息包括所述点云的边界框的划分信息和自适应几何量化信息。基于所述划分信息,将所述点云的边界框划分为多个部分。基于所述自适应几何量化信息,确定所述边界框中的所述多个部分的量化参数。基于所述边界框中的各个部分的量化参数,重建所述点云的边界框中的每个部分中的点。7.在实施例中,基于所述划分信息中包括的八叉树分区结构,将所述边界框划分为多个分区。8.在实施例中,基于所述划分信息中包括的多个区域的坐标信息,将所述边界框划分为所述多个区域。9.在实施例中,基于所述自适应几何量化信息中包括的基本量化参数,确定所述量化参数。10.在实施例中,当第一语法元素指示启用一个或多个增量量化参数的信令时,基于所述一个或多个增量量化参数确定所述量化参数。所述第一语法元素包括在所述自适应几何量化信息中。11.在实施例中,基于所述第一语法元素指示启用所述一个或多个增量量化参数的信令,所述自适应几何量化信息包括第二语法元素和第三语法元素的其中之一。所述第二语法元素指示八分树分区深度,在所述八叉树分区深度处允许所述一个或多个增量量化参数的信令,所述第三语法元素指示最小八叉树分区深度,从所述最小八叉树分区深度处允许所述一个或多个增量量化参数的信令。12.在实施例中,所述量化参数、所述基本量化参数、以及所述一个或多个增量量化参数中的至少一个是2的幂。13.在实施例中,(i)所述量化参数和(ii)所述一个或多个增量量化参数的其中之一包括在查找表中。14.在实施例中,所述自适应几何量化信息包括以下其中之一:(i)所述查找表的索引,以及(ii)所述索引与所述索引的预测值之间的差。15.在实施例中,基于与所述各个部分相对应的节点的父节点的量化参数、相同分区深度中与所述各个部分相对应的节点的先前已编码兄弟节点的量化参数、以及所述基本量化参数中的至少一个,预测所述边界框中的每个部分的增量量化参数。16.在实施例中,所述一个或多个增量量化参数基于量化参数预测值的候选列表来预测。17.本公开的各方面还提供了点云压缩和解压缩的装置。一种装置包括处理电路,所述处理电路从已编码比特流中解码量化空间中的点云的语法信息,所述语法信息包括所述点云的边界框的划分信息和自适应几何量化信息。所述处理电路基于所述划分信息,将所述点云的边界框划分为多个部分。所述处理电路基于所述自适应几何量化信息,确定所述边界框中的所述多个部分的量化参数。所述处理电路基于所述边界框中的各个部分的量化参数,重建所述点云的边界框中的每个部分中的点。18.本公开的各方面还提供了一种非易失性计算机可读介质,用于存储指令,当所述指令由用于点云压缩/解压缩的计算机执行时,使所述计算机执行所述点云压缩/解压缩的方法中的任一个或组合。附图说明19.根据以下详细描述和附图,所公开的主题的其他特征、性质和各种优点将进一步明确,其中20.图1示出了根据本公开实施例的通信系统的简化框图的示意图。21.图2示出了根据本公开实施例的流式传输系统(200)的简化框图的示意图。22.图3示出了根据本公开实施例的示例性编码器。23.图4示出了根据本公开实施例的示例性解码器。24.图5示出了根据本公开实施例的3d立方体中的示例性八叉树分区。25.图6示出了根据本公开实施例的两级八叉树分区和相应的占用码的示例。26.图7示出了根据本公开实施例的由激光雷达系统生成的示例性点云。27.图8a示出了一些示例中的恒定量化和无损八叉树编码。28.图8b示出了根据本公开实施例的具有自适应量化的示例性八叉树编码。29.图9a和9b示出了根据本公开实施例的1d中的简化量化和分区。30.图10示出了根据本公开实施例的与不同qp相关联的三个边界框。31.图11示出了根据本公开实施例的概述过程示例的流程图。32.图12示出了根据本公开实施例的计算机系统的示意图。具体实施方式33.i.点云压缩系统34.图1示出了根据本公开实施例的通信系统(100)的简化框图。通信系统(100)包括多个终端装置,所述终端装置可以通过例如网络(150)彼此通信。例如,通信系统(100)包括通过网络(150)互连的一对终端装置(110)和(120)。在图1的示例中,第一对终端装置(110)和(120)执行点云数据的单向传输。例如,终端装置(110)可以压缩由与终端装置(110)连接的传感器105捕获的点云(例如,表示结构的点)。压缩的点云可以例如以比特流的形式通过网络(150)传输到另一终端装置(120)。终端装置(120)可以从网络(150)接收压缩的点云,解压缩该比特流以重建点云,并适当地显示重建的点云。单向数据传输在媒体服务等应用中可能很常见。35.在图1的示例中,终端装置(110)和(120)可以为服务器和个人计算机,但是本公开的原理可以不限于此。本公开的实施例适用于膝上型计算机、平板电脑、智能电话、游戏终端、媒体播放器和/或专用三维(3d)设备。网络(150)表示在终端装置(110)和(120)之间传输压缩的点云的任何数目的网络。网络(150)可以包括例如有线(连线的)和/或无线通信网络。网络(150)可以在电路交换和/或分组交换信道中交换数据。该网络可包括电信网络、局域网、广域网和/或互联网。出于本技术的目的,除非在下文中有所解释,否则网络(150)的架构和拓扑对于本技术公开的操作来说可能是无关紧要的。36.图2示出了针对点云的所公开主题的应用的示例。所公开的主题可以等同地应用于其他支持点云的应用,包括3d远程呈现应用、虚拟现实应用。37.流式传输系统(200)可以包括捕获子系统(213)。捕获子系统(213)可以包括点云源(201),例如光检测和测距(lidar)系统、3d相机、3d扫描仪、在软件中生成未压缩的点云的图形生成组件、以及生成例如未压缩的点云(202)的类似组件。在示例中,点云(202)包括由3d相机捕获的点。与压缩的点云(204)(压缩的点云的比特流)相比,点云(202)被描绘为粗线以强调高数据量。压缩的点云(204)可以由电子设备(220)生成,所述电子设备(220)包括耦合到点云源(201)的编码器(203)。编码器(203)可以包括硬件、软件或硬件和软件的组合,以使能或实现如下文更详细地描述的所公开主题的各个方面。与点云(202)的流相比,压缩的点云(204)(或压缩的点云(204)的比特流)被描绘为细线以强调较低的数据量,其可以存储在流式传输服务器(205)上以供将来使用。一个或多个流式传输客户端子系统,例如图2中的客户端子系统(206)和(208),能够访问流式传输服务器(205)以检索压缩的点云(204)的副本(207)和(209)。客户端子系统(206)可以包括例如在电子设备(230)中的解码器(210)。解码器(210)对压缩的点云的输入副本(207)进行解码,并创建可以在呈现设备(212)上呈现的重建的点云(211)的输出流。在一些流式传输系统中,可以根据某些标准对压缩的点云(204)、(207)和(209)(例如,压缩的点云的比特流)进行压缩。在一些示例中,视频编码标准被用于点云的压缩。这些标准的示例包括高效视频编码(hevc)、通用视频编码(vvc)等。38.应注意,电子装置(220)和电子装置(230)可包括其它组件(未示出)。举例来说,电子装置(220)可包括解码器(未示出),且电子装置(230)还可包括编码器(未示出)。39.图3示出了根据实施例的示例性编码器(300)。编码器可被配置为接收点云数据,并对点云数据进行压缩,以生成携带压缩的点云数据的比特流。在实施例中,编码器(300)可以包括位置量化模块(310)、重复点去除模块(312)、八叉树编码模块(330)、属性传递模块(320)、lod(levelofdetail,细节级别)生成模块(340)、属性预测模块(350)、残差量化模块(360)、算术编码模块(370)、逆残差量化模块(380)、加法模块(381)、以及用于存储重建属性值的存储器(390)。40.如图所示,可以在编码器(300)处接收输入点云(301)。将点云(301)的位置(例如,3d坐标)提供给量化模块(310)。量化模块(310)被配置为对坐标进行量化,以生成量化位置。可选的重复点去除模块(312)被配置为接收量化位置并执行滤波过程,以识别和去除重复点。八叉树编码模块(330)被配置为从重复点去除模块接收滤波后的位置,并且执行基于八叉树的编码过程,以生成描述三维体素网格(3dgridofvoxels)的占用码(occupancycode)序列。将占用码提供给算术编码模块(370)。41.属性传递模块(320)被配置为接收输入点云的属性,并且当多个属性值与各个体素相关联时,执行属性传递过程,以确定每个体素的属性值。可以对从八叉树编码模块(330)输出的重新排序的点执行属性传递过程。将传递操作之后的属性提供给属性预测模块(350)。lod生成模块(340)被配置为对从八叉树编码模块(330)输出的重新排序的点进行操作,并将这些点重新组织成不同的lod。将lod信息提供给属性预测模块(350)。42.属性预测模块(350)根据来自lod生成模块(340)的lod信息所指示的基于lod的顺序来处理这些点。属性预测模块(350)基于存储在存储器(390)中的当前点的一组相邻点的重建属性生成当前点的属性预测。随后可以基于从属性传递模块(320)接收的原始属性值和本地生成的属性预测来获得预测残差。当在各个属性预测过程中使用候选索引时,可以将与所选择的预测候选对应的索引提供给算术编码模块(370)。43.残差量化模块(360)被配置为从属性预测模块(350)接收预测残差,并执行量化以生成量化残差。将量化残差提供给算术编码模块(370)。44.逆残差量化模块(380)被配置为从残差量化模块(360)接收量化残差,并通过执行在残差量化模块(360)处执行的量化操作的逆操作来生成重建预测残差。加法模块(381)被配置为从逆残差量化模块(380)接收重建预测残差,以及从属性预测模块(350)接收各个属性预测。通过组合重建预测残差和属性预测,生成重建属性值,并将其存储到存储器(390)。45.算术编码模块(370)被配置为接收占用码、候选索引(如果使用)、量化残差(如果生成)和其它信息,并执行熵编码以进一步压缩接收的值或信息。因此,可以生成携带压缩信息的压缩比特流(302)。可以将比特流(302)发送给或以其它方式提供给解码压缩比特流的解码器,或者可以将比特流(302)存储在存储设备中。46.图4示出了根据实施例的示例性解码器(400)。解码器(400)可被配置为接收压缩比特流,并执行点云数据解压缩以解压缩该比特流,以生成解码的点云数据。在实施例中,解码器(400)可以包括算术解码模块(410)、逆残差量化模块(420)、八叉树解码模块(430)、lod生成模块(440)、属性预测模块(450)和用于存储重建属性值的存储器(460)。47.如图所示,可以在算术解码模块(410)处接收压缩比特流(401)。算术解码模块(410)被配置为对压缩比特流(401)进行解码,以获得量化残差(如果生成)和点云的占用码。八叉树解码模块(430)被配置为根据占用码确定点云中的点的重建位置。lod生成模块(440)被配置为基于重建位置将点重新组织成不同的lod,并确定基于lod的顺序。逆残差量化模块(420)被配置为基于从算术解码模块(410)接收的量化残差生成重建残差。48.属性预测模块(450)被配置为执行属性预测过程,以根据基于lod的顺序确定点的属性预测。例如,可以基于存储在存储器(460)中的当前点的相邻点的重建属性值确定当前点的属性预测。属性预测模块(450)可以将属性预测与各自的重建残差相组合,以生成当前点的重建属性。49.在一个示例中,从属性预测模块(450)生成的重建属性序列以及从八叉树解码模块(430)生成的重建位置对应于从解码器(400)输出的已解码点云(402)。此外,重建属性也存储到存储器(460)中,并且随后可用于导出后续点的属性预测。50.在各种实施例中,编码器(300)和解码器(400)可以用硬件、软件或其组合来实现。例如,编码器(300)和解码器(400)可以用处理电路来实现,例如使用或不使用软来件操作的一个或多个集成电路(ic)、专用集成电路(asic)、现场可编程门阵列(fpga)等。在另一示例中,编码器(300)和解码器(400)可以实现为包括指令的软件或固件,这些指令存储在非暂时性(或非易失性)计算机可读存储介质中。这些指令在由处理电路(例如一个或多个处理器)执行时,使得该处理电路执行编码器(300)和解码器(400)的功能。51.应注意,被配置为实现本文所公开的属性预测技术的属性预测模块(350)或(450)可以包括在其它解码器或编码器中,这些解码器或编码器可以具有与图3和图4所示的结构类似或不同的结构。另外,编码器(300)和解码器(400)可以包括在同一设备中,或者在各种示例中包括在单独的设备中。52.ii.点云编码中的几何量化和分区53.1、点云数据54.点云在近年来得到了广泛的应用。例如,点云数据在自动驾驶车辆中用于目标检测和定位。点云数据还可以在地理信息系统(gis)中用于制图,以及在文化遗产中用于对文化遗产对象和收藏品进行可视化和归档等。55.点云包含一组高维点(通常是三维(3d)),每个点包括3d位置信息和诸如颜色、反射率等的附加属性。这些点可以使用多个摄像头和深度传感器、或各种设置中的激光雷达来捕获,并且可能由数千到数十亿点组成,以真实地表示原始场景。56.因此,需要使用压缩技术来减少表示点云所需的数据量,以便更快地传输或减少存储。57.2、八叉树分区的几何编码58.几何信息和相关属性(例如颜色或反射率)可以单独压缩(例如,在测试模型13(tmc13)模型中)。几何信息(包括点云的3d坐标)可以使用其占用信息通过八叉树分区进行编码。可以使用例如预测和提升技术(liftingtechnique)基于重建的几何结构来压缩属性。59.八叉树分区的输入是变换位置的集合,即pi,i=1,2,...,n。图5示出了根据本公开实施例的3d立方体中的示例性八叉树分区。实线的3d立方体被划分成八个较小的、大小相等的虚线立方体。递归地执行八叉树分区(例如,在tmc13中),以将原始3d空间划分为最小单元,并由熵编码器对每个子空间的占用信息进行编码,以有效地表示几何位置。60.八叉树编码可以是无损的。也就是说,对所有输入位置进行编码而不进行任何进一步的量化。例如,在tmc13中,如果使用八叉树几何编解码器,则几何编码进行如下。61.首先,立体轴对齐的边界框由两个点(0,0,0)和(2d,2d,2d)定义,其中2d定义了边界框的大小,并且d被编码到比特流。假设所有点pi都在边界框内。62.然后,通过递归地细分边界框来构建八叉树分区结构。在每个阶段,边界框的立方体被细分为8个子立方体。然后,通过将1位(1‑bit)值与每个子立方体相关联来生成8位码(称为占用码),以指示相应的子立方体是包含点(例如,对于完整子立方体,对应位的值为1)还是不包含点(例如,对于空子立方体,对应位的值为0)。只有大小大于一个值(例如1)的完整子立方体(即非体素)才会进一步细分。然后,边界框的每个立方体的占用码由算术编码器进行压缩。边界框的每个立方体对应于八叉树分区结构的一个节点。因此,每个立方体的占用码对应于相应立方体的节点。63.3、占用码的编码64.八叉树分区结构的当前节点的占用码可以由算术编码器进行压缩。占用码可以表示为8位整数s,并且s中的每一位表示当前节点的每个子节点的占用状态。占用码的两种示例性编码方法(例如,在tmc13中)是逐位编码和逐字节编码。在tmc13中,默认情况下启用逐位编码。这两种方法都使用上下文建模执行算术编码,以对占用码进行编码,其中上下文状态在整个编码过程开始时被初始化,并在编码过程期间进行更新。65.对于逐位编码,s中的八个二进制数(bin)按照一定的顺序进行编码,其中每个bin通过参考相邻节点和相邻节点的子节点的占用状态进行编码,其中相邻节点与当前节点处于同一级别。66.对于逐字节编码,通过参考以下内容对s进行编码:(1)自适应查找表(a‑lut),其跟踪n个(例如,32个)最频繁的占用码;以及(2)缓存,其跟踪最后观察到的m个(例如,16个)不同的占用码。67.对指示s是否在a‑lut中的二进制标志进行编码。如果s在a‑lut中,则使用二进制算术编码器对a‑lut中的索引进行编码。如果s不在a‑lut中,则对指示s是否在缓存中的二进制标志进行编码。如果s在缓存中,则使用二进制算术编码器对其在缓存中的索引的二进制表示进行编码。否则,如果s不在缓存中,则使用二进制算术编码器对s的二进制表示进行编码。68.解码过程可以通过从比特流解析边界框的维度开始。然后,通过根据解码的占用码细分边界框来构建相同的八叉树结构。图6示出了两级八叉树分区和相应的占用码的示例,其中深色的立方体和节点表示它们被点占用。69.图7示出了由激光雷达系统生成的示例性点云。在点云中,点的密度会在空间中变化,其中靠近激光雷达传感器位置的点(例如,世界坐标中的原点)往往比远离原点的点密度更大。这些与原点距离较小的点也可以具有更高的精度,这意味着压缩的优先级更高。可以通过自适应编码器优化以在重要点上分配更多比特,来提高整体编解码性能。然而,由于恒定的量化参数(qp),在一些情况(例如tmc13)下采用的几何量化方案阻止了几何的自适应比特分配。70.4、tmc13中的几何量化71.在一些相关情况(例如,tmc13)下,点云是3d中点的集合,每个点的位置为i=1,2,...,n,其中n是点云中的点的总数。原始的特定应用点位置(application‑specificpointposition)通常由浮点数表示,并且可以具有任何类型的结构。72.几何量化(例如,在tmc13中)可以在任何压缩之前作为预处理阶段执行,如图8a所示。也就是说,几何量化的qp对于所有位置都是固定常数。具体地,位置变换如下:[0073][0074]其中,s=(sx,sy,sz)t是一个移位矢量,用于将的原点移动到零。q是几何量化的标量参数,round(·)是舍入运算符,用于使变换后的位置pi为非负整数。可以将q发信号通知给解码器以重建点云。[0075]几何结构的重建是(1)的逆过程,如下所示,[0076][0077]其中,表示重建位置。q和s与(1)中的q和s相同并在比特流头中发信号通知。[0078]固定量化方案在一些应用(包括速率控制和其它优化)中禁用有用的编码功能。在传统的2d视频编码场景中,这些功能已被认为在应用中至关重要。[0079]iii.提出的点云编码的自适应量化[0080]根据本公开的各方面,在pcc中的八叉树编码过程中引入了一种新的量化方案,其能够实现自适应几何量化。如图8b所示,这种新的量化涉及八叉树编码中的qp变化,其中qp可针对八叉树分区结构的不同节点而变化。每个节点对应于点云的边界框的一个立方体(或一部分)。八叉树分区和对应的占用编码可以相应地调整。还阐述了发信号通知qp变化的方法。本公开实现了跨几何编码空间的自适应比特分配的新功能,因此速率控制和其它较低级别的优化变得更加可行。注意,本公开不限于tmc13软件或mpeg‑pcc标准,它是各种pcc系统的通用解决方案。[0081]在本公开中,自适应量化被引入八叉树分区阶段,因此由于额外的量化,八叉树编码可能是有损的。预处理阶段中的量化保持不变,并且预处理量化的目标是体素化,使所有位置为整数,从而可以执行八叉树分区。注意,这两个量化过程彼此独立。下面进一步描述具有自适应量化的八叉树分区的一个示例性实施方案。然而,应注意,能够实现pcc的自适应几何量化的任何其它形式的实施方案都包括在本公开中。例如,如果qp被限制为2的幂,则可以简化以下实施方案。[0082]在执行八叉树分区时应用示例性自适应量化。在八叉树分区的每个节点处,对应子立方体内的所有点都可以基于指定的qp进行量化,该qp可针对不同节点而变化。更具体地,设为对应于当前子节点的当前子立方体的ith(i=1,2,...,nl,k)点的位置(由l和k指定),其中l(l=0,1,..,d)是当前子节点的八叉树分区深度(depth),k(k=1,2,...,2l)是当前子节点在深度l中的索引,nl,k是当前子节点对应的当前子立方体内的点的总数。当前子立方体的边界框可以由起点psl,k=(xsl,k,ysl,k,zsl,k)t和终点pel,k=(xel,k,yel,k,zel,k)t定义。所有的点都应该在边界框内,即,对于所有i=已2,…,nl,k,和[0083]设ql,k为当前子立方体的对应qp。[0084]首先,将示例性自适应量化应用于当前子立方体的边界框的起点和终点,如下所示[0085][0086][0087]其中,和分别表示向上取整(ceiling)和向下取整(flooring)操作。分别表示向上取整(ceiling)和向下取整(flooring)操作。和是示例性自适应量化之后的开始位置和结束位置,并且它们定义了量化子立方体的边界框。此外,它们可以决定当前子立方体的八叉树分区。[0088]其次,可以将示例性自适应量化应用于当前子立方体内的所有点,如下所示:[0089][0090]其中,是分段线性函数,应用于位置的每个分量,以确保量化位置在量化子立方体的边界框内,即在量化子立方体的边界框内,即[0091]然后,可以在量化后的开始位置和结束位置上确定当前子立方体的八叉树分区。[0092]首先,如果其表示ql,k足够大,可以将当前子立方体中的所有点量化为一个点,则在这种情况下不需要进一步分区。否则,可以基于量化子立方体中的分区点执行八叉树分区,该分区点例如在和的中间,即例如,如果示例性自适应量化之后的点的所有维度都小于分区点的维度,则可以将其划分为第一个子立方体(或节点)。如果示例性自适应量化之后的点的所有维度都大于或等于则可以将其划分为最后一个子立方体(或节点)。同时,原始子立方体中的分区点可以计算如下:[0093][0094]通过从当前子立方体(或节点)执行八叉树分区,下一个分区深度中的八个子立方体(或节点)的起点和终点可以如下所示:[0095][0096][0097]其中,j=0,1,...,7是图5所示顺序的八个子节点的索引。运算符“&”和“∧””分别是位“与”和位“异或”运算符。如果x为非零,则z(x)等于1,否则等于0。[0098]图9a和图9b示出了根据本公开实施例的一维(1d)中的简化量化和分区。简化分区从深度0开始,其中原始空间中的开始位置和结束位置是ps0,0=0和pe0,0=16。原始空间(或节点)的qp是q0,0=3。原始空间和量化空间中的中间点,即分区点,可以根据等式(3)‑(6)计算。如图9a所示,原始空间中的中间点是pm0,0=8。然后,基于该中间点,将原始空间中的点划分成两组子点(或子节点),以新的开始位置和结束位置到达下一个深度,如图9b所示。基于等式(7)‑(8),第一子节点具有开始位置ps1,0=0和结束位置ps1,0=8,第二子节点具有开始位置ps1,1=8和结束位置ps1,1=16。[0099]注意,所提出的八叉树分区内的自适应量化独立于预处理阶段的量化。如果对于所有l和k,ql,k=1,则八叉树编码可以是无损的并且与tmc13相同。所提出的自适应量化可以通过改变不同子节点的ql,k来实现。在下一节中,将进一步详细描述发信号通知qp变化的方法。[0100]iv.用于自适应几何量化的qp变化的信令[0101]1、发信号通知控制标志[0102]可以添加第一高级语法元素,以指示是否启用一个或多个qp变化(增量qp)的信令。如果是,则可以添加第二高级语法元素,以指示八叉树分区深度,在此深度处允许一个或多个增量qp的信令。[0103]例如,可以在序列头和/或切片头中发信号通知一个一位标志,以启用或禁用增量qp的信令。如果标志为0,则不允许进一步的信令,并且可以将恒定qp应用于八叉树分区;否则,可以发信号通知增量qp。[0104]此外,如果启用增量qp的信令,则可以发信号通知非负整数,以指示八叉树分区的一个或多个深度,在此深度处允许增量qp的信令。[0105]此外,可以在序列头或其它级别(例如在切片头中)中发信号通知基本qp。基本qp应用于没有指定增量qp的所有子节点。如果禁用增量qp的信令,则基本qp可以应用于八叉树分区的所有子节点。在一些实施例中,基本qp是增量qp的预测值。[0106]在实施例中,在序列头中发信号通知一个标志,以指示是否启用增量qp的信令。如果是,则进一步发信号通知深度,以指定八叉树分区的某个深度,在此深度处允许增量qp的信令。表1示出了示例性语法表。[0107]表1[0108][0109][0110]变量sps_geo_qp_base指定可以在八叉树分区中使用的基本qp,即qpbase=sps_geo_qp_base。然后,当不应用增量qp时,qpbase可以用作八叉树分区中的默认qp。它也可以用作增量qp的预测值。[0111]如果变量sps_geo_delta_qp_flag等于1,则指定对比特流序列启用增量qp的信令。如果变量sps_geo_delta_qp_flag等于0,则指定对比特流序列禁用增量qp的信令。如果启用增量qp的信令,则变量sps_geo_delta_qp_signal_depth指定八叉树分区的深度,在此深度处发信号通知增量qp。当八叉树分区深度低于指定的变量sps_geo_delta_qp_signal_depth时,qpbase用作八叉树分区中的默认qp。[0112]在实施例中,基本qp被限制为2的幂的数字。表2示出了示例性语法表。[0113]表2[0114][0115][0116]变量sps_geo_qp_base_log2指定可以在八叉树分区中使用的基本qp,即qpbase=2sps_geo_qp_base_log2。然后,当不应用增量qp时,qpbase可以用作八叉树分区中的默认qp。它也可以用作增量qp的预测值。[0117]在实施例中,在切片头中发信号通知一个标志,以指示是否启用增量qp的信令。如果是,则进一步发信号通知深度,以指定八叉树分区的某个深度,在此深度处允许增量qp的信令。表3示出了示例性语法表。[0118]表3[0119][0120]如果变量gsh_geo_delta_qp_flag等于1,则指定对切片启用增量qp的信令。如果变量gsh_geo_delta_qp_flag等于0,则指定对切片禁用增量qp的信令。如果启用增量qp的信令,则变量gsh_geo_delta_qp_signal_depth指定八叉树分区的深度,在此深度处发信号通知增量qp。当八叉树分区的深度低于指定的变量sps_geo_delta_qp_signal_depth时,变量sps_geo_qp_bese指定的qpbase用作默认qp。[0121]在实施例中,仅在切片级别允许qp变化,表示由固定qp分配每个切片并且在切片中不允许增量qp。表4示出了示例性语法表。[0122]表4[0123][0124][0125]如果变量spsgeo_delta_qp_flag等于1,则变量gsh_geo_slice_qp指定可应用于当前切片的qp,表示切片中的所有子节点(或子立方体)的qp相同,即ql,k=gsh_geo_slice_qp。如果变量sps_geo_delta_qp_flag等于0,则ql,k=qpbase。[0126]在实施例中,仅在切片级别允许qp变化,表示由固定qp分配每个切片并且在切片中不允许增量qp。在这种情况下,将切片qp作为增量qp发信号通知给由序列头中的变量ps_geo_qp_bse指定的基本qp。表5示出了示例性语法表。[0127]表5[0128][0129]如果变量sps_geo_delta_qp_flag等于1,则变量gsh_geo_slice_delta_qp_from_base指定可应用于当前切片的qp,即,ql,k=qpbase gsh_geo_slice_delta_qp_from_base,表示切片中的所有子节点的qp可以相同。如果变量sps_geo_delta_qp_flag等于0,则ql,k=qpbase。[0130]在实施例中,在序列头中发信号通知一个标志,以指示是否启用增量qp的信令。如果是,则进一步发信号通知深度,以指定八叉树分区的深度,在此深度处允许增量qp的信令。表6示出了示例性语法表。[0131]表6[0132][0133][0134]如果变量sps_geo_delta_qp_flag等于1,则变量sps_geo_delta_qp_signal_min_depth指定八叉树分区的某个深度,发信号通知从该深度到增量qp以上的所有深度。当八叉树分区深度未达到变量sps_geo_delta_qp_signal_min_depth时,默认使用变量sps_geo_qp_bese指定的qpbase。[0135]在实施例中,在切片头中发信号通知一个标志,以指示是否启用增量qp的信令。如果是,则进一步发信号通知深度,以指定八叉树分区的深度,从该深度处允许增量qp的信令。表7示出了示例性语法表。[0136]表7[0137][0138]如果变量gsh_geo_delta_qp_flag等于1,则变量gsh_geo_delta_qp_signal_min_depth指定八叉树分区的深度,从该深度允许增量qp的信令。[0139]2、通过表发信号通知qp[0140]不是直接发信号通知增量qp值,而是可以将增量qp包括在查找表中,然后通过表的索引来引用。该表可以是固定的,也可以在比特流中发信号通知。如果该表在比特流中发信号通知,则可以独立地发信号通知该表的元素,或者通过该表的元素的差值(即,该表的两个元素之间的差)发信号通知该表的元素。该表的元素可以是qp值或增量qp值。在以下实施例中,在比特流的序列头中发信号通知qp表。注意,也可以在其它级别(例如,切片头)中发信号通知qp表。[0141]在一个实施例中,在表8中发信号通知查找表,其指定可用于自适应几何量化的所有qp值(除了基本qp之外)。[0142]表8[0143][0144]如果变量sps_geo_qp_table_flag等于1,则指定qp可以由它们在qp表中的索引来表示(并发信号通知)。如果变量sps_geo_qp_table_flag等于0,则指定qp可以直接由它们的值来表示(并发信号通知)。如果变量sps_geo_qp_table_flag等于1,则发信号通知变量sps_geo_qp_table_size_minus_one,以指定查找表的大小为sps_geo_qp_table_size=sps_geo_qp_table_size_minus_one 1。[0145]然后,qp表的每个元素都通过变量sps_geo_qp_table_element[i]发信号通知。这些元素将可能用于自适应几何量化的所有qp指定为qti=sps_geo_qp_table_element[i],其中qti表示qp表中的一个元素。当八叉树分区深度低于指定的变量sps_geo_delta_qp_signal_depth时,将变量sps_geo_qp_bese指定的qpbase用作默认qp。否则,可以通过参考qp表的索引来指定qp。[0146]在实施例中,在表9中发信号通知查找表,其指定可能用于自适应几何量化的所有增量qp值。[0147]表9[0148][0149][0150]如果变量sps_geo_delta_qp_table_flag等于1,则指定qp可以由增量qp表中的索引来表示(并发信号通知)。如果变量sps_geo_delta_qp_table_flag等于0,则指定qp可以直接由qp的值来表示(并发信号通知)。如果变量sps_geo_delta_qp_table_flag等于1,则发信号通知变量sps_geo_delta_qp_table_size_minus_one,以指定查找表的大小为sps_geo_delta_qp_table_size=sps_geo_delta_qp_table_size_minus_one 1。[0151]然后,增量qp表的每个元素都通过变量sps_geo_delta_qp_table_element[i]发信号通知。它们将可能用于自适应几何量化的所有增量qp指定为dqti=sps_geo_delta_qp_table_element[i],其中dqti指示增量qp表中的一个元素。当八叉树分区深度低于指定的变量sps_geo_delta_qp_signal_depth时,将变量sps_geo_qp_bese指定的qpbase用作默认qp。否则,可以通过参考增量qp表的索引来指定qp。[0152]3、基于区域发信号通知qp[0153]根据本公开的各方面,可以(例如在3d空间中)定义某些区域,并且可以针对不同区域分配不同的区域qp。这可以称为基于区域的自适应几何量化,其可以由边界框和对应区域qp指定。图10示出了根据本公开实施例的与不同的区域qp相关联的三个边界框。[0154]为了发信号通知基于区域的qp变化,首先可以通过开始位置和结束位置或者通过开始位置和每个维度的长度来指定边界框。边界框可以相互重叠或不重叠。对于指定了多个区域qp的重叠区域,可以将多个区域qp中的一个应用于重叠区域,例如第一个指定区域、最后一个指定区域、所有区域中的最大区域、所有区域中的最小区域、所有区域的平均值或所有区域的中值等。[0155]其次,每个边界框的区域qp可以通过它们的值直接发信号通知,或者通过差值(例如,两个qp之间的差)发信号通知,或者作为与默认值的差值发信号通知。注意,因为除了区域qp之外,增量qp也可以发信号通知并且应用于每个单个区域,因此每个区域的最终qp可以在基于区域的自适应几何量化中变化。在这种情况下,区域qp对每个区域执行类似基本qp的操作。在以下实施例中,在比特流的序列头中发信号通知区域qp。注意,也可以在切片头中发信号通知区域qp。[0156]在实施例中,区域由开始位置和结束位置指定,并且为每个区域指定对应的区域qp值,如表10所示。[0157]表10[0158][0159][0160]如果变量sps_geo_region_qp_flag等于1,则指定启用基于区域的自适应量化。如果这样,变量sps_geo_region_qp_size_minus_one将区域数量指定为sps_geo_region_qp_size=sps_geo_region_qp_size_minus_one 1。[0161]然后,对于每个区域,变量sps_geo_region_qp_start_pos_x[i]、sps_geo_region_qp_start_pos_y[i]和sps_geo_region_qp_start_pos_z[i]指定在笛卡尔坐标中区域的开始位置,变量sps_geo_region_qp_end_pos_z[i]指定在笛卡尔坐标中区域的结束位置,变量sps_geo_region_qp[i]指定该区域对应的区域qp。在这种情况下,变量sps_geo_qp_base指定的qpbase用作语法中未指定的其余区域的默认qp。[0162]在实施例中,区域由开始位置和每个维度的长度来指定,并且为每个区域指定相应的区域qp值,如表11所示。[0163]表11[0164][0165][0166]变量sps_geo_region_qp_diff[i]通过与基本qp的差值将每个区域的对应qp指定为变量sps_geo_region_qp[i]=qpbase sps_geo_region_diff[i]。[0167]在这种情况下,变量sps_geo_qp_base指定的qpbase也用作语法中未指定的其余区域的默认qp。[0168]在实施例中,区域通过开始位置和每个维度的长度来指定,并且每个区域的qp值通过与默认值的差值来指定。在这种情况下,同时发信号通知变量sps_geo_region_qp_flag和sps_geo_delta_qp_signal_depth,因此通过发信号通知增量qp允许同一区域内的qp变化。注意,变量sps_geo_region_qp_flag也可以与变量sps_geo_delta_qp_signal_min_depth一起发信号通知。表12示出了示例性语法表。[0169]表12[0170][0171][0172]当八叉树分区深度低于指定的变量sps_geo_delta_qp_signal_depth时,变量sps_geo_qp_bese指定的qpbase用作默认qp。否则,由区域qp指定qp。[0173]4、发信号通知增量qp[0174]以上部分描述了用于发信号通知qp变化的示例性高级语法,本部分进一步描述使用八叉树编码发信号通知增量qp的方式。八叉树分区的每个子节点可以应用不同的qp,即ql,k。可以直接发信号通知ql,k的值,或者可以发信号通知其与预测的差值(增量qp)以节省比特。然后,子立方体(或子节点)的增量qp可以表示为δl,k=ql,k‑pl,k,其中pl,k是增量qp的预测值。[0175]在一些实施例中,为了发信号通知增量qp的值,首先发信号通知一个比特,以指示增量qp是否等于0。如果不是,则发信号通知另一个比特,以指示增量qp的符号,然后,例如通过exp‑golomb编解码,发信号通知其绝对值减1。注意,如果增量qp被限制为非负,则不发信号通知增量qp的符号。[0176]或者,也可以通过定义的查找表的索引发信号通知qp。该表对于编码器和解码器可以是固定的,也可以在比特流的开始处发信号通知。在这种情况下,可以通过查找表的差值索引来引用增量qp。[0177]在一个实施例中,增量qp的信令取决于变量sps_geo_delta_qp_signal_depth(或gsh_geo_delta_qp_signal_depth),其指定八叉树分区的深度,在此深度处可以发信号通知增量qp。表13示出了示例性语法表。[0178]表13[0179][0180][0181]当depth==sps_geo_delta_qp_signal_depth时,从比特流中解码当前节点的增量qp,即δl,k。当depth!=sps_geo_delta_qp_signal_depth时,δl,k=0。如果δl,k是从比特流中解码的,则其可以重建如下:[0182][0183]变量nodex[depth][nodeidx]、nodey[depth][nodeidx]和nodez[depth][nodeidx]表示在给定深度处按解码顺序的节点nodeidx的x、y和z坐标。变量numnodesatdepth[depth]表示在给定深度处待解码的节点数。[0184]变量depthshift指定由ql,k引起的深度值变化,如下所示,depthshift=ilog2(ql,k),其中ilog2(v)计算小于或等于v的log2的最大整数。ql,k是应用于当前子节点的qp,可以计算为ql,k=pl,k δl,k,其中pl,k是增量qp的预测值。导出的参数depthshift会影响当前节点的几何编码,如表14所示。[0185]表14[0186][0187][0188]当depth depthshift>=maxgeometryoctreedepth–1时,表示ql,k大于最大值,因此当前节点中的所有点都被量化为一个点。在这种情况下,可以结束八叉树分区。对于几何编码中的直接模式,编码长度可以改为childnodesizelog2–depthshift,其中变量childnodesizelog2表示子节点大小。[0189]在实施例中,增量qp的信令取决于变量sps_geo_delta_qp_signal_min_depth(或gsh_geo_delta_qp_signal_min_depth),其指定发信号通知从八叉树分区的某个深度到qp增量以上的所有深度。表15示出了示例性语法表。[0190]表15[0191][0192][0193]在这种情况下,当depth>=sps_geo_delta_qp_signal_min_depth时,从比特流中解码当前节点的增量qp,即ql,k。当depth<sps_geo_delta_qp_signal_min_depth时,ql,k=0。[0194]在实施例中,增量qp被限制为非负,因此不发信号通知增量qp的符号。表16示出了示例性语法表。[0195]表16[0196][0197]在这种情况下,如果ql,k是从比特流中解码的,则它可以重建如下[0198]if(geo_delta_qp_is_nonzero_flag){[0199]ql,k=geo_delta_qp_abs_minus_one 1[0200]}else{[0201]ql,k=0[0202]}。[0203]在实施例中,qp被限制为2的幂的数字,因此增量qp的值也可以以log2的形式发信号通知。表17示出了示例性语法表。[0204]表17[0205][0206][0207]在这种情况下,如果ql,k是从比特流中解码的,则它可以重建如下:[0208]if(geo_delta_qp_is_nonzero_flag){[0209]ql,k=geo_delta_qp_log2_abs_minus_one 1[0210]}else{[0211]ql,k=0[0212]}。[0213]在实施例中,预测pl,k和解码后的δl,k都是log2的形式。因此,当前节点(或子立方体)的最终qp被指定为并且depthshift=pl,k δl,k。[0214]在实施例中,qp查找表是固定的或者由变量sps_geo_qp_table_flag和sps_geo_qp_table_element[i]指定。在这种情况下,qp变化可以通过qp表中索引的差值来指定。表18示出了示例性语法表。[0215]表18[0216][0217][0218]如果变量sps_geo_qp_table_flag等于1,则解码后的δl,k指定查找表中索引的差值,并且当前节点(或子立方体)的最终qp被指定为其中qti是qp表中的第i个元素,pl,k是查找表中索引的预测值。[0219]如果变量sps_geo_qp_table_flag等于0,则表示未构造查找表,当前节点的最终qp被指定为ql,k=pl,k δl,k,其中pl,k在这种情况下是增量qp值的预测值。[0220]在实施例中,qp查找表是固定的或者由sps_geo_qp_table_flag和sps_geo_qp_table_element[i]指定。在这种情况下,qp变化可以通过qp表中的索引来指定。表19示出了示例性语法表。[0221]表19[0222][0223]如果变量spsgeoqptableflag等于1,则解码后的δl,k指定查找表中的索引,并且当前节点(或子立方体)的最终qp被指定为其中qti是qp表中的第i个元素。[0224]如果变量sps_geo_qp_table_flag等于0,则表示未构造查找表,当前节点(或子立方体)的最终qp被指定为ql,k=δl,k。在这种情况下,qp由δl,k直接指定,无需预测值。[0225]在实施例中,增量qp查找表是固定的或者由变量sps_geo_delta_qp_table_flag和sps_geo_delta_qp_table_element[i]指定。表20示出了示例性语法表。[0226]表20[0227][0228]如果变量sps_geo_delta_qp_table_flag等于1,则已解码的δl,k指定增量qp查找表中的索引,并且当前节点的最终qp被指定为,其中dqti是增量qp表中的第i个元素,pl,k是增量qp的预测值。[0229]5、增量qp的预测值[0230]根据本公开的各方面,增量qp的预测值,即pl,k,可以来自当前节点的父节点的qp,即或者可以来自相同分区深度中当前节点的先前已编码的兄弟节点(siblingnode)之一的qp,即pl,k=ql,j,其中j<k,或者可以来自基本qp,即pl,k=qpbase,或者可以为前述预测值的任意组合(例如,平均值或中值)。[0231]在实施例中,对于所有情况,预测值的选择可以是固定的。在替代实施例中,可以构建预测值的候选列表,并且可以发信号通知列表的索引,以指示应用了哪个预测值。当解析八叉树分区时,可以在序列头或切片头或几何切片数据中指定该索引。[0232]在实施例中,指示预测值的源的索引在序列头中指定,如表21所示。[0233]表21[0234][0235]如果变量sps_geo_delta_qp_predict_from_index等于0,则指定预测值来自基本qp,即pl,k=qpbase。如果变量sps_geo_delta_qp_predict_from_index等于1,则指定预测值来自父节点的qp,即如果变量sps_geo_delta_qp_predict_from_index等于2,则指定预测值来自相同分区深度中先前已编码的兄弟节点的qp,即pl,k=ql,k‑1。[0236]6、八叉树级别几何量化[0237]根据本公开的各方面,在某个八叉树分区深度处应用所提出的自适应几何量化,其中该深度在高级语法中指定。[0238]在实施例中,将控制标志添加到几何参数集,以指示是否启用qp变化的信令。如果启用,则在发信号通知qp差值时,将基本qp作为预测值发信号通知。表22示出了示例性语法表。[0239]表22[0240][0241][0242]如果变量gps_geo_delta_qp_flag等于1,则指定启用qp变化的信令。如果变量gps_geo_delta_qp_flag等于0,则指定禁用qp变化的信令。如果启用qp变化的信令,则变量gps_geo_qp_base将可用于发信号通知qp差值的基本qp指定为baseqp[0243]gps_geo_qp_base。[0244]表23示出了几何切片头中的语法变化。[0245]表23[0246][0247]如果变量gsh_geo_octree_delta_qp_flag等于1,则指定在当前切片中启用基于八叉树的增量qp信令。如果变量gsh_geo_octree_delta_qp_flag等于0,则指定在当前切片中禁用基于八叉树的增量qp信令。如果启用基于八叉树的增量qp信令,则变量gsh_geo_octree_delta_qp_depth指定八叉树分区深度,在此深度处发信号通知qp的增量。[0248]在实施例中,为了发信号通知增量qp的值,首先发信号通知一个比特,以指示增量qp是否等于0。如果不是,则编码并发信号通知另一比特,以指示增量qp的符号,并且其绝对值减去1,然后通过exp‑golomb编码进行编码。表24示出了几何切片数据中的增量qp信令。[0249]表24[0250][0251]变量geometrynodeoccupancycnt[depth][xn][yn][zn]表示在八叉树的给定深度的位置(xn,yn,zn)处几何八叉树节点中存在的子节点的数量。变量geometrynodeoccupancycnt的未定义值被视为0。[0252]变量nodex[depth][idx]、nodey[depth][idx]和nodez[depth][idx]表示在给定深度处按解码顺序的第idx个节点的x、y和z坐标。变量numnodesatdepth[depth]表示在给定深度处待解码的节点的数量。[0253]变量nodebasex[depth][idx]、nodebasey[depth][idx]和nodebasez[depth][idx]表示在给定深度处按解码顺序的第idx个节点的量化位置的基本x、y和z坐标。变量nodequantx[depth][idx]、nodequanty[depth][idx]和nodequantz[depth][idx]表示相对于在给定深度处按解码顺序的第idx个节点的基本位置的、量化后的x、y和z坐标。变量geooctreeqp[depth][nodeidx]指示在给定深度处按解码顺序的第nodeidx个节点的qp。[0254]变量nodex、nodey、nodez、nodebasex、nodebasey、nodebasez、nodequantx、nodequanty、nodequantz、geoqp、numnodesatdepth、geometrynodeoccupancycnt和geometrynodeoccupancymap初始化如下:[0255]nodex[0]=nodey[0]=nodez[0]=0[0256]numnodesatdepth[0]=1[0257]geometrynodeoccupancycnt[‑1][0][0][0]=8[0258]geooctreeqp[0]=4[0259]nodebasex[0]=nodebasey[0]=nodebasez[0]=0[0260]nodequantx[0]=nodequanty[0]=nodequantz[0]=0。[0261]当变量gsh_geo_octree_delta_qp_flag等于1,并且深度等于变量gsh_geo_octree_delta_qp_depth时,当前节点的增量qp,即变量geo_octree_dqp,被指定如下:[0262][0263]当变量geo_octree_dqp被解码时,变量geooctreeqp[depth][nodeidx]被更新如下:[0264]geooctreeqp[depth][nodeidx]=geo_octree_dqp baseqp。[0265]当前节点的qs可以导出如下:[0266]geoqp=geooctreeqp[depth][nodeidx],[0267]geooctreeqs=geomlevelscale[geoqp%6]<<(geoqp/6),[0268]其中变量geomlevelscale[k]={659445,741374,831472,933892,1048576,1175576},k=0…5。[0269]变量depthshift指定几何位深度的移位,如下所示:[0270]depthshift=floor((geoqp–4)/6)。[0271]导出的参数depthshift会影响当前节点的几何编码,如表25所示。[0272]表25[0273][0274][0275]当(depth depthshift)>=maxgeometryoctreedepth–1时,表示内部量化足够大,使得当前子立方体或当前节点中的所有点都被量化为一个点。在这种情况下,因为变量occupancymap可以推断为1,因此可以结束八叉树分区,并且可以跳过占用编码。对于几何编码中推断的直接编码模式(idcm),编码长度更改为childnodesizelog2–depthshift,其中变量childnodesizelog2表示子节点大小。[0276]当变量direct_mode_flag等于0时,以下适用:[0277][0278][0279]7、八叉树级别几何量化的八叉树节点解码过程[0280]该过程的输入包括:(1)八叉树节点位置(深度,nodeidx),其指定当前几何八叉树节点在打包的几何八叉树中的位置;(2)空间位置(xn,yn,zn),其指定当前几何八叉树节点在当前切片中的位置;(3)空间位置(xnbase,ynbase,znbase),其指定当前几何八叉树节点在当前切片中的基本位置,其中应用具有qp的几何量化;以及(4)空间位置(xnquant,ynquant,znquant),其指定当前几何八叉树节点在当前切片中相对于(xnbase,ynbase,znbase)指定的基本位置的量化位置。[0281]该过程的输出是修改后的数组pointpos和更新后的变量pointcount。[0282]如果两个深度都不等于maxgeometryoctreedepth‑1,并且变量direct_mode_flag等于0,则该过程不输出任何点。否则,如果深度等于maxgeometryoctreedepth‑1,或者变量direct_mode_flag等于1,则该过程的其余部分生成一个或多个点位置。[0283]每个被占用子节点中点的空间位置可以根据每个子节点中重复点的数量和直接编码位置的使用来确定,如下所示:[0284][0285][0286]8、切片级别几何量化[0287]根据本公开的各方面,可以在切片级别指定qp变化,指示每个切片可以分配不同的qp。[0288]在实施例中,将激活标志添加到几何参数集,以指示是否在切片级别启用qp变化的信令。如果启用,则在发信号通知qp差值时,将基本qp作为预测值发信号通知。[0289]表26示出了几何参数集中的语法变化。[0290]表26[0291][0292]如果变量gps_geo_delta_qp_flag等于1,则指定启用增量qp信令。如果变量gps_geo_delta_qp_flag等于0,则指定禁用增量qp信令。如果启用增量qp信令,变量gps_geo_qp_base将可用于发信号通知qp差值的基本qp指定为baseqp=gps_geo_qp_base。表27示出了几何切片头中的语法变化。[0293]表27[0294][0295][0296]变量gsh_geo_slice_dqp将可应用于当前切片的qp指定为sliceqp=gsh_geo_slice_dqp baseqp。然后,qs可以导出为geosliceqs=geomlevelscale[sliceqp%6]<<(sliceqp/6),其中geomlevelscale[k]={659445,741374,831472,933892,1048576,1175576},k=0…5。[0297]在当前切片的八叉树解码过程完成后,应用以下解量化过程:[0298][0299]9、切片级别和八叉树级别几何量化的组合[0300]根据本公开的各方面,基于切片的几何量化可以与基于八叉树的几何量化对齐。不是应用两个内部量化步骤,而是可以将它们合并为一个操作,即八叉树级别中的内部量化。解决方案如下:(1)如果只启用基于八叉树的量化,则与基于八叉树的方案相同,其中在某一指定的八叉树分区深度处应用内部量化;(2)如果只启用基于切片的量化,则可以在第一个八叉树分区深度中应用内部量化;以及(3)如果基于切片的量化和基于八叉树的量化都被启用,则可以在基于八叉树的方案中指定的八叉树分区深度处应用实际量化。切片级别确定的qp可用作基本qp,用于在八叉树级别发信号通知增量qp。[0301]在实施例中,将控制标志添加到几何参数集,以指示是否启用qp变化的信令。如果启用,则当在切片级别发信号通知qp差值时,将基本qp作为预测值发信号通知。[0302]表28示出了几何参数集中的语法变化。[0303]表28[0304][0305][0306]如果变量gps_geo_delta_qp_flag等于1,则指定启用qp变化的信令。如果变量gps_geo_delta_qp_flag等于0,则指定禁用qp变化的信令。如果启用qp变化的信令,则变量gps_geo_qp_base将可用于发信号通知qp差值的基本qp指定为baseqp=gps_geo_qp_base。[0307]表29示出了几何切片头中的语法变化。[0308]表29[0309][0310][0311]变量gsh_geo_slice_dqp将作为当前切片中的基本qp应用的qp指定为sliceqp=gsh_geo_slice_dqp baseqp。[0312]如果变量gsh_geo_octree_delta_qp_flag等于1,则指定在当前切片中启用基于八叉树的增量qp的信令。如果变量gsh_geo_octree_delta_qp_flag等于0,则指定在当前切片中禁用基于八叉树的增量qp的信令。如果变量gsh_geo_octree_delta_qp_flag等于1,则变量gsh_geo_octree_delta_qp_depth指定八叉树分区的深度,在此深度处发信号通知qp的增量。如果变量gsh_geo_octree_delta_qp_flag等于0,则变量gsh_geo_octree_delta_qp_depth被推断为0,表示可以在第一个八叉树分区深度处应用量化。[0313]在实施例中,为了在八叉树级别发信号通知增量qp的值,首先发信号通知一个比特,以指示增量qp是否等于0。如果不是,则编码并发信号通知另一个比特,以指示增量qp的符号,并且其绝对值减去1,然后通过exp‑golomb编码进行编码。表30示出了几何切片数据中的增量qp的信令。[0314]表30[0315][0316][0317]变量geometrynodeoccupancycnt[depth][xn][yn][zn]表示在八叉树的给定深度的位置(xn,yn,zn)处几何八叉树节点中存在的子节点的数量。变量geometrynodeoccupancycnt的未定义值被视为0。[0318]变量nodex[depth][idx]、nodey[depth][idx]和nodez[depth][idx]表示在给定深度处按解码顺序的第idx个节点的x、y和z坐标。变量numnodesatdepth[depth]表示在给定深度处待解码的节点的数量。[0319]变量nodebasex[depth][idx]、nodebasey[depth][idx]和nodebasez[depth][idx]表示在给定深度处按解码顺序的第idx个节点的量化位置的基本x、y和z坐标。变量nodequantx[depth][idx],nodequanty[depth][idx]和nodequantz[depth][idx]表示相对于在给定深度处按解码顺序的第idx个节点的基本位置的、量化后的x、y和z坐标。变量geooctreeqp[depth][nodeidx]指示在给定深度处按解码顺序的第nodeidx个节点的qp。[0320]变量nodex、nodey、nodez、nodebasex、nodebasey、nodebasez、nodequantx、nodequanty、nodequantz、geoqp、numnodesatdepth、geometrynodeoccupancycnt和geometrynodeoccupancymap初始化如下:[0321]nodex[0]=nodey[0]=nodez[0]=0[0322]numnodesatdepth[0]=1[0323]geometrynodeoccupancycnt[‑1][0][0][0]=8[0324]geooctreeqp[0]=4[0325]nodebasex[0]=nodebasey[0]=nodebasez[0]=0[0326]nodequantx[0]=nodequanty[0]=nodequantz[0]=0。[0327]当变量gsh_geo_octree_delta_qp_flag等于1,并且深度等于变量[0328]gsh_geo_octree_delta_qp_depth时,当前节点的增量qp,即变量geo_octree_dqp,被指定如下:[0329][0330][0331]当变量geo_octree_dqp被解码时,变量geooctreeqp[depth][nodeidx]被更新为变量geooctreeqp[depth][nodeidx]=geo_octree_dqp baseqp。[0332]当前节点的qs可以导出如下:[0333]geoqp=geooctreeqp[depth][nodeidx],[0334]geooctreeqs=geomlevelscale[geoqp%6]<<(geoqp/6),[0335]其中geomlevelscale[k]={659445,741374,831472,933892,1048576,1175576},k=0…5。[0336]变量depthshift将几何体位深度的移位指定为depthshift=floor((geoqp–4)/6)。[0337]导出的参数depthshift会影响当前节点的几何编码,如表31所示。[0338]表31[0339][0340][0341]当(depth depthshift)>=maxgeometryoctreedepth–1时,表示内部量化足够大,使得当前节点中的所有点都被量化为一个点。在这种情况下,因为变量occupancymap可以推断为1,因此可以结束八叉树分区,并且跳过占用编码。对于几何编码中的idcm模式,编码长度更改为childnodesizelog2–depthshift,其中变量childnodesizelog2表示子节点大小。[0342]当变量direct_mode_flag等于0时,以下适用:[0343][0344]10、用于切片级别和八叉树级别几何量化的组合的八叉树节点解码过程[0345]该过程的输入包括:(1)八叉树节点位置(深度,nodeidx),其指定当前几何八叉树节点在打包的几何八叉树中的位置;(2)空间位置(xn,yn,zn),其指定当前几何八叉树节点在当前切片中的位置;(3)空间位置(xnbase,ynbase,znbase),其指定当前几何八叉树节点在当前切片中的基本位置,其中应用具有qp的几何量化;以及(4)空间位置(xnquant,ynquant,znquant),其指定当前几何八叉树节点在当前切片中相对于(xnbase,ynbase,znbase)指定的基本位置的量化位置。[0346]该过程的输出是修改后的数组pointpos和更新后的变量pointcount。[0347]如果两个深度都不等于maxgeometryoctreedepth‑1,并且变量direct_mode_flag等于0,则该过程不输出任何点。否则,如果深度等于maxgeometryoctreedepth‑1,或者变量direct_mode_flag等于1,则该过程的其余部分生成一个或多个点位置。[0348]每个被占用子节点中点的空间位置可以根据每个子节点中重复点的数量和直接编码位置的使用来确定,如下所示:[0349][0350][0351]11、对所提出的自适应几何量化的约束[0352]根据本公开的各方面,所提出的自适应几何量化可以针对不同的几何八叉树节点允许不同的量化步长。可以对几何量化方案引入约束以简化该过程。[0353]在实施例中,仅允许对特定分区深度处的节点应用自适应几何量化。[0354]在实施例中,量化步长只能是2的幂的数字。在这种情况下,可以以log2的形式发信号通知量化步长的增量,并且可以通过位移位来简化量化/解量化的实现。[0355]在实施例中,一些几何相关编解码工具会与自适应几何量化交互。为了避免交互,可以利用额外的约束。例如,在一些情况下可以禁用平面编码模式。在仅允许在特定分区深度处应用自适应几何量化的实施例中,可以在指定深度以上的深度处禁用平面编码模式。[0356]v.隐式几何分区[0357]本部分介绍隐式几何分区。它描述了如何更新两个参数k和m以及如何基于k和m确定分区类型和方向。[0358]首先,在表32所示的几何参数集中指定一个控制标志和两个参数k和m。[0359]表32[0360][0361][0362]如果变量gps_implicit_geom_partition_flag等于1,则指定对序列或切片启用隐式几何分区。如果变量gps_implicit_geom_partition_flag等于0,则指定对序列或切片禁用隐式几何分区。如果变量gps_implicit_geom_partition_flag等于1,则发信号通知以下两个参数:(1)gps_max_num_implicit_qtbt_before_ot指定在ot分区之前隐式qt和bt分区的最大数量,即,k=gps_max_num_implicit_qtbt_before_ot;(2)gps_min_size_implicit_qtbt指定隐式qt和bt分区的最小大小,即,m=gps_min_size_implicit_qtbt。[0363]当所有维度都小于或等于m时,该参数防止隐式qt和bt分区。[0364]如果启用隐式qtbt,则边界框的大小由几何切片头中的三个值来指定,如表33所示。[0365]表33[0366][0367][0368]变量gsh_log2_max_nodesize_x指定x维中的边界框大小,即解码过程中使用的maxnodesizexlog2,如下所示:[0369]maxnodesizexlog2=gsh_log2_max_nodesize_x,[0370]maxnodesizex=1<<maxnodesizexlog2。[0371]变量gsh_log2_max_nodesize_y_minus_x指定y维中的边界框大小,即解码过程中使用的maxnodesizeylog2,如下所示:[0372]maxnodesizeylog2=gsh_log2_max_nodesize_y_minus_x maxnodesizexlog2,[0373]maxnodesizey=1<<maxnodesizeylog2。[0374]变量gsh_log2_max_nodesize_z_minus_y指定z维中的边界框大小,即解码过程中使用的maxnodesizezlog2,如下所示:[0375]maxnodesizezlog2=gsh_log2_max_nodesize_z_minus_y maxnodesizeylog2,[0376]maxnodesizez=1<<maxnodesizezlog2。[0377]然后,参数k和m更新如下:[0378][0379]表34示出了几何切片数据的示例性修改。表35示出了示例性语法表。[0380]表34[0381][0382][0383]表35[0384][0385]变量maxgeometryoctreedepth导出如下:[0386]maxgeometryoctreedepth=gsh_log2_max_nodesize‑log2_trisoup_node_size。[0387]变量nodex[depthx][nodeidx]、nodey[depthy][nodeidx]和nodez[depthz][nodeidx]表示在给定深度处按解码顺序的第nodeidx个节点的x、y和z坐标。变量numnodesatdepth[depth]表示在给定深度处待解码的节点的数量。变量depthx、depthy和depthz分别指定x、y和z维中的深度。变量partitionskip指定分区类型和方向,如表36所示。变量partitionskip使用三个位b_xb_yb_z以二进制形式表示,这三个位分别指定是否沿x、y和z维跳过分区。例如,b_x=1表示沿x维没有分区。表37示出了示例性语法表。[0388]表36[0389]分区沿x‑y轴的qt沿x‑z轴的qt沿y‑z轴的qtot分区跳过b001b010b100b000分区沿x轴的bt沿y轴的bt沿z轴的bt分区跳过b011b101b110[0390]表37[0391][0392]变量childnodesizexlog2、childnodesizeylog2和childnodesizezlog2指定每个维度的子节点大小,它们由隐式qt和bt分区确定,如下所示:[0393][0394]vi.并行八叉树编码[0395]在本部分中,进一步描述并行八叉树编码中上下文和历史变量的重新初始化的细节。[0396]假设八叉树分区深度为d=0,1,...,m‑1,其中m是八叉树分区深度的总数。在以下实施例中,并行八叉树编码应用于从dmin到m‑1的深度,其中0<dmin≤m‑1,表示这些深度的八叉树编码可以并行执行。在以下实施例中,深度d(dmin≤d≤m‑1)中的上下文变量和所有其它相关上下文和历史变量的概率被重新初始化为与深度dmin‑1编码后的概率相同,即。在这种情况下,需要提前缓存的状态,以用于其余八叉树分区深度。[0397]当八叉树分区达到指定深度dmin时,需要将用于逐位编码的上下文变量的概率存储到存储器中。对于将并行进行的剩余八叉树分区深度,需要重新初始化上下文变量的概率,使其与存储的概率相同。[0398]该过程在开始编码每个八叉树深度时被调用。如果(gps_parallel_octree_coding_flag&&depth==dmin),ctxmap缓存在条目ctxmapsvld[i]=ctxmap[i]中,其中i在0到numctx‑1的范围内。如果(gps_parallel_octree_coding_flag&&depth>=dmin),在条目ctxmap[i]=ctxmapsvld[i]中恢复ctxmap,其中i在0到numctx‑1的范围内。其中numctx表示上下文的总数。[0399]当八叉树分区达到指定深度dmin时,需要将用于逐字节编码的查找表的值存储到存储器中。对于将并行进行的剩余八叉树分区深度,需要重新初始化查找表的值,使其与存储的值相同。[0400]需要存储和恢复的相关变量包括:(1)值lut0[k]的数组,用于存储最频繁符号,其中k在0到31的范围内(包括端值);(2)值lut0histogram[k]的数组,用于存储符号出现(occurrence),其中k在0到255的范围内(包括端值);(3)两个变量lut0updateperiod和lut0symbolsuntilupdate,分别用于存储lut0的更新周期和下一次更新之前剩余的符号数;(4)变量lut0reset,用于指定在下一个lut0更新期间是否应重置lut0;(5)值lut1[k]的数组,用于存储具有不同值的最后16个已解码符号,其中k在0到15的范围内(包括端值);(6)变量lut1indexlastsymbol,用于存储最后一个已解码符号的索引;(7)一组自适应二进制算术上下文ctxlut0hit,ctxlut1hit和ctxsymbolbit;(8)如果limitedcontextmode等于1,则自适应二进制算术上下文ctxlut0index的大小为5,否则(即limitedcontextmode等于0)为31。变量limitedcontextmode指定是否使用有限数量的上下文。[0401]该重新初始化的过程在开始编码每个八叉树深度时被调用,如下所示:[0402][0403]当八叉树分区达到指定深度dmin时,需要将平面编码模式的历史值存储到存储器中。对于将并行进行的剩余八叉树分区深度,需要重新初始化历史值,使其与存储的值相同。[0404]该重新初始化的过程在开始编码每个八叉树深度时被调用,如下所示:[0405][0406]在一个实施例中,启用并行八叉树编码的最小八叉树深度(即d_min)由tmc13中设置的几何参数中的gps_parallel_octree_coding_max_nodesize_log2_minus1来指定,如表38所示。[0407]表38[0408][0409]变量gps_parallel_octree_coding_max_nodesize_log2指定启用并行八叉树编码的最小八叉树深度,即dmin,如下所示:[0410]dmin=m‑gps_parallel_octree_coding_max_nodesize_log2_minus1‑1。[0411]在这种情况下,变量gps_parallel_octree_coding_flag不发信号通知,但是可以从变量gps_parallel_octree_coding_max_nodesize_log2_minus1推断出来。如果变量gps_parallel_octree_coding_max_nodesize_log2_minus1等于零,则变量gps_parallel_octree_coding_flag被推断为0。否则,变量gps_parallel_octree_coding_flag被推断为1。[0412]vii.流程图[0413]图11示出了根据本公开实施例的概述过程(1100)的流程图。过程(1100)可用于对点云进行编码的编码过程中。在各种实施例中,过程(1100)由处理电路执行,例如终端装置(110)中的处理电路、执行编码器(203)的功能的处理电路、执行编码器(300)的功能的处理电路等。在一些实施例中,过程(1100)以软件指令实现,因此,当处理电路执行该软件指令时,处理电路执行过程(1100)。该过程从(s1110)开始。[0414]在(s1110),过程(1100)从已编码比特流中解码量化空间中的点云的语法信息,所述语法信息包括所述点云的边界框的划分信息和自适应几何量化信息。然后,过程(1100)进行到步骤(s1120)。[0415]在(s1120),过程(1100)基于所述划分信息,将所述点云的边界框划分为多个部分。所述部分可以对应于分区或区域,如上所述。然后,过程(1100)进行到步骤(s1130)。[0416]在(s1130),过程(1100)基于所述自适应几何量化信息,确定所述边界框中的所述多个部分的量化参数。然后,过程(1100)进行到步骤(s1140)。[0417]在(s1140),过程(1100)基于所述边界框中的各个部分的量化参数,重建所述点云的边界框中的每个部分中的点。[0418]在实施例中,基于所述划分信息中包括的八叉树分区结构,将所述边界框划分为多个分区。[0419]在实施例中,基于所述划分信息中包括的多个区域的坐标信息,将所述边界框划分为所述多个区域。[0420]在实施例中,基于所述自适应几何量化信息中包括的基本量化参数,确定所述量化参数。[0421]在实施例中,当第一语法元素指示启用一个或多个增量量化参数的信令时,基于所述一个或多个增量量化参数确定所述量化参数。所述第一语法元素包括在所述自适应几何量化信息中。[0422]在实施例中,基于所述第一语法元素指示启用所述一个或多个增量量化参数的信令,所述自适应几何量化信息包括第二语法元素和第三语法元素的其中之一。所述第二语法元素指示八分树分区深度,在所述八叉树分区深度处允许所述一个或多个增量量化参数的信令,所述第三语法元素指示最小八叉树分区深度,从所述最小八叉树分区深度处允许所述一个或多个增量量化参数的信令。[0423]在实施例中,所述量化参数、所述基本量化参数、以及所述一个或多个增量量化参数中的至少一个是2的幂。[0424]在实施例中,(i)所述量化参数和(ii)所述一个或多个增量量化参数的其中之一包括在查找表中。[0425]在实施例中,所述自适应几何量化信息包括以下其中之一:(i)所述查找表的索引,以及(ii)所述索引与所述索引的预测值之间的差。[0426]在实施例中,基于与所述各个部分相对应的节点的父节点的量化参数、相同分区深度中与所述各个部分相对应的节点的先前已编码兄弟节点的量化参数、以及所述基本量化参数中的至少一个,预测所述边界框中的每个部分的增量量化参数。[0427]在实施例中,所述一个或多个增量量化参数基于量化参数预测值的候选列表来预测。[0428]viii.计算机系统[0429]上述技术可以通过计算机可读指令实现为计算机软件,并且物理地存储在一个或多个计算机可读介质中。例如,图12示出了计算机系统(1200),其适于实现所公开主题的某些实施例。[0430]所述计算机软件可通过任何合适的机器代码或计算机语言进行编码,通过汇编、编译、链接等机制创建包括指令的代码,所述指令可由一个或多个计算机中央处理单元(cpu),图形处理单元(gpu)等直接执行或通过译码、微代码等方式执行。[0431]所述指令可以在各种类型的计算机或其组件上执行,包括例如个人计算机、平板电脑、服务器、智能手机、游戏设备、物联网设备等。[0432]图12所示的用于计算机系统(1200)的组件本质上是示例性的,并不用于对实现本公开实施例的计算机软件的使用范围或功能进行任何限制。也不应将组件的配置解释为与计算机系统(1200)的示例性实施例中所示的任一组件或其组合具有任何依赖性或要求。[0433]计算机系统(1200)可以包括某些人机界面输入设备。这种人机界面输入设备可以通过触觉输入(如:键盘输入、滑动、数据手套移动)、音频输入(如:声音、掌声)、视觉输入(如:手势)、嗅觉输入(未示出),对一个或多个人类用户的输入做出响应。所述人机界面设备还可用于捕获某些媒体,气与人类有意识的输入不必直接相关,如音频(例如:语音、音乐、环境声音)、图像(例如:扫描图像、从静止影像相机获得的摄影图像)、视频(例如二维视频、包括立体视频的三维视频)。[0434]人机界面输入设备可包括以下中的一个或多个(仅绘出其中一个):键盘(1201)、鼠标(1202)、触控板(1203)、触摸屏(1210)、数据手套(未示出)、操纵杆(1205)、麦克风(1206)、扫描仪(1207)、照相机(1208)。[0435]计算机系统(1200)还可以包括某些人机界面输出设备。这种人机界面输出设备可以通过例如触觉输出、声音、光和嗅觉/味觉来刺激一个或多个人类用户的感觉。这样的人机界面输出设备可包括触觉输出设备(例如通过触摸屏(1210)、数据手套(未示出)或操纵杆(1205)的触觉反馈,但也可以有不用作输入设备的触觉反馈设备)、音频输出设备(例如,扬声器(1209)、耳机(未示出))、视觉输出设备(例如,包括阴极射线管屏幕、液晶屏幕、等离子屏幕、有机发光二极管屏的屏幕(1210),其中每一个都具有或没有触摸屏输入功能、每一个都具有或没有触觉反馈功能——其中一些可通过诸如立体画面输出的手段输出二维视觉输出或三维以上的输出;虚拟现实眼镜(未示出)、全息显示器和放烟箱(未示出))以及打印机(未示出)。[0436]计算机系统(1200)还可以包括人可访问的存储设备及其相关介质,如包括具有cd/dvd的高密度只读/可重写式光盘(cd/dvdrom/rw)(1220)或类似介质(1221)的光学介质、拇指驱动器(1222)、可移动硬盘驱动器或固体状态驱动器(1223),诸如磁带和软盘(未示出)的传统磁介质,诸如安全软件保护器(未示出)等的基于rom/asic/pld的专用设备,等等。[0437]本领域技术人员还应当理解,结合所公开的主题使用的术语“计算机可读介质”不包括传输介质、载波或其它瞬时信号。[0438]计算机系统(1200)还可以包括通往一个或多个通信网络的接口。例如,网络可以是无线的、有线的、光学的。网络还可为局域网、广域网、城域网、车载网络和工业网络、实时网络、延迟容忍网络等等。网络还包括以太网、无线局域网、蜂窝网络(gsm、3g、4g、5g、lte等)等局域网、电视有线或无线广域数字网络(包括有线电视、卫星电视、和地面广播电视)、车载和工业网络(包括canbus)等等。某些网络通常需要外部网络接口适配器,用于连接到某些通用数据端口或外围总线(1249)(例如,计算机系统(1200)的usb端口);其它系统通常通过连接到如下所述的系统总线集成到计算机系统(1200)的核心(例如,以太网接口集成到pc计算机系统或蜂窝网络接口集成到智能电话计算机系统)。通过使用这些网络中的任何一个,计算机系统(1200)可以与其它实体进行通信。所述通信可以是单向的,仅用于接收(例如,无线电视),单向的仅用于发送(例如can总线到某些can总线设备),或双向的,例如通过局域或广域数字网络到其它计算机系统。上述的每个网络和网络接口可使用某些协议和协议栈。[0439]上述的人机界面设备、人可访问的存储设备以及网络接口可以连接到计算机系统(1200)的核心(1240)。[0440]核心(1240)可包括一个或多个中央处理单元(cpu)(1241)、图形处理单元(gpu)(1242)、以现场可编程门阵列(fpga)(1243)形式的专用可编程处理单元、用于特定任务的硬件加速器(1244)等。这些设备以及只读存储器(rom)(1245)、随机存取存储器(1246)、内部大容量存储器(例如内部非用户可存取硬盘驱动器、固态硬盘等)(1247)等可通过系统总线(1248)进行连接。在某些计算机系统中,可以以一个或多个物理插头的形式访问系统总线(1248),以便可通过额外的中央处理单元、图形处理单元等进行扩展。外围装置可直接附接到核心的系统总线(1248),或通过外围总线(1249)进行连接。外围总线的体系结构包括外部外围组件互联pci、通用串行总线usb等。[0441]cpu(1241)、gpu(1242)、fpga(1243)和加速器(1244)可以执行某些指令,这些指令组合起来可以构成上述计算机代码。该计算机代码可以存储在rom(1245)或ram(1246)中。过渡数据也可以存储在ram(1246)中,而永久数据可以存储在例如内部大容量存储器(1247)中。通过使用高速缓冲存储器可实现对任何存储器设备的快速存储和检索,高速缓冲存储器可与一个或多个cpu(1241)、gpu(1242)、大容量存储器(1247)、rom(1245)、ram(1246)等紧密关联。[0442]所述计算机可读介质上可具有计算机代码,用于执行各种计算机实现的操作。介质和计算机代码可以是为本公开的目的而特别设计和构造的,也可以是计算机软件领域的技术人员所熟知和可用的介质和代码。[0443]作为实施例而非限制,具有体系结构(1200)的计算机系统,特别是核心(1240),可以作为处理器(包括cpu、gpu、fpga、加速器等)提供执行包含在一个或多个有形的计算机可读介质中的软件的功能。这种计算机可读介质可以是与上述的用户可访问的大容量存储器相关联的介质,以及具有非易失性的核心(1240)的特定存储器,例如核心内部大容量存储器(1247)或rom(1245)。实现本公开的各种实施例的软件可以存储在这种设备中并且由核心(1240)执行。根据特定需要,计算机可读介质可包括一个或一个以上存储设备或芯片。该软件可以使得核心(1240)特别是其中的处理器(包括cpu、gpu、fpga等)执行本文所述的特定过程或特定过程的特定部分,包括定义存储在ram(1246)中的数据结构以及根据软件定义的过程来修改这种数据结构。另外或作为替代,计算机系统可以提供逻辑硬连线或以其它方式包含在电路(例如,加速器(1244))中的功能,该电路可以代替软件或与软件一起运行以执行本文所述的特定过程或特定过程的特定部分。在适当的情况下,对软件的引用可以包括逻辑,反之亦然。在适当的情况下,对计算机可读介质的引用可包括存储执行软件的电路(如集成电路(ic)),包含执行逻辑的电路,或两者兼备。本公开包括任何合适的硬件和软件组合。[0444]虽然本公开已对多个示例性实施例进行了描述,但实施例的各种变更、排列和各种等同替换均属于本公开的范围内。因此应理解,本领域技术人员能够设计多种系统和方法,所述系统和方法虽然未在本文中明确示出或描述,但其体现了本公开的原则,因此属于本公开的精神和范围之内。当前第1页12当前第1页12
再多了解一些

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

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

相关文献