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

修整用于点云压缩中的最近邻确定的搜索空间的制作方法

2022-06-16 13:07:09 来源:中国专利 TAG:

修整用于点云压缩中的最近邻确定的搜索空间


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


技术实现要素:

4.在一些实施方案中,可修整用于执行最近邻搜索以用于对点云数据进行编码的搜索空间。可使用空间填充曲线的范围识别要排除或重复使用的搜索空间,而不是针对点云的点中位于空间填充曲线的一些范围内的至少一些点生成最近邻搜索结果。
5.在一些实施方案中,所使用的空间填充曲线是莫顿序,其中针对点云的沿着空间填充曲线落下的点确定莫顿码。另外,在一些实施方案中,除了使用通过在正针对最近相邻点评估的点的任一侧上的莫顿码范围进行搜索产生的修整的搜索空间之外,还确定与正被评估的点相邻的一个或多个相邻体素的莫顿码,并且对针对点云的点所确定的莫顿码进行搜索,以查看相邻体素的莫顿码是否包括点云的点。这可识别包括在所具有的莫顿码在修整的搜索范围之外的相邻体素中的最近相邻点。
6.另外,在一些实施方案中,作为初始步骤,可确定相邻体素的莫顿码并在正被压缩的点云的莫顿码的索引中进行搜索。在此类实施方案中,如果在相邻体素中找到的相邻点的数量小于要用于预测/细节级别生成的最近相邻点的期望数量,则可在修整的莫顿码搜索范围中执行另外的搜索以识别另外的最近相邻点。
附图说明
7.图1a示出了根据一些实施方案的包括捕获针对点云的点的信息的传感器和压缩点云的属性信息和/或空间信息的编码器的系统,其中该压缩点云信息被发送至解码器。
8.图1b示出了根据一些实施方案的用于对点云的属性信息进行编码的过程。
9.图1c示出了根据一些实施方案的点云信息在编码过程的不同阶段处的代表性视
图。
10.图2a示出了根据一些实施方案的编码器的部件。
11.图2b示出了根据一些实施方案的解码器的部件。
12.图3示出了根据一些实施方案的示例压缩属性文件。
13.图4a示出了根据一些实施方案的用于对点云的属性信息进行压缩的过程。
14.图4b示出了根据一些实施方案的作为对点云的属性信息进行压缩的一部分使用自适应的基于距离的预测来预测属性值。
15.图4c至图4e示出了根据一些实施方案的可由编码器确定或选择并且通过点云的压缩属性信息用信号传送的参数。
16.图5示出了根据一些实施方案的用于对属性校正值进行编码的过程。
17.图6a至图6b示出了根据一些实施方案的用于对点云的空间信息进行压缩的示例性过程。
18.图7示出了根据一些实施方案的用于对点云的空间信息进行压缩的另一个示例过程。
19.图8a示出了根据一些实施方案的用于对点云的压缩属性信息进行解压缩的示例性过程。
20.图8b示出了根据一些实施方案的作为对点云的属性信息进行解压缩的一部分使用自适应的基于距离的预测来预测属性值。
21.图9示出了根据一些实施方案的生成分级细节级别(lod)结构的示例编码器的部件。
22.图10示出了根据一些实施方案的用于确定待包括在细节级别(lod)结构的不同细化层处的点的示例过程。
23.图11a示出了根据一些实施方案的示例细节级别(lod)结构。
24.图11b示出了根据一些实施方案的包括针对点云的细节级别(lod)的示例压缩点云文件。
25.图12a示出了根据一些实施方案的用于对点云的属性信息进行编码的方法。
26.图12b示出了根据一些实施方案的用于对点云的属性信息进行解码的方法。
27.图12c示出了根据一些实施方案的八叉树的多维数据集的示例邻域配置。
28.图12d示出了根据一些实施方案的示例前瞻多维数据集。
29.图12e示出了根据一些实施方案的可用于使用二进制算术编码器来自适应地编码符号s的索引值的31个上下文的示例。
30.图12f示出了根据一些实施方案的使用二进制算术编码器、高速缓存和前瞻表的示例八叉树压缩技术。
31.图13a示出了根据一些实施方案的可在编码器处应用以对点云的属性信息进行编码的直接转换。
32.图13b示出了根据一些实施方案的可在解码器处应用以对点云的属性信息进行解码的逆转换。
33.图14示出了根据一些实施方案的用于确定到空间填充曲线范围内的点的最小距离的边界框到空间填充曲线范围的分配。
34.图15示出了根据一些实施方案的用于应用边界形状以修整用于最近邻搜索的搜索空间的高级流程图。
35.图16示出了根据一些实施方案的根据空间填充曲线的范围的最近邻搜索结果重复使用的示例。
36.图17示出了根据一些实施方案的用于应用边界形状以修整用于最近邻搜索的搜索空间的高级流程图。
37.图18示出了根据一些实施方案的用于改进最近邻搜索的离散空间中的点。
38.图19图示了根据一些实施方案的空间填充曲线的一组示例性点和莫顿码,其中两个点落在空间填充曲线上。
39.图20示出了根据一些实施方案的在3d远程显示应用中正在使用的压缩点云信息。
40.图21示出了根据一些实施方案的在虚拟现实应用中正在使用的压缩点云信息。
41.图22示出了根据一些实施方案的可实现编码器或解码器的示例性计算机系统。
42.本说明书包括参考“一个实施方案”或“实施方案”。出现短语“在一个实施方案中”或“在实施方案中”并不一定是指同一个实施方案。特定特征、结构或特性可以与本公开一致的任何合适的方式被组合。
[0043]“包括”,该术语是开放式的。如在所附权利要求书中所使用的,该术语不排除附加结构或步骤。考虑以下引用的权利要求:“一种包括一个或多个处理器单元...的装置”此类权利要求不排除该装置包括附加部件(例如,网络接口单元、图形电路等)。
[0044]“被配置为”,各种单元、电路或其他部件可被描述为或叙述为“被配置为”执行一项或多项任务。在此类上下文中,“被配置为”用于通过指示单元/电路/部件包括在操作期间执行这一项或多项任务的结构(例如,电路)来暗指该结构。如此,单元/电路/部件据称可被配置为即使在指定的单元/电路/部件当前不可操作(例如,未接通)时也执行该任务。与“被配置为”语言一起使用的单元/电路/部件包括硬件——例如电路、存储可执行以实现操作的程序指令的存储器等。引用单元/电路/部件“被配置为”执行一项或多项任务明确地旨在针对该单元/电路/部件不援引35u.s.c.
§
112(f)。此外,“被配置为”可包括由软件和/或固件(例如,fpga或执行软件的通用处理器)操纵的通用结构(例如,通用电路)以能够执行待解决的一项或多项任务的方式操作。“被配置为”还可包括调整制造过程(例如,半导体制作设施),以制造适用于实现或执行一项或多项任务的设备(例如,集成电路)。
[0045]“第一”“第二”等。如本文所用,这些术语充当它们所在之前的名词的标签,并且不暗指任何类型的排序(例如,空间的、时间的、逻辑的等)。例如,缓冲电路在本文中可被描述为执行“第一”值和“第二”值的写入操作。术语“第一”和“第二”未必暗指第一值必须在第二值之前被写入。
[0046]“基于”。如本文所用,该术语用于描述影响确定的一个或多个因素。该术语不排除影响确定的附加因素。即,确定可仅基于这些因素或至少部分地基于这些因素。考虑短语“基于b来确定a”。在这种情况下,b为影响a的确定的因素,此类短语不排除a的确定也可基于c。在其他实例中,可仅基于b来确定a。
具体实施方式
[0047]
随着数据采集和显示技术变得更加先进,增强了(诸如经由lidar系统)捕获包括
2d或3d空间中成千上万个点的点云的能力。而且,先进显示技术(诸如虚拟现实或增强现实系统)的发展增加了点云的潜在用途。然而,点云文件通常非常大,并且存储和传输这些点云文件可能成本高且耗时。例如,点云通过私有网络或公共网络(诸如互联网)的通信可能需要相当大量的时间和/或网络资源,使得点云数据的一些使用(诸如实时使用)可能受到限制。另外,点云文件的存储要求可能消耗存储点云文件的设备的显著量的存储容量,这也可能限制潜在应用使用点云数据。
[0048]
在一些实施方案中,编码器可用于生成压缩点云以降低与存储和传输大的点云文件相关联的成本和时间。在一些实施方案中,系统可包括压缩点云文件的属性信息和/或空间信息(在本文中也称为几何信息)的编码器,使得点云文件可比非压缩点云更快地被存储和传输,并且以点云文件可比非压缩点云占据更少的存储空间的方式被存储和传输。在一些实施方案中,点云中的点的空间信息和/或属性的压缩可使点云能够实时地或几乎实时地通过网络传送。例如,系统可包括传感器,该传感器捕获关于该传感器所在环境中的点的空间信息和/或属性信息,其中所捕获的点和对应的属性构成点云。该系统还可包括压缩所捕获的点云的属性信息的编码器。点云的压缩属性信息可通过网络实时或几乎实时地发送到对点云的压缩属性信息进行解压缩的解码器解码器。该解压缩点云可被进一步处理,例如以基于传感器位置处的周围环境做出控制决策。然后可将控制决策传送回传感器位置处或其附近的设备,其中接收控制决策的设备实时地或几乎实时地实现控制决策。在一些实施方案中,解码器可以与增强现实系统相关联,并且解压缩属性信息可以由增强现实系统显示或以其他方式使用。在一些实施方案中,可将关于点云的压缩属性信息与关于点云的点的压缩空间信息一起发送。在其他实施方案中,空间信息和属性信息可以被分别编码和/或分别发送到解码器。
[0049]
在一些实施方案中,系统可包括解码器,该解码器经由网络从远程服务器或存储一个或多个点云文件的其他存储设备处接收包括压缩属性信息的一个或多个点云文件。例如,可实时地或几乎实时地操纵3d显示器、全息显示器或头戴式显示器来显示由点云表示的虚拟世界的不同部分。为了更新3d显示器、全息显示器或头戴式显示器,与解码器相关联的系统可以基于显示器的用户操纵从远程服务器请求点云文件,并且这些点云文件可以从远程服务器传输到解码器并由解码器实时地或几乎实时地进行解码。然后可用响应于用户操纵的更新点云数据(诸如更新的点属性)来更新显示器。
[0050]
在一些实施方案中,一种系统可包括一个或多个lidar系统、3d相机、3d扫描仪等,并且此类传感器设备可捕获空间信息,诸如传感器设备的视图中的点的x、y和z坐标。在一些实施方案中,空间信息可相对于局部坐标系或可相对于全局坐标系(例如,笛卡尔坐标系可具有固定参考点诸如地球上的固定点,或者可具有不固定的局部参考点诸如传感器位置)。
[0051]
在一些实施方案中,此类传感器还可以捕获关于一个或多个点的属性信息,诸如颜色属性、反射率属性、速度属性、加速度属性、时间属性、模态和/或各种其他属性。在一些实施方案中,除了lidar系统、3d相机、3d扫描仪等之外,其他传感器可以捕获待包括在点云中的属性信息。例如,在一些实施方案中,陀螺仪或加速度计可以捕获待包括在点云中的运动信息作为与该点云的一个或多个点相关联的属性。例如,配备有lidar系统、3d相机或3d扫描仪的车辆可能会在由lidar系统、3d相机或3d扫描仪捕获的点云中包括车辆的方向和
速率。例如,当捕获到车辆视野中的点时,这些点可以被包括在点云中,其中该点云包括捕获到的点以及与捕获到点时车辆的状态对应的相关联的运动信息。
[0052]
在一些实施方案中,属性信息可包括字符串值,诸如不同的模态。例如,属性信息可包括指示模态诸如“步行”、“跑步”、“驾驶”等的字符串值。在一些实施方案中,编码器可包括“字符串值”到整数索引,其中某些字符串与某些对应的整数值相关联。在一些实施方案中,点云可以通过包括与该字符串值相关联的整数作为该点的属性来指示针对该点的字符串值。编码器和解码器都可以将公共字符串值存储为整数索引,使得解码器可以基于在与解码器的字符串值到整数索引匹配或类似的解码器的字符串值到整数索引中查找该点的字符串属性的整数值来确定针对点的字符串值。
[0053]
在一些实施方案中,除了压缩针对点云的点的属性的属性信息之外,编码器还对点云的空间信息进行压缩和编码以压缩空间信息。例如,为了压缩空间信息,可以生成k-d树,其中,对包括在k-d树的小区的每个小区中的相应数量的点进行编码。编码点计数的该序列可以对针对点云的点的空间信息进行编码。另外,在一些实施方案中,子采样和预测方法可以用于对针对点云的空间信息进行压缩和编码。在一些实施方案中,空间信息可以在被压缩和编码之前被量化。另外,在一些实施方案中,空间信息的压缩可以是无损的。因此,解码器可能够确定与编码器相同的空间信息视图。另外,一旦解码了压缩空间信息,编码器就可能够确定解码器将遇到的空间信息视图。因为编码器和解码器两者都可能具有或能够重建针对点云的相同空间信息,所以空间关系可以用于压缩针对该点云的属性信息。
[0054]
例如,在许多点云中,相邻点或彼此之间定位距离相对较短的点之间的属性信息在属性之间可能具有高的相关级别,并且因此,点属性值的差异相对较小。例如,当相对于点云中分隔更远的点考虑时,点云中的临近点在颜色上可能具有相对较小的差异。
[0055]
在一些实施方案中,编码器可包括预测器,该预测器基于针对点云中相邻点的相似属性的属性值并且基于正被评估的点与相邻点之间的相应距离来确定针对点云中的点的属性的预测属性值。在一些实施方案中,与更远离正被评估的点的相邻点的属性的属性值相比,可以给与更接近正被评估的点的相邻点的属性的属性值更高的权重。另外,编码器可以将预测属性值与在压缩之前的原始点云中的针对该点的属性的属性值进行比较。可以基于该比较来确定残余差,在本文中也称为“属性校正值”。可以对属性校正值进行编码并且将其包括在针对点云的压缩属性信息中,其中解码器使用编码属性校正值来校正针对该点的预测属性值,其中在解码器处使用与在编码器处使用的预测方法相同或类似的相同或类似预测方法来预测属性值。
[0056]
在一些实施方案中,为了对属性值进行编码,编码器可基于点云的点的空间信息来生成点云的点的排序。例如,可根据空间填充曲线对点进行排序。在一些实施方案中,此排序可表示点的莫顿排序。编码器可选择第一点作为起始点,并且可基于从起始点到最近相邻点的最小距离以及从相邻点到下一个最近相邻点的后续最小距离等来确定点云的其他点的评估次序。另外,在一些实施方案中,可从正被评估的给定点的指数值的用户定义的搜索范围内的一组点中确定相邻点,其中索引值和搜索范围值是根据空间填充曲线组织的点云的点的索引中的值。以此方式,可确定用于确定点云的点的预测属性值的评估次序。因为解码器可接收或重建与编码器使用的空间信息相同的空间信息,所以解码器可生成点云的点的相同排序,并且可确定点云的点的相同评估次序。
[0057]
在一些实施方案中,编码器可为点云的起始点分配属性值以用于预测点云的其他点的属性值。编码器可基于起始点的属性值以及起始点与起始点的相邻点之间的距离来预测相邻点的属性值。然后,编码器可确定相邻点的预测属性值与包括在非压缩原始点云中的相邻点的实际属性值之间的差值。可将该差值编码在压缩属性信息文件中,作为相邻点的属性校正值。然后,编码器可以针对评估次序中的每个点重复类似的过程。为了预测针对评估次序中的后续点的属性值,编码器可以将k个最近相邻点识别为正被评估的特定点,其中所识别的k个最近相邻点已分配或预测属性值。在一些实施方案中,“k”可以是从编码器传送到解码器的可配置参数。
[0058]
编码器可以确定在正被评估的点与每个识别的相邻点之间的x、y和z空间中的距离。例如,编码器可以确定从正被评估的点到相邻点中的每个点的相应欧几里得距离。然后编码器可以基于相邻点的属性值来预测针对正被评估的点的属性的属性值,其中根据从正被评估的点到相邻点中的相应一些的距离的倒数对相邻点的属性值进行加权。与更远离正被评估的点的相邻点的属性值相比,可以给与更接近正被评估的点的相邻点的属性值更大的权重。
[0059]
以与针对第一相邻点所述的类似方式,编码器可以将针对点云的其他点中的每个点的预测值与原始非压缩点云(例如,捕获点云)中的实际属性值进行比较。该差值可以被编码为针对这些其他点中正被评估的一个点的属性的属性校正值。在一些实施方案中,可根据基于空间填充曲线次序确定的评估次序,按次序将属性校正值编码在压缩属性信息文件中。因为编码器和解码器可以基于针对点云的空间信息来确定相同的评估次序,所以解码器可以基于在压缩属性信息文件中编码属性校正值的次序来确定哪个属性校正值对应于哪个点的哪个属性。另外,起始点和起始点的一个或多个属性值可以显式编码在压缩属性信息文件中,使得解码器可以确定从与在编码器处开始评估次序所用的相同点开始的评估次序。另外,起始点的所述一个或多个属性值可以提供相邻点的值,解码器使用该相邻点的值来确定针对正被评估的点的预测属性值,该正被评估的点是该起始点的相邻点。
[0060]
在一些实施方案中,编码器可以基于时间考虑来确定针对点的属性的预测值。例如,除了或代替基于相同“帧”(例如,与正被评估的点相同的时间点)中的相邻点确定预测值之外,编码器可以考虑相邻和后续时间帧中的点的属性值。
[0061]
图1a示出了根据一些实施方案的包括捕获针对点云的点的信息的传感器和压缩点云的属性信息的编码器的系统,其中该压缩属性信息被发送至解码器。
[0062]
系统100包括传感器102和编码器104。传感器102捕获点云110,该点云包括表示传感器102的视图108中的结构106的点。例如,在一些实施方案中,结构106可以是山脉、建筑、标牌、街道周围的环境或任何其他类型的结构。在一些实施方案中,捕获点云(诸如捕获点云110)可包括关于包括在该点云中的点的空间信息和属性信息。例如,捕获点云110的点a包括x、y、z坐标以及属性1、2和3。在一些实施方案中,点的属性可包括属性诸如r,g,b颜色值、该点处的速度、该点处的加速度、结构在该点处的反射率、指示何时捕获该点的时间戳、指示捕获该点时的模态的字符串值例如“步行”或其他属性。捕获点云110可提供给编码器104,其中编码器104生成该点云的压缩版本(压缩属性信息112),该压缩版本经由网络114传输到解码器116。在一些实施方案中,点云的压缩版本(诸如压缩属性信息112)可以包括在公共压缩点云中,该公共压缩点云还包括针对该点云的点的压缩空间信息,或者在一些
实施方案中,压缩空间信息和压缩属性信息可以作为单独的文件进行传送。
[0063]
在一些实施方案中,编码器104可与传感器102成一体。例如,编码器104可在包括在传感器设备(诸如传感器102)中的硬件或软件中实现。在其他实施方案中,编码器104可在邻近传感器102的独立计算设备上实现。
[0064]
图1b示出了根据一些实施方案的用于对点云的压缩属性信息进行编码的过程。另外,图1c示出了根据一些实施方案的点云信息在编码过程的不同阶段处的代表性视图。
[0065]
在152处,编码器诸如编码器104接收捕获的点云或生成的点云。例如,在一些实施方案中,可以经由一个或多个传感器(诸如传感器102)捕获点云,或者可以在软件中(诸如在虚拟现实或增强现实系统中)生成点云。例如,164示出了示例捕获或生成的点云。164中所示的点云中的每个点可以具有与该点相关联的一个或多个属性。需注意,为了便于说明,以2d示出了点云164,但是该点云可包括3d空间中的点。
[0066]
在154处,根据空间填充曲线确定点云的点的排序。例如,空间填充曲线可填充三维空间,并且点云的点可基于它们相对于空间填充曲线所处的位置进行排序。例如,莫顿码可用于在一维中表示多维数据,其中将“z次序函数”应用于多维数据以产生一维表示。在一些实施方案中,如本文更详细地讨论,也可将点排序到多个细节级别(lod)中。在一些实施方案中,将包括在相应细节级别(lod)中的点可通过根据点沿着空间填充曲线的位置对点进行排序来确定。例如,这些点可根据其莫顿码来组织。
[0067]
在一些实施方案中,可使用其他空间填充曲线。例如,可使用将位置(例如,以x、y、z坐标形式)映射到空间填充曲线诸如莫顿序(或z次序)、希柏特曲线、皮亚诺曲线等的技术。以此方式,使用空间信息进行编码和解码的点云的所有点可在编码器和解码器上以相同次序组织到索引中。为了确定各种细化级别、采样率等,可使用点的排序索引。例如,为了将点云划分为四个细节级别,可例如以四个的速率对将莫顿值映射到对应点的索引进行采样,其中每隔三个索引点包括在最低级别细化中。对于每个附加细化级别,可对索引中尚未采样的剩余点进行采样,例如每隔两个索引点等,直到所有点均被采样以获得最高细节级别。
[0068]
在156处,可分配针对起始点的一个或多个属性的属性值以便编码并包括在点云的压缩属性信息中。如上所讨论的,可以基于相邻点的属性值来确定针对点云的点的预测属性值。然而,将针对至少一个点的初始属性值提供给解码器,使得解码器可以使用至少该初始属性值和用于校正基于初始属性值预测的预测属性值的属性校正值来确定其他点的属性值。因此,针对至少一个起始点的一个或多个属性值被显式编码在压缩属性信息文件中。另外,可显式编码针对起始点的空间信息,使得解码器可识别起始点以确定要将点云的点中的哪个点用作用于根据空间填充曲线生成次序的起始点。在一些实施方案中,可以用除了显式编码针对起始点的空间信息之外的其他方式来指示起始点,诸如标记起始点或其他点识别方法。
[0069]
因为解码器将接收到起始点的指示,并且会遇到与编码器相同或类似的针对点云的点的空间信息,所以解码器可确定从与编码器所确定相同的起始点开始的相同的空间填充曲线次序。另外,解码器可基于由解码器确定的空间填充曲线次序来确定与编码器相同的处理次序。
[0070]
在158处,对于正被评估的当前点,编码器的预测/校正评估器确定针对当前正被
评估的点的属性的预测属性值。在一些实施方案中,当前正被评估的点可以具有多于一个的属性。因此,编码器的预测/校正评估器可以预测针对该点的多于一个的属性值。对于正被评估的每个点,预测/校正评估器可以识别已分配或预测属性值的一组最近相邻点。在一些实施方案中,所识别的相邻点的数量“k”可以是编码器的可配置参数,并且编码器可以在压缩的属性信息文件中包括指示参数“k”的配置信息,使得在执行属性预测时,解码器可以识别相同数量的相邻点。然后,预测/校正评估器可确定正被评估的点与所识别的相邻点中的相应相邻点之间的距离。预测/校正评估器可以使用逆距离插值方法来预测针对正被评估的点的每个属性的属性值。然后预测/校正评估器可以基于所识别的相邻点的逆距离加权属性值的平均值来预测正被评估的点的属性值。
[0071]
例如,166示出了正被评估的点(x,y,z),其中基于八个所识别的相邻点的逆距离加权属性值来确定属性a1。
[0072]
在160处,确定针对每个点的属性校正值。基于将针对点的每个属性的预测属性值与原始非压缩点云(诸如捕获点云)中的点的对应属性值进行比较来确定属性校正值。例如,168示出了用于确定属性校正值的公式,其中从预测值减去捕获值以确定属性校正值。需注意,尽管图1b示出了在158处预测的属性值和在160处确定的属性校正值,但是在一些实施方案中,可以在预测针对该点的属性值之后确定针对该点的属性校正值。然后可以评估下一个点,其中确定针对该点的预测属性值,并且确定针对该点的属性校正值。因此,可以针对每个正被评估的点重复158和160。在其他实施方案中,可以确定针对多个点的预测值,并且然后可以确定属性校正值。在一些实施方案中,针对正被评估的后续点的预测可以基于预测属性值或者可以基于校正属性值或基于这两者。在一些实施方案中,编码器和解码器两者都可以遵循关于是否基于预测或校正属性值来确定后续点的预测值的相同规则。
[0073]
在162处,对针对点云的点的确定属性校正值、针对起始点的一个或多个分配属性值、起始点的空间信息或其他标记以及待包括在压缩属性信息文件中的任何配置信息进行编码。如在图5中更详细地讨论的,各种编码方法诸如算术编码和/或golomb编码可以用于对属性校正值、分配属性值和配置信息进行编码。
[0074]
图2a示出了根据一些实施方案的编码器的部件。
[0075]
编码器202可以是与图1a中示出的编码器104类似的编码器。编码器202包括空间编码器204、空间填充曲线次序生成器210、预测/校正评估器206、传入数据接口214和传出数据接口208。编码器202还包括上下文存储器216和配置存储器218。
[0076]
在一些实施方案中,空间编码器(诸如空间编码器204)可以压缩与点云的点相关联的空间信息,使得可以压缩格式来存储或传输空间信息。在一些实施方案中,如关于图7更详细讨论的,空间编码器可以利用k-d树来压缩针对点云的点的空间信息。另外,在一些实施方案中,空间编码器(诸如空间编码器204)可利用如关于图6a至图6b更详细讨论的子采样和预测技术。在一些实施方案中,如关于图12c至图12f更详细讨论的,空间编码器(诸如空间编码器204)可利用八叉树来压缩针对点云的点的空间信息。
[0077]
在一些实施方案中,压缩空间信息可以与压缩属性信息一起存储或传输,或者可以分开存储或传输。在任一种情况下,接收针对点云的点的压缩属性信息的解码器也可以接收针对该点云的这些点的压缩空间信息,或者可以获得针对该点云的这些点的空间信息。
[0078]
空间填充曲线次序生成器(诸如空间填充曲线次序生成器210)可利用针对点云的点的空间信息来基于点沿着空间填充曲线落下的位置生成点的索引次序。例如,可针对点云的点生成莫顿码。因为解码器被提供或以其他方式获得与编码器处可用的针对点云的点的相同空间信息,所以由编码器的空间填充曲线次序生成器(诸如编码器202的空间填充曲线次序生成器210)确定的空间填充曲线次序可与由解码器的空间填充曲线次序生成器(诸如解码器220的空间填充曲线次序生成器228)生成的空间填充曲线次序相同或类似。
[0079]
预测/校正评估器(诸如编码器202的预测/校正评估器206)可以基于逆距离插值方法使用正在预测属性值所针对的点的k个最近相邻点的属性值来确定针对点云的点的预测属性值。预测/校正评估器还可将正被评估的点的预测属性值与非压缩点云中的该点的原始属性值进行比较以确定属性校正值。在一些实施方案中,预测/校正评估器(诸如编码器202的预测/校正评估器206)可基于对给定点邻域中的点的属性值的可变性的测量来自适应地调整用于预测邻域中的点的属性值的预测策略。
[0080]
传出数据编码器(诸如编码器202的传出数据编码器208)可以对包括在针对点云的压缩属性信息文件中的属性校正值和分配属性值进行编码。在一些实施方案中,传出数据编码器(诸如传出数据编码器208)可以基于包括在值中的符号的数量来选择用于对值进行编码的编码上下文,诸如分配属性值或属性校正值。在一些实施方案中,可以使用包括golomb指数编码的编码上下文来编码具有更多符号的值,而可以使用算术编码来编码具有更少符号的值。在一些实施方案中,编码上下文可包括多于一个的编码技术。例如,可以使用算术编码来编码值的一部分,而可以使用golomb指数编码来编码值的另一部分。在一些实施方案中,编码器(诸如编码器202)可包括上下文存储器诸如上下文存储器216,该上下文存储器存储由传出数据编码器诸如传出数据编码器208所使用的编码上下文,以对属性校正值和分配属性值进行编码。
[0081]
在一些实施方案中,编码器诸如编码器202还可包括传入数据接口诸如传入数据接口214。在一些实施方案中,编码器可以从一个或多个传感器处接收传入数据,所述一个或多个传感器捕获点云的点或捕获与点云的点相关联的属性信息。例如,在一些实施方案中,编码器可从lidar系统、3d相机、3d扫描仪等处接收数据,并且还可从其他传感器诸如陀螺仪、加速度计等处接收数据。另外,编码器可从系统时钟等处接收其他数据,诸如当前时间。在一些实施方案中,此类不同类型的数据可由编码器经由传入数据接口(诸如编码器202的传入数据接口214)接收。
[0082]
在一些实施方案中,编码器(诸如编码器202)还可包括配置接口(诸如配置接口212),其中编码器用来压缩点云的一个或多个参数可经由配置接口进行调整。在一些实施方案中,配置接口(诸如配置接口212)可为程序化接口,诸如api。编码器(诸如编码器202)所使用的配置可存储在配置存储器(诸如配置存储器218)中。
[0083]
在一些实施方案中,编码器(诸如编码器202)可包括比图2a所示更多或更少的部件。
[0084]
图2b示出了根据一些实施方案的解码器的部件。
[0085]
解码器220可以是与图1a中示出的解码器116类似的解码器。解码器220包括编码数据接口226、空间解码器222、空间填充曲线次序生成器228、预测评估器224、上下文存储器232、配置存储器234和解码数据接口220。
[0086]
解码器(诸如解码器220)可以接收针对点云的点的编码压缩点云和/或编码压缩属性信息文件。例如,解码器(诸如解码器220)可以接收压缩属性信息文件,诸如图1a所示的压缩属性信息112或图3所示的压缩属性信息文件300。解码器可以经由编码数据接口(诸如编码数据接口226)来接收压缩属性信息文件。解码器可以使用编码压缩点云来确定针对该点云的点的空间信息。例如,包括在压缩点云中的点云的点的空间信息可以由空间信息生成器(诸如空间信息生成器222)生成。在一些实施方案中,可经由编码数据接口(诸如编码数据接口226)从存储设备或其他中间源接收压缩点云,其中该压缩点云先前由编码器(诸如编码器104)进行编码。
[0087]
在一些实施方案中,编码数据接口(诸如编码数据接口226)可以解码空间信息。例如,空间信息可能已使用各种编码技术(诸如算术编码、golomb编码等)进行编码。空间信息生成器(诸如空间信息生成器222)可以从编码数据接口(诸如编码数据接口226)处接收解码空间信息,并且可以使用解码空间信息来生成正被解压缩的点云的几何结构的表示。例如,可以将解码空间信息格式化为残差值,以在子采样的预测方法中使用这些残差值以重建待解压缩的点云的几何结构。在此类情况下,空间信息生成器222可使用来自编码数据接口226的解码空间信息来重建正被解压缩的点云的几何结构,并且空间填充曲线次序生成器228可基于由空间信息生成器222生成的针对正被解压缩的点云的重建几何结构来确定针对正被解压缩的点云的空间填充曲线次序。
[0088]
一旦确定针对点云的空间信息并且已经确定空间填充曲线次序,空间填充曲线次序就可由解码器的预测评估器(诸如解码器220的预测评估器224)用来确定用于确定点云的点的属性值的评估次序。另外,空间填充曲线次序可由预测评估器(诸如预测评估器224)用来识别距正被评估的点的最近相邻点。
[0089]
解码器的预测评估器(诸如预测评估器224)可诸如基于包括在压缩属性信息文件中的分配起始点来选择起始点。在一些实施方案中,压缩属性信息文件可包括针对起始点的一个或多个对应属性的一个或多个分配值。在一些实施方案中,预测评估器(诸如预测评估器224)可以基于包括在压缩属性信息文件中的针对起始点的分配值将值分配给正被解压缩的点云的解压缩模型中的起始点的一个或多个属性。预测评估器(诸如预测评估器224)还可以利用起始点的属性的分配值来确定相邻点的属性值。例如,预测评估器可选择距起始点的相邻点作为下一个要评估的点,其中基于根据空间填充曲线次序的点的索引次序来选择相邻点。需注意,因为空间填充曲线次序是基于与在编码器处生成空间填充曲线次序所使用相同或类似的空间信息在解码器处生成的,所以解码器可通过识别根据空间填充曲线次序的索引中的下一个最近邻来确定与在编码器处所确定相同的用于评估正被解压缩的点云的点的评估次序。
[0090]
一旦预测评估器已经识别出距正被评估的点的“k”个最近相邻点,预测评估器就可以基于这“k”个最近相邻点的对应属性的属性值来预测针对正被评估的点的一个或多个属性的一个或多个属性值。在一些实施方案中,逆距离插值技术可以用于基于相邻点的属性值来预测正被评估的点的属性值,其中距正被评估的点较近距离的相邻点的属性值比距正被评估的点较远距离的相邻点的属性值更大地加权。在一些实施方案中,解码器的预测评估器(如解码器220的预测评估器224)可基于对给定点邻域中的点的属性值的可变性的测量来自适应地调整用于预测邻域中的点的属性值的预测策略。例如,在其中使用自适应
预测的实施方案中,解码器可镜像在编码器处作出的预测自适应决策。在一些实施方案中,自适应预测参数可包括在由解码器接收的压缩属性信息中,其中这些参数由生成压缩属性信息的编码器用信号传送。在一些实施方案中,解码器可在不存在用信号传送的参数的情况下利用一个或多个默认参数,或者可基于接收到的压缩属性信息来推断参数。
[0091]
预测评估器(诸如预测评估器224)可以将属性校正值应用于预测属性值,以确定针对解压缩点云中的点要包括的属性值。在一些实施方案中,针对点的属性的属性校正值可以包括在压缩属性信息文件中。在一些实施方案中,可以使用多个支持的编码上下文中的一个来编码属性校正值,其中基于包括在属性校正值中的符号的数量来选择不同的编码上下文以对不同的属性校正值进行编码。在一些实施方案中,解码器(诸如解码器220)可包括上下文存储器(诸如上下文存储器232),其中上下文存储器存储多个编码上下文,所述多个编码上下文可用于对分配属性值或属性校正值进行解码,这些属性值或属性校正值已经在编码器处使用对应的编码上下文进行了编码。
[0092]
解码器(诸如解码器220)可以经由解码数据接口(诸如解码数据接口230)将基于接收到的压缩点云和/或接收到的压缩属性信息文件生成的解压缩点云提供给接收设备或应用程序。解压缩点云可包括点云的点和针对该点云的点的属性的属性值。在一些实施方案中,解码器可以解码针对点云的属性的一些属性值,而无需解码针对点云的其他属性的其他属性值。例如,点云可包括针对点云的点的颜色属性,并且还可包括针对该点云的点的其他属性,诸如速度。在此类情况下,解码器可以对点云的点的一个或多个属性(诸如速度属性)进行解码,而无需对点云的点的其他属性(诸如颜色属性)进行解码。
[0093]
在一些实施方案中,解压缩点云和/或解压缩属性信息文件可以用于生成视觉显示器,诸如用于头戴式显示器。另外,在一些实施方案中,可将解压缩点云和/或解压缩属性信息文件提供给决策引擎,该决策引擎使用解压缩点云和/或解压缩属性信息文件来做出一个或多个控制决策。在一些实施方案中,解压缩点云和/或解压缩属性信息文件可用于各种其他应用或用于各种其他目的。
[0094]
图3示出了根据一些实施方案的示例压缩属性信息文件。属性信息文件300包括配置信息302、点云数据304和点属性校正值306。在一些实施方案中,点云文件300可经由多个数据包分批地传送。在一些实施方案中,并非属性信息文件300中所示的所有部分都可被包括在传输压缩属性信息的每个数据包中。在一些实施方案中,属性信息文件(诸如属性信息文件300)可以被存储在存储设备(诸如实现编码器或解码器的服务器)或其他计算设备中。在一些实施方案中,另外的配置信息可包括自适应预测参数,诸如用于确定针对点邻域的可变性测量结果的可变性测量技术、用于触发特定预测程序的使用的阈值可变性值、用于确定要针对其确定可变性的点邻域的大小的一个或多个参数等。
[0095]
图4a示出了根据一些实施方案的用于对点云的属性信息进行压缩的过程。
[0096]
在402处,编码器接收点云,该点云包括针对点云的点中的至少一些的属性信息。可以从捕获点云的一个或多个传感器处接收点云,或者可以在软件中生成点云。例如,虚拟现实或增强现实系统可能已经生成了点云。
[0097]
在404处,可以量化点云的空间信息,例如,点云的点的x、y和z坐标。在一些实施方案中,坐标可以四舍五入到最接近的测量单位,诸如米、厘米、毫米等。
[0098]
在406处,压缩量化的空间信息。在一些实施方案中,可使用关于图6a至图6b更详
细讨论的子采样和细分预测技术来压缩空间信息。另外,在一些实施方案中,可使用关于图7更详细讨论的k-d树压缩技术来压缩空间信息,或者可使用八叉树压缩技术来压缩空间信息。在一些实施方案中,可使用其他合适的压缩技术来压缩点云的空间信息。
[0099]
在408处,将针对点云的压缩空间信息编码为压缩点云文件或压缩点云文件的一部分。在一些实施方案中,压缩空间信息和压缩属性信息可包括在公共压缩点云文件中,或者可以被传送或存储为单独文件。
[0100]
在412处,使用接收到的点云的空间信息来根据空间填充曲线生成索引点次序。在一些实施方案中,可在根据空间填充曲线生成次序之前量化点云的空间信息。另外,在其中使用有损压缩技术来压缩点云的空间信息的一些实施方案中,可在根据空间填充曲线生成次序之前对空间信息进行有损编码和有损解码。在将有损压缩用于空间信息的实施方案中,在编码器处对空间信息进行编码和解码可确保在编码器处生成的根据空间填充曲线的次序将与将在解码器处使用先前有损编码的解码空间信息生成的根据空间填充曲线的次序匹配。
[0101]
另外,在一些实施方案中,在410处,可量化针对点云的点的属性信息。例如,属性值可以四舍五入为整数或特定的测量增量。在其中属性值是整数的一些实施方案中,诸如当整数用于传送字符串值诸如“步行”、“跑步”,“驾驶”等时,可以省略在410处的量化。
[0102]
在414处,分配针对起始点的属性值。针对起始点的分配属性值连同属性校正值一起编码在压缩属性信息文件中。因为解码器基于到相邻点的距离和相邻点的属性值来预测属性值,所以针对至少一个点的至少一个属性值被显式编码在压缩属性文件中。在一些实施方案中,点云的点可包括多个属性,并且在此类实施方案中,可以针对点云的至少一个点编码针对属性的每种类型的至少一个属性值。在一些实施方案中,起始点可以是在412处根据空间填充曲线确定次序时评估的第一点。在一些实施方案中,编码器可以编码指示针对起始点的空间信息和/或点云的哪个点是一个或多个起始点的其他标记的数据。另外,编码器可以对针对起始点的一个或多个属性的属性值进行编码。
[0103]
在416处,编码器确定用于预测针对点云中除起始点之外的其他点的属性值的评估次序,所述预测和确定属性校正值在本文中可被称为“评估”点的属性。可基于根据空间填充曲线的次序来确定评估次序。
[0104]
在418处,选择正被评估的起始点或后续点的相邻点。在一些实施方案中,可基于下一个要评估的相邻点是根据空间填充曲线的点索引次序中的下一点来选择相邻点。
[0105]
在420处,确定距当前正被评估的点的“k”个最近相邻点。参数“k”可以是由编码器选择的可配置参数,或者可以作为用户可配置参数提供给编码器。为了选择“k”个最近相邻点,编码器可根据在412处确定的点索引次序以及点之间的相应距离来识别正被评估的点的第一“k”个最近点。例如,代替确定距正被评估的点的绝对最近相邻点,编码器可选择点云的一组点,该组点具有的在根据空间填充曲线的索引中的索引值在正被评估的特定点的索引值的用户定义的搜索范围(例如,8、16、32、64等)内。然后,编码器可利用该组点内的距离来选择用于预测的“k”个最近相邻点。在一些实施方案中,仅具有分配属性值的点或已经为其确定了预测属性值的点可以包括在这“k”个最近相邻点中。在一些实施方案中,可识别各种数量的点。例如,在一些实施方案中,“k”可以是5个点、10个点、16个点等。因为点云包括3d空间中的点,所以特定点可能在多个平面中具有多个相邻点。在一些实施方案中,编码
器和解码器可以被配置为将点识别为“k”个最近相邻点,而不管是否已经针对该点预测了值。另外,在一些实施方案中,在预测中使用的针对点的属性值可以是先前的预测属性值或基于应用属性校正值已经校正的校正预测属性值。在任一种情况下,编码器和解码器可以被配置为在识别“k”个最近相邻点时以及基于“k”个最近相邻点的属性值来预测点的属性值时应用相同的规则。
[0106]
在422处,针对当前正被评估的点的每个属性确定一个或多个属性值。可以基于逆距离插值来确定属性值。逆距离插值可以基于“k”个最近相邻点的属性值来内插预测属性值。可以基于“k”个最近相邻点中的相应一些与正被评估的点之间的相应距离来加权“k”个最近相邻点的属性值。距当前正被评估的点较近距离的相邻点的属性值可以比距当前正被评估的点较远距离的相邻点的属性值更大地加权。
[0107]
在424处,确定针对当前正被评估的点的一个或多个预测属性值的属性校正值。可以基于将预测属性值与在属性信息压缩之前针对点云中相同点(或类似点)的对应属性值进行比较来确定属性校正值。在一些实施方案中,量化的属性信息(诸如在410处生成的量化的属性信息)可以用于确定属性校正值。在一些实施方案中,属性校正值也可以被称为“残余误差”,其中残余误差指示预测属性值与实际属性值之间的差值。
[0108]
在426处,确定在点云中是否存在待为其确定属性校正值的附加点。如果还存在待评估的附加点,则过程返回到418,并且选择评估次序中的下一个待评估的点。该过程可以重复步骤418至426,直到点云的所有点中的所有或一部分已经被评估以确定预测属性值和针对预测属性值的属性校正值为止。
[0109]
在428处,对确定属性校正值、分配属性值以及用于对压缩属性信息文件进行解码的任何配置信息(诸如参数“k”)进行编码。
[0110]
自适应预测属性
[0111]
在一些实施方案中,如上所述的编码器还可基于相邻点的属性值来自适应地改变预测策略和/或在给定预测策略中使用的点的数量。另外,解码器可基于相邻点的重构属性值来类似地自适应地改变预测策略和/或在给定预测策略中使用的点的数量。
[0112]
例如,点云可包括代表道路的点,其中道路是黑色的,道路上有白色条纹。可以自适应地改变默认的最近相邻预测策略,以考虑到代表白线和黑道路的点的属性值的可变性。因为这些点的属性值差值很大,所以默认的最近相邻预测策略可能会导致白线模糊和/或导致压缩效率降低的高残差值。然而,更新的预测策略可通过选择更适合的预测策略和/或通过在k最近邻预测中使用较少的点来将该可变性考虑在内。例如,对于黑道路,在k最近邻预测中不使用白线点。
[0113]
在一些实施方案中,在预测点p的属性值之前,编码器或解码器可以计算点p的邻域中的点的属性值的可变性,例如,k个最近相邻点。在一些实施方案中,可以基于方差、与点p相邻的点的任意两个属性值(或重构的属性值)之间的最大差值来计算可变性。在一些实施方案中,可以基于相邻点的加权平均值来计算可变性,其中该加权平均值考虑了相邻点到点p的距离。在一些实施方案中,可以基于相邻点的属性的加权平均值并且考虑到相邻点的距离来计算一组相邻点的可变性。例如,
[0114]
可变性=e[(x-加权平均值(x))2]
[0115]
在上式中,e是点p的邻域中的点的平均属性值,加权平均值(x)是点p的邻域中的
点的属性值的加权平均值,其中考虑了相邻点到点p的距离。在一些实施方案中,与属性的平均值e(x)、属性的加权平均值、加权平均值(x)或属性的中位数(中位数(x))相比,可变性可计算为最大差异。在一些实施方案中,可以使用与x百分比(例如x=10)对应的值的平均值来计算可变性,与属性的平均值e(x)、属性的加权平均值、加权平均值(x)或属性的中位数(中位数(x))相比,该平均值差值最大。
[0116]
在一些实施方案中,如果计算出的点p的邻域中的点的属性的可变性大于阈值,则可以应用速率失真优化。例如,速率失真优化可以减少在预测中使用的相邻点的数量,或者切换到不同的预测技术。在一些实施方案中,阈值可以被显式地写入位流中。另外,在一些实施方案中,可以针对每个点云或点云的子块或针对待编码的点的数量来自适应地调整阈值。例如,可将阈值包括在压缩属性信息文件350中作为包括在配置信息302中的附加配置信息,如图3所述,或者可包括在压缩属性文件1150中作为包括在配置信息1152中的附加配置信息,如下文关于图11b所述。
[0117]
在一些实施方案中,可以在速率失真优化程序中使用不同的失真度量,诸如平方误差和、加权平方误差和、绝对差之和或加权绝对差之和。
[0118]
在一些实施方案中,可以针对每个属性或者对应于同一样本的多个属性独立地计算失真,并且可以考虑并且适当地加权。例如,可以计算针对r、g、b或y、u、v的失真值,并且然后线性或非线性地组合在一起以生成总失真值。
[0119]
在一些实施方案中,也可以考虑用于速率失真量化的高级技术,诸如基于网格的量化,其中代替孤立地考虑单个点,对多个点进行联合编码。例如,编码过程可以选择使用导致最小化形式j=d λ*速率的成本函数的方法对所有这些多个点进行编码,其中d是所有这些点的总体失真,并且速率是编码这些点的总体速率成本。
[0120]
在一些实施方案中,编码器(诸如编码器202)可以针对点云、点云的细节级别或针对点云的细节级别内的一组点显式编码所选预测策略的索引值,其中解码器可以访问索引的实例,并且可以基于接收到的索引值确定所选的预测策略。解码器可以将所选的预测策略应用于正在对其应用速率失真优化过程的点集。在一些实施方案中,如果在编码的位流中没有指定速率失真优化程序,则可以存在默认的预测策略,并且解码器可以应用默认的预测策略。另外,在一些实施方案中,如果不满足可变性阈值,则可应用默认预测策略。
[0121]
例如,图4b示出了根据一些实施方案的作为对点云的属性信息进行压缩的一部分使用自适应的基于距离的预测来预测属性值。
[0122]
在采用自适应的基于距离的预测的一些实施方案中,如图4a的元素420和422中所描述预测属性值还可包括选择要用于预测点的属性值的预测程序的步骤,诸如450-456。在一些实施方案中,所选择的预测程序可以是k最近邻预测程序,如在本文中并且关于图4a中的元素420所描述。在一些实施方案中,所选择的预测程序可以是修改的k最近邻预测程序,其中与用于预测点云的可变性较小的部分的属性值的点的数量相比,用于执行自适应预测的最近邻的数量中包括更少的点。在一些实施方案中,如果相邻点的可变性超过与所选择的预测程序相关联的阈值,则该预测程序可以是:正针对其预测属性值的点仅使用距正针对其预测属性值的点的最近点的属性值。在一些实施方案中,可根据正针对其预测属性值的点的邻域中的点的可变性使用其他预测程序。例如,在一些实施方案中,可使用其他预测程序,诸如非基于距离的插值程序,诸如重心插值、自然邻插值、移动最小二乘插值或其他
合适的插值技术。
[0123]
在450处,编码器识别点云的正针对其预测属性值的点的邻域的一组相邻点。在一些实施方案中,可使用如本文所述的k最近邻技术来识别邻域的一组相邻点。在一些实施方案中,可以其他方式识别待用于确定可变性的点。例如,在一些实施方案中,可将用于可变性分析的点的邻域定义为包括与用于使用k个最近相邻点基于逆基于距离的插值来预测属性值相比更多或更少的点或在距给定点更大或更小的距离内的点。在其中用于识别用于确定可变性的邻域点的参数与用于k最近邻预测的参数不同的一些实施方案中,在由编码器编码的位流中用信号传送不同参数或可根据其确定不同参数的数据。
[0124]
在452处,确定相邻点的属性值的可变性。在一些实施方案中,可单独确定每个属性值可变性。例如,对于具有r、g、b属性值的点,每个属性值(例如r、g和b中的每一者)可具有单独确定的其相应可变性。另外,在一些实施方案中,可使用栅格量化,其中可确定具有相关值的一组属性诸如rgb作为公共可变性。例如,在以上关于黑道路上的白条纹讨论的示例中,r的大可变性也可适用于b和g,因此不必分别确定r、g和b中的每一者的可变性。相反,可将相关属性值视为组,并且可确定相关属性的公共可变性。
[0125]
在一些实施方案中,可使用以下确定点p的邻域中的属性的可变性:平方误差和可变性技术、平方误差距离加权和可变性技术、绝对差值和可变性技术、绝对差值距离加权和可变性技术、或其他合适的可变性技术。在一些实施方案中,编码器可针对给定点p选择要使用的可变性技术,并且可在由编码器编码的位流中编码可变性技术的索引的索引值,其中解码器包括相同索引并且可基于编码索引值针对点p确定要使用的可变性技术。
[0126]
在454至456处,确定在452处确定的可变性是否超过一个或多个可变性阈值。如果是,则使用与超过的可变性阈值相对应的对应预测技术来预测针对点p的一个或多个属性值。在一些实施方案中,可支持多个预测程序。例如,如果超过第一可变性阈值,则元素458指示使用第一预测程序,并且如果超过另一可变性阈值,则元素460指示使用另一预测程序。此外,如果不超过可变性阈值1至n,则462指示使用默认预测程序,诸如未修改的k最近邻预测程序。在一些实施方案中,除默认预测程序之外,可使用单个可变性阈值和单个替代预测程序。在一些实施方案中,可使用任何数量“n”的可变性阈值和对应的预测程序。
[0127]
例如,在一些实施方案中,如果超过第一可变性阈值,则第一预测程序可使用比默认k最近邻预测程序中所使用的相邻点更少的相邻点。此外,如果超过第二可变性阈值,则第二预测程序可仅使用最近点来确定点p的属性值。因此,在此类实施方案中,中等可变性可导致在第一预测程序下省略一些异常点,并且较高可变性可导致从预测程序中省略除最近相邻点之外的所有点,而如果可变性低,则在默认预测程序中使用k个最近相邻点。
[0128]
图4c至图4e示出了根据一些实施方案的可由编码器确定或选择并且通过点云的压缩属性信息用信号传送的参数。
[0129]
在图4c中,在470处,编码器可选择要用于针对正针对其预测属性值的点p的邻域中的点确定属性可变性的可变性测量技术。在一些实施方案中,编码器可利用速率失真优化框架来确定要使用哪种可变性测量技术。在472处,编码器可在由编码器编码的位流中包括指示选择了哪种可变性技术的信号。
[0130]
在图4d中,在480处,编码器可确定正针对其预测属性值的点p的邻域中的点的可变性阈值。在一些实施方案中,编码器可利用速率失真优化框架来确定可变性阈值。在482
处,编码器可在由编码器编码的位流包括指示编码器使用了哪个可变性阈值来执行预测的信号。
[0131]
在图4e中,在490处,编码器可确定或选择要用于确定可变性的邻域大小。例如,编码器可使用速率失真优化技术来确定要用于确定点p的可变性的点邻域的大小。在492处,编码器可在由编码器编码的位流中包括用于定义邻域大小的一个或多个值。例如,编码器可用信号传送距点p的最小距离、距点p的最大距离、要包括的相邻点的总数等,并且这些参数可定义点p的确定可变性所考虑的邻域点中包括哪些点。
[0132]
在一些实施方案中,可变性技术、可变性阈值或邻域大小中的一者或多者可不用信号传送,并且替代地可在解码器处使用编码器和解码器两者已知的预定参数来确定。在一些实施方案中,解码器可基于其他数据(诸如点云的空间信息)来推断可变性技术、可变性阈值或邻域大小中的一者或多者。
[0133]
一旦在858-862处使用适当的对应预测程序来预测属性值,解码器就可前进到820,并且应用在编码位流中接收的属性校正值以调整预测属性值。在一些实施方案中,在编码器和解码器处使用如本文所述的自适应预测可减少编码属性校正值所需的位数,并且还可减轻在解码器处使用预测程序和用信号传送的属性校正值重构的重构点云的失真。
[0134]
用于编码属性值和/或属性校正值的示例性过程
[0135]
可以使用各种编码技术来对属性校正值、分配属性值和任何配置信息进行编码。
[0136]
例如,图5示出了根据一些实施方案的用于对属性校正值进行编码的过程。在502处,将针对其值(例如,属性校正值)正被编码的点的属性校正值转换为无符号值。例如,在一些实施方案中,可以为负值的属性校正值分配奇数,并且可以为正值的属性校正值分配偶数。因此,可以基于属性校正值的值是偶数还是奇数来暗示属性校正值是正还是负。在一些实施方案中,分配属性值也可以被转换成无符号值。在一些实施方案中,属性值都可以是正值,例如在被分配为表示字符串值的整数的情况下,诸如“步行”、“跑步”、“驾驶”等。在此类情况下,可以省略502。
[0137]
在504处,选择编码上下文以针对点的第一值进行编码。例如,该值可以是分配属性值,或者可以是属性校正值。可从多个支持的编码上下文中选择编码上下文。例如,如图2a所示的编码器(诸如编码器202)的上下文存储器(诸如上下文存储器216)可以存储用于编码针对点云的点的属性值或属性校正值的多个支持的编码上下文。在一些实施方案中,可以基于待编码的值的特征来选择编码上下文。例如,一些编码上下文可以被优化用于对具有某些特征的值进行编码,而其他编码上下文可以被优化用于对具有其他特征的值进行编码。
[0138]
在一些实施方案中,可以基于包括在待编码的值中的符号的数量或种类来选择编码上下文。例如,可以使用算术编码技术来编码具有更少或更少分集符号的值,而可以使用指数golomb编码技术来编码具有更多符号或更多分集符号的值。在一些实施方案中,编码上下文可使用多于一个的编码技术来编码值的一部分。例如,在一些实施方案中,编码上下文可以指示待使用算术编码技术来编码值的一部分,而待使用golomb编码技术来编码值的另一部分。在一些实施方案中,编码上下文可以指示待使用第一编码技术(诸如算术编码)来编码低于阈值的值的一部分,而待使用另一种编码技术(诸如指数golomb编码)来编码超过阈值的值的另一部分。在一些实施方案中,上下文存储器可以存储多个编码上下文,其中
每个编码上下文适合于具有特定特征的值。
[0139]
在506处,可以使用在504处选择的编码上下文来编码针对该点的第一值(或附加值)。在508处,确定是否存在待编码的针对该点的附加值。如果存在待编码的针对该点的附加值,则在506处,可以使用在504处选择的相同选择的编码技术对附加值进行编码。例如,点可能具有“红色”、“绿色”和“蓝色”颜色属性。因为r、g、b颜色空间中相邻点之间的差值可能类似,因此,针对红色属性、绿色属性和蓝色属性的属性校正值可能类似。因此,在一些实施方案中,编码器可以选择用于对针对颜色属性中的第一个(例如红色属性)的属性校正值进行编码的编码上下文,并且可以使用相同的编码上下文对针对其他颜色属性(诸如绿色属性和蓝色属性)的属性校正值进行编码。
[0140]
在510处,编码值(诸如编码的分配属性值和编码的属性校正值)可以包括在压缩属性信息文件中。在一些实施方案中,可根据基于空间填充曲线次序针对点云确定的评估次序,将编码值包括在压缩属性信息文件中。因此,解码器可能够基于在压缩属性信息文件中包括编码值的次序来确定哪个编码值与哪个点的哪个属性一起。另外,在一些实施方案中,数据可以包括在压缩属性信息文件中,该压缩属性信息文件指示选择来对针对点的值中的相应一些进行编码的编码上下文中的相应一些。
[0141]
用于编码空间信息的示例性过程
[0142]
图6a至图6b示出了根据一些实施方案的用于对点云的空间信息进行压缩的示例性过程。
[0143]
在602处,编码器接收点云。该点云可以是来自一个或多个传感器的捕获点云,或者可以是生成的点云(诸如由图形应用程序生成的点云)。例如,604示出了未压缩点云的点。
[0144]
在606处,编码器对接收到的点云进行子采样以生成子采样点云。该子采样点云可比该接收到的点云包括更少的点。例如,接收到的点云可包括数百个点、数千个点或数百万个点,并且子采样点云可包括数十个点、数百个点或数千个点。例如,608示出了在602处接收到的点云的子采样点,例如,对604中的点云的点进行子采样。
[0145]
在一些实施方案中,编码器可对子采样点云进行编码和解码,以生成解码器在对压缩点云进行解码时将遇到的代表性子采样点云。在一些实施方案中,编码器和解码器可执行有损压缩/解压缩算法以生成代表性子采样点云。在一些实施方案中,可将针对子采样点云的点的空间信息量化,作为生成代表性子采样点云的一部分。在一些实施方案中,编码器可以利用无损压缩技术,并且可以省略对子采样点云的编码和解码。例如,当使用无损压缩技术时,原始子采样点云可代表解码器将遇到的子采样点云,因为在无损压缩中,数据可能不会在压缩和解压缩期间丢失。
[0146]
在610处,编码器根据为压缩点云选择的配置参数或根据固定的配置参数来识别子采样点云的点之间的细分位置。由编码器使用的非固定的配置参数的配置参数通过在压缩点云中包括这些配置参数的值来传送至编码器。因此,解码器可基于包括在压缩点云中的细分配置参数来确定与编码器评估的相同的细分位置。例如,612示出了在子采样点云的相邻点之间的所识别的细分位置。
[0147]
在614处,编码器针对细分位置中的相应一些确定是要在解压缩点云中的细分位置处包括点还是不包括点。指示此确定的数据编码在压缩点云中。在一些实施方案中,指示
该确定的数据可以是单个位,如果“真”,则该单个位意味着将要包括点,如果“假”,则该单个位意味着将不包括点。另外,编码器可确定要包括在解压缩点云中的点将相对于解压缩点云中的细分位置重新定位。例如616示出了要相对于细分位置重新定位的一些点。针对此类点,编码器还可对指示如何相对于细分位置重新定位点的数据进行编码。在一些实施方案中,位置校正信息可以被量化并进行熵编码。在一些实施方案中,位置校正信息可包括δx、δy和/或δz值,这些值指示如何相对于细分位置重新定位该点。在其他实施方案中,位置校正信息可包括单个标量值,该单个标量值对应于位置校正信息的法向分量,其计算如下:
[0148]
δn=([xa,ya,za]-[x,y,z])
·
[法向量]
[0149]
在上式中,δn是指示位置校正信息的标量值,该标量值是相对于细分位置重新定位或调整的点位置(例如[xa,ya,za])与原始细分位置(例如[x,y,z])之间的差值。该向量差与细分位置处的法向量的向量积产生标量值δn。因为解码器可确定细分位置处的法向量,并且可确定细分位置的坐标(例如[x,y,z]),通过针对经调整位置解出上述公式,该解码器还能确定经调整位置的坐标(例如[xa,ya,za]),该坐标表示点相对于细分位置的经重新定位位置。在一些实施方案中,位置校正信息可进一步分解为垂直分量和一个或多个附加切向分量。在此类实施方案中,可对垂直分量(例如,δn)和所述一个或多个切向分量进行量化和编码以包括在压缩点云中。
[0150]
在一些实施方案中,编码器可确定是否要将一个或多个附加点(除了包括在细分位置处的点或在相对于细分位置重新定位的位置处包括的点之外)包括在解压缩点云中。例如,如果原始点云具有不规则的表面或形状,使得子采样点云中的点之间的细分位置未充分表示该不规则的表面或形状,则编码器可确定除了确定要包括在细分位置处的点或相对于解压缩点云中的细分位置重新定位的点之外还包括一个或多个附加点。另外,编码器可基于系统约束诸如目标比特率、目标压缩比、质量目标度量等来确定是否要将一个或多个附加点包括在解压点云中。在一些实施方案中,位预算可由于改变条件诸如网络条件、处理器负载等而改变。在此类实施方案中,编码器可基于改变的位预算来调整被编码以被包括在解压缩点云中的附加点的量。在一些实施方案中,编码器可包括附加点,使得在不超出位预算的情况下消耗位预算。例如,当位预算较高时,编码器可包括更多的附加点以消耗位预算(并提高质量),并且当位预算较小时,编码器可包括更少的附加点,使得在不超出位预算的情况下消耗位预算。
[0151]
在一些实施方案中,编码器还可确定是否要执行附加的细分迭代。如果要,则考虑到确定要包括、重新定位或附加地包括在解压缩点云中的点,并且该过程返回到610,以识别更新的子采样点云的新细分位置,该更新的子采样点云包括确定要包括、重新定位或附加地包括在解压缩点云中的点。在一些实施方案中,待执行的细分迭代次数(n)可以是编码器的固定或可配置参数。在一些实施方案中,可将不同的细分迭代值分配给点云的不同部分。例如,编码器可考虑正从其查看点云的点视图,并且可对该点云在从该点视图查看的该点云的前景中的点执行更多的细分迭代,并且可对在从该点视图查看的点云的后景中的点执行更少的细分迭代。
[0152]
在618处,对针对点云的子采样点的空间信息进行编码。另外,对细分位置包括和重新定位数据进行编码。另外,对由编码器选择或从用户提供给编码器的任何可配置参数
进行编码。然后,可将压缩点云作为一个压缩点云文件、多个压缩点云文件发送至接收实体,或者可将压缩点云打包并经由多个数据包传送至接收实体,诸如解码器或存储设备。在一些实施方案中,压缩点云可包括压缩空间信息和压缩属性信息两者。在其他实施方案中,压缩空间信息和压缩属性信息可包括在单独的压缩点云文件中。
[0153]
图7示出了根据一些实施方案的用于对点云的空间信息进行压缩的另一个示例过程。
[0154]
在一些实施方案中,可使用除了图6a至图6b中所述的子采样和预测空间信息技术之外的其他空间信息压缩技术。例如,空间编码器(诸如空间编码器204)或空间解码器(诸如空间解码器222)可以利用其他空间信息压缩技术(诸如k-d树空间信息压缩技术)。例如,在图4的406处的压缩空间信息可以使用类似于在图6a-b中所述的子采样和预测技术来执行、可以使用类似于图7中所述的k-d树空间信息压缩技术来执行、或者可以使用另一种合适的空间信息压缩技术来执行。
[0155]
在k-d树空间信息压缩技术中,可以在702处接收包括空间信息的点云。在一些实施方案中,空间信息可以已经被预先量化或者可在被接收之后被进一步量化。例如,718示出了可以在702处接收的捕获点云。为简单起见,718以二维方式示出了点云。然而,在一些实施方案中,接收到的点云可包括3d空间中的点。
[0156]
在704处,使用接收到的点云的空间信息来构建k维树或k-d树。在一些实施方案中,可以通过以预先确定的次序将空间诸如点云的1d、2d或3d空间划分为两半来构建k-d树。例如,包括点云的点的3d空间可以最初经由与三个轴中的一个(诸如x轴)相交的平面划分为两半。然后,后续的划分可以沿三个轴中的另一个(诸如y轴)划分所得到的空间。然后,另一个划分可以沿轴中的另一个(诸如z轴)划分所得到的空间。每次执行划分时,可以记录包括在由划分创建的子小区中的点的数量。在一些实施方案中,可以记录由于划分而导致的两个子小区中的仅一个子小区中的点的数量。这是因为可以通过从划分之前的父小区中的点的总数量中减去所记录的子小区中的点的数量来确定包括在其他子小区中的点的数量。
[0157]
k-d树可包括由包括点云的点的空间的顺序划分产生的、包括在小区中的点的数量的序列。在一些实施方案中,构建k-d树可包括继续细分空间,直到仅单个点包括在每个最低级别的子小区中。可以将k-d树作为由顺序划分产生的顺序小区中的点的数量的序列进行传送。解码器可以配置有指示由编码器遵循的细分序列的信息。例如,编码器可以遵循预定义的划分序列,直到在每个最低级别的子小区中仅剩下单个点为止。因为解码器可能知道构建k-d树所遵循的划分顺序以及每个细分所产生的点的数量(作为压缩空间信息传送给解码器),所以解码器可能够重构点云。
[0158]
例如,720示出了二维空间中的k-d压缩的简化示例。初始空间包括七个点。这可以被认为是第一父小区,并且可以用点的数量“7”作为k-d树的第一数量来编码k-d树,这指示在k-d树中总共存在七个点。下一步可以是沿x轴划分空间,从而得到两个子小区,左子小区具有三个点,右子小区具有四个点。k-d树可包括左子小区中的点的数量,例如包括“3”作为k-d树的下一个数量。请记住,可以基于从父小区中的点的数量减去左子小区中的点的数量来确定右子小区中的点的数量。进一步可以是沿y轴将空间划分附加的时间,使得左子小区和右子小区中的每一者被划分为两半,成为更低级别的子小区。同样,包括在左更低级别子
小区中的点的数量可包括在k-d树中,例如“0”和“1”。然后,下一步可以是沿x轴划分非零的更低级别子小区,并且在k-d树中记录更低级别的左子小区中的每一者的点的数量。该过程可以继续直到最低级别的子小区中仅剩下单个点。解码器可以基于接收到k-d树的每个左子小区的点总数的序列来利用逆过程来重建点云。
[0159]
在706处,选择用于对针对k-d树的第一小区(例如,包括七个点的父小区)的点的数量进行编码的编码上下文。在一些实施方案中,上下文存储器可以存储数百或数千个编码上下文。在一些实施方案中,可以使用最高数量点编码上下文来对包括比最高数量的点编码上下文更多的点的小区进行编码。在一些实施方案中,编码上下文可包括算术编码、golomb指数编码或两者的组合。在一些实施方案中,可使用其他编码技术。在一些实施方案中,算术编码上下文可包括针对特定符号的概率,其中不同的算术编码上下文包括不同的符号概率。
[0160]
在708处,根据所选择的编码上下文来编码针对第一小区的点的数量。
[0161]
在710处,基于包括在父小区中的点的数量来选择用于对子小区进行编码的编码上下文。可以与在706处针对父小区类似的方式来选择针对子小区的编码上下文。
[0162]
在712处,根据在710处选择的所选择的编码上下文,对包括在子小区中的点的数量进行编码。在714处,确定在k-d树中是否存在待编码的附加更低级别子小区。如果存在,则该过程返回到710。如果不存在,则在716处,将父小区和子小区中的编码点的数量包括在压缩空间信息文件(诸如压缩点云)中。在压缩空间信息文件中对编码的值进行排序,使得解码器可以基于每个父小区和子小区的点的数量以及包括在压缩空间信息文件中的相应小区的点的数量的次序来重构点云。
[0163]
在一些实施方案中,可以确定每个小区中的点的数量,并且随后在716处将其编码为组。或者,在一些实施方案中,可以在确定之后对小区中的点的数量进行编码,而无需等待确定所有子小区的点总数。
[0164]
示例性解码过程
[0165]
图8示出了根据一些实施方案的用于对点云的压缩属性信息进行解压缩的示例过程。
[0166]
在802处,解码器接收针对点云的压缩属性信息,并且在804处,解码器接收针对点云的压缩空间信息。在一些实施方案中,压缩属性信息和压缩空间信息可包括在一个或多个公共文件或单独文件中。
[0167]
在806处,解码器对压缩空间信息进行解压缩。压缩空间信息可能已经根据子采样和预测技术进行压缩,并且解码器可以执行与在编码器处执行的类似的子采样、预测和预测校正动作并且将校正值进一步应用于预测点位置以根据压缩空间信息生成非压缩点云。在一些实施方案中,可以k-d树格式来压缩压缩空间信息,并且解码器可以基于包括在接收到的空间信息中的编码k-d树来生成解压缩点云。在一些实施方案中,压缩空间信息可能已经使用八叉树技术进行压缩,并且八叉树解码技术可以用于生成针对该点云的解压缩空间信息。在一些实施方案中,可能已经使用其他空间信息压缩技术,并且可以经由解码器对这些技术进行解压缩。
[0168]
在808处,解码器基于空间填充曲线生成点云的点的次序。例如,可以经由解码器的编码数据接口(诸如图2b中所示的解码器220的编码数据接口226)来接收压缩空间信息
和/或压缩属性信息。空间解码器(诸如空间解码器222)可对压缩空间信息进行解压缩,并且空间填充曲线次序生成器(诸如空间填充曲线次序生成器228)可基于解压缩空间信息来生成空间填充曲线次序。
[0169]
在810处,解码器的预测评估器(诸如解码器220的预测评估器224)可以基于包括在压缩属性信息中的分配属性值将属性值分配给起始点。在一些实施方案中,压缩属性信息可确定点作为用于生成空间填充曲线次序以及用于根据基于空间填充曲线次序的评估次序预测点的属性值的起始点。针对起始点的所述一个或多个分配属性值可包括在针对解压缩点云的解压缩属性信息中。
[0170]
在812处,解码器的预测评估器或另一个解码器部件确定针对起始点之后待评估的至少下一个点的评估次序。在一些实施方案中,可以确定针对点中的所有点或多个点的评估次序,或者在其他实施方案中,可以在确定针对点的属性值时逐点地确认评估次序。可以基于正被评估的连续点之间的最小距离来按次序评估点。例如,与其他相邻点相比,距起始点距离最短的相邻点可以被选择为在起始点之后待评估的下一个点。以类似的方式,然后可以基于距最近已评估的点的最短距离来选择待评估的其他点。在814处,选择待评估的下一个点。在一些实施方案中,812和814可一起执行。
[0171]
在816处,解码器的预测评估器确定距正被评估的点的“k”个最近相邻点。在一些实施方案中,只有当相邻点已分配或预测属性值时,它们才可包括在“k”个最近相邻点中。在其他实施方案中,相邻点可包括在“k”个最近相邻点中,而与它们是否已分配或已经预测属性值无关。在此类实施方案中,编码器可以遵循与解码器类似的规则,即在识别“k”个最近相邻点时是否包括没有预测值的点作为相邻点。
[0172]
在818处,基于“k”个最近相邻点的属性值以及正被评估的点与“k”个最近相邻点中的相应一些之间的距离,为正被评估的点的一个或多个属性确定预测属性值。在一些实施方案中,逆距离插值技术可以用于预测属性值,其中更接近正被评估的点的点的属性值比更远离正被评估的点的点的属性值更大地加权。由解码器使用的属性预测技术可以与压缩属性信息的编码器使用的属性预测技术相同。
[0173]
在820处,解码器的预测评估器可以将属性校正值应用于点的预测属性值以校正该属性值。属性校正值可以使属性值与压缩之前的原始点云的属性值匹配或几乎匹配。在点具有多于一个属性的一些实施方案中,可以针对该点的每个属性重复818和820。在一些实施方案中,可对一些属性信息进行解压缩而不对针对点云或点的所有属性信息进行解压缩。例如,点可包括速度属性信息和颜色属性信息。可以在不解码颜色属性信息的情况下解码速度属性信息,反之亦然。在一些实施方案中,利用压缩属性信息的应用可以指示针对点云待解压缩哪些属性。
[0174]
在822处,确定是否存在待评估的附加点。如果存在,则该过程返回到814,并且选择待评估的下一个点。如果不存在待评估的附加点,则在824处,提供解压缩属性信息,例如作为解压缩点云,其中每个点包括空间信息和一个或多个属性。
[0175]
在一些实施方案中,解码器可执行如上文在图4b中针对编码器所描述的互补自适应预测过程。例如,图8b示出了根据一些实施方案的作为对点云的属性信息进行解压缩的一部分使用自适应的基于距离的预测来预测属性值。
[0176]
在850处,解码器识别点云的正针对其预测属性值的点的邻域的一组相邻点。在一
些实施方案中,可使用如本文所述的k最近邻技术来识别邻域的一组相邻点。在一些实施方案中,可以其他方式识别待用于确定可变性的点。例如,在一些实施方案中,可将用于可变性分析的点的邻域定义为包括与用于使用k个最近相邻点基于逆基于距离的插值来预测属性值相比更多或更少的点或在距给定点更大或更小的距离内的点。在其中用于识别用于确定可变性的邻域点的参数与用于k最近邻预测的参数不同的一些实施方案中,在由编码器编码并且在解码器处接收的位流中用信号传送不同参数或可根据其确定不同参数的数据。
[0177]
在852处,确定相邻点的属性值的可变性。在一些实施方案中,可单独确定每个属性值可变性。例如,对于具有r、g、b属性值的点,每个属性值(例如r、g和b中的每一者)可具有单独确定的其相应可变性。另外,在一些实施方案中,可使用栅格量化,其中可确定具有相关值的一组属性诸如rgb作为公共可变性。例如,在以上关于黑道路上的白条纹讨论的示例中,r的大可变性也可适用于b和g,因此不必分别确定r、g和b中的每一者的可变性。相反,可将相关属性值视为组,并且可确定相关属性的公共可变性。
[0178]
在一些实施方案中,可使用以下确定点p的邻域中的属性的可变性:平方误差和可变性技术、平方误差距离加权和可变性技术、绝对差值和可变性技术、绝对差值距离加权和可变性技术、或其他合适的可变性技术。在一些实施方案中,解码器可利用用信号传送的针对给定点p要使用的可变性技术。在一些实施方案中,解码器可基于在位流中编码的索引值确定要使用哪种可变性技术,其中索引值是针对可变性技术的索引的,其中解码器包括与编码器相同的索引,并且可基于编码索引值确定针对点p要使用的可变性技术。
[0179]
在854至856处,确定在852处确定的可变性是否超过一个或多个可变性阈值。如果是,则使用与超过的可变性阈值相对应的对应预测技术来预测针对点p的一个或多个属性值。在一些实施方案中,可支持多个预测程序。例如,如果超过第一可变性阈值,则元素858指示使用第一预测程序,并且如果超过另一可变性阈值,则元素860指示使用另一预测程序。此外,如果不超过可变性阈值1至n,则862指示使用默认预测程序,诸如未修改的k最近邻预测程序。在一些实施方案中,除默认预测程序之外,可使用单个可变性阈值和单个替代预测程序。在一些实施方案中,可使用任何数量“n”的可变性阈值和对应的预测程序。
[0180]
细节级别属性压缩
[0181]
在一些情况下,对针对点云的属性信息进行编码所需的位的数量可能构成针对该点云的位流的显著部分。例如,属性信息可以构成比用于传输针对点云的压缩空间信息所使用的位流更大的部分。
[0182]
在一些实施方案中,空间信息可用于构建分级细节级别(lod)结构。lod结构可用于压缩与点云相关联的属性。lod结构还可以启用高级功能,诸如与渐进式/视图相关的流和可伸缩渲染。例如,在一些实施方案中,可以仅针对点云的一部分(例如,细节级别)发送(或解码)压缩属性信息,而不针对整个点云发送(或解码)所有属性信息。
[0183]
图9示出了根据一些实施方案的生成分级lod结构的示例编码过程。例如,在一些实施方案中,编码器(诸如编码器202)可以使用如图9所示的类似过程以lod结构来生成压缩属性信息。
[0184]
在一些实施方案中,几何信息(在本文中也称为“空间信息”)可用于有效地预测属性信息。例如,在图9中示出了颜色信息的压缩。然而,lod结构可以应用于与点云的点相关联的任何类型的属性(例如,反射率、纹理、模态等)的压缩。需注意,可以根据待压缩的属性
来执行应用颜色空间转换或更新数据以使数据更适合于压缩的预编码步骤。
[0185]
在一些实施方案中,如下所述进行根据lod过程的属性信息压缩。
[0186]
例如,假设几何(g)={点-p(0),p(1),

p(n-1)}为由包括在编码器中的空间解码器(几何解码器gd 902)在对由还包括在编码器(几何编码器ge914)(诸如空间编码器204(在图2a中示出))中的几何编码器产生的压缩几何位流进行解码之后生成的重构点云位置。例如,在一些实施方案中,编码器(诸如编码器202(在图2a中示出))可包括几何编码器(诸如几何编码器914)和几何解码器(诸如几何解码器902)两者。在一些实施方案中,几何编码器可以是空间编码器214的一部分,并且几何解码器可以是预测/校正评估器206的一部分,两者均如图2a所示。
[0187]
在一些实施方案中,解压缩空间信息可以描述3d空间中的点的位置,诸如组成马克杯900的点的x、y和z坐标。需注意,空间信息可能对编码器(诸如编码器202)和解码器(诸如解码器220)两者均可用。例如,各种技术(诸如k-d树压缩、八叉树压缩、最近相邻点预测等)可用于压缩和/或编码针对马克杯900的空间信息,并且空间信息可与针对构成点云(诸如马克杯900的点云)的点的属性的压缩属性信息一起或另外地发送到解码器。
[0188]
在一些实施方案中,确定性重新排序过程可应用于编码器侧(诸如在编码器202处)和解码器侧(诸如在解码器220处)两者,以便将点云的点(诸如表示马克杯900的点)组织到一组细节级别(lod)中。例如,细节级别可由细节级别生成器904生成,其可包括在编码器的预测/校正评估器(诸如,如图2a所示的编码器202的预测/校正评估器206)中。在一些实施方案中,细节级别生成器904可以是编码器(诸如编码器202)的单独部件。例如,细节级别生成器904可以是编码器202的单独部件。需注意,在一些实施方案中,除了lod生成算法的参数之外,比特流中无需包括附加信息以生成这样的lod结构。例如,可包括在位流中作为lod生成器算法参数的参数可包括:
[0189]
i.以“n”表示的待生成的最大lod数量(例如,n=6),
[0190]
ii.初始采样距离“d0”(例如,d0=64),以及
[0191]
iii.采样距离更新因子“f”(例如,1/2)。
[0192]
在一些实施方案中,参数n、d0和f可以由用户(诸如配置压缩过程的工程师)提供。在一些实施方案中,可使用例如优化程序由编码器和/或解码器自动确定参数n、d0和f。这些参数可以是固定的或自适应的。
[0193]
在一些实施方案中,lod生成可以如下进行:
[0194]
a.几何g的点(例如,根据空间信息组织的点云的点)(诸如马克杯900的点)被标记为未访问,并且一组访问点v被设置为空。
[0195]
b.然后,lod生成过程可以迭代进行。在每次迭代j时,可以如下生成针对该细化级别的细节级别,例如lod(j):
[0196]
1.当前lod的采样距离表示为d(j),可以设置如下:
[0197]
a.如果j=0,则d(j)=d0。
[0198]
b.如果j》0且j《n,则d(j)=d(j-1)*f。
[0199]
c.如果j=n,则d(j)=0。
[0200]
2.lod生成过程迭代了g的所有点。
[0201]
a.在点评估迭代i中,评估点p(i),
[0202]
i.如果已经访问了点p(i),则将其忽略并且将算法跳转到下一个迭代(i 1),例如评估下一个点p(i 1)。
[0203]
ii.否则,计算距离d(i,v),该距离定义为在v的所有点上距p(i)的最小距离。需注意,v是已访问的点的列表。如果v为空,则距离d(i,v)设置为0,这意味着从点p(i)到访问点的距离为零,因为集合v中不存在任何访问点。如果从点p(i)到任何已访问点的最短距离d(i,v)严格大于参数d0,则忽略该点,lod生成跳转到迭代(i 1)并且评估下一个点p(i 1)。否则,将p(i)标记为访问点,并且将点p(i)添加到访问点集合v中。
[0204]
b.可以重复该过程,直到遍历几何g的所有点。
[0205]
3.在迭代j期间添加到v的点集描述了细化级别r(j)。
[0206]
4.lod(j)可以通过取所有细化级别r(0),r(1),

,r(j)的并集而获得。
[0207]
在一些实施方案中,可以重复上述过程,直到生成所有lod或访问了所有顶点为止。
[0208]
在一些实施方案中,如上所述的编码器还可包括量化模块(未示出),该量化模块对包括在正被提供给几何编码器914的“位置(x,y,z)”中的几何信息进行量化。此外,在一些实施方案中,如上所述的编码器可以附加包括在量化之后并且在几何编码器914之前移除重复点的模块。
[0209]
在一些实施方案中,量化还可应用于压缩属性信息,诸如属性校正值和/或一个或多个属性值起始点。例如,在910处执行量化到由基于插值的预测模块908确定的属性校正值。量化技术可包括均匀量化、具有死区的均匀量化、非均匀/非线性量化、栅格量化或其他合适的量化技术。
[0210]
图10示出了根据一些实施方案的用于确定待包括在细节级别(lod)结构的不同细化层处的点的示例过程。
[0211]
在1002处,编码器(或解码器)接收或确定细节级别参数,以用于确定针对点云的细节级别分级。在接收细节级别参数的同时或之前或之后,在1004处,编码器(或解码器)可以接收针对点云的压缩空间信息,并且在1006处,编码器(或解码器)可以确定针对点云的点的解压缩空间信息。在利用有损压缩技术用于压缩空间信息的实施方案中,在1006处,压缩空间信息可以在编码器处被压缩,并且还可以在编码器处被解压缩,以生成将在解码器处遇到的几何信息的代表性样本。在利用空间信息的无损压缩的一些实施方案中,在编码器侧可以省略1004和1106。
[0212]
在1008处,细节级别结构生成器(可以在编码器侧或解码器侧)将点云的所有点标记为“未访问的点”。
[0213]
在1010处,细节级别结构生成器还将访问点“v”的目录设置为空。
[0214]
在1012处,针对正被评估的当前细化级别r(j)确定采样距离d(j)。如果细化级别是最粗略的细化级别,其中j=0,则采样距离d(j)被设置为等于d0,例如初始采样距离,其在1002处被接收或确定。如果j大于0但小于n,则d(j)等于d(j-1)*f。需注意,“n”是待确定的细节级别的总数。还需注意,“f”是采样更新距离因子,其被设置为小于一(例如1/2)。另外,需注意,d(j-1)是在前面的细化级别中使用的采样距离。例如,当f为1/2时,采样距离d(j-1)被切成两半以用于随后的细化级别,使得d(j)是d(j-1)的长度的一半。另外,需注意,细节级别(lod(j))是当前细化级别和所有较低细化级别的并集。因此,第一细节级别(lod
(0))可包括包括在细化级别r(0)中的所有点。后续细节级别(lod(1))可包括包括在先前细节级别中的所有点,并且另外所有点包括在后续细化级别r(1)中。以这种方式,可以将点添加到每个后续细节级别的先前细节级别,直到达到包括点云的所有点的细节级别“n”。
[0215]
为了确定待包括在当前正被确定的细节级别中的点云的点,在1014处选择待评估的点p(i),其中“i”是正被评估的点云的当前点之一。例如,如果点云包括一百万个点,则“i”的范围可以从0到1,000,000。
[0216]
在1016处,确定当前正被评估的点p(i)是否已经被标记为访问点。如果将p(i)标记为已访问,则在1018处将忽略p(i),并且然后继续进行处理以评估下一个点p(i 1),然后该点成为当前正被评估的点p(i)。然后,该过程返回到1014。
[0217]
如果在1016处确定尚未将点p(i)标记为访问点,则在1020处针对点p(i)计算距离d(i),其中d(i)是点p(i)与包括在目录v中的任何已访问点之间的最短距离。如果目录v中不存在任何点,例如目录v为空,则将d(i)设置为零。
[0218]
在1022处,确定针对点p(i)的距离d(i)是否大于初始采样距离d0。如果是,则在1018处忽略点p(i),并且过程继续到下一个点p(i 1)并返回到1014。
[0219]
如果尚未将点p(i)标记为已访问,并且距离d(i)(即点p(i)与包括在v中的一组点之间的最小距离)小于初始采样距离d0,则在1024点将p(i)标记为已访问,并且将其添加到当前细化级别r(j)的一组访问点v中。
[0220]
在1026处,确定是否存在确定点云的附加细化级别。例如,如果j《n,则存在确定的附加细化级别,其中n是可以在编码器与解码器之间传送的lod参数。如果不存在其他确定的细化级别,则该过程在1028处停止。如果存在确定的附加细化级别,则该过程在1030处继续进行到下一个细化级别,并且然后在1012处继续评估针对下一个细化级别的点云。
[0221]
一旦确定了细化级别,就可以使用细化级别来生成lod结构,其中每个后续的lod级别包括先前lod级别的所有点加上确定为包括在附加细化级别中的任何点。因为确定lod结构的过程是编码器和解码器已知的,所以给定与在编码器处使用的lod参数相同的解码器可以在解码器处重建与在编码器处生成的lod结构相同的lod结构。
[0222]
示例细节级别分级
[0223]
图11a示出了根据一些实施方案的示例lod。需注意,lod生成过程可能会生成原始点云的统一采样近似值(或细节级别),随着包括越来越多的点而变得越来越细化。此类特征使其特别适合于渐进式/视图相关的传输和可伸缩渲染。例如,1104可包括比1102更多的细节,而1106可包括比1104更多的细节。另外,1108可包括比1102、1104和1106更多的细节。
[0224]
分级lod结构可用于构建属性预测策略。例如,在一些实施方案中,可以按照与点在lod生成阶段期间被访问的次序相同的次序来编码点。可以通过使用先前已经编码的k个最近相邻来预测每个点的属性。在一些实施方案中,“k”是可以由用户定义或者可以通过使用优化策略来确定的参数。“k”可以是静态的或自适应的。在“k”是自适应的后一种情况下,描述该参数的额外信息可包括在位流中。
[0225]
在一些实施方案中,可以使用不同的预测策略。例如,可以使用以下插值策略中的一种,以及以下插值策略的组合,或者编码器/解码器可以自适应地在不同插值策略之间切换。不同的插值策略可包括插值策略,诸如:逆距离插值、重心插值、自然相邻插值、移动最小二乘插值或其他合适的插值技术。例如,可以在包括在编码器的预测/校正值评估器(诸
如,编码器202的预测/校正值评估器206)中的基于插值的预测模块908处执行基于插值的预测。另外,可以在包括在解码器的预测评估器(诸如,解码器220的预测评估器224)中的基于插值的预测模块908处执行基于插值的预测。在一些实施方案中,在执行基于插值的预测之前,还可以在颜色空间转换模块906处转换颜色空间。在一些实施方案中,颜色空间转换模块906可包括在编码器(诸如编码器202)中。在一些实施方案中,解码器还可包括将转换后的颜色空间转换回原始颜色空间的模块。
[0226]
在一些实施方案中,量化还可应用于属性信息。例如,量化可在量化模块910处执行。在一些实施方案中,编码器(诸如编码器202)还可包括量化模块910。由量化模块910采用的量化技术可包括均匀量化、具有死区的均匀量化、非均匀/非线性量化、栅格量化或其他合适的量化技术。
[0227]
在一些实施方案中,lod属性压缩可用于压缩动态点云,如下所示:
[0228]
a.假设fc是当前点云帧,并且让rf成为参考点云。
[0229]
b.假设m是使rf变形为fc形状的运动场。
[0230]
i.m可以在解码器侧计算,并且在这种情况下,信息可以不被编码在位流中。
[0231]
ii.m可由编码器计算并且在位流中显式编码。
[0232]
1.可以通过将本文所述的分级压缩技术应用于与rf的每个点相关联的运动矢量来对m进行编码(例如,rf的运动可以被认为是额外的属性)。
[0233]
2.m可以被编码为具有相关联的局部和全局转换的基于骨架/皮肤的模型。
[0234]
3.m可以被编码为基于八叉树结构定义的运动场,其被自适应地改进以适应运动场的复杂性。
[0235]
4.m可以通过使用任何合适的动画技术来描述,诸如基于关键帧的动画、变形技术、自由形式的变形、基于关键点的变形等。
[0236]
iii.假设rf’是将运动场m应用于rf后获得的点云。然后,不仅考虑fc的“k”个最近相邻点,而且考虑rf’的“k”个最近相邻点,也可以将rf’的点用于属性预测策略。
[0237]
此外,可以基于将在基于插值的预测模块908处确定的基于插值的预测值与原始未压缩属性值进行比较来确定属性校正值。可以在量化模块910处进一步量化属性校正值,并且可以在算术编码模块912处对量化的属性校正值、编码的空间信息(从几何编码器902输出)和在预测中使用的任何配置参数进行编码。在一些实施方案中,算术编码模块可以使用上下文自适应算术编码技术。然后可以将压缩点云提供给解码器(诸如解码器220),并且解码器可以确定类似的细节级别,并且基于量化的属性校正值、编码的空间信息(从几何编码器902输出)和在编码器预测中使用的配置参数来执行基于插值的预测以重建原始点云。
[0238]
图11b示出了根据一些实施方案的包括lod的示例压缩点云文件。细节级别属性信息文件1150包括配置信息1152、点云数据1154和细节级别点属性校正值1156。在一些实施方案中,细节级别属性信息文件1150可经由多个数据包分批地传送。在一些实施方案中,并非细节级别属性信息文件1150中所示的部分都可包括在传输压缩属性信息的每个数据包中。在一些实施方案中,属性信息文件(诸如属性信息文件1150的细节级别)的细节级别可以被存储在存储设备(诸如实现编码器或解码器的服务器)或其他计算设备中。
[0239]
图12a示出了根据一些实施方案的使用更新操作对点云的属性信息进行编码的方法。
[0240]
在1202处,点云由编码器接收。点云可以例如由一个或多个传感器捕获,或者可以例如在软件中生成。
[0241]
在1204处,点云的空间或几何信息如本文所述进行编码。例如,空间信息可使用k-d树、八叉树、邻预测策略或用于对空间信息进行编码的其他合适技术进行编码。
[0242]
在1206处,生成一个或多个细节级别,如本文所述。例如,可以使用如图10所示的类似过程来生成细节级别。需注意,在一些实施方案中,在1204处编码或压缩的空间信息可以被解码或解压缩以生成解码器将遇到的代表性解压缩的点云几何结构。然后,可以将这种代表性的解压缩点云几何结构用于生成lod结构,如图10进一步描述的。
[0243]
在1208处,执行基于插值的预测以预测针对点云的点的属性的属性值。在1210处,基于将预测属性值与原始属性值进行比较来确定属性校正值。例如,在一些实施方案中,可以针对每个细节级别执行基于插值的预测,以确定包括在相应细节级别中的点的预测属性值。然后可以在压缩之前将这些预测属性值与原始点云的属性值进行比较,以确定针对相应细节级别的点的属性校正值。例如,如图1b、图4至图5和图8中所述的基于插值的预测过程可以用于确定针对相应细节级别的预测属性值。在一些实施方案中,可以针对lod结构的多个细节级别确定属性校正值。例如,可以为包括在第一细节级别中的点确定第一组属性校正值,并且可以为包括在其他细节级别中的点确定其他组的属性校正值。
[0244]
在1212处,可任选地应用影响在1210处预测的属性校正值的更新操作。下面在图13a中更详细讨论更新操作的执行。
[0245]
在1214处,如本文所述,对属性校正值、lod参数、编码的空间信息(从几何编码器输出)以及在预测中使用的任何配置参数进行编码。
[0246]
在一些实施方案中,在1214处编码的属性信息可包括针对点云的多个或所有细节级别的属性信息,或者可包括针对点云的单个细节级别或少于所有细节级别的属性信息。在一些实施方案中,细节级别属性信息可以由编码器顺序地编码。例如,编码器可以在对一个或多个附加细节级别的属性信息进行编码之前使第一细节级别可用。
[0247]
在一些实施方案中,编码器还可对待发送到解码器的一个或多个配置参数进行编码,诸如压缩属性信息文件1150的配置信息1152中所示的任何配置参数。例如,在一些实施方案中,编码器可以编码针对点云待编码的细节级别的数量。编码器还可以对采样距离更新因子进行编码,其中采样距离用于确定哪些点将被包括在给定的细节级别中。
[0248]
图12b示出了根据一些实施方案的用于对点云的属性信息进行解码的方法。
[0249]
在1252处,在解码器处接收针对点云的压缩属性信息。另外,在1254处,在解码器处接收针对点云的空间信息。在一些实施方案中,可以使用各种技术诸如k-d树、八叉树、相邻预测等来压缩或编码空间信息,并且在1254处,解码器可以对接收到的空间信息进行解压缩和/或解码。
[0250]
在1256处,解码器确定待解压缩/解码的细节级别的数量中的哪个细节级别。可以基于点云的查看模式来确定待解压缩/解码的所选择的细节级别。例如,与在全视图模式下查看的点云相比,在预览模式下查看的点云可能需要确定较低的细节级别。另外,点云在正被渲染的视图中的位置可以用于确定待解压缩/解码的细节级别。例如,点云可表示诸如图9所示的咖啡杯的对象。如果咖啡杯处于正被渲染的视图的前景中,则可以为咖啡杯确定更高的细节级别。然而,如果咖啡杯处于正被渲染的视图的背景中,则可以为咖啡杯确定更低
的细节级别。在一些实施方案中,可以基于针对点云分配的数据预算来确定针对点云的细节级别。
[0251]
在1258处,可以如本文所述确定包括在正被确定的第一细节级别(或下一个细节级别)中的点。对于正被评估的细节级别的点,可以基于与正被评估的每个点的k个最近相邻基于逆距离加权插值来预测点的属性值,其中k可以是固定或可调参数。
[0252]
在1260处,在一些实施方案中,如图12f中更详细描述的,可以对预测属性值执行更新操作。
[0253]
在1262处,可以针对正被评估的当前细节级别来解码包括在针对点云的压缩属性信息中的属性校正值,并且可以在1258处将其应用于校正预测属性值或在1260处确定的更新预测属性值。
[0254]
在1264处,可以将在1262处确定的校正属性值作为属性分配给第一细节级别(或当前正被评估的细节级别)的点。在一些实施方案中,为随后的细节级别确定的属性值可以被分配给包括在后续细节级别中的点,而已经为先前的细节级别确定的属性值被先前的一个或多个细节级别的相应点保留。在一些实施方案中,可以为顺序的细节级别确定新的属性值。
[0255]
在一些实施方案中,在1254处接收的空间信息可包括针对点云的多个或所有细节级别的空间信息,或者可包括针对点云的单个细节级别或少于所有细节级别的空间信息。在一些实施方案中,细节级别属性信息可以由解码器顺序地接收。例如,解码器可以接收第一细节级别,并且在接收针对一个或多个附加细节级别的属性信息之前,生成第一细节级别的点的属性值。
[0256]
在1266处,确定是否存在待解码的附加细节级别。如果存在,则该过程返回到1258,并且重复进行下一个细节级别的解码。如果不存在,则在1267处停止该过程,但是可以响应于影响待确定的细节级别的数量的输入在1256处恢复(诸如更改点云的视图或将缩放操作应用于正被查看的点云),作为影响待确定的细节级别的输入的一些示例。
[0257]
在一些实施方案中,可以经由几何编码器和算术编码器(诸如以上关于图2描述的几何编码器202和算术编码器212)来对上述空间信息进行编码和解码。在一些实施方案中,几何编码器(诸如几何编码器202)可以利用八叉树压缩技术,并且算术编码器212可以是二进制算术编码器,如下面更详细描述的。
[0258]
与具有256个符号的字母的多符号编解码器相比(例如,每个多维数据集8个子多维数据集,并且每个子多维数据集已占用或未占用2^8=256),如下所述的二进制算术编码器的使用降低了编码八叉树占用符号的计算复杂性。另外,与搜索所有可能的相邻配置相比,基于最可能的相邻配置的上下文选择的使用可以减少对相邻配置的搜索。例如,与所有可能的邻域配置相反,编码器可以跟踪对应于图12c中所示的10个邻域配置1268、1270、1272、12712、1276、1278、1280、1282、1284和1286的10个编码上下文。
[0259]
在一些实施方案中,算术编码器(诸如算术编码器212)可以使用二进制算术编解码器来对256个值的占用符号进行编码。与多符号算术编解码器相比,就实施方式而言,这可能不太复杂并且对硬件更友好。另外,算术编码器212和/或几何编码器202可以利用前瞻程序来计算用于算术上下文选择的6个相邻,这可能不如线性搜索复杂并且可能涉及恒定数量的操作(与可能涉及不同数量操作的线性搜索相比)。另外,算术编码器212和/或几何
编码器202可以利用上下文选择程序,这减少了编码上下文的数量。在一些实施方案中,可以一起或独立地实现二进制算术编解码器、前瞻程序和上下文选择程序。
[0260]
二进制算术编码
[0261]
在一些实施方案中,为了编码空间信息,每个多维数据集的占用信息被编码为可以具有0-255之间的值的8位值。为了对此类非二进制值执行有效的编码/解码,通常将使用多符号算术编码器/解码器,当与二进制算术编码器/解码器相比时,其计算复杂并且实现起来对硬件的友好性较低。然而,另一方面,在此类值上直接使用常规二进制算术编码器/解码器(例如独立地编码每个位)可能没有那么有效。然而,为了用二进制算术编码器有效地编码非二进制占用值,自适应查找表(a-lut)(跟踪n个(例如,32个)最频繁的占用符号)可以与高速缓存一起使用,该高速缓存跟踪最近观察到的m个(例如,16个)占用符号。
[0262]
待跟踪的最后观察到的不同占用符号m的数量的值和待跟踪的最频繁占用符号n的数量可以由用户定义,诸如工程师为特定应用定制编码技术,或可以基于对编码会话进行的离线统计分析来选择。m和n值的选择可以基于以下两者之间的折衷:
[0263]

编码效率,
[0264]

计算复杂性,以及
[0265]

存储器需求。
[0266]
在一些实施方案中,算法如下进行:
[0267]

自适应查找表(a-lut)利用由用户(例如工程师)提供或者基于类似类点云的统计信息离线计算的n个符号初始化。
[0268]

高速缓存利用由用户(例如工程师)提供或者基于类似类点云的统计信息离线计算的m个符号初始化。
[0269]

每次对占用符号s进行编码时,将应用以下步骤
[0270]
1.对指示s是否在a-lut中的二进制信息进行编码。
[0271]
2.如果s在a-lut中,则使用二进制算术编码器对a-lut中s的索引进行编码
[0272]

假设(b1,b2,b3,b4,b5)是a-lut中s索引的二进制表示的五个位。假设b1是最低有效位,而b5是最高有效位。
[0273]

可使用如下所述的三种方法来编码s的索引,例如通过使用31、9或5个自适应二进制算术上下文,如下所示
[0274]

31个上下文
[0275]
首先用第一上下文(称为上下文0)对s的索引b5进行编码,在对最高有效位(待编码的第一位)进行编码时,不存在任何其他位的编码可使用的信息,这就是为什么将上下文称为上下文零。然后,在对b4(待编码的第二位)进行编码时,可以使用两个附加的上下文,将它们称为上下文1(如果b5=0)和上下文2(如果b5=1)。当将此方法一直应用到b1时,存在31个结果上下文,如下图所示,上下文0-30。该方法穷举地使用每个被编码的位来选择用于编码下一个位的自适应上下文。例如,参见图12e。
[0276]

9个上下文
[0277]
请记住,基于符号s出现的频率来分配自适应查找表alut的索引值。因此,alut中最频繁使用的符号s的索引值将为0,这意味着最频繁使用的符号s的索引值的所有位均为零。例如,二进制值越小,符号出现的频率越高。要对九个上下文(最高位b4和b5)进行编码,
如果它们为1s,则索引值必须相对较大。例如,如果b5=1,则索引值至少为16或更高;或者如果b4=1,则索引值至少为8或更高。因此,在对9个上下文进行编码时,重点放在前7个索引条目上,例如1至7。对于这7个索引条目,使用自适应编码上下文。然而,对于值大于7的索引条目,使用相同的上下文,例如静态二进制编码器。因此,如果b5=1或b4=1,则使用相同的上下文对索引值进行编码。如果不是,则使用自适应上下文1-7中的一个。因为b5存在一个上下文0,因此有7个自适应上下文,而一个严格大于8的条目具有一个公共上下文,因此共有九个上下文。与如上所述使用所有31个上下文相比,这简化了编码并且减少了待传送的上下文的数量。
[0278]

5个上下文
[0279]
要使用5个上下文对索引值进行编码,请确定是否b5=1。如果b5=1,则使用静态二进制上下文对索引值从b4至b1的所有位进行编码。如果b5不等于1,则对索引值的b4进行编码,并且查看b4是否等于1或0。如果b4=1,这意味着索引值大于8,则再次使用静态二进制上下文对位b3至b1进行编码。然后重复该推理,以便如果b3=1,则将静态二进制上下文用于对位b2至b1进行编码,并且如果b2=1,则将静态二进制上下文用于对位1进行编码。然而,如果位b5、b4和b3等于零,则选择自适应二进制上下文以对索引值的位2和位1进行编码。
[0280]
3.如果s不在a-lut中,则
[0281]

对指示s是否在高速缓存中的二进制信息进行编码。
[0282]

如果s在高速缓存中,则使用二进制算术编码器对其索引的二进制表示进行编码
[0283]

在一些实施方案中,通过使用单个静态二进制上下文来逐位编码每个位以对索引的二进制表示进行编码。然后,将这些位的值上移一个,其中最低有效位变为下一个较高有效位。
[0284]

否则,如果s不在高速缓存中,则使用二进制算术编码器对s的二进制表示进行编码
[0285]

在一些实施方案中,通过使用单个自适应二进制上下文来编码s的二进制表示。已知索引的值在0至255之间,这意味着它以8位编码。移位这些位,以便最低有效位成为下一个较高有效位,并且使用相同的自适应上下文对所有剩余位进行编码。
[0286]

将符号s添加到高速缓存中,并且将高速缓存中最早的符号逐出。
[0287]
4.a-lut中符号s的出现次数递增一。
[0288]
5.定期重新计算a-lut中n个最频繁的符号的列表
[0289]

方法1:如果到目前为止已编码的符号数量达到用户定义的阈值(例如,64或128),则重新计算a-lut中的n个最频繁的符号的列表。
[0290]

方法2:使更新周期适应已编码符号的数量。这个想法是在开始时快速更新概率,并且随着符号数量的增加以指数方式增加更新周期:
[0291]

将更新周期_updatecycle初始化为低数n0(例如16)。
[0292]

每当符号数量达到更新周期时
[0293]

重新计算a-lut中n个最频繁的符号的列表
[0294]

如下更新该更新周期:
[0295]
_updatecycle=最小值(_alpha*_updatecycle,_maxupdatecycle)
[0296]

_alpha(例如,5/4)和maxupdatecycle(例如,1024)是两个用户定义的参数,可控制指数增长的速度和最大更新周期值。
[0297]
6.在八叉树细分的每个级别的开始,所有符号的出现都重置为零。将n个最频繁的符号的出现次数设置为1。
[0298]
7.当符号的出现次数达到用户定义的最大数量(例如,_maxoccurence=1024)时,所有符号的出现次数都将除以2,以将出现的次数保持在用户定义的范围内。
[0299]
在一些实施方案中,环形缓冲区用于跟踪高速缓存中的元素。待从高速缓存中逐出的元素对应于位置索引0=(_last )%cachesize,其中_last是初始化为0的计数器,并且每次将符号添加到高速缓存时都会递增。在一些实施方案中,高速缓存还可以用排序列表来实现,这将保证每次最早的符号被逐出。
[0300]
2.前瞻以确定相邻
[0301]
在一些实施方案中,在八叉树的每个细分级别处,对相同大小的多维数据集进行细分,并且对每个的占用代码进行编码。
[0302]

对于细分级别0,可能仅存在单个多维数据集(2c,2c,2c),而不存在任何邻。
[0303]

对于细分级别1,每个中最多可存在8个维度的多维数据集(2
c-1
,2
c-1
,2
c-1
)。
[0304]
●…
[0305]

对于细分级别l,每个中最多可存在8
l
个维度的多维数据集(2
c-l
,2
c-l
,2
c-l
)。
[0306]
在一些实施方案中,在每个级别l处,可以定义一组每个维度的非重叠前瞻多维数据集(2h-c l,2h-c l,2h-c l),如图12d所示。需注意,前瞻多维数据集可以容纳大小是23xh的多维数据集(2c-l,2c-l,2c-l)。
[0307]

在每个级别l处,每个前瞻多维数据集中包含的多维数据集都进行了编码,而无需引用其他前瞻多维数据集中的多维数据集。
[0308]

在前瞻阶段期间,从fifo中提取当前前瞻多维数据集中的维度的多维数据集(2
c-l
,2
c-l
,2
c-l
),并且将填充描绘了当前前瞻多维数据集的每个(2
c-l
,2
c-l
,2
c-l
)区域是否已占用或为空的查找表。
[0309]

一旦填充了查找表,提取的多维数据集的编码阶段就会开始。此处,通过直接从查找表中获取信息来获得6个相邻的占用信息。
[0310]

对于前瞻多维数据集边界上的多维数据集,假定位于外部的邻为空。
[0311]

另一种替代方案可包括基于外推法填充外部邻的值。
[0312]

有效的实施方式可通过以下实现
[0313]

将每组8个相邻(2
c-l
,2
c-l
,2
c-l
)区域的占用信息存储在一个字节上
[0314]

以z次序存储占用字节以最大化存储器高速缓存点击
[0315]
3.上下文选择
[0316]
在一些实施方案中,为了将编码上下文(nc)的数量减少至较少数量的上下文(例如,从10减少至6),将单独的上下文分配给(nc-1)最可能的邻域配置中的每个,并且使对应于最不可能的邻域配置的上下文共享相同的一个或多个上下文。这样做的方式如下所示:
[0317]

在开始编码过程之前,初始化10个邻域配置(例如,图12c所示的10个配置)的出现次数:
[0318]

将所有10个出现次数设置为0
[0319]

基于离线/在线统计信息或基于用户提供的信息来设置发生次数。
[0320]

在八叉树的每个细分级别的开始:
[0321]

基于在先前细分级别的编码期间收集的统计信息来确定(nc-1)最可能的邻域配置。
[0322]

计算查找表nlut,该表将(nc-1)最可能的邻域配置的索引映射到数字0、1、

、(nc-2),并且将剩余配置的索引映射到nc-1。
[0323]

将10个邻域配置的出现次数初始化为0。
[0324]

在编码期间:
[0325]

每次遇到邻域配置时,将此类配置递增一。
[0326]

使用查找表nlut[]确定用于基于邻域配置索引对当前占用值进行编码的上下文。
[0327]
图12f示出了根据一些实施方案的使用二进制算术编码器、高速缓存和前瞻表的示例八叉树压缩技术。例如,图12f示出了如上所述的过程的示例。在1288处,确定针对点云的八叉树的级别的占用符号。在1290处,初始化具有“n”个符号的自适应前瞻表。在1292处,初始化具有“m”个符号的高速缓存。在1294处,使用如上所述的技术对当前八叉树级别的符号进行编码。在1296处,确定是否对其他八叉树级别进行编码。如果是,则该过程在1288处继续进行下一个八叉树级别。如果不是,则该过程在1298处结束,并且使点云的编码空间信息可用,诸如正被发送给接收者或被存储。
[0328]
用于细节级别压缩和解压缩的提升方案
[0329]
在一些实施方案中,提升方案可以应用于点云。例如,如下所述,可以将提升方案应用于不规则点。这与可应用于平面中具有规则点的图像的其他类型的提升方案相反。在提升方案中,针对当前细节级别中的点,可以找到较低细节级别中的最近点。较低细节级别中的这些最近点用于预测较高细节级别中的点的属性值。从概念上讲,可以制作一张图表,显示较低细节级别的点如何用于确定较高细节级别的点的属性值。在此类概念视图中,可以在细节级别之间为图表分配边缘,其中在较高细节级别的点与较低细节级别的每个点之间存在边缘,该边缘为预测较高细节级别的点的属性奠定了基础。如下文更详细描述的,可以将权重分配给这些边缘中的每个,从而指示相对影响。权重可表示较低细节级别中的点的属性值对较高细节级别中的点的属性值的影响。另外,多个边缘可以构成穿过细节级别的路径,并且可以将权重分配给这些路径。在一些实施方案中,路径的影响可以由路径的边缘的权重的总和来定义。例如,下文进一步讨论的公式1表示路径的此类加权。
[0330]
在提升方案中,低影响点的属性值可被高度量化,而高影响点的属性值可被较少量化。在一些实施方案中,可以在重构点云的质量与效率之间达到平衡,其中更多的量化增加了压缩效率,而更少的量化增加了质量。在一些实施方案中,可不评估所有路径。例如,有些影响很小的路径可能无法评估。另外,更新运算符可以平滑残余差值,例如属性校正值,以便在平滑残余差值时考虑点的相对影响或重要性的同时提高压缩效率。
[0331]
图13a示出了根据一些实施方案的可在编码器处应用以对点云的属性信息进行编码的直接转换。
[0332]
在一些实施方案中,编码器可以利用如图13a所示的直接转换,以便确定被编码为
压缩点云的一部分的属性校正值。例如,在一些实施方案中,可利用直接转换(诸如基于插值的预测)来确定属性值,如在图12a中在1208处描述的,并且可应用更新操作,如在图12a中在1212处描述的。
[0333]
在一些实施方案中,直接转换可以接收用于与待压缩的点云的点相关联的属性的属性信号。例如,属性可包括颜色值(诸如rgb颜色)或点云中待压缩的点的其他属性值。还可以通过接收属性信号的直接转换来知道待压缩的点云的点的几何结构。在1302处,直接转换可包括将属性信号1310分割为第一(或下一个)细节级别的分割运算符。例如,对于包含x个点的数量的特定细节级别(诸如lod(n)),点的属性的子样本例如,包含y个点的样本)可包含比x少的点的数量的属性值。换句话说,分割运算符可以将与特定细节级别相关联的属性作为输入,并且生成低分辨率样本1304和高分辨率样本1306。应当指出的是,lod结构可以被划分为细化级别,其中细化的后续级别包括比基础细化级别更多的点的属性。通过取所有较低细节级别的并集可以获得如下所述的特定细节级别。例如,细节等级j通过取所有细化级别r(0),r(1),...,r(j)的并集而获得。还应当指出的是,如上所述,压缩点云可以具有总数为n的细节级别,其中r(0)是最小细化细节级别,而r(n)是针对压缩点云的最高细化细节级别。
[0334]
在1308处,基于包括在低分辨率样本中的点来预测不包括在低分辨率样本1304中的点的属性值的预测。例如,基于逆距离插值预测技术或上述任何其他预测技术。在1312处,将针对低分辨率样本1304所遗留的点的预测属性值之间的差值与低分辨率样本1304所遗留的点的实际属性值进行比较。该比较确定了针对相应点的预测属性值与实际属性值之间的差值。然后将这些差值(d(n))编码为针对包括在特定细节级别中的点的属性的属性校正值,这些细节级别未在低分辨率样本中进行编码。例如,对于最高细节级别n,可使用差异d(n)来调整/校正包括在较低细节级别中的属性值。因为在最高的细节级别处,属性校正值不用于确定其他甚至更高的细节级别的属性值(因为针对最高的细节级别n,因此不存在任何更高的细节级别),因此可能不执行考虑这些属性校正值的相对重要性的更新操作。这样,差值d(n)可以用于编码针对lod(n)的属性校正值。
[0335]
另外,直接转换可以应用于后续的较低细节级别,诸如lod(n-1)。然而,在将直接转换应用于后续的细节级别之前,可以执行更新操作以便确定针对较低细节级别的点的属性值对于一个或多个较高细节级别的属性值的相对重要性。例如,更新操作1314可以确定包括在较高细节级别上的较低细节级别中的点的属性的属性值的相对重要性,诸如针对包括在l(n)中的点属性。考虑到相应属性值的相对重要性,更新运算符还可平滑属性值,以改善属性校正值对后续细节级别的压缩效率,其中执行平滑操作,使得对后续细节级别影响较大的属性值的修改小于对后续细节级别影响较小的点的修改。下文更详细地描述用于执行更新操作的若干方法。然后将更新后的细节级别l’(n)的较低分辨率样本输入到另一个分割运算符,并且针对后续细节级别lod(n-1)重复该过程。需注意,也可以在第二(或后续)分割运算符处接收较低细节级别lod(n-1)的属性信号。
[0336]
图13b示出了根据一些实施方案的可在解码器处应用以对点云的属性信息进行解码的逆转换。
[0337]
在一些实施方案中,解码器可以利用如图13b所示的逆转换过程来从压缩点云重构点云。例如,在一些实施方案中,可以根据如图13b中所述的逆转换过程来执行:执行图
12b中1258处所述的预测,应用如图12b中1260处所述的更新运算符,应用如图12b中1262处所述的属性校正值并且如图12b中1264处所述将属性分配给点的细节级别。
[0338]
在一些实施方案中,逆转换过程可以接收针对lod结构的最低细节级别的更新的低级别分辨率样本l’(0)。逆转换过程还可接收针对未包括在更新的低分辨率样本l’(0)中的点的属性校正值。例如,针对特定的lod,l’(0)可包括包括在lod中的点的子采样,并且可以使用预测技术来确定lod的其他点,诸如将包括在lod的高分辨率样本中。如在1306处所示,可以接收属性校正值,例如d(0)。在1318处,可执行更新操作以考虑在编码器处执行的属性校正值的平滑。例如,更新操作1318可以“撤消”在1314处执行的更新操作,其中在1314处执行的更新操作被执行以通过考虑属性值的相对重要性来平滑属性值来改善压缩效率。可以将更新操作应用于更新的低分辨率样本l’(0),以生成“未平滑的”或未更新的低分辨率样本l(0)。低分辨率样本l(0)可以在1320处被预测技术用来确定未包括在低分辨率样本中的点的属性值。可以使用属性校正值d(0)来校正预测属性值,以确定lod(0)的高分辨率样本的点的属性值。可以在合并运算符1322处组合低分辨率样本和高分辨率样本,并且可以确定用于下一个细节级别l’(1)的新的更新的低分辨率样本。如针对lod(0)所述的下一个细节级别lod(1)可以重复类似的过程。在一些实施方案中,如图13a所示的编码器和如图13b所示的解码器可以针对点云的n个细节级别重复它们相应的过程。
[0339]
下文描述了lod的更详细的示例定义以及确定更新操作的方法。
[0340]
在一些实施方案中,lod的定义如下:
[0341]

lod(0)=r(0)
[0342]

lod(1)=lod(0)u r(1)
[0343]
●…
[0344]

lod(j)=lod(j-1)u r(j)
[0345]
●…
[0346]

lod(n 1)=lod(n)u r(n)=整个点云
[0347]
在一些实施方案中,假设a是与点云相关联的一组属性。更准确地,假设a(p)是与点云的点p相关联的标量/矢量属性。属性的示例是由rgb值描述的颜色。
[0348]
假设l(j)是与lod(j)相关联的属性集,并且h(j)是与r(j)相关联的属性集。基于细节级别的定义lod(j)、l(j)和h(j)验证以下属性:
[0349]

l(n 1)=a and h(n 1)={}
[0350]

l(j)=l(j-1)u h(j)
[0351]

l(j)和h(j)不相交。
[0352]
在一些实施方案中,分割运算符(诸如分割运算符1302)将l(j 1)作为输入并且生成两个输出:(1)低分辨率样本l(j)和(2)高分辨率样本h(j)。
[0353]
在一些实施方案中,合并运算符(诸如合并运算符1322)将l(j)和h(j)作为输入并且产生l(j 1)。
[0354]
如以上更详细描述的,可以在lod结构的顶部上定义预测运算符。假设(p(i,j))_i是属于r(j)的lod(j)和(q(i,j))_i的设定点,并且假设(a(p(i,j)))_i和(a(q(i,j)))_i分别是与lod(j)和r(j)相关联的属性值。
[0355]
在一些实施方案中,预测运算符通过使用属性值在lod(j-1)中的k个最近邻的表
示为a(q(i,j))的属性值来预测属性值
[0356][0357]
其中α(p,q(i,j))是插值权重。例如,可以利用逆距离权重插值策略来计算插值权重。
[0358]
预测残差,例如属性校正值d(q(i,j)),定义如下:
[0359]
d(q(i,j))=a(q(i,j))-pred(q(i,j))
[0360]
需注意,可通过如下定义的取向图g描述预测分级:
[0361]

点云中的每个点q对应于图g的顶点v(q)。
[0362]

如果存在i和j,则图g的两个顶点v(p)和v(p)通过边缘e(p,q)连接,使得
[0363]

q=q(i,j)以及
[0364]

[0365]

边缘e(q,p)具有权重α(p,q(i,j))。
[0366]
在如上所述的此类预测策略中,细节级别较低的点更具影响力,因为它们更常用于预测。
[0367]
假设w(p)为与点p相关联的影响权重。w(p)可以各种方式定义。
[0368]

方法1
[0369]

如果存在g的两个顶点v(p)和v(q)连接它们的边缘的路径x=(e(1),e(2),

,e(s)),则称它们已连接。路径x的权重w(x)定义如下:
[0370][0371]

假设x(p)是以p为目的地的路径集。w(p)定义如下:
[0372]
w(p)=1 ∑
x∈x(p)
(w(x))2[公式1]
[0373]

先前的定义可如下解释。假设将属性a(p)修改了∈的量,那么与连接到p的点相关联的所有属性都会受到扰动。与此类扰动相关联的平方误差总和表示为sse(p,∈),由下式给出:
[0374]
sse(p,∈)=w(p)∈2[0375]

方法2
[0376]

如前所述,计算影响权重可能在计算上很复杂,因为需要评估所有路径。然而,由于权重α(e(s))通常被归一化为0至1之间,因此路径x的权重w(x)随着其边缘的数量而迅速衰减。因此,在不显著影响待计算的最终影响权重的情况下,可以忽略长路径。
[0377]

基于先前的性质,可将[公式1]中的定义修改为仅考虑长度受限的路径,或者丢弃已知权重低于用户定义的阈值的路径。该阈值可以是固定的并且在编码器和解码器两者处都是已知的,或者可以在编码过程的不同阶段明确发出信号或为此预先定义,例如,针对每个帧、lod一次,或者甚至在一定数量的信号点之后。
[0378]

方法3
[0379]

可通过以下递归程序来近似w(p):
[0380]

针对所有点假设w(p)=1
[0381]

根据lod结构定义的次序的倒序遍历点
[0382]

针对每个点q(i,j),如下更新其邻的权重
[0383]
w(p)

w(p) w(q(i,j),j){α(p,q(i,j))}
γ
[0384]
其中γ是通常设置为1或2的参数。
[0385]

方法4
[0386]

可通过以下递归程序来近似w(p):
[0387]

针对所有点假设w(p)=1
[0388]

根据lod结构定义的次序的倒序遍历点
[0389]

针对每个点q(i,j),如下更新其邻的权重
[0390]
w(p)

w(p) w(q(i,j),j)f{α(p,q(i,j))}
[0391]
其中f(x)是某一函数,其结果值在[0,1]的范围内。
[0392]
在一些实施方案中,更新运算符(诸如更新运算符1314或1318)使用预测残差d(q(i,j))来更新lod(j)的属性值。可以用不同的方式定义更新运算符,诸如:
[0393]

方法1
[0394]
1.假设δ(p)是点q(i,j)的集合,使得
[0395]
2.p的更新操作定义如下:
[0396]
更新
[0397]
其中γ是通常设置为1或2的参数。
[0398]

方法2
[0399]
1.假设δ(p)是点q(i,j)的集合,使得
[0400]
2.p的更新操作定义如下:
[0401]
更新
[0402]
其中g(x)是某一函数,其结果值在[0,1]的范围内。
[0403]

方法3
[0404]

如下迭代地计算update(p):
[0405]
1.初始地设置update(p)=0
[0406]
2.根据lod结构定义的次序的倒数遍历点
[0407]
3.针对每个点q(i,j),计算与其邻3.针对每个点q(i,j),计算与其邻相关联的局部更新(u(1),u(2),..,u(k))作为以下最小化问题的解:
[0408][0409]
4.更新update(p(r)):
[0410]
更新(p(r))

更新(p(r)) u(r)
[0411]

方法4
[0412]

如下迭代地计算update(p):
[0413]
1.初始地设置update(p)=0
[0414]
2.根据lod结构定义的次序的倒数遍历点
[0415]
3.针对每个点q(i,j),计算与其邻3.针对每个点q(i,j),计算与其邻相关联的局部更新(u(1),u(2),..,u(k))作为以下最小化问题的解:
[0416]
(u(1),u(2),..,u(k))=argmin{h(u(1),..,u(k),d(q(i,j)))}
[0417]
其中h可以是任何函数。
[0418]
4.更新update(p(r)):
[0419]
更新(p(r))

更新(p(r)) u(r)
[0420]
在一些实施方案中,当利用如上所述的提升方案时,可以将量化步骤应用于所计算的小波系数。此类过程可能会引入噪声,并且重构点云的质量可能取决于所选的量化步骤。此外,如上所述,与对较高lod中的点的属性进行扰动相比,对较低lod中的点的属性进行扰动可能对重构点云的质量具有更大的影响。
[0421]
在一些实施方案中,可以在转换过程期间进一步利用如上所述计算的影响权重,以便指导量化过程。例如,与点p相关联的系数可乘以{w(p)}r的因子,其中β是通常设置为β=0.5的参数。在解码器侧进行逆量化之后,应用相同因子的逆缩放处理。
[0422]
在一些实施方案中,β参数的值可针对整个点云是固定的并且在编码器和解码器两者处都是已知的,或者可在编码过程的不同阶段明确发出信号或为此预先定义,例如,针对每个点云帧、lod一次,或者甚至在一定数量的信号点之后。
[0423]
在一些实施方案中,上述提升方案的硬件友好实施方式可以利用权重和查找表的定点表示来进行非线性操作。
[0424]
在一些实施方案中,本文所述的提升方案除了压缩之外还可以用于其他应用,诸如去噪/滤波、加水印、分段/检测以及各种其他应用。
[0425]
在一些实施方案中,解码器可以采用如上所述的互补过程来解码使用如上所述的八叉树压缩技术和二进制算术编码器压缩的压缩点云。
[0426]
在一些实施方案中,如上所述的提升方案可以进一步实施自下而上的方法以建立细节级别(lod)。例如,代替确定针对点的预测值并且然后将这些点分配给不同的细节级别,可以在确定哪些点待包括在哪个细节级别中的同时确定预测值。另外,在一些实施方案中,可以通过将预测值与原始点云的实际值进行比较来确定残差值。这也可以在确定哪些点待包括在哪些细节级别中时执行。另外,在一些实施方案中,可以使用近似最近相邻搜索来代替精确最近相邻搜索以加速细节级别创建和预测计算。在一些实施方案中,可以使用二进制/算术编码器/解码器来压缩/解压缩量化的计算小波系数。
[0427]
如上所述,自下而上的方法可以构建细节级别(lod)并同时计算预测的属性值。在一些实施方案中,此类方法可如下进行:
[0428]

假设(pi)
i=1
…n是与点云点相关联的位置集合,并且假设(mi)
i=1
…n是与(pi)
i=1
…n相关联的莫顿码。假设d0和ρ是两个用户定义的参数,从而分别指定初始采样距离和lod之间的距离比。莫顿码可用于表示一维的多维数据,其中将“z阶函数”应用于多维数据以产生一维表示。需注意ρ》1
[0429]

首先,将点根据其相关联的莫顿码按升序排序。假设i是根据该过程排序的点索引阵列。
[0430]

该算法迭代地进行。在每次迭代k时,提取属于lod k的点,并且从k=0开始构建其预测器,直到将所有点分配给lod。
[0431]

采样距离d初始化为d=d0[0432]

针对每次迭代k,其中k=0

lod的数量
[0433]

假设l(k)是属于第k个lod的点的索引集,而o(k)是属于高于k的lod的点集。l(k)和o(k)计算如下。
[0434]

首先,初始化o(k)和l(k)
[0435]

如果k=0,则l(k)

{}。否则,l(k)

l(k-1)
[0436]

o(k)

{}
[0437]

按次序遍历存储在阵列i中的点索引。每次都选择索引i并且计算其到最近添加到o(k)的sr1点的距离(例如,欧几里得距离或其他距离)。sr1是用户定义的参数,用于控制最近相邻搜索的准确性。例如,sr1可以选择为8或16或64等。sr1的值越小,计算复杂性和最近相邻搜索的准确性就越低。参数sr1包括在位流中。如果任何sr1距离小于d,则将i附加到阵列l(k)。否则,
[0438]
将i附加到阵列o(k)。
[0439]

可基于lod或/和遍历的点的数量自适应地更改参数sr1。
[0440]

在一些实施方案中,代替计算近似最近邻,可应用精确最近邻搜索技术。
[0441]

在一些实施方案中,可组合精确和近似邻搜索方法。具体地,取决于lod和/或i中的点的数量,该方法可在精确与近似搜索方法之间切换。其他标准可包括点云密度、当前点与上一个点之间的距离或与点云分布有关的任何其他标准。
[0442]

迭代该过程,直到遍历i中的所有索引为止。
[0443]

在该阶段,将计算l(k)和o(k),并且将其用于下一步骤以构建与l(k)的点相关联的预测器。
[0444]

更准确地,假设r(k)=l(k)\l(k-1)(其中\是差分运算符)是需要添加到lod(k-1)以获得lod(k)的点集。针对r(k)中的每个点i,我们想在o(k)中找到i的h个最近邻(h是用户定义的参数,用于控制用于预测的最大邻居数),并且计算与i相关联的预测权重(αj(i))
j=1
…h。该算法如下进行。
[0445]

初始化计数器j=0
[0446]

针对r(k)中的每个点i
[0447]

假设mi是与i相关联的莫顿码,并且假设mj是与阵列o(k)的第j个元素相关联的莫顿码
[0448]

当(mi≥m
j and j《sizeof(o(k)))时,将计数器j递增一(j

j 1)
[0449]

计算mi到与o(k)的索引相关联的点的距离,这些索引在阵列的[j-sr2,j sr2]范围内,并且跟踪h个最近邻(n1,n2,...,nh)及其相关联的平方距离sr2是用户定义的参数,用于控制最近相邻搜索的准确性。sr2的可能值为8、16、32和64。sr2的值越小,计算复杂性和最近相邻搜索的准确性就越低。参数sr2包括在位流中。用于属性预测的预测权重的计算可以与上述相同。
[0450]

可基于lod或/和遍历的点的数量自适应地更改参数sr2。
[0451]

在一些实施方案中,代替计算近似最近邻,可使用精确最近邻搜索技术。
[0452]

在一些实施方案中,可组合精确和近似邻搜索方法。具体地,取决于lod和/或i中的点的数量,该方法可在精确与近似搜索方法之间切换。其他标准可包括点云密度、当前点与上一个点之间的距离或与点云分布有关的任何其他标准。
[0453]

如果当前点与最后处理的点之间的距离小于阈值,则使用最后的点的邻作为初始猜测并且在其附近进行搜索。可以基于与上述那些类似的标准来自适应地选择阈值。该阈值可以在位流中发信号通知,或者对于编码器和解码器两者都是已知的。
[0454]

先前的想法可推广到n=1,2,3,4

最后的点
[0455]

排除距离大于用户定义的阈值的点。可以基于与上述那些类似的标准来自适应地选择阈值。该阈值可以在位流中发信号通知,或者对于编码器和解码器两者都是已知的。
[0456]
○i←
o(k)
[0457]
○d←d×
ρ
[0458]

上述方法可与任何度量(例如,l2、l1、lp)或这些度量的任何近似一起使用。例如,在一些实施方案中,距离比较可以使用欧几里得距离比较近似,诸如出租车/曼哈顿/l1近似或八边形近似。
[0459]
在一些实施方案中,可以在不确定级别的分级的情况下应用提升方案。在此类实施方案中,该技术可以如下进行:
[0460]

根据与输入点的坐标相关联的莫顿码对输入点进行排序
[0461]

根据莫顿序对点属性进行编码/解码
[0462]

针对每个点i,寻找已经处理过的h个最近邻(n1,n2,...,nh)(nj《i)
[0463]

如上所述计算预测权重。
[0464]

应用上述自适应方案以便调整预测策略。
[0465]

预测属性并且对其进行熵编码,如下所述。
[0466]
量化提升系数的二进制算术编码
[0467]
在一些实施方案中,提升方案系数可以是非二进制值。在一些实施方案中,上文已经描述为图2b所示的编码202的部件的算术编码器(诸如算术编码器212),并且使用二进制算术编解码器对256个值的占用符号进行编码也可以用于对提升方案系数进行编码。或者,在一些实施方案中,可以使用类似的算术编码器。例如,该技术可以如下进行:
[0468]

一维属性
[0469]

假设c是待编码的量化系数。首先使用将正数映射为偶数并且将负数映射为奇数的函数将c映射为正数。
[0470]

假设m(c)是映射值。
[0471]

然后对二进制值进行编码以指示c是否为0
[0472]

如果c不是零,则区分两种情况
[0473]

如果m(c)高于或等于alphabetsize(例如,以上关于图12c至图12f描述的二进制算术编码技术所支持的符号的数量),则通过使用上述方法对值alphabetsize进行编码。m(c)与alphabetsize之间的差值通过使用指数golomb编码进行编码
[0474]

否则,使用以上针对n关于图12c至图12f描述的方法对m(c)的值进行编码。
[0475]

三维信号
[0476]

假设c1、c2、c3是待编码的量化系数。假设k1和k2是用于编码量化系数c1、c2和c3的上下文的两个索引。
[0477]

首先如上文关于图12c至图12f所描述,将c1、c2和c3映射到正数。假设m(c1)、m(c2)和m(c3)是c1、c2和c3的映射值。
[0478]

对m(c1)进行编码。
[0479]

在基于c1是否为零的条件选择不同的上下文(即,以上关于图12c至图12f定义的二进制算术上下文和二进制化上下文)时对m(c2)进行编码。
[0480]

在基于条件c1为零和c2为零的条件下选择不同的上下文时对m(c3)进行编码。如果c1为零,则知道该值至少为16。如果条件c1为零,则使用二进制上下文k1,如果该值不为零,则将该值递减1(已知该值至少为一个或多个),然后检查该值是否小于字母大小,如果是,则直接对该值进行编码。否则,对字母大小的最大可能值进行编码。字母大小的最大可能值与m(c3)值之间的差值将使用指数golomb编码进行编码。
[0481]

多维信号
[0482]

可将上述相同的方法推广到d维信号。此处,对第k个系数进行编码的上下文取决于前一个系数的值(例如,最后0、1、2、3、

、k-1个系数)。
[0483]

可取决于上一节中描述的用于选择sr1和sr2的任何标准来自适应地选择待考虑的先前系数的数量。
[0484]
下文是有关如何利用点云传递算法来最小化原始点云与重构点云之间的失真的更详细讨论。
[0485]
属性传输问题可以定义如下:
[0486]
a.假设pc1=(p1(i))
i∈{1,

,n1}
是由其几何(即,3d位置)(x1(i))
i∈{1,

,n1}
和属性集合(例如,rgb颜色或反射率)(a(i))
i∈{1,

,n1}
定义的点云。
[0487]
b.假设pc2(p2(j))
j∈{1,

,n2}
是pc1的重采样版本,并且假设(x2(j))
j∈{1,

,n2}
是其几何。
[0488]
c.然后计算与pc2的点相关联的(a2(j))
j∈{1,

,n2}
属性集合,使得纹理失真最小化。
[0489]
为了使用属性传递算法解决纹理失真最小化问题:
[0490]

假设p
(3

1)(j)
∈pc1是p2(j)∈pc2在pc1中的最近邻,并且a
(2

1)(j)
是其属性值。
[0491]

假设p
(1

2)(i)
∈pc2是p1(i(∈pc1在pc2中的最近邻,并且a
(1

2)(i)
是其属性值。
[0492]

假设是pc2的点集合,这些点共享点p1(i)∈pc1作为其最近邻,并且假设(α(j,h))
h∈{1,

,h(j)}
是其属性值
[0493]

假设e2→1是从pc2到pc1计算的非对称误差:
[0494]

[0495]

假设e1→2是从pc1到pc2计算的非对称误差:
[0496]

[0497]

假设e是测量pc2与pc1之间的属性失真的对称误差:
[0498]

e=max(e2→1,e1→2)
[0499]
然后如下确定属性集合(a2(j))
j∈{1,

,n2}

[0500]
a.初始化e1

0和e2
←0[0501]
b.遍历pc2的所有点
[0502]
1)对于每个点p2(j),计算p
(2

1)(j)
∈pc1和
[0503]
2)如果(e1》e2或)
[0504]

a2(j)=a2→1(j)
[0505]
3)否则
[0506]

[0507]
4)结束条件
[0508]
5)e1

e1 ‖a2(j)-a2→1(j)‖2[0509]
6)
[0510]
点云属性传递算法
[0511]
在一些实施方案中,可以使用点云传递算法来最小化原始点云与原始点云的重构版本之间的失真。传递算法可用于评估由于原始点云和重构点云的点位置略有不同而导致的失真。例如,重构点云可以具有与原始点云类似的形状,但是可以具有a.)不同的总点数和/或b.)与原始点云中的对应点相比略有偏移的点。在一些实施方案中,点云传递算法可以允许待被选择用于重构点云使得原始点云与原始点云的重构版本之间的失真最小化的属性值。例如,对于原始点云,点的位置和点的属性值两者都是已知的。然而,对于重构的点云,位置值可能是已知的(例如,基于如上所述的子采样过程、k-d树过程或补片图像过程)。然而,仍然可能需要确定重构点云的属性值。因此,点云传递算法可用于通过选择使失真最小化的重构点云的属性值来最小化失真。
[0512]
可关于选定的属性值来确定从原始点云到重构点云的失真。同样,可以关于选定的用于重构点云的属性值来确定从重构点云到原始点云的失真。在许多情况下,这些失真是不对称的。利用两个误差(e21)和(e12)来初始化点云传递算法,其中e21是从第二或重构点云到原始或第一点云的误差,并且e12是从第一或原始点云到第二或重构点云的误差。对于第二点云中的每个点,确定是应当为该点分配原始点云中对应点的属性值,还是应当为该点分配与原始点云中对应点最近的邻居的平均属性值。属性值是基于最小误差来选择的。
[0513]
修整用于点云压缩和解压缩的最近邻搜索的搜索空间
[0514]
在各种实施方案中,如上讨论的用于生成细节级别(lod)的技术可迭代地应用子采样过程,以便将当前lod中的点与属于接下来的lod的点分开。在各种实施方案中,该过程可包括:根据欧几里得范数(有时称为“l2”范数)检查针对每个点的距离,其中点表示为到点云中按用于生成lod的次序(例如,莫顿序)出现在当前点之前的所有其他点的矢量。如果距离中的任何距离高于定义阈值,则该点可包括在当前lod中。否则,点可属于后续lod。通过将搜索修整到如下文在各种实施方案中所讨论的有限搜索范围(例如,64或128的搜索范围1“sr1”),可执行近似最近邻搜索,它比不利用近似的其他最近邻搜索技术快一个数量级。
[0515]
例如,在一些实施方案中,可通过实施边界形状来修整(或以其他方式减小)用于最近邻搜索的搜索空间。考虑以下示例性实施方案,其中点云的点被聚类、分组或以其他方式分配到固定大小的点桶中,如图14所示。每个桶(诸如桶1420a、1420b、1420c等)可被分配点云中的空间填充曲线值1400范围确定的点,诸如分别分配给桶1420a、1420b和1420c的空间填充曲线范围1410a、1410b和1410c。考虑以下示例性实施方案,其中莫顿序中的每8个、16个或32个连续点可分组在点桶1420中。然后可确定边界形状,诸如轴线对准的边界框1430,并且是其与每个桶相关联(因为边界框1430可与包括在桶1420a中的点相关联)。在各种实施方案中,可增量地计算或在开始子采样过程之前预先计算边界框。尽管关于图14示出并讨论了边界框,但是在其他实施方案中可实现其他边界形状,例如边界球体、边界胶囊等。
[0516]
边界形状可用于基于点桶外部的点到分配给点桶的点的距离计算最小边界。例如,如图14所指示,可相对于边界框1430确定到点的最小距离1440(而不是计算外部点与桶1420a内的点之间的距离)。图15示出了根据一些实施方案的用于应用边界形状以修整用于最近邻搜索的搜索空间的高级流程图。
[0517]
如1510处所示,在一些实施方案中,可将点云的点分组在空间填充曲线的不同范围内,这些不同范围包括针对点生成的相应空间填充曲线值。例如,可针对点云的点生成莫顿码。可将莫顿码值落入分配给组a的莫顿码值范围(例如,桶a)内的点分组在组a中。可对落入分配给组b的莫顿码值范围内的莫顿码值内的点进行类似分组。
[0518]
如1520处所示,在一些实施方案中,可针对空间填充曲线的不同范围内的分组点确定边界形状。例如,可确定涵盖组内的所有点的形状,框、球体、立方体等。在一些实施方案中,可实施技术以确定最佳拟合边界形状(例如,该形状涵盖所有点,但覆盖最小空间量)。在一些实施方案中,可作为子采样之前的预处理步骤确定边界形状,或者这可迭代地执行。
[0519]
如1530处所示,在各种实施方案中,可执行用于对点云进行编码的最近邻搜索。例如,如上文关于图1至图13b所讨论,可执行各种最近邻搜索。为了确定一组点是否应包括在最近邻搜索中,可确定针对其执行最近邻搜索的点与组的边界形状之间的距离,如1540处所示。可将所确定的距离与采样阈值进行比较。如果超过采样阈值,则如1550处所示,可从最近邻搜索中排除到相应边界形状的距离超过阈值的组中的那些点。以此方式,可通过并不单独计算在排除边界形状内的点的距离来减小搜索空间。对于边界形状内的未超过阈值的组,可利用组中的点和正被搜索的点进行单独距离确定。在一些实施方案中,可包括采样阈值内的那些距离。
[0520]
在一些实施方案中,上文关于图15和图16所讨论的技术可包括进一步优化。例如,在一些实施方案中,距离度量可从l2距离改变(l2距离可使用3个乘法操作实施,如果考虑hw实施方式,这可能是昂贵的),替代地可使用l1归一化(例如,l1归一化取k维点的绝对值|x| |y| |z|等,直到k个维度,并且l1归一化可使用加法器实现,从而提供廉价的硬件实施方式)。在一些实施方案中,可针对初始距离搜索实施l1并保持潜在最近邻候选的列表。然后,可应用基于不同距离度量(诸如l2归一化(例如,l2归一化取k维点的平方和x2 y2 z2等,直到k个维度,l2归一化也可任选地取平方和的平方根)的搜索,以细化最近邻候选。需注意,在一些实施方案中,可在多于三个维度(例如x、y和z)中定义点云,例如在一些实施方案中,第四维度可以是时间等。
[0521]
在至少一些实施方案中,可通过针对每个点并行地计算距离来使上文讨论的用于子采样以找到用于搜索的最近邻的技术并行化。在一些实施方案中,还可基于莫顿排序点的以下两个性质来修整搜索范围,诸如通过利用包含两个点的最小四叉树框来确定就最近邻而言是否应考虑点,该最小四叉树框也将包含按莫顿序位于这两个点之间的所有点。
[0522]
在各种实施方案中,可为预测器生成技术修整用于最近邻搜索的搜索空间。例如,预测生成技术可尝试针对当前lod中的每个点计算点在后续lod中的k个最近邻,和/或点在同一lod中具有较低解码器次序的k个最近邻。在这些和其他预测器生成场景中,可实施修整搜索空间的技术以提高搜索性能。
[0523]
例如,在一些实施方案中,因为可对当前lod中的所有点应用最近邻搜索,所以一个或多个点的结果可重复用于搜索其他点。在一些实施方案中,可针对空间填充曲线(诸如莫顿序)上的偶数点在搜索范围(sr2)内执行最近邻搜索。对于空间填充曲线中的奇数点,可重复使用来自事件点距离计算的结果,并且因此减小搜索空间。在各种实施方案中,对将受益于具有搜索范围sr2的最近邻搜索的点以及将重复使用搜索结果的点的选择可以是基于点间距离标准自适应的。一些点也可将重复使用其他点搜索与搜索范围sr3小于sr2的有限局部搜索组合起来。
[0524]
图16示出了根据一些实施方案的根据空间填充曲线的范围的最近邻搜索结果重复使用的示例。空间填充曲线1600,可以是莫顿序或其他空间填充曲线,可示出不同空间填充曲线值范围,诸如范围1610a、1610b、1610c、1610d、16010e等。如以上示例中所讨论,范围可以是交替的奇数和偶数空间填充曲线值。然而,在其他实施方案中,可实施不同范围(包括不同尺寸的范围)。就针对当前lod生成的新搜索结果和针对先前lod生成的先前搜索结果可识别空间填充曲线的不同范围。例如,对于最近邻搜索1640,可识别范围1610a、1610c和1610e以供重复使用,使得可重复使用来自先前lod最近邻搜索的搜索结果(例如,确定哪些点是否应被采样为最近邻的距离值),如1620a、1620c和1620e处所示。可识别一些搜索范围以用于生成新结果,诸如空间填充曲线范围1610b和1610d,它们分别使用来自当前lod 1620b和1620d的搜索结果。
[0525]
图17示出了根据一些实施方案的用于应用边界形状以修整用于最近邻搜索的搜索空间的高级流程图。如1710处所示,根据上文所讨论的各种技术,作为子采样以生成预测器的一部分,可生成针对第一细节级别(lod)的点的最近邻搜索结果。如1720处所示,根据一些实施方案,可针对点云的第二lod的空间填充曲线值在针对新搜索结果识别的范围内的点生成最近邻搜索结果。如1730处所示,根据一些实施方案,可针对第二lod中的空间填
充曲线值在针对结果重复使用识别的范围内的点选择点云的第一lod的点的最近邻搜索结果的那些部分。
[0526]
在一些实施方案中,可实施各种进一步优化。例如,如上所讨论,可使用不同的归一化技术(例如,l1范数而不是l2)。在一些实施方案中,可执行不同的归一化技术以便过滤搜索结果,诸如使用l1归一化进行初始搜索并保持潜在最近邻候选的列表。然后,可利用基于l2的搜索来细化最近邻候选列表。在一些实施方案中,根据上文所讨论的技术,对于随后lod中的最近邻搜索,可重复使用在前一节中计算的边界框来以与前一节中相同的方式修整搜索空间。在一些实施方案中,对于相同lod中的点,可如所描述计算新边界框,并且另外使用边界框就针对新结果识别的那些部分生成搜索结果。
[0527]
在一些实施方案中,可针对属于后续lod的点预先计算k最近邻图g。然后可使用该图来加速搜索过程。例如,对于每个点p,将首先应用具有有限搜索范围的快速搜索以找到近似最近邻n0。然后评估节点在图g中的邻以找到p在图g中的k个最近邻。然后可通过以下方式加速生成图g的过程:仅查找具有较低空间填充曲线值(例如,较低莫顿序)的最近邻,并且使图g对称(例如,如果p是q的邻,则使q成为p的邻)。为了降低g的存储器要求,可基于点云特性自适应地改变图g的最近邻搜索的数量。
[0528]
上述所有方法可以不同方式组合以实现用于减小搜索空间的不同优化。如前所述,在一些实施方案中,可诸如通过以下方式沿着不同维度使最近邻搜索并行化:针对不同点并行地执行最近邻搜索来,和/或可针对每个点并行地搜索邻。
[0529]
用于最近邻搜索的经修整搜索空间的进一步增强
[0530]
在提升/预测方案和区域自适应分级转换(raht)方案两者的上下文中,“k”最近邻问题(k-nn)可如下制定并且根据图18进行描述。假设a和b为离散度量空间r^d中的两个点组,其中d是空间的维度(例如,d=3)。对于a中的每个点,期望找到其在b中的k个最近邻。
[0531]
如上所讨论,a和b两者都可根据其莫顿序进行排序。同样如上所讨论,可如下计算近似“k”最近邻解:
[0532]

假设j为初始化为0的计数器
[0533]

假设p(i)为a的根据莫顿序的第i个点
[0534]

保持递增j,直到p(i)的莫顿码(表示为mp(i))满足以下条件
[0535]

其中mq(j)为b的根据莫顿序的第j个点的莫顿码(表示为q(j))。
[0536]

在b的点的以下子集s(j)中应用有限搜索
[0537]
s(j)={q(j),q(j 1),q(j-1),

,q(j δ),q(j-δ)}
[0538]
需注意,当a=b时,可应用相同算法,其中j=i。
[0539]
还需注意,可通过仅允许具有较低莫顿码的“k”个最近邻来进一步限制问题。这里,s(j)定义如下:
[0540]
s(j)={q(j),q(j-1),

,q(j-δ)}
[0541]
这种方法提供了“k”个最近邻的良好近似。然而,当在相邻点(参见图19中的点p和q)之间观察到就莫顿序而言的显著跳跃时,可能无法捕获实际最近邻。
[0542]
因为使用所确定的“k”个最近邻来预测点的属性和/或确定细节级别(lod),所以提高“k”最近邻搜索的准确性可提高压缩效率。例如,基于更准确的最近邻的预测可产生与基于以下一组点的预测相比更好的预测结果,该组点无意中排除了与包括在这组最近相邻
点中的点相比更靠近正被评估的点的一个或多个点,例如,排除的最近相邻点。此外,如果预测更准确,则残差值例如属性校正值也可更小。因为属性校正值在压缩属性文件中编码,所以减小属性校正值的大小也将减少必须编码并传送到解码器的数据量,从而提高压缩效率。另外,如果对属性校正值进行量化,则较大的量化属性校正值也可能影响点云的属性的重构质量。因此,通过使用一组更准确的相邻点进行预测来提高预测准确度并因此减小属性校正值的大小,也可提高重构点云的质量。
[0543]
在一些实施方案中,为了进一步细化“k”最近邻搜索,可如下计算解:
[0544]

假设j为初始化为0的计数器
[0545]

假设p(i)为a的根据莫顿序的第i个点
[0546]

保持递增j,直到p(i)的莫顿码(表示为mp(i))满足以下条件
[0547]
mp(i)≥mq(j),
[0548]
其中mq(j)为b的根据莫顿序的第j个点的莫顿码(表示为q(j))。
[0549]

在b的点的以下子集s(j)中应用有限搜索
[0550]
s(j)={q(j),q(j 1),q(j-1),

,q(j δ),q(j-δ)}
[0551]

假设n(i,1),n(i,2),

,n(i,h)为p(i)在rd中的一组邻。例如,p(i)的6/18/26连接性形成并集{p(i)}
[0552]

针对每个点n(i,h),若其存在于b中,则进行搜索
[0553]

替代方案1:应用二进制搜索
[0554]

假设mn(i,h)为n(i,h)的莫顿码
[0555]

如果mn(i,h)≥mq(j-δ)并且mn(i,h)≤mq(j δ),则不做任何事(如果它属于b,则它早已通过初始搜索捕获)
[0556]

如果mn(i,h)《mq(j-δ),则对整数区间[j-δ-1-mq(j-δ) mn(i,h),j-δ-1]应用二进制搜索
[0557]

如果mn(i,h)》mq(j δ),则对整数区间[j δ 1,j δ 1 mq(j δ)-mn(i,h),]应用二进制搜索
[0558]

替代方案2:使用查找表
[0559]

假设c=[0,

,2
c-1]
×
[0,

,2
c-1]
×
[0,

,2
c-1]为b的边界多维数据集(即,)
[0560]

首先,假设映射c的任何点x为
[0561]

真(或-1),若点不属于b
[0562]

假(或b中的x的索引),其他情况。
[0563]

使用lut检查mn(i,h)是否属于b。如果mn(i,h)属于b,则将mn(i,h)添加到s(j)
[0564]

注释1:lut可被实施为表格或使用任何分级结构(例如,八叉树、kd树、分级网格
……
)实施以通过利用点云的稀疏性质来节省存储器。
[0565]

注释2:lut可每位置存储多个索引,以便处理复制点。
[0566]

注释3:分配保持c的lut就存储器而言可能是昂贵的。为了降低此类要求,可将边界多维数据集c划分为大小为2e的较小子多维数据集{e(a,b,c)}。由于点按莫顿序遍历,因此一个子多维数据集中的所有点在切换下一子多维数据集之前都按顺序遍历。因此,仅需要能够存储单个子多维数据集的lut。每当p(i)进入新子多维数据集时,lut就将初始化。
仅将b的在该子多维数据集中的点添加到lut。对于子多维数据集的边界上的点,两种策略是可能的:
[0567]

忽略跨子多维数据集边界的邻域关系
[0568]

使用二进制搜索(即,替代方案1)来确定其邻是否存在。
[0569]

替代方案3:组合替代方案1和替代方案2
[0570]
需注意,邻的连接性,例如6个相邻体素的连接性,可类似于图12c所示的连接性1286。虽然未示出,但可使用更多体素(诸如18或26)的类似连接性。此外,如图12b所示,可对多维数据集进行划分并进一步划分成子多维数据集。在一些实施方案中,可另外对正针对其进行最近邻搜索的点所在的体素进行搜索以查看同一体素中是否存在另一相邻点。在这种情况下,当正被评估的点驻留在其中的体素进一步包括在待考虑的一组体素中时,连接性可以是7、19、27等。
[0571]
另外,如上可见,用于确定点云的点的莫顿码是否匹配相邻体素的莫顿码的二进制搜索可排除基于莫顿码的初始搜索中所使用的莫顿码。这是因为具有那些莫顿码的点已经通过第一搜索识别,因此如果它们已经被识别为最近相邻点中的一个点,则不必在相邻体素中另外对它们进行二次搜索。
[0572]
另外,在一些实施方案中,为了进一步细化“k”最近邻搜索,可如下计算解:
[0573]

搜索可以与上文刚刚所描述相反的方式进行。例如,首先应用基于相邻体素(例如,邻n(i,1),n(i,2),

,n(i,h))的搜索。然后,通过应用修整的莫顿序搜索来进一步细化搜索。
[0574]

应用基于n(i,1),n(i,2),

,n(i,h)的k-nn搜索
[0575]

找不到邻
[0576]

在s(j)={q(j),q(j 1),q(j-1),

,q(j δ),q(j-δ)}中进行搜索
[0577]

找到一个邻
[0578]

假设j
*
为在b找到的最近邻的索引
[0579]

在s(j
*
)={q(j
*
),q(j
*
1),q(j
*-1),

,q(j
*
δ),q(j
*-δ)}中进行搜索
[0580]

找到k

《k个邻。假设为在b找到的最近邻的索引
[0581]

方法1
[0582]

在在中进行搜索
[0583]

方法2
[0584]

假设为在b找到的最近邻的索引
[0585]

在中进行搜索
[0586]
另外,在一些实施方案中,当搜索“k”最近邻时,可进一步利用诸如图13a至图13b所述的提升方案和/或区域自适应分级转换(raht)方案。例如,提升/预测方案保证在每个lodl处,每两个点之间的距离高于预定义阈值d(l)。raht方案在每个级别处合并偏移l位的共享相同莫顿码的所有点。如果距离序列被约束为{d(1),d(2),

d(l)},如下,则可实现与raht相同的性质:
[0587]

[0588]

d(l 1)=2
×
d(l)
[0589]
下面描述的示例聚焦在提升/预测方案上。然而,也可对raht方案应用类似方法。
[0590]
基于上述受约束距离模型,已知lod l=2的所有点具有高于√3
×
2^(n0 1)的距离。因此,如果b的点的坐标除以2^(n0 1)(例如,将所有坐标偏移(n0 1)位),则所有点仍将具有不同的坐标,同时显著收缩前一节中描述的lut的大小和/或二进制搜索的范围。
[0591]
用于点云压缩和解压缩的示例性应用
[0592]
图20示出了根据一些实施方案的在3d远程显示应用中正在使用的压缩点云。
[0593]
在一些实施方案中,传感器(诸如传感器102)、编码器(诸如编码器104或编码器202)和解码器(诸如解码器116或解码器220)可用于在3d远程显示应用中传送点云。例如,在2002处,传感器(诸如传感器102)可捕获3d图像,并且在2004处,传感器或与传感器相关联的处理器可基于感测到的数据执行3d重构以生成点云。
[0594]
在2006处,编码器(诸如编码器104或202)可对点云进行压缩,并且在2008处,编码器或后处理器可打包压缩点云并经由网络2010传输压缩点云。在2012处,可在包括解码器(诸如解码器116或解码器220)的目标位置处接收数据包。在2014处,解码器可对点云进行解压缩,并且在2016处,可渲染解压缩点云。在一些实施方案中,3d远程显示应用可实时地传输点云数据,使得2016处的显示能表示正在2002处观察到的图像。例如,在2016处,峡谷中的相机可允许远程用户体验穿行虚拟峡谷。
[0595]
图21示出了根据一些实施方案的在虚拟现实(vr)或增强现实(ar)应用中正在使用的压缩点云。
[0596]
在一些实施方案中,点云可在软件中生成(例如,与由传感器捕获相反)。例如,在2102处,产生虚拟现实或增强现实内容。虚拟现实或增强现实内容可包括点云数据和非点云数据。例如,作为一个示例,非点云字符可横穿由点云表示的地形。在2104处,可压缩点云数据,并且在2106处,可将压缩点云数据和非点云数据打包并经由网络2108传输这些数据。例如,在2102处产生的虚拟现实或增强现实内容可在远程服务器处产生并经由网络2108传送至vr或ar内容消费者。在2110处,数据包可在vr或ar消费者的设备处被接收并同步。在2112处,在vr或ar消费者的设备处运作的解码器可对压缩点云进行解压缩,并且点云和非点云数据可例如在vr或ar消费者的设备的头戴式显示器中被实时渲染。在一些实施方案中,可响应于vr或ar消费者操纵头戴式显示器以看向不同的方向来生成、压缩、解压缩和渲染点云数据。
[0597]
在一些实施方案中,如本文所述的点云压缩可用于各种其他应用诸如地理信息系统、体育赛事直播、博物馆展示、自主导航等中。
[0598]
示例性计算机系统
[0599]
图22示出了根据一些实施方案的示例性计算机系统2200,该示例性计算机系统可实现编码器或解码器或本文所述的部件中的任何其他部件(例如,上文参考图1至图21描述的部件中的任何部件)。计算机系统2200可被配置为执行上文所述的任何或全部实施方案。在不同的实施方案中,计算机系统2200可为各种类型的设备中的任一者,包括但不限于:个人计算机系统、台式计算机、膝上型电脑、笔记本电脑、平板电脑、一体电脑、平板计算机或上网本电脑、大型计算机系统、手持式计算机、工作站、网络计算机、相机、机顶盒、移动设备、消费者设备、视频游戏控制器、手持式视频游戏设备、应用服务器、存储设备、电视、视频
记录设备、外围设备(诸如交换机、调制解调器、路由器)或一般性的任何类型的计算或电子设备。
[0600]
本文所述的点云编码器或解码器的各种实施方案可在一个或多个计算机系统2200上执行,该计算机系统可与各种其他设备交互。需注意,根据各种实施方案,上文相对于图1至图21描述的任何部件、动作或功能性可实现于配置为图22的计算机系统2200的一种或多种计算机上。在例示的实施方案中,计算机系统2200包括经由输入/输出(i/o)接口2230联接到系统存储器2220的一个或多个处理器2210。计算机系统2200还包括耦接到i/o接口2230的网络接口2240,以及一个或多个输入/输出设备2250,诸如光标控制设备2260、键盘2270和显示器2280。在一些情况下,设想到实施方案可使用计算机系统2200的单个实例来实现,而在其他实施方案中,多个此类系统或者构成计算机系统2200的多个节点可被配置为托管实施方案的不同部分或实例。例如,在一个实施方案中,一些元件可通过计算机系统2200的与实现其他元件的那些节点不同的一个或多个节点来实现。
[0601]
在各种实施方案中,计算机系统2200可以是包括一个处理器2210的单处理器系统或者包括若干个处理器2210(例如两个、四个、八个或另一合适数量)的多处理器系统。处理器2210可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器2210可为实现多种指令集架构(isa)(诸如x86、powerpc、sparc或mips isa或任何其他合适的isa)中的任一种的通用或嵌入式处理器。在多处理器系统中,处理器2210中的每个处理器通常可但并非必须实现相同的isa。
[0602]
系统存储器2220可被配置为存储点云压缩或点云解压缩程序指令2222和/或可由处理器2210访问的传感器数据。在各种实施方案中,系统存储器2220可使用任何合适的存储器技术来实现,合适的存储器技术为诸如静态随机存取存储器(sram)、同步动态ram(sdram)、非易失性/闪存型存储器或任何其他类型的存储器。在例示的实施方案中,程序指令2222可被配置为实现结合上述功能性中的任一种的图像传感器控制应用程序。在一些实施方案中,程序指令和/或数据可被接收、发送或存储在与系统存储器2220或计算机系统2200分开的不同类型的计算机可访问介质上或类似介质上。尽管将计算机系统2200描述为实施前面各图的功能框的功能性,但可通过此类计算机系统实施本文描述的任何功能性。
[0603]
在一个实施方案中,i/o接口2230可被配置为协调设备中的处理器2210、系统存储器2220、和任何外围设备(包括网络接口2240或其他外围接口,诸如输入/输出设备2250)之间的i/o通信。在一些实施方案中,i/o接口2230可执行任何必要的协议、定时或其他数据转换以将来自一个部件(例如系统存储器2220)的数据信号转换为适于由另一部件(例如处理器2210)使用的格式。在一些实施方案中,i/o接口2230可包括对例如通过各种类型的外围总线(诸如,外围部件互连(pci)总线标准或通用串行总线(usb)标准的变型)附接的设备的支持。在一些实施方案中,i/o接口2230的功能例如可被划分到两个或更多个单独部件中,诸如北桥和南桥。此外,在一些实施方案中,i/o接口2230(诸如到系统存储器2220的接口)的一些或所有功能可被直接并入到处理器2210中。
[0604]
网络接口2240可被配置为允许在计算机系统2200与附接到网络2285的其他设备(例如,承载器或代理设备)之间或者在计算机系统2200的节点之间交换数据。在各种实施方案中,网络2285可包括一种或多种网络,包括但不限于局域网(lan)(例如,以太网或企业网)、广域网(wan)(例如,互联网)、无线数据网、某种其他电子数据网络或它们的某种组合。
在各种实施方案中,网络接口2240可支持经由有线或无线通用数据网络(诸如任何合适类型的以太网网络)的通信,例如;经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络)的通信;经由存储区域网络(诸如光纤通道san)、或经由任何其他合适类型的网络和/或协议的通信。
[0605]
在一些实施方案中,输入/输出设备2250可包括一个或多个显示终端、键盘、小键盘、触控板、扫描设备、语音或光学识别设备或适于由一个或多个计算机系统2200输入或访问数据的任何其他设备。多个输入/输出设备2250可存在于计算机系统2200中,或者可分布在计算机系统2200的各个节点上。在一些实施方案中,类似的输入/输出设备可与计算机系统2200分开,并且可通过有线或无线连接(诸如通过网络接口2240)与计算机系统2200的一个或多个节点进行交互。
[0606]
如图22所示,存储器2220可包含程序指令2222,这些程序指令可能够由处理器执行,以实现上文所述的任何元件或动作。在一个实施方案中,程序指令可执行上文所述的方法。在其他实施方案中,可包括不同的元件和数据。需注意,数据可包括上文所述的任何数据或信息。
[0607]
本领域的技术人员应当理解,计算机系统2200仅仅是例示性的,而并非旨在限制实施方案的范围。具体地,计算机系统和设备可包括可执行所指出的功能的硬件或软件的任何组合,包括计算机、网络设备、互联网设备、pda、无线电话、寻呼机等。计算机系统2200还可连接到未例示的其他设备,或者反之可作为独立的系统进行操作。此外,由所示出的部件所提供的功能在一些实施方案中可被组合在更少的部件中或者被分布在附加部件中。类似地,在一些实施方案中,所示出的部件中的一些部件的功能可不被提供,和/或其他附加功能可能是可用的。
[0608]
本领域的技术人员还将认识到,虽然各种项目被示出为在被使用期间被存储在存储器中或存储装置上,但是为了存储器管理和数据完整性的目的,这些项目或其部分可在存储器和其他存储设备之间进行传输。另选地,在其他实施方案中,这些软件部件中的一些或全部软件部件可以在另一设备上的存储器中执行,并且经由计算机间通信来与例示的计算机系统进行通信。系统部件或数据结构中的一些或全部也可(例如作为指令或结构化数据)被存储在计算机可访问介质或便携式制品上以由合适的驱动器读取,其多种示例在上文中被描述。在一些实施方案中,存储在与计算机系统2200分开的计算机可访问介质上的指令可经由传输介质或信号(诸如经由通信介质诸如网络和/或无线链路而传送的电信号、电磁信号或数字信号)传输到计算机系统2200。各种实施方案还可包括在计算机可访问介质上接收、发送或存储根据以上描述所实现的指令和/或数据。一般来讲,计算机可访问介质可包括非暂态计算机可读存储介质或存储器介质,诸如磁介质或光学介质,例如盘或dvd/cd-rom、易失性或非易失性介质,诸如ram(例如sdram、ddr、rdram、sram等)、rom等。在一些实施方案中,计算机可访问介质可包括传输介质或信号,诸如经由通信介质诸如网络和/或无线链路而传送的电气信号、电磁信号、或数字信号。
[0609]
在不同的实施方案中,本文所述的方法可以在软件、硬件或它们的组合中实现。此外,可改变方法的框的次序,并且可对各种要素进行添加、重新排序、组合、省略、修改等。对于受益于本公开的本领域的技术人员,显然可做出各种修改和改变。本文所述的各种实施方案旨在为例示的而非限制性的。许多变型、修改、添加和改进是可能的。因此,可为在本文
中被描述为单个示例的部件提供多个示例。各种部件、操作和数据存储库之间的界限在一定程度上是任意性的,并且在具体的示例性配置的上下文中示出了特定操作。预期了功能的其他分配,它们可落在所附权利要求的范围内。最后,被呈现为示例性配置中的分立部件的结构和功能可被实现为组合的结构或部件。这些和其他变型、修改、添加和改进可落入如以下权利要求书中所限定的实施方案的范围内。
再多了解一些

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

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

相关文献