CN114586287A - 针对基于树的点云编解码的角度模式句法 - Google Patents
针对基于树的点云编解码的角度模式句法 Download PDFInfo
- Publication number
- CN114586287A CN114586287A CN202080069002.XA CN202080069002A CN114586287A CN 114586287 A CN114586287 A CN 114586287A CN 202080069002 A CN202080069002 A CN 202080069002A CN 114586287 A CN114586287 A CN 114586287A
- Authority
- CN
- China
- Prior art keywords
- volume
- point cloud
- angle
- decoding
- parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/40—Tree coding, e.g. quadtree, octree
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
Abstract
一种针对基于树的点云编解码的角度模式句法。用于使用角度编解码模式对点云数据进行编解码的方法和设备。可以使用角度模式标志来以信号通知角度编解码模式,以信号通知将使用角度编解码模式对体积进行编解码。角度编解码模式适用于平面体积,该平面体积的所有所占用的子节点都位于平分该体积的平面的一侧。平面位置标志可以以信号通知体积的哪一侧被占用。熵编解码可以用于对平面位置标志进行编解码。用于编解码的上下文确定可以考虑角度信息,该角度信息针对相对于已经采样到点云的波束组合的位置的体积的子节点或子节点组。波束组合的特性可以被编解码到位流中的专用句法中。
Description
技术领域
本申请总体上涉及点云压缩,并且具体地涉及用于在基于树的点云编解码中的改进的占用数据压缩的方法和设备。
背景技术
数据压缩用于通信和计算机网络中以高效地存储、传输和再现信息。存在对三维对象或空间的表示越来越感兴趣,这可能涉及大型数据集,并且针对该大型数据集高效和有效的压缩将非常有用和有价值。在某些情况下,可以使用点云来表示三维对象或空间,点云是点集,每个点具有三个坐标位置(X,Y,Z),并且在某些情况下,还具有其他属性,如颜色数据(例如,亮度和色度)、透明度、反射率、法向量等。点云可以是静态的(在单个时间点的静止的对象或环境/对象的快照)或动态的(点云的时间顺序序列)。
针对点云的示例应用包括地形和地图绘制应用。自动驾驶汽车和其他机器视觉应用可以依赖于环境的以3D扫描形式的点云传感器数据,诸如来自激光雷达扫描仪的数据。虚拟现实模拟可以依赖于点云。
应当理解,点云可以涉及大量数据并且快速和准确地压缩(编码和解码)该数据具有重要意义。因此,提供更高效和/或有效地压缩的点云数据的方法和设备将是有利的。例如,这样的方法可以通过改进的压缩来节省存储需求(存储器),或节省用于传输压缩的数据的带宽,从而改进3D视觉系统的操作,诸如用于汽车应用,或改进虚拟现实系统的操作和绘制速度。
附图说明
现在将通过示例的方式参考示出本申请的示例实施例的附图,并且在附图中:
图1示出了示例点云编码器的简化框图;
图2示出了示例点云解码器的简化框图;
图3和图4示出了在其占用子子体积(“child subvolume”)中呈现平面性的体积的示例;
图5以流程图形式示出了使用平面编解码模式对点云数据进行编码的一种示例方法;
图6以流程图形式示出了使用平面编解码模式对点云数据进行解码的一种示例方法;
图7示出了用于基于平面性信息对占用位进行编解码的过程的一个示例的部分;
图8示出了用于基于平面性信息对占用位进行编解码的过程的另一示例的部分;
图9图解说明了在确定用于对平面模式标志或平面位置标志进行编解码的上下文中的可能因素;
图10示出了用于在相同深度处和公共平面中跟踪最近的已经编解码的所占用的节点的一种示例机制;
图11示出了用于获取点云的波束组合的示例的简化图示;
图12示出了波束组合中的单波束发射器的示例的简化图示;
图13示出了相对于波束组合的坐标轴的示例分配;
图14示出了包括在(r,θ)平面中所表示的示例点云的点的图;
图15示出了相对于点云的点的坐标轴的示例分配;
图16示出了图14中的图的细节;
图17示出了相对于波束组合的参考位置的波束组合的波束发射器的布置的示例;
图18示出了包括在基于波束组合的特性而执行角度θ的校正之后在(r,θ)平面中所表示的示例点云的点的图;
图19示出了相对于由波束组合发射的波束之间的角度差的点云数据体积的角度大小的示例;
图20以流程图形式示出了使用角度编解码模式对点云数据进行编码的一种示例方法;
图21以流程图形式示出了使用角度编解码模式对点云数据进行解码的一种示例方法;
图22示出了相对于波束发射器的点云数据体积的子体积组的角度的示例;
图23示出了相对于波束发射器的点云数据体积的子体积的角度的示例;
图24示出了波束组合的主轴的示例布置;
图25示出了相对于波束组合的参考位置的图24的波束组合的波束发射器的布置的示例;
图26示出了相对于波束组合的参考位置的图24的波束组合的波束发射器的布置的另一示例;
图27以流程图形式示出了基于指示已经获取点云的波束组合的特性的句法元素来从位流中解码点云数据的一种示例方法;
图28以流程图形式示出了将点云数据连同指示已经获取点云的波束组合的特性的句法元素一起编码到位流中的一种示例方法;
图29示出了点云数据体积的形状和相对于波束发射器的体积的子体积组的角度的示例;
图30示出了编码器的示例简化框图;以及
图31示出了解码器的示例简化框图。
在不同附图中可以使用类似附图标记来表示类似组件。
具体实施方式
本申请描述了对点云进行编码和解码的方法、以及用于对点云进行编码和解码的编码器和解码器。
在一个方面,本申请描述了一种对点云进行编码,以生成表示对象的三维位置的压缩的点云数据的位流的方法,点云位于体积空间内,体积空间被递归地拆分成子体积并且包含点云的点,其中体积被分割为第一子子体积集和第二子子体积集,第一子子体积集位于第一平面中并且第二子子体积集位于平行于第一平面的第二平面中,并且其中与每个相应的子子体积相关联的占用位指示相应的子子体积是否包含点中的至少一个点。该方法可以包括:基于包含至少一个点的所有子子体积是否位于第一集或第二集中来确定体积是否是平面的;在位流中将平面模式标志进行编码,以信号通知体积是否是平面的;在位流中编码针对第一集合的子子体积的占用位包括:针对至少一个占用位,基于体积是否是平面的来推断其值并且不在位流中对其进行编码;并且输出压缩的点云数据的位流。
在另一方面,本申请描述了一种对压缩的点云数据的位流进行解码,以产生表示物理对象的三维位置的重构的点云的方法,点云位于体积空间内,该体积空间递归地拆分成子体积并且包含点云的点,其中体积被分割为第一子子体积集和第二子子体积集,第一子子体积集位于第一平面中并且第二子子体积集位于平行于第一平面的第二平面中,并且其中与每个相应的子子体积相关联的占用位指示相应的子子体积是否包含点中的至少一个点。该方法可以包括:通过从位流中解码指示体积是否是平面的平面模式标志来重构占用位来重构点云的点,其中如果包含至少一个点的所有子子体积都位于第一集或第二集中,则该体积是平面的;并且从位流中解码针对第一集的子子体积的占用位包括:针对至少一个占用位,基于体积是否是平面的来推断其值并且不从位流中对其进行解码。
在一些实现中,确定体积是否是平面的可以包括:通过确定第一集中的子子体积中的至少一个子子体积包含至少一个点并且第二集中没有子子体积包含任何点来确定体积是平面的,并且该方法还可以包括:基于体积是平面的,对平面位置标志进行编码,以信号通知所述子子体积中的至少一个子子体积在第一平面中。在这样的实现中,在一些情况下,对占用位进行编码包括:避免对与第二集相关联的占用位进行编解码,并且基于不包含点的第二集来推断与第二集相关联的占用位的值。对占用位进行编码还可以包括:基于确定按编解码顺序的第一集的所有其他占用位具有指示未占用的值,推断按编解码顺序的与第一集相关联的占用位中的最后占用位具有指示被占用的值。
在一些实现中,确定体积是否是平面的包括:确定体积不是平面的,并且在此基础上,基于第一集中的占用位中的至少一个占用位和具有指示被占用的值的第二集中的占用位中的至少一个占用位来对占用位进行编码。
在一些实现中,点云相对于体积空间中的笛卡尔轴而被限定,笛卡尔轴具有垂直于水平面的垂直定向z轴,并且第一平面和第二平面平行于水平面。在一些其他实现中,第一平面和第二平面与水平面正交。
在一些实现中,该方法包括:首先确定体积合格用于平面模式编解码。确定体积合格用于平面模式编解码可以包括:确定平面性概率并且确定平面性概率大于阈值合格性值。
在一些实现中,对平面模式标志进行编码可以包括:对水平平面模式标志进行编码并且对垂直平面模式标志进行编码。
在又一方面,本申请描述了一种对点云进行编码,以生成表示对象的三维位置的压缩的点云数据的位流的方法,点云位于体积空间内,该体积空间被递归地拆分成子体积并且包含点云的点,其中体积被分割为第一子子体积集和第二子子体积集,第一子子体积集位于第一平面中并且第二子子体积集位于平行于第一平面的第二平面中,并且其中与每个相应的子子体积相关联的占用位指示相应的子子体积是否包含点中的至少一个点,第一平面和第二平面两者与轴正交。该方法可以包括:基于包含至少一个点的所有子子体积是否位于第一集或第二集中来确定体积是否是平面的;在位流中熵编码平面模式标志以信号通知体积是否是平面的,其中熵编码包括部分地基于以下一项或多项来确定用于对平面模式标志进行编解码的上下文:(a)包含体积的父体积在占用时是否是平面的,(b)相邻体积在父深度处的占用,相邻体积与体积邻近并且具有与父体积相同的面,或(c)体积与最近的已经被编解码的占用体积之间的距离,该最近的已经被编解码的占用体积在与体积相同的深度处并且在轴上与体积具有相同位置;对至少一些子子体积的占用位进行编码;并且输出压缩的点云数据的位流。
在另一方面,本申请描述了一种对压缩的点云数据的位流进行解码以产生表示物理对象的三维位置的重构的点云的方法,点云位于体积空间内,该体积空间被递归地拆分成子体积并且包含点云的点,其中体积被分割为第一子子体积集和第二子子体积集,第一子子体积集位于第一平面中并且第二子子体积集位于平行于第一平面的第二平面中,并且其中与每个相应的子子体积相关联的占用位指示相应的子子体积是否包含点中的至少一个点,第一平面和第二平面两者与轴正交。该方法可以包括:通过从位流中熵解码平面模式标志来重构占用位来重构点云的点,该平面模式标志指示体积是否是平面的,其中如果包含至少一个点的所有子子体积都位于第一集或第二集中,则体积是平面的,其中熵解码包括部分地基于以下一项或多项来确定用于对平面模式标志进行解码的上下文:(a)包含体积的父体积在占用时是否是平面的,(b)相邻体积在父深度处的占用,相邻体积与体积邻近并且具有与父体积相同的面,或(c)体积与最近的已经被编解码的占用体积之间的距离,该最近的已经被编解码的占用体积在与体积相同的深度处并且在轴上与体积具有相同位置;并且重构针对子子体积的占用位。
在一些实现中,如果父平面模式标志指示父体积是平面的,则包含该体积的父体积在占用时是平面的。
在一些实现中,距离是近的或者是远的,并且可以基于计算距离度量并且将其与阈值进行比较。
在一些实现中,确定用于对平面模式标志进行编解码的上下文可以基于(a)、(b)和(c)的组合。
在一些实现中,确定体积是否是平面的包括:确定体积是平面的,并且因此对平面位置标志进行熵编码以信号通知至少一个点是否位于第一集或第二集中。对平面位置标志进行熵编码可以包括:确定用于对平面位置标志进行编解码的上下文。确定上下文可以部分地基于以下一项或多项:(a')相邻体积在父深度处的占用;(b')体积与最近的已经被编解码的占用体积之间的距离;(c')最近的已经被编解码的占用体积的平面位置(如果有的话);或(d')体积在父体积中的位置。在一些情况下,确定用于对平面位置标志进行编解码的上下文可以基于(a')、(b')、(c')和(d')中的三个或更多个的组合。
在一些实现中,距离是近的、不太远的或远的,并且可以基于计算距离度量并且将其与第一阈值和第二阈值进行比较。
在另一方面,本申请描述了一种对通过包括波束集的波束组合获取的点云(例如,点云的几何形状)进行编码以生成压缩点云的位流的方法。数据点云(例如,点云的几何形状)可以限定义为树形结构(例如,通过树形结构),该树形结构具有多个节点,这些节点具有父子关系并且表示对象的三维位置。此外,点云可以位于体积空间内,该体积空间被递归地拆分成子体积并且包含点云的点的。体积可以分割为子子体积集。与每个相应的子子体积相关联的占用位可以指示相应的子子体积是否包含至少点中的一个点。该方法可以包括:针对与被拆分成子子体积的体积相关联的当前节点,基于体积的子子体积的占用状态来确定针对体积的占用模式。该方法还可以包括:将占用模式的表示熵编码到位流中。其中对占用模式进行熵编码可以包括:确定针对体积的子子体积或子子体积组的角度信息。角度信息可以指示相对于与体积空间内的波束组合相关联的位置的一个或多个仰角。对占用模式进行熵编码还可以包括:基于角度信息来确定用于对占用模式的表示进行编码的上下文。对占用模式进行熵编码还可以包括:使用所确定的上下文对占用模式的表示进行熵编码。
在另一方面,本申请描述了一种对压缩的点云数据的位流进行解码,以生成重构的点云(例如,重构的点云的几何形状)的方法。点云(例如,点云的几何形状)可以已经通过包括波束集的波束组合而被获取。点云可以被限定为具有多个节点的树形结构(例如,通过树形结构),这些节点具有父子关系并且表示对象的三维位置。此外,点云可以位于体积空间内,该体积空间被递归地拆分成子体积并且包含点云的点。体积可以分割为子子体积集。与每个相应的子子体积相关联的占用位可以指示相应的子子体积是否包含点中的至少一个点。该方法可以包括:针对与拆分成子子体积的体积相关联的当前节点,确定针对体积的子子体积或子子体积组的角度信息。角度信息可以指示相对于与体积空间内的波束组合相关联的位置(并且,例如,相对于包含与波束组合相关联的位置的平面,诸如水平面)的一个或多个仰角。该方法还可以包括:基于角度信息来确定用于对体积的占用模式的表示进行解码的上下文。占用模式可以指示体积的子子体积的占用状态。该方法还可以包括:使用所确定的上下文对位流进行熵解码以生成占用模式的重构的表示。
在一些实现中,确定角度信息可以包括:确定体积内的参考位置相对于波束组合的参考位置的第一仰角。确定角度信息还可以包括:基于第一仰角来确定被假定为已经获取体积内的点的特定波束。确定角度信息还可以包括:确定特定波束的原点位置。确定角度信息还可以包括:确定针对相对于特定波束的原点位置的体积的子子体积或子子体积组的一个或多个仰角。
在一些实现中,该方法还可以包括:首先通过确定从波束组合的参考位置看到的体积的角度大小的测量来确定体积合格用于基于角度信息来确定上下文。确定体积合格还可以包括:将角度大小的测量与波束组合的相邻波束之间的差角度的测量进行比较。确定体积合格还可以包括:基于比较的结果,确定体积合格用于基于角度信息来确定上下文。
在一些实现中,平面体积可以是在相应的平行平面中被分割为多个子子体积集的体积,其中包含至少一个点的所有子子体积都位于同一平面中。然后,确定用于对占用模式的表示进行编解码的上下文可以包括:基于角度信息来确定用于对平面位置标志进行编解码的上下文。平面位置标志可以信号通知包含至少一个点的子子体积所在的平面的位置。此外,对占用模式的表示进行熵编解码可以包括:使用所确定的上下文对平面位置标志进行熵编解码。
在一些实现中,确定角度信息可以包括:确定针对多个平行平面中的每个平行平面相对于特定波束的原点位置的相应仰角。确定用于对平面位置标志进行编解码的上下文可以包括:将多个平行平面中的每个平行平面的相应仰角与特定波束的波束角度进行比较(例如,通过计算相应角度之间的差)。确定用于对平面位置标志进行编解码的上下文还可以包括:基于相应比较的结果来确定用于对平面位置标志进行编解码的上下文。
在一些实现中,基于相应比较的结果来确定用于对平面位置标志进行编解码的上下文可以基于以下至少一项:特定波束的波束角度与多个平行平面中的每个的相应仰角之间的差、特定波束的波束角度与多个平行平面中的每个平行平面的相应仰角之间的差的幅度、和/或(i)特定波束的波束角度与针对多个平行平面中的每个平行平面的相应仰角之间的差的幅度中的最大幅度与(ii)特定波束的波束角度与多个平行平面中的每个平行平面的相应仰角之间的差的幅度中的最小幅度之间的差的量化结果。
在一些实现中,确定用于对占用模式的表示进行编解码的上下文可以包括:确定用于针对体积的子子体积的占用位进行编解码的上下文。然后,对占用模式的表示进行熵编解码可以包括:使用所确定的上下文对占用位进行熵编解码。
在一些实现中,确定角度信息可以包括:确定体积的子子体积中的每个子子体积相对于特定波束的原点位置的相应仰角。确定用于对体积的子子体积的占用位进行编解码的上下文可以包括:将针对体积的子子体积中的每个子子体积的相应仰角与特定波束的波束角度进行比较。确定用于对体积的子子体积的占用位进行编解码的上下文还可以包括:基于相应比较的结果来确定用于对体积的子子体积的占用位进行编解码的上下文。
在一些实现中,波束组合可以是旋转波束组合。点云可以相对于体积空间中的笛卡尔轴而被限定。笛卡尔轴可以具有垂直定向的z轴,该z轴垂直于水平面并且基本上平行于旋转波束组合的旋转轴。
在一些实现中,位流可以包括描述波束组合的特性的一个或多个参数。
在另一方面,本申请描述了一种对压缩的点云数据的位流进行解码以生成重构的点云的方法。点云可以已经通过波束集而被获取。此外,点云可以位于体积空间内,该体积空间被递归地拆分成子体积并且包含点云的点。该方法可以包括:从位流中解码第一参数,该第一参数指示角度模式是否应当被用于对点云数据编码。该方法还可以包括:如果第一参数指示应当使用角度模式对点云数据进行编解码,则从位流中解码第一角度信息,该第一角度信息与相对于相应波束原点位置的波束集的波束角度有关。该方法还可以包括,针对拆分为子体积的当前体积:确定第二角度信息,该第二角度信息与相对于与波束集相关联的位置的该体积的子体积或子体积组的角度有关。该方法还可以包括:基于第一角度信息和第二角度信息来解码针对体积的点云数据。
在一些实现中,解码第一角度信息可以包括:针对包括波束集中的至少一些波束的波束组合:从位流中解码第二参数,该第二参数指示波束组合中的波束数目的并且基于第二参数来确定波束组合中的波束数目。该方法还可以包括:针对由第二参数指示的波束数目中的每个波束,从位流中解码一个或多个第三参数,一个或多个第三参数指示相应波束的波束原点位置。
在一些实现中,解码指示相应波束的波束原点位置的一个或多个第三参数可以包括:解码指示波束的波束原点位置是否相对于波束组合的参考位置而被表示的参数。解码一个或多个第三参数还可以包括:如果波束的波束原点位置相对于波束组合的参考位置而被表示,则解码指示沿着波束组合的主轴的波束的波束原点位置的坐标的参数。解码一个或多个第三参数还可以包括:如果波束的波束原点位置相对于波束组合的参考位置而被表示,则解码指示波束原点位置是否从波束组合的主轴位移的参数。解码一个或多个第三参数还还可以包括:如果波束的波束原点位置相对于波束组合的参考位置而被表示,并且如果波束原点位置从波束组合的主轴位移,则解码表示波束原点位置从波束组合的主轴的位移的参数。
在一些实现中,解码第一角度信息可以包括:检查位流是否包括第四参数,该第四参数指示各自包括波束集中的至少一些波束的波束组合的数目,并且如果是,则从位流中解码第四参数。解码第一角度信息还可以包括:如果第四参数不存在或等于0,则推断波束组合的数目为1。解码第一角度信息还可以包括:如果第四参数等于1,则解码第五参数,该第五参数指示波束组合的数目减2。
在一些实现中,解码第一角度信息可以包括:针对包括波束集中的至少一些波束的波束组合,检查位流是否包括第六参数,该第六参数指示波束组合的参考位置是否在体积空间的坐标系的原点处,如果是,则解码第六参数。解码第一角度信息还可以包括:如果位流中不存在第六参数,或者如果第六参数指示波束组合的参考位置在坐标系的原点处,则将坐标系的原点作为波束组合的参考位置。解码第一角度信息还可以包括:否则,从位流中解码指示波束组合的参考位置的坐标的参数。
在一些实现中,解码第一角度信息可以包括:针对包括波束集中的至少一些波束的波束组合,从位流中解码第七参数,该第七参数指示波束组合的主轴是否沿着体积空间的坐标轴而被布置。解码第一角度信息还可以包括:如果第七参数指示波束组合的主轴沿着体积空间的坐标轴而被布置,则解码特定坐标轴的参数,指示波束组合的主轴沿着其布置的,并且将特定坐标轴作为波束组合的主轴(例如,主轴的定向)。解码第一角度信息还可以包括:否则,解码指示表示波束组合的主轴的定向的角度的参数,并且基于这些参数来确定波束组合的主轴。可以假定主轴穿过波束组合的参考位置。
在一些实现中,解码第一角度信息可以包括:对于包括波束集中的至少一些波束的波束组合,从位流中解码第八参数,该第八参数指示波束组合中的波束数目,并且基于第八参数来确定波束组合中的波束数目。解码第一角度信息还可以包括:针对波束组合中的波束数目中的每个波束,从位流中解码指示相应波束的波束角度的一个或多个第九参数。
在一些实现中,解码指示相应波束的波束角度的一个或多个第九参数可以包括:解码指示波束角度是否表示为角度的正切的参数。解码一个或多个第九参数还可以包括:解码表示波束角度的参数。
在一些实现中,该方法还可以包括首先确定体积合格用于基于第一角度信息和第二角度信息来解码针对体积的点云数据。针对包括波束集中的至少一些波束的波束组合,角度合格性的确定可以包括:确定从波束组合的参考位置所看到的体积的角度大小的测量。角度合格性的确定还可以包括:将角度大小的测量与波束组合的相邻波束的角度之间的差角度的测量进行比较。角度适合性的确定还可以包括:基于比较的结果确定体积(或是否)合格用于基于第一角度信息和第二角度信息来解码针对体积的点云数据。
在一些实现中,确定第二角度信息可以包括:确定相对于包括波束集中的至少一些波束的波束组合的参考位置的体积内的针对参考位置的第一角度。确定第二角度信息还可以包括:基于第一仰角,确定被假定为已经获取体积内的点的波束组合的特定波束。确定第二角度信息还可以包括:确定特定波束的波束原点位置。确定第二角度信息还还可以包括:确定相对于特定波束的波束原点位置的体积的子体积或子体积组的角度。
在另一方面,本申请描述了一种对通过波束集获取的点云进行编码以生成压缩的点云数据的位流的方法。点云可以位于体积空间内,该体积空间被递归地拆分成子体积并且包含点云的点。该方法可以包括:将第一参数编码到位流中,该第一参数指示角度模式是否应当被用于对点云数据编解码。该方法还可以包括:如果第一参数指示点云数据应当使用角度模式而被编解码,则将第一角度信息编码到位流中,该第一角度信息与相对于相应波束原点位置的波束集的波束角度有关。该方法还可以包括:如果第一参数指示点云数据应当使用角度模式而被编解码,则对于拆分为子体积的当前体积,确定第二角度信息,该第二角度信息与相对于与波束集相关联的位置的体积的子体积或子体积组角度有关的。该方法还可以包括:如果第一参数指示点云数据应当使用角度模式而被编解码,则基于第一角度信息和第二角度信息对体积的点云数据进行编码。
在另一方面,本申请描述了被配置为实现这样的编码和解码方法的编码器和解码器。
在又一方面,本申请描述了一种存储计算机可执行程序指令的非暂态计算机可读介质,该计算机可执行程序指令在被执行时使一个或多个处理器执行所描述的编码和/或解码方法。
在又一方面,本申请描述了一种包含程序指令的计算机可读信号,该程序指令在由计算机执行时使计算机执行所描述的编码和/或解码方法。
本领域普通技术人员将从结合附图对示例的以下描述的审查中理解本申请的其他方面和特征。
关于本发明的一个方面或实施例而描述的任何特征也可以用于一个或多个其他方面/实施例。本发明的这些和其他方面将从本文中描述的实施例中变得明显并且参考本文中描述的实施例来阐明。
在以下描述中,术语“节点”、“体积”和“子体积”有时可以互换使用。应当理解,节点与体积或子体积相关联。节点是树上的特定点,其可以是内部节点或叶节点。体积或子体积是节点所表示的有界物理空间。在某些情况下,术语“体积”可以用于指代为包含点云所限定的最大有界空间。为了构建互连节点的树形结构以对点云数据进行编解码,可以将体积递归地划分为子体积。将体积分割为子体积的树状结构可以被称为“父”和“子”关系,其中子体积是对父节点或父体积的子节点或子子体积。同一体积内的子体积可以被称为兄弟节点或兄弟子体积。
在本申请中,术语“和/或”旨在涵盖所列元素的所有可能的组合和子组合,包括单独的所列元素中的任何一种元素、任何子组合或所有元素,并且不必然排除其他元素。
在本申请中,短语“……或……中的至少一项”旨在涵盖所列元素中的任何一种或多种元素,包括单独的所列元素中的任何一种元素、任何子组合或所有元素,不必然排除任何附加元素,也不必然需要所有元素。
点云是三维坐标系中的点集。这些点通常用于表示一个或多个对象的外表面。每个点在三维坐标系中都具有位置(地点)。位置可以由三个坐标(X,Y,Z)表示,该坐标可以是笛卡尔坐标系或任何其他坐标系。这些点可以具有其他相关联的属性(诸如,颜色),该属性在某些情况下也可以是三个分量值,例如R、G、B或Y、Cb、Cr。其他相关属性可以包括透明度、反射率、法向量等,这取决于针对点云数据的所期望的应用。
点云可以是静态的或动态的。例如,对象或地形的详细扫描或映射可以是静态点云数据。用于机器视觉目的的基于激光雷达的环境扫描可以是动态的,因为点云(至少可能)随时间而变化,例如每次连续扫描体积。因此,动态点云是点云的时间顺序序列。
点云数据可以用于很多应用,包括例如保护(历史或文化对象的扫描)、地图绘制、机器视觉(诸如,自主或半自主汽车)和虚拟现实系统。用于机器视觉等应用的动态点云数据可能与出于保护目的的静态点云数据完全不同。例如,汽车视觉通常涉及通过具有高捕获频率的激光雷达(或类似)传感器而所获取的相对小的分辨率、非彩色、高动态的点云。这种点云的目的不是供人类消费或查看,而是用于决策过程中的机器对象检测/分类。例如,典型的激光雷达帧包含大约数万个点,而高质量的虚拟现实应用则需要数百万个点。随着时间的推移,随着计算速度的提高和新应用的发现,可能会出现对更高分辨率数据的需求。
虽然点云数据很有用,但缺乏有效和高效的压缩(即,编码和解码过程)可能会妨碍采用和部署。在其他数据压缩(如音频或视频)的情况下不会出现对点云进行编解码的特殊挑战是点云的几何形状的编解码。点云往往被稀疏地填入,这使得对点的位置进行高效编解码更具挑战性。
用于对点云数据进行编解码的更常见机制中的一个机制是通过使用基于树的结构。在基于树的结构中,针对点云的边界三维体积被递归地划分为子体积。树的节点对应于子体积。是否进一步划分子体积的决定可以基于树的分辨率和/或子体积中是否包含任何点。节点可以具有占用标志,该占用标志指示其关联的子体积是否包含点。拆分标志可以以信号通知节点是否具有子节点(即,当前体积是否已经进一步被拆分为子体积)。这些标志在某些情况下可以被熵编解码,并且在某些情况下可以使用预测编解码。
针对点云的三维体积也可以通过使用边界框而被限定。针对边界框的四叉树加二叉树(QTBT)结构允许将点云分割为非立方体积,该非立方体积可以更好地表示点云的整体形状或点云内的对象。四叉树(QT)分割将体积拆分为四个子体积,例如通过使用两个平面来拆分体积,该两个平面将体积切成四个部分。二叉树(BT)分割将体积拆分为两个子体积,例如通过使用一个平面来拆分体积,该一个平面将体积切成两个部分。
常用的树形结构是八叉树。在这种结构中,体积/子体积都是立方体,并且子体积的每次拆分都会产生更进一步的八个子体积/子立方体。另一种常用的树形结构是KD树,其中体积(立方体或矩形长方体)由与轴中的一个轴正交的平面被递归地划分成两个体积。八叉树是KD树的特殊情况,其中体积被三个平面划分,每个平面与三个轴中的一个轴正交。KD树通常可以通过递归地应用二叉树(BT)分割来获取。
的不必然将体积分割为两个子体积(KD树)或八个子体积(八叉树),而是可能涉及其他分割,包括划分成非长方体形状或涉及非邻近子体积。
为了便于解释并且因为它们是用于汽车应用的流行的候选树形结构,本申请可以参考八叉树,但是应当理解,本文中所描述的方法和设备可以使用其他树形结构来实现。
现在参考图1,图1示出了根据本申请的方面的点云编码器10的简化框图。点云编码器10包括树构建模块12,树构建模块12用于接收点云数据并且产生树(在该示例中,八叉树),树表示包含点云的体积空间的几何形状并且指示来自几何形状中的点云的点的位置或地点。
在均匀分割的树形结构(如八叉树)的情况下,每个节点可以由占用位序列表示,其中每个占用位对应于节点中的子体积中的一个子体积并且以信号通知子体积是否包含至少一个点。所占用的子体积被递归地拆分到树的最大深度。这可以称为树的序列化或二值化。如图1所示,在该示例中,点云编码器10包括二值化器14,二值化器14用于将八叉树二值化,以产生表示树的二值化的数据的位流。
然后可以使用熵编码器16对该位序列进行编码,以产生压缩的位流。熵编码器16可以使用上下文模型18对位序列进行编码,该上下文模型18基于由熵编码器16进行的上下文确定来指定针对编解码位的概率。上下文模型18可以在每个位或所限定的位集的编解码之后而被自适应地更新。在一些情况下,熵编码器16可以是二进制算术编解码器。在一些实现中,二进制算术编解码器可以采用上下文自适应二进制算术编解码(CABAC)。在一些实现中,可以使用除算术编解码器之外的其他编解码器。
在一些情况下,熵编码器16可以不是二进制编解码器,而是可以对非二进制数据进行操作。来自树构建模块12的输出八叉树数据可以不被评估为二进制形式,而是可以被编码为非二进制数据。例如,在八叉树的情况下,按其扫描顺序的子体积内的八个标志(例如,占用标志)可以被认为是28-1位数(例如,值在1到255之间的整数,因为该值0对于拆分子体积是不可能的,即,如果它完全未被占用,则不会被拆分)。在一些实现中,这个数字可以由熵编码器使用多符号算术编解码器而被编码。在子体积(例如,立方体)内,限定这个整数的标志的序列可以被称为“模式”。
通常在点云压缩中所使用的约定是,占用位值1以信号通知关联节点或体积“被占用”,即,它包含至少一个点,并且占用位值0以信号通知关联的节点或体积“未被占用”,即,它不包含点。更一般地,占用位可以具有指示被占用的值或指示未占用的值。在下面的描述中,为了便于解释,可以描述示例实施例,其中使用1=占用的和0=未占用的约定;然而,应当理解,本申请不限于该约定。
与编码器10相对应的示例点云解码器50的框图如图2所示。点云解码器50包括熵解码器52,熵解码器52使用与由编码器10使用的相同的上下文模型54。熵解码器52接收压缩的数据的输入位流并且对数据进行熵解码,以产生解压缩的位的输出序列。然后由树重构器56将该序列转换为重构的点云数据。树重构器56根据解压缩的数据和树数据被二值化的扫描顺序的知识来重构树形结构。树重构器56因此能够从点云来重构点的位置(取决于树编解码的分辨率)。
在欧洲专利申请号18305037.6中,本申请人描述了用于基于来自特定节点附近的先前编解码的节点的一些占用信息来在要在对特定节点的占用模式进行编解码时所使用的可用模式分布中进行选择的方法和设备。在一个示例实现中,占用信息是从父节点对特定节点的占用模式中获取的。在另一示例实现中,占用信息是从与特定节点相邻的一个或多个节点获取的。欧洲专利申请号18305037.6的内容通过引用并入本文。这被称为确定“相邻配置”并且至少部分基于相邻配置来选择上下文(即,模式分布)。
在欧洲专利申请号18305415.4,本申请人描述了用于对占用模式进行二进制熵编解码的方法和设备。欧洲专利申请号18305415.4的内容通过引用并入本文。
某些类型的点云数据往往具有很强的方向性。非自然环境尤其表现出很强的方向性,因为这些环境往往具有均匀的表面。例如,在激光雷达的情况下,道路和邻近建筑物的墙壁通常是水平或垂直平面。对于房间内的内部扫描,地板、天花板和墙壁都是平面的。用于汽车视觉和类似应用的激光雷达往往分辨率较低,并且需要快速和高效地压缩。
八叉树是高效的树形结构,因为它们是基于在每种情况下使用三个正交平面来将立方体均分为八个子立方体的统一分割过程,因此以信号通知它们的结构是高效的。然而,使用当前以信号通知过程的八叉树无法利用从识别某些非自然环境的平面性质所获取的效率。然而,KD树能够更好地定制对点云的方向性的分割。这使它们成为针对这些类型环境的更高效和更有效的结构。KD树的缺点是,以信号通知其结构需要比八叉树多得多的数据。KD树不均匀的事实意味着,一些用于改进八叉树压缩的技术对KD树不可用,或者在计算上难以实现。
因此,具有用于以通过利用水平和/或垂直方向性来改进压缩的方式而使用基于统一分割的树形结构来表示非自然环境的机制将是有利的。
根据本申请的一个方面,改进的点云压缩过程和设备以平面编解码模式为特征。平面模式被信号通知,以指示体积在其占用方面满足针对平面性的某些要求。特别是,如果体积的所有所占用的子体积都定位在或位于公共平面中,则该体积是平面的。用于以信号通知的句法可以指示体积是否是平面的,并且如果是,则指示公共平面的位置。通过利用该平面性的知识,可以实现压缩增益。应用启用平面模式和用于平面模式信号通知的上下文自适应编解码的机制的合格性标准有助于提高压缩性能。
在以下的描述中,平面性被假定为相对于与体积和子体积的结构对齐的笛卡尔轴。即,如果体积的所有所占用的子体积都位于与轴中的一个轴正交的公共平面中,则该体积是平面的。作为惯例,轴将假定z轴是垂直的,这表示,(水平)平面与z轴正交。在下面的很多示例中,将使用水平平面性来说明概念;然而,应当理解,本申请不限于水平平面性,并且可以备选地或附加地包括相对于x轴、y轴或x轴和y轴两者的垂直平面性。此外,在一些示例中,平面性不必然通过与笛卡尔轴的正交性来对准。为了说明,在一个示例中,可以限定与x轴和y轴都成45度角的对角垂直平面性。
现在参考图3和图4,图3和图4每个图示出了示例体积300和400。在该示例中,将说明和讨论水平平面性,但是本领域普通技术人员将理解可以将概念扩展到垂直或其他平面性。
体积300被示出为分割为八个子体积。所占用的子体积使用阴影而被表示,而未占用的子体积示出为空。应当注意,体积300中的较低(在z轴或垂直方向上)四个子体积被占用。这种占用模式是水平平面的;即,所占用的子体积中的每个所占用的子体积都在同一水平面上,即,具有相同z位置。体积400示出了水平平面占用模式的另一示例。体积400的所有所占用的子体积都在同一水平面上。体积300示出了下平面被占用的情况。体积400示出了上平面被占用的情况。这可以被称为“平面位置”,其中平面位置以信号通知平面子体积在体积内的位置。在这种情况下,它是一个二进制“上”或“下”信号。
体积的平面性不限于平面的所有子体积(例如,2×2×2体积的上半部分的所有子体积)都被占用的情况。在某些情况下,只有该平面中的一些子体积被占用,前提是该平面之外没有所占用的子体积。事实上,只有一个所占用的子体积可以被认为是“平面的”。体积302、304、306、308、402、404、406和408各自示出了水平平面占用的示例。注意,关于体积308和408,它们满足水平平面的要求,因为在每种情况下,体积308和408的上半部分或下半部分是空的,即,所有所占用的子体积(在这些示例中,一个子体积)位于体积308和408的水平一半中。还应当了解,在这些示例中,具有单个所占用的子体积的体积也将满足相对于y轴的垂直平面性和相对于x轴的垂直平面性的要求。即,体积308和408在三个方向上是平面的。
平面性可以通过平面模式标志(例如,isPlanar)相对于体积而以信号通知。在可能存在多种平面模式的情况下,例如,关于z轴、y轴、x轴,可以有多个标志:isZPlanar、isYPlanar、isXPlanar。在该示例中,为了便于说明,假定仅启用水平平面模式。
平面模式标志指示体积是否是平面的。如果它是平面的,则可以使用第二句法元素、平面位置标志、planePosition来以信号通知平面在体积内的位置。在该示例中,planePosition标志以信号通知平面所占用的子体积是在体积的上半部分还是下半部分中。
在涉及非正交平面的更复杂的实现中,例如,对于相对于轴中的一个或多个轴成对角线的平面,可以使用涉及多个标志或非二进制句法元素的更复杂的信号通知的句法。
平面模式标志和/或平面位置标志可以使用任何合适的编解码方案在位流中编码。在一些实现中,可以使用预测和/或上下文自适应编解码对标志进行熵编码以改进压缩。下面进一步讨论用于确定用于对标志进行编解码的上下文的示例技术。
占用编码和平面模式
通过以信号通知平面性,占用位的编解码可以被改变,因为平面性信息允许对占用模式进行推断,从而缩短占用信号通知。例如,如果体积是平面的,则由平面位置标志未指向的四个子体积可以被假定为空并且它们的占用位不需要被编解码。只需要对所占用的平面的最多四位进行编解码。此外,如果该平面的前三个所编解码的位为0(未占用),则按编解码顺序的最后(第四)位可以被推断为1(占用),因为平面信号通知指示该平面已经被占用。此外,如果平面信号通知指示体积不是平面的,则在两个平面中必须有至少一个所占用的子体积,如果任一平面的前三个占用位为0,则这允许任一平面的最后位的附加推断占用。
因此,以信号通知平面模式可以提供占用数据编解码的效率。然而,平面模式以信号通知将句法元素添加到位流中,并且可能不能在所有情况下都提供效率。例如,在密集的点云中和在某些深度信号通知平面性可能不是有利的,因为具有超过五个所占用的子节点的任何节点根据限定都不能是平面的。因此,具有用于启用平面模式的合格性标准可能是更有利的。提供适应本地数据的合格性标准将更加有利。
在一个示例中,合格性可以偏向于与稀疏云一起使用。例如,合格性标准可以基于度量的(诸如,体积中所占用的子节点的平均数目)。可以针对树的某个深度来确定该运行平均值,然后将其用于在下一较低深度处的平面模式的合格性。在一个示例中,如果所占用的子体积的平均数目大于3,则可以禁用平面模式。这种技术具有简单的优点,但缺乏对云的本地属性的适应。
在另一示例中,可以确定运行概率因素。概率因素可以指示节点是平面的可能性,即,平面性的概率。如果概率低,则表明以信号通知平面性的针对潜在小增益的成本会高。如果当时(“then-current”)概率因素大于阈值,则可以设置阈值合格性值并且可以针对给定体积/节点来启用平面模式:
p=prob(平面)≥阈值
例如,所选择的阈值可以是0.6;然而,应当理解,其他值可以用于其他情况。在编解码过程中更新概率。更新过程可以针对特定应用的快速或慢速更新而被调节。更快的更新可能会给最近所编解码的节点更大的权重或偏差。
示例概率更新过程可以表示为:
p新=(Lp+δ(所编解码的节点))/(L+1)
上式中,p为当前概率,p新为所更新的概率,δ(所编解码的节点)为当前节点的平面状态,非平面为0,平面为1,L为用于调节更新发生的速度的加权因素。加权因素L可以被设置为2减1的幂(诸如,255),以允许简单的整数实现;更具体地,除法可以使用简单的移位操作来实现。注意,平面状态不必然表示平面模式标志已经被编码,因此无论平面模式是否启用,概率都会跟踪最近节点中的平面性。例如,在解码过程中,任何节点的平面状态在与该节点相关联的占用位的解码之后是已知的,而与平面模式标志是否被解码无关。
例如,当节点占用被编码或解码时,可以发生概率的更新。在另一示例中,当针对当前节点来解码节点平面信息时,可以发生概率的更新。然后使用所更新的概率来确定按编解码顺序的下一节点用于平面模式信号通知的合格性。
如前所述,平面模式可以针对水平面(z轴)或垂直平面(x轴或y轴)或任何两个或所有三个被以信号通知。在可以为一个以上的方向以信号通知平面模式的情况下,合格性标准可能会不同。即,每个附加平面模式对节点以信号通知,在占用信号方面的好处是一半。利用第一平面模式,如果是平面的,则可以推断一半的占用位。利用第二平面模式,仅可以推断剩余四个占用位中的两个占用位,以此类推。因此,用于以信号通知附加平面模式的阈值可以高于第一平面模式。
“第一”、“第二”和“第三”平面模式的限定可以基于概率及其从最可能到最不可能的顺序。然后可以将阈值应用于合格性,其中第一阈值低于第二阈值,以此类推。示例阈值是0.6、0.77和0.88,尽管这些仅仅是说明性的。在另一实施例中,仅存在一个阈值并且即使多于一个平面模式满足阈值,也仅启用最可能的平面模式。
现在参考图5,图5以流程图形式示出了使用平面模式对点云数据进行编码的示例方法500。方法500反映了用于对体积的占用信息进行编码的过程。在该示例中,根据基于八叉树的编解码,该体积被均匀地分割为八个子体积,每个子体积具有占用位。为简单起见,本示例假定仅使用一种(例如,水平)平面模式。
在操作502中,编码器评估体积是否合格用于平面编解码模式。如上所述,在一个示例中,合格性可以基于云密度,这可以使用所占用的子节点的平均数目来评估。为了提高局部适应性,合格性可以基于概率因素跟踪。如果平面编解码模式不合格,则如操作504所示,针对体积的占用模式进行编码而不使用平面编解码模式。
如果平面模式被启用,则在操作506中,编码器评估体积是否是平面的。如果不是,则在操作508中,它对平面模式标志进行编码,例如,isPlanar=0。在操作510中,编码器然后基于每个平面存在至少一个所占用的子体积来对占用模式进行编码。即,占用模式被编码,并且如果针对任一平面(高位或低位)而被编解码的前三位为0,则针该平面的最后(第四)位未编解码,并且由于对应子体积必须被占用而被推断为一。
如果平面模式被启用并且体积是平面的,则在操作512中,平面模式标志被编码,例如,isPlanar=1。因为体积是平面的,所以编码器还对平面位置标志planePosition进行编码。平面位置标志以信号通知平面所占用的子体积是在体积的上半部分还是下半部分中。例如,planePosition=0可以对应于下半部分(即,下z轴位置),而planePosition=1可以对应于上半部分。然后基于体积的平面性和所占用的子体积的位置的知识来对占用位进行编码。即,多达四个位被编码,因为四个可以被推断为0,并且如果前三个编码为0,则第四位可以被推断为1。
图6中示出了对所编码的点云数据进行解码的示例方法600。示例方法600由接收所编码的数据的位流的解码器实现。对于当前体积,解码器在操作602中确定该体积是否合格用于平面模式。合格性评估与在编码器处所执行的评估相同。如果不符合条件,则解码器照例对占用模式进行熵解码而不使用平面模式信号通知,如操作604所示。
如果平面模式被启用,则在操作606中,解码器解码平面模式标志。所解码的平面模式标志指示体积是否是平面的,如操作608所指示的。如果不是平面的,则解码器在知道每个平面中的至少一个子体积被占用的情况下对占用位进行解码。这可以允许解码器根据所解码的其他位的值来推断占用位中的一个或两个占用位。
如果所解码的平面模式标志指示体积是平面的,则在操作612中,解码器解码平面位置标志。所解码的平面位置标志指示所占用的子体积是体积的上半部分还是下半部分。基于该知识,解码器然后将未占用的一半中的四个占用位的值推断为0,并且它针对所占用的一半的占用模式的多达四个位进行解码,如操作614所示。
如前所述,占用位的编解码可以包括部分地基于相邻配置的熵编码,其中相邻配置反映与当前体积共享至少一个面的各种体积的占用。在评估相邻配置时,如果相邻配置(NC)为0,表示没有相邻体积被占用,则可以对标志进行编码以信号通知当前体积是否具有单个所占用的子体积。
使用NC和单节点信号通知的占用位的编解码可以基于如图7所示的平面模式信号通知来适配。图7示出了占用位编解码的示例方法700。示出方法700的流程图的部分反映了平面信号通知对占用位编码的影响。尽管未示出,但可以假定发生了合适的合格性测试并且平面标志和位置标志(如果适用的话)被编码/解码。在该示例中,将假定只有一种平面模式是可能的,但将理解到其他模式或附加模式的扩展。
在操作702中,编解码器评估NC是否为0,即,是否所有相邻体积都是空的。如果不是,则编解码器在操作704中评估体积是否是平面的。如果不是平面的,则编解码器在知道每个平面中的至少一个位是1的情况下对八个占用位进行编码或解码,如操作706所示。如果是平面的,则编解码器推断未占用的平面的位为0,并且在知道至少一个占用位为1的情况下对其他四位进行编解码。
如果NC为0,则编解码器确定是否存在单个所占用的子体积,这在位流中由单个节点标志指示,如操作710所示。如果单个节点为真,则在操作712中,数据被旁路编解码以信号通知关于体积内的单个节点的位置的任何剩余xyz位置数据,这些数据尚未从所编解码的平面模式和平面位置标志中获取。例如,如果平面模式被启用以对水平平面信息进行编解码,则为了以信号通知单个节点位置,x和y标志被旁路编解码,但z位置是从平面位置标志中获知的。
如果单个节点为假,则在知道至少两个子体积被占用的情况下对占用位进行编解码,如操作714所示。这可以包括确定体积是否是平面的,并且如果是,则确定其平面位置,然后相应地对占用位进行编解码。例如,如果是平面,则可以推断未占用的平面包含所有零位,并且可以对所占用的平面的位进行编解码,并且可以基于至少两个子体积被占用的知识来推断其中的多达两个所占用的平面。
现在参考图8,图8示出了说明利用可能的三种平面模式对占用位进行编解码的一种示例方法800的流程图。示出方法800的流程图的部分反映了平面信号通知对占用位编解码的影响。尽管未示出,但可以假定发生了合适的合格性测试并且平面标志和位置标志(如果适用的话)被编码/解码。编码器首先评估所有三个平面模式是否指示体积相对于所有三个轴是平面的,如操作802处所示。如果是,则它们共同指示单个所占用的子体积的位置,并且所有占用位可以被推断,如由操作804所示。
如果不是全部是平面的,则编码器在操作806中评估相邻配置是否为0。如果NC不为0,则在操作808中基于平面模式信号通知对占用位进行编解码。如上所述,占用位编码可以被平面模式信号通知屏蔽,从而允许做出很多可能的推断来缩短占用编解码。
如果NC为0,则可以对单个节点标志进行编解码。编码器首先评估平面模式标志中的至少一个平面模式标志是否指示平面模式为假。如果是,这暗示它不可能是单节点情况,因为多个子体积被占用。因此,如果不是这种情况,即没有平面为假,则在操作810中,单节点标志在操作812中被评估和编解码。如果设置了单节点标志,则单个节点位置的x、y、z、位可以被旁路编解码到它们尚未从平面位置数据中推断出的程度,如操作814所示。
如果操作810确定至少一个平面模式标志指示体积是非平面的,或者如果在操作812中信号节点标志指示它不是单个节点,则编解码器在操作816中评估是否存在两个平面模式标志指示体积在两个方向上是平面的,并且如果是,则可以在操作804中推断所有占用位。如果不是,则在操作818中在知道平面性(如果有的话)并且至少两位是非零的情况下对占用位进行编解码。
本领域普通技术人员将理解,针对点云编解码的当前测试模式所采用的特征是推断直接编码模式(IDCM),IDCM用于处理非常孤立的点。由于与相邻节点几乎没有相关性,因此直接对孤立点的位置进行编解码,而不是对级联的单个子节点的占用信息进行编解码。该模式在节点隔离的条件下是合格的,并且在合格的情况下,IDCM激活由IDCM标志以信号通知。在激活的情况下,对属于该节点的一个或多个点的局部位置进行编解码,然后该节点成为叶节点,从而有效地停止了针对该节点的递归分割和基于树的编解码过程。
本以信号通知平面性的过程可以通过在以信号通知IDCM之前通过以信号通知平面性(如果合格的话)并入具有IDCM模式的编解码过程中。首先,节点的IDCM合格性可能会受到平面信息的影响。例如,如果节点不是平面的,则该节点可能不能够用于IDCM。其次,在IDCM激活的情况下,平面知识有助于对与节点相关联的体积中的点的位置进行编解码。例如,可以应用以下规则:
·如果节点是x平面的,则平面的位置planeXPosition是已知的,因此点的x坐标的最高位从平面位置是已知的。该位在IDCM中未被编解码;解码器将从平面位置中推断它
·如果节点是y平面,则平面的位置planeYPosition是已知的,因此点的y坐标的最高位从平面位置是已知的。该位在IDCM中未被编解码;解码器将从平面位置中推断它
·如果节点是z平面的,则平面的位置planeZPosition是已知的,因此点的z坐标的最高位从平面位置是已知的。该位在IDCM中未被编解码;解码器将从平面位置中推断它
在节点在多个方向上是平面的情况下,xyz坐标的最高位的推断仍然成立。例如,如果节点是x平面和y平面,则x坐标和y坐标两者的最高位由planeXPosition和planeYPosition推断。
平面模式句法的熵编解码
平面模式句法(诸如,平面模式标志或平面位置标志)可以表示位流的重要部分。因此,为了使平面模式在压缩点云数据中有效,确保平面信息利用有效的上下文确定进行熵编解码可能是有利的。
回想一下,节点/体积是否是平面的是使用平面模式标志isPlanar来以信号通知的。在本示例的讨论中,将假定平面模式适用于水平平面性,即,相对于z轴。在该示例中,该标志可以称为isZPlanar。标志的熵编码可以采用二进制算术编解码器,例如,上下文自适应二进制算术编解码器(CABAC)。上下文(或内部概率)可以使用一个或多个预测因素而被确定。
针对当前节点或子体积的平面模式标志以信号通知子体积内的子子体积是否是平面的。当前节点或子体积存在于父体积中。作为示例,用于确定用于对平面模式标志进行编解码的上下文的预测因素可以包括以下一项或多项:
(a)父体积平面性;
(b)邻近相邻体积的占用;以及
(c)在相同深度和相同z轴位置处到最近的所占用的所编码的节点的距离。
图9示出了关于父节点902内的当前节点900的三个示例因素。
因素(a)指的是父节点902是否是平面的。不考虑它是否是使用平面模式而被编解码的,如果父节点902满足针对平面性标准(在这种情况下,水平平面性),则父节点902被认为是平面的。因素(a)是二元的:“父是平面的”或“父不是平面的”。
因素(b)指的是在与平面对齐的父体积的面邻近的父深度处的相邻体积904的占用状态。在水平平面性的情况下,如果当前节点900在父节点902的上半部分,则相邻体积904在父节点902的垂直上方。如果当前节点900在父节点902的下半部分,则相邻体积904将在垂直下方。在垂直平面性的情况下,相邻体积将与一侧邻近,这取决于x轴或y轴平面性和当前节点的位置。因素(b)也是二元的:相邻被占用,或未被占用。
因素(c)指的是在已经被编解码的节点位于与当前节点900相同的深度并且位于公共平面(即,在与当前节点900相同的z轴位置处)中的条件下,最近的已经编解码的节点906有多远。已经被编解码的节点906不必然在邻近体积中,并且可以在一定距离之外,这取决于云的密度。编码器跟踪已经被编解码的节点并且标识满足这些标准的最近的节点。当前节点900与已经被编解码的节点906之间的距离d可以根据节点900和906的相对位置来确定。在一些实施例中,为了计算简单,可以使用L1范数来确定距离,即,delta-x的绝对值加上delta-y的绝对值。在一些实施例中,L2范数可以用于确定距离,即,由delta-x平方加上delta-y平方所给出的平方和(的平方根)。
在一些实现中,距离d可以离散为两个值“近”和“远”。可以适当地选择“近”d与“远”d之间的划分。通过将距离分类为近或远,因素(c)也是二元的。应当理解,在一些实现中,距离可以离散为三个或更多个值。
如果在上下文确定中使用所有三个示例因素,则可以维持2×2×2=8个单独的上下文以用于平面模式标志的编解码。
如果平面模式标志被编解码用于当前节点900并且当前节点900是平面的,则平面位置标志可以被编解码(诸如,planeZPosition)。平面位置标志以信号通知当前节点900的哪一半包含所占用的子子体积。在水平平面性的情况下,平面位置标志以信号通知下半部分或上半部分。
平面位置标志的熵编码也可以采用二进制算术编解码器(例如,CABAC)。上下文(或内部概率)可以使用一个或多个预测因素而被确定,其可能的示例包括:
(a')邻近相邻体积904的占用;
(b')在相同深度和相同z轴位置处到最近的所占用的已经被编解码的节点906的距离;
(c')如果在相同深度和z轴位置处的最近的所占用的已经被编解码的节点906是平面的,则其平面位置;以及
(d')当前节点900在父节点902内的位置。
因素(a')与以上关于平面模式标志上下文所讨论的因素(b)相同。因素(b')与上面讨论的关于平面模式标志上下文的因素(c)相同。在一些示例实现中,因素(b')可以将距离离散为三个类别:“近”、“不太远”和“远”。如上所述,距离可以使用L1范数或L2范数或任何其他合适的度量而被确定。
因素(c')指的是最近的所占用的已经被编解码的节点906是否是平面的,并且如果是的话,它是顶部平面还是底部平面,即,其平面位置。结果是,即使是遥远的已经被编解码的平面节点也可能是针对当前节点的平面性或平面位置的强预测因素。即,因素(c')可能有三种结果:不是平面的、与当前节点900的平面位置相同、与当前节点900的平面位置不同。如果当前节点900和最近的已经被编解码的所占用的节点906具有相同的平面位置,则它们的所占用的子子体积都在公共水平面中的同一z轴位置处对齐。
因素(d')指的是当前节点900是位于父节点902的上半部还是下半部(在水平平面性的情况下)。因为父节点由于合格性要求而可能是平面的,如果当前节点900是平面的,则平面位置更可能在父节点902的“外部”而不是朝向中间。因此,当前节点900在其父节点902中的位置对该当前节点900内的平面位置的概率具有显著影响。
在结合所有四个因素的实现中,在相同z处最近的所占用的已经被编解码的节点906并且深度(作为当前节点900)是平面的情况下,可能存在2×3×2×2=24个预测组合;否则,当在相同z和相同深度处最近的已经被编解码的节点906不是平面的时,改为使用特定上下文。因此,在这样的示例中,二进制算术编解码器可以使用24+1=25个上下文来对平面位置标志进行编解码。
尽管以上示例在平面模式标志的情况下涉及用于上下文确定的三个因素,并且在平面位置标志的情况下涉及用于上下文确定的四个因素,但是应当理解,本申请包括使用个体因素用于上下文确定以及这样的因素的所有组合和子组合。
现在参考图10,图10示意性地示出了用于在上下文确定过程期间管理最近的所占用的已经被编解码的节点的确定的机制的一个示例实现。在该示例机制中,编解码设备使用存储器(例如,易失性或持久性存储器单元)以实现缓冲器1000,缓冲器1000包含与所占用的已经被编解码的节点有关的信息。特别地,缓冲器1000分配空间以跟踪树中具有相同z轴位置和深度的已经被编解码的节点。在该特定示例中,缓冲器1000跟踪与具有相同z轴位置和深度的多达四个已经被编解码的节点有关的信息。
示例缓冲器1000的每一行对应于z轴位置和深度。四个列对应于具有该z轴位置的四个最近被编解码的所占用的节点。例如,示例行1002包含关于四个已经被编解码的所占用的节点的数据。针对每个已经被编解码的节点的所存储的数据可以包括已经被编解码的所占用的节点的x和y位置、节点是否为平面以及平面位置(在节点为平面的情况下)。
在对当前节点1004进行编解码的过程中,基于示例行1002用于与当前节点1004相同的z轴位置,编解码设备访问缓冲器1000以从示例行1002中的四个所存储的节点中标识最近的所占用的已经被编解码的节点。如上所述,距离度量可以基于L1范数、L2范数或任何其他距离度量。为缓冲器1000中的每个节点而被存储的x和y位置有助于直接确定最近节点,尤其是在L1范数的情况下。
一旦最近节点(诸如,最近节点1006)被标识,它与当前节点1004的距离以及可能它的平面性和/或平面位置被用于(多个)上下文确定。然后通过将当前节点1004添加到缓冲器1000的第一位置1008并且右移缓冲器1000的该示例行1002中的所有其他节点数据来更新缓冲器1000,从而导致缓冲器1000中的最后一项被丢弃。在一些示例中,基于距离确定,所标识的最近节点可以与当前编解码保持更高的潜在相关性,因此在将当前节点1004添加到缓冲器1000之前,示例行1002的内容首先被重新布置,以将最近的节点1006移位到第一位置1008并且将节点向右移位以适应,例如在该示例中,第一位置1008和第二位置中的节点数据分别移位到第二位置和第三位置。以这种方式,编解码设备避免过早地将最近所标识的最近节点从缓冲器1000中排除。
应当理解,所描述的缓冲器1000是用于管理关于最近节点的数据的机制的一个示例实现,但是本申请不必然限于该示例,并且可以使用用于跟踪最近节点信息的很多其他机制。此外,将理解,在缓冲器1000中仅保留固定数目的最近被编解码的所占用的节点意味着存在所标识的节点实际上不是最近的所占用的已经被编解码的节点,而仅仅是从缓冲器1000可用的最近的已经被编解码的节点;然而,即使缓冲器限制为四个候选,如上例所示,对性能的影响也可以忽略不计。
占用模式的角度模式编码
接下来,将描述用于对已经由包括波束集的波束组合获取(例如,采样)的点云进行编解码的特定模式。例如,波束可以是光束。没有故意限制,将参考激光雷达作为这种用于获取点云的波束组合的示例,但是应当理解,其他波束组合也是可行的并且被理解为被本说明书所涵盖。同样地,在没有故意限制的情况下,将参考激光束,但是其他(光学)波束也是可行的并且被理解为被本说明书所涵盖。例如,波束组合可以涉及任何旋转波束组合,包括但不限于激光雷达。作为备选,波束组合可以与扫描波束组合或固态激光雷达有关。在任何情况下,假定这些波束组合以某些预定义(和已知)角度、特别是仰角来发射波束。应当理解,在整个申请中描述的任何波束组合都可以安装在例如汽车或任何其他交通工具上。
通常,激光雷达获取的点云是由旋转激光束集获取的。图11示意性地示出了这种旋转激光束集的示例。最常见的设置是发射相应激光束1106的激光器1104(例如,16、32或64个激光器)的垂直布置阵列。激光器1104安装在旋转头1101上,旋转头1101围绕旋转轴1102旋转。备选地,激光器1104本身可以围绕旋转轴1102旋转。包括激光器1104的头1101可以被称为波束组合。
自然地,相对于垂直于头部轴的平面,由特定激光束获取的点具有固定的(或固定到噪声和/或测量精度)垂直获取角度θ(例如,仰角)。这在图12中被示意性地示出,其中激光器1204以相对于垂直于头部轴1202的平面1208的获取角度(例如,仰角)θ来发射激光束1206。图13示出了针对头部1301的坐标轴的可能限定。
图14以r-tan(θ)图示出了由具有64个激光束的示例激光雷达获取的点云的点。在图中可以清楚地观察到有些固定的激光角tan(θ)。正角表示激光器指向水平面上方(即,朝向天空),而负角表示激光器指向水平面下方(即,指向地面)。值得注意的是,激光雷达的激光被刻意以不同角度而被定向——例如,不同激光可以拾取同一高的物体的不同部分,如建筑物、电线杆、树木等。根据限定并且如图15所示,r是点1505距激光雷达头1301(或一般的波束组合)的水平距离,并且垂直角tan(θ)的正切被定义为比率z/r,其中z是点1505相对于激光雷达头部1301的垂直标高。
从图14可以看出,点云的点可以在“准”2D空间中表示。例如,理论上,可以在2D空间(x,y)和与激光束相对应的垂直角θ的有限集中表示。或者等价地,在二维极空间中,其中是方位角,并且垂直角的有限集θ。换而言之,可以在球坐标中表示点,其中θ可以只取有限数目的值。这是遮挡的结果,遮挡导致每个最多只有一个点。这种准二维空间是理论上的,但是实际上,测量噪声/精度和时间积分不会导致可能的θ的严格有限集,这是激光器机械安装的结果。相反,可以观察到,θ的值分布在有限数目的值θ激光周围,因此必须处理这些值周围的“噪声”问题。
前述准2D结构主要取决于一个或多个激光雷达(或一般的波束组合)的位置/定向和(多个)激光雷达的固有特性。如将在下文更详细描述的,因此将句法元素(例如,参数、标志)包括到描述(多个)激光雷达(或通常是一个或多个波束组合)的特性的位流中可能是有利的。这些句法元素可以指示以下至少一项:波束组合的参考位置、特定波束的原点位置、或特定波束的波束角度。可以在帧或序列级别将这些句法元素包括到位流中。在任何情况下,该数据应当尽可能靠近所压缩的数据位流,以确保位流的可解码性并且将丢失针对可解码性所需数据的风险降至最低。
注意到上述内容,本申请的一些实施例寻求在点云的有效表示中使用垂直激光角度{θ激光}的、从激光雷达特性(或相关波束组合的特性)中所获取的知识,使得压缩得到改善。此外,由于通过使用八叉树表示和使用所占用的节点的相邻配置已经获取了强大和稳健的压缩能力,一些实施例试图在对点云的八叉树表示进行编码的上下文中使用该知识。
从点云的准2D结构中获利的可能解决方案基于表示空间的变化。在这些基于空间变化的解决方案中,用于对点云进行编解码的高级句法可以以信号通知与空间变化和激光雷达在变化的空间中的特性相关的信息。这种基于空间变化的解决方案的第一缺点是,很难在不要求变化空间中的附加精度的情况下构建可逆的离散空间变化。因此,3D点云的无损压缩很难获取良好的性能。空间变化的示例是单色图像中点云的表示,其中对于耦合图像帧属于有界空间[0,2π]*[-π/2,+π/2],并且像素的强度由距离r提供。当然,并非“图像”的所有像素都被占用。因此,点云可以看作是角度空间中的深度图。这引发了多个问题,诸如在和θ上分离所有点所需要的精度,使得它们中没有两个落在同一像素上。此外,这种表示可以高效地用于压缩点云还有待证明。这可能会使用特定局部预测(例如,从围绕固定角度θ激光的θ的扩展中获利)和其他压缩技术。它显然与点云的八叉树表示不兼容。最后,2D帧表示的主要缺点是,无法处理由一个以上的激光雷达获取的点云。这是非常实用的用例,因为一些制造方设想将多个激光雷达安装在车辆上,例如安装在上述车辆的侧面,而不是安装在车顶上的单个激光雷达。因此,原生3D空间表示似乎是解决多激光雷达获取问题的唯一合理表示。
在点云的几何结构的八叉树表示的框架中,本申请提出限定和使用与点云的点或八叉树的节点相关联的角度θ,以改进附加到父节点并且以信号通知该父节点的子节点的占用的占用位的压缩。使用与点云的点或八叉树的节点相关联的角度θ的对应编解码模式在本申请中将被称为角度编解码模式。根据角度编解码模式,将与点或节点相关联的角度θ同与波束(例如,激光束)相关联的固定角度{θ激光}进行比较,并且该比较用于建立对子节点的占用的估计。实际上,在二进制熵编解码器中直接或间接(平面模式)编解码子节点的占用位的上下文的选择是基于估计的值而被执行的。现在将在下面更详细地描述该方案的可能实现。通常,可以说角度编解码模式涉及基于针对体积的子子体积(或子节点)或子子体积组的角度信息来确定用于针对当前体积(或节点)的占用模式进行熵编解码的上下文,其中角度信息指示相对于与提供波束的波束组合相关联的位置的一个或多个角度(例如,仰角)。
令(x头部,y头部,Z头部]为(激光雷达的)头部(或一般为波束组合)的位置,在三维空间XYZ(体积空间)中沿着z轴而被垂直定向,点云的点属于该空间。点(x,y,z)的垂直角θ的正切tan(θ)是仰角z-z头部与该点相对于头部的距离r的比值。
从图16的r-tan(θ)图可以看出,图16示出了相对于图14的详细视图,针对由同一波束探测的点,角度tan(θ)在某种程度上是恒定的,但并非严格恒定。事实上,从图16的面板(b)和(c)可以看出,针对每个波束,在(r,tan(θ))图中存在相应包络,该包络包含由该波束获取的点。这个包络的宽度(在tan(θ)方向上)显然取决于距离r。这个包络的宽度是由于噪声和获取精度造成的,并且针对较低的r而变宽。值得注意的是,相邻波束的包络不相互交叉。
虽然对相应包络的点的归属已经提供了可以用于改进压缩性能的附加知识,但获取通过宽范围的距离r而表现出更稳定值的、已校正角度θcorr将是有利的。例如,这可以通过将校正项添加到每个波束发射器(例如,激光)相对于头部位置(或通常是相对于波束组合的参考位置)的位置。
图17示意性地示出了波束发射器1704相对于波束组合1701的参考位置1710的位置,用于解释校正角度θ以获取已校正的角度θcorr的示例方法。特别地,波束发射器(例如,激光器)L的位置(地点)通过相对于波束组合的参考位置1710(例如,头部位置)的位移(rL,zL)1712而被校正,使得相应波束1706从垂直位置Z头部+ZL发射并且(点的)到波束发射器激光器的距离被校正为r-rL。因此,波束发射器的已校正的位置可以被称为针对相应波束1706的原点位置或波束原点位置。已校正的角度θcorr取决于波束发射器指数(例如,激光指数)L并且由下式提供
针对不太靠近波束组合的点(例如,激光雷达的头部),即,距离r的值不太小,这个角度可以被近似为
并且只需要垂直校正ZL,而径向校正rL可以被忽略。因此,可以从波束组合的参考位置开始,基于可以在(rL,zL)方面或仅在ZL方面所表示的相对位移来确定波束原点位置。
图18示出了垂直校正ZL对角度θ的影响。面板(a)对应于图16中的面板(b),面板(b)对应于图16中的面板(c)。面板(a)中的上包络和面板(b)中的下包络与未校正(即,初始)角度θ相关。面板(a)中的下包络和面板(b)中的上包络与已校正的角度θcorr相关。可以清楚地看出,已校正的角度表现出基本上与距离r无关的平均常数行为。相应波束或波束发射器(例如,激光)L的角度θL=θlaser被限定为该常数。
为了在编码器侧和解码器侧两者处都能够校正角度θ,以下值可以由编码器确定或提供给编码器,并且被编码到位流中,使得解码过程可以使用相同的波束组合信息(例如,激光雷达信息)作为编码过程:
·例如,波束组合的参考位置(例如,中心位置),诸如(激光雷达的)头部位置(x头部·y头部·Z头部)
·针对每个波束发射器(例如,激光)的相对位置(rL,zL)
·针对每个波束发射器(例如,激光)的恒定角度θL
下面将更详细地描述已经用于获取(例如,采样)要被编解码的点云的波束组合或多个波束组合的特性的句法元素的示例。
作为示例,波束组合的参考位置(例如,激光雷达头的位置)可以由用户提供,并且波束组合的波束发射器(例如,激光器)的相对位置和已校正的角度可以通过算法找到。在一个示例中,这可以如下执行:
1.首先,通过分析未校正的角度θ的直方图,提取属于同一激光束L的点
2.然后,通过最小化已提取的点上的已校正的角度θcorr,L的标准差来确定激光束L的相对位置(rL,zL)。例如,这可以通过经典的最小化算法来执行。在仅考虑垂直位移ZL的情况下,这是对候选垂直相对位置间隔的简单最小化。
3.最后,激光L的恒定角度θL是已提取的点上的已校正的角度θcorr,L的平均值。
接下来,将描述用于确定针对点云的特定点或特定体积、子体积或子体积组的已校正的角度的示例方法。特别地,描述了用于确定点云的点相对于波束(例如,激光束)L的已校正的角度的正切tan(θcorr,L)的方法。以类似的方式,可以通过简单地将节点同化到位于其中心的点来确定八叉树的节点(或其相关联的体积)的已校正的角度。类似的考虑适用于体积的子体积或子体积组。
关于体积(与八叉树的相应节点相关联),可以理解,存在关于体积的大小和位置的条件,以明确确定通过哪个波束已经获取了体积(例如,体积中的点)。如果两个波束与体积相交,则存在歧义。为了解决这个问题,本申请提出引入用于角度编解码模式的体积的(角度)合格性的概念。
在一个示例中,体积(或其关联节点)的角度合格性确定如下:
1.计算(参考位置,例如,中心)体积与波束组合参考位置(例如,激光雷达头部的位置(x头部,y头部,z头部))的距离r
2.通过Δθ=E/r计算体积的正切角度大小Δθ,其中E是体积的典型长度(例如,立方体边缘的长度)
3.如果2Δθ≤Δθmin,激光=min|tan(θL1)-tan(θL2)|,则该体积是合格的,其中所有波束对均采用最小值,即,节点的角度大小小于(角度)最近的两个波束之间的角度增量。选择因素2作为提供某种安全边际的非限制性示例。其他因素(例如,大于或等于1的因素)也是可行的。
图19示出了角度合格体积1920和角度不合格的体积1925的示例。即,体积1925的大小及其与波束组合1901的距离使得它被来自多个波束发射器1904的多个波束1906采样。另一方面,体积1920的大小及其与波束组合1901的距离为使得它最多由单个波束1906采样。
通常,确定体积(或其相关节点)的角度合格性可以通过首先确定从波束组合的参考位置看到的体积的角度大小的测量来进行。如上所述,参考位置可以是头部的位置。角度大小的测量可以与从参考位置看到的体积边缘的角度有关,并且可以例如基于体积边缘的长度和体积(的参考位置)到波束组合的参考位置的距离来确定。因此,角度大小的测量例如可以是上面所限定的角度大小Δθ。然后,将角度大小的测量与波束组合的相邻波束之间的差角度的测量进行比较,例如上面所限定的差角度Δθmin,激光。即,差角度可以是波束组合的最近的相邻波束之间的差角度。最后,基于比较结果来确定体积是否是角度合格的。例如,确定角度合格性可以基于角度大小是否小于差角度的一半(或差角度的任何其他合适的分数,以提供合适的安全余量)。如将在下文更详细描述的,体积的角度合格性可以暗示用于对体积(的子体积)的占用模式进行编解码的上下文可以基于角度信息来确定或选择。
一旦确定了角度合格,就可以例如通过以下方法来确定属于角度合格体积的波束L:
1.从体积参考位置(例如,体积中心)的位置(x,y,z)确定相对于波束组合位置(x头部,y头部,z头部)的z和r
2.计算未校正的角度tan(θ)=z/r
3.通过找到针对Itan(θ)-tan(θL)|最小的波束索引L来确定体积/点属于哪个最近的波束L
一旦确定了波束(例如,激光束)L,就可以通过以下公式来计算已校正的角度
或
其中第二等式实际上可以很有用,因为它避免了计算另一平方根的倒数。
通常,可以遵循以下方法来确定与八叉树的节点相关联的体积的已校正的角度θcorr。初始地,确定体积内的参考位置相对于波束组合的参考位置的第一角度(例如,仰角)。例如,体积内的参考位置可以是体积的中心。例如,波束组合的参考位置可以是波束组合的中心位置。基于第一仰角,确定假定已经获取(或者实际已经获取)体积内的点的特定波束(或对应波束发射器)L。接下来,确定或获取针对该特定波束的原点位置(波束原点位置)。这可以通过上述任何合适的方法来完成。在特定波束的原点位置可用的情况下,可以相对于针对特定波束的原点位置确定子体积或子体积组(例如,体积内的平面)的已校正的仰角。
图20以流程图形式示出了对通过包括波束集的波束组合获取的点云进行编码以生成压缩的点云数据的位流的方法2000的示例。点云由树形结构(例如,八叉树形结构)限定,该树形结构具有多个节点,这些节点具有父子关系并且表示对象的三维位置,如本申请中其他地方所述。点云位于递归地拆分成子体积并且包含点云的点的体积空间内。点云可以相对于体积空间中的笛卡尔轴而被限定,该笛卡尔轴可以是垂直于水平面的垂直定向z轴并且基本上平行于波束组合(例如,激光雷达)的主轴或主定向轴(例如,旋转轴)。在体积空间中,体积被分割为子子体积集,并且该体积与树的节点相关联,其子体积与该节点的子节点相关联。与每个相应的子子体积相关联的占用位指示相应的子子体积是否包含点中的至少一个点。可以说子子体积的占用位限定占用模式。在方法2000中,针对与拆分成子子体积的体积相关联的当前节点来执行操作2010到2040。
在操作2010中,基于体积的子子体积的占用状态来确定针对体积的占用模式。操作2020到2040涉及将占用模式的表示熵编码到位流中。在操作2020中,确定针对体积的子子体积或子子体积组的角度信息。该角度信息指示相对于与体积空间内的波束组合相关联的位置的一个或多个角度(例如,仰角)。仰角可以指示当从与波束组合相关联的位置看时,相应的子子体积或子子体积组在平面上方的仰角,该平面与波束组合的主定向(例如,主轴)(诸如,波束集的公共旋转轴,例如,激光雷达的旋转轴)基本正交。在一些实现中,该平面可以是水平平面(例如,xy平面)。例如,这些角度可以表示为它们的正切。与波束组合相关联的位置可以是波束组合的(参考)位置或波束组合的特定波束的原点位置。在操作2030中,基于角度信息来确定用于对占用模式的表示进行编码的上下文。最后,在操作2040,使用所确定的上下文对占用模式的表示进行熵编码。
图21以流程图形式示出了对压缩的点云数据的位流进行解码,以生成重构的点云的方法2100的示例。根据方法2000,假定点云已经通过包括波束集的波束组合而被获取。此外,点云假定以与上述方法2000相同的方式被限定。针对与拆分成子子体积的体积相关联的当前节点来执行操作2110至2130。
在操作2110中,确定针对体积的子子体积或子子体积组的角度信息。该角度信息指示相对于与体积空间内的波束组合相关联的位置的一个或多个角度(例如,仰角)。在操作2120中,基于角度信息来确定用于对体积的占用模式的表示进行解码的上下文。如上所述,占用模式指示体积的子子体积的占用状态。最后,在操作2130中,使用所所确定的上下文来对位流进行熵解码,以生成占用模式的重构表示。
如上所述,角度信息可以与已校正的角度(例如,已校正的仰角)相关,在某种意义上,已校正的角度是参考假定已经获取当前体积中(例如,采样的)的点的特定波束的波束原点位置来测量的。因此,确定角度信息可以包括:确定体积内的参考位置相对于波束组合的参考位置的第一(例如,初始)仰角。一旦该第一仰角可用,它可以用于确定特定波束,该特定波束可以假定已经获取体积内的点。知道特定波束,可以确定它的原点位置,例如通过使用查找表或通过算法确定它。最后,可以相对于特定波束的原点位置来确定体积的子子体积或子子体积组的一个或多个仰角。然后这些仰角将对应于已校正的仰角。
接下来,将描述在上面介绍的平面编解码模式中使用角度信息用于确定对平面位置标志进行熵编解码的上下文的实施例。
已经观察到,对平面信息进行直接编解码(即,平面模式标志(例如,标志isPlanar))和用于平面位置的平面位置标志的位(例如,标志planePosition)而不进行压缩可能会导致低效的平面模式。因此,压缩与平面模式相关联的句法可能是有利的。如上所述,可以通过基于预测方法来针对平面位置标志选择二进制熵编解码器的上下文来实现平面位置标志的这种压缩。
对于z平面模式,如果节点是平面的(isZPlanar==true),则平面位置(底部或顶部)必须由额外的位planeZPosition以信号通知。该位也使用二进制算术编解码器来进行编解码,其上下文取决于预测信息,如图9所示。该预测信息由以下任何、部分或全部项组成:
·与当前节点邻近的父节点垂直相邻的占用,
·在相同z和相同深度处与最近的已经被编解码的节点的距离d,其中d可以离散为三个值“近”或“不太远”或“远”,
·在相同z和相同深度(与当前节点)的最近的已经被编解码的节点的平面位置(如果有,底部或顶部),以及
·当前节点相对于其父节点的垂直坐标z。
使用所有上述预测信息,这会导致2×3×2×2=24种可能的预测组合,如果在相同z和深度(与当前节点)处的最近的已经被编解码的节点是平面的;否则,当在相同z和相同深度处的最近的已经被编解码的节点不是平面时,将使用额外的特定上下文。因此,二进制算术编解码器可以使用24+1=25个上下文来对平面位置进行编解码。
本实施例提出通过使用针对角度合格节点的角度信息(例如,tan(θcorr,L))的知识来增强或替换位planeZPosition的预测信息。
因此,本实施例中的操作2030或操作2120中的上下文确定可以取决于该体积是否是(被确定为)平面体积。为此,方法2000和2100可以包括相应的确定步骤。如上所述,平面体积是在相应的平行平面中被分割为多个子子体积集的体积,其中包含至少一个点的所有子子体积都位于同一平面内。平行平面可以理解为平行于水平面,或正交于波束组合的主轴(例如,激光雷达头部的旋转轴)。以八叉树为例,会有四个子子体积的第一集和四个子子体积的第二集,并且平面位置标志将指示包含点的子子体是否位于在第一集或第二集中。
如果体积是(被确定为)平面体积,则在操作2030或操作2120中确定用于对占用模式的表示进行编解码的上下文包括:基于以上所限定的角度信息来确定用于对平面位置标志进行编解码的上下文。该平面位置标志(例如,标志planeZPosition)以信号通知平面的位置,包含至少一个点的子子体积位于该平面中。此外,在操作2040或操作2130中对占用模式的表示进行熵编解码包括:使用所确定的上下文对平面位置标志进行熵编解码。
在一些实现中,以上给出的预测信息可以被角度信息取代、部分取代或增强。因此,确定用于对平面位置标志进行编解码的上下文可以至少部分基于以下一项或多项:(a')相邻体积在该体积的父体积的深度处的占用,(b')体积与最近的已经被编解码的占用体积之间的距离,(c')最近的已经被编解码的占用体积的平面位置(如果有的话),或(d')体积在父体积中的位置,以及角度信息。该距离可以是近的、不太远的或远的,并且基于计算距离度量并且将其与第一阈值和第二阈值进行比较。通常,确定用于对平面位置标志进行编解码的上下文可以基于(a')、(b')、(c')、(d')中的三个或更多个(或四个或更多个)的组合、以及角度信息。
用于确定上下文的角度信息可以包括:针对体积的多个平行平面中的每个平行平面的、相对于已经针对体积而被确定的特定波束的原点位置的相应仰角。因此,确定角度信息可以包括:确定针对相应的平面的这些仰角。可以针对每个平行平面内、相对于特定波束的原点位置的参考位置(例如,中心位置)来确定仰角。确定用于对平面位置标志进行编解码的上下文可以包括:将多个平行平面中的每个平行平面的相应仰角与假定已经对体积进行采样的特定波束的波束角度θL(或tan(θL))进行比较,并且基于相应比较的结果来确定用于对平面位置标志进行编解码的上下文。
对于八叉树的情况,以上相当于分别针对底部和顶部虚拟平面计算两个角度,即,底部和顶部已校正的垂直角。在一些实现中,两个角度的确定可以取决于节点的子节点是否是角度合格的。这两个角度对应于与位于两个底部和顶部虚拟平面中心处的点相关联的已校正的角度tan(θ底部,L)和tan(θ顶部,L),并且如图22所示。在该图中,角度合格体积2220具有上平面2230(与其相对应的子体积集)和下平面2240(与其相对应的子体积集)。已校正的角度tan(θ顶部,L)测量当从发射波束2206的波束发射器2204的原点位置来看时,在水平面2208上方的上平面2230的中心位置2232的仰角,该波束2206在体积2220中具有采样点。同样,已校正的角度tan(θ底部,L)测量当从波束发射器2204的原点位置来看时在水平面2208上方的下平面2240的中心位置2242的仰角。
一旦计算了体积的虚拟平面的仰角tan(θ顶部,L)和tan(θ底部,L),它们就可以用于确定用于对平面位置标志进行熵编解码的上下文。例如,确定上下文可以基于以下至少一项:特定波束的波束角度tan(θL)与针对多个平行平面中的每个平行平面的相应仰角之间的差、特定波束的波束角度与针对多个平行平面中的每个平行平面的相应的仰角之间的差的幅度、以及(i)特定波束的波束角度与针对多个平行平面中的每个平行平面的相应的仰角之间的差的幅度中的最大幅度与(ii)特定波束的波束角度与针对多个平行平面中的每个平行平面的相应的仰角之间的差的幅度中的最小幅度之间的差的量化结果。在一些实现中,这可以涉及将特定波束的波束角度与针对多个平行平面中的每个平行平面的相应的仰角之间的上述差相互比较和/或将特定波束的波束角度与针对多个平行平面中的每个平行平面的相应仰角之间的上述差的幅度相互比较。例如,量化可以是三元量化。
对于八叉树的情况,用于对平面位置标志进行熵编解码的上下文可以使用两个角度tan(θ底部,L)和tan(θ顶部,L)(可能连同上面给出的预测信息(a')到(d'))。
例如,可以通过如下计算上下文索引来从底部/顶部垂直角tan(θ底部,L)和tan(θ底部,L)确定角度上下文索引:
·上下文索引的第一位取决于差值tan(θL)-tan(θ底部)和tan(θL)-tan(θ顶部)是否具有相同符号
·上下文索引的第二位取决于tan(θL)-tan(θ底部)和tan(θL)-tan(θ顶部)中的哪个具有最高幅度
·上下文索引还取决于tan(θL)-tan(θ底部)和tan(θL)-tan(θ顶部)中的差D=max-min的量化(例如,三元量化)。量化可以相对于与节点中心相关联的反半径r来执行,即,可以量化值D*r。
在伪代码中,上述示例中的角度上下文索引的确定可以通过以下方式获取
在上述示例中,量D*r在四个值{0,1,2,3}上量化,对应于D*r的值小于0.5、在0.5与1之间、在1与1.5之间或大于1.5。因此,角度上下文索引可以采用2*2*4=16个值。
如上所述,角度上下文可以替换在平面模式上下文确定中所使用的预测信息(例如,预测信息(a')到(d'))或增强预测信息以创建新的(即,更大)平面集/角度上下文。
接下来,将描述使用角度信息来确定用于针对体积的子子体积的占用位进行熵编解码的上下文的实施例。
当前节点(当前体积)的子节点(子子体积)的占用由相应的占用位以信号通知,这些占用位由算术熵编解码器来编解码,“上下文”根据相邻节点的占用来选择。对于八叉树的情况,八个子节点的占用由八个相应占用位以信号通知。
因此,在本实施例中,确定用于对占用模式的表示进行编解码的上下文包括:确定用于对体积的子子体积的占用位进行编解码的上下文。此外,对占用模式的表示进行熵编码包括使用所确定的上下文对占用位进行熵编码。
传统上,通过所谓的OBUF机制在算术编解码器本身上执行用于占用位的上下文选择,该机制在(非常)有限数目的编解码器中提供二进制熵编解码器的索引,这些编码器被选择用于对占用位进行编解码。例如,可以根据以下信息获取所选择的编解码器的索引:
·前面所编解码的占用位的值,
·相邻信息,
·帧间/帧内预测。
在实践中,索引可以由其条目反映上述信息的查找表(LUT)的输出而被提供。通常,每个占用位可以由针对该占用位而从预定义的熵编解码器集中选择的熵编解码器进行编解码。
本实施例提出至少部分基于角度信息来确定针对占用位的上下文。在一些实现中,这可以相当于通过将角度信息添加到由条目使用的信息列表来修改编解码器索引的OBUF LUT条目。
图23示出了确定角度信息,以用于确定用于针对当前节点的子节点的占用位进行熵编解码的上下文的示例。对于角度合格的当前体积(与当前节点相关联)2320,一旦已经确定了假定已经获取(例如,采样)体积2320中的点的特定波束L 2306,针对当前节点的子节点中的每个子节点j 2350(例如,在八叉树的情况下为八个子节点)来计算已校正的角度tan(θj,L)。可以针对子节点(或其相关联的子子体积)的中心位置2352计算这些角度。如前所述,当从波束2306的原点位置(或等效地波束发射器2304的位置)来看时,这些角度可以是相对于水平面2308的仰角。然后,对于每个子节点j,与特定波束L的角距离Δj可以由下式确定
Δj=|tan(θL)-tan(θj,L)|
通常,在该实施例中,在操作2020或操作2110中确定角度信息包括:确定针对体积的子子体积中的每个子子体积相对于特定波束的原点位置的相应仰角。然后,可以通过将针对体积的子子体积中的每个子子体积的相应仰角与特定波束的波束角度进行比较(例如,通过计算相应的角度之间的差或角距离Δj),并且通过基于相应比较的结果确定用于针对体积的子子体积的占用位进行编解码的上下文来确定用于针对体积的子子体积的占用位进行编解码的上下文。
下文将描述用于在上下文确定中使用比较结果(例如,角距离Δj)的两种示例方法(例如,作为OBUF LUT条目的增强)。
在第一示例中,选择针对占用位的编解码器(上下文)可以涉及基于针对体积的子子体积中的每个子子体积的仰角与特定波束的波束角度之间的差Δj的相应测量来对占用位进行排序。然后,可以基于子子体积的相应地占用位的顺序索引来选择相应的编解码器(上下文)。
具体地,根据第一示例的方法可以如下进行:
1.根据它们Δj的值对子子体积进行排序,例如从小到大。因此,每个子子体积j被分配顺序索引0≤o(j)≤7。
2.可选地,顺序索引o(j)可以设置上限为小于7的值。
3.排序索引o(j)直接用于OBUF LUT条目,具有期望较小索引(即,本示例中较小的Δj)导致较高占用概率。
在第二示例中,针对占用位选择编解码器(上下文)可以涉及:量化针对该体积的子子体积中的每个子子体积的仰角θj,L与特定波束L的波束角度θL之间的差Δj的相应的测量并且基于差的上述测量的相应的量化值来选择相应的编码器(上下文)。
具体地,根据第二示例的方法可以如下进行:
1.对于每个子子体积j,对值Δj(或Δj*r)进行量化以获取离散值Q(Δj)。量化值可以被设置上限为给定阈值。
2.量化值Q(Δj)可以直接用在OBUF LUT条目中,具有期望较小值导致较高占用概率。
应当理解,在本申请中关于角度的任何陈述同样适用于角度的正切,反之亦然。特别地,涉及相应的角度的正切的计算同样可以可能在适当的三角变换之后基于角度本身来执行,反之亦然。在一些实现中,使用角度的正切以避免使用昂贵的三角函数或其近似值可能是有利的。
体积形状对角度确定的影响
角度合格体积的形状对区分占用的与未占用的子体积集的角度信息的能力有影响。更准确地,在考虑用于确定针对熵编解码器的上下文的仰角时,在垂直方向上拉伸的体积倾向于提供更好的区分,该熵编解码器对表示子体积集的占用的占用信息进行编解码。
现在参考图29,其中每个面板(a)、(b)和(c)是图22的二维表示(在平面(r,z)中)。这里,为了简单起见,使用两维表示来表示角度合格体积2920的形状对已校正的角度tan(θ顶部)(相应地tan(θ底部,L))的影响,已校正的角度tan(θ顶部)是通过测量水平面2908上方的上平面的中心位置2932(相应地下平面的中心位置2942)的仰角从波束发射器2904的原点位置的高度来获取的。所发射的波束2906在体积2920中具有采样点2905。面板(a)将体积2920描绘为基本上是立方体,面板(b)将体积2920描绘为在径向方向上(相对于激光雷达的主轴)拉长,面板(c)将体积2920描绘为在激光雷达的主轴方向上拉长。应当考虑包含基本上相同的立方测量的体积2920,以比较它们的形状对角度确定的影响。从几何上观察到,体积2920(基本上包含相同的立方测量,具有更高的H/W比率,其中H是沿着主轴方向的体积高度,W是沿着径向方向的体积宽度)导致更高的角度区分,tan(θ顶部)与tan(θ底部,L)相对于波束角度tan(θL),以预测占用的子体积集。因此,当使用角度模式编解码时,构建树使得与树的节点相关联的体积具有严格大于1的比率H/W可能是有利的。
在第一示例中,与表示点云的几何形状的树的节点相关联的体积的高比率H/W可以通过以下方式来获取:从本身具有高比率H/W的、与根节点相关联的初始体积(或边界框)开始,并且然后按照树形结构(例如,八叉树形结构或任何其他树形结构)来递归地拆分该初始体积,使得与子节点相关联的所有子体积具有相同H/W比率,直到达到最小大小。
在第二示例中,与表示点云的几何形状的树的节点相关联的体积的高比率H/W可以通过以下方式来获取:从具有任意比率H/W的、与根节点相关联的初始体积(或边界框)开始,并且然后沿着径向(例如,沿着x和y轴)方向递归地拆分该初始体积,诸如获取满足比率条件H/W>=r>1的、与子节点相关联的子体积,其中r是给定比率参数,并且最终在树形结构(例如,八叉树形结构或任何其他树形结构)之后递归地继续拆分,使得所有后续子体积保持相同比率条件H/W=r,直到达到最小子体积大小。例如,当子体积的径向(例如,x大小或/和y大小)大小已经变成最小可接受大小(例如,大小1)时,可以达到最小子体积大小,并且进一步拆分上述子体积只能沿着主轴(例如,z轴)而被执行,而不再保证比率条件。可以执行进一步拆分,直到子体积大小变得最小(例如,沿着三个轴的大小为1)。
不失一般性的情况下,与体积相关联的大小H和W代表体积的高度(沿着头部主轴)和沿着径向轴的宽度。实际上,H可以是通过将体积投影到主轴(例如,z轴)上而获取的段的长度,使得对于具有凸形形状的任何体积,H都可以很好地被限定。同样,W可以是通过将体积投影到与主轴正交的(径向)轴(例如,x和y轴)而获取的两个段的长度Lx和Ly中的最大值,使得W对于具有凸形任的何体积被很好地被限定。
在第二示例的实施例中,当可以是(矩形)长方体(例如,鞋盒形状)的初始体积使用沿着径向轴(例如,x和y轴)分割的二叉树(BT)和/或四叉树(QT)被递归地拆分时,获取比率条件H/W=r>1。根据限定,沿着径向轴分割的BT通过使用与径向轴(x或y轴)正交的平面切割体积来将体积拆分成两个子体积。沿着径向轴分割的QT通过使用两个平面切割体积将体积拆分成四个子体积,平面中的每个平面与径向轴中的一个轴正交。在具体实施例中,可以执行BT和QT分割,使得拆分平面平行于长方体体积的面,并且使得体积的子体积都是具有相同大小的长方体。执行使用沿着径向轴的BT和/或QT分割递归地拆分初始体积,直到获取具有期望的H/W=r>1比率的长方体子体积。
在另一实施例中,执行使用沿着径向轴的BT和/或QT分割来递归地拆分初始体积,直到长方体子体积已经达到最小径向大小(例如,x大小和y大小都是1),然后仅沿着主轴(例如,z轴)执行进一步的分割,直到后续长方体子体积达到最小整体大小(例如,沿着三个轴的大小1)。
在另一实施例中,执行仅使用沿着一个径向轴(例如,x轴或y轴)的BT分割来递归地拆分初始体积,直到所获取的长方体子体积在两个径向方向上具有相等的大小(例如,x中的大小等于y中的大小),然后沿着两个径向轴(例如,x和y轴)执行第一次进一步的QT分割,直到后续的长方体子体积达到最小径向大小(例如,x大小和y大小都是1),然后仅沿着主轴(例如,z轴)执行第二次进一步的分割,直到后续长方体子体积达到最小总体大小(例如,沿着三个轴的大小1)。
在另一实施例中,执行仅使用沿着一个径向轴(例如,x轴或y轴)的BT分割来递归地拆分初始体积,直到所获取的长方体子体积在两个径向方向上具有相等的大小(例如,x中的大小等于y中的大小),然后沿着两个径向轴(例如,x和y轴)执行第一次进一步的QT分割,直到后续的长方体子体积达到期望比率条件H/W=r>1,然后沿着所有轴(例如,x、y和z)执行第二次进一步的分割,直到达到最小径向大小,最后仅沿着主轴(例如,z轴)执行第三次进一步的分割,直到后续长方体子体积达到最小值整体大小(例如,沿着三个轴的大小1)。
在第二示例的又一实施例中,可以在位流中以信号通知目标比率r。编码器和解码器两者都可以沿着径向轴来拆分与节点相关联的体积,例如通过使用BT和/或QT分割,直到所获取的子体积的H/W比率变为至少r(例如,H/W>=r)。一旦子体积达到目标比率H/W>=r,则可以通过使用八叉树分割或任何其他树分割(例如,沿着主轴的二叉树分割)进一步拆分该子体积。解码器可以从位流接收目标比率r,解码目标比率r并且将其用于初始体积的分割。在位流中不存在目标比率r的情况下,可以将目标比率r的值推断为预定值(例如,r=1),或者初始体积的分割可以由任何树分割而直接开始,而无需针对子体积的H/W比率的任何值为目标。
角度模式句法
如上所述,角度信息(例如,tan(θcorr,L))可以用于提高例如由八叉树表示的点云的几何形状的压缩能力。在角度模式编码的上下文中可能出现的一个问题是,哪些信息应当被放入位流中的专用句法中,以完全描述由波束组合(例如,激光雷达)获取的点云的点所属于的准2D空间,并且帮助确定角度信息。另一问题是,这些信息应当放在位流中的什么位置。
由于使用句法提供的信息来提高点云编解码器的压缩能力是重要目标,因此应当确保所提出的句法足够紧凑,不会对位流的大小产生不必要的负面影响。此外,句法应当足够灵活,以便能够描述一些复杂的获取场景,包括具有各种位置和定向(不必然是垂直)的多个波束组合(例如,激光雷达的)。本实施例提出了解决上述问题和需求的句法(例如,高级句法)。
首先,将参考图24至图26描述波束组合(例如,诸如激光雷达或激光雷达头)的可能特性。在没有故意限制的情况下,将参考激光雷达或激光雷达头部,但其他实现用于获取点云的波束组合应当理解为同样包含在本说明书中。
可以由一个或多个激光雷达头部捕获(例如,获取)点云。例如,可以将多个激光雷达(激光雷达头部)附接到车辆上,它们中的每个激光雷达获取(例如,采样、探测)场景的部分。在单个激光雷达头的情况下,将3D xyz空间(例如,上述体积空间)与激光雷达定向对准是很自然的。例如,垂直轴z可以与激光雷达的头部旋转轴平行地被布置,并且激光雷达的头部中心可以位于xyz坐标的原点O=(0,0,0)处。但是,不应当强加这样的对准。更糟糕的是,在处理获取相同点云的多个激光雷达时,它不能支持一个以上的激光雷达。因此,建议在句法中至少包含以下激光雷达位置信息:
·(激光雷达)头部的数目
·对于每个头部
ο头部位置(x头部,y头部,z头部)
ο头部方向(主轴、主定向轴),例如头部旋转轴的定向
现在参考图24,图24以示意形式示出了激光雷达头2401(作为波束组合的非限制性示例)。还示出了激光雷达头2401的中心位置2410和主轴(例如,旋转轴)2402。激光雷达头2401的定向可以平行或不平行于其中限定有点云3D空间的xyz坐标轴。如果不是,头部的主轴(例如,旋转轴)可以在位流中通过球坐标中的两个角度(例如,θ)或(单一)3D矢量来以信号通知。可以理解,假定主轴2402穿过波束组合的参考位置2410。
为了确保单个激光雷达头部用例的句法紧凑,在头部位于原点的特定情况下使用捷径是有利的,即x头部=y头部=z头部=0,和/或主轴平行于xyz坐标轴中的一个轴。下面将描述这种快捷方式的示例。
关于波束(例如,激光),为了能够计算上述已校正的角度,建议针对每个头部将以下信息包括到句法中:
·针对每个头部
ο附接到头部或包含在头部的波束(例如,激光)的数目
ο针对每个波束
■波束相对位置(例如,波束原点相对于头部的参考/中心位置的相对位置)
■波束角度
如上所述,波束的相对位置对于计算已校正的角度可能很重要,该已校正的角度确保由给定波束获取的点的角度是恒定的,而与距头部的距离r无关。主要校正因素是波束(波束原点)沿着主轴(例如,旋转轴)相对于头部位置的相对位置dL。这在图25中示出,其中发射波束2506的波束发射器(例如,激光器)2504从头部2501的中心位置2510而位移位移矢量2512。在这种情况下,位移矢量2512沿着头部2501的主轴(例如,旋转轴)2502而延伸,使得位移矢量2512可以由沿着主轴2502的距离dL而被表示。因此,句法可以包括针对给定头部的每个波束发射器的相对位移或距离dL的指示(例如,矢量2512的有符号长度)。
然而,在一些实现中,可以使用涉及波束发射器的3D(dL,rL)相对位置的更复杂的3D校正,如图26所示。如其中所示,发射波束2606的波束发射器(例如,激光器)2604从头部2601的中心位置2610位移相对位移矢量2612。该相对位移矢量2612可以由沿着主轴的距离dL和正交于主轴的(径向)距离rL表示。鉴于此,建议在相对位置沿着旋转轴(即rL=0)使得以信号通知dL而不是(dL rL)就足够的情况下,和/或者在相对位置为0(即dL=rL=0)并且波束发射器实际上位于头部位置处的情况下,句法结构应当允许紧凑制定。后一种情况可能发生在某些类型的激光雷达的情况下,或者在处理原始激光雷达数据期间已经应用校正的情况下,或者在用户不知道(多个)波束发射器的相对位置并且想要置零默认的情况下。
关于波束的角度,因为压缩算法可以使用角度的正切而不是角度本身,所以在句法中以信号通知tan(θL)而不是θL以避免计算三角函数可能是有利的。
最后,完全绕过从位流中推断关于波束组合的信息的过程可能是有利的,例如,如果不使用角度编解码模式或者如果与已经获取点云的波束集相关的信息不被包含在位流中。
鉴于上述考虑而提出的方法2700在图27中以流程图形式示出。该方法是对压缩的点云数据的位流进行解码,以生成重构的点云的方法。假定点云是通过波束集获取的,例如通过利用波束集对一个或多个对象进行采样(例如,探测)。此外,假定点云位于体积空间内,该体积空间被递归地拆分成子体积并且包含点云的点。尽管在某些实现中可能是这种情况,但点云数据并非严格必须以树形结构(例如,八叉树)而被限定。
在操作2710中,从位流中解码第一参数,该第一参数指示角度模式是否应当被用于对点云数据编码。第一参数的一个示例是下面所限定的angular_flag参数。在操作2720中,基于所解码的第一参数来检查点云数据是否应当使用角度模式进行编解码。如果是(在操作2720中为是),则该方法进行到操作2740。否则(在操作2720中为否),该方法进行到操作2730。在操作2730中,解码点云数据而不使用角度模式,例如,没有使用角度信息。在操作2740中,从位流中解码第一角度信息,该第一角度信息与相对于相应的波束原点位置的波束集的波束角度有关。第一角度信息可以与位流中所包括的参数、标志或其他句法元素有关。在操作2750中,针对被拆分为子体积的当前体积,确定第二角度信息,该第二角度信息与相对于与波束集相关联的位置的体积的子体积或子体积组的角度有关。这可以例如以与上述操作2110相同或相似的方式进行。例如,可以相对于体积空间,诸如相对于体积空间的坐标系来限定所有位置。例如,与波束集相关联的位置可以是波束集的参考位置(例如,波束组合的中心位置),或者是波束原点位置中的一个波束原点位置。在操作2760中,基于第一角度信息和第二角度信息来解码针对体积的点云数据。这可以涉及基于第一角度信息和第二角度信息来选择上下文以及使用所选择的上下文对点云数据进行熵解码。例如,解码可以以与上述操作2130相同或相似的方式进行。对于某些应用,预计将系统性地应用角度模式(例如,对于某些汽车用例),在这种情况下,可以从位流中省略angular_flag,并且推断应当使用角度编解码模式。在其他应用中,预期相反,不会应用角度模式,在这种情况下,可以从位流中省略agular_flag,从而推断不使用角度编解码模式。可以在点云编解码器的简档中限定对推断的理解,例如通过描述使用或不使用哪种编解码模式(以及例如,标志)。此外,角度模式可以取决于平面模式。如果简档或平面模式标志指示不应当使用平面编解码模式,则表示也不使用角度编解码模式并且相关句法元素不存在于位流中。
现在参考图28,图28以流程图形式示出了对通过波束集获取的点云进行编码,以生成压缩的点云数据的位流的对应方法2800。可以理解,方法2800是方法2700的对应方法并且反映了该方法的相应的操作。因此,为了编码,点云也位于体积空间内,该体积空间被递归地拆分成子体积并且包含点云的点。
在操作2810中,第一参数被编码到位流中,该第一参数指示角度模式是否应当被用于对点云数据编解码。在操作2820中,基于第一参数来检查点云数据是否应当使用角度模式而被编解码。如果是(在操作2820中为是),则该方法进行到操作2840。否则(在操作2820中为否),该方法进行到操作2830。在操作2830中,对点云数据进行编码而不使用角度模式,例如,不使用使用角度信息。在操作2840中,将第一角度信息编码到位流中,该第一角度信息与相对于相应的波束原点位置的波束集的波束角度有关。在操作2850中,针对拆分为子体积的当前体积,确定第二角度信息,该第二角度信息与相对于与波束集相关联的位置的体积的子体积或子体积组的角度有关。在操作2860中,针对当前体积,基于第一角度信息和第二角度信息针对体积的点云数据进行编码。这可以涉及基于第一角度信息和第二角度信息来选择上下文,以及使用所选择的上下文对点云数据进行熵编码。例如,编码可以以与上述操作2040相同或相似的方式进行。
鉴于计算已校正的角度所需要的头部(例如,激光雷达)和波束(例如,激光)特性,本申请进一步提出操作2740的以下实现示例,即,从位流中解码第一角度信息。
在一个实现示例中,解码第一角度信息包括:针对包括波束集中的至少一些波束的波束组合(例如,头部),从位流中解码第二参数,该第二参数指示波束组合中的波束数目。根据该参数,可以确定波束组合中的波束数目。然后,对于由第二参数指示的波束数目中的每个波束,解码一个或多个第三参数,该第三参数指示相应的波束的波束原点位置。可以针对共同提供波束集的多个波束组合中的每个波束组合执行这些步骤。下面描述的num_of_lasers参数是第二参数的示例。
在编码器侧,对本实施例中的第一角度信息进行编码包括:对指示波束组合中的波束数目的第二参数进行编码,并且针对每个波束,对指示相应的波束的波束原点位置的一个或多个第三参数进行编码。
在上述实施例中,一个或多个第三参数可以包括:指示波束的波束原点位置是否相对于波束组合的参考位置而被表示的参数、指示沿着波束组合的主轴的波束的波束原点位置的坐标的参数、指示波束原点位置是否从波束组合的主轴(径向)位移的参数、以及表示波束原点位置从波束组合的主轴的(径向)位移的参数。一个或多个第三参数还可以包括指示波束组合的主轴的参数。
因此,在本实现示例中,对指示相应波束的波束原点位置的一个或多个第三参数进行解码可以包括:对指示波束的波束原点位置是否相对于波束组合的参考位置而被表示的参数进行解码。下面描述的laser_relative_position_to_head_flag是该参数的示例。如果波束的波束原点位置相对于波束组合的参考位置而被表示,则对指示沿着波束组合的主轴的波束的波束原点位置的坐标的参数进行解码。下面描述的laser_relative_position_dL参数是该参数的示例。此外,对指示波束原点位置是否从波束组合的主轴(径向)而被位移的参数进行解码。下面描述的relative_position_rL标志是该参数的示例。然后,如果波束原点位置从波束组合的主轴(径向)而被位移,则对表示波束原点位置从波束组合的主轴的(径向)位移的参数进行解码。下面描述的laser_relative_rL参数是该参数的示例。
在编码器侧,以上可以对应于对指示波束的波束原点位置是否相对于波束组合的参考位置而被表示的参数进行编码。如果波束的波束原点位置相对于波束组合的参考位置而被表示,则对指示沿着波束组合的主轴的波束的波束原点位置的坐标的参数被编码到位流中。此外,将指示波束原点位置是否从波束组合的主轴(径向)而被位移的参数被编码到位流中。然后,如果波束原点位置从波束组合的主轴(径向)而被位移,则将表示波束原点位置从波束组合的主轴的(径向)位移的参数编码到位流中。
在该实施例中,可能还需要解码用于确定或推断波束组合的参考位置(例如,中心位置)和波束组合的定向(例如,主轴)的信息。这可以按照下面针对相应实现示例所阐述的方式进行。
在可以与前述实现示例组合的另一实现示例中,解码第一角度信息可以包括:解码用于推断或确定构成波束集的波束组合(例如,头部)的数目的信息(例如,参数)。因此,在该实现示例中,解码第一角度信息包括:检查位流是否包括第四参数,该第四参数指各自包括波束集中的至少一些波束的波束组合的数目。如果是,则从位流中解码第四参数。如果第四参数不存在于位流中或等于0,则推断波束组合的数目为1,即波束集中的所有波束都是同一单个波束组合的部分(例如,头部)。另一方面,如果第四参数等于1,则从位流中解码第五参数,该第五参数指示波束组合的数目减2。下面描述的num_of_heads_flag是第四参数的示例。下面描述的num_of_heads_minus2参数是第五参数的示例。
在编码器侧,上述内容相当于以下内容。如果波束组合的数目为1,则利用指示单个波束组合的适当值(例如,位值)将第四参数编码到位流中,或者不将第四参数编码到位流中。如果波束组合的数目大于1,则将第四参数编码到位流中,其中值不指示单个波束组合。此外,将指示波束组合数目减2的第五参数也编码到位流中。
在可以与上述实现示例中的一个或多个实现示例组合的另一实现示例中,解码第一角度信息可以包括:针对包括波束集中的至少一些波束的波束组合,解码用于推断或确定针对波束组合的参考位置(例如,中心位置)的信息(例如,参数)。因此,在该实施例中,解码第一角度信息包括:针对包括波束集中的至少一些波束的波束组合,检查位流是否包括第六参数,该第六参数指示波束组合的参考位置是否在体积空间的坐标系的原点O=(0,0,0)处。如果是,则从位流中解码第六参数。如果位流中不存在第六参数,或者如果第六参数指示波束组合的参考位置在坐标系的原点O处,则将坐标系的原点O作为波束组合的参考位置。否则,从位流中解码指示波束组合的参考位置坐标的参数。下面描述的head_absolute_is_000_flag是第六参数的示例。下面描述的head_absolute_x、head_absolute_y和head_absolute_z参数是指示波束组合的参考位置的坐标的参数的示例。
在编码器侧,上述内容相当于以下内容。如果波束组合的参考位置在坐标系的原点O处,则将第六参数以及指示这一事实的适当的值(例如,位值)一起编码到位流中,或者不将第六参数编码到位流中。如果波束组合的参考位置不在坐标系的原点O处,则将第六参数以及指示这一事实的适当值(例如,位值)、以及指示波束组合的参考位置的坐标的参数编码到位流中。
在可以与上述实现示例中的一个或多个实现示例组合的另一实现示例中,解码第一角度信息可以包括:对于包括波束集中的至少一些波束的波束组合,解码用于推断或确定波束组合的定向(例如,主轴)的信息(例如,参数)。因此,在该实施例中,解码第一角度信息包括:对于包括波束集中的至少一些波束的波束组合,从位流中解码第七参数,该第七参数指示波束组合的主轴是否沿着体积空间的坐标轴而被布置。如果第七参数指示波束组合的主轴沿着体积空间的坐标轴而被布置,则从位流中解码指示波束组合的主轴沿着其而被布置的特定坐标轴的参数。然后将该特定坐标轴作为波束组合(的定向)的主轴。特别地,主轴可以被认为平行于特定坐标轴并且贯穿波束组合的参考位置(例如,中心位置)。否则,如果第七参数指示波束组合的主轴不沿着体积空间的坐标轴而被布置,则从位流中解码指示表示波束组合的主轴的定向的角度的参数,并且基于这些参数来确定波束组合的主轴。下面描述的head_parallel_to_axis_flag是第七参数的示例。下面描述的axis_index参数是指示波束组合的主轴沿着其而被布置的特定坐标轴的参数的示例。最后,下面描述的head_orientation_phi和head_orientation_theta参数是指示表示主轴的定向的角度的参数的示例。如果位流中不存在第七参数,则推断波束组合的主轴沿着体积空间的坐标轴而被布置。
在编码器侧,上述内容相当于以下内容。如果波束组合的主轴沿着体积空间的坐标轴而被布置,则第七参数以及指示这一事实的适当值(例如,位值)被编码到位流中。此外,指示波束组合的主轴沿着其而被布置的特定坐标轴的参数也被编码到位流中。否则,如果波束组合的主轴不沿着体积空间的坐标轴而被布置,则第七参数以及指示这一事实的值(例如,位值)被编码到位流中。此外,指示表示波束组合的主轴的定向的角度的参数也被编码到位流中。备选地,当波束组合的主轴沿着体积空间的坐标轴而被布置时,仅将指示波束组合的主轴的特定坐标轴的参数编码到位流中。
在可以与上述实现示例中的一个或多个实现示例组合的另一实现示例中,解码第一角度信息可以包括:对于包括波束集中的至少一些波束的波束组合,解码用于推断或确定由波束组合提供的波束的波束角度的信息(例如,参数)。因此,在该实现示例中,解码第一角度信息可以包括:对于包括波束集中的至少一些波束的波束组合,从位流中解码第八参数,该第八参数指示波束组合中的波束数目。然后基于第八参数来确定波束组合中的波束数目。针对波束组合中的波束数目中的每个波束,从位流中解码一个或多个第九参数,该第九参数指示相应的波束的波束角度。下面描述的num_of_lasers参数是第八参数的示例。
在编码器侧,上述内容相当于以下内容。将第八参数编码到位流中,以指示波束组合中的波束数目。针对波束组合中的波束数目中的每个波束,然后将一个或多个第九参数编码到位流中,以指示相应的波束的波束角度。
在本实现示例中,解码指示相应的波束的波束角度的一个或多个第九参数可以包括:解码指示波束角度是否表示为角度的正切的参数,然后解码表示波束角度的参数。下面描述的angle_is_tangent_flag是指示波束角度是否表示为角度的正切的参数的示例。下面描述的laser_angle参数是表示波束角度的参数的示例。
在编码器侧,这相当于如果波束角度表示为正切,则将指示波束角度是否表示为角度的正切的参数以及指示该事实的适当值(例如,位值)编码到位流中,然后编码表示波束角度的参数。直接编码表示波束角度的参数可能是有益的,在这种情况下,波束角度参数表示角度。
此外,对于本实施例,使用用于针对当前体积的点云数据进行编解码的角度信息可以取决于该体积是否是角度合格的。因此,方法2700和/或2800可以包括以下步骤:首先基于体积(或是否)合格用于基于第一角度信息和第二角度信息来对体积的点云数据解码。对于包括波束组中的至少一些波束的波束组合,这可以涉及确定从波束组合的参考位置所看到的体积的角度大小的测量。将所确定的角度大小的测量与波束组合的相邻波束的角度之间的差角度的测量(例如,任何波束对之间的最小差角度)进行比较。然后可以基于比较的结果来执行体积是否(或其)合格用于基于第一角度信息和第二角度信息来解码体积的点云数据的实际确定。通常,这可以以与上面参考图19描述的角度合格性的确定相同或相似的方式进行。
如上所述,在操作2750中确定第二角度信息可以以与上述操作2110中相同或相似的方式进行。同样,在操作2850中确定第二角度信息可以以与上述操作2020中相同或相似的方式进行。因此,确定第二角度信息可以包括:确定体积内的参考位置相对于包括波束集中的至少一些波束的波束组合的参考位置的第一角度。例如,体积内的参考位置可以是体积的中心位置。例如,波束组合的参考位置可以是旋转波束组合的中心位置。该参考位置可以例如基于上述第一角度信息来确定。基于第一仰角,确定被假定为已经获取体积内的点的波束组合的特定波束。对于该特定波束,例如基于上述第一角度信息来确定波束原点位置。然后,特定旋转波束的波束原点位置可以用作与操作2750或操作2850中所限定的波束组合相关联的位置。最后,基于波束原点位置来确定体积的子体积或子体积组相对于特定波束的波束原点位置的角度。通常,这可以以与上述角度校正相同或相似的方式进行。
鉴于上述计算已校正的角度的要求,提出了下表1和表2中描述的句法。它确保了对于位于原点O并且平行于xyz轴中的一个轴的头部的最简单情况,句法是紧凑的。它还确保不需要相对位置校正或仅沿着主轴(例如,头部旋转轴)进行校正的波束的紧凑句法。在下表中,u(n)指示使用n位的无符号整数,而s(n)指示使用n位的有符号整数。已经观察到,相对位置(dL,rL)的3位小数精度和角度θL或正切(θL)的18位小数精度足以在使用波束角度时获取最佳压缩性能。
表1
具有附加标志的备选句法将允许完全绕过角度过程,或为一些句法元素推断更多值。这种句法的示例如下表2所示。
表2
在提议的句法中以信号通知的信息确实取决于波束组合(例如,激光雷达)的物理特性和波束组合在由点云表示的场景中(例如,在包含该点云的体积空间中)的位置/定向。但是,它不依赖于点云的局部结构。因此,建议的句法可以是帧或序列级别的高级句法。在实际示例中,建议的句法可以放在
·几何形状参数集(gps)
·序列参数集(sps)
·几何形状切片报头
·带外发送的SEI消息
此外,这些句法元素可以放置在任何高级句法和报头中,诸如视频参数集的等效项(例如,在通用视频编解码、HEVC之后的新MPEG视频编解码器中)、帧报头或未来传感器参数集。
接下来,将描述要用于提议的句法(例如,在上述表格中使用)的语义的示例。
angular_flag等于0指示在句法中不存在头部和波束(例如,激光)信息。angular_flag是上面所限定的第一参数的示例。Angular_flag等于1可以指示头部和波束信息存在于句法中。当等于0时,节点的编解码方法(例如,体积)不使用角度信息。
num_of_heads_flag等于0指示(激光雷达的)头部的数目被推断为1。如果num_of_heads_flag等于1,则指示句法中存在num_of_heads_minus2,并且激光雷达/头部的数目等于num_of_heads_minus2+2。当不存在于位流中时,激光雷达/头部的数目被推断为1。
head_absolute_is_000_flag等于1指示头部绝对位置被推断为x=y=z=0。当head_absolute_is_000_flag等于0时,指示在位流中存在head_absolute_x、head_absolute_y和head_absolute_z,以以信号通知绝对头部位置。当位流中不存在head_absolute_is_000_flag时,可以推断出头部绝对位置为x=y=z=0。绝对值理解为表示点云的xyz坐标系中的坐标。
head_absolute_x指示头部(获取设备)在x轴上的绝对位置,例如,具有3位十进制精度的32位带符号整数,使得头部的x绝对位置为head_absolute_x/8。
head_absolute_y指示头部(获取设备)在y轴上的绝对位置,例如,具有3位十进制精度的32位带符号整数,使得头部的y绝对位置为head_absolute_y/8。
head_absolute_z指示头部(获取设备)在z轴上的绝对位置,例如,32位带符号整数,具有3位十进制精度,使得头部的z绝对位置为head_absolute_z/8。
head_parallel_to_axis_flag等于1指示头部平行于轴而被定向。在这种情况下,axis_index存在于流中。head_parallel_to_axis_flag等于0指示头部不平行于轴而被定向,并且在这种情况下,流中存在head_orientation_phi和head_orientation_theta而不是axis_index。如果在位流中不存在head_parallel_to_axis_flag,则推断它等于1。
axis_index指示头部平行于哪个轴。例如,axis_index等于0指示头部平行于x轴而被定向,等于1指示头部平行于y轴而被定向,等于2指示头部平行于z轴而被定向。
head_orientation_phi和head_orientation_theta指示头部在球坐标中的定向。例如,head_orientation_phi是xy平面中的方位角,head_orientation_theta是相对于z轴的极角。这两者都可以是具有18位十进制精度的带符号的32位整数。
num_of_lasers指定针对给定头部的激光器(或波束)的数目。它可以是1到1023范围内的10位整数。
angle_is_tangent_flag等于1指示laser_angle提供的信息是角度的正切。angle_is_tangent_flag等于0指示laser_angle提供的信息是角度。当不存在于位流中时,angle_is_tangent_flag被推断为等于1
laser_angle是与给定激光器相关联的角度(的正切)。这是相对于垂直于头部方向并且激光(或波束发射器)位置所属的平面的仰角。它可能是具有18位十进制精度的有符号的32位整数。
laser_relative_position_to_head_flag等于0指示激光/波束发射器位置与头部绝对位置相同。laser_relative_position_to_head_flag等于1指示激光/波束发射器位置与头部绝对位置不同;在这种情况下,laser_relative_position_dL和relative_position_rL_flag存在于位流中。当laser_relative_position_to_head_flag不存在于位流中时,推断其等于0。
laser_relative_position_dL指示激光(波束发射器)沿着头部的定向方向的相对于头部绝对位置的位置。它可以是具有3位小数精度的16位有符号整数。
relative_position_rL_flag等于0指示laser_relative_rL不存在于位流中并且被推断为0。relative_position_rL_flag等于1指示laser_relative_rL存在于位流中。当relative_position_rL_flag不存在于位流中时,推断它等于0。
laser_relative_rL指示激光(波束发射器)距平行于通过头部绝对位置的头部的定向方向的线的(径向)距离。它可以是具有3位小数精度的16位有符号整数。
现在参考图30,图30示出了编码器3000的示例实施例的简化框图。编码器3000包括处理器3002、存储器3004和编码应用3006。编码应用3006可以包括存储在存储器3004中并且包含指令的计算机程序或应用,该指令在被执行时使处理器3002执行诸如本文所述的那些操作。例如,编码应用3006可以编码和输出根据本文中描述的过程编码的位流。应当理解,编码应用3006可以存储在非暂态计算机可读介质上,诸如光盘、闪存设备、随机存取存储器、硬盘驱动器等。当指令被执行时,处理器3002执行指令中指定的操作和功能,以便作为实现(多个)所述过程的专用处理器进行操作。在一些示例中,这样的处理器可以被称为“处理器电路”或“处理器电路系统”。
现在还参考图31,图31示出了解码器3100的示例实施例的简化框图。解码器3100包括处理器3102、存储器3104和解码应用3106。解码应用3106可以包括存储在存储器3104中并且包含指令的计算机程序或应用,该指令在被执行时使处理器3102执行诸如本文所述的那些操作。应当理解,解码应用3106可以存储在计算机可读介质上,诸如光盘、闪存设备、随机存取存储器、硬盘驱动器等。当指令被执行时,处理器3102执行指令中指定的操作和功能,以便作为实现(多个)所述过程的专用处理器进行操作。在一些示例中,这样的处理器可以被称为“处理器电路”或“处理器电路系统”。
应当理解,根据本申请的解码器和/或编码器可以在多个计算设备中实现,包括但不限于服务器、适当编程的通用计算机、机器视觉系统和移动设备。解码器或编码器可以通过包含用于将一个或多个处理器配置为执行本文中描述的功能的指令的软件来实现。软件指令可以存储在任何合适的非暂态计算机可读存储器上,包括CD、RAM、ROM、闪存等。
应当理解,本文所述的解码器和/或编码器以及模块、例程、过程、线程或其他软件组件可以使用标准计算机编程技术和语言来实现所描述的用于配置编码器或解码器的方法/过程。本申请不限于特定的处理器、计算机语言、计算机编程约定、数据结构、其他这样的实现细节。本领域技术人员将认识到,所描述的过程可以实现为存储在易失性或非易失性存储器中的计算机可执行代码的部分、作为专用集成芯片(ASIC)的部分等。
本申请还提供了一种计算机可读信号,该信号对通过应用根据本申请的编码过程产生的数据进行编码。
对压缩性能的影响
使用具有不同特性的多个示例点云并且与运动图像专家组(MPEG)测试模型的当前实现相比较,使用示例实现在三个方向x、y和z上使用平面模式进行了测试。实验中使用的不同类型的点云包括与户外场景相关的点云,包括城市建筑环境、室内建筑环境、3D地图、激光雷达道路扫描和自然景观。在自然景观的情况下,压缩增益可以忽略不计。压缩增益在3D地图的情况下可以为2%到4%,在室外建筑场景的情况下可达10%,在激光雷达数据的情况下可达6%到9%,在一些室内建筑场景的情况下可达50%以上。
进一步观察到,与仅平面模式相比,角度模式为无损编码提供超过15%的额外增益并且为有损编码提供5至8%的额外增益。与MPEG测试模型相比,平面+角度的组合提供了22至24%(无损)和11至17%(有损)的增益。
还进一步观察到,将角度模式与构造成使得与树的节点相关联的体积具有典型比率H/W、高度与径向宽度之比至少为4的树一起使用提供了与使用三次八叉树分割的角度模式(对于与八叉树节点相关联的所有体积,其比率H/W=1)相比甚至更多的额外增益。
可以对所描述的实施例进行某些修改和修改。因此,以上讨论的实施例被认为是说明性的而不是限制性的。
Claims (15)
1.一种对压缩的点云数据的位流进行解码以生成重构的点云的方法,所述点云已经通过波束集而被获取,所述点云位于体积空间内,所述体积空间被递归地拆分成子体积并且包含所述点云的点,所述方法包括:
从所述位流中解码第一参数,所述第一参数指示角度模式是否应当被用于对点云数据编解码;以及
如果所述第一参数指示点云数据应当使用所述角度模式而被编解码,则:
从所述位流中解码第一角度信息,所述第一角度信息与相对于相应的波束原点位置的所述波束集的波束角度有关;以及
针对拆分为子体积的当前体积:
确定第二角度信息,所述第二角度信息与相对于与所述波束集相关联的位置的所述体积的子体积或子体积组的角度有关;以及
基于所述第一角度信息和所述第二角度信息来解码针对所述体积的所述点云数据。
2.根据权利要求1所述的方法,其中解码所述第一角度信息包括,针对包括所述波束集中的至少一些波束的波束组合:
从所述位流中解码第二参数,所述第二参数指示所述波束组合中的波束数目,并且基于所述第二参数来确定所述波束组合中的所述波束数目;
针对由所述第二参数指示的所述波束数目中的每个波束,从所述位流中解码一个或多个第三参数,所述一个或多个第三参数指示所述相应的波束的所述波束原点位置。
3.根据权利要求2所述的方法,其中解码指示所述相应的波束的波束原点位置的所述一个或多个第三参数包括:
解码指示所述波束的所述波束原点位置是否相对于所述波束组合的参考位置而被表示的参数;以及
如果所述波束的所述波束原点位置相对于所述波束组合的参考位置而被表示,则:
解码指示沿着所述波束组合的主轴的所述波束的所述波束原点位置的坐标的参数;
解码指示所述波束原点位置是否从所述波束组合的所述主轴而被位移的参数;以及
如果所述波束原点位置从所述波束组合的所述主轴而被位移,则解码表示所述波束原点位置从所述波束组合的所述主轴的位移的参数。
4.根据前述权利要求中任一项所述的方法,其中解码所述第一角度信息包括:
检查所述位流是否包括第四参数,所述第四参数指示各自包括所述波束集中的至少一些波束的波束组合的数目,并且如果所述位流包括所述第四参数,则从所述位流中解码所述第四参数;
如果所述第四参数不存在或等于0,则推断所述波束组合的数目为1;
如果所述第四参数等于1,则解码第五参数,所述第五参数指示波束组合的数目减2。
5.根据前述权利要求中任一项所述的方法,其中解码所述第一角度信息包括,针对包括所述波束集中的至少一些波束的波束组合:
检查所述位流是否包括第六参数,所述第六参数指示所述波束组合的参考位置是否在所述体积空间的坐标系的原点处,并且如果所述位流包括所述第六参数,则解码所述第六参数;
如果所述位流中不存在所述第六参数,或者如果所述第六参数指示所述波束组合的所述参考位置在所述坐标系的所述原点处,则将所述坐标系的所述原点作为所述波束组合的所述参考位置;以及
否则,从所述位流中解码指示所述波束组合的所述参考位置的所述坐标的参数。
6.根据前述权利要求中任一项所述的方法,其中解码所述第一角度信息包括,针对包括所述波束集中的至少一些波束的波束组合:
从所述位流中解码第七参数,所述第七参数指示所述波束组合的主轴是否沿着所述体积空间的坐标轴而被布置;
如果所述第七参数指示所述波束组合的所述主轴沿着所述体积空间的坐标轴而被布置,则解码指示特定坐标轴的参数,所述波束组合的所述主轴沿着所述特定坐标轴而被布置,并且将所述特定坐标轴作为所述波束组合的所述主轴;以及
否则,解码指示表示所述波束组合的所述主轴的定向的角度的参数,并且基于这些参数来确定所述波束组合的所述主轴。
7.根据前述权利要求中任一项所述的方法,其中解码所述第一角度信息包括,针对包括所述波束集中的至少一些波束的波束组合:
从所述位流中解码第八参数,所述第八参数指示所述波束组合中的波束数目,并且基于所述第八参数来确定所述波束组合中的所述波束数目;以及
针对所述波束组合中的所述波束数目中的每个波束,从所述位流中解码一个或多个第九参数,所述一个或多个第九参数指示所述相应的波束的波束角度。
8.根据权利要求7所述的方法,其中解码指示所述相应的波束的波束角度的所述一个或多个第九参数包括:
解码指示所述波束角度是否被表示为角度的正切的参数;以及
解码表示所述波束角度的参数。
9.根据前述权利要求中任一项所述的方法,还包括:针对包括所述波束集中的至少一些波束的波束组合,通过以下方式首先确定所述体积合格用于基于所述第一角度信息和所述第二角度信息来解码针对所述体积的所述点云数据:
确定从所述波束组合的参考位置所看到的所述体积的角度大小的测量;
将所述角度大小的所述测量与所述波束组合的相邻波束的角度之间的差角度的测量进行比较;以及
基于所述比较的结果,确定所述体积合格用于基于所述第一角度信息和所述第二角度信息来解码针对所述体积的所述点云数据。
10.根据前述权利要求中任一项所述的方法,其中确定所述第二角度信息包括:
确定相对于包括所述波束集中的至少一些波束的波束组合的参考位置的所述体积内的针对参考位置第一角度;
基于第一仰角,确定被假定为已经获取所述体积内的所述点的所述波束组合的特定波束;
确定所述特定波束的波束原点位置;以及
确定相对于所述特定波束的所述波束原点位置的所述体积的子体积或子体积组的所述角度。
11.一种对通过波束集所获取的点云进行编码以生成压缩的点云数据的位流的方法,所述点云位于体积空间内,所述体积空间被递归地拆分成子体积并且包含所述点云的点,所述方法包括:
将第一参数编码到所述位流中,所述第一参数指示角度模式是否应当被用于对点云数据编解码;以及
如果所述第一参数指示点云数据应当使用所述角度模式而被编解码,则:
将第一角度信息编码到所述位流中,所述第一角度信息与相对于相应的波束原点位置的所述波束集的波束角度有关;以及
针对拆分为子体积的当前体积:
确定第二角度信息,所述第二角度信息与相对于与所述波束集相关联的位置的所述体积的子体积或子体积组的角度有关;以及
基于所述第一角度信息和所述第二角度信息对所述体积的所述点云数据进行编码。
12.一种解码器,用于对压缩的点云数据的位流进行解码,以产生重构的点云,所述点云已经通过波束集而被获取,所述点云位于体积空间内,所述体积空间被递归地拆分成子体积并且包含所述点云的点,所述解码器包括:
处理器;
存储器;以及
解码应用,包含由所述处理器可执行的指令,所述指令在被执行时使所述处理器执行根据权利要求1至10中任一项所述的方法。
13.一种编码器,用于对通过波束集所获取的点云进行编码,以生成压缩的点云数据的位流,所述点云位于体积空间内,所述体积空间被递归地拆分成子体积并且包含所述点云的点,所述编码器包括:
处理器;
存储器;以及
编码应用,包含由所述处理器可执行的指令,所述指令在被执行时使所述处理器执行根据权利要求11所述的方法。
14.一种存储处理器可执行指令的非暂态处理器可读介质,所述处理器可执行指令在由处理器执行时,使所述处理器执行根据权利要求1至11中任一项所述的方法。
15.一种包含程序指令的计算机可读信号,所述程序指令在由计算机执行时,使所述计算机执行根据权利要求1至11中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP19200891.0A EP3800892A1 (en) | 2019-10-01 | 2019-10-01 | Angular mode syntax for tree-based point cloud coding |
EP19200891.0 | 2019-10-01 | ||
PCT/CA2020/051297 WO2021062530A1 (en) | 2019-10-01 | 2020-09-29 | Angular mode syntax for tree-based point cloud coding |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114586287A true CN114586287A (zh) | 2022-06-03 |
Family
ID=68109253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080069002.XA Pending CN114586287A (zh) | 2019-10-01 | 2020-09-29 | 针对基于树的点云编解码的角度模式句法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220351423A1 (zh) |
EP (1) | EP3800892A1 (zh) |
KR (1) | KR20220074865A (zh) |
CN (1) | CN114586287A (zh) |
WO (1) | WO2021062530A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024148598A1 (zh) * | 2023-01-13 | 2024-07-18 | Oppo广东移动通信有限公司 | 编解码方法、编码器、解码器以及存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11842520B2 (en) | 2020-04-08 | 2023-12-12 | Qualcomm Incorporated | Angular mode simplification for geometry-based point cloud compression |
US11941855B2 (en) | 2020-04-08 | 2024-03-26 | Qualcomm Incorporated | Coding of laser angles for angular and azimuthal modes in geometry-based point cloud compression |
WO2022225145A1 (ko) * | 2021-04-21 | 2022-10-27 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
CN118119975A (zh) * | 2021-10-06 | 2024-05-31 | 北京小米移动软件有限公司 | 编码和解码方法、编码器、解码器及软件,以对点云编码和解码 |
WO2023199675A1 (ja) * | 2022-04-13 | 2023-10-19 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 復号方法、符号化方法及び復号装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016003340A1 (en) * | 2014-07-03 | 2016-01-07 | Telefonaktiebolaget L M Ericsson (Publ) | Encoding and decoding of light fields |
CN105678076B (zh) * | 2016-01-07 | 2018-06-22 | 福州华鹰重工机械有限公司 | 点云测量数据质量评估优化的方法及装置 |
US11005192B2 (en) * | 2017-06-05 | 2021-05-11 | Metawave Corporation | Intelligent metamaterial radar having a dynamically controllable antenna |
US11113845B2 (en) * | 2017-09-18 | 2021-09-07 | Apple Inc. | Point cloud compression using non-cubic projections and masks |
GB2568232A (en) * | 2017-10-26 | 2019-05-15 | Nokia Technologies Oy | A method for volumetric video encoding and decoding |
US10796457B2 (en) * | 2018-06-26 | 2020-10-06 | Intel Corporation | Image-based compression of LIDAR sensor data with point re-ordering |
CN111327902B (zh) * | 2018-12-13 | 2022-11-22 | 华为技术有限公司 | 点云的编解码方法及装置 |
KR102634079B1 (ko) * | 2019-03-15 | 2024-02-06 | 엘지전자 주식회사 | 포인트 클라우드 데이터 처리 장치 및 방법 |
EP3800886A1 (en) * | 2019-10-01 | 2021-04-07 | BlackBerry Limited | Angular mode for tree-based point cloud coding |
WO2021084292A1 (en) * | 2019-10-31 | 2021-05-06 | Blackberry Limited | Method and system for azimuthal angular prior and tree representation for cloud compression |
EP4052474A1 (en) * | 2019-10-31 | 2022-09-07 | BlackBerry Limited | Angular priors for improved prediction in tree-based point cloud coding |
-
2019
- 2019-10-01 EP EP19200891.0A patent/EP3800892A1/en active Pending
-
2020
- 2020-09-29 KR KR1020227008825A patent/KR20220074865A/ko not_active Application Discontinuation
- 2020-09-29 WO PCT/CA2020/051297 patent/WO2021062530A1/en active Application Filing
- 2020-09-29 CN CN202080069002.XA patent/CN114586287A/zh active Pending
- 2020-10-01 US US17/765,042 patent/US20220351423A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024148598A1 (zh) * | 2023-01-13 | 2024-07-18 | Oppo广东移动通信有限公司 | 编解码方法、编码器、解码器以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2021062530A1 (en) | 2021-04-08 |
US20220351423A1 (en) | 2022-11-03 |
KR20220074865A (ko) | 2022-06-03 |
EP3800892A1 (en) | 2021-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220353549A1 (en) | Angular mode for tree-based point cloud coding | |
CN114008997B (zh) | 基于八叉树的点云编码中的平面模式的上下文确定 | |
US11570481B2 (en) | Methods and devices using direct coding in point cloud compression | |
CN114586287A (zh) | 针对基于树的点云编解码的角度模式句法 | |
US10992947B2 (en) | Planar mode in octree-based point cloud coding | |
US20220398784A1 (en) | Method and system for azimuthal angular prior and tree repesentation for cloud compression | |
CN112438049B (zh) | 编码和解码方法、编码器、解码器以及存储介质 | |
US20220358686A1 (en) | Angular priors for improved prediction in point-predictive trees | |
US20230162402A1 (en) | Method and apparatus for processing a point cloud | |
US20230048381A1 (en) | Context determination for planar mode in octree-based point cloud coding | |
US20220366612A1 (en) | Angular prior and direct coding mode for tree representation coding of a point cloud | |
US11258458B2 (en) | Methods and devices for lossy coding of point cloud occupancy |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |