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

基于几何的点云压缩中的角模式和方位角模式的激光角度译码的制作方法

2022-11-09 22:05:19 来源:中国专利 TAG:

基于几何的点云压缩中的角模式和方位角模式的激光角度译码
1.本技术要求于2021年4月7日提交的美国专利申请17/224,551、2020年4月8日提交的美国临时专利申请63/007,282、2020年4月14日提交的美国临时专利申请63/009,940,以及2020年6月9日提交的美国临时专利申请63/036,799的优先权,上述中的每个专利申请的全部内容通过引用并入本文。
技术领域
2.本公开涉及点云编码(encoding)和解码(decoding)。


背景技术:

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


技术实现要素:

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

laser_angle[j]|;0≤i《j《number_lasers}
[0100]
其中(xnchild,ynchild,znchild)指定几何八叉树子节点child在当前条带中的位置。
[0101]
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:
[0102]
r2=xlidar*xlidar ylidar*ylidar
[0103]
rinv=invsqrt(r2)
[0104]
然后,为子节点确定角度theta32:
[0105]
zlidar=((znchild-lidar_head_position[2] midnodey)《《1)-1
[0106]
theta=zlidar*rinv
[0107]
theta32=theta》=0?theta》》15:-((-theta)》》15)
[0108]
最后,基于子节点的父节点parent,确定与子节点相关联的角适格性和激光,如下
面的表3所示:
[0109]
表3
[0110][0111]
下面描述w19088中用于角模式的传感器激光束参数的译码。在下面的表4中,使用《!》

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

《/!》标签来指示。
[0112]
表4-w19088中的几何参数集语法。
[0113][0114]
[0115]
这些语法元素的语义在w19088中指定如下:
[0116]
geometry_planar_mode_flag等于1指示平面译码模式被激活。geometry_planar_mode_flag等于0指示平面译码模式未被激活。
[0117]
geom_planar_mode_th_idcm指定直接译码模式的激活阈值值。geom_planar_mode_th_idcm是0到127(含127)范围内的整数。当不存在时,geom_planar_mode_th_idcm被推断为127。
[0118]
geom_planar_mode_th[i],对于在0

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

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

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

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

number_lasers范围内的i,指定沿第2内轴的第i激光位置相对于激光雷达头位置lidar_head_position[2]的校正。当不存在时,laser_correction[i]被推断为0。
[0124]
planar_buffer_disabled等于1指示在对平面模式中的平面模式标志和平面位置进行译码的过程中不使用缓冲区来跟踪最近的节点。planar_buffer_disabled等于0指示使用缓冲区来跟踪最近的节点。当不存在时,planar_buffer_disabled被推断为0。
[0125]
implicit_qtbt_angular_max_node_min_dim_log2_to_split_z指定节点尺寸的log2值,低于该值的节点水平拆分优于垂直拆分。当不存在时,implicit_qtbt_angular_max_diff_to_split_z被推断为0。
[0126]
implicit_qtbt_angular_max_diff_to_split_z指定节点允许的最大垂直与水平节点尺寸比率的log2值。当不存在时,implicit_qtbt_angular_max_node_min_dim_log2_to_split_z被推断为0。
[0127]
2020年6月,奥地利,阿尔普巴赫,g-pcc dis,iso/iec jtc1/sc29/wg11w19328(以下简称“w19328_d2”)中更新了几何参数集中语法元素的语法和语义。在下面的表2中,用《!》

《/!》标签指示了携带角译码模式和方位角译码模式需要以提高译码效率益处的激光雷达激光传感器信息的语法元素。
[0128]
表2.w19329中的几何参数集语法。
[0129]
[0130][0131]
这些语法元素的语义在w19328_d2中指定如下:
[0132]
number_lasers_minus1加1指定用于角译码模式的激光的数量。当不存在时,
number_lasers_minus1被推断为0。
[0133]
laser_angle[i]和laser_angle_diff[i],对于0..number_lasers_minus1范围内的i,指定第i个激光相对于由第一和第二编码轴定义的水平面的仰角的正切。当不存在时,laser_angle[i]被推断为0。
[0134]
laser_correction[i]和laser_correction_diff[i],对于0..number_lasers_minus1范围内的i,指定沿第二内轴的第i激光位置相对于geomangularorigin[2]的校正。当不存在时,laser_correction[i]被推断为0。
[0135]
具有元素laserangle[i]和lasercorrection[i]的laserangle和lasercorrection阵列,对于0..number_lasers_minus1范围内的i,如下导出:
[0136][0137]
laser_numphi_perturn[i]对于0..number_lasers_minus1范围内的i,指定第i个激光的一个完全旋转的方位角方向上的探测数量。当不存在时,laser_numphi_perturn[i]被推断为0。
[0138]
如上一节所述,预测激光角度,并且预测值实际上是前一激光的激光角度,即,对于laser_angle[i],预测值为laser_angle[i-1](i=0除外,这种情况下预测值等于零)。随后,对差值即laser_angle_diff[i](=laser_angle[i]

predicted value)进行译码。但是,这种“复制”预测(复制紧邻的前一个经编码的值用于预测)并不是最佳的。本公开的技术可以证明对laser_angle[i]的预测值的改进,使得syntax laser_angle_diff[i]的译码效率被进一步提高。
[0139]
在w19088中,对于每一个激光,对应的激光角度和激光偏移(相对于头部位置的激光位置)都被译码(例如,用包含在《!》

《/!》标签中的文本指示),如下表5所指示的。
[0140]
表5
[0141]
[0142][0143]
因此,在一些示例中,g-pcc编码器200可以针对激光候选集中的每一个激光对对应的激光角度和对应的激光偏移(即,激光校正)进行译码。
[0144]
激光角度可以以排序格式进行布置,例如,这些角度随着阵列索引单调地增加或减少。如果不以这种格式进行布置,则输入的预处理可以在译码之前对角度进行排序。观察到激光角度彼此非常相似。在这种情况下,可以从索引i-1的角度预测阵列索引i的角度,并且只有差值可以被编码,即可以应用增量译码。
[0145]
观察到特定激光的角度与其相邻激光非常相似。在这种情况下,可以从第(i-1)个激光的角度来预测第i个激光的角度,并且只有差值可以被编码,即,可以将增量译码与se(v)译码一起应用。
[0146]
类似的增量译码也可以应用于激光校正,如下表6中所示。
[0147]
表6
[0148]
[0149][0150]
在g-pcc解码器300处,激光角度[i]和laser_correction[i]可以分别从laser_angle_delta[i]和laser_correction_delta[i]导出,如下所示:
[0151][0152]
在一些示例中,如果激光角度被排序(单调地增加和减少),则laser_angle_delta[i](除了laser_angle_delta[0])可以作为无符号整数进行译码,因为增量要么全部为正,要么全部为负。
[0153]
因此,对于laser_angle_delta[0],使用se(v)译码(即,左位在先(即,最重要位在先)的有符号整数0阶指数哥伦布(exp-golomb-coded)译码),而对于其他laser_angle_delta[i](i》0),使用ue(v)译码。laser_offset_deltas用se(v)进行译码,例如,如下表7所
示。
[0154]
表7
[0155]
[0156][0157]
在另一个示例中,laser_angle_delta[i]和laser_correction_delta[i]可以用阶数为k的指数哥伦布译码来进行译码。k可以是自适应的(基于增量值的量级),固定的和编码器可配置的,或者固定的和预定的。在另一示例中,增量译码可能仅适用于激光角度而不适用于激光校正。
[0158]
本公开的技术可以证明对laser_angle[i]的预测值的改进,使得syntax laser_angle_diff[i]的译码效率被进一步改进。要进行译码的经排序激光角度(在激光雷达捕获场景中)大致线性地增加。例如,

ford1’序列的激光角度如下表8所示。
[0159]
表8
[0160]
ford1序列的经排序激光角度的部分列表以及得到的要进行译码的增量
[0161]
[0162][0163]
结果,可以观察到,从使用“复制”预测器(即,对于第i个角度,预测值是第(i-1)个角度)得到的增量,被称为旧的增量(delta_old),彼此相关。
[0164]
由于角度是线性增加的,在一个示例中,使用最后两个样本执行线性预测可以产生简单但有效的预测,在表8中被称为增量(delta)。很明显,与delta_old值相比,delta值的数值更小。
[0165]
因此,语义中的变化用《!》

《/!》标签指示:
[0166][0167]
因此,当确定预测值时,g-pcc译码器可以将预测值确定为2*第一激光角度加上-1*第二激光角度(即,2*laserangle[i-1]-laserangle[i-2]))。
[0168]
因为所建议的线性预测要求最后两个经译码角度存在,所以对于i》=2,调用所建议的线性预测。因此,对于i=0(预测值=0)和i=1(“复制”预测器),预测过程不变。此外,当调用线性预测时,对应的预测值可能超过实际激光角度(不同于激光角度按递增顺序排序的“复制”预测),因此laser_angle_diff[]可以是负的、正的或零,从而需要用se(v)对laser_angle_diff[]进行译码。se(v)指示左位在先的有符号整数0阶指数哥伦布译码语法元素。修改后的语法变更如下表9中用《!》

《/!》标签示出:
[0169]
表9
[0170][0171]
因此,在一些示例中,g-pcc编码器200可以确定第一激光角度(例如,类似于上述语义中的laserangle[0]);确定第二激光角度(例如,类似于上述语义中对于(i==1)的laserangle[i]);基于第一激光角度和第二激光角度确定预测值(例如,类似于上述语义中的2*laserangle[i-1]-laserangle[i-2]);以及确定第三激光角度的激光角度差(例如,类似于上述语义中的laser_angle_diff[i])。此外,g-pcc编码器200可以对第一激光角度的语法元素(例如,表9中的laser_angle[0])进行编码,并对第三激光角度的激光角度差的语法元素(例如,表9中对于(i==1)的laser_angle_diff[i])进行编码。激光角度差的语法元素指示第三激光角度的激光角度差,使得可以在g-pcc解码器300处基于第一激光角度、第二激光角度和第三激光角度的激光角度差来确定第三激光角度。g-pcc编码器200可以基于第三激光角度来对点云的点(在一些示例中是其垂直位置)进行编码。
[0172]
类似地,g-pcc解码器300可以确定第一激光角度(例如,上面语义中的laserangle[0]);确定第二激光角度(例如,在上面的语义中,用于(i==1)的laserangle[i]);优选地通过对指定第三激光角度的激光角度差的语法元素进行解码来确定第三激光角度的激光角度差(例如,上述语义中的laser_angle_diff[i]);基于第一激光角度、第二激光角度来预测第三激光角度(例如,上述语义中的2*laserangel[i-1]-laserangel[i-2]),并基于对第三激光角度的预测和第三激光角度的激光角度差(例如,上述语义中的(2*laserangel[i-1]-laserangel[i-2]) laser_angle_diff[i])来确定第三激光角度。此外,g-pcc解码器300可以基于第三激光角度来对点云的点(在一些示例中是其垂直位置)进行解码。
[0173]
与前面的示例相关,可替代地,可以用ue(v)对(i==1)的激光角度差进行译码,因为激光角度差仍然采用“复制”预测,而用se(v)对其他角度差进行译码。更改在表10中用《!》

《/!》标签示出。
[0174]
表10
[0175][0176]
在另一示例中,使用最后p个经译码角度的更一般的加权预测可以用于生成激光角度的预测值。加权预测的系数和p的值可以是固定的、预先确定的或译码的。
[0177]
在一些示例中,对指定用于从语法元素导出激光角度和激光校正的模型的语法元素(laser_info_pred_idc)进行译码。例如,语法元素的第一值可以指定第i个激光的预测值是第(i-1)个激光的值(或从该值导出);语法元素的第二值可以指定第i个激光的预测值是从第(i-1)个和第(i-2)个激光导出的;第三值可以被指定为第i个激光的预测值是固定值(诸如0)。更一般地,语法元素的不同值可以用于指定导出预测值的不同方法。语法元素的值可以针对所有激光进行一次译码(对于一些激光索引,可以选择一个或多个默认值而与该语法元素的值无关),或者可以针对每个激光(即,每个索引i)进行译码。对于一些激光,可以不对语法元素进行白呢加密,并且可以指定默认值(例如,对于第一激光,预测值可以被导出为0)。下面的语法表示出了如何针对每个激光对laser_info_pred_idc进行译码。更改在表11中用《!》

《/!》标签示出。
[0178]
表11
[0179][0180]
在一些示例中,值laser_info_pred_idc[i]作为ue(v)被译码。
[0181]
laser_info_pred_idc[i]指定从语法元素elements laser_angle_diff[i]和laser_correction_diff[i]导出激光信息的方法。laser_info_pred_idc[i]等于0指定第(i-1)个激光信息被用于导出第i个激光的信息。laser_info_pred_idc[i]等于1指定第(i-1)和第(i-2)个激光信息被用于导出第i个激光的信息。laser_info_pred_idc[i]等于2指定预测信息未被用于导出第i个激光的信息。laser_info_pred_idc[0]的值被推断为2,并且laser_info_pred_idc[1]的值被推断为等于0。
[0182]
激光信息导出如下:
[0183][0184]
在一些示例中,laser_info_pred_idc(或laser_info_pred_flag)的存在可以以存在标志为条件。当laser_info_pred_idc不存在时,可以选择一个或多个默认值来指定用于激光信息预测的模型。因此,g-pcc编码器200可以对激光信息预测指示符语法元素进行编码,该语法元素指定从第三激光角度的激光角度差语法元素导出激光信息的方法。类似地,在一些示例中,g-pcc解码器300可以对激光信息预测指示符语法元素(例如,laser_info_pred_idc)进行解码,该语法元素指定从激光角度的激光角度差语法元素导出激光信息的方法。
[0185]
图7a是示出根据本公开的一种或多种技术的g-pcc编码器200的示例操作的流程图。在图7a的示例中,g-pcc编码器200可以获得(例如,确定)第一激光角度(700)。第一激光角度可以指示第一激光束的仰角相对于由点云数据的第一内轴(例如,x)和第二轴(例如,y)定义的水平面的正切。附加地,g-pcc编码器200可以获得第二激光角度(702)。第二激光角度可以指示第二激光束的仰角相对于由点云数据的第一轴和第二轴定义的水平面的正切。g-pcc编码器200可以基于提供给g-pcc编码器200的关于激光雷达系统(或其他系统)的
配置信息来获得第一和第二激光角度。
[0186]
g-pcc编码器200可以基于第一激光角度和第二激光角来确定预测值(704)。例如,g-pcc编码器200可以通过基于第一激光角度和第二激光角度执行线性预测来确定预测值。在其他示例中,g-pcc编码器200可以通过使用第一激光角度和第二激光角度应用加权预测来确定预测值。
[0187]
在图7a的示例中,g-pcc编码器200可以对第三激光角度的激光角度差(例如,laser_angle_diff语法元素)进行编码(706)。激光角度差等于第三激光角度与预测值之间的差。第三激光角度可以指定第三激光的仰角相对于水平面的正切。
[0188]
在一些示例中,g-pcc编码器200可以对第一激光角度、第二激光角度和第三激光角度的激光角度差中的一个或多个的语法元素进行编码。例如,g-pcc编码器200可以将指定第三激光角度的激光角度差的语法元素编码为左位在先的有符号整数0阶指数哥伦布译码语法元素。在一些示例中,g-pcc编码器200可以对第二激光角度的激光角度差语法元素(例如,laser_angle_diff)进行编码。在该示例中该,第二激光角度的激光角度差语法元素指示第二激光角度与第一激光角度之间的差,并且第二激光角度的激光角度差语法元素可以被编码为左位在先的有符号整数0阶指数哥伦布译码语法元素。
[0189]
此外,在一些示例中,g-pcc编码器200可以基于第一激光角度、第二激光角度和第三激光角度中的一个来对点云数据中的点进行编码。例如,g-pcc编码器200可以基于第三激光角度对点云的点的垂直位置进行编码。例如,g-pcc编码器200可以确定与第三激光(即,具有第三激光角度的激光)与包含该点的当前节点相交的位置相关联的上下文。例如,g-pcc编码器200可以基于第三激光角度来确定第三激光是高于还是低于相对于当前节点的标记点(例如,中心点)定义的特定阈值。g-pcc编码器200可以使用第三激光角度和第三激光的激光校正值来确定第三激光的光束的位置。阈值之间和超出阈值的范围可以对应于不同的上下文。g-pcc编码器200然后可以通过使用所确定的上下文应用cabac编码来对指示点的垂直偏移的语法元素(例如,point_offset)的一个或多个二进制数进行编码。点的垂直偏移可以指示该点与当前节点的原点之间的垂直差。g-pcc编码器(诸如g-pcc编码器200或g-pcc解码器300)可以使用表12的过程确定用于对语法元素point_offset的二进制数进行cabac译码的上下文(idcmidxangular)。当执行表12的过程时,g-pcc译码器可以基于第三激光角度来确定第三激光是高于还是低于相对于当前节点的标记点(例如,中心点)定义的特定阈值。
[0190]
表12
[0191][0192][0193]
表12中的术语可以如下确定:
[0194]
在point_offset_x[i][]和point_offset_y[i][]被解码使得pointoffsetx[i]和pointoffsety[i]已知之后执行该过程。点i相对于激光雷达的x和y位置由以下公式导出:
[0195]
posxlidar[i]=xnchild-lidar_head_position[0] pointoffsetx[i]
[0196]
posylidar[i]=ynchild-lidar_head_position[1] pointoffsety[i]
[0197]
其中(xnchild,ynchild,znchild)指定几何八叉树子节点child在当前条带中的位置。
[0198]
该点与激光雷达的径向距离的逆rinv由以下确定:
[0199]
xlidar=(posxlidar[i]《《8)-128
[0200]
ylidar=(posylidar[i]《《8)-128
[0201]
r2=xlidar*xlidar ylidar*ylidar
[0202]
rinv=invsqrt(r2)
[0203]
与子节点child相关联的激光的校正后的激光角thetalaser推导如下:
[0204]
hr=laser_correction[laserindex[child]]*rinv
[0205]
thetalaser=laser_angle[laserindex[child]] (hr》=0?-(hr》》17):((-hr)》》17))
[0206]
假设对于0

j-1范围内的j2的比特point_offset_z[i][j2]是已知的,则该点已
知属于虚拟垂直间隔,该间隔的一半尺寸由以下公式给出:
[0207]
halfintervalsize[j]=(1《《(effectivechildnodesizezlog2-1))》》j
[0208]
并且提供间隔下端的部分z点位置poszlidarpartial[i][j],由以下公式推导:
[0209][0209][0210]
在使用平面模式对节点进行译码的一些示例中,g-pcc编码器200使用第三激光角度来确定用于对指示通过当前节点的水平面的位置的语法元素(例如plane_position)进行cabac译码的上下文。例如,g-pcc译码器(诸如g-pcc编码器200或g-pcc解码器300)可以确定用于节点(child)的plane_position的cabac译码的上下文(contextangular),如下表13所示。
[0211]
表13
[0212][0213]
在表13中,rinv可以确定为:
[0214]
r2=xlidar*xlidar ylidar*ylidar
[0215]
rinv=invsqrt(r2)
[0216]
其中
[0217]
midnodex=1《《(childnodesizexlog2-1)
[0218]
midnodey=1《《(childnodesizexlog2-1)
[0219]
xlidar=abs(((xnchild-lidar_head_position[0] midnodex)《《8)

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

128)
[0221]
其中childnodesizexlog2表示节点(child)的x维度的2的对数。可以将子节点的角度theta32确定为:
[0222]
zlidar=((znchild-lidar_head_position[2] midnodey)《《1)
–1[0223]
theta=zlidar*rinv
[0224]
theta32=theta》=0?theta》》15:-((-theta)》》15)
[0225]
其中znchild指定当前条带中几何子节点(child)的z位置。
[0226]
图7b是示出根据本公开的一种或多种技术的g-pcc解码器300的示例操作的流程图。在图7b的示例中,g-pcc解码器300(例如,g-pcc解码器300的几何重建单元312)可以获得(例如,确定)第一激光角度(750)。第一激光角度可以是第第一激光束的仰角相对于由点云数据的第一轴和第二轴定义的水平面的正切。附加地,g-pcc解码器300可以获得第二激光角度(752)。第二激光角度可以是第二激光束的仰角相对于由点云数据的第一轴和第二轴定义的水平面的正切。在一些示例中,g-pcc解码器300可以从编码在几何比特流203中的语法元素(例如,laser_angle)的值确定第一激光角度。在一些示例中,g-pcc解码器300可以从先前确定的激光角度和编码在几何比特流203中的附加语法元素(例如,laser_angle_diff)来确定第一激光角度和/或第二激光角度。换言之,g-pcc解码器300可以将激光i的激光角度确定为:
[0227]
laserangle[i]=laserangle[i

1] laser_angle_diff[i]
[0228]
在一些示例中,g-pcc解码器300可以对第二激光角度的激光角度差语法元素(例如,laser_angle_diff)进行解码,其中第二激光角度的激光角度差语法元素是左位在先的有符号整数0阶指数哥伦布译码语法元素。
[0229]
此外,在图7b的示例中,g-pcc解码器300可以获得第三激光角度的激光角度差(例如,laser_angle_diff语法元素)(754)。第三激光角度是第三激光束相对于由点云数据的第一轴和第二轴定义的水平面的仰角的正切。在一些示例中,激光角度差在几何比特流203中被编码为有符号整数0阶指数哥伦布码,并且g-pcc解码器300可以确定对应于该码的值。换言之,g-pcc编码器300可以将第三激光角度的激光角度差解码为左位在先的有符号整数0阶指数哥伦布译码语法元素。
[0230]
g-pcc解码器300可以基于第一激光角度和第二激光角来确定预测值(756)。例如,g-pcc解码器300可以通过基于第一激光角度和第二激光角度执行线性预测来确定预测值。在其他示例中,g-pcc解码器300可以通过使用第一激光角度和第二激光角度应用加权预测来确定预测值。
[0231]
g-pcc解码器300可以基于预测值和第三激光角度的激光角度差来确定第三激光角度(758)。例如,g-pcc解码器300可以将第三激光角度的激光角度差与预测值相加,以确定第三激光角度。
[0232]
在一些示例中,g-pcc解码器300可以基于第一激光角度、第二激光角度和第三激光角度中的一个来对点云数据中的点进行解码。例如,g-pcc解码器300可以基于第三激光角度,并且在一些示例中,基于具有第三激光角度的激光的激光校正值来对点云的点的垂直位置进行解码。例如,g-pcc解码器300可以基于第三激光角度(以及在一些示例中,具有第三激光角度的激光的激光校正值),对第三激光束相对于包含该点的当前节点的标记点
(例如,中心点、原点等)的位置进行解码。g-pcc解码器300可以基于第三激光束相对于当前节点的位置来确定上下文。例如,g-pcc解码器300可以基于第三激光束是否在由标记点上方和下方的距离阈值定义的特定间隔内来确定上下文,例如,如上面关于表12所描述的。然后,g-pcc解码器300(例如,g-pcc解码器300的几何算术解码单元302)可以通过使用所确定的上下文应用cabac解码来对指示点的相对于当前节点的原点的垂直偏移的语法元素(例如,point_pos)的一个或多个二进制数进行解码。g-pcc解码器300然后可以基于点的垂直偏移和当前节点的原点来确定点的垂直位置。例如,g-pcc解码器300可以将点的垂直偏移与当前节点的原点的垂直坐标相加,以确定该点的垂直位置。
[0233]
在使用平面模式对包含该点的当前节点进行编码的一些示例中,g-pcc解码器300可以基于第三激光角度,以及在一些示例中,基于具有第三激光角度的激光的激光校正值,来对指示垂直面位置的语法元素(例如,plane_position)进行解码,作为基于第三激光角度对点云的点的位置进行解码的一部分。例如,g-pcc解码器300可以基于第三激光束是否在由当前节点的标记点上方和下方的距离阈值定义的特定间隔内来确定上下文,例如,如上面关于表13所描述的。g-pcc解码器300可以使用第三激光角度以及在一些示例中使用具有第三激光角度的激光的激光校正值来确定第三激光束的位置。g-pcc解码器300可以通过使用所确定的上下文应用cabac解码来对指示垂直面位置的语法元素的一个或多个二进制数进行解码。g-pcc解码器300然后可以基于指示垂直面位置的语法元素来对点的位置进行解码。例如,g-pcc解码器300可以确定将当前节点划分为子节点的上层和子节点的下层的水平面的位置。g-pcc解码器300可以确定该点在紧靠水平面上方的子节点层中的子节点中。
[0234]
对于方位角模式译码,g-pcc编码器200可以对指定激光束的方位角方向(例如,对于激光束的一个完全旋转或其他范围)上的探测数量的语法元素(例如,laser_numphi_perturn)进行编码。语法元素laser_numphi_perturn[i]是直接使用ue(v)编码的。ue(v)指示左位在先的无符号整数0阶指数哥伦布译码语法元素。然而,特定激光的该语法元素(例如,laser_numphi_perturn)的值与相邻激光的该语法元素的值强烈相关。因此,利用这种相关性可以提高与对这些语法元素(例如,laser_numphi_perturn语法元素)进行译码相关联的效率。
[0235]
本公开描述了可以利用指示在激光束的方位角方向上(例如,对于激光束的一个完全旋转或其他范围)的探测数量的语法元素的值之间的相关性的技术。例如,在本公开的一些示例中,代替直接对laser_numphi_perturn[i]语法元素进行译码,g-pcc编码器200可以针对i》=1从laser_numphi_perturn[i-1]预测laser_numphi_perturn[i]的值。换言之,g-pcc编码器可以从激光i-1的方位角方向(例如,激光i-1的一个完全旋转或其他范围)上的探测数量预测激光i的方位角方向上的探测数量(例如,激光i的一个完全旋转或其他范围)。g-pcc编码器200可以导出等于(laser_numphi_per_turn[i]-laser_numphi_perturn[i-1])的差值(例如,laser_numphi_perturn_diff[i]),然后对该差值进行编码。g-pcc解码器300可以使用在激光束i-1的方位角方向上的探测数量(例如,对于激光束的一个完全旋转或其他范围),并加上laser_numphi_perturn_diff[i]的值以确定在激光束i的方位角方向上的探测数量(例如,对于激光束的一个完全旋转或其他范围)。对应于此示例的对w19328_d2的语法和语义的更改如下面的表14中用《!》

《/!》标签示出的。
[0236]
表14
[0237][0238][0239]
laser_numphi_perturn[i]和laser_numphi_perturn_diff[i],对于0..number_lasers_minus1范围内的i,指定沿第二内轴的第i激光位置相对于geomangularorigin[2]的校正。当不存在时,laser_correction[i]被推断为0。
[0240]
具有元素laserangle[i]和lasercorrection[i]的laserangle和lasercorrection阵列,对于0..number_lasers_minus1范围内的i,如下导出:
[0241][0242]
laser_numphi_perturn[i]和laser_numphi_perturn_diff[i]对于0..number_lasers_minus1范围内的i,指定第i个激光的一个完全旋转的方位角方向上的探测数量。当不存在时,laser_numphi_perturn[i]被推断为0。
[0243][0244]
因此,在一些示例中,g-pcc编码器200可以对指定第一激光的值的语法元素(例如,类似于表14中的laser_numphi_perturn[0])进行编码,第一激光的值指示对于第一激光的一个完全旋转的方位角方向上的探测数量;对第二激光的语法元素(例如,类似于表14中的laser_numphi_perturn_diff[i])进行编码,其中第二激光的语法元素指示第一激光的值与第二激光的值之间的差,第二激光的值指示对于第二激光的一个完全旋转的方位角方向上的探测数量;以及基于第一激光的方位角方向上的探测数量和对于第二激光的一个完全旋转的方位角方向上的探测数量中的一个来对点云数据的一个或多个点进行编码。
[0245]
类似地,g-pcc解码器300可以确定第一激光的值(例如,在上面的语法中,lasernumphiperturn[0]),第一激光的值指示对于第一激光的一个完全旋转的方位角方向上的探测数量。附加地,g-pcc解码器300可以对第二激光(例如,表14中的laser_numphi_perturn_diff[i])的语法元素进行解码。第二激光的语法元素指示第一激光的值与第二激光的值之间的差,其中第二激光的值可以指示对于第二激光的一个完全旋转的方位角方向上的探测数量。g-pcc解码器300可以基于第一激光的值和第一激光的值与第二激光的值之间的差的指示来确定指示第二激光的方位角方向上的探测数量的第二激光的值(例如,上面语法中的lasernumphiperturn[i]=lasernumphiperturn[i-1] laser_numphi_perturn_diff[i])。此外,g-pcc解码器300可以基于对于第二激光的一个完全旋转的方位角方向上的探测数量来对点云数据的一个或多个点进行解码。
[0246]
图8a是示出根据本公开的一种或多种技术的g-pcc编码器200的示例操作的流程图。在图8a的示例中,g-pcc编码器200可以获得点云数据(800)。例如,g-pcc编码器200可以从数据源104(图1)获得点云。数据源104可以使用激光雷达传感器、一个或多个相机、计算机图形程序或其他源来生成点云。
[0247]
g-pcc编码器200可以确定第一激光的值(例如,lasernumphiperturn)(802)。第一激光的值指示在第一激光的方位角方向上(例如,对于第一激光的一个完全旋转或其他范围)的探测的数量。例如,g-pcc编码器200可以基于提供给g-pcc编码器200的关于激光雷达系统(或其他系统)的配置信息来确定第一激光的值。在一些示例中,g-pcc编码器200可以对指定第一激光的值的语法元素(例如,laser_num_phi_perturn)进行编码。
[0248]
此外,在图8a的示例中,g-pcc编码器200可对第二激光的语法元素(例如,laser_numphi_perturn_diff)进行编码(804)。第二激光的语法元素指示第一激光的值与第二激
pcc解码器300可以基于对于激光的一个完全旋转(例如,第二激光的一个完全旋转或其他范围)在方位角方向上的探测数量来确定第二激光在包含点的当前节点中的采样位置(例如,predphi)。然后g-pcc解码器300可以基于采样位置来确定上下文(例如,idcmidxazimuthal)。g-pcc解码器300可以在与如上表12中确定上下文idcmidxangular相同或类似的过程中,使用方位角而不是仰角(z)来确定上下文。在该示例中,g-pcc解码器300然后可以通过使用所确定的上下文应用cabac解码来对指示点的方位角偏移的方位角偏移语法元素(例如,point_offset)的一个或多个二进制数进行解码。方位角偏移可以指示该点的方位角坐标相对于当前节点的原点的偏移。g-pcc解码器300可以基于方位角偏移语法元素来确定点的位置。例如,g-pcc解码器300可以将点的柱坐标(包括方位角坐标)转换为笛卡尔坐标。
[0255]
在使用角模式对节点进行编码的一些示例中,g-pcc解码器300可以基于第二激光的方位角方向上的探测数量(例如,对于第二激光的一个完全旋转或其他范围)来确定第二激光在包含一个或多个点的点的节点中的采样位置。附加地,g-pcc解码器300可以基于采样位置来确定上下文。例如,g-pcc解码器300可以基于采样位置是在第二激光旋转方向上的节点的中点之前还是之后来确定上下文。g-pcc解码器300可以在与如上表13中确定上下文相同或类似的过程中,使用方位角而不是仰角(z)来确定上下文。此外,在该示例中,g-pcc解码器300可以通过使用所确定的上下文应用cabac解码来对表指示通过包含该点的节点的平面的位置的语法元素(例如plane_position)进行解码。g-pcc解码器300可以基于平面的位置来确定点的位置。例如,g-pcc解码器300可以确定点在紧接平面之后的子节点层中。
[0256]
如上所述,number_lasers语法元素可以在诸如几何参数集的参数集中被译码。number_lasers语法元素指示用于角编码模式的激光数量。然而,根据本公开的一种或多种技术,可以将用于角编码模式的激光的数量作为number_lasers_minusl被译码(例如,在诸如几何参数集或其他语法头的参数集中),以便通过将值l加到被译码的number_lasers_minusl值来获得激光的数量。因此,在一些示例中,g-pcc译码器(例如,g-pcc编码器200或g-pcc解码器300)可以对具有第一值的语法元素进行编码,其中第一值加上第二值指示激光的数量,并且其中第二值是激光的最小数量。
[0257]
在一些示例中,值l等于1,因为角模式应该至少有一个激光才能在译码中有用,例如平面模式的平面位置或idcm的点位置偏移。number_lasers_minus1语法元素可以使用可变长度码(诸如k阶指数哥伦布码)或固定长度码在比特流中进行译码。在一些示例中,值l可以等于对于角模式在译码中有用所需的激光的最小数量。在一些示例中,number_lasers_minusl语法元素可以使用可变长度码(诸如k阶指数哥伦布码)或固定长度码在比特流中进行译码。
[0258]
w19328_d2的几何参数集语法表的修改如下表15所示,修改后的文本用《!》

《/!》标签指示。更具体地,表15示出了几何参数集中number_of_lasers_minus1的译码。在表15中,《#》

《/#》标签表示与角模式相关的语法元素。
[0259]
表15
[0260][0261]
[0262]
number_lasers_minus1语法元素的语义如下所示:
[0263]
number_lasers_minus1值加1指定用于角译码模式的激光的数量。当不存在时,number_lasers_minus1被推断为-1。
[0264]
在表15中,num_lasers_minus1加1指定激光的数量。因此,在表15中,假设激光的最小数量为1。然而,角模式适格性要求导出最小的角增量,如果激光的数量是1,则这是不可能的。换言之,角模式可能只能在有两个或更多激光时使用。因此,在第一示例中,因为角模式适格性要求两个激光之间的最小角度差,因此激光的最小数量是2。因此,语法元素num_lasers_minus1可以使用num_lasers_minus2替换。因此,当激光的数量为1时,角模式不能被应用。对w19328_d2的更改在表16中用《!》

《/!》标签示出。
[0265]
表16
[0266][0267]
number_lasers_minus《!》2《/!》加《!》2《/!》指定用于角译码模式的激光的数量。当不存在时,number_lasers_minus《!》2《/!》被推断为0。
[0268]
因此,在一些示例中,g-pcc编码器200或g-pcc解码器300可以对语法元素(例如,number_lasers_minus2)进行编码或解码,其中该语法元素的值加2指定用于角译码模式的激光的数量;并且使用角译码模式来对点云数据进行编码或解码。
[0269]
在第二示例中,当使用单个激光译码时,建议使所有节点适格(跳过适格性条件)。建议对角适格性的确定作以下修改。以下过程应用于子节点child,以确定子节点的角适格性angular_eligible[child]。如果geometry_angular_mode_flag等于0,则将angular_eligible[child]设置为等于0。否则,适用以下规定:
[0270][0271]
其中deltaangle是激光之间的最小角距离,由以下公式确定:
[0272]
《!》if(num_lasers_minus1)《/!》deltaangle=min{abs(laserangle[i]

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

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

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

相关文献