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

使用具有多种扫描顺序的八叉树的点云几何压缩的制作方法

2023-02-16 13:54:37 来源:中国专利 TAG:


1.本公开整体涉及包括多个点的点云的压缩和解压缩,每个点具有相关联的空间和/或属性信息。


背景技术:

2.各种类型的传感器(诸如光检测和测距(lidar)系统、3d相机、3d扫描仪等)可以捕获指示点在三维空间中的位置(例如在x、y和z平面中的位置)的数据。另外,此类系统除了针对相应点的空间信息之外还可捕获属性信息,诸如颜色信息(例如,rgb值)、强度属性、反射率属性、运动相关属性、模态属性或各种其他属性。在一些情况下,可以将附加属性分配给相应点,诸如捕获该点时的时间戳。由此类传感器捕获的点可以构成“点云”,该“点云”包括各自具有相关联的空间信息和一个或多个相关联的属性的一组点。在一些情况下,点云可以包括数千个点、数十万个点、数百万个点或甚至更多的点。另外,在一些情况下,与正由一个或多个传感器捕获的点云不同,可以例如在软件中生成点云。在任一种情况下,此类点云可包括大量数据,并且存储和传输这些点云可能成本高且耗时。


技术实现要素:

3.在一些实施方案中,解码器存储程序指令,这些程序指令当由一个或多个处理器执行时使得处理器接收位流,该位流包括针对已被压缩的点云生成的八叉树结构的节点的多个节点组。八叉树结构的节点限定点云的点在三维空间中的空间位置,并且每个节点组包括点云的八叉树结构的节点集合的子集。使用所接收到的位流,解码器的程序指令当由该一个或多个处理器执行时,还使得该一个或多个处理器基于位流的相应节点组中包括的节点来重构点云的几何结构。为了执行重构,程序指令使得该一个或多个处理器根据广度优先扫描顺序来扫描给定节点组内的节点,并且根据深度优先扫描顺序来选择要评估的下一个后续节点组。例如,通过允许熵编码器使用被确定用于相邻节点的上下文来通知熵解码过程,根据广度优先扫描顺序来扫描节点组内的节点可提高用于对节点组的节点的经熵编码占用信息进行解码的解码效率。同时,将广度优先扫描顺序限制于节点组中包括的节点可减少解码器处缓冲正被评估的大量节点(诸如,确定熵解码上下文)的存储器要求。另外,按深度优先扫描顺序选择要评估的下一个节点组可提高压缩/经编码的点云的弹性。例如,可依赖于比在根据广度优先扫描顺序来选择用于评估的节点组的情况下产生的节点组更少的更高层级节点组来到达叶节点。叶节点可限定要被包括在重构点云中的输出点的位置。因此,依赖于更少的节点组来到达叶节点可降低由于叶节点所依赖的居间节点组例如在压缩点云的传输中丢失而不能确定输出点的概率。
4.在一些实施方案中,编码器存储程序指令,这些程序指令当由一个或多个处理器执行时使得这些处理器接收要压缩的点云,其中该点云包括三维空间中的多个点。为了压缩点云,编码器的程序指令使得该一个或多个处理器生成包括八叉树结构的节点的占用信息的八叉树结构,其中该占用信息指示在该八叉树结构的给定层级处的立方体或子立方体
是否被点云的一个或多个点占用。编码器的程序指令还使得该一个或多个处理器将八叉树的节点分组为多个节点组,其中每个节点组包括高八叉树结构的节点的子集。另外,编码器的程序指令使得该一个或多个处理器生成位流,该位流包括:节点组中包括的八叉树的节点的经编码占用信息,其中根据广度优先扫描顺序来组织给定节点组内的节点,并且其中根据深度优先扫描顺序来在节点组之间选择要评估的后续节点组的节点的占用信息。
5.在一些实施方案中,解码器另外或另选地存储程序指令,这些程序指令当由一个或多个处理器执行时使得该一个或多个处理器接收位流,该位流包括点云的八叉树结构的切片,其中该点云的八叉树结构包括限定该点云中的点的空间位置的节点集合,并且其中该切片包括八叉树结构的节点集合的子集和指示切片的结束的标志。位流还包括点云的八叉树结构的两个或更多个附加切片,其中该两个或更多个附加切片各自包括该八叉树结构的节点集合的附加相应子集以及指示该两个或更多个附加切片的相应结束的附加相应标志。在一些实施方案中,该切片或该两个或更多个附加切片可各自包括多个节点组。另外,位流还包括:对于至少该两个或更多个附加切片,相应切片的节点中的至少一个节点在八叉树结构中的位置的指示,其中所指示位置使用以下项来指示:对八叉树结构的特定树层级和该树层级内的空间位置的引用或对八叉树结构的特定树层级和该树层级内的节点索引位置的引用。使用所接收到的位流,解码器的程序指令还使得该一个或多个处理器重构点云的几何结构,其中为了重构该几何结构,该两个或更多个附加切片的相应节点子集被解码器基于位流中包括的其相应指示位置而定位在八叉树结构中。例如,一旦切片的至少一个节点被正确地定位在八叉树结构中,则该切片的其他节点在八叉树结构中的位置可由解码器基于这些节点与切片的被指示了在八叉树结构中的位置的节点的关系来确定。以这种方式,如果切片丢失,或者如果切片被并行地解码,则可基于切片的该至少一个节点的所指示位置将切片的节点放置在八叉树结构中的正确位置中。
6.在一些实施方案中,编码器另外或另选地存储程序指令,这些程序指令当由一个或多个处理器执行时使得该一个或多个处理器接收要压缩的点云,其中该点云包括三维空间中的多个点。编码器的程序指令还使得该一个或多个处理器生成包括八叉树结构的节点的占用信息的八叉树结构,其中该占用信息指示:在八叉树结构的给定层级处,该八叉树的在该给定层级处的立方体或子立方体是否被点云的一个或多个点占用。另外,编码器的程序指令使得该一个或多个处理器将八叉树结构的节点组织成多个切片,该多个切片包括:八叉树结构的第一切片,该第一切片包括八叉树结构的节点集合的子集;和八叉树结构的两个或更多个附加切片,其中该两个或更多个附加切片各自包括该八叉树结构的节点集合的附加相应子集。另外,编码器的程序指令使得该一个或多个处理器对第一切片和该两个或更多个附加切片中包括的八叉树的节点的占用信息进行编码,并且生成针对点云的压缩版本的位流。该位流包括:第一切片中包括的节点的经编码占用信息和指示第一切片的结束的标志,以及该两个或更多个附加切片中包括的节点的经编码占用信息和指示该两个或更多个附加切片的相应结束的附加相应标志。另外,该位流包括:对于至少该两个或更多个附加切片,相应切片的节点中的至少一个节点在八叉树结构中的位置的指示。使用对八叉树结构的特定树层级和该树层级内的空间位置的引用或对八叉树结构的特定树层级和该树层级内的节点索引位置的引用来指示该指示。
附图说明
7.图1示出了根据一些实施方案的系统,该系统包括捕获关于点云的点的信息的传感器和压缩点云的属性信息和/或空间信息的编码器,其中压缩的点云信息被发送至解码器。
8.图2示出了根据一些实施方案的简化八叉树结构的示例。
9.图3示出了根据一些实施方案的八叉树结构的节点的示例性广度优先扫描顺序。
10.图4示出了根据一些实施方案的八叉树结构的节点的示例性深度优先扫描顺序。
11.图5示出了根据一些实施方案的被分组为多个节点组的八叉树结构的节点。
12.图6示出了根据一些实施方案的用于选择要评估的节点组的深度优先扫描顺序,其中根据广度优先扫描顺序来扫描相应节点组内的节点。
13.图7示出了根据一些实施方案的被分组为多个节点组的八叉树结构的节点,其中标志指示用于选择要评估的节点组的后续节点组的评估顺序。
14.图8示出了根据一些实施方案的按混合的深度优先/广度优先扫描顺序评估的节点组,其中在节点组的末端,标志的值或标志的缺乏表示要评估的下一个节点组是根据深度优先扫描顺序还是广度优先扫描顺序进行选择,并且其中相应节点组内的节点根据广度优先扫描顺序进行扫描。
15.图9示出了根据一些实施方案的被组织成多个切片的节点组,其中每个节点组包含指示节点组是否是给定切片的最后一个节点组的标志。
16.图10示出了根据一些实施方案的被组织成多个切片的节点组,其中每个节点组包含指示节点组是否是给定切片的最后一个节点组的标志,并且其中切片按其将例如由解码器接收的顺序来顺序地布置。
17.图11a和图11b示出了被组织成多个切片的节点组,其中每个节点组包含指示节点组是否是给定切片的最后节点组的标志。图11a和图11b还示出了根据一些实施方案的针对给定切片的一个或多个节点指示的熵上下文保存点。
18.图12a和图12b示出了被组织成多个切片的节点组,其中每个节点组包含指示节点组是否是给定切片的最后节点组的标志。图12a和图12b还示出了根据一些实施方案的针对给定切片的一个或多个节点指示的熵上下文保存点,其中切片中的至少一些切片是依赖于共同的上一切片的熵依赖切片。
19.图13示出了根据一些实施方案的子树在早期终止的示例性八叉树结构。
20.图14a示出了根据一些实施方案的可在八叉树的不同层级处使用的示例性立方体和子立方体,其中如果点被包括在与在八叉树结构的给定层级处的节点对应的立方体或子立方体体积中,则该节点被指示为被占用,并且如果点不被包括在与该节点对应的立方体或子立方体体积中,则该节点被指示为未被占用。
21.图14b示出了根据一些实施方案的与八叉树的给定节点对应的立方体或子立方体的示例性邻域配置,其中该邻域配置用于确定用于对该给定节点的占用信息进行编码和解码的熵编码/解码上下文。
22.图15a示出了根据一些实施方案的编码器的部件。
23.图15b示出了根据一些实施方案的解码器的部件。
24.图16示出了根据一些实施方案的在3d远程显示应用中正在使用的压缩点云信息。
25.图17示出了根据一些实施方案的在虚拟现实应用中正在使用的压缩点云信息。
26.图18示出了根据一些实施方案的可实现编码器或解码器的示例性计算机系统。
27.本说明书包括参考“一个实施方案”或“实施方案”。出现短语“在一个实施方案中”或“在实施方案中”并不一定是指同一个实施方案。特定特征、结构或特性可以与本公开一致的任何合适的方式被组合。
[0028]“包括”,该术语是开放式的。如在所附权利要求书中所使用的,该术语不排除附加结构或步骤。考虑以下引用的权利要求:“一种包括一个或多个处理器单元...的装置”此类权利要求不排除该装置包括附加部件(例如,网络接口单元、图形电路等)。
[0029]“被配置为”,各种单元、电路或其他部件可被描述为或叙述为“被配置为”执行一项或多项任务。在此类上下文中,“被配置为”用于通过指示单元/电路/部件包括在操作期间执行这一项或多项任务的结构(例如,电路)来暗指该结构。如此,单元/电路/部件据称可被配置为即使在指定的单元/电路/部件当前不可操作(例如,未接通)时也执行该任务。与“被配置为”语言一起使用的单元/电路/部件包括硬件——例如电路、存储可执行以实现操作的程序指令的存储器等。引用单元/电路/部件“被配置为”执行一项或多项任务明确地旨在针对该单元/电路/部件不援引35u.s.c.
§
112(f)。此外,“被配置为”可包括由软件和/或固件(例如,fpga或执行软件的通用处理器)操纵的通用结构(例如,通用电路)以能够执行待解决的一项或多项任务的方式操作。“被配置为”还可包括调整制造过程(例如,半导体制作设施),以制造适用于实现或执行一项或多项任务的设备(例如,集成电路)。
[0030]“第一”“第二”等。如本文所用,这些术语充当它们所在之前的名词的标签,并且不暗指任何类型的排序(例如,空间的、时间的、逻辑的等)。例如,缓冲电路在本文中可被描述为执行“第一”值和“第二”值的写入操作。术语“第一”和“第二”未必暗指第一值必须在第二值之前被写入。
[0031]“基于”。如本文所用,该术语用于描述影响确定的一个或多个因素。该术语不排除影响确定的附加因素。即,确定可仅基于这些因素或至少部分地基于这些因素。考虑短语“基于b来确定a”。在这种情况下,b为影响a的确定的因素,此类短语不排除a的确定也可基于c。在其他实例中,可仅基于b来确定a。
具体实施方式
[0032]
随着数据采集和显示技术变得更加先进,增强了(诸如经由lidar系统)捕获包括2d或3d空间中成千上万个点的点云的能力。而且,先进显示技术(诸如虚拟现实或增强现实系统)的发展增加了点云的潜在用途。然而,点云文件通常非常大,并且存储和传输这些点云文件可能成本高且耗时。例如,点云通过私有网络或公共网络(诸如互联网)的通信可能需要相当大量的时间和/或网络资源,使得点云数据的一些使用(诸如实时使用)可能受到限制。另外,点云文件的存储要求可能消耗存储点云文件的设备的显著量的存储容量,这也可能限制潜在应用使用点云数据。
[0033]
在一些实施方案中,编码器可用于生成压缩点云以降低与存储和传输大的点云文件相关联的成本和时间。在一些实施方案中,系统可包括压缩点云文件的属性信息和/或空间信息(在本文中也称为几何信息)的编码器,使得点云文件可比非压缩点云更快地被存储和传输,并且以点云文件可比非压缩点云占用更少的存储空间的方式被存储和传输。在一
些实施方案中,点云中的点的空间信息和/或属性的压缩可使点云能够实时地或几乎实时地通过网络传送。例如,系统可包括传感器,该传感器捕获关于该传感器所在环境中的点的空间信息和/或属性信息,其中所捕获的点和对应的属性构成点云。该系统还可包括压缩所捕获的点云的属性信息的编码器。点云的压缩属性信息可通过网络实时或几乎实时地发送到对点云的压缩属性信息进行解压缩的解码器。该解压缩点云可被进一步处理,例如以基于传感器位置处的周围环境做出控制决策。然后可将控制决策传送回传感器位置处或其附近的设备,其中接收控制决策的设备实时地或几乎实时地实现控制决策。在一些实施方案中,解码器可以与增强现实系统相关联,并且解压缩空间和/或属性信息可以由增强现实系统显示或以其他方式使用。在一些实施方案中,可将关于点云的压缩属性信息与关于点云的点的压缩空间信息一起发送。在其他实施方案中,空间信息和属性信息可以被分别编码和/或分别传输到解码器。
[0034]
在一些实施方案中,系统可包括解码器,该解码器经由网络从远程服务器或存储一个或多个点云文件的其他存储设备处接收包括关于点云的压缩空间信息的一个或多个点云文件。例如,可实时地或几乎实时地操纵3d显示器、全息显示器或头戴式显示器来显示由点云表示的虚拟世界的不同部分。为了更新3d显示器、全息显示器或头戴式显示器,与解码器相关联的系统可以基于显示器的用户操纵从远程服务器请求点云文件,并且这些点云文件可以从远程服务器传输到解码器并由解码器实时地或几乎实时地进行解码。然后可用响应于用户操纵的更新点云数据(诸如更新的点云几何结构)来更新显示器。
[0035]
在一些实施方案中,一种系统可包括一个或多个lidar系统、3d相机、3d扫描仪等,并且此类传感器设备可捕获空间信息,诸如传感器设备的视图中的点的x、y和z坐标。在一些实施方案中,空间信息可相对于局部坐标系或可相对于全局坐标系(例如,笛卡尔坐标系可具有固定参考点诸如地球上的固定点,或者可具有不固定的局部参考点诸如传感器位置)。
[0036]
在一些实施方案中,此类传感器还可以捕获关于一个或多个点的属性信息,诸如颜色属性、反射率属性、速度属性、加速度属性、时间属性、模态和/或各种其他属性。在一些实施方案中,除了lidar系统、3d相机、3d扫描仪等之外,其他传感器可捕获要被包括在点云文件中的属性提交信息。例如,在一些实施方案中,陀螺仪或加速度计可捕获要被包括在点云文件中的运动信息作为与该点云的一个或多个点相关联的属性。例如,配备有lidar系统、3d相机或3d扫描仪的车辆可能会在由lidar系统、3d相机或3d扫描仪捕获的点云中包括车辆的方向和速率。例如,当捕获到车辆视野中的点时,这些点可以被包括在点云中,其中该点云包括捕获到的点以及与捕获到点时车辆的状态对应的相关联的运动信息。
[0037]
在一些实施方案中,属性信息可包括字符串值,诸如不同的模态。例如,属性信息可包括指示模态诸如“步行”、“跑步”、“驾驶”等的字符串值。在一些实施方案中,编码器可包括“字符串值”到整数索引,其中某些字符串与某些对应的整数值相关联。在一些实施方案中,点云可以通过包括与该字符串值相关联的整数作为该点的属性来指示针对该点的字符串值。编码器和解码器都可以将公共字符串值存储为整数索引,使得解码器可以基于在与解码器的字符串值到整数索引匹配或类似的解码器的字符串值到整数索引中查找该点的字符串属性的整数值来确定针对点的字符串值。
[0038]
在一些实施方案中,除了压缩关于点云的点的属性的属性信息之外,编码器还对
点云的空间信息进行压缩和编码。例如,为了压缩空间信息,可生成八叉树,其中对八叉树的每个立方体和/或子立方体的相应被占用/未被占用状态进行编码。需注意,八叉树的立方体/子立方体可对应于八叉树结构的节点,其中基于点云中的任何点是否落入由与给定节点对应的立方体或子立方体所表示的体积内,将每个节点指示为被占用或未被占用的节点。子立方体的经编码的被占用/未被占用状态的这个序列可被编码为八叉树的节点的占用符号,这些占用符号向解码器传送关于点云的点的空间信息。
[0039]
在一些实施方案中,编码器和/或解码器可确定与八叉树的占用信息正被编码或解码的节点对应的给定立方体的邻域占用配置。邻域占用配置可指示与和占用信息正被编码或解码的节点对应的给定立方体相邻的相邻立方体的占用状态。例如,与相邻立方体未被占用的立方体相比,相邻立方体被占用的立方体更可能还包括被占用的子立方体。如图14b所示以及如下面更详细地讨论的,对于与占用信息正被编码的节点对应的给定立方体,存在各种可能的邻域占用配置。
[0040]
在一些实施方案中,编码器和/或解码器可将特定邻域占用配置映射到特定编码上下文,其中不同的编码上下文用于对八叉树结构的与具有不同邻域占用配置的立方体/子立方体对应的节点的占用信息进行编码(或解码)。例如,图14b示出了10种可能的邻域占用配置。在一些实施方案中,编码器或解码器可利用少于10个编码/解码上下文。例如,在一些实施方案中,一组更频繁出现的邻域占用配置可各自与单独的编码/解码上下文相关联,并且一组或多组更不频繁出现的邻域占用配置可被分组在一起并且与一个或多个共享的编码/解码上下文相关联。例如,在一些实施方案中,编码/解码上下文的数量可减少到6个编码上下文,其中五个最频繁出现的邻域占用配置各自被分配不同的编码上下文,并且剩余的五个更不频繁出现的邻域占用配置共享共同的编码上下文。
[0041]
图1示出了根据一些实施方案的系统,该系统包括捕获关于点云的点的信息的传感器和压缩点云的空间和/或属性信息的编码器,其中压缩的空间和/或属性信息被发送至解码器。
[0042]
系统100包括传感器102和编码器104。传感器102捕获点云110,该点云包括表示传感器102的视图108中的结构106的点。例如,在一些实施方案中,结构106可以是山脉、建筑、标牌、街道周围的环境或任何其他类型的结构。在一些实施方案中,捕获点云(诸如捕获点云110)可包括关于包括在该点云中的点的空间信息和属性信息。例如,捕获点云110的点a包括x、y、z坐标以及属性1、2和3。在一些实施方案中,点云的点在3d空间中的位置可限定点云的几何结构,例如点云的点的空间位置。在一些实施方案中,点的属性可包括属性诸如r,g,b颜色值、该点处的速度、该点处的加速度、结构在该点处的反射率、指示何时捕获该点的时间戳、指示捕获该点时的模态的字符串值例如“步行”或其他属性。捕获点云110可被提供给编码器104,其中编码器104生成该点云的压缩版本(压缩的点云信息112),该压缩版本经由网络114传输到解码器116。在一些实施方案中,点云的压缩版本(诸如压缩的点云信息112)可被包括在公共压缩点云中,该公共压缩点云还包括关于该点云中的点的压缩空间信息,或者在一些实施方案中,压缩空间信息和压缩属性信息可以作为单独的文件进行传送。在一些实施方案中,压缩点云信息112可包括针对如本文更详细描述的压缩点云的位流。
[0043]
在一些实施方案中,编码器104可与传感器102成一体。例如,编码器104可在包括在传感器设备(诸如传感器102)中的硬件或软件中实现。在其他实施方案中,编码器104可
在邻近传感器102的独立计算设备上实现。
[0044]
图2示出了根据一些实施方案的示例性简化八叉树结构。
[0045]
应当注意,为了便于说明,已经示出了二叉树来表示简化八叉树。然而,在三维空间中,所示八叉树结构的每个节点可包括比二维图中所示的更多的子节点。另外,应当注意,虽然这里的描述是根据八叉树结构来描述的,但是在一些实施方案中,可使用任何其他合适的树结构。
[0046]
八叉树结构200包括节点202和八叉树层级204。八叉树结构包括父节点和子节点。例如,八叉树层级0的节点1包括八叉树层级1的两个子节点(节点2和3)。同样,节点2在八叉树层级2中具有子节点4,并且节点3在八叉树层级2中具有子节点5。在一些实施方案中,八叉树的节点可具有1至8个子节点。另外,八叉树的每个节点表示由三维立方体或子立方体限定的空间体积,其中每个子节点是与父节点对应的立方体的子立方体。在三维空间中的八叉树中,父节点的每个立方体被划分为八个子立方体,这八个子立方体与从一个八叉树结构层级到下一个八叉树结构层级的进程中的子节点对应。以此方式,与更低层级节点相关联的体积容纳在更高层级节点的较大体积内。例如,图2所示的所有节点具有可容纳在节点1所覆盖的体积内的体积。作为示例,图14a示出了不同细分层级(例如,八叉树结构层级)处的立方体和子立方体。需注意,为了简单起见,图14a以2d示出,但是这里描述的立方体可以是三维立方体。
[0047]
为了表示关于点云的空间信息,可将点云的空间位置覆盖到八叉树结构的各个节点的体积中。如果给定节点或给定节点的子节点在其相应体积中包括点云中的至少一个点,则该节点可被认为被占用。否则,该节点可被认为未被占用。例如,点云可包括稀疏区域,在该稀疏区域中存在不包括任何点的空间体积。对于点云的这些部分,与八叉树结构的节点对应的立方体和子立方体体积可以是未被占用的。在八叉树结构的给定层级处具有被占用立方体的八叉树节点可继续被划分为具有子立方体的子节点(这些子立方体对应于八叉树结构的下一个更低层级的节点),直到子节点子立方体包括点云的单个点。以此方式,点云的单个点在空间中的位置可由包含八叉树中的单个点的子节点的位置来限定。例如,叶节点206可限定各个点在3d空间中的位置。
[0048]
对于每个父节点,子节点的占用信息可被编码为经编码字,例如,如果父节点有2个被占用子节点,父节点有3个被占用子节点等,则该信息可构成父节点的占用信息,该占用信息可被编码为经编码字。在一些实施方案中,熵编码器可用于对占用信息进行编码/解码,诸如八叉树结构的节点的经编码字。
[0049]
在八叉树结构的给定区域中,彼此靠近的节点(例如,相邻节点)可具有类似的占用状态。例如,如果点云限定平坦表面(诸如壁),则沿着壁下落的八叉树结构的节点可具有类似的占用状态。占用状态的这些相似性可有利于用于提高占用信息的编码效率,例如当使用熵编码器/解码器以及使用相邻节点的占用状态来通知用于使用熵编码器/解码器对八叉树结构的给定节点的占用信息进行编码或解码的熵编码/解码上下文时。
[0050]
例如,图14b示出了占用信息正被熵编码/解码的给定节点的示例性邻域配置(例如,正被编码/解码的节点对应于浅色立方体),其中颜色更深的立方体指示与八叉树结构中的给定节点的相邻节点对应的被占用相邻立方体。例如,在邻域配置1402中,与浅色立方体对应的节点可能不具有被占用的任何相邻节点/立方体。在邻域配置1404中,仅占用信息
正被编码的节点/立方体的一侧上的一个相邻节点/立方体可以是被占用的。在1406中,占用信息正被编码/解码的节点/立方体的任一侧上的立方体可以是被占用的。类似地,针对1408、1410、1412、1414、1416、1418和1420示出了其他邻域配置。
[0051]
通过知道占用信息正被编码/解码的节点的邻域配置/相邻节点的占用信息,熵编码器/解码器可提高针对占用信息正被编码的节点的熵编码性能。然而,为了确定相邻节点的占用信息,编码器或解码器可能必须将所确定的占用信息存储到用于相邻节点的存储器缓冲器,以用于确定与占用信息已被确定的相邻节点相邻的后续评估节点的熵编码上下文。虽然知道邻域节点占用配置可提高熵编码效率,但是在维持相邻节点的大量缓冲占用信息所需的存储空间量方面可能存在折衷。另外,要求节点之间的解码依赖性可增加复杂性并且/或者减慢对占用信息的编码和解码,其中依赖于来自其他经编码或经解码节点的熵上下文的节点必须等待直到其他经编码/经解码节点被评估,之后才可评估该依赖节点。另外,如果在传输中丢失了八叉树结构的一部分,则对在传输中丢失的其他节点具有熵上下文依赖性的节点可能不能使它们的占用信息被解码。
[0052]
因此,如本文所述,将节点分组为在节点组内具有熵上下文依赖性但在节点组外部具有有限依赖性的节点组,可平衡熵编码效率与存储器缓冲器要求和/或复杂性以及由于熵上下文依赖性而造成的处理限制。
[0053]
另外,如本文进一步所述,将节点组组织成在大小上对应于数据传输单元(诸如互联网协议(ip)分组)且包括标头信息(该标头信息限定切片的起始点在八叉树结构中的位置并且包括要用于切片的起始熵上下文的指示)的切片可提供弹性,使得如果在传输中丢失了切片,则仍可在解码器处在不具有缺失切片的情况下重构点云。然而,点云的与缺失切片对应的部分可以比在切片未丢失的情况下将具有的分辨率更低的分辨率来渲染。这与其他八叉树编码器/解码器形成对比—如果在传输中丢失了八叉树结构的一部分,则其他八叉树编码器/解码器需要重新传输完整的八叉树结构。另外,因为切片可被独立地放置在八叉树结构中,并且因为切片具有不一定依赖于正被编码/解码的紧接在前的切片的熵上下文,所以可并行地确定八叉树结构的多个切片的节点的占用信息。另外,在一些实施方案中,可使用此类切片来启用可缩放解码。例如,如果点云的更低分辨率版本是可接受的,则可不解码所有切片。然而,因为切片可独立地位于八叉树结构中并且具有不一定依赖于紧接在前的切片的熵上下文,所以可在不使用八叉树结构的所有切片来重构点云的缩放版本的情况下重构点云的缩放版本。
[0054]
图3示出了根据一些实施方案的八叉树结构的节点的示例性广度优先扫描顺序。
[0055]
如本文所用,广度优先扫描顺序遵循如图3所示的顺序,其中在给定八叉树层级(诸如层级1)处,顺序地评估八叉树层级的节点(或节点组),直到到达该八叉树层级的末端为止,此时,广度优先扫描顺序继续到八叉树结构的下一个更低八叉树层级。例如,在图3中,按如图中所示的数字和字母所指示的顺序来评估节点。
[0056]
换句话说,按广度优先扫描顺序,在八叉树结构的同一层级处扫描节点(或节点组),并且如果到达八叉树结构的同一层级中的节点(或节点组)的末端,则扫描顺序继续,以扫描在八叉树结构的下一个更低层级处的顺序节点(或节点组)。
[0057]
图4示出了根据一些实施方案的八叉树结构的节点的示例性深度优先扫描顺序。
[0058]
如本文所用,按深度优先扫描顺序,在八叉树结构的顺序层级中评估节点(或节点
组),直到到达叶节点为止,此时,扫描顺序向上退回,然后继续向下到更低层级处的兄弟节点。例如,如图4所示,当在4处到达叶节点时,扫描顺序向上退回到已经被评估的3,然后继续向下回到已经被评估的5,其是已经被评估的4的兄弟节点。还可以看出,在8之后,深度优先扫描顺序向上退回到1,因为2下方的所有节点已被评估,此时,深度优先扫描顺序通过继续到9和9下方的位置来沿着兄弟路径继续。
[0059]
换句话说,按深度优先扫描顺序,包括比正被评估的当前节点(或节点组)中包括的父节点更低的八叉树结构的层级处的子节点的下一个节点(或节点组)被选择作为要评估的下一个节点(或节点组),其中如果该八叉树结构不包括正被评估的当前节点(或节点组)中包括的节点在该八叉树结构的更低层级处的子节点,则深度优先扫描顺序返回到包括正被评估的当前节点(或节点组)的节点的父节点的节点(或节点组),其中这些父节点在比正被评估的当前节点(或节点组)的节点更高的八叉树结构的层级处,那么如果包括父节点的节点(或节点组)已经被评估,则深度优先扫描顺序继续向下回到包括正被评估的当前节点(或节点组)的节点的在八叉树结构的同一层级处的兄弟节点的节点(或节点组)。
[0060]
图5示出了根据一些实施方案的被分组为多个节点组的八叉树结构的节点。
[0061]
如上所述,在一些实施方案中,八叉树结构的节点可被组织成节点组,并且在一些实施方案中,节点组可被组织在一起以形成切片,其中切片在大小上对应于数据传输单元(诸如ip分组)的有效载荷。
[0062]
在一些实施方案中,节点组可限定空间体积,该空间体积包括与节点组中包括的节点对应的立方体或子立方体的体积。需注意,节点组可表示空间中的给定体积,而不管节点组的节点是被占用节点还是未被占用节点。
[0063]
例如,图5示出了八叉树结构500,其中该八叉树结构的节点被分组为在层级2处两个节点组502、在层级3处四个节点组504以及在层级4处八个节点组506。需注意,在一些实施方案中,八叉树结构的给定层级处的节点组可对应于空间中的相同体积大小,但是八叉树结构的不同层级处的节点组可对应于空间中的不同体积大小。例如,由于层级4中的节点比层级2中的更多,所以节点组506可对应于比节点组502更小的体积。
[0064]
在一些实施方案中,用于对节点的占用信息进行编码/解码的熵上下文可利用节点组内的相邻节点来确定熵上下文,但是可将对用于计算熵上下文的相邻节点的搜索限制到与占用信息正被编码/解码的给定节点相同的节点组中包括的那些节点。如上文所论述,这样可简化节点之间的依赖性,并且限制需要存储到存储器缓冲器以用于确定熵编码/解码上下文的节点的占用信息的量。
[0065]
图6示出了根据一些实施方案的用于选择要评估的节点组的深度优先扫描顺序,其中根据广度优先扫描顺序来扫描相应节点组内的节点。
[0066]
在一些实施方案中,可根据广度优先扫描顺序来扫描节点组内的节点,但可基于广度优先扫描顺序或深度优先扫描顺序来选择要评估的下一个后续节点组。
[0067]
例如,图6用节点组顶部的箭头示出了根据广度优先扫描顺序来扫描节点组内的节点。然而,虚线指示根据深度优先扫描顺序来选择要评估的下一个顺序节点组。例如,在评估节点组2之后,深度优先扫描顺序选择接下来要评估的八叉树结构的更低层级处的节点组3(而不是处于与节点组2相同的八叉树层级处的节点组9)。以此方式,在到达叶节点之前可能需要评估更少的节点组。例如,可在评估了四个节点组之后到达节点组4的叶节点,
而如果要以广度优先扫描顺序来评估节点组,则节点组0、1、2、9、3、6、a和b(例如,八个节点组)将必须在到达节点组4的叶节点之前被评估。因此,在叶节点上方将存在几乎两倍数量的更高层级节点,其中的任一个节点如果在传输中丢失,将会不利地影响确定用于重构的叶节点的位置。可看出,与纯广度优先扫描顺序布置相比,提高了弹性。然而,使用相邻节点来确定熵上下文的熵编码效率中的至少一些不会因仍在节点组内启用广度优先扫描顺序而损失。
[0068]
在一些实施方案中,可在编码器和解码器两者处使用节点组内广度优先和用于选择要评估的下一个节点组的深度优先的混合扫描顺序,例如而不必用信号发送扫描顺序。
[0069]
图7示出了根据一些实施方案的被分组为多个节点组的八叉树结构的节点,其中标志指示用于选择要评估的节点组的后续节点组的评估顺序。
[0070]
在一些实施方案中,可使用动态扫描顺序来选择接下来要评估的节点组。例如,可在节点组的末端设置标志以指示要用于选择要评估的下一个节点组的扫描顺序,而不是总是根据深度优先扫描顺序来选择接下来要评估的下一个节点组。需注意,虽然图7示出了用于每个节点组的标志,但是在一些实施方案中,如果将使用第一扫描顺序(例如,深度优先扫描顺序),则可断言标志,并且未被断言的标志指示与默认扫描顺序(例如,广度优先扫描顺序)有偏差。例如,可推断标志在未被断言的情况下指示扫描顺序中的一种扫描顺序,并且在被断言的情况下可指示扫描顺序中的另一种扫描顺序。
[0071]
图8示出了根据一些实施方案的按混合的深度优先/广度优先扫描顺序评估的节点组,其中在节点组的末端的标志表示要评估的下一个节点组是根据深度优先扫描顺序还是广度优先扫描顺序进行选择,并且其中相应节点组内的节点根据广度优先扫描顺序进行扫描。
[0072]
如在图8中可看出,在层级2处,标志可指示在节点组2之后遵循广度优先扫描顺序,而不是继续到节点组2下方的下一个更低层级处的节点组4,使得要评估的下一个节点组(例如,节点组3)是在八叉树的与节点组2相同的层级处的下一个顺序节点组。然而,在层级3处,在评估节点组3之后,标志(或标志的缺乏)可指示根据深度优先扫描顺序来选择用于评估的下一个节点组,例如,可选择八叉树结构的下一个更低层级处的节点组4。
[0073]
在一些实施方案中,可选择节点组选择顺序,以平衡弹性与存储器缓冲器要求/依赖性要求之间的折衷。另外,在一些实施方案中,不同的节点组可包括不同量的被占用节点,这些被占用节点需要不同量的位来编码。因此,在一些实施方案中,编码器可在根据深度优先扫描顺序或广度优先扫描顺序来选择要评估的下一个节点组之间交替,以便选择要包括在切片中的顺序节点组,这些循序节点组填充该切片但不过度填充该切片。
[0074]
图9示出了根据一些实施方案的被组织成多个切片的节点组,其中每个节点组包含指示节点组是否是给定切片的最后一个节点组的标志。
[0075]
在一些实施方案中,如上所述的节点组可被分组为切片。此外,每个节点组可包括指示其是否是给定片的最后一个节点组的标志(这种标志可被称为切片结束标志)。例如,图9示出了由节点组集合组成的切片,其中不同的切片由不同的阴影/填充图案表示。标志902(其示出空心圆)指示节点组不是切片的最后一个节点组,而标志904(其示出实心圆)指示切片的最后一个节点组。需注意,在一些实施方案中,切片可包括在八叉树结构200的多于一个八叉树层级处的节点组。
[0076]
在一些实施方案中,下一个节点组扫描顺序标志的值可由或无法由编码器和编码器中存在的规则来推导。编码器或解码器在每个节点组的末端检查规则,并且确定该规则是否强制特定扫描顺序。如果规则不适用,则用信号发送指示特定顺序的标志。在一个实施方案中,规则规定如果在该层级或前一层级中的并置位置处断言了切片结束标志,则树遍历继续按深度优先顺序到达下一个节点组。另一个规则可规定,如果在该层级或前一层级中的并置位置处,节点组扫描顺序标志被断言为深度优先,或者被另一个规则推导为已深度优先,则树遍历继续按深度优先顺序到达下一个节点组。此类规则允许例如维持切片的分级结构,这些切片避免重叠以便增加对丢失或损坏的切片的弹性,而没有用信号发送显式扫描顺序而产生的开销。此类规则的存在可通过在传送由一个或多个切片共享的参数的参数集中用信号发送的附加标志来传送。
[0077]
在一些实施方案中,为了最小化由于用信号发送切片中的最后一个节点组标志而产生的任何开销,可存在指示除非相关联的扫描顺序标志(或规则)改变树遍历顺序,否则切片中的最后一个节点组标志不存在的规则。
[0078]
在一些实施方案中,标头可与切片相关联,其中标头传送要应用于切片中包括的节点组的参数。例如,标头可限定切片中包括的节点组的节点组大小。另外,标头可包括关于切片的参考节点(例如,切片的第一节点)应当在八叉树结构200中位于何处的指示。以这种方式,如果中间切片丢失,则即使没有中间切片也可将后续切片放置在八叉树结构中。在一些实施方案中,可使用对八叉树结构的特定树层级和该树层级内的空间位置的引用或者使用对八叉树结构的特定树层级和该树层级内的节点索引位置的引用来在标头中传送切片的参考位置。在一些实施方案中,可相对于节点组中的节点的索引或相对于节点组的位置用信号发送空间位置或索引,其中该节点组在八叉树结构的特定树层级内。在一些实施方案中,可相对于特定切片的叶节点用信号发送空间位置或索引。
[0079]
另外,在一些实施方案中,可在八叉树层级处设置节点组大小,其中在给定八叉树层级处的节点组享有相同大小。在一些实施方案中,可在给定切片内的每个八叉树层级的起始处设置节点组大小。
[0080]
在一些实施方案中,每个切片的标头可包括索引值,该索引值指定该切片相对于八叉树结构200的其他切片的顺序。例如,第一切片可以是切片1,第二切片可以是切片2,等等。
[0081]
在一些实施方案中,第一切片可被称为初始切片,并且可包括完整的标头参数集。然而,后续切片可具有依赖于上一切片的标头信息。因此,后续切片标头可具有轻权重,并且可指示该切片为依赖切片并且还指示该切片依赖于怎样的切片标头。
[0082]
在一些实施方案中,可针对切片重置熵上下文,在这种情况下,可在切片的标头中用信号发送重置。另外,此类切片可被称为熵独立切片,因为它们不依赖于要从前一切片提供的熵状态。相反地,一些切片可使用从上一切片继承的起始熵上下文。此类切片可被称为熵依赖切片。
[0083]
图10示出了根据一些实施方案的被组织成多个切片的节点组,其中每个节点组包含指示节点组是否是给定切片的最后一个节点组的标志,并且其中切片按其将例如由解码器接收的顺序来顺序地布置。
[0084]
图11a和图11b示出了被组织成多个切片的节点组,其中每个节点组包含指示节点
组是否是给定切片的最后节点组的标志。图11a和图11b还示出了根据一些实施方案的针对切片的一个或多个节点指示的熵上下文保存点。
[0085]
例如,如果切片1102丢失并且切片1104是熵独立的,则切片1104的不在切片1102下方的部分仍可被解码。例如,切片1104的为来自切片1106的子节点的部分仍可被解码。然而,切片1104的为切片1102下方的子节点的节点可不被解码。另外,切片1104的在右下方的节点(该节点在为切片1102下方的子节点的节点之后)可不被解码,因为它们对1102下方未被解码的节点具有熵依赖性。
[0086]
在一些实施方案中,熵依赖切片可具有该切片的起始节点的熵上下文,该熵上下文是从来自上一切片的所保存的熵上下文恢复的。
[0087]
在一些实施方案中,保存到存储器缓冲器以供后续切片使用的熵上下文/状态可为隐式的。例如,可保存切片的最后一个节点的熵状态或者可保存给定八叉树层级的最后一个节点的熵状态。另外,在一些实施方案中,编码器可标记切片的熵状态将被保存以供后续切片使用的节点。例如,标志1108()可用于用信号发送:切片1106的特定节点的熵上下文将被保存以用作切片1102或切片1104的继承熵。
[0088]
在一些实施方案中,对于跨越多于一个八叉树层级的切片,倒数第二个八叉树层级中的最后一个节点的熵状态可覆写原本针对切片保存的熵状态。另外,在一些实施方案中,可将标志设置为指示八叉树层级中的最后一个节点的熵状态将覆写给定切片的熵上下文,其中如果标志未被设置,则八叉树层级中的最后一个节点的熵上下文不用于覆写针对切片保存的熵上下文。在一些实施方案中,如果树层级的末端与切片的末端重合,则可省略该过程。
[0089]
在一些实施方案中,熵依赖切片可从前一切片的所保存的熵状态恢复其熵状态。然而,在其他实施方案中,熵依赖切片可从除了紧接在前的切片之外的切片恢复其熵状态。在一些实施方案中,这可作为从其恢复熵依赖切片的熵上下文的切片的索引值来用信号发送,或者可相对地用信号发送(例如,前面有2个切片)。例如,切片1104可继承针对切片1106的节点1108保存的熵状态。因此,如果切片1102丢失,则切片1104仍可恢复其熵状态。在另一个实施方案中,从其恢复熵状态的切片被推断为包含该切片中的第一节点的父节点的切片。
[0090]
图12a和图12b示出了被组织成多个切片的节点组,其中每个节点组包含指示节点组是否是给定切片的最后节点组的标志。图12a和图12b还示出了根据一些实施方案的针对切片的一个或多个节点指示的熵上下文保存点,其中切片中的至少一些切片是依赖于共同的上一切片的熵依赖切片。
[0091]
作为熵依赖切片的另外的示例,如果切片1202、1204、1206及1208均为从切片1210继承其熵状态的熵依赖切片,则如果切片1202丢失,那么切片1204及1208仍可被解码,因为这些切片的起始熵状态是已知的并且因为它们不包含对切片1202的节点的树依赖性。
[0092]
另外,并行解码的各种组合是可能的,因为切片1206和1208不依赖于紧接在前的切片。例如,一旦将切片1210的熵上下文添加到存储器缓冲器,就可开始对后续依赖切片(诸如1206和1208)进行解码。另外,如果切片的所保存的熵上下文不是该切片中的最后一个节点的,诸如对于图11a所示的标志1108,则一旦到达带标志节点并且将带标志节点的熵上下文添加到存储器缓冲器,就可与对参考切片的其余部分进行解码并行地使用所保存的
熵上下文/熵重置来开始对后续切片进行解码。
[0093]
在一些实施方案中,可独立于几何树数据来用信号发送属性信息。
[0094]
图13示出了根据一些实施方案的子树在早期终止的示例性八叉树结构。
[0095]
在一些实施方案中,每个几何切片可生成零个或更多个输出点。例如,图13所示的叶节点可生成输出点。另外,早期终止的子树(例如,idcm)也可生成一个或多个输出点。
[0096]
在一些实施方案中,针对具有输出点的每个几何切片生成单个属性切片。在一些实施方案中,仅针对由具有输出点的几何切片生成的输出点生成细节级别或区域自适应分级变换,或者细节级别或区域自适应分级变换仅被应用于这些输出节点。
[0097]
在一些实施方案中,针对不包括输出点的几何切片生成属性切片,或者针对几何切片的除了输出点之外的点生成属性切片。这些可被认为是虚拟点。例如,如果几何切片将丢失,并且将使用更高层级几何切片来生成输出点,则可针对两个几何切片生成属性切片,其中如果更低层级几何切片未丢失,则在解码器处简单地忽略更高层级几何切片的属性切片。然而,如果更低层级几何切片丢失,则可使用更高层级几何切片的属性切片(例如,虚拟输出点)来确定当更低层级几何切片丢失时生成的更低分辨率输出的属性。类似的技术可用于部分解码。
[0098]
图15a示出了根据一些实施方案的编码器的部件。
[0099]
编码器1502可以是与图1所示的编码器104类似的编码器。编码器1502包括空间编码器1504、八叉树树生成器1510、预测/校正评估器1506、输入数据接口1514和输出数据接口1508。编码器1502还包括上下文存储器1516(例如,存储器缓冲器)和配置存储器1518。
[0100]
在一些实施方案中,空间编码器(诸如空间编码器1504)可压缩与点云中的点相关联的空间信息,使得可以压缩格式来存储或传输空间信息。在一些实施方案中,空间编码器(诸如空间编码器1504)可利用八叉树来压缩关于点云中的点的空间信息,如上文更详细地讨论的。
[0101]
在一些实施方案中,压缩空间信息可以与压缩属性信息一起存储或传输,或者可以分开存储或传输。在任一种情况下,接收针对点云的点的压缩属性信息的解码器也可以接收针对该点云的这些点的压缩空间信息,或者可以获得针对该点云的这些点的空间信息。
[0102]
八叉树生成器(诸如八叉树生成器1510)可利用关于点云中的点的空间信息来生成将点云细分成立方体和子立方体的八叉树。
[0103]
预测/校正评估器(诸如编码器1502的预测/校正评估器1506)可基于逆距离插值方法使用正在预测属性值所针对的点的k个最近相邻点的属性值来确定针对点云的点的预测属性值。预测/校正评估器还可将正被评估的点的预测属性值与非压缩点云中的该点的原始属性值进行比较以确定属性校正值。在一些实施方案中,预测/校正评估器(诸如编码器1502的预测/校正评估器1506)可基于对邻域中的点的属性值的可变性的测量来自适应地调整用于预测点的给定邻域中的点的属性值的预测策略。
[0104]
传出数据编码器(诸如编码器1502的传出数据编码器1508)可对针对点云的压缩属性信息文件中包括的属性校正值和分配属性值进行编码。
[0105]
在一些实施方案中,编码器(诸如编码器1502)还可包括传入数据接口诸如传入数据接口1514。在一些实施方案中,编码器可以从一个或多个传感器处接收传入数据,所述一
个或多个传感器捕获点云的点或捕获与点云的点相关联的属性信息。例如,在一些实施方案中,编码器可从lidar系统、3d相机、3d扫描仪等处接收数据,并且还可从其他传感器诸如陀螺仪、加速度计等处接收数据。另外,编码器可从系统时钟等处接收其他数据,诸如当前时间。在一些实施方案中,此类不同类型的数据可由编码器经由传入数据接口(诸如编码器1502的传入数据接口1514)接收。
[0106]
在一些实施方案中,编码器(诸如编码器1502)还可包括配置接口(诸如配置接口1512),其中编码器用来压缩点云的一个或多个参数可经由配置接口进行调整。在一些实施方案中,配置接口(诸如配置接口1512)可为程序化接口,诸如api。编码器(诸如编码器1502)所使用的配置可存储在配置存储器(诸如配置存储器1518)中。
[0107]
在一些实施方案中,编码器(诸如编码器1502)可包括比图15a所示更多或更少的部件。
[0108]
图15b示出了根据一些实施方案的解码器的部件。
[0109]
解码器1520可以是与图1中示出的解码器116类似的解码器。解码器1520包括经编码数据接口1526、空间解码器1522、预测评估器1524、上下文存储器1530、配置存储器1532和经解码数据接口1528。
[0110]
解码器(诸如解码器1520)可接收经编码压缩点云和/或针对点云中的点的经编码压缩属性信息文件,诸如如上文所讨论的经编码位流。例如,解码器(诸如解码器1520)可接收压缩属性信息文件和/或压缩空间信息文件。解码器可经由经编码数据接口(诸如经编码数据接口1526)来接收压缩属性信息文件和/或压缩空间信息文件。解码器可以使用编码压缩点云来确定针对该点云的点的空间信息。例如,压缩点云位流中包括的点云中的点的空间信息可由空间解码器(诸如空间解码器1522)来生成。在一些实施方案中,可经由经编码数据接口(诸如经编码数据接口1526)从存储设备或其他中间源接收压缩点云,其中该压缩点云先前由编码器(诸如编码器1502)进行编码。在一些实施方案中,编码数据接口(诸如编码数据接口1526)可对空间信息进行解码。例如,可使用如本文所述的各种编码技术来对空间信息进行编码。
[0111]
解码器的属性预测评估器(诸如预测评估器1524)可基于压缩属性信息文件中包括的分配起始点来选择最小生成树的起始点。在一些实施方案中,压缩属性信息文件可包括针对起始点的一个或多个对应属性的一个或多个分配值。在一些实施方案中,属性预测评估器(诸如预测评估器1524)可基于压缩属性信息文件中包括的针对起始点的分配值将值分配给正被解压缩的点云的解压缩模型中的起始点的一个或多个属性。预测评估器(诸如预测评估器1524)还可利用起始点的属性的分配值来确定相邻点的属性值。例如,预测评估器可以选择距起始点最近的相邻点作为待评估的下一个点,其中基于在最小生成树中从起始点到相邻点的最短距离来选择下一个最近相邻点。需注意,因为最小生成树是基于与在编码器上生成最小生成树所使用的相同或类似的空间信息在解码器上生成的,所以解码器可以通过识别最小生成树中的下一个最近相邻点来确定与评估在编码器处确定的用于正被解压缩点云的点相同的评估次序。
[0112]
解码器(诸如解码器1520)可经由解码数据接口(诸如解码数据接口1528)将基于接收到的压缩点云和/或接收到的压缩属性信息文件生成的解压缩点云提供给接收设备或应用程序。解压缩点云可包括点云的点和针对该点云的点的属性的属性值。在一些实施方
案中,解码器可以解码针对点云的属性的一些属性值,而无需解码针对点云的其他属性的其他属性值。例如,点云可包括针对点云的点的颜色属性,并且还可包括针对该点云的点的其他属性,诸如速度。在此类情况下,解码器可以对点云的点的一个或多个属性(诸如速度属性)进行解码,而无需对点云的点的其他属性(诸如颜色属性)进行解码。
[0113]
在一些实施方案中,解压缩点云和/或解压缩属性信息文件可以用于生成视觉显示器,诸如用于头戴式显示器。另外,在一些实施方案中,可将解压缩点云和/或解压缩属性信息文件提供给决策引擎,该决策引擎使用解压缩点云和/或解压缩属性信息文件来做出一个或多个控制决策。在一些实施方案中,解压缩点云和/或解压缩属性信息文件可用于各种其他应用或用于各种其他目的。
[0114]
用于点云压缩和解压缩的示例应用
[0115]
图16示出了根据一些实施方案的在3d远程显示应用中正在使用的压缩点云。
[0116]
在一些实施方案中,传感器(诸如传感器102)、编码器(诸如编码器104或编码器1502)和解码器(诸如解码器116或解码器1520)可用于在3d应用中传送点云。例如,在1602处,传感器(诸如传感器102)可捕获3d图像,并且在1604处,传感器或与传感器相关联的处理器可基于感测到的数据执行3d重构以生成点云。
[0117]
在1606处,编码器(诸如编码器104或1502)可对点云进行压缩,并且在1608处,编码器或后处理器可打包压缩点云并经由网络1610传输压缩点云。在1612处,可在包括解码器(诸如解码器116或解码器1520)的目标位置处接收数据包。在1614处,解码器可对点云进行解压缩,并且在1616处,可渲染解压缩点云。在一些实施方案中,3d远程显示应用可实时地传输点云数据,使得1616处的显示可表示正在1602处观察到的图像。例如,在1616处,峡谷中的相机可允许远程用户体验穿行虚拟峡谷。
[0118]
图17示出了根据一些实施方案的在虚拟现实(vr)或增强现实(ar)应用中正在使用的压缩点云。
[0119]
在一些实施方案中,点云可在软件中生成(例如,与由传感器捕获相反)。例如,在1702处,产生虚拟现实或增强现实内容。虚拟现实或增强现实内容可包括点云数据和非点云数据。例如,作为一个示例,非点云字符可横穿由点云表示的地形。在1704处,可对点云数据进行压缩,并且在1706处,可将压缩点云数据和非点云数据打包并经由网络1708传输这些数据。例如,在1702处产生的虚拟现实或增强现实内容可在远程服务器处产生并经由网络1708传送至vr或ar内容消费者。在1710处,数据包可在vr或ar消费者的设备处被接收并且同步。在1712处,在vr或ar消费者的设备处运作的解码器可对压缩点云进行解压缩,并且点云和非点云数据可例如在vr或ar消费者的设备的头戴式显示器中被实时渲染。在一些实施方案中,可响应于vr或ar消费者操纵头戴式显示器以看向不同的方向来生成、压缩、解压缩和渲染点云数据。
[0120]
在一些实施方案中,如本文所述的点云压缩可用于各种其他应用诸如地理信息系统、体育赛事直播、博物馆展示、自主导航等中。
[0121]
本公开的一些实施方案还可根据以下条款来描述:
[0122]
1.一种存储程序指令的非暂态计算机可读介质,所述程序指令当由一个或多个处理器执行时,使得所述一个或多个处理器:
[0123]
接收位流,所述位流包括:
[0124]
点云的八叉树结构的切片,其中所述点云的所述八叉树结构包括限定所述点云中的点的空间位置的节点集合,并且其中所述切片包括所述八叉树结构的所述节点集合的子集和指示所述切片的结束的标志;
[0125]
所述点云的所述八叉树结构的两个或更多个附加切片,其中所述两个或更多个附加切片各自包括所述八叉树结构的所述节点集合的附加相应子集以及指示所述两个或更多个附加切片的相应结束的附加相应标志;并且
[0126]
其中至少所述两个或更多个附加切片包括:
[0127]
所述相应切片的所述节点中的至少一个节点在所述八叉树结构中的位置的指示,其中所指示位置使用以下项来指示:
[0128]
对所述八叉树结构的特定树层级和所述树层级内的空间位置的引用;或者
[0129]
对所述八叉树结构的特定树层级和所述树层级内的节点索引位置的引用;以及
[0130]
基于所述位流来重构所述点云的几何结构,其中为了重构所述几何结构,所述两个或更多个附加切片的所述相应节点子集基于其相应指示位置而定位在所述八叉树结构中。
[0131]
2.根据条款1所述的非暂态计算机可读介质,其中所述两个或更多个附加切片还包括:
[0132]
指示所述相应切片相对于所述八叉树结构的所述切片中的其他切片的顺序的索引值。
[0133]
3.根据条款2所述的非暂态计算机可读介质,其中所述程序指令当由所述一个或多个处理器执行时,使得所述一个或多个处理器:
[0134]
确定所述顺序中的给定切片缺失;以及
[0135]
基于针对所述两个或更多个切片中的下一个未缺失切片的所述位流中包括的所述位置指示,将所述切片中的所述下一个未缺失切片定位在所述八叉树结构中的位置中,
[0136]
其中所述程序指令当由所述一个或多个处理器执行时,使得所述一个或多个处理器:
[0137]
针对所述点云的与所述给定缺失切片对应的一部分以不同分辨率重构所述点云的所述几何结构。
[0138]
4.根据条款1所述的非暂态计算机可读介质,其中所述程序指令当由所述一个或多个处理器执行时,使得所述一个或多个处理器:
[0139]
接收重构所述点云的缩放分辨率版本的指令;以及
[0140]
使用少于所述点云的所述八叉树结构的完整切片集合的切片来重构所述点云;
[0141]
其中以与以下情况的分辨率不同的分辨率重构所述点云的与所述八叉树结构的在所述重构时未使用的切片中包括的节点对应的几何结构:将在所述点云的所述重构时使用所述未使用切片的所述节点。
[0142]
5.根据条款1所述的非暂态计算机可读介质,其中所述切片和所述两个或更多个附加切片各自在大小上对应于用于通过网络向解码器传输所述位流的一部分的数据传输单元的大小。
[0143]
6.根据条款5所述的非暂态计算机可读介质,其中:
[0144]
用于通过所述网络传输所述位流的所述数据传输单元是互联网协议(ip)分组;
[0145]
所述切片和所述两个或更多个附加切片是在与ip层分开的应用层处确定的,使得所述切片和所述两个或更多个附加切片各自具有适合ip分组的有效载荷的大小;以及
[0146]
响应于丢失的ip分组包括所述点云的所述八叉树结构的所述切片中的一个切片,所述程序指令当在所述一个或多个处理器上执行时,使得所述一个或多个处理器继续重构所述点云而不需要重新传输所述丢失的ip分组。
[0147]
7.根据条款1所述的非暂态计算机可读介质,其中已使用熵编码器对所述切片和所述两个或更多个附加切片中包括的所述八叉树结构的所述节点的占用信息进行了编码,并且
[0148]
其中所述程序指令当由所述一个或多个处理器执行时,使得所述一个或多个处理器:
[0149]
基于所述经熵编码占用信息正被解码的给定节点的相邻节点的占用信息,确定用于对所述节点中的相应节点的所述经熵编码占用信息进行解码的编码上下文,
[0150]
其中所述至少两个或更多个附加切片包括:
[0151]
标头,所述标头指示要用于对所述两个或更多个附加切片中的给定切片的给定节点的经熵编码占用信息进行熵解码的熵上下文:
[0152]
将被重置为默认熵上下文;或者
[0153]
将被设置为针对前一切片保存的熵上下文,
[0154]
其中所述程序指令使得所述一个或多个处理器:
[0155]
将针对所述切片或所述两个或更多个附加切片中的给定切片确定的熵上下文保存到存储器缓冲器,以用作所述两个或更多个附加切片中的后续切片的所保存的熵上下文。
[0156]
8.根据条款7所述的非暂态计算机可读介质,其中所述两个或更多个附加切片中的至少两个切片引用针对前一切片保存到所述存储器缓冲器的相同熵上下文。
[0157]
9.根据条款8所述的非暂态计算机可读介质,其中所述程序指令当由所述一个或多个处理器执行时,使得:
[0158]
至少部分并行地对所述两个或更多个切片中引用所述前一切片的所述相同熵上下文的至少两个切片的所述经熵编码占用信息进行熵解码。
[0159]
10.根据条款8所述的非暂态计算机可读介质,其中所述程序指令当由所述一个或多个处理器执行时,使得:
[0160]
对所述两个或更多个切片中引用所述前一切片的所述相同熵上下文的给定切片的所述经熵编码占用信息进行熵解码,而不管所述两个或更多个切片中引用所述相同熵上下文的另一个切片是否是缺失切片。
[0161]
11.根据条款7所述的非暂态计算机可读介质,其中所述程序指令当由所述一个或多个处理器执行时,使得:
[0162]
针对经熵编码占用信息被解码的每个切片的至少一个节点将熵上下文保存到所述存储器缓冲器。
[0163]
12.根据条款11所述的非暂态计算机可读介质,其中针对经编码占用信息被解码的给定切片的最后一个节点保存所述熵上下文。
[0164]
13.根据条款11所述的非暂态计算机可读介质,其中针对所述两个或更多个附加
切片中的给定切片保存所述熵上下文,其中所述给定切片跨越所述八叉树结构的多于一个树层级,并且其中对于所述给定切片,倒数第二个树层级中的节点的熵编码上下文被存储到所述存储器缓冲器中。
[0165]
14.根据条款7所述的非暂态计算机可读介质,其中所述程序指令当由所述一个或多个处理器执行时,使得:
[0166]
针对经熵编码占用信息被解码的所述八叉树结构的每个树层级的最后一个节点将熵上下文保存到所述存储器缓冲器。
[0167]
15.根据条款14所述的非暂态计算机可读介质,其中所述程序指令当由所述一个或多个处理器执行时,使得:
[0168]
针对给定树层级的所述最后一个节点保存到所述存储器缓冲器的所述熵上下文覆写针对跨越所述多于一个树层级的所述给定切片保存到所述存储器缓冲器的上一熵上下文。
[0169]
16.根据条款7所述的非暂态计算机可读介质,其中所述经熵编码占用信息正被解码的给定切片的标头标识将从其恢复所述熵上下文的前一切片。
[0170]
17.根据条款7所述的非暂态计算机可读介质,其中基于在编码器和解码器两者处应用的编码规则来隐式地确定要从其恢复熵上下文的前一切片。
[0171]
18.根据条款14所述的非暂态计算机可读介质,其中在所述位流中用标志来标记给定树层级的最后一个节点,其中所述标志指示所述带标志的节点的熵上下文将被保存到所述存储器缓冲器。
[0172]
19.根据条款1所述的非暂态计算机可读介质,其中所述两个或更多个附加切片中的每个切片包括两个或更多个节点组,其中所述节点组表示所述八叉树结构的空间体积,并且其中所述相应两个或更多个附加切片中的每个切片的标头指示所述相应片中包括的节点组的节点组大小。
[0173]
20.根据条款1所述的非暂态计算机可读介质,其中所述两个或更多个附加切片中的每个附加切片包括两个或更多个节点组,其中所述节点组表示所述八叉树结构的空间体积,并且其中针对所述八叉树结构的每个树层级在所述位流中用信号发送节点组大小。
[0174]
21.一种存储程序指令的非暂态计算机可读介质,所述程序指令当由一个或多个处理器执行时,使得所述一个或多个处理器:
[0175]
接收要压缩的点云,其中所述点云包括三维空间中的多个点;
[0176]
生成包括八叉树结构的节点的占用信息的所述八叉树结构,其中所述占用信息指示:在所述八叉树结构的给定层级处,所述八叉树的在所述给定层级处的立方体或子立方体是否被所述点云的一个或多个点占用;以及
[0177]
将所述八叉树结构的所述节点组织成多个切片,所述多个切片包括:
[0178]
所述八叉树结构的第一切片,所述第一切片包括所述八叉树结构的节点集合的子集;以及
[0179]
所述八叉树结构的两个或更多个附加切片,其中所述两个或更多个附加切片各自包括所述八叉树结构的所述节点集合的附加相应子集;
[0180]
对所述第一切片和所述两个或更多个附加切片中包括的所述八叉树的所述节点的占用信息进行编码;以及
[0181]
生成位流,所述位流包括:
[0182]
所述第一切片中包括的所述节点的所述经编码占用信息和指示所述第一切片的结束的标志;
[0183]
所述两个或更多个附加切片中包括的所述节点的所述经编码占用信息和指示所述两个或更多个附加切片的相应结束的附加相应标志;以及
[0184]
对于至少所述两个或更多个附加切片:
[0185]
所述相应切片的所述节点中的至少一个节点在所述八叉树结构中的位置的指示,其中所指示位置使用以下项来指示:
[0186]
对所述八叉树结构的特定树层级和所述树层级内的空间位置的引用;或者
[0187]
对所述八叉树结构的特定树层级和所述树层级内的节点索引位置的引用。
[0188]
22.根据条款21所述的非暂态计算机可读介质,其中所生成的位流还包括:
[0189]
指示所述相应多个切片相对于所述多个切片中的其他切片的相应顺序的相应索引值。
[0190]
23.根据条款21所述的非暂态计算机可读介质,其中所生成的位流还包括:
[0191]
用于所述多个切片的相应标头,其中所述标头指示所述相应切片中包括的节点组的体积大小。
[0192]
24.根据条款21所述的非暂态计算机可读介质,其中所述切片和所述两个或更多个附加切片各自在大小上对应于用于通过网络向解码器传输所述位流的数据传输单元的大小。
[0193]
25.根据条款21所述的非暂态计算机可读介质,其中使用熵编码器对所述节点的所述占用信息进行编码,并且其中所述程序指令当由所述一个或多个处理器执行时,还使得所述一个或多个处理器:
[0194]
基于所述经熵编码占用信息正被编码的给定节点的相邻节点的占用信息,确定用于对所述多个切片的所述节点中的相应节点的所述占用信息进行编码的编码上下文;以及
[0195]
在针对所述多个切片中的每个切片的所述位流中包括针对初始熵上下文的指示,所述初始熵上下文将用于对所述相应切片的给定节点的所述经熵编码占用信息进行解码。
[0196]
26.根据条款25所述的非暂态计算机可读介质,其中针对将用于对所述相应切片的所述给定节点的所述经熵编码占用信息进行解码的所述初始熵上下文的所述指示指示:
[0197]
针对前一切片保存到存储器缓冲器的熵上下文将被用作所述给定切片的所述初始熵上下文;或者
[0198]
重置熵上下文将被用作所述给定切片的所述初始熵上下文。
[0199]
27.根据条款26所述的非暂态计算机可读介质,其中针对两个或更多个切片的相应指示指示:
[0200]
针对前一切片保存的相同熵上下文将被用作所述两个或更多个切片的所述初始熵上下文。
[0201]
28.根据条款26所述的非暂态计算机可读介质,其中所述程序指令当由所述一个或多个处理器执行时,还使得所述一个或多个处理器:
[0202]
在针对所述多个切片的所述节点中的相应节点的所述位流中包括相应标志,其中所述相应标志指示用于对所述节点中的所述相应节点的所述经熵编码占用信息进行解码
的熵上下文将被添加到存储所保存的熵上下文以用作后续切片的初始熵上下文的所述存储器缓冲器。
[0203]
29.根据条款26所述的非暂态计算机可读介质,其中所述程序指令当由所述一个或多个处理器执行时,还使得所述一个或多个处理器:
[0204]
在所述位流中用标志指示所述八叉树结构的树层级中的最后一个节点,其中所述标志指示用于对所述树层级中的所述最后一个节点进行解码的熵上下文将被添加到所述存储器缓冲器。
[0205]
30.一种设备,所述设备包括:
[0206]
存储器,所述存储器存储根据条款1所述的程序指令;和
[0207]
一个或多个处理器。
[0208]
31.根据条款30所述的设备,还包括:
[0209]
显示器,
[0210]
其中根据条款1所述的程序指令当由所述一个或多个处理器执行时,使得所述一个或多个处理器:
[0211]
在所述设备的所述显示器上渲染具有所述重构几何结构的所述点云。
[0212]
32.一种设备,所述设备包括:
[0213]
存储器,所述存储器存储根据条款21所述的程序指令;和
[0214]
一个或多个处理器。
[0215]
33.根据条款32所述的设备,还包括:
[0216]
一个或多个传感器,所述一个或多个传感器被配置为捕获构成所述点云的多个点,其中所述点中的相应点包括关于所述点的空间信息和关于所述点的属性信息,
[0217]
其中从所述一个或多个传感器接收所述要压缩的点云。
[0218]
示例性计算机系统
[0219]
图18示出了根据一些实施方案的可用于实现如本文所述(例如,如上文参考图1至图17所述)的编码器或解码器的示例性计算机系统1800。在不同的实施方案中,计算机系统1800可为各种类型的设备中的任一者,包括但不限于:个人计算机系统、台式计算机、膝上型电脑、笔记本电脑、平板电脑、一体电脑、平板计算机、上网本计算机、手持式计算机、工作站、网络计算机、相机、机顶盒、移动设备、消费者设备、视频游戏控制器、手持式视频游戏设备、应用服务器、存储设备、电视、视频记录设备、外围设备(诸如交换机、调制解调器、路由器)或一般性的任何类型的计算或电子设备。
[0220]
在例示的实施方案中,计算机系统1800包括经由输入/输出(i/o)接口1830耦接到系统存储器1820的一个或多个处理器1810。计算机系统1800还包括耦接到i/o接口1830的网络接口1840和一个或多个输入/输出设备1850,诸如光标控制设备1860、键盘1870和显示器1880。
[0221]
系统存储器1820可被配置为存储点云压缩或点云解压缩程序指令1822和/或可由处理器1810访问的传感器数据。在各种实施方案中,系统存储器1820可使用任何合适的存储器技术来实现,合适的存储器技术为诸如静态随机存取存储器(sram)、同步动态ram(sdram)、非易失性/闪存型存储器或任何其他类型的存储器。在例示的实施方案中,程序指令1822可被配置为实现结合上述功能性中的任一种的图像传感器控制应用程序。在一些实
施方案中,程序指令和/或数据可被接收、发送或存储在与系统存储器1820或计算机系统1800分开的不同类型的计算机可访问介质上或类似介质上。
[0222]
在一个实施方案中,i/o接口1830可被配置为协调设备中的处理器1810、系统存储器1820和任何外围设备(包括网络接口1840或其他外围设备接口,诸如输入/输出设备1850)之间的i/o通信。在一些实施方案中,i/o接口1830可执行任何必要的协议、定时或其他数据转换以将来自一个部件(例如系统存储器1820)的数据信号转换为适于由另一部件(例如处理器1810)使用的格式。在一些实施方案中,i/o接口1830可包括对例如通过各种类型的外围总线(诸如外围部件互连(pci)总线标准或通用串行总线(usb)标准的变型)附接的设备的支持。在一些实施方案中,i/o接口1830的功能例如可被划分到两个或更多个单独部件中,诸如北桥接件和南桥接件。此外,在一些实施方案中,i/o接口1830(诸如到系统存储器1820的接口)的功能中的一些或所有可被直接并入到处理器1810中。
[0223]
网络接口1840可被配置为允许在计算机系统1800与附接到网络1885的其他设备(例如,承载器或代理设备)之间或者在计算机系统1800的节点之间交换数据。在各种实施方案中,网络1885可包括一种或多种网络,包括但不限于局域网(lan)(例如,以太网或企业网)、广域网(wan)(例如,互联网)、无线数据网、某种其他电子数据网络或它们的某种组合。在各种实施方案中,网络接口1840可支持例如经由有线或无线通用数据网络(诸如任何合适类型的以太网网络)的通信;经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络)的通信;经由存储区域网络(诸如光纤通道san)、或经由任何其他合适类型的网络和/或协议的通信。
[0224]
在一些实施方案中,输入/输出设备1850可包括一个或多个显示终端、键盘、小键盘、触控板、扫描设备、语音或光学识别设备或适于由一个或多个计算机系统1800输入或访问数据的任何其他设备。多个输入/输出设备1850可存在于计算机系统1800中,或者可分布在计算机系统1800的各个节点上。在一些实施方案中,类似的输入/输出设备可以与计算机系统1800分开,并且可通过有线或无线连接(诸如通过网络接口1840)与计算机系统1800的一个或多个节点进行交互。
[0225]
如图18所示,存储器1820可包括程序指令1822,该程序指令可能可由处理器执行,以实现上文所述的任何元素或动作。在一个实施方案中,程序指令可执行上文所述的方法。在其他实施方案中,可包括不同的元件和数据。
[0226]
计算机系统1800还可连接到未示出的其他设备,或者可作为独立系统工作。此外,由所示出的部件所提供的功能在一些实施方案中可被组合在更少的部件中或者被分布在附加部件中。类似地,在一些实施方案中,所示出的部件中的一些部件的功能可不被提供,和/或其他附加功能可能是可用的。
[0227]
本领域的技术人员还将认识到,虽然各种项目被示出为在被使用期间被存储在存储器中或存储装置上,但是为了存储器管理和数据完整性的目的,这些项目或其部分可在存储器和其他存储设备之间进行传输。另选地,在其他实施方案中,这些软件部件中的一些或全部软件部件可以在另一设备上的存储器中执行,并且经由计算机间通信来与例示的计算机系统进行通信。系统部件或数据结构中的一些或全部也可(例如作为指令或结构化数据)被存储在计算机可访问介质或便携式制品上以由合适的驱动器读取,其多种示例在上文中被描述。在一些实施方案中,存储在与计算机系统1800分开的计算机可访问介质上的
指令可通过传输介质或信号(诸如通过通信介质诸如网络和/或无线链路而传送的电信号、电磁信号或数字信号)传输到计算机系统1800。各种实施方案还可包括在计算机可访问介质上接收、发送或存储根据以上描述所实现的指令和/或数据。一般来讲,计算机可访问介质可包括非暂态计算机可读存储介质或存储器介质,诸如磁介质或光学介质,例如盘或dvd/cd-rom、易失性或非易失性介质,诸如ram(例如sdram、ddr、rdram、sram等)、rom等。在一些实施方案中,计算机可访问介质可包括传输介质或信号,诸如经由通信介质诸如网络和/或无线链路而传送的电气信号、电磁信号、或数字信号。
[0228]
在不同的实施方案中,本文所述的方法可在软件、硬件或它们的组合中实现。此外,可改变方法的框的次序,并且可对各种要素进行添加、重新排序、组合、省略、修改等。对于受益于本公开的本领域的技术人员,显然可做出各种修改和改变。本文所述的各种实施方案旨在为例示的而非限制性的。许多变型、修改、添加和改进是可能的。因此,可为在本文中被描述为单个示例的部件提供多个示例。各种部件、操作和数据存储库之间的界限在一定程度上是任意性的,并且在具体的示例性配置的上下文中示出了特定操作。预期了功能的其他分配,它们可落在所附权利要求的范围内。最后,被呈现为示例性配置中的分立部件的结构和功能可被实现为组合的结构或部件。这些和其他变型、修改、添加和改进可落入如以下权利要求书中所限定的实施方案的范围内。
再多了解一些

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

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

相关文献