基于几何的点云压缩的角模式简化的制作方法

文档序号:32389937发布日期:2022-11-30 07:49阅读:37来源:国知局
基于几何的点云压缩的角模式简化的制作方法
基于几何的点云压缩的角模式简化
1.本技术要求于2021年4月7日提交的美国专利申请17/224,709、2020年4月8日提交的美国临时专利申请63/007,282以及2020年4月14日提交的美国临时专利申请63/009,940的优先权,其中每一项的全部内容通过引用并入本文。
技术领域
2.本公开涉及点云编码和解码。


背景技术:

3.点云是三维空间中点的集合。这些点可以对应于三维空间内对象上的点。因此,点云可以用于表示三维空间的物理内容。点云在很多情况下都有用处。例如,点云可以在自主车辆的上下文中用于表示道路上的对象的位置。在另一示例中,点云可以用于表示环境的物理内容的上下文中,以便在增强现实(ar)或混合现实(mr)应用中定位虚拟对象。点云压缩是对点云进行编码和解码的过程。对点云进行编码可以减少存储和传输点云所需的数据量。


技术实现要素:

4.本公开的各方面描述了用于对角(angular)模式比特流进行编码和/或解码的技术,诸如在携带了采用基于几何的点云压缩(g-pcc)的点云数据的比特流中。如本文描述的,使用算术译码(coding)来对与角模式相关的语法元素(诸如指示垂直面位置的语法元素和指示垂直点位置偏移的语法元素)进行译码。用于确定用于这种语法元素的算术译码的上下文(context)的传统过程是复杂的。本公开描述了可以降低确定用于这种语法元素的算术译码的上下文的复杂性的技术。
5.在一个示例中,本公开描述了一种对点云数据进行解码的方法,该方法包括:获得包括指示树的节点的平面模式的垂直面位置的经算术编码语法元素的几何比特流,该树表示点云数据所表示的点云中的点的三维位置;以及对节点中的平面模式的垂直面位置进行解码,其中对平面模式的垂直面位置进行解码包括:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术解码。
6.在另一示例中,本公开描述了一种对点云数据进行编码的方法,该方法包括:对树的节点中的平面模式的垂直面位置进行编码,该树表示由点云数据表示的点云中的点的三维位置,其中对平面模式的垂直面位置进行编码包括:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对平面
模式的垂直面位置进行算术编码。
7.在另一示例中,本公开描述了一种用于对点云数据进行解码的设备,该设备包括:用于存储点云数据的存储器,以及耦合到该存储器并且实现在电路中的一个或多个处理器,该一个或多个处理器被配置为:获得包括指示树的节点的平面模式的垂直面位置的算术编码语法元素的几何比特流,该树表示点云数据所表示的点云中的点的三维位置;以及对节点中的平面模式的垂直面位置进行解码,其中一个或多个处理器被配置为使得作为对平面模式的垂直面位置进行解码的一部分,该一个或多个处理器:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术解码。
8.在另一示例中,本公开描述了一种对点云数据进行编码的设备,该设备包括:存储点云数据的存储器;以及耦合到存储器并在电路中实现的一个或多个处理器,该一个或多个处理器被配置为对由点云数据表示的点云进行编码,其中,一个或多个处理器被配置为,作为对点云进行编码的一部分:对树的节点中的平面模式的垂直面位置进行编码,该树表示点云中的点的三维位置,其中一个或多个处理器被配置为使得作为对平面模式的垂直面位置进行编码的一部分,该一个或多个处理器:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术编码。
9.在另一示例中,本公开描述了一种用于对点云数据进行解码的设备,该设备包括:用于获得包括指示树的节点的平面模式的垂直面位置的经算术编码语法元素的几何比特流的部件,该树表示点云数据所表示的点云中的点的三维位置;以及用于对节点中的平面模式的垂直面位置进行解码的部件,其中用于对平面模式的垂直面位置进行解码的部件包括:用于确定激光候选集中的激光候选的激光索引的部件,其中所确定的激光索引指示与节点相交的激光束;用于基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引的部件;以及用于使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术解码的部件。
10.在另一示例中,本公开描述了一种用于对点云数据进行编码的设备,该设备包括:用于对点云数据进行编码的部件,其中用于对点云数据进行编码的部件包括:用于对树的节点中的平面模式的垂直面位置进行编码的部件,该树表示由点云数据表示的点云中的点的三维位置,其中用于对平面模式的垂直面位置进行编码的部件包括:用于确定激光候选集中的激光候选的激光索引的部件,其中所确定的激光索引指示与节点相交的激光束;用于基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引的部件;以及用于使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术编码的部件。
11.在另一示例中,本公开描述了一种其上存储有指令的计算机可读存储介质,指令
在执行时使一个或多个处理器:获得包括指示树的节点的平面模式的垂直面位置的经算术编码语法元素的几何比特流,该树表示点云数据所表示的点云中的点的三维位置;以及对节点中的平面模式的垂直面位置进行解码,其中使一个或多个处理器对平面模式的垂直面位置进行解码的指令包括以下指令,其在执行时使一个或多个处理器:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术解码。
12.在另一示例中,本公开描述了一种其上存储有指令的计算机可读存储介质,指令在执行时使一个或多个处理器:对点云进行编码,其中使一个或多个处理器对点云进行编码的指令包括以下指令,其在执行时使一个或多个处理器:对树的节点中的平面模式的垂直面位置进行编码,该树表示点云中的点的三维位置,其中使一个或多个处理器对平面模式的垂直面位置进行编码的指令包括以下指令,其在执行时使一个或多个处理器:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术编码。
13.在另一示例中,本公开描述了一种对点云数据进行解码的方法,该方法包括:获得包括指示树的节点内的垂直点位置偏移的经算术编码语法元素的几何比特流,该树表示点云数据所表示的点云中的点的三维位置;以及对该垂直点位置偏移进行解码,其中对垂直点位置偏移进行解码包括:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术解码。
14.在另一示例中,本公开描述了一种对点云数据进行编码的方法,该方法包括:对树的节点内的垂直点位置偏移进行编码,该树表示由点云数据表示的点云中的点的三维位置,其中对垂直点位置偏移进行编码包括:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术编码。
15.在另一示例中,本公开描述了一种对点云数据进行解码的设备,该设备包括:用于存储点云数据的存储器;以及耦合到该存储器并且实现在电路中的一个或多个处理器,该一个或多个处理器被配置为:获得包括指示树的节点内的垂直点位置偏移的经算术编码语法元素的几何比特流,该树表示点云数据所表示的点云中的点的三维位置;以及对该垂直点位置偏移进行解码,其中该一个或多个处理器被配置为使得作为对垂直点位置偏移进行解码的一部分,该一个或多个处理器:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈
值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术解码。
16.在另一示例中,本公开描述了一种对点云数据进行编码的设备,该设备包括:用于存储点云数据的存储器;以及耦合到该存储器并且实现在电路中的一个或多个处理器,该一个或多个处理器被配置为:对树的节点内的垂直点位置偏移进行编码,该树表示由点云数据表示的点云中的点的三维位置,其中该一个或多个处理器被配置为作为对垂直点位置偏移进行编码的一部分:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术编码。
17.在另一示例中,本公开描述了一种用于对点云数据进行解码的设备,该设备包括:用于获得包括指示树的节点内的垂直点位置偏移的经算术编码语法元素的几何比特流的部件,该树表示点云数据所表示的点云中的点的三维位置;以及用于对该垂直点位置偏移进行解码的部件,其中用于对垂直点位置偏移进行解码的部件包括:用于确定激光候选集中的激光候选的激光索引的部件,其中所确定的激光索引指示与节点相交的激光束;用于基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引的部件;以及用于使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术解码的部件。
18.在另一示例中,本公开描述了一种用于对点云数据进行编码的设备,该设备包括:用于对树的节点内的垂直点位置偏移进行编码的部件,该树表示由点云数据表示的点云中的点的三维位置,其中用于对垂直点位置偏移进行编码的部件包括:用于确定激光候选集中的激光候选的激光索引的部件,其中所确定的激光索引指示与节点相交的激光束;用于基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引的部件;以及用于使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术编码的部件。
19.在另一示例中,本公开描述了一种其上存储有指令的计算机可读存储介质,指令在执行时使一个或多个处理器:获得包括指示点云中的点的三维位置的树的节点内的垂直点位置偏移的经算术编码语法元素的几何比特流;以及对该垂直点位置偏移进行解码,其中用于使一个或多个处理器对垂直点位置偏移进行解码的指令包括以下指令,在执行时使一个或多个处理器:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术解码。
20.在另一示例中,本公开描述了一种其上存储有指令的计算机可读存储介质,指令在执行时使一个或多个处理器:对表示点云中的点的三维位置的树的节点内的垂直点位置偏移进行编码,其中用于使一个或多个处理器对垂直点位置偏移进行编码的指令包括以下
指令,在执行时使一个或多个处理器:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术编码。
21.在附图和以下描述中阐述一个或多个示例的细节。根据说明书、附图和权利要求书,其他特征、目的和优势将显而易见。
附图说明
22.图1是示出可以执行本公开的技术的示例编码和解码系统的框图。
23.图2是示出示例几何点云压缩(g-pcc)编码器的框图。
24.图3是示出示例g-pcc解码器的框图。
25.图4是示出垂直方向上的示例平面占用的概念图。
26.图5是根据本公开的一种或多种技术的示例的概念图,其中基于激光束位置在节点的标记点之上或之下来确定上下文索引。
27.图6是示出示例性三上下文索引确定的概念图。
28.图7是示出用于利用由细虚线分开的间隔、基于激光束位置来对平面模式的垂直面位置进行译码的示例上下文索引确定的概念图。
29.图8a是示出根据本公开的一种或多种技术的用于对垂直面位置进行编码的示例操作的流程图。
30.图8b是示出根据本公开的一种或多种技术的用于对垂直面位置进行解码的示例操作的流程图。
31.图9是用于基于激光束位置在间隔中点之上或之来确定上下文索引的示例的概念图。
32.图10是示出与第j比特相对应的示例推断直接译码模式(idcm)垂直点偏移间隔的概念图,该垂直点偏移间隔被划分为三个子间隔。
33.图11是示出用于基于间隔内的激光束位置来确定用于对idcm的垂直点位置偏移进行译码的上下文索引的示例技术的概念图。
34.图12a是示出根据本公开的一种或多种技术的用于对idcm垂直点偏移进行编码的示例操作的流程图。
35.图12b是示出根据本公开的一种或多种技术的用于对idcm垂直点偏移进行解码的示例操作的流程图。
36.图13是指示直角三角形的角和边的概念图。
37.图14是示出可以与本公开的一种或多种技术一起使用的示例测距系统的概念图。
38.图15是示出其中可以使用本公开的一种或多种技术的示例基于车辆的场景的概念图。
39.图16是示出其中可以使用本公开的一种或多种技术的示例扩展现实系统的概念图。
40.图17是示出其中可以使用本公开的一种或多种技术的示例移动设备系统的概念
图。
具体实施方式
41.点云是三维空间(3d)中的点的集合。点云数据可以包括表示点云的全部或部分数据。基于几何的点云压缩(g-pcc)是一种用于减少编码或存储点云所需数据量的方法。作为对点云进行编码的一部分,g-pcc编码器生成八叉树。八叉树的每个节点对应于一个长方体空间。为了便于解释,本公开在某些情况下可以互换地指代节点和对应于该节点的长方体空间。八叉树的节点可以有零个子节点或者八个子节点。在其他示例中,节点可以根据其他树结构被划分为子节点。父节点的子节点对应于与父节点相对应的长方体内的大小相等的长方体。点云的各个点的位置可以相对于对应于包含这些点的长方体的节点来被发信令通知。如果对应于节点的长方体不包含点云的任何点,则该节点被称为未被占用。如果该节点未被占用,则可能不需要发信令通知关于该节点的附加数据。反之,如果对应于一个节点的长方体包含点云的一个或多个点,则该节点被称为已被占用。
42.平面模式是一种可以改进对八叉树中的哪些节点被占用进行编码或发信令通知的技术。当节点的所有被占用的子节点邻近一平面并且在该平面的与正交于该平面的维度的增加的坐标值相关联的一侧上时,可以使用平面模式。例如,当节点的所有被占用的子节点位于穿过该节点的中心点的水平面之上或之下时,可以对该节点使用平面模式,或者当节点的所有被占用的子节点位于穿过该节点的中心点的垂直面的近侧或远侧时,可以对该节点使用平面模式。g-pcc编码器可以发信令通知x、y和z维度中的每一者的平面位置语法元素。维度(例如,x、y或z维度)的平面位置语法元素指示与该维度正交的平面是在第一位置还是在第二位置。如果平面位于第一位置,则该平面对应于节点的边界。如果平面位于第二位置,则该平面穿过节点的3d中心。因此,对于z维度,g-pcc编码器或g-pcc解码器可以对表示点云中的点的三维位置的八叉树的节点中的平面模式的垂直面位置进行译码。
43.g-pcc译码器(例如,g-pcc编码器或g-pcc解码器)可以使用算术译码来对平面位置语法元素进行译码。当g-pcc译码器使用算术译码来对平面位置语法元素进行译码时,g-pcc译码器确定指示要用于对平面位置语法元素进行算术译码的上下文的上下文索引。上下文指定在算术译码中使用的符号的概率。如在本公开的其他地方更详细地描述的,用于确定上下文索引的传统技术是复杂的。这种复杂性可能会减慢对点云进行译码的过程。此外,这种复杂性可能增加可以用于实现编码器和解码器的硬件的成本。
44.本公开描述了可以降低确定上下文索引的复杂性的技术。例如,g-pcc译码器可以对八叉树的节点中的平面模式的垂直面位置进行译码,该八叉树表示点云中的点的三维位置。作为对平面模式的垂直面位置进行译码的一部分,g-pcc译码器可以确定激光候选集中的激光候选的激光索引。所确定的激光索引指示与节点相交的激光束。附加地,g-pcc译码器可以基于激光束与节点的相交来确定上下文索引。例如,g-pcc译码器可以基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引。g-pcc译码器可以使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术译码。以这种方式基于光束与节点的相交来确定上下文索引可以降低确定上下文索引的复杂性。尽管本公开描述了激光、激光束、激光候选以及涉及激光的其他术语,但这些术语不一定限于使用物理激光的实例。
相反,这些术语可以关于物理激光或其他测距技术来使用。此外,这些术语可以关于用于对点云进行译码的目的的概念光束来使用。换句话说,术语“激光”、“激光束”等可能不是指真正的激光和激光束,而是可以将激光和激光束的概念用于对点云进行译码的目的。
45.如上所述,点云的各个点的位置可以相对于包含这些点的节点进行编码。在一些示例中,节点中的点的位置可以使用推断的直接译码模式(idcm)来编码。当一个点是使用idcm发信令通知时,g-pcc编码器对点偏移进行编码,该点偏移指示该点相对于节点的原点的特定维度(例如,垂直维度、水平维度、横向维度等)的偏移。点偏移可以被称为点位置偏移。g-pcc译码器可以确定上下文并在对点偏移的算术译码中使用该上下文。用于确定在点偏移的算术译码中使用的上下文的传统技术是复杂的。
46.本公开描述了可以降低用于确定要用于点偏移的算术译码的上下文的过程的复杂性的技术。例如,如本公开中所述,g-pcc译码器可以对表示点云中的点的三维位置的树(例如八叉树)的节点内的垂直点位置偏移进行译码。作为对垂直点位置偏移进行译码的一部分,g-pcc译码器可以确定激光候选集中的激光候选的激光索引。所确定的激光索引指示与节点相交的激光束。附加地,g-pcc译码器可以基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引。g-pcc译码器可以使用由所确定的上下文索引指示的上下文对垂直点位置偏移的二进制数(bin)进行算术译码。
47.图1是示出可执行本公开的技术的示例编码和解码系统100的框图。本公开的技术通常涉及对点云数据进行译码(编码和/或解码),即支持点云压缩。一般地,点云数据包括用于处理点云的任何数据。该译码在对点云数据进行压缩和/或解压缩方面是有效的。
48.如图1所示,系统100包括源设备102和目的地设备116。源设备102提供要由目的地设备116解码的经编码点云数据。特别地,在图1的示例中,源设备102经由计算机可读介质110向目的地设备116提供点云数据。源设备102和目的地设备116可以包括多种设备中的任何一种,包括台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、手持电话(诸如智能手机)、电视、照相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式传输设备、陆地或海上运载工具、航天器、飞机、机器人、激光雷达设备、卫星、监视或安全设备等。在一些情况下,源设备102和目的地设备116可以被配备用于无线通信。
49.在图1的示例中,源设备102包括数据源104、存储器106、g-pcc编码器200和输出接口108。目的地设备116包括输入接口122、g-pcc解码器300、存储器120和数据消费者118。源设备102的g-pcc编码器200和目的地设备116的g-pcc解码器300可以被配置为应用本公开的与g-pcc角模式的简化有关的技术。因而,源设备102表示编码设备的示例,而目的地设备116表示解码设备的示例。在其他示例中,源设备102和目的地设备116可以包括其他组件或布置。例如,源设备102可以从内部或外部源接收数据(例如,点云数据)。同样,目的地设备116可以与外部数据消费者接口连接,而不是在同一设备中包括数据消费者。
50.如图1所示的系统100仅是一个示例。一般地,其他数字编码和/或解码设备可以执行本公开的与g-pcc角模式的简化有关的技术。源设备102和目的地设备116仅仅是此类设备的示例,其中,源设备102生成用于传输到目的地设备116的经译码数据。本公开将“译码”设备表示为执行数据译码(编码和/或解码)的设备。从而,g-pcc编码器200和g-pcc解码器300表示译码设备的示例,具体地,分别是编码器和解码器。类似地,术语“译码”可以指编码
或解码。在一些示例中,源设备102和目的地设备116可以以基本对称的方式操作,使得源设备102和目的地设备116中的每一个都包括编码和解码组件。因此,系统100可以支持源设备102与目的地设备116之间的单向或双向传输,例如用于流式传输、重放、广播、电话、导航和其他应用。
51.一般地,数据源104表示数据(即,原始的、未编码的点云数据)的源,并且可以向g-pcc编码器200提供数据的“帧”的顺序系列,该编码器对帧的数据进行编码。源设备102的数据源104可以包括点云捕获设备,诸如各种传感器中的任一个,例如3d扫描仪、光检测和测距(激光雷达(lidar))设备、一个或多个图像或视频相机、包含先前捕获的数据的存档,和/或用于从数据内容提供商接收数据的数据馈送接口。以此方式,数据源104可以生成点云。可替代地或附加地,点云数据可以由计算机从扫描仪、相机、传感器或其他数据来生成。例如,数据源104可以生成基于计算机图形的数据作为源数据,或者产生实时数据、存档数据和计算机生成数据的组合。在每种情况下,g-pcc编码器200对捕获的、预捕获的或计算机生成的数据进行编码。g-pcc编码器200可以将帧从接收顺序(有时称为“显示顺序”)重新排列为用于译码的译码顺序。g-pcc编码器200可以生成包括经编码数据的一个或多个比特流。然后,源设备102可以经由输出接口108将经编码的数据输出到计算机可读介质110上,以供例如目的地设备116的输入接口122进行接收和/或取得。
52.源设备102的存储器106和目的地设备116的存储器120可以表示通用存储器。在一些示例中,存储器106和存储器120可以存储原始数据,例如,来自数据源104的原始数据和来自g-pcc解码器300的原始的经解码的数据。附加地或可替代地,存储器106和存储器120可以分别存储可由例如g-pcc编码器200和g-pcc解码器300执行的软件指令。尽管在此示例中存储器106和存储器120与g-pcc编码器200和g-pcc解码器300分开示出,但是应当理解的是,g-pcc编码器200和g-pcc解码器300还可以包括实现功能上相似或等效目的的内部存储器。此外,存储器106和存储器120可以存储例如从g-pcc编码器200输出并输入到g-pcc解码器300的经编码的数据。在一些示例中,存储器106和存储器120的一些部分可以分配为一个或多个缓冲区,例如用来存储原始的、经解码的和/或经编码的数据。例如,存储器106和存储器120可以存储表示点云的数据。
53.计算机可读介质110可以表示能够将经编码的数据从源设备102传输到目的地设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示通信介质以使源设备102能够例如经由射频网络或基于计算机的网络将经编码的数据(例如,经编码的点云)实时地直接发送到目的地设备116。根据诸如无线通信协议的通信标准,输出接口108可以对包括经编码的数据的传输信号进行调制,并且输入接口122可以对接收到的传输信号进行解调。通信介质可以包括任何无线或有线通信介质,诸如射频(rf)频谱或者一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,诸如局域网、广域网或诸如因特网的全球网络。通信介质可以包括路由器、交换机、基站或有助于从源设备102到目的地设备116的通信的任何其他装备。
54.在一些示例中,源设备102可以将经编码数据从输出接口108输出到存储设备112。类似地,目的地设备116可以经由输入接口122访问来自存储设备112的经编码的数据。存储设备112可以包括各种分布式或本地访问的数据存储介质中的任何一种,诸如硬盘、蓝光光盘、dvd、cd-rom、闪存、易失性或非易失性存储器,或者用于存储编码的数据的任何其他合
适的数字存储介质。
55.在一些示例中,源设备102可以向文件服务器114或可存储由源设备102生成的经编码的数据的另一中间存储设备输出编码的数据。目的地设备116可以经由流式传输或下载来访问来自文件服务器114的存储的数据。文件服务器114可以是能够存储经编码的数据并将经编码的数据发送到目的地设备116的任何类型的服务器设备。文件服务器114可以表示(例如用于网站的)web服务器、文件传输协议(ftp)服务器、内容递送网络设备或网络附加存储(nas)设备。目的地设备116可以通过包括因特网连接的任何标准数据连接来访问来自文件服务器114的经编码的数据。这可以包括无线信道(例如wi-fi连接)、有线连接(例如数字订户线路(dsl)、电缆调制解调器等)或者适合访问存储在文件服务器114上的经编码的数据的二者组合。文件服务器114和输入接口122可以配置为根据流式传输协议、下载传输协议或其组合来操作。
56.输出接口108和输入接口122可以表示无线发射器/接收器、调制解调器、有线联网组件(例如以太网卡)、根据各种ieee 802.11标准中的任何一种进行操作的无线通信组件,或者其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以配置为根据诸如4g、4g-lte(长期演进)、lte高级、5g或类似标准的蜂窝通信标准来传输诸如经编码数据的数据。在输出接口108包括无线发射器的某些示例中,输出接口108和输入接口122可以配置为根据其他无线标准,诸如ieee 802.11规范、ieee 802.15规范(例如zigbee
tm
)、蓝牙
tm
标准等来传输诸如经编码数据的数据。在一些示例中,源设备102和/或目的地设备116可以包括各自的片上系统(soc)设备。例如,源设备102可以包括soc设备来执行归于g-pcc编码器200和/或输出接口108的功能,并且目的地设备116可以包括soc设备来执行归于g-pcc解码器300和/或输入接口122的功能。
57.本公开的技术可以应用于支持各种应用中的任何应用的编码和解码,诸如自主车辆之间的通信,扫描仪、相机、传感器和诸如本地或远程服务器的处理设备之间的通信,地理测绘,或其他应用。
58.在一些示例中,源设备102和/或目的地设备116是移动设备,诸如移动电话、增强现实(ar)设备或混合现实(mr)设备。在这些示例中,源设备102可以生成并编码点云,作为绘制源设备102的本地环境的过程的一部分。关于ar和mr示例,目的地设备116可以使用点云来生成基于源设备102的本地环境的虚拟环境。在一些示例中,源设备102和/或目的地设备116是陆地或海上运载工具、航天器或飞机。在这样的示例中,源设备102可以生成并编码点云,作为绘制源设备的环境的过程的一部分,例如,用于自主导航、坠机取证和其他目的。
59.目的地设备116的输入接口122从计算机可读介质110(例如通信介质、存储设备112、文件服务器114等)接收经编码比特流。经编码的比特流可以包括由g-pcc编码器200定义的、也由g-pcc解码器300使用的信令信息,诸如语法元素,该语法元素具有描述译码单元(例如条带(slice)、图片、图片组、序列等)的特性和/或处理的值。数据消费者118使用经解码的数据。例如,数据消费者118可以使用经解码的数据来确定物理对象的位置。在一些示例中,数据消费者118可以包括基于点云来呈现图像的显示器。例如,数据消费者118可以使用点云的点作为多边形的顶点,并且可以使用点云的点的颜色属性来对多边形着色。在该示例中,数据消费者118然后可以对多边形进行光栅化以基于着色多边形来呈现计算机生成的图像。
60.g-pcc编码器200和g-pcc解码器300可以各自实现为各种合适的编码器和/或解码器电路中的任何一种,诸如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或其任何组合。当该技术部分地在软件中实施时,设备可以将用于软件的指令存储在合适的非暂时计算机可读介质中,并使用一个或多个处理器在硬件中执行该指令来执行本公开的技术。g-pcc编码器200和g-pcc解码器300中的每一个可以被包括在一个或多个编码器或解码器中,这两者任一个都可以集成为各自设备中组合编码器/解码器(codec)的一部分。包括g-pcc编码器200和/或g-pcc解码器300的设备可以包括一个或多个集成电路、微处理器和/或其他类型的设备。
61.g-pcc编码器200和g-pcc解码器300可以根据译码标准操作,诸如视频点云压缩(v-pcc)标准或几何点云压缩(g-pcc)标准。本公开通常涉及图片的译码(例如编码和解码),以包括对数据进行编码或解码的过程。经编码的比特流一般包括对于表示译码决策(例如译码模式)的语法元素的一系列值。
62.一般地,本公开可以涉及“信令通知(signaling)”某些信息,诸如语法元素。术语“信令通知”通常可以指对于语法元素的值和/或用于对经编码的数据进行解码的其他数据的通信。也就是说,g-pcc编码器200可以信令通知比特流中的语法元素的值。一般地,信令通知是指在比特流中生成值。如上所述,源设备102可以基本上实时地(或非实时地,诸如可能在将语法元素存储到存储设备112以供稍后由目的地设备116取得时发生)将比特流传送到目的地设备116。
63.点云压缩活动分为两种不同的方法。第一种方法是“视频点云压缩”(v-pcc),它对3d对象进行分段,并将分段投影在多个2d平面(在2d帧中表示为“分块(patch)”)中,这些平面进一步由视频译码器(诸如高效视频编码(hevc)(itu-t h.265)译码器)进行译码。第二种方法是“基于几何的点云压缩”(g-pcc),它直接压缩三维几何(即点的集合在三维空间中的位置)以及相关联的属性值(对于与三维几何相关联的每个点)。g-pcc解决了第一类点云(类别1)(静态点云)和第三类(类别3)点云(动态获取点云)的压缩问题。g-pcc标准的最近草案可以在2020年1月,比利时布鲁塞尔,g-pcc dis,iso/iec jtc1/sc29/wg11 w19088(以下简称“w19088”)中获得,并且译码器的描述可以在2020年1月,比利时布鲁塞尔,g-pcc codec description v6,iso/iec jtc1/sc29/wg11 w19091(以下简称“w19091”)中获得。
64.点云包含三维空间中的点的集合,并且可以具有与这些点相关联的属性。属性可以是诸如r、g、b或y、cb、cr的颜色信息、或反射率信息或其他属性。点云可以由各种相机或传感器(诸如激光雷达传感器和3d扫描仪)来捕获,并且也可以是计算机生成的。点云数据被用于各种应用,包括但不限于建筑(建模)、图形(用于可视化和动画的3d模型)、汽车工业(用于帮助导航的激光雷达传感器),以及可以使用移动电话、平板电脑计算机或其他计算设备的其他应用。
65.点云数据所占用的3d空间可以由虚拟边界框封闭。边界框中的点的位置可以用一定的精度表示;因此,可以基于该精度来量化一个或多个点的位置。在最小的级别上,边界框被分成体素(voxel),体素是由单位立方体表示的最小空间单位。边界框中的体素可以与零个、一个或多个点相关联。边界框可以被拆分成多个立方体/长方体区域,这些区域可以被称为图块(tile)。每个图块可以被译码成一个或多个条带。将边界框拆分为条带和图块可以基于每个部分中的点的数量,或者基于其他考虑(例如,特定区域可以被译码为图块)。
可以使用类似于视频译码器中的拆分决策来进一步划分条带区域。
66.图2提供g-pcc编码器200的概述。图3提供g-pcc解码器300的概述。所示的模块是逻辑的,并不一定与g-pcc译码器的参考实现中的实现代码一一对应,即iso/iec mpeg(jtc 1/sc 29/wg11)研究的tmc13测试模型软件。
67.在g-pcc编码器200和g-pcc解码器300两者中,首先对点云位置进行译码。属性译码依赖于解码的几何图形。在图2和图3中,灰色阴影模块是通常用于类别1数据的选项。对角相交模块通常用于类别3数据。所有其他模块在类别1和类别3之间是通用的。
68.对于类别3数据,经压缩几何通常表示为八叉树,从根一直向下到各个体素的叶级别。对于类别1数据,经压缩几何通常由修剪(prune)的八叉树(即,从根向下到大于体素的块(block)的叶级别的八叉树)加上近似修剪的八叉树的每个叶内的表面的模型来表示。这样,类别1和类别3的数据都共享八叉树译码机制,而类别1的数据还可以用表面模型来近似每个叶内的体素。所使用的表面模型是三角划分(triangulation),其每个块包含1-10个三角形,得到三角形集合(triangle soup)。因此,类别1几何译码器被称为三角形集合几何译码器,而类别3几何译码器被称为八叉树几何译码器。
69.在八叉树的每个节点处,它的一个或多个子节点(最多八个节点)的占用(occupancy)被发信令通知(如果没有推断)。指定多个邻域,其包括(a)与当前八叉树节点共享面的节点,(b)与当前八叉树节点共享面、边或顶点的节点等。在每个邻域内,节点和/或其子节点的占用可以被用于预测当前节点或其子节点的占用。对于稀疏地填充在八叉树的某些节点中的点,译码器(例如,如由g-pcc编码器200和g-pcc解码器300实现的)还支持直接译码模式,其中点的3d位置被直接编码。一个标志(flag)可以被发信令通知以指示直接模式被发信令通知。在最低级别处,还可以对与八叉树节点/叶节点相关联的点的数量进行译码。
70.一旦几何被译码,对应于几何点的属性也被译码。当有多个属性点对应于一个经重建/解码的几何点时,可以导出代表该重建点的属性值。
71.g-pcc中有三种属性译码方法:区域自适应分层变换(raht)译码,基于内插的分层最近邻居预测(预测变换),以及具有更新/提升步骤的基于内插的分层最近邻居预测(提升变换)。raht和提升变换(lifting)通常用于类别1数据,而预测变换(predicting)通常用于类别3数据。然而,任何一种方法都可以用于任何数据,并且,与g-pcc中的几何译码器类似,用于对点云进行译码的属性译码方法在比特流中指定。
72.属性的译码可以在细节级别(lod)中进行,其中对于每一个细节级别,可以获得点云属性的更精细的表示。每个细节级别可以基于与相邻节点的距离度量或基于采样距离来指定。
73.在g-pcc编码器200处,作为用于属性的译码方法的输出而获得的残差被量化。可以使用上下文自适应算术译码来对经量化残差进行译码。为了将cabac编码应用于语法元素,g-pcc编码器200可以将语法元素的值二进制化以形成一系列的一个或多个比特,这些比特被称为“二进制数(bin)”。另外,g-pcc编码器200可以识别译码上下文。译码上下文可以识别二进制数具有特定值的概率。例如,译码上下文可以指示对0值的二进制数进行译码的0.7概率和对1值的二进制数进行译码的0.3概率。在识别译码上下文之后,g-pcc编码器200可以将间隔划分为较低子间隔和较高子间隔。这些子间隔中的一个子间隔可以与值0相
关联,而另一个子间隔可以与值1相关联。子间隔的宽度可以与由所识别的译码上下文为相关联的值指示的概率成比例。如果语法元素的二进制数具有与较低子间隔相关联的值,则经编码值可以等于较低子间隔的下边界。如果语法元素的相同二进制数具有与较高子间隔相关联的值,则经编码值可以等于较高子间隔的下边界。为了对语法元素的下一个二进制数进行编码,g-pcc编码器200可以按照间隔为与经编码比特的值相关联的子间隔的方式来重复这些步骤。当g-pcc编码器200对下一个二进制数重复这些步骤时,g-pcc编码器200可以使用基于由所识别的译码上下文指示的概率和所编码的二进制数的实际值而修改后的概率。
74.当g-pcc解码器300对语法元素的值执行cabac解码时,g-pcc解码器300可以识别译码上下文。然后g-pcc解码器300可以将间隔划分为较低子间隔和较高子间隔。这些子间隔中的一个子间隔可以与值0相关联,而另一个子间隔可以与值1相关联。子间隔的宽度可以与由所识别的译码上下文为相关联的值指示的概率成比例。如果经编码值在较低子间隔内,则g-pcc解码器300可以对具有与较低子间隔相关联的值的二进制数进行解码。如果经编码值在较高子间隔内,则g-pcc解码器300可以对具有与较高子间隔相关联的值的二进制数进行解码。为了对语法元素的下一个二进制数进行解码,g-pcc解码器300可以按照间隔为包含经编码值的子间隔的方式来重复这些步骤。当g-pcc解码器300对下一个二进制数重复这些步骤时,g-pcc解码器300可以使用基于由所识别的译码上下文指示的概率和经解码的二进制数而修改后的概率。然后g-pcc解码器300可以对二进制数进行解二进制化以恢复语法元素的值。
75.在图2的示例中,g-pcc编码器200可以包括坐标变换单元202、颜色变换单元204、体素化单元206、属性传递单元208、八叉树分析单元210、表面近似分析单元212、算术编码单元214、几何重建单元216、raht单元218、lod生成单元220、提升单元222、系数量化单元224和算术编码单元226。
76.如图2的示例所示,g-pcc编码器200可以接收点云中的点的位置集和属性集。g-pcc编码器200可以从数据源104(图1)获得点云中的点的位置集和属性集。位置可以包括点云中的点的坐标。属性可以包括关于点云中的点的信息,诸如与点云中的点相关联的颜色。g-pcc编码器200可以生成几何比特流203,其包括点云中的点的位置的经编码表示。g-pcc编码器200还可以生成属性比特流205,其包括属性集的经编码表示。
77.坐标变换单元202可以对点的坐标应用变换,以将坐标从初始域变换到变换域。本公开可以将经变换的坐标称为变换坐标。颜色变换单元204可以应用变换以便将属性的颜色信息变换到不同的域。例如,颜色变换单元204可以将颜色信息从rgb颜色空间变换到ycbcr颜色空间。
78.此外,在图2的示例中,体素化单元206可以对变换坐标进行体素化。变换坐标的体素化可以包括量化和移除点云的一些点。换句话说,点云的多个点可以被归入(subsum)到单个“体素”内,它们此后在某些方面可以被视为一个点。此外,八叉树分析单元210可以基于体素化变换坐标来生成八叉树。附加地,在图2的示例中,表面近似分析单元212可以分析点以潜在地确定点的集合的表面表示。算术编码单元214可以对语法元素进行熵编码,这些语法元素表示八叉树和/或由表面近似分析单元212确定的表面的信息。g-pcc编码器200可以在几何比特流203中输出这些语法元素。几何比特流203还可以包括其他语法元素,包括
未经算术编码的语法元素。
79.几何重建单元216可以基于八叉树、表示由表面近似分析单元212确定的表面的数据和/或其他信息来重建点云中的点的变换坐标。由于体素化和表面近似,由几何重建单元216重建的变换坐标的数量可以不同于点云的原始点数。本公开可以将得到的点称为重建点。属性传递单元208可以将点云的原始点的属性传递到点云的重建点。
80.此外,raht单元218可以对重建点的属性应用raht译码。可替代地或附加地,lod生成单元220和提升单元222可以分别对重建点的属性应用lod处理和提升。raht单元218和提升单元222可以基于属性生成系数。系数量化单元224可以量化由raht单元218或提升单元222生成的系数。算术编码单元226可以对表示经量化系数的语法元素应用算术译码。g-pcc编码器200可以在属性比特流205中输出这些语法元素。属性比特流205还可以包括其他语法元素,包括非算术编码的语法元素。
81.在图3的示例中,g-pcc解码器300可以包括几何算术解码单元302、属性算术解码单元304、八叉树合成单元306、逆量化单元308、表面近似合成单元310、几何重建单元312、raht单元314、lod生成单元316、逆提升单元318、逆变换坐标单元320和逆变换颜色单元322。
82.g-pcc解码器300可以获得几何比特流203和属性比特流205。解码器300的几何算术解码单元302可以对几何比特流中的语法元素应用算术解码(例如,上下文自适应二进制算术译码(cabac)或其他类型的算术解码)。类似地,属性算术解码单元304可以对属性比特流中的语法元素应用算术解码。
83.八叉树合成单元306可以基于从几何比特流解析出的语法元素来合成八叉树。在几何比特流中使用表面近似的情况下,表面近似合成单元310可以基于从几何比特流解析出的语法元素并且基于八叉树来确定表面模型。
84.此外,几何重建单元312可以执行重建以确定点云中的点的坐标。逆变换坐标单元320可以对重建坐标应用逆变换,以将点云中的点的重建坐标(位置)从变换域转换回初始域。
85.附加地,在图3的示例中,逆量化单元308可以对属性值进行逆量化。属性值可以基于从属性比特流获得的语法元素(例如,包括由属性算术解码单元304解码的语法元素)。
86.取决于如何对属性值进行编码,raht单元314可以执行raht译码以基于逆量化属性值来确定点云的点的颜色值。可替代地,lod生成单元316和逆提升单元318可以使用基于细节级别的技术来确定点云的点的颜色值。
87.此外,在图3的示例中,逆变换颜色单元322可以对颜色值应用逆颜色变换。逆颜色变换可以是由编码器200的颜色变换单元204应用的颜色变换的逆。例如,颜色变换单元204可以将颜色信息从rgb颜色空间变换到ycbcr颜色空间。相应的,逆颜色变换单元322可以将颜色信息从ycbcr颜色空间变换到rgb颜色空间。
88.示出图2和图3的各种单元以帮助理解由编码器200和解码器300执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能并预设在能够执行的操作上的电路。可编程电路是指可以被编程以执行各种任务并且在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使可编程电路以由软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令
(例如来接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。
89.在比利时布鲁塞尔举行的第129次mpeg会议上采用了角译码模式(即角模式)。以下描述基于原始mpeg贡献文档:2019年10月,瑞士日内瓦,iso/iec jtc1/sc29/wg11 mpeg/m50642,s
é
bastien lasserre、jonathan taquet的“[gpcc][ce 13.22 related]an improvement of the planar coding mode”;以及w19088。角译码模式可选地与平面模式一起使用(例如,如2019年7月,瑞典哥德堡,iso/iec jtc1/sc29/wg11 mpeg/m48906,s
é
bastien lasserre、david flynn的“[gpcc]planar mode in octree-based geometry coding”),并通过使用典型激光雷达传感器中感测激光束的位置和角度的知识来改进垂直(z)平面位置语法元素的译码(参见例如,2020年1月,比利时布鲁塞尔,iso/iec jtc1/sc29/wg11 mpeg/m51594,s
é
bastien lasserre、jonathan taquet的“[gpcc]ce 13.22 report on angular mode”)。
[0090]
图4是示出垂直方向上的示例平面占用的概念图。在图4的示例中,节点400被划分为八个子节点。子节点402可以被占用或未被占用。在图4的示例中,被占用的子节点被阴影化。当一个或多个子节点402a-402d被占用并且没有子节点402e-402h被占用时,g-pcc编码器200可以用0的值发信令通知平面位置(planeposition)语法元素,以指示所有被占用的子节点相邻于节点400的最小z坐标平面的正侧(即,增加z坐标的一侧)。当一个或多个子节点402e-402h被占用并且没有子节点402a-402d被占用时,g-pcc编码器200可以用1的值发信令通知平面位置(planeposition)语法元素,以指示所有被占用的子节点相邻于节点400的中点z坐标平面的正侧。以此方式,平面位置语法元素可以指示节点400中的平面模式的垂直面位置。
[0091]
此外,角译码模式可选地用于改进推断直接译码模式(idcm)中垂直z位置比特的译码(2020年1月,比利时布鲁塞尔,iso/iec jtc1/sc29/wg11 mpeg/m51594,s
é
bastien lasserre、jonathan taquet的“[gpcc]ce 13.22 report on angular mode”)。idcm是一种其中节点内的点的位置相对于节点内的点显式地(直接地)发信令通知的模式。在角译码模式中,点的位置可以相对于节点的原点来发信令通知。
[0092]
当基于诸如激光雷达系统之类的测距系统生成的数据来生成点云时,可以使用角译码模式。激光雷达系统可以包括相对于原点以不同的角度排列在垂直面中的激光器集合。激光雷达系统可以围绕垂直轴旋转。激光雷达系统可以使用返回的激光来确定点云中的点的距离和位置。激光雷达系统的激光器发出的激光束可以用参数集来特征化。
[0093]
下面描述w19088中用于角模式的传感器激光束参数的信令。在下面的表1中,使用《!》

《/!》标签指示了携带角译码模式可能需要以具有任何译码效率益处的激光雷达激光传感器信息的语法元素。在表1中,角模式语法元素用几何参数集中的《!》

《/!》标签来指示。
[0094]
表1
[0095][0096]
这些语法元素的语义在w19088中指定如下:
[0097]
geometry_planar_mode_flag等于1指示平面译码模式被激活。geometry_planar_mode_flag等于0指示平面译码模式未被激活。
[0098]
geom_planar_mode_th_idcm指定直接译码模式的激活阈值的值。geom_planar_mode_th_idcm是0到127(含127)范围内的整数。当不存在时,geom_planar_mode_th_idcm被推断为127。
[0099]
geom_planar_mode_th[i],对于在0

2范围内的i,指定了沿第i个最可能方向的平面译码模式的激活阈值的值以使平面译码模式有效。geom_planar_mode_th[i]是0

127范围内的整数。
[0100]
geometry_angular_mode_flag等于1指示角译码模式被激活。geometry_angular_mode_flag等于0指示角译码模式未被激活。
[0101]
lidar_head_position[ia],对于0

2范围内的ia,指定激光雷达头在与内轴相关联的坐标系中的第ia个坐标。当不存在时,lidar_head_position[ia]被推断为0。
[0102]
number_lasers指定被用于角译码模式的激光数量。当不存在时,number_lasers被推断为0。
[0103]
laser_angle[i],对于1

number_lasers范围内的i,指定第i个激光相对于由第0和第1个内轴定义的水平面的仰角的正切。
[0104]
laser_correction[i],对于1

number_lasers范围内的i,指定沿第2内轴的第i
激光位置相对于激光雷达头位置lidar_head_position[2]的校正。当不存在时,laser_correction[i]被推断为0。
[0105]
planar_buffer_disabled等于1指示在对平面模式中的平面模式标志和平面位置进行译码的过程中未使用利用缓冲区对最近的节点的跟踪。planar_buffer_disabled等于0指示使用了利用缓冲区对最近的节点的跟踪。当不存在时,planar_buffer_disabled被推断为0。
[0106]
implicit_qtbt_angular_max_node_min_dim_log2_to_split_z指定节点尺寸的log2值,低于该值的节点水平拆分优于垂直拆分。当不存在时,implicit_qtbt_angular_max_diff_to_split_z被推断为0。
[0107]
implicit_qtbt_angular_max_diff_to_split_z指定节点允许的最大垂直与水平节点尺寸比率的log2值。当不存在时,implicit_qtbt_angular_max_node_min_dim_log2_to_split_z被推断为0。
[0108]
只有八叉树中的一些节点才具有使用角模式进行译码的适格性。下面描述了在w19088中确定对于角模式的节点适格性的过程。该过程应用于子节点child,以确定子节点的角适格性angular_eligible[child]。在w19088中,语法元素geometry_angular_mode_flag指示角模式是否为激活的。如果geometry_angular_mode_flag等于0,则将angular_eligible[child]设置为等于0。否则,适用以下规定:
[0109]
midnodex=1《《(childnodesizexlog2-1)
[0110]
midnodey=1《《(childnodesizexlog2-1)
[0111]
xlidar=abs(((xnchild-lidar_head_position[0]+midnodex)《《8)

128)
[0112]
ylidar=abs(((ynchild-lidar_head_position[1]+midnodey)《《8)

128)
[0113]
rl1=(xlidar+ylidar)》》1
[0114]
deltaangler=deltaangle*rl1
[0115]
midnodez=1《《(childnodesizezlog2-1)
[0116]
if(deltaangler《=(midnodez《《26))
[0117]
angular_eligible[child]=0
[0118]
else
[0119]
angular_eligible[child]=1
[0120]
其中deltaangle是激光之间的最小角距离,由以下公式确定:
[0121]
deltaangle=min{|laser_angle[i]

laser_angle[j]|;0≤i《j《number_lasers}
[0122]
其中(xnchild,ynchild,znchild)指定几何八叉树子节点child在当前条带中的位置。
[0123]
w19088中描述的以下过程应用于子节点child,以确定与子节点相关联的idcm角适格性idcm4angular[child]和激光索引laserindex[child]。如果角适格性angular_eligible[child]等于0,则idcm4angular[child]被设置为0,并且laserindex[child]索引被设置为预先设置的值unknown_laser。否则,如果角适格性angular_eligible[child]等于1,则以下作为w19088的第8.2.5.1节所描述的过程的延续来应用。首先,确定子节点距离激光雷达径向距离的逆rinv:
[0124]
r2=xlidar*xlidar+ylidar*ylidar
[0125]
rinv=invsqrt(r2)
[0126]
然后,为子节点确定角度theta32:
[0127]
zlidar=((znchild-lidar_head_position[2]+midnodey)《《1)-1
[0128]
theta=zlidar*rinv
[0129]
theta32=theta》=0?theta》》15:-((-theta)》》15)
[0130]
rinv可以对应于子节点的径向距离的逆。角度theta32可以对应于子节点的中点的仰角的正切。最后,基于子节点的父节点parent,确定与子节点相关联的角适格性和激光,如下面的表2所示:
[0131]
表2
[0132][0133][0134]
用于平面模式的角模式增强的一种类型涉及用于平面译码模式的上下文contextangular的确定。具体地,以下过程应用于子节点child以确定与子节点关联的角上下文contextangular[child]。如果激光索引laserindex[child]等于unknown_laser,则contextangular[child]被设置为预先设置的值unknown_context。否则,如果激光索引laserindex[child]不等于unknown_laser,则以下内容作为w19088的第8.2.5.2节所描述过程的延续来应用。首先,确定相对于较低平面和较高平面的两个角差m和m。
[0135]
thetalaserdelta=laser_angle[laserindex[child]]-theta32
[0136]
hr=laser_correction[laserindex[child]]*rinv;
[0137]
thetalaserdelta+=hr》=0?-(hr》》17):((-hr)》》17)
[0138]
zshift=(rinv《《(childnodesizezlog2+1))》》17
[0139]
m=abs(thetalaserdelta-zshift)
[0140]
m=abs(thetalaserdelta+zshift)
[0141]
然后,从两个角差推导出角上下文:
[0142]
contextangular[child]=m》m?1:0
[0143]
diff=abs(m-m)
[0144]
if(diff》=rinv》》15)contextangular[child]+=2;
[0145]
if(diff》=rinv》》14)contextangular[child]+=2;
[0146]
if(diff》=rinv》》13)contextangular[child]+=2;
[0147]
if(diff》=rinv》》12)contextangular[child]+=2;
[0148]
术语thetalaserdelta可以是通过从激光束的角度的正切减去穿过节点的中心的线的角度的正切而确定的激光差角度。
[0149]
在w19088中描述的用于idcm的另一种类型的角模式增强涉及角上下文idcmidxangular的确定。具体地,如下描述确定用于对与属于经历推断直接译码模式的子节点的第i个点的第j个比特相关联的二进制数point_offset_z[i][j]进行译码的上下文idcmidxangular[i][j]的过程。
[0150]
在point_offset_x[i][]和point_offset_y[i][]被解码使得pointoffsetx[i]和pointoffsety[i]已知之后执行该过程。点i相对于激光雷达的x和y位置由以下公式导出:
[0151]
posxlidar[i]=xnchild-lidar_head_position[0]+pointoffsetx[i]
[0152]
posylidar[i]=ynchild-lidar_head_position[1]+pointoffsety[i]
[0153]
其中(xnchild,ynchild,znchild)指定几何八叉树子节点child在当前条带中的位置。
[0154]
该点与激光雷达的径向距离的逆rinv由以下确定:
[0155]
xlidar=(posxlidar[i]《《8)-128
[0156]
ylidar=(posylidar[i]《《8)-128
[0157]
r2=xlidar*xlidar+ylidar*ylidar
[0158]
rinv=invsqrt(r2)
[0159]
与子节点child相关联的激光的校正后的激光角thetalaser推导如下:
[0160]
hr=laser_correction[laserindex[child]]*rinv
[0161]
thetalaser=laser_angle[laserindex[child]]+(hr》=0?-(hr》》17):((-hr)》》17))
[0162]
假设对于0

j-1范围内的j2的比特point_offset_z[i][j2]是已知的,则该点已知属于虚拟垂直间隔,该间隔的一半尺寸由以下公式给出:
[0163]
halfintervalsize[j]=(1《《(effectivechildnodesizezlog2-1))》》j
[0164]
并且提供间隔下端的部分z点位置poszlidarpartial[i][j],由以下公式推导:
[0165]
pointoffsetzpartial=0
[0166]
for(j2=0;j2《j;j2++)
[0167]
pointoffsetzpartial[i]+=point_offset_z[i][j2]《《j2
[0168]
pointoffsetzpartial[i]《《=(effectivechildnodesizezlog2-j)
[0169]
poszlidarpartial[i][j]=znchild-lidar_head_position[2]+pointoffsetzpartial[i]
[0170]
相对于虚拟间隔中间的相对激光位置thetalaserdeltavirtualinterval通过以下方法计算:
[0171]
zlidar=((poszlidarpartial[i][j]+halfintervalsize[j])《《1)-1
[0172]
theta=zlidar*rinv
[0173]
theta32=theta》=0?theta》》15:-((-theta)》》15)
[0174]
thetalaserdeltavirtualinterval=thetalaser-theta32
[0175]
激光相对于虚拟间隔中的较低和较高z位置的两个绝对角差m和m被确定为:
[0176]
zshift=((rinv《《effectivechildnodesizezlog2)》》17)》》j
[0177]
m=abs(thetalaserdeltavirtualinterval-zshift);
[0178]
m=abs(thetalaserdeltavirtualinterval+zshift);
[0179]
然后,从两个绝对角差推导出角上下文:
[0180]
idcmidxangular[i][j]=m》m?1:0
[0181]
diff=abs(m-m)
[0182]
if(diff》=rinv》》15)idcmidxangular[i][j]+=2
[0183]
if(diff》=rinv》》14)idcmidxangular[i][j]+=2
[0184]
if(diff》=rinv》》13)idcmidxangular[i][j]+=2
[0185]
if(diff》=rinv》》12)idcmidxangular[i][j]+=2
[0186]
当idcm应用于子节点child时,子节点中第i个点的比特point_offset_z[i][j],对于范围0

effectivechildnodesizezlog2或范围1

effectivechildnodesizezlog2(如果第一比特是由平面位置plane_position[child][2]推断的),是应用以下过程而被解码的。如果geometry_angular_mode_flag等于0,则使用旁路解码过程对比特point_offset_z[i][j]进行解码。否则,如果geometry_angular_mode_flag等于1,则当未由平面位置推断时,对比特point_offset_z[i][0]进行旁路解码,并且使用对于j》0的上下文idcmidxangular[i][j]来对比特point_offset_z[i][j]进行解码。
[0187]
如上所述,用于对平面模式的垂直面位置进行译码和用于对idcm垂直面位置偏移进行译码的角上下文索引的确定涉及显著的复杂性。这种复杂性可能存在技术问题,因为复杂性可能增加硬件成本、减慢译码过程,和/或具有其他负面后果。例如,10个上下文被用于对平面模式的垂直面位置进行译码。在另一示例中,使用10个上下文对idcm的每个二进制数的垂直点位置偏移进行译码。在另一示例中,基于两个大整数值的比较的5个条件被用于确定每个上下文索引。在另一示例中,需要进行逆平方根距离计算(在上面的规范文本中为rinv)。在另一个示例中,number_lasers语法元素的信令从零值开始,而角模式至少需要一个激光。此外,在信令通知角模式语法元素中存在各种低效。
[0188]
本公开描述了可以解决这些技术问题中的一个或多个问题的技术。本文档中公开的技术和示例可以独立地或组合地应用。
[0189]
根据本公开的技术,减少了用于对平面模式的垂直面位置进行译码的上下文的数量。在以下描述中,激光、激光束、激光传感器或传感器或其他类似术语可以表示能返回距离测量和空间方位(包括潜在的时间指示)的任何传感器,例如典型的激光雷达传感器。
[0190]
g-pcc译码器(例如,g-pcc编码器200或g-pcc解码器300)可以通过从在诸如几何参数集的参数集中被发信令通知的激光候选集中选择激光索引来对节点中的平面模式的垂直面位置进行译码,所选择的激光索引指示与节点相交的激光束。激光束与节点的相交确定上下文索引,以对平面模式的垂直面位置进行算术译码。在下面的描述中,这个原理被
称为角模式译码。
[0191]
因此,在一些示例中,g-pcc译码器(例如,g-pcc编码器200或g-pcc解码器300)可以对表示点云中的点的三维位置的八叉树的节点中的平面模式的垂直面位置进行译码。为了便于解释,本公开可以将g-pcc译码器正在进行译码的节点称为当前节点。作为对平面模式的垂直面位置进行译码的一部分,g-pcc译码器可以确定激光候选集中的激光候选的激光索引。所确定的激光索引指示与当前节点相交的激光束。激光候选集可以包括激光雷达阵列中的每一个激光器。在一些示例中,激光候选集可以在诸如几何参数集的参数集中指示。附加地,作为对垂直平面位置进行译码的一部分,g-pcc译码器基于激光束与当前节点的相交来确定上下文索引。例如,g-pcc译码器可以基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引。此外,作为对垂直平面定位进行译码的一部分,g-pcc译码器使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术译码。
[0192]
可以存在适格性条件来确定当前节点中的平面模式的垂直面位置是否具有使用角模式来进行译码的适格性。如果垂直面位置不具有使用角模式进行译码的适格性,则可以在不使用传感器信息的情况下对平面模式的垂直面位置进行译码。在一些示例中,适格性条件可以确定是否只有一个激光束与当前节点相交。换句话说,如果只有一束激光束与当前节点相交,则当前节点的垂直面位置可以具有使用角模式来进行译码的适格性。在一些示例中,适格性条件可以确定候选激光集合当中的激光之间的最小角度差。换句话说,如果包络住当前节点的角度小于激光束之间的最小角度,则当前节点可以具有使用角模式来进行译码的适格性。包络住当前节点的角度是从激光原点测量的穿过节点的远底角的线与穿过节点的近顶角的线之间的角度。当包络住当前节点的角度小于激光束之间的最小角度差时,只有一束激光束与该节点相交。在一些示例中,适格性条件是使得垂直节点维度小于(或等于)最小角差。换句话说,如果节点的垂直维度小于或等于在当前节点的最接近激光原点的垂直边处由最小角度差所分开的激光束之间的垂直距离,则当前节点可以具有使用角模式进行译码的适格性。
[0193]
如上所述,g-pcc译码器可以选择与当前节点相交的激光束的激光索引。在一些示例中,g-pcc译码器可以通过选择最接近当前节点中的标记点的激光束来确定与当前节点相交的激光的索引。在某些示例中,当前节点中的标记点可以是当前节点的中心点,其坐标位于当前节点所有三个维度的一半(例如,立方体或长方体维度)处。在其他示例中,当前节点中的标记点可以是作为当前节点一部分的任何其他点,诸如节点内或节点侧面上、或节点边缘上或节点拐角上的任何点。
[0194]
g-pcc译码器可以基于比较候选激光的角度差来确定激光是否在标记点附近。例如,g-pcc译码器可以比较激光束的角度与标记点的角度之间的差异。激光束的角度可以定义为在水平面(z=0)与激光束的方向之间。标记点的角度可以定义为在水平面与虚拟光束到标记点的方向之间。在这种情况下,原点可以与传感器或激光器的中心同位置。可替代地,在一些示例中,在比较之前,可以将数学函数或诸如正切的三角函数应用于这些角度。
[0195]
在一些示例中,g-pcc译码器可以基于垂直坐标差的比较来确定激光是否在标记点附近。例如,g-pcc译码器可以比较标记点相对于传感器原点的垂直坐标(例如,标记点的z坐标)和激光与节点相交的垂直坐标。g-pcc译码器可以通过将水平面与激光方向之间的
角的正切乘以通过基于标记点的(x,y)坐标取欧几里得距离计算出的距离(三角学),来获得激光与节点相交的垂直坐标。
[0196]
在一些示例中,g-pcc译码器可以基于激光束和标记点的相对位置来确定用于对垂直面位置语法元素进行译码的上下文索引。例如,如果激光束在标记点之上,g-pcc译码器可以确定上下文索引是第一上下文索引,并且如果激光束在标记点之下,g-pcc译码器可以确定上下文索引是第二上下文索引。g-pcc译码器可以以与确定与节点相交的激光束索引类似的方式来确定激光束是在标记点之上还是之下,例如,通过比较角差、比较角值的正切差或比较垂直坐标差。
[0197]
在一些示例中,作为确定上下文索引的一部分,g-pcc译码器可以确定距离阈值。g-pcc译码器可以使用距离阈值来比较激光束与标记点之间的距离。距离阈值可以将当前节点内的距离范围划分为间隔。间隔可以是等长或不等长。如果激光束在由距离间隔确定的距离范围内,则这些间隔中的每个间隔可以对应于一个上下文索引。在一些示例中,有两个由标记点上方和下方的相等距离偏移确定的距离阈值,它们定义了对应于三个上下文索引的三个距离间隔。g-pcc译码器可以以与确定与节点相交的激光的激光束索引类似的方式,来确定激光束是否属于一个间隔(例如,通过比较角差、比较角值的正切差、或比较垂直坐标差)。
[0198]
采用传感器信息的上述原则不限于对节点内的平面模式的垂直(z)平面位置语法元素进行译码,但类似的原则也可以应用于对节点内的平面模式的x或y平面位置语法元素进行译码。如果平面模式的x或y平面位置模式更适合对节点内的点分布进行译码,则可以由编码器选择这些模式。例如,如果被占用的子节点都在面向x方向的平面的一侧,则可以使用x平面位置语法元素来对节点内的点分布进行译码。如果被占用的子节点都在面向y方向的平面的一侧,则可以使用y平面位置语法元素来对节点内的点分布进行译码。另外,在x、y或z方向上定向的两个或更多个平面的组合可以用于指示子节点的占用。
[0199]
g-pcc译码器可以基于激光束是在标记点之上还是之下(即,定位在标记点之上还是之下)来从两个上下文中确定上下文。在本示例中,标记点是节点的中心。这在图5中示出。更具体地,图5是根据本公开的一种或多种技术的示例的概念图,其中基于激光束位置500a、500b在节点504的标记点502之上或之下来确定上下文索引。因此,在图5的示例中,如果与节点504相交的激光在标记点502之上,如关于激光束位置500a所示,则g-pcc译码器选择第一上下文索引(例如,ctx=0)。在图5的示例中,标记点502位于节点504的中心。如果与节点504相交的激光低于标记点502,如关于激光束位置500b所示,则g-pcc译码器选择第二上下文索引(例如,ctx=1)。
[0200]
如上所讨论的,w19088描述了一种涉及确定用于平面译码模式的上下文contextangular的上下文确定方法。与此上下文确定方法相关联的w19088文本在下面的表3中再现。更具体地,表3显示了w19088的规范文本,用于从一组10个可能的上下文索引中确定一个上下文索引。w19088中提供的上下文确定方法基于大整数值的比较来评估五个条件,以确定范围0到9的上下文索引。这些比较用表3中的《!》

《/!》标签来指示。
[0201]
表3
[0202][0203]
在下面的表4中指定了本公开中提出的简化的两个上下文导出。更具体地,表4示出了提出了简化的两个上下文导出的示例。条件的数量减少到一个,用《!》

《/!》标签来指示。这个单一条件可能很容易实现,因为这个单一条件可以只检查整数值的符号。
[0204]
表4
[0205][0206]
在表4和本公开的其他地方,laserindex[child]是被确定为最接近节点“child”的中心点的激光束的索引;laser_angle指示被确定为最接近节点“child”的中心点的激光束的角度的正切;thetalaserdelta指示被确定为最接近节点“child”的中心点的激光束的角度的正切(theta32)与偏移校正之间的差;laser_correction指示激光校正因子;hr指示对应于垂直偏移校正相的角度的正切,contextangular指示上下文;并且theta32可以如本公开的其他地方所描述地被确定。操作thetalaserdelta+=hr》=0?-(hr》》17):((-hr)》》17)提供了精度调整。
[0207]
在一些示例中,g-pcc译码器基于激光束位于两个距离阈值之上或之下,或者在距离阈值之间来确定三个上下文。在本示例中,标记点是节点的中心。这在图6中示出。更具体
地,图6是示出根据本公开的一种或多种技术的节点600的示例三个上下文索引确定的概念图。在图6中,用细虚线602a、602b指示距离间隔阈值。激光束用实线604a、604b指示。这些激光束中的每一个都可以是激光候选。中心点606(标记点)用白色圆指示。因此,在图6的示例中,如果激光(诸如对应于线604a的激光)在线602a之上,则g-pcc译码器选择上下文索引ctx1。如果激光在线602a、602b之间,则g-pcc译码器可以选择上下文索引ctx0。如果激光(诸如对应于线604b的激光)在线602b之下,则g-pcc译码器可以选择上下文索引ctx2。
[0208]
下面的表5中提供了简化的规范文本。更具体地,表5示出了提出了简化的两个上下文导出。在本示例中,g-pcc译码器使用两个条件,这可能很容易实现,因为条件只检查整数值的符号。
[0209]
表5
[0210][0211]
在表5和本公开的其他地方,childnodesizezlog2是节点child的高度(z距离)的2的对数。deltatop可以是通过从激光差角度减去移位值来确定的顶角差。deltabottom可以是通过将移位值与激光差角度相加得到的底角差。术语zshift可以基于节点child的顶角和底角之间的角度,并且缩放到更小的间隔。
[0212]
在一些示例中,在使用角模式的情况下,g-pcc译码器使用四个上下文来对平面模式的垂直面位置进行译码。在这样的示例中,g-pcc译码器可以基于激光束在四个间隔内的位置来确定上下文索引。该示例在图7中示出。图7是示出利用细虚线分开的间隔、基于激光束位置(实心箭头)、用于对平面模式的垂直面位置(角模式)进行译码的示例上下文索引确定的概念图。在图7的示例中,线700a、700b和700c对应于距离间隔阈值。此外,在图7的示例中,标记点702位于节点704的中心。线706对应于与节点704相交的激光束。因为线706在线700a之上,因此g-pcc译码器可以选择上下文索引ctx2,用于对垂直面位置进行译码。
[0213]
下面的表6中指定了建议的简化四个上下文导出。条件的数量减少到三个,用《!》

《/!》标签来指示。这些条件可能很容易实现,因为它们只检查整数值的符号。表6示出了用于对平面模式的垂直面位置(角模式情况)进行译码的建议简化四个上下文导出的示例规范文本。
[0214]
表6
[0215][0216]
图8a是示出根据本公开的一种或多种技术的用于对垂直面位置进行编码的示例操作的流程图。g-pcc编码器200可以执行图8a的操作作为对点云进行编码的一部分。
[0217]
在图8a的示例中,g-pcc编码器200(例如,g-pcc编码器200(图2)的算术编码单元214)可以对树(例如八叉树)的节点中的平面模式的垂直面位置进行编码(800),该树表示由点云数据表示的点云中的点的三维位置。换句话说,g-pcc编码器200可以对垂直面位置进行编码。
[0218]
作为对平面模式的垂直面位置进行编码的一部分,g-pcc编码器200(例如,算术编码单元214)可以确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束(802)。g-pcc编码器200可以根据本公开中其他地方提供的任何示例来确定激光索引。例如,g-pcc编码器200可以如上表2所示地确定激光索引。
[0219]
附加地,g-pcc编码器200(例如,算数编码单元214)可以基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值,来确定上下文索引(contextangular)(804)。例如,在图7的示例中,g-pcc编码器200可以基于激光束是否高于第一距离阈值(对应于线700a)、是否在第一距离阈值与第二距离阈值(对应于线700b)之间、是否在第二距离阈值与第三距离阈值(对应于线700c)之间或是否低于第三距离阈值,来确定上下文索引。在一些示例中,为了确定激光束相对于第一、第二和第三距离阈值的位置,g-pcc编码器200可以通过从激光束的角度的正切减去穿过节点中心的线的角度的正切来确定激光差角度(例如,thetalaserdelta),通过从激光差角度减去移位值来确定顶角差(例如,deltatop);以及通过将移位值与激光差角度相加来确定底角差(例如deltabottom)。
[0220]
g-pcc编码器200可以执行确定激光差角度是否大于或等于0的第一比较(例如,thetalaserdelta》=0)。g-pcc编码器200可以基于激光差角度是否大于或等于0而将所述
上下文索引设置为0或1(例如,contextangular[child]=thetalaserdelta》=0?0:1)。附加地,g-pcc编码器200可以执行确定顶角差是否大于或等于0的第二比较(例如,deltatop》=0)。当顶角差大于或等于0时,激光束在第一距离阈值之上。g-pcc编码器200还可以执行确定底角差是否小于0的第三比较(例如,deltabottom《0)。当底角差小于0时,激光束在第三距离阈值以下。g-pcc编码器200可以在如下情况将上下文索引增加2:基于顶角差大于或等于0(例如,if(deltatop》=0)contextangular[child]+=2),或基于底角差小于0(例如,else if(deltabottom《0)contextangular[child]+=2)。
[0221]
g-pcc编码器200(例如,g-pcc编码器200的算术编码单元214)可以使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术编码(806)。例如,g-pcc编码器200可以对指示垂直面位置的语法元素执行cabac编码。
[0222]
图8b是示出根据本公开的一种或多种技术的用于对垂直面位置进行解码的示例操作的流程图。g-pcc解码器300可以执行图8b的操作作为重建由点云数据表示的点云的一部分。在图8b的示例中,g-pcc解码器300(例如,图3的几何算术解码单元302)可以对树(例如,八叉树)的节点中的平面模式的垂直面位置进行解码(850),该树表示点云中的点的三维位置。换句话说,g-pcc解码器300可以对垂直面位置进行解码。
[0223]
作为对平面模式的垂直面位置进行解码的一部分,g-pcc解码器300(例如,几何算术解码单元302)可以确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束(852)。g-pcc解码器300可以根据本公开中其他地方提供的任何示例来确定激光索引。例如,g-pcc解码器300可以如上表2所示地确定激光索引。
[0224]
附加地,g-pcc解码器300可以基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引(contextangular)(804)。如上所述,g-pcc解码器300可以以与g-pcc编码器200相同的方式来确定上下文索引。
[0225]
g-pcc解码器300(例如,g-pcc解码器300的几何算术解码单元302)可以使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术解码(806)。例如,g-pcc解码器300可以对指示垂直面位置的语法元素执行cabac解码。在一些示例中,g-pcc解码器300可以基于垂直面位置来确定点云中的一个或多个点的位置。例如,g-pcc解码器300可以基于垂直面位置来确定节点的被占用子节点的位置。然后,g-pcc解码器300可以处理被占用的子节点以确定被占用的子节点内的点的位置,并且可以不需要对未被占用的子节点执行进一步的处理。
[0226]
如上提到的,本公开的一种或多种技术可以减少用于对idcm垂直点位置偏移进行译码的上下文的数量。g-pcc译码器(例如,g-pcc编码器200或g-pcc解码器300)可以部分地通过从激光候选集中选择激光索引来对节点内的idcm的垂直点位置偏移进行译码(即,编码或解码)。可以在诸如几何参数集的参数集中发信令通知激光候选集,其中所选择的激光索引指示与该节点相交的激光束。激光候选集可以对应于激光雷达阵列中的激光器。g-pcc译码器可以基于激光束与节点的相交来确定上下文索引,以便对来自idcm的垂直点位置偏移的二进制数(比特)进行算术译码。
[0227]
因此,在一些示例中,g-pcc译码器(例如,g-pcc编码器200或g-pcc解码器300)可以对树(例如八叉树)的节点内的垂直点位置偏移进行译码,该树表示点云中的点的三维位
置。作为对垂直点位置偏移进行译码的一部分,g-pcc译码器可以确定激光候选集中的激光候选的激光索引。所确定的激光索引指示与节点相交的激光束。附加地,作为对垂直位置偏移进行译码的一部分,g-pcc译码器可以基于激光束与节点的相交来确定上下文索引。g-pcc译码器可以使用由所确定的上下文索引指示的上下文对垂直点位置偏移的二进制数进行算术译码。
[0228]
在一些示例中,可以存在可供g-pcc译码器用来确定节点是否适格于使用角模式来对idcm的垂直点位置偏移进行译码的适格性条件。如果垂直点位置偏移不具有使用角模式在节点中被译码的适格性,则g-pcc译码器可以在不采用传感器信息的情况下对idcm的垂直点位置偏移进行译码。在一些示例中,适格性条件可以确定是否只有一个激光与节点相交。换句话说,如果只有一个激光与节点相交,则g-pcc译码器可以确定垂直点偏移适格于使用角模式在节点中被译码。
[0229]
在一些示例中,适格性条件可以确定候选激光集合中的激光之间的最小角度差。换句话说,如果在激光候选集中的激光之间至少存在最小角度,则g-pcc译码器可以确定垂直点偏移适格于使用角度模式在节点中被译码。在一些示例中,适格性条件是使得垂直节点维度小于(或等于)最小角差。换句话说,如果垂直节点维度小于或等于最小角度差,则g-pcc译码器可以确定垂直点偏移适格于使用角模式在节点中被译码。换句话说,如果节点的垂直维度小于或等于在当前节点的最接近激光原点的垂直边处由最小角度差分开的激光束之间的垂直距离,则当前节点可以适格于使用角模式进行译码。
[0230]
在一些示例中,g-pcc译码器通过选择最接近节点中的标记点的激光束来确定与节点相交的激光的索引。节点中的标记点可以是节点的中心点,例如,坐标位于节点的所有三个维度(例如立方体或长方体维度)的一半处,或者是节点的一部分的任何其他点,诸如节点内、节点侧、节点边上或节点角上的任何点。
[0231]
g-pcc译码器可以基于角度差的比较来确定激光是否在标记点附近。例如,g-pcc译码器可以比较激光束的角度与标记点的角度之间的差异。激光束的角度可以定义为在水平面(z=0)与激光束的方向之间。标记点的角度可以定义为水平面与虚拟光束到标记点的方向之间的角度。在这种情况下,原点可以与传感器或激光器的中心同位置。可替代地,在比较之前,可以将数学函数或诸如正切函数的三角函数应用于这些角度。
[0232]
在一些示例中,g-pcc译码器可以基于垂直坐标差的比较来确定激光是否在标记点附近。例如,g-pcc译码器可以比较标记点相对于传感器原点的垂直坐标(例如,标记点的z坐标)和激光与节点相交的垂直坐标。g-pcc译码器可以通过将水平面与激光方向之间的角的正切乘以通过基于标记点的(x,y)坐标取欧几里得距离计算出的距离(三角学)来获得激光与节点相交的垂直坐标。
[0233]
在一些示例中,g-pcc译码器可以基于激光束相对于节点内对应于第j比特的垂直间隔的相对位置来确定上下文索引,以对节点内idcm的垂直点位置偏移的第j比特进行译码(例如,cabac译码)。垂直点位置偏移比特的编码或解码是按顺序进行的,诸如从最高有效比特(msb)到最低有效比特(lsb)。在垂直点位置偏移比特以msb到lsb的顺序进行译码的示例中,垂直点位置偏移的最大值以及因此也是msb由垂直节点尺寸的值来确定。
[0234]
如果激光束高于对应于第j比特的垂直间隔的中点,g-pcc译码器可以确定上下文索引是第一上下文索引。如果激光束低于中点,g-pcc译码器可以确定上下文索引是第二上
下文索引。g-pcc译码器可以以与确定与节点相交的激光束的激光束索引类似的方式来确定激光束是在中点之上还是之下,例如,通过比较角差、比较角值的正切差或比较垂直坐标差。
[0235]
g-pcc译码器可以确定距离阈值,并使用距离阈值来比较激光束与中点之间的距离,以便确定上下文索引。在一些示例中,距离阈值可以将节点内对应于第j比特的间隔范围划分为子间隔。子间隔可以是等长或不等长。如果激光束在由距离子间隔确定的距离范围内,则每个子间隔可以对应于一个上下文索引。在一些示例中,存在由中点上方和下方的相等距离偏移所确定的两个距离阈值。因此,在这样的示例中,可能存在对应于三个上下文索引的三个距离间隔。g-pcc译码器可以以与确定与节点相交的激光的激光束索引类似的方式(即,通过比较角差、比较角值的正切差、或比较垂直坐标差)来确定激光束是否属于一个子间隔。
[0236]
使用传感器信息的上述原则不限于对节点内的idcm的垂直(z)点位置偏移进行译码,但是类似的原则也可以应用于对节点内的x或y点位置偏移进行译码。
[0237]
在一些示例中,g-pcc译码器基于激光束位于间隔中的标记点之上或之下,来从两个上下文中确定上下文。在本示例中,中点是间隔的中心。这在图9中示出。更具体地,图9是用于基于激光束位置(实线)在用白色圆圈指示的间隔中点900之上或之下,来确定上下文索引(例如,ctx=0或ctx=1)的示例的概念图。
[0238]
如上所述,w19088描述了涉及角上下文idcmidxangular的确定的上下文确定方法。为了方便起见,w19088中的对应文本在下面的表7中再现。表7示出了用于确定用于对idcm垂直位置偏移二进制数进行译码的上下文索引的文本。如表7中示出的,g-pcc译码器评估五个条件以确定范围0到9的上下文索引。这五个条件是基于对大整数值的比较。在表7中,条件由《!》

《/!》标签指示。
[0239]
表7
[0240][0241]
在表7和本公开的其他地方,zlidar指示对应于正在进行译码的比特的当前间隔中的中点。poszlidarpartial[i][j]在正在对最高有效比特(即,比特0)进行译码时为0,在正在对比特1进行译码时等于halfintervalsize,并且每个后续比特的poszlidarpartial值等于前一比特的poszlidarpartial值的一半。halfintervalsize[j]和zlidar在上面定义。effectivechildnodesizezlog2指示垂直节点尺寸的2的对数。
[0242]
在下面的表8中指定了本公开中提出的简化的两个上下文导出。更具体地,表8示出了用于确定两个上下文索引的简化规范文本。条件的数量减少到一个,用《!》

《/!》标签来指示。这个单一条件可能很容易实现,因为这个单一条件可以只检查整数值的符号。
[0243]
表8
[0244][0245]
在一些示例中,g-pcc译码器基于激光束位于两个距离阈值之上或之下,或者在距离阈值之间来确定三个上下文。在本示例中,标记点是间隔的中心。这在图10中示出。更具体地,图10是示出对应于第j比特的示例idcm垂直点偏移间隔(1000)的概念图,其被划分为三个子间隔。在图10的示例中,激光束1002用实线示出,阈值用细虚线1004a、1004b示出,中点1006用白色圆圈表示。因为激光束1002在线1004a之上,所以g-pcc译码器可以选择上下文索引ctx1。
[0246]
下面的表9中指定了简化的规范文本。更具体地,下面的表9示出了三个上下文示例的简化规范文本。在本示例中,使用了两个条件,这可能很容易实现,因为条件只检查整数值的符号。条件用《!》

《/!》标签指示。
[0247]
表9
[0248][0249]
在一些示例中,在idcm情况下,g-pcc译码器基于激光束在相似间隔内的位置来从
四个上下文中确定上下文。这在图11的示例中示出。图11是示出用于基于由细虚线1104a、1104b、1104c指示的间隔内的激光束位置(实心箭头)1102来确定用于对idcm的垂直点位置偏移进行译码的上下文索引的示例技术的概念图。在图11的示例中,中点1106由白色圆圈指示。因为激光束1102在线1104a之上,所以g-pcc译码器可以选择上下文索引ctx2。
[0250]
下面的表10中指定了建议的简化四个上下文导出。条件的数量减少到三个,用《!》

《/!》标签来指示。这些条件可能很容易实现,因为它们只检查整数值的符号。表10包括用于对idcm垂直点位置偏移进行译码(角模式情况)的建议的简化四个上下文推导的规范文本。
[0251]
表10
[0252][0253][0254]
图12a是示出根据本公开的一种或多种技术的用于对idcm垂直点偏移进行编码的示例操作的流程图。在图12a的示例中,g-pcc编码器200(例如,g-pcc编码器200(图2)的算术编码单元214)可以对树(例如八叉树)的节点内的垂直点位置偏移进行编码(1200),该树表示由点云数据表示的点云中的点的三维位置。作为对垂直点位置偏移进行编码的一部分,g-pcc编码器200可以确定激光候选集中的激光候选的激光索引(1202)。所确定的激光索引指示与节点相交的激光束。g-pcc编码器200可以根据本公开中其他地方提供的任何示例来确定激光索引。例如,g-pcc编码器200可以如上表2中指示地确定激光索引。
[0255]
附加地,g-pcc编码器200(例如,算数编码单元214)可以基于激光束是否高于第一距离阈值(对应于线1104a)、是否在第一距离阈值与第二距离阈值(对应于线1104b)之间、是否在第二距离阈值与第三距离阈值(对应于线1104c)之间或是否低于第三距离阈值,来
pcc解码器300可以执行图12b的操作作为重建点云的一部分。作为重建点云的一个或多个点的一部分,g-pcc解码器300可以基于垂直点位置偏移来确定点云的一个或多个点的位置。例如,g-pcc解码器300可以将重建的点云中的点的垂直位置确定为垂直点位置偏移加上节点的原点的垂直位置。
[0262]
如上所述,number_lasers语法元素可以在诸如几何参数集的参数集中发信令通知。number_lasers语法元素指示用于角编码模式的激光数量。然而,根据本公开的一种或多种技术,可以将用于角编码模式的激光的数量作为number_lasers_minusl发信令通知(例如,在诸如几何参数集或其他语法头的参数集中),以便通过将值l加到发信令通知的number_lasers_minusl值来获得激光的数量。因此,在一些示例中,g-pcc译码器(例如,g-pcc编码器200或g-pcc解码器300)可以对具有第一值的语法元素进行编码,其中第一值加上第二值指示激光的数量,其中第二值是激光的最小数量。
[0263]
在一些示例中,值l等于1,因为角模式应该至少有一个激光才能在译码中有用,例如平面模式的平面位置或idcm的点位置偏移。number_lasers_minus1语法元素可以使用可变长度码(诸如k阶指数哥伦布码)或固定长度码在比特流中进行译码。在一些示例中,值l可以等于对于角模式在译码中有用所需的激光的最小数量。在一些示例中,number_lasers_minusl语法元素可以使用可变长度码(诸如k阶指数哥伦布码)或固定长度码在比特流中进行译码。
[0264]
几何参数集语法表的修改如下表11所示,修改后的文本用《!》

《/!》标签指示。更具体地,表11示出了几何参数集中number_of_lasers_minus1的信令通知。在表11中,《#》

《/#》标签表示与角模式相关的语法元素。
[0265]
表11
[0266][0267]
number_lasers_minus1语法元素的语义如下所示:
[0268]
number_lasers_minus1值加1指定用于角译码模式的激光的数量。当不存在时,number_lasers_minus1被推断为-1。
[0269]
在本公开的一些示例中,可以通过省略欧几里得距离计算的逆平方根来简化角模式。省略欧几里得距离计算的逆平方根的原则是基于如下计算角的正切的方程(三角学),如图13所示。图13是指示直角三角形1300的角和边的概念图。如图13所示,正切(角a的角度)=a/b=对边/邻边。
[0270]
在三维中更一般的情况是:如果角a有坐标(x0,y0,z0),而角b有坐标(x,y,z),那么正切如下给出:
[0271][0272]
通过对等式两边进行平方,可以消除逆平方根:
[0273]
(tan a)2[(x-x0)2+(y-y0)2]=(z-z0)2ꢀꢀꢀꢀꢀꢀꢀ
(等式1)
[0274]
在本公开中,基于上述原则,g-pcc译码器可以确定与当前节点相交的激光的索引(如果适格的话),和/或确定用于使用角模式对平面模式的垂直面位置进行译码的上下文索引。设z_marker为标记点相对于原点的垂直坐标,设tan_laser为候选激光束的方向与通过原点的水平面之间的夹角的正切。这两个值可能是正的,也可能是负的:z_marker_sign和tan_laser_sign(假设值+1或-1)。g-pcc译码器可以通过计算z_marker的平方(z2_
marker)和tan_laser的平方乘以欧几里得距离的平方(等式1)来确定相交激光索引,欧几里得距离确定激光垂直坐标的平方(z2_laser)。z_marker_sign*z2_marker和tan_laser_sign*z2_laser这两个量之间的最小(绝对值)增量值确定了与节点相交的激光的索引。可选地,近似的激光校正偏移z_correction_sign*z2_correction可以包括在增量计算中。g-pcc译码器可以通过检查上面的最小增量值(绝对值之前)的符号来确定上下文索引。正增量值映射到一个上下文索引,负增量值映射到第二上下文索引。可替代地,可以将增量值与子间隔进行比较(参见上面发明中的更多细节),以确定上下文索引,例如,在三个上下文的情况下。如果当前节点是适格的,则g-pcc译码器可以确定与当前节点相交的激光的索引,和/或确定用于使用角模式对idcm垂直点位置偏移进行译码的上下文索引。该确定在性质上与先前的确定相似(也见先前的发明)。
[0275]
采用传感器信息的上述原则不限于对节点内的平面模式的垂直(z)平面位置语法元素进行译码,但类似的原则也可以应用于对节点内的平面模式的x或y平面位置语法元素进行译码。
[0276]
如果平面模式的x或y平面位置模式更适合对节点内的点分布进行译码,则可以由g-pcc编码器200选择这些模式。还要理解的是使用传感器信息的上述原则不限于对节点内的idcm的垂直(z)点位置偏移进行译码,但是类似的原则也可以应用于对节点内的x或y点位置偏移进行译码。
[0277]
基于w19088的用于如上所指定地确定与当前节点相交的激光的激光索引的文本,在下面的表12中提供了该示例的规范文本变化。更具体地,下面的表12示出了在没有距离计算的逆平方根的情况下确定通过当前节点的激光索引的示例规范文本。
[0278]
表12
[0279]
[0280][0281]
如下在表13中所示,g-pcc译码器可以确定在节点中点上方或下方穿过节点的激光的上下文索引(contextangular)。
[0282]
表13
[0283][0284]
激光角度和激光偏移的信令通知
[0285]
对于每一个激光,对应的激光角度和激光偏移(相对于头部位置的激光位置)都被发信令通知(例如,用包含在《!》

《/!》标签中的文本指示),如下表14所指示的。
[0286]
表14
[0287][0288]
因此,在一些示例中,设备(例如,g-pcc编码器200或g-pcc解码器300)可以针对激光候选集中的每一个激光发信令通知对应的激光角度和对应的激光偏移。
[0289]
虽然在上面的语法描述中描述了激光角度和激光校正都用se(v)进行译码(即,左位在先的有符号整数0阶指数哥伦布译码),但软件描述与语法描述相比是不同的。一般地,在编码器输入配置中,激光角度和激光校正以浮点格式表示,并且这些值被缩放为整数,并添加偏移以将整数转换为正整数。正整数可以例如作为比特流的一部分被发信令通知,如下所示:
[0290][0291]
激光角度可以以排序格式排列,例如,这些角度随着阵列索引单调地增加或减少。如果不以这种格式排列,则输入的预处理可以在译码之前对角度进行排序。观察到激光角度彼此非常相似。在这种情况下,可以根据索引i-1的角度来预测阵列索引i的角度,并且只有差值可以被发信令通知,即可以应用增量译码。
[0292]
观察到特定激光的角度与其相邻激光非常相似。在这种情况下,可以从第(i-1)个激光的角度来预测第i个激光的角度,并且只有差值可以被发信令通知,即,可以将增量译码与se(v)译码一起应用。
[0293]
类似的增量译码也可以应用于激光校正,如下表15中所示。
[0294]
表15
[0295][0296]
在g-pcc解码器300处,激光角度[i]和laser_correction[i]可以分别从laser_angle_delta[i]和laser_correction_delta[i]导出,如下所示:
[0297][0298]
在一些示例中,如果激光角度被排序(单调地增加和减少),则laser_angle_delta[i](除了laser_angle_delta[0])可以作为无符号整数进行译码,因为增量要么全部为正,要么全部为负。
[0299]
因此,对于laser_angle_delta[0],使用se(v)译码(即,左位在先的有符号整数0阶指数哥伦布译码),而对于其他laser_angle_delta[i](i》0),使用ue(v)译码。laser_offset_deltas用se(v)进行译码,例如,如下表16所示。
[0300]
表16
[0301]
[0302][0303]
在另一个示例中,laser_angle_delta[i]和laser_correction_delta[i]可以用阶数为k的指数哥伦布码来进行译码。k可以是自适应的(基于增量值的量级),固定的和编码器可配置的,或者固定的和预定的。在另一示例中,增量译码可能仅适用于激光角度而不适用于激光校正。
[0304]
图14是示出可以与本公开的一种或多种技术一起使用的示例测距系统1400的概念图。在图14的示例中,测距系统1400包括照明器1402和传感器1404。照明器1402可以发出光1406。在一些示例中,照明器1402可以发出作为一个或多个激光束的光1406。光1406可以是一个或多个波长,诸如红外波长或可见光波长。在其他示例中,光1406不是相干的激光。当光1406遇到诸如对象1408的对象时,光1406产生返回光1410。返回光1410可以包括后向散射和/或反射光。返回光1410可以通过透镜1411,透镜1411引导返回光1410以在传感器1404上创建对象1408的图像1412。传感器1404基于图像1412生成信号1414。图像1412可以包括点集(例如,如由图14的图像1412中的点表示)。
[0305]
在一些示例中,照明器1402和传感器1404可以安装在旋转结构上,使得照明器1402和传感器1404捕获环境的360度视图。在其他示例中,测距系统1400可以包括一个或多个光学组件(例如,反射镜、准直器、衍射光栅等),其使照明器1402和传感器1404能够检测特定范围内(例如,高达360度)的对象范围。尽管图14的示例仅示出单个照明器1402和传感器1404,但测距系统1400可以包括多组照明器和传感器。
[0306]
在一些示例中,照明器1402生成结构光图案。在这些示例中,测距系统1400可以包括多个传感器1404,在这些传感器上形成结构光图案的相应图像。测距系统1400可以使用
结构光图案的图像之间的差异来确定到对象1408的距离,结构光图案是从该对象反向散射的。当对象1408相对靠近传感器1404(例如0.2米至2米)时,基于结构光的测距系统可以具有高水平的精度(例如,在亚毫米范围内的精度)。这种高精度水平可以用于面部识别应用,诸如解锁移动设备(例如,移动电话、平板计算机等)以及用于安全应用。
[0307]
在一些示例中,测距系统1400是基于飞行时间(tof)的系统。在测距系统1400是基于tof的系统的一些示例中,照明器1402生成光脉冲。换句话说,照明器1402可以调制发射光1406的振幅。在这些示例中,传感器1404从由照明器1402生成的光脉冲1406中检测返回光1410。然后,测距系统1400可以基于当光1406被发射和检测到之间的延迟以及空气中已知的光速来确定到光1406从其反向散射的对象1408的距离。在一些示例中,照明器1402可以调制发射光1404的相位,而代替于(或者附加于)调制发射光1404的振幅。在这些示例中,传感器1404可以检测来自对象1408的返回光1410的相位,并且使用光速并基于当照明器1402在特定相位处生成光1406时与当传感器1404在特定相位处检测到返回光1410时之间的时间差,来确定到对象1408上的点的距离。
[0308]
在其他示例中,可以在不使用照明器1402的情况下生成点云。例如,在一些示例中,测距系统1400的传感器1404可以包括两个或更多个光学相机。在这样的示例中,测距系统1400可以使用光学相机来捕获环境的立体图像(包括对象1408)。测距系统1400可以包括点云生成器1420,其可以计算立体图像中位置之间的差异。然后,测距系统1400可以使用该差异来确定到立体图像中所示位置的距离。根据这些距离,点云生成器1420可以生成点云。
[0309]
传感器1404还可以检测对象1408的其他属性,诸如颜色和反射率信息。在图14的示例中,点云生成器1416可以基于由传感器1404生成的信号1418来生成点云。测距系统1400和/或点云发生器1416可以形成数据源104(图1)的一部分。因此,根据本公开的任何技术,可以对由测距系统1400生成的点云进行编码和/或解码。
[0310]
图15是示出其中可以使用本公开的一种或多种技术的示例基于车辆的场景的概念图。在图15的示例中,车辆1500包括测距系统1502。可以以关于图14讨论的方式来实现测距系统1502。尽管未在图15的示例中示出,但车辆1500还可以包括数据源(诸如数据源104(图1))和g-pcc编码器(诸如g-pcc编码器200(图1))。在图15的示例中,测距系统1502发出激光束1504,激光束1504从行人1506或道路中的其他对象反射。车辆1500的数据源可以基于由测距系统1502生成的信号来生成点云。车辆1500的g-pcc编码器可以对点云进行编码以生成比特流1508,诸如几何比特流203(图2)和属性比特流205(图2)。比特流1508可以包括比g-pcc编码器获得的未编码点云少得多的比特。
[0311]
车辆1500的输出接口(例如,输出接口108(图1))可以将比特流1508发送到一个或多个其他设备。比特流1508可以包括比g-pcc编码器获得的未编码点云少得多的比特。因此,车辆1500能够比未编码点云数据更快地将比特流1508发送到其他设备。附加地,比特流1508可能需要较少的数据存储容量。本公开的技术还可以减少比特流1508中的比特数量。例如,基于激光束与节点的相交来确定上下文索引,并使用由上下文索引指示的上下文对垂直面位置或垂直面位置偏移进行算术译码,可以进一步减少比特流1508中的比特数量。
[0312]
在图15的示例中,车辆1500可以向另一车辆1510发送比特流1508。车辆1510可以包括g-pcc解码器(诸如g-pcc解码器300(图1))。车辆1510的g-pcc解码器可以对比特流1508进行解码以重建点云。车辆1510可以将重建的点云用于各种目的。例如,车辆1510可以
基于重建的点云来确定行人1506在车辆1500之前的道路中,并且因此例如在车辆1510的驾驶员意识到行人1506在道路中之前就开始减速。因此,在一些示例中,车辆1510可以基于重建的点云来执行自主导航操作。
[0313]
附加地或可替代地,车辆1500可以向服务器系统1512发送比特流1508。服务器系统1512可将比特流1508用于各种目的。例如,服务器系统1512可以存储比特流1508,用于点云的后续重建。在该示例中,服务器系统1512可以使用点云以及其他数据(例如,由车辆1500生成的车辆遥测数据)来训练自主驾驶系统。在其他示例中,服务器系统1512可以存储比特流1508,用于随后法医碰撞调查的重建(例如,如果车辆1500与行人碰撞1506)。
[0314]
图16是示出其中可以使用本公开的一种或多种技术的示例扩展现实系统的概念图。扩展现实(xr)是一个术语,用于涵盖一系列技术,包括增强现实(ar)、混合现实(mr)和虚拟现实(vr)。在图16的示例中,用户1600位于第一位置1602。用户1600佩戴xr头盔(headset)1604。作为xr头盔1604的替代方案,用户1600可以使用移动设备(例如,移动电话、平板计算机等)。xr头盔1604包括深度检测传感器(诸如测距系统),其检测在位置1602处的对象1606上的点的位置。xr头盔1604的数据源可以使用由深度检测传感器生成的信号来生成位置1602处的对象1606的点云表示。xr头盔1604可以包括g-pcc编码器(例如,图1的g-pcc编码器200),其被配置为对点云进行编码以生成比特流1608。
[0315]
xr头盔1604可以向用户1612在第二位置1614处佩戴的xr头盔1610发送比特流1608(例如,经由诸如因特网的网络)。xr头盔1610可以对比特流1608进行解码以重建点云。xr头盔1610可以使用点云来生成表示位置1602处的对象1606的xr可视化(例如,ar、mr、vr可视化)。因此,在一些示例中,例如当xr头盔1610生成vr可视化时,用户1612可以具有位置1602的3d沉浸式体验。在一些示例中,xr头盔1610可以基于重建的点云来确定虚拟对象的位置。例如,xr头盔1610可以基于重建的点云来确定环境(例如,位置1602)包括平坦表面,然后确定虚拟对象(例如,卡通人物)将被定位在该平坦表面上。xr头盔1610可以生成xr可视化,其中虚拟对象位于所确定的位置。例如,xr头盔1610可以示出坐在平坦表面上的卡通人物。
[0316]
本公开的技术还可以减少比特流1608中的比特数量。例如,基于激光束与节点的相交来确定上下文索引,并使用由上下文索引指示的上下文对垂直面位置或垂直面位置偏移进行算术译码,可以进一步减少比特流1608中的比特数量。
[0317]
图17是示出其中可以使用本公开的一种或多种技术的示例移动设备系统的概念图。在图17的示例中,诸如移动电话或平板计算机的移动设备1700包括诸如激光雷达系统的测距系统,其检测移动设备1700的环境中的对象1702上的点的位置。移动设备1700的数据源可以使用由深度检测传感器生成的信号来生成对象1702的点云表示。移动设备1700可以包括g-pcc编码器(例如,图1的g-pcc编码器200),其被配置为对点云进行编码以生成比特流1704。在图17的示例中,移动设备1700可以向远程设备1706(诸如服务器系统或其他移动设备)发送比特流。远程设备1706可以对比特流1704进行解码以重建点云。远程设备1706可以将点云用于各种目的。例如,远程设备1706可以使用点云来生成移动设备1700的环境的地图。例如,远程设备1706可以基于重建的点云来生成建筑物内部的地图。在另一示例中,远程设备1706可以基于点云来生成图像(例如,计算机图形)。例如,远程设备1706可以使用点云的点作为多边形的顶点,并且使用点的颜色属性作为对多边形着色的基础。在一
些示例中,远程设备1706可以将重建的点云用于面部识别或其他安全应用。
[0318]
本公开的技术还可以减少比特流1704中的比特数量。例如,基于激光束与节点的相交来确定上下文索引,并使用由上下文索引指示的上下文对垂直面位置或垂直面位置偏移进行算术译码,可以进一步减少比特流1704中的比特数量。
[0319]
本公开的各个方面中的示例可以单独使用或以任何组合使用。
[0320]
以下是可以根据本公开的一种或多种技术的方面的非限制性列表。
[0321]
方面1a:一种处理点云的方法,包括对八叉树的节点中的平面模式的垂直面位置进行译码,该八叉树表示点云中的点的三维位置,其中对平面模式的垂直面位置进行译码包括:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与该节点相交的激光束的位置;基于该激光束与该节点的相交来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对平面模式的垂直面位置进行算术译码。
[0322]
方面2a:根据方面1a的方法,其中确定上下文索引包括基于激光束是位于标记点之上还是之下来确定上下文索引,其中标记点是节点的中心。
[0323]
方面3a:根据方面1a的方法,其中确定上下文索引包括基于激光束是位于第一距离阈值之上、位于第二距离阈值之下、还是位于第一与第二距离阈值之间来确定上下文索引。
[0324]
方面4a:根据方面1a的方法,其中确定上下文索引包括基于激光束是被放置为高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引。
[0325]
方面5a:一种处理点云的方法包括:对八叉树的节点内的垂直点位置偏移进行译码,该树表示点云中的点的三维位置,其中对垂直点位置偏移进行译码包括:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与该节点相交的激光束的位置;基于激光束与节点的相交来确定上下文索引;以及使用由所确定的上下文索引指示的上下文对垂直点位置偏移的二进制数进行算术译码。
[0326]
方面6a:根据方面5a的方法,其中确定上下文索引包括基于激光束是位于标记点之上还是之下来确定上下文索引,其中标记点是节点的中心。
[0327]
方面7a:根据方面5a的方法,其中确定上下文索引包括基于激光束是位于第一距离阈值之上、位于第二距离阈值之下、还是位于第一与第二距离阈值之间来确定上下文索引。
[0328]
方面8a:根据方面5a的方法,其中确定上下文索引包括基于激光束是被放置为高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引。
[0329]
方面9a:一种处理点云的方法包括:对具有第一值的语法元素进行译码,其中第一值加上第二值指示激光的数量,其中第二值是激光的最小数量。
[0330]
方面10a:根据方面9a的方法,其中该语法元素是第一语法元素,该方法还包括:确定激光候选集中的激光候选的激光索引,其中激光候选集具有该数量的激光,并且所确定的激光索引指示与八叉树的节点相交的激光束的位置,该八叉树表示点云中的点的三维位置;基于激光束与节点的相交来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对第二语法元素的二进制数进行算术译码。
[0331]
方面11a:一种处理点云的方法包括:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与八叉树的节点相交的激光束的位置,该八叉树表示点云中的点的三维位置;使用角模式基于激光束与节点的相交来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对第二语法元素的二进制数进行算术译码。
[0332]
方面12a:一种处理点云的方法包括:针对激光候选集中的每个激光发信令通知对应的激光角度和对应的激光偏移。
[0333]
方面13a:根据方面12a的方法,还包括方面1a-方面11a的任一项的方法。
[0334]
方面14a:根据方面1a-方面13a的任一项的方法,还包括生成点云。
[0335]
方面15a:一种用于处理点云的设备,该设备包括用于执行方面1a-方面14a的任一项的方法的一个或多个部件。
[0336]
方面16a:根据方面15a的设备,其中一个或多个部件包括在电路中实现的一个或多个处理器。
[0337]
方面17a:根据方面15a或方面16a的任一项的设备,还包括存储器,用于存储表示点云的数据。
[0338]
方面18a:根据方面15a-方面17a的任一项的设备,其中该设备包括解码器。
[0339]
方面19a:根据方面15a-方面18a的任一项的设备,其中该设备包括编码器。
[0340]
方面20a:根据方面15a-方面19a的任一项的设备,还包括用于生成点云的设备。
[0341]
方面21a:根据方面15a-方面20a的任一项的设备,还包括显示器,用于呈现基于点云的图像。
[0342]
方面22a:一种在其上存储有指令的计算机可读存储介质,该指令在执行时使一个或多个处理器执行方面1a-方面14a的任一项的方法。
[0343]
方面1b:一种用于对点云数据进行解码的设备,包括:用于存储点云数据的存储器;以及耦合到该存储器并且实现在电路中的一个或多个处理器,该一个或多个处理器被配置为:获得包括指示树的节点内的垂直点位置偏移的经算术编码语法元素的比特流,该树表示点云数据所表示的点云中的点的三维位置;以及对该垂直点位置偏移进行解码,其中该一个或多个处理器被配置为使得作为对垂直点位置偏移进行解码的一部分,该一个或多个处理器:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术解码。
[0344]
方面2b:根据方面1b的设备,其中一个或多个处理器被配置为,作为确定上下文索引的一部分:通过从对应于垂直点位置偏移的二进制数的间隔的角度的正切减去穿过节点的中点的线的角度的正切来确定该间隔的激光差角度;通过从该间隔的激光差角度减去移位值来确定顶角差;以及通过将移位值与该间隔的激光差角度相加来确定底角差。
[0345]
方面3b:根据方面2b的设备,其中一个或多个处理器被配置为,作为确定上下文索引的一部分:执行确定间隔的激光差角度是否大于或等于0的第一比较;基于间隔的激光差角度是否大于或等于0而将上下文索引设置为0或1;执行确定顶角差是否大于或等于0的第二比较,其中当顶角差大于或等于0时,激光束高于第一距离阈值;执行确定底角差是否小于0的第三比较,其中当底角差小于0时,激光束低于第三距离阈值;以及基于顶角差大于或
等于0或基于底角差小于0而将上下文索引递增2。
[0346]
方面4b:根据方面1b至方面3b的任一项的设备,其中一个或多个处理器还被配置为重建点云,并且其中一个或多个处理器被配置为,作为重建点云的一部分,基于垂直点位置偏移来确定点云的一个或多个点的位置。
[0347]
方面5b:根据方面4b的设备,其中一个或多个处理器还被配置为基于重建的点云来生成建筑物内部的地图。
[0348]
方面6b:根据方面4b和方面5b的任一项的设备,其中一个或多个处理器还被配置为基于重建的点云来执行自主导航操作。
[0349]
方面7b:根据方面4b至方面6b的任一项的设备,其中一个或多个处理器还被配置为基于重建的点云来生成计算机图形。
[0350]
方面8b:根据方面4b至方面7b的任一项的设备,其中一个或多个处理器被配置为:基于重建的点云来确定虚拟对象的位置;以及生成虚拟对象在其中位于所确定的位置的扩展现实(xr)可视化。
[0351]
方面9b:根据方面1b至方面8b的任一项的设备,其中设备是移动电话或平板电脑之一。
[0352]
方面10b:根据方面1b至方面9b的任一项的设备,其中设备是车辆。
[0353]
方面11b:根据方面1b至方面10b的任一项的设备,其中设备是扩展现实设备。
[0354]
方面12b:根据方面1b至方面11b的任一项的设备,还包括显示器,用于呈现基于点云的图像。
[0355]
方面13b:一种用于对点云数据进行编码的设备,包括:用于存储点云数据的存储器;以及耦合到该存储器并且实现在电路中的一个或多个处理器,该一个或多个处理器被配置为:对树的节点内的垂直点位置偏移进行编码,该树表示由点云数据表示的点云中的点的三维位置,其中该一个或多个处理器被配置为作为对垂直点位置偏移进行编码的一部分:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术编码。
[0356]
方面14b:根据方面13b的设备,其中一个或多个处理器被配置为,作为确定上下文索引的一部分:通过从对应于垂直点位置偏移的二进制数的间隔的角度的正切减去穿过节点的中点的线的角度的正切来确定该间隔的激光差角度;通过从该间隔的激光差角度减去移位值来确定顶角差;以及通过将移位值与该间隔的激光差角度相加来确定底角差。
[0357]
方面15b:根据方面14b的设备,其中一个或多个处理器被配置为,作为确定上下文索引的一部分:执行确定间隔的激光差角度是否大于或等于0的第一比较;基于间隔的激光差角度是否大于或等于0而将上下文索引设置为0或1;执行确定顶角差是否大于或等于0的第二比较,其中当顶角差大于或等于0时,激光束高于第一距离阈值;执行确定底角差是否小于0的第三比较,其中当底角差小于0时,激光束低于第三距离阈值;以及基于顶角差大于或等于0或基于底角差小于0而将上下文索引递增2。
[0358]
方面16b:根据方面13b至方面15b的任一项的设备,其中一个或多个处理器还被配置为生成点云。
[0359]
方面17b:根据方面16b的设备,其中一个或多个处理器被配置为,作为生成点云的一部分,基于来自激光雷达装置的信号来生成点云。
[0360]
方面18b:根据方面13b至方面17b的任一项的设备,其中设备是移动电话或平板电脑之一。
[0361]
方面19b:根据方面13b至方面18b的任一项的设备,其中设备是车辆。
[0362]
方面20b:根据方面13b至方面19b的任一项的设备,其中设备是扩展现实设备。
[0363]
方面21b:根据方面13b至方面20b的任一项的设备,其中设备包括被配置为发送编码点云数据的接口。
[0364]
方面22b:根据方面13b至方面22b的任一项的设备,还包括显示器,用于呈现基于点云的图像。
[0365]
方面23b:一种对点云数据进行解码的方法,包括:获得包括指示树的节点内的垂直点位置偏移的经算术编码语法元素的比特流,该树表示点云数据所表示的点云中的点的三维位置;以及对该垂直点位置偏移进行解码,其中对垂直点位置偏移进行解码包括:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术解码。
[0366]
方面24b:根据方面23b的方法,其中确定上下文索引包括:通过从对应于垂直点位置偏移的二进制数的间隔的角度的正切减去穿过节点的中点的线的角度的正切来确定该间隔的激光差角度;通过从该间隔的激光差角度减去移位值来确定顶角差;以及通过将移位值与该间隔的激光差角度相加来确定底角差。
[0367]
方面25b:根据方面24b的方法,确定上下文索引包括:执行确定间隔的激光差角度是否大于或等于0的第一比较;基于间隔的激光差角度是否大于或等于0而将上下文索引设置为0或1;执行确定顶角差是否大于或等于0的第二比较,其中当顶角差大于或等于0时,激光束高于第一距离阈值;执行确定底角差是否小于0的第三比较,其中当底角差小于0时,激光束低于第三距离阈值;以及基于顶角差大于或等于0或基于底角差小于0而将上下文索引递增2。
[0368]
方面26b:一种对点云数据进行编码的方法,包括:对树的节点内的垂直点位置偏移进行编码,该树表示由点云数据表示的点云中的点的三维位置,其中对垂直点位置偏移进行编码包括:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术编码。
[0369]
方面27b:根据方面26b的方法,其中确定上下文索引包括:通过从对应于垂直点位置偏移的二进制数的间隔的角度的正切减去穿过节点的中点的线的角度的正切来确定该间隔的激光差角度;通过从该间隔的激光差角度减去移位值来确定顶角差;以及通过将移位值与该间隔的激光差角度相加来确定底角差。
[0370]
方面28b:根据方面27b的方法,其中一个或多个处理器被配置为,作为确定上下文索引的一部分:执行确定间隔的激光差角度是否大于或等于0的第一比较;基于间隔的激光
差角度是否大于或等于0而将上下文索引设置为0或1;执行确定顶角差是否大于或等于0的第二比较,其中当顶角差大于或等于0时,激光束高于第一距离阈值;执行确定底角差是否小于0的第三比较,其中当底角差小于0时,激光束低于第三距离阈值;以及基于顶角差大于或等于0或基于底角差小于0而将上下文索引递增2。
[0371]
方面29b:根据方面26b至方面28b的任一项的方法,还包括生成点云。
[0372]
方面30b:一种用于对点云数据进行解码的设备,包括:用于获得包括指示树的节点内的垂直点位置偏移的经算术编码语法元素的比特流的部件,该树表示点云数据所表示的点云中的点的三维位置;以及用于对该垂直点位置偏移进行解码的部件,其中用于对垂直点位置偏移进行解码的部件包括:用于确定激光候选集中的激光候选的激光索引的部件,其中所确定的激光索引指示与节点相交的激光束;用于基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引的部件;以及用于使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术解码的部件。
[0373]
方面31b:一种用于对点云数据进行编码的设备,包括:用于对树的节点内的垂直点位置偏移进行编码的部件,该树表示由点云数据表示的点云中的点的三维位置,其中用于对垂直点位置偏移进行编码的部件包括:用于确定激光候选集中的激光候选的激光索引的部件,其中所确定的激光索引指示与节点相交的激光束;用于基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引的部件;以及用于使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术编码的部件。
[0374]
方面32b:一种其上存储有指令的计算机可读存储介质,指令在执行时使一个或多个处理器:获得包括指示点云中的点的三维位置的树的节点内的垂直点位置偏移的经算术编码语法元素的比特流;以及对该垂直点位置偏移进行解码,其中用于使一个或多个处理器对垂直点位置偏移进行解码的指令包括以下指令,其在执行时使一个或多个处理器:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术解码。
[0375]
方面33b:一种其上存储有指令的计算机可读存储介质,指令在执行时使一个或多个处理器:对表示点云中的点的三维位置的树的节点内的垂直点位置偏移进行编码,其中用于使一个或多个处理器对垂直点位置偏移进行编码的指令包括以下指令,其在执行时使一个或多个处理器:确定激光候选集中的激光候选的激光索引,其中所确定的激光索引指示与节点相交的激光束;基于激光束是高于第一距离阈值、在第一距离阈值与第二距离阈值之间、在第二距离阈值与第三距离阈值之间、还是低于第三距离阈值来确定上下文索引;以及使用由所确定的上下文索引指示的上下文来对垂直点位置偏移的二进制数进行算术编码。
[0376]
应该认识到,根据示例,本文中描述的任何技术的某些动作或事件可以以不同的序列执行,可以被一起添加、合并或省去(例如,不是所有描述的动作或事件是技术实践所必须的)。此外,在某些示例中,动作或事件可以,例如通过多线程处理、中断处理或多个处
理器并发地执行而不是顺序地执行。
[0377]
在一个或多个示例中,可以在硬件、软件、固件或其任意组合中来实现所描述的功能。如果在软件中实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质之类的有形介质,或者通信介质,包括例如根据通信协议来促进将计算机程序从一个地方转移到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波之类的通信介质。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以取得指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。
[0378]
作为示例而非限制,这种计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁性存储设备、闪存或可以用于以指令或数据结构形式存储所需程序代码并且可以由计算机访问的任何其他介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)或无线技术(诸如红外、无线电和微波)从网站、服务器或其他远程源发送指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、dsl或无线技术(诸如红外、无线电和微波)。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时性介质,而是针对非暂时性有形存储介质。如本文使用的,磁盘和光盘包括压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)、软盘和蓝光光盘,其中,磁盘通常以磁性方式重现数据,而光盘用激光光学地重现数据。上述的组合也应包括在计算机可读介质的范围内。
[0379]
指令可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其他等效集成的或分立逻辑电路。因此,如本技术中所使用的术语“处理器”和“处理电路”可以是指任何前述结构或适合于实现本技术中描述的技术的任何其他结构。另外,在一些方面,本技术中描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或合并在组合译码器中。同样,该技术可以在一个或多个电路或逻辑元件中完全实现。
[0380]
本公开的技术可以在包括无线手机、集成电路(ic)或一组ic(例如,芯片集)的多种设备或装置中实现。在本公开中描述各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同硬件单元来实现。相反,如上所述,各种单元可以组合在译码器硬件单元中,或者由互操作硬件单元的集合来提供,包括与合适的软件和/或固件结合的如上所述的一个或多个处理器。
[0381]
已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1