掌桥专利:专业的专利平台
掌桥专利
首页

使用帧间预测的对几何体点云压缩(GPCC)平面模式的性能提高

文献发布时间:2024-04-18 19:58:21


使用帧间预测的对几何体点云压缩(GPCC)平面模式的性能提高

本申请要求享有于2022年4月14日提交的第17/659,219号美国专利申请和于2021年4月16日提交的第63/176,098号美国临时申请的优先权,其中每项申请的全部内容通过引用并入本文。于2022年4月14日提交的第17/659,219号美国专利申请要求享有于2021年4月16日提交的第63/176,098号美国临时申请的益处。

技术领域

本公开内容涉及点云编码和解码。

附图说明

图1是示出可以执行本公开内容的技术的示例编码和解码系统的框图。

图2是示出示例几何体点云压缩((G-PCC))编码器的框图。

图3是示出示例G-PCC解码器的框图。

图4是示出用于InterEM的示例运动估计技术的流程图。

图5是示出用于估计本地节点运动向量的示例技术的流程图。

图6是示出可以与本公开内容的一种或多种技术一起使用的示例测距系统的概念图。

图7是示出可以在其中使用本公开内容的一种或多种技术的示例性的基于车辆的场景的概念图。

图8是示出可以在其中使用本公开内容的一种或多种技术的示例扩展现实系统的概念图。

图9是示出可以在其中使用本公开内容的一种或多种技术的示例移动设备系统的概念图。

图10A和10B是示出二进制算术译码中的范围更新过程的概念图。

图11是示出二进制算术译码中的输出过程的概念图。

图12是示出G-PCC编码器中的上下文自适应二进制算术译码器的框图。

图13是示出G-PCC解码器中的上下文自适应二进制算术译码器的框图。

图14是示出根据本公开内容的一个或多个方面,用于预测点云中的点的示例技术的流程图。

发明内容

总体而言,本公开内容描述了用于使用(诸如针对目前正在开发的几何体点云压缩()(G-PCC)标准的)帧间预测对点云中的节点进行译码的技术。然而,示例技术并不限于G-PCC标准。节点的参考块可以是使用所估计的运动信息(旋转和平移)通过运动补偿而导出的。对运动信息的良好估计可以带来在几何体结构(诸如当前节点和参考节点之间的平面信息、占用)方面的高度相关性。因此,利用参考节点的此几何体信息可以提高当前节点的译码性能。本公开内容包括用以在对当前节点的平面信息进行译码时利用参考块的信息的若干技术。通常,这些信息可以用于节点的针对平面译码模式的资格、对在对平面标志和平面索引进行译码时的上下文的选择。

根据本公开内容的一种或多种技术,G-PCC编码器可以包括存储器,所述存储器被配置为存储所述点云的至少一部分;以及以电路实现并被配置为进行如下操作的一个或多个处理器:获得所述点云的参考块的平面信息;基于所述参考块的所述平面信息来确定上下文;基于所述上下文,来对指示当前节点是否是使用平面模式来译码的语法元素进行上下文-自适应译码;以及基于所述当前节点是使用所述平面模式来译码的,使用所述平面模式对所述当前节点进行译码。

在一个示例中,一种处理点云的方法包括:获得所述点云的参考块的平面信息;基于所述参考块的所述平面信息来确定上下文;基于所述上下文,来对指示当前节点是否是使用平面模式来译码的语法元素进行上下文-自适应译码;以及基于所述当前节点是使用所述平面模式来译码的,使用所述平面模式对所述当前节点进行译码。

在另一示例中,一种存储指令的计算机可读存储介质,所述指令当由一个或多个处理器执行时使所述一个或多个处理器以进行如下操作:获得点云的参考块的平面信息;基于所述参考块的所述平面信息来确定上下文;基于所述上下文,来对指示当前节点是否是使用平面模式来译码的语法元素进行上下文-自适应译码;以及基于所述当前节点是使用所述平面模式来译码的,使用所述平面模式对所述当前节点进行译码。

在附图和以下描述中阐述一个或多个示例的细节。根据说明书、附图以及权利要求书,其它特征、目的和优点将是显而易见的。

具体实施方式

图1是示出可以执行本公开内容的技术的示例编码和解码系统100的框图。本公开内容的技术通常旨在对点云数据进行译码(进行编码和/或进行解码),即以支持点云压缩。通常,点云数据包括用于处理点云的任何数据。译码可以在压缩和/或解压点云数据上是有效的。

如图1所示,系统100包括源设备102和目的地设备116。源设备102提供要由目的地设备116解码的被编码点云数据。特别是在图1的示例中,源设备102经由计算机可读介质110将点云数据提供给目的地设备116。源设备102和目的地设备116可以包括范围广泛的设备中的任何设备,包括台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、诸如智能手机的电话手持机、电视、相机、显示设备、数字媒体播放器、视频游戏终端、视频流式传输设备、陆地或海洋交通工具、航天器、飞机、机器人、LIDAR设备、卫星等。在一些情况下,源设备102和目的地设备116可以被配备用于无线通信。

在图1的示例中,源设备102包括数据源104、存储器106、G-PCC编码器200和输出接口108。目的地设备116包括输入接口122、G-PCC解码器300、存储器120和数据消费方118。根据本公开内容,源设备102的G-PCC编码器200和目的地设备116的G-PCC解码器300可以被配置为应用本公开内容中的与在对当前节点(例如,当前块)的平面信息进行译码时利用参考块的信息相关的技术。因此,源设备102表示编码设备的示例,而目的地设备116表示解码设备的示例。在其它示例中,源设备102和目的地设备116可以包括其它组件或布置。例如,源设备102可以从内部源或外部源接收数据(例如,点云数据)。同样,目的地设备116可以与外部数据消费方以接口连接,而不在相同设备中包括数据消费方。

如图1中所示的系统100仅是一个示例。通常,其它数字编码和/或解码设备可以执行本公开内容中的与在对当前节点的平面信息进行译码时利用参考块的信息相关的技术。源设备102和目的地设备116仅是这样的设备的示例,其中,源设备102生成被译码数据以用于传输给目的地设备116。本公开内容将“译码”设备称为执行对数据进行译码(例如,进行编码和/或进行解码)的设备。因此,G-PCC编码器200和G-PCC解码器300分别代表译码设备(特别是编码器和解码器)的示例。在一些示例中,源设备102和目的地设备116可以以基本上对称的方式进行操作,使得源设备102和目的地设备116中的每个包括编码组件和解码组件。因此,系统100可以支持源设备102和目的地设备116之间的单向或双向传输,例如用于流式传输、回放、广播、电话、导航和其它应用。

通常,数据源104代表数据源(即,原始的、未被编码点云数据),并且可以向G-PCC编码器200提供数据的一系列有序的"帧"),G-PCC编码器200对针对这些帧的数据进行编码。源设备102的数据源104可以包括点云捕获设备(诸如,各种相机或传感器(例如,3D扫描仪或光探测和测距(LIDAR)设备))、一个或多个视频相机、包含先前捕获的数据的存档(archive)、和/或用以从数据内容提供商接收数据的数据馈送接口中的任何一项。替代地或另外地,点云数据可以是从扫描仪、相机、传感器或其它数据经计算机生成的。例如,数据源104可以生成基于计算机图形的数据作为源数据,或者产生实时数据、存档数据和经计算机生成的数据的组合。在每种情况下,G-PCC编码器200对所捕获的、预捕获的或经计算机生成的数据进行编码。G-PCC编码器200可以将帧从所接收的次序(有时被称为“显示次序”)重新布置为用于译码的译码次序。G-PCC编码器200可以生成一个或多个比特流,其包括被编码数据。然后,源设备102可以经由输出接口108将被编码视频数据输出到计算机可读介质110上,以供由例如目的地设备116的输入接口122接收和/或取得。

源设备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可以存储表示点云的数据。

计算机可读介质110可以代表能够将被编码数据从源设备102传送到目的地设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110代表通信介质,用以使得源设备102能够例如经由射频网络或基于计算机的网络向目的地设备116实时地直接地发送被编码数据。根据诸如无线通信协议之类的通信标准,输出接口108可以对包括被编码数据的传输信号进行调制,并且输入接口122可以对所接收的传输信号进行解调。通信介质可以包括任何无线或有线通信介质,诸如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成诸如以下各项的基于分组的网络的一部分:局域网、广域网、或诸如互联网之类的全球网络。通信介质可以包括路由器、交换机、基站、或可以对于促进从源设备102到目的地设备116的通信而言有用的任何其它设备。

在一些示例中,源设备102可以将被编码数据从输出接口108输出到存储设备112。类似地,目的地设备116可以经由输入接口122从存储设备112访问被编码数据。存储设备112可以包括各种分布式或在本地访问的数据存储介质中的任何数据存储介质,诸如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器、或用于存储被编码数据的任何其它适当的数字存储介质。

在一些示例中,源设备102可以将被编码数据输出到文件服务器114或可以存储由源设备102生成的被编码数据的另一中间存储设备。目的地设备116可以经由流式传输或下载来从文件服务器114访问经存储的数据。文件服务器114可以是能够存储被编码数据并且将该被编码数据发送给目的地设备116的任何类型的服务器设备。文件服务器114可以代表网页服务器(例如,用于网站)、文件传输协议(FTP)服务器、内容递送网络设备、或网络附加存储(NAS)设备。目的地设备116可以通过任何标准数据连接(包括互联网连接)访问来自文件服务器114的被编码数据。这可以包括适于访问被存储在文件服务器114上的被编码数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,数字用户线(DSL)、电缆调制解调器等)、或这两者的组合。文件服务器114和输入接口122可以被配置为根据流式传输协议、下载传输协议、或其组合进行操作。

输出接口108和输入接口122可以代表无线发射机/接收机、调制解调器、有线联网组件(例如,以太网卡)、根据各种IEEE 802.11标准中的任何标准进行操作的无线通信组件、或其它物理组件。在其中输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据蜂窝通信标准(诸如4G、4G-LTE(长期演进)、LTE高级、5G等)来传送数据(诸如被编码数据)。在其中输出接口108包括无线发射机的一些示例中,输出接口108和输入接口122可以被配置为根据其它无线标准(诸如IEEE 802.11规范、IEEE802.15规范(例如,ZigBee(紫蜂)

本公开内容的技术可以被应用于编码和解码,以支持各种应用中的任何应用,诸如,自动驾驶车辆之间的通信、在扫描仪、相机、传感器和处理设备(诸如本地或远程服务器)之间的通信、地理制图或其它应用。

目的地设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)接收被编码比特流。被编码比特流可以包括由G-PCC编码器200定义的诸如以下语法元素之类的信令信息(其还由G-PCC解码器300使用):所述语法元素具有描述经译码单元(例如,切片、图片、图片组、序列等)的特性和/或处理的值。数据消费方118使用被解码数据。例如,数据消费方118可以使用被解码数据以确定物理对象的方位。在一些示例中,数据消费方118可以包括显示器,用以呈现基于点云的图像。

G-PCC编码器200和G-PCC解码器300各自可以被实现为各种适当的编码器和/或解码器电路中的任何一种,诸如,一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、分立逻辑、软件、硬件、固件、或其任何组合。当所述技术是部分地用软件实现的时,设备可以将用于软件的指令存储在适当的非暂时性计算机可读介质中,并且使用一个或多个处理器用硬件执行指令以执行本公开内容的技术。G-PCC编码器200和G-PCC解码器300中的每个可以被包括在一个或多个编码器或解码器中,编码器或解码器中的一个可以被整合为相应设备中的经组合的编码器/解码器(CODEC)的一部分。包括G-PCC编码器200和/或G-PCC解码器300的设备可以包括一个或多个集成电路、微处理器和/或其它类型的设备。

G-PCC编码器200和G-PCC解码器300可以根据译码标准(诸如,视频点云压缩((V-PCC))标准或几何体点云压缩((G-PCC)标准)进行操作。本公开内容通常可以涉及对图片进行译码(例如,进行编码和进行解码)以包括关于对数据进行编码或进行解码的过程。被编码比特流通常包括针对代表译码决策(例如,译码模式)的语法元素的一系列值。

本公开内容通常可以指“用信号通知”特定信息(诸如,语法元素)。术语“用信号通知”通常可以指对针对语法元素的值和/或用于对被编码数据进行解码的其它数据的传送。也就是说,G-PCC编码器200可以在比特流中用信号通知针对语法元素的值。通常,用信号通知指在比特流中生成值。如上文所指出的,源设备102可以以基本上实时地或不实时地(诸如可能在将语法元素存储到存储设备112以供目的地设备116稍后取得时发生)将比特流传送给目的地设备116。

ISO/IEC MPEG(JTC 1/SC 29/WG 11)正在研究对于对点云译码技术的标准化的潜在需求,该点云译码技术具有的压缩能力显著超过了当前方法的压缩能力,并将以制定标准为目标。该小组正在通过名为3维图形组(3DG)的合作努力共同开展此探索活动,以评估由该领域中的专家提出的压缩技术设计。

点云压缩活动被分类为两种不同的方法。第一种方法是"视频点云压缩"(V-PCC),其对3D对象进行分段并将这些分段投射在多个2D平面(其被表示为在2D帧中的"补丁")中,所述多个2D平面由传统的2D视频编解码器(诸如,高效视频译码(HEVC)(ITU-T H.265)编解码器)进一步译码。第二种方法是“基于几何体的点云压缩”(G-PCC),其直接地压缩3D几何体,即,一组点在3D空间中的位置、和相关联的属性值(针对与3D几何体相关联的每个点)。G-PCC解决了对在类别1(静态点云)和类别3(动态获取点云)两者中的点云的压缩。G-PCC标准的最新草案载于G-PCC DIS,ISO/IEC JTC1/SC29/WG11 w19088,比利时布鲁塞尔,2020年1月;对编解码器的描述载于G-PCC Codec Description v6,ISO/IEC JTC1/SC29/WG11w19091,比利时布鲁塞尔,2020年1月。

点云包含3D空间中的一组点,并且可以具有与点相关联的属性。属性可以是颜色信息(诸如R、G、B或Y、Cb、Cr)、或反射率信息、或其它属性。点云可以由LIDAR传感器和3D扫描仪的各种相机或传感器来捕捉,并且也可以是经计算机生成的。点云数据可以用于多种应用,包括但不限于建筑(建模)、制图(用于可视化和动画的3D模型)和汽车行业(用于帮助导航的LIDAR传感器)。

由点云数据占用的3D空间可以由虚拟边界框包围。边界框中的点的位置可以用特定的精度来表示;因此,可以基于精度对一个或多个点的位置进行量化。在最小的级别上,边界框被分割为体素,体素是由单元立方体表示的最小空间单元。边界框中的体素可以与零个、一个或多于一个点相关联。边界框可以被分割成多个立方体/长方体区域,这些区域可以称为瓦片(tile)。每个瓦片可以被译码成一个或多个切片。将边界框划分成切片和瓦片可以是基于每个分区中的点的数量的,或者是基于其它考虑因素的(例如,特定区域可以被译码为瓦片)。可以使用类似于视频编解码器中的分割决定来进一步划分切片区域。

图2提供G-PCC编码器200的概览。图3提供G-PCC解码器300的概览。所示模块是逻辑模块,并且不必与在G-PCC编解码器的参考实现(即,由ISO/IEC MPEG(JTC 1/SC 29/WG11)研究的TMC13测试模型软件)中的被实现的代码一一对应。

在G-PCC编码器200且G-PCC解码器300中,首先对点云位置进行译码。属性译码取决于被解码几何体。在图2和图3中,灰色阴影模块是典型地用于类别1数据的选项。对角线交叉阴影模块是典型地用于类别3数据的选项。所有其它模块是在类别1和类别3之间公用的。

对于类别3数据,经压缩的几何体是典型地作为从根部一直向下到单个体素的叶子级别的八叉树来表示的。对于类别1数据,经压缩的几何体是典型地由经修剪的八叉树(即,从根部向下到大于体素的块的叶子级别的八叉树)加上用于近似经修剪的八叉树的每个叶子内的表面的模型来表示的。这样,类别1数据和类别3数据两者可以共享八叉树译码机制,而类别1数据还可以用表面模型来近似每个叶子内的体素。所使用的表面模型是三角测量(triangulation),其包括逐块的1-10个三角体,形成三角形汤。因此,类别1几何体编解码器被称为三角汤(Trisoup)几何体编解码器,而类别3几何体编解码器被称为八叉树几何体编解码器。

在八叉树的每个节点处,针对其孩子节点中的一个或多个孩子节点(多至八个节点)来用信号通知占用(当不推断占用时)。指定了多个邻域,其包括:(a)与当前八叉树节点共享面的节点、(b)与当前八叉树节点共享面、边或顶点的节点等。在每个邻域内,节点和/或其孩子节点的占用可以用于预测当前节点或其孩子节点的占用。对于在八叉树中的特点节点中稀疏的点,编解码器还支持直接译码模式,其中,直接对点的3D位置进行编码。可以用信号通知标志,用以指示:直接模式是用信号通知的。在最低级别上,还可以对与八叉树节点/叶子节点相关联的点的数量进行译码。

一旦几何体被译码,与几何体点对应的属性就被译码。当有与一个被重构/被解码几何体点对应的多个属性点时,可以导出表示被重构点的属性值。

在G-PCC中有三种属性译码方法:区域自适应分层变换(RAHT)编码、基于插值的分层最近邻预测(预测变换)和具有更新步长/提升步长的基于插值的分层最近邻预测(提升变换)。RAHT和提升通常用于类别1数据,而预测通常用于类别3数据。然而,任何一种方法都可以用于任何数据,而且就像G-PCC中的几何体编解码器一样,用于对点云进行译码的属性译码方法是在比特流中指定的。

对属性的译码可以按细节级别(LOD)进行,其中,利用每个细节级别,可以获得较精细的对点云属性的表示。可以基于与邻近节点的距离度量或基于采样距离来指定每个细节级别。

在G-PCC编码器200处,对作为针对属性的译码方法的输出获得的残差进行量化。残差可以是通过从基于当前点的邻近点以及基于先前被编码点的属性值导出的预测值中减去属性值来获得的。可以使用上下文自适应算术译码对经量化残差进行译码。

在图2的示例中,G-PCC编码器200可以包括坐标变换单元202、颜色变换单元204、体素化单元206、属性转移单元208、八叉树分析单元210、表面近似分析单元212、算术编码单元214、几何体重构单元216、RAHT单元218、LOD生成单元220、提升单元222、系数量化单元224和算术编码单元226。

如图2的示例所示,G-PCC编码器200可以获得点云中的点的位置集合和属性集合。G-PCC编码器200可以从数据源104(图1)获得点云中的点的位置集合和属性集合。位置可以包括点云中的点的坐标。属性可以包括有关点云中的点的信息,诸如与点云中的点相关联的颜色。G-PCC编码器200可以生成几何体比特流203,其包括对点云中的点的位置的经编码表示。G-PCC编码器200还可以生成属性比特流205,其包括对属性集合的经编码表示。

坐标变换单元202可以对点的坐标应用变换,以将坐标从初始域变换到变换域。本公开内容可以经将变换的坐标称为变换坐标。颜色变换单元204可以应用变换,以将属性的颜色信息变换到不同域。例如,颜色变换单元204可以将颜色信息从RGB颜色空间变换到YCbCr颜色空间。

此外,在图2的示例中,体素化单元206可以对变换坐标进行体素化。对变换坐标的体素化可以包括量化以及移除点云的一些点。换句话说,点云的多个点可以归入单个“体素”中,该单个“体素”此后在一些方面可以将其视为一个点。此外,八叉树分析单元210可以基于经体素化的变换坐标生成八叉树。此外,在图2的示例中,表面近似分析单元212可以对点进行分析,以潜在地确定对点集合的表面表示。算术编码单元214可以对表示八叉树的信息和/或由表面近似分析单元212确定的表面的信息的语法元素进行熵编码。G-PCC编码器200可以在几何体比特流203中输出这些语法元素。几何体比特流203还可以包括其它语法元素,包括未被算术地编码的语法元素。

几何体重构单元216可以基于八叉树、指示由表面近似分析单元212确定的表面的数据和/或其它信息,来重构点云中的点的变换坐标。由于体素化和表面近似,由几何体重构单元216重构的变换坐标的数量可以与点云的点的原始数量不同。本公开内容可以将作为结果得到的点称为经重构点。属性转移单元208可以将点云的原始点的属性转移到点云的经重构点。

此外,RAHT单元218可以对经重构点的属性应用RAHT译码。在一些示例中,在RAHT下,提取2x2x2点位置块的属性,并沿一个方向对其进行变换,以获得四个低频节点(L)和四个高频节点(H)。随后,在第二方向对四个低频节点(L)进行变换,以获得两个低频节点(LL)和两个高频节点(LH)。沿第三方向对两个低频节点(LL)进行变换,以获得一个低频节点(LLL)和一个高频节点(LLH)。低频节点LLL对应于DC系数,并且高频节点H、LH和LLH对应于AC系数。每个方向上的变换可以是具有两个系数权重的1-D变换。低频系数可以被取作针对下一较高级的RAHT变换的2x2x2块的系数,并且AC系数被编码而没有变化;这种变换持续到顶部根节点为止。用于编码的树遍历是自上而下的,被用于计算要被用于系数的权重;变换顺序是自下而上的。然后可以对系数进行量化和译码。

替代地或另外,LOD生成单元220和提升单元222可以分别对经重构点的属性应用LOD处理和提升。LOD生成被用于将属性分成不同的细化级别。每个细化级别提供对点云的属性的细化。第一细化级别提供粗略近似,并且包含较少的点;随后的细化级别通常包含较多的点;依此类推。细化级别可以是使用基于距离的度量来构建的,或者可以使用一个或多个其它分类标准(例如,从特定顺序中进行子采样)。因此,所有经重构点可以被包括在细化级别中。每个细节级别是通过取对多至特定的细化级别的所有点的联合来产生的:例如,LOD1是基于细化级别RL1获得的,LOD2是基于RL1和RL2获得的,......LODN是通过对RL1、RL2、......RLN的联合获得的。在一些情况下,LOD生成之后可以有预测方案(例如,预测变换),其中,与LOD中的每个点相关联的属性是根据前面点的加权平均结果来预测的,并且残差被量化并被熵译码。提升方案建立在预测变换机制之上,其中,使用了更新算子以更新系数,并且执行对系数的自适应量化。

RAHT单元218和提升单元222可以基于属性来生成系数。系数量化单元224可以量化由RAHT单元218或提升单元222生成的系数。算术编码单元226可以对表示经量化系数的语法元素应用算术译码。G-PCC编码器200可以是在属性比特流205中输出这些语法元素。属性比特流205还可以包括其它语法元素,包括经非算术地编码的语法元素。

在图3的示例中,G-PCC解码器300可以包括几何体算术解码单元302、属性算术解码单元304、八叉树合成单元306、逆量化单元308、表面近似合成单元310、几何体重构单元312、RAHT单元314、LoD生成单元316、逆提升单元318、逆变换坐标单元320和逆变换颜色单元322。

G-PCC解码器300可以获得几何体比特流203和属性比特流205。解码器300的几何体算术解码单元302可以对几何体比特流203中的语法元素应用算术解码(例如,上下文-自适应二进制算术译码(CABAC)、或其它类型的算术解码)。同样,属性算术解码单元304可以对属性比特流205中的语法元素应用算术解码。

八叉树合成单元306可以基于从几何体比特流203中解析的语法元素来合成八叉树。从八叉树的根节点开始,在每个八叉树级别处的八个子节点中的每个孩子节点的占用是在比特流中用信号通知的。当信号通知指示在特定的八叉树级别处的孩子节点被占用时,用信号通知该孩子节点的孩子的占用。在对每个八叉树级别处的节点用信号通知后,进入后续八叉树级别。在八叉树的最终级别处,每个节点对应体素位置;当叶节点被占用时,可以指定要在体素位置处占用的一个或多个点。在一些情况下,由于量化,八叉树的一些分支可能早于最终级别而终止。在这种情况下,叶子节点被视为没有孩子节点的被占用节点。在几何体比特流203中使用表面近似的情况下,表面近似合成单元310可以基于从几何体比特流203中解析的语法元素并基于八叉树来确定表面模型。

此外,几何体重构单元312可以执行重构,以确定点云中的点的坐标。对于八叉树的叶子节点处的每个位置,几何体重构单元312可以通过使用对八叉树中的叶子节点的二进制表示来重构节点位置。在每个相应叶子节点处,该相应叶子节点处的点的数量被用信号通知;这指示同一体素位置处的重复点的数量。当使用几何体量化时,为了确定经重构点位置值而对点位置进行比例调整。

逆变换坐标单元320可以对经重构坐标应用逆变换,以将点云中的点的经重构坐标(位置)从变换域转换回初始域。点云中的点的位置可以是在浮点域中,但G-PCC编解码器中的点位置是在整数域中译码的。逆变换可以被用于将位置转换回原始域。

此外,在图3的示例中,逆量化单元308可以对属性值进行逆量化。属性值可以基于从属性比特流205获得的语法元素(例如,包括由属性算术解码单元304解码的语法元素)。

取决于属性值如何被编码,RAHT单元314可以执行RAHT译码,以基于经逆量化属性值来确定针对点云中的点的颜色值。RAHT解码是从树的顶部到底部进行的。在每个级别处,使用根据逆量化过程导出的低频系数和高频系数来导出组成值。在叶子节点处,导出的值与系数的属性值对应。针对点的权重推导过程与在G-PCC编码器200处使用的过程类似。另外,LOD生成单元316和逆提升单元318可以使用基于细节级别的技术确定针对点云中的点的颜色值。LOD生成单元316对每个LOD进行解码,给出对点的属性的逐步精细的表示。利用预测变换,LOD生成单元316可以根据处于在先LOD中的点或先前在同一LOD中重构的点的加权和来导出对点的预测结果。LOD生成单元316可以将预测结果加到残差(其是在逆量化后获得的),以获得属性的经重构值。当使用提升方案时,LOD生成单元316还可以包括更新算子,用以更新用于推导属性值的系数。在这种情况下,LOD生成单元316还可以应用逆自适应量化。

此外,在图3的示例中,逆变换颜色单元322可以对颜色值应用逆颜色变换。逆颜色变换可以是由编码器200的颜色变换单元204所应用的颜色变换的逆变换。例如,颜色变换单元204可以将颜色信息从RGB颜色空间变换到YCbCr颜色空间。相应地,逆颜色变换单元322可以将颜色信息从YCbCr颜色空间变换到RGB颜色空间。

图2和图3的各种单元被示出以助于理解由编码器200和解码器300执行的操作。单元可以被实现为固定功能电路、可编程电路、或其组合。固定功能电路是指提供特定功能的电路,并被预先设定了可以执行的操作。可编程电路指代可以被编程以执行各种任务并且在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使得可编程电路以由软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但固定功能电路执行的操作的类型通常是不可变的。在一些示例中,单元中的一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,单元中的一个或多个单元可以是集成电路。

在(瑞典哥德堡,2019年7月,ISO/IEC JTC1/SC29/WG11 MPEG/m48906,SébastienLasserre、David Flynn的“[GPCC]Planar mode in octree-based geometry coding”)中首次提出的平面译码模式是在瑞士日内瓦举行的第128次MPEG会议上(瑞士日内瓦,2019年10月,ISO/IEC JTC1/SC29/WG11 MPEG/m50008,Sébastien Lasserre、Jonathan Taquet的“[GPCC]CE13.22 report on planar coding mode”)采纳的。在(瑞士日内瓦,2019年10月,ISO/IEC JTC1/SC29/WG11 MPEG/m50642,Sébastien Lasserre、Jonathan Taquet的“[GPCC][CE 13.22related]An improvement of the planar coding mode”,以下简称“m50642”)中首次提出的角度译码模式是在比利时布鲁塞尔举行的第129次MPEG会议上(比利时布鲁塞尔,2020年1月,ISO/IEC JTC1/SC29/WG11 MPEG/m51594,Sébastien Lasserre、Jonathan Taquet的“[GPCC]CE 13.22report on angular mode”,以下简称“m51594”)采纳的,并且通过使用典型LIDAR传感器的传感器特性提高了平面模式的译码效率。角度译码模式可以可选地与平面模式一起使用,并且通过采用典型LIDAR传感器中感测激光束的位置和角度的知识,改进了对垂直(z)平面位置语法元素的译码。此外,角度译码模式还可以可选地用于改进在IDCM中对垂直z位置比特的译码。在不同提案(2020年4月,电话会议(先前的阿尔卑巴赫会议),ISO/IEC JTC1/SC29/WG11 MPEG/m53693,Geert Van der Auwera、Bappaditya Ray、Louis Kerofsky、Adarsh K.Ramasubramonian、Marta Karczewicz的“[GPCC][New Proposal]Angular mode simplifications and HLS refinements”)中,角度译码模式的上下文导出得以简化,并且对传感器数据参数的HLS译码也较有效率。以下章节中的角度模式描述是基于原始的MPEG贡献文件[m50642,m51594]和GPCC DIS文本(2020年11月,电话会议,G-PCC DIS,ISO/IEC JTC1/SC29/WG11 w19617,以下简称“GPCC DIS”)。

在(比利时布鲁塞尔,2020年1月,ISO/IEC JTC1/SC29/WG11 MPEG/m51596,Sébastien Lasserre、Jonathan Taquet的“[GPCC][CE13.22 related]The azimuthalcoding mode”,以下简称“m51596”)中首次提出的方位角译码模式是在第130次MPEG电话会议上(2020年4月,电话会议(先前的阿尔卑巴赫会议),ISO/IEC JTC1/SC29/WG11 MPEG/m52958,Sébastien Lasserre、Jonathan Taquet的“[GPCC][CE 13.22]Report onazimuthal coding mode”,以下简称“m52958”)采纳的。方位角译码模式与角度模式类似,并将其扩展到对平面模式的(x)和(y)平面位置语法元素的译码,并改进了IDCM中对x位置比特或y位置比特的译码。在第131次MPEG电话会议上的不同提案(2020年7月,电话会议,ISO/IEC JTC1/SC29/WG11 MPEG/m54694,Geert Van der Auwera、Bappaditya Ray、AdarshK.Ramasubramonian、Marta Karczewicz的“[GPCC][New Proposal]Planar and azimuthalcoding mode simplifications”,以下简称“m54694”)中,在方位角模式中使用的上下文的数量大幅减少。

请注意:在下面的章节中,“角度模式”也可以指方位角模式。

在GPCC DIS中与平面译码模式有关的规范概述如下:

8.2.3.1节点对于平面译码模式的资格

XXX拆分和重定位

[XXX,此过程缺少在解码is_planar_flag之后的平面速率更新]

对占用平面的显式译码以XXX的概率为条件。

具有元素PlanarRate[k](其中k=0..2)的数组PlanarRate是对关于节点的占用形成垂直于k轴的单个平面的概率的估计。

变量LocalDensity是对节点中的被占用孩子节点的平均数量的估计。

变量NumNodesUntilPlanarUpdate计算在更新PlanarRate和LocalDensity之前要解析的节点的数量。

[XXX熵态延续]

在开始解析geometry_octree语法结构时,PlanarRate和LocalDensity被初始化如下:

for(k=0;k<3;k++)

PlanarRate[k]=1024

LocalDensity=4096

NumNodesUntilPlanarUpdate=0

在开始解析每个geometry_octree_node语法结构时,NumNodesUntilPlanarUpdate被递减。如果NumNodesUntilPlanarUpdate小于零,则PlanarRate和LocalDensity如下被更新:

确定被占用兄弟节点的数量,并将其用于更新LocalDensity估计结果:

let numSiblings=NodeNumChildren[depth-1][sNp][tNp][vNp]

LocalDensity=(255×LocalDensity+1024×numSiblings)>>8

在下一次更新前的节点的数量为:

NumNodesUntilPlanarUpdate=numSiblings-1XXX

双亲节点的占用信息用于沿每个轴确定单个被占用平面的存在性,并用于更新对应的平面概率估计结果PlanarRate[k]。

在开始解析每个geometry_octree_node语法结构时,针对每个轴确定了当前节点是否有资格用信号通知平面信息。此过程的输出是数组PlanarEligible,其具有元素PlanarEligible[k],其中k=0..2。

首先,根据表18,使用PlanarRate来确定三个平面的从可能性最大到可能性最小的顺序planeOrder[k]。

然后,PlanarEligible被设置如下:

表18-根据planarRate[k]确定planeOrder[k]的值

/>

可以向比特流中用信号通知语法元素:

is_planar_flag[axisIdx]等于1指示当前节点的孩子节点的位置形成了垂直于第axisIdx轴的单个平面;

当存在is_planar_flag[axisIdx]等于0时,指示当前节点的孩子节点的位置占用了垂直于第axisIdx轴的两个平面。

用于译码is_planar_flag的上下文索引(ctxIdx)是在GPCC DIS中的表37中指定的,其中,其被设为等于axisIdx。

8.2.3.2沿轴跟踪最近节点的缓冲区

数组PlanarPrevPos、PlanarPlane、IsPlanarNode记录关于先前被解码的几何体树节点的信息,供用于确定针对语法元素plane_position的ctxIdx。当geometry_planar_enabled_flag等于0或planar_buffer_disabled_flag等于1时,解码过程不使用这些数组。

在此过程中,变量axisIdx用于表示三个被译码轴之一,变量axisPos表示节点沿轴axisIdx的位置。axisPos的值是在范围0..0x3fff。

具有值IsPlanarNode[axisIdx][axisPos]的数组IsPlanarNode指示第axisIdx轴位置分量等于axisPos的最近被解码节点是否在垂直于第axisIdx轴的平面内是平面的。

数组PlanarPrevPos,其具有值PlanarPrevPos[axisIdx][axisPos],PlanarPrevPos[axisIdx][axisPos]存储针对最近被解码节点的最大位置分量,最大位置分量具有等于axisPos的第axisIdx位置分量。

具有值PlanarPlane[axisIdx][axisPos]的数组PlanarPlane指示针对最近被解码节点的plane_position[axisIdx]的值,其具有等于axisPos的第axisIdx位置分量。

在每个几何树级别开始处,数组PlanarPrevPos和IsPlanarNode的每个元素被初始化为0。

XXX在解码每个带有参数childIdx和axisIdx的geometry_planar_mode_data语法结构之后,对数组PlanarPrevPos、PlanarPlane和IsPlanarNode进行如下更新:

变量axisPos表示沿第axisIdx轴的位置,其如下被导出:

if(axisIdx==0)axisPos=sN&0x3fff

if(axisIdx==1)axisPos=tN&0x3fff

if(axisIdx==2)axisPos=vN&0x3fff

与节点对应的数组条目如下被更新:

if(axisIdx==0)maxPos=Max(tN&0x7c0,vN&0x7c0)>>3

if(axisIdx==1)maxPos=Max(sN&0x7c0,vN&0x7c0)>>3

if(axisIdx==2)maxPos=Max(sN&0x7c0,tN&0x7c0)>>3

PlanarPrevPos[axisIdx][axisPos]=maxPos

if(is_planar_flag[axisPos])

PlanarPlane[axisIdx][axisPos]=plane_position[axisIdx]

IsPlanarNode[axisIdx][axisPos]=is_planar_flag[axisIdx]

8.2.3.3确定针对语法元素plane_position的ctxIdx

此过程的输入是:

标识垂直于平面的轴的变量axisIdx、以及

当前节点在几何树级别内的位置(sN、tN、vN)。

此过程的输出是变量ctxIdx。

变量neighOccupied指示是否有沿第axisIdx轴与当前节点相邻的节点。其如下被导出:XXX

neighOccupied=(NeighbourPattern>>2×axisIdx)&3[XXX Verify pattern]

adjPlaneCtxInc=neighOccupied==3?0:neighOccupied

当planar_buffer_disabled_flag等于1时,ctxIdx的值被设为等于adjPlaneCtxInc,并且此过程不执行进一步处理。否则,本条款的其余部分适用。

变量axisPos指示当前节点的沿第axisIdx轴的14个最低有效位置比特:

if(axisIdx==0)axisPos=sN&0x3fff

if(axisIdx==1)axisPos=tN&0x3fff

if(axisIdx==2)axisPos=vN&0x3fff

变量dist表示在当前节点与具有沿第axisIdx轴的axisPos的值相同的值的最近被解码[注:被解码可能是错误的术语?]节点位置之间的距离。其如下被导出:

a=PlanarPrevPos[axisIdx][axisPos]

if(axisIdx==0)b=Max(tN&0x7c0,vN&0x7c0)>>3

if(axisIdx==1)b=Max(sN&0x7c0,vN&0x7c0)>>3

if(axisIdx==2)b=Max(sN&0x7c0,tN&0x7c0)>>3

dist=Abs(a-b)

上下文索引ctxIdx如下被导出:

8.2.3.4对用于对水平平面位置进行译码的planePosIdxAzimuthalS和planePosIdxAzimuthalT的确定

[注:对这如何与上述ctxIdx交互进行修补。注意:ctxIdx与平面无关]

对用于对plane_position[0]进行算术译码的planePosIdxAngularS和用于对plane_position[1]进行算术译码的planePosIdxAngularT的确定是如下来获得的。

当geometry_enangular_enabled_flag等于0时,planePosIdxAzimuthalS的值和planePosIdxAzimuthalT的值都被设为等于planePosIdx。否则,以下内容适用:

对用于对plane_position[2]进行算术编码的contextAngular的确定是如在XREF中描述地来执行的。

8.2.3.5对用于对垂直平面位置进行译码的planePosIdxAngular的确定

[注:对这如何与上述ctxIdx交互进行修补。注意:ctxIdx与平面无关]

对用于对plane_position[2]进行算术译码的planePosIdxAngular的确定是如下来获得的。

当geometry_enangular_enabled_flag等于0时,planePosIdxAngular的值被设为等于planePosIdx。

否则,以下内容适用:

对用于对plane_position[2]进行算术译码的contextAngular的确定是如在8.2.4.4节中描述地来执行的。

GPCC DIS中的角度模式和方位角模式

角度模式语法

携带Lidar传感器信息的语法元素是表2中的斜体字,这些语法元素是供角度译码模式具有任何译码效率益处所需的。这些语法元素的语义是在GPCC DIS中如下规定的:

geometry_planar_enabled_flag等于1指示平面译码模式被激活。

geometry_planar_enabled_flag等于0指示平面译码模式未被激活。当不存在时,geometry_planar_enabled_flag被推断为0。

geom_planar_th[i](其中i在范围0..2中)指定沿第i个最可能方向针对平面译码模式的激活的、以便平面译码模式有效率的、门限的值。geom_planar_th[i]是整数,在范围0..127中。

geom_idcm_rate_minus1指定节点可以有资格在其处进行直接译码的速率。如果不存在,则推断geom_idcm_rate_minus1为31。

数组IdcmEnableMask如下被导出:

geometry_angular_enabled_flag等于1指示角度译码模式被激活。

geometry_angular_enabled_flag等于0指示角度译码模式未被激活。

geom_slice_angular_origin_present_flag等于1指定在几何体切片报头中存在切片相对角度原点。geom_slice_angular_origin_present_flag等于0指定在几何体切片报头中不存在角度原点。当不存在时,geom_slice_sangular_origin_present_flag被推断为0。

geom_angular_origin_bits_minus1加1是语法元素geom_angular_origin_xyz[k]的比特长度。

geom_angular_origin_xyz[k]指定在处理角度译码模式时使用的原点的坐标(x,y,z)的第k个分量。当不存在时,geom_angular_origin_xyz[k]的值(其中k=0..2)被推断为0。

geom_angular_azimuth_scale_log2和geom_angular_radius_scale_log2指定被用于在向笛卡尔坐标的转换期间对使用球面坐标系来译码的位置进行比例调整的系数。

geom_angular_azimuth_step_minus1加1指定方位角的单位变化。在进行角度预测树译码时使用的差分预测残差可以部分地被表示为geom_angular_azimuth_step_minus1加1的倍数。

geom_angular_azimuth_step_minus1的值应小于(1<

laser_angle_init和laser_angle_diff[i](其中i=0..number_lasers_minus1)指定第i激光相对于由第一被译码轴和第二被译码轴定义的水平平面的仰角的正切值。

数组LaserAngle[i](其中i=0..number_lasers_minus1)如下被导出:

LaserAngle[0]=laser_angle_init

if(number_lasers_minus1>0)

LaserAngle[1]=laser_angle_init+laser_angle_diff[1]

for(i=2;i<=number_lasers_minus1;i++)

LaserAngle[i]=2*LaserAngle[i–1]–LaserAngle[i-2]+laser_angle_diff[i]

位流一致性要求是:i=1..number_lasers_minus1时的LaserAngle[i]的值应大于或等于LaserAngle[i-1]。

laser_correction_init和laser_correction_diff[i](i=1..number_lasers_minus1)指定了第i激光位置相对于GeomAngularOrigin[2]的沿第二内部轴的校正。

laser_phi_per_turn_init_minus1和laser_phi_per_turn_diff[i](i=1..number_lasers_minus1)指定在对角度译码模式进行处理时使用的由位于原点的旋转传感系统的第i激光产生的采样的数量。

数组LaserCorrection[i]和LaserPhiPerTurn[i](i=1..number_laser_minus1)如下被导出:

位流一致性要求是:i=0..number_lasers_minus1时的LaserPhiPerTurn[i]的值不应是0。

数组DeltaPhi[i]和InvDeltaPhi[i](i=0..number_lasers_minus1)如下被导出:

planar_buffer_disabled_flag等于1指示:在对平面模式标志和平面模式中的平面位置进行译码时,不使用利用缓冲区对最近节点进行跟踪。如果不存在,planar_buffer_disabled_flag被推断为!geometry_planar_enabled_flag。

表2、几何体参数集语法。角度模式语法元素是用斜体的。

/>

在表3和表4中分别包括平面模式和直接模式的数据语法。

表3、几何体八叉树模式数据语法

/>

表4、直接模式数据语法

/>

8.2.4.1针对节点的角度资格的导出过程

XXX输入/输出

如果geometry_enangular_enabled_flag等于0,则angular_eligible被设为等于0。

否则,以下内容适用:

指定激光之间的最小角度距离的变量deltaAngle如下被导出:

最后,angular_eligible如下被导出:[注:sNchild需要检查]

8.2.4.2与节点相关联的激光索引laserIndex的导出过程

XXX输入/输出

如果angleibiligility angular_eligible等于0,则索引laserIndex被设为预设值UNKOWN_LASER。

否则,如果角度资格angular_eligible等于1,则以下内容作为在8.2.5.1中描述的过程的延续而适用。

首先,当前节点离Lidar的径向距离的逆rInv如下被确定:

r2=sLidar×sLidar+tLidar×tLidar

rInv=invSqrt(r2)

然后如下确定角度theta32:

vLidar=((vNchild-GeomAngularOrigin[2]+midNodeT)<<1)-1

theta=vLidar×rInv

theta32=theta>=0?theta>>15:-((-theta)>>15)

[注XXX:laserIndex[Parent]是无意义的,需要添加另一状态数组]

最后,基于双亲节点Parent,如下确定角度资格和相关联的激光。

8.2.4.3针对平面译码模式的上下文contextAzimuthalS和上下文contextAzimuthalT的导出过程

XXX输入/输出

以下内容作为在8.2.5.2中描述的过程的延续而适用。

首先,根据相对于角度原点的节点位置来推导两个角度

sPos=sNchild-GeomAngularOrigin[0]XXX

tPos=tNchild-GeomAngularOrigin[1]

phiNode=iAtan2(tPos+midNodeT,sPos+midNodeS);

phiNode0=iAtan2(tPos,sPos);

其次,从数组phiBuffer中获得方位角预测器

predPhi=phiBuffer[laserIndex]

if(predPhi==0x80000000)

predPhi=phiNode

两个方位角上下文如下被初始化

contextAzimuthalS=-1

contextAzimuthalT=-1

然后,如果预测器predPhi不等于0x80000000,则以下内容适用以对两个方位角上下文进行细化

8.2.4.4针对平面译码模式的上下文contextAngular的导出过程

XXX输入/输出

如果激光索引laserIndex等于UNKOWN_LASER,那么contextAngular被设为预设值UNKOWN_CONTEXT。否则,如果激光索引laserIndex不等于UNKOWN_LASER,则作为在8.2.5.2中描述的过程的延续,以下内容适用。

首先,确定相对于下平面和上平面的两个角差thetaLaserDeltaBot和thetaLaserDeltaTop。

thetaLaserDelta=LaserAngle[laserIndex]-theta32

Hr=LaserCorrection[laserIndex]×rInv;

thetaLaserDelta+=Hr>=0?-(Hr>>17):((-Hr)>>17)

vShift=(rInv<>20XXX

thetaLaserDeltaTop=thetaLaserDelta-vShift

thetaLaserDeltaBot=thetaLaserDelta+vShift

然后,根据两个角度差来推导角度上下文。

contextAngular=thetaLaserDelta<0

if(thetaLaserDeltaTop>=0||thetaLaserDeltaBot<0)

contextAngular+=2

GPCC的运动预测。在G-PCC InterEM软件(中国澳门,2018年10月,Exploratorymodel for inter-prediction in G-PCC,ISO/IEC JTC1/SC29 WG11 N18096)中涉及有两种运动,全局运动矩阵和局部节点运动向量。全局运动参数被定义为旋转矩阵和平移向量,其将被应用于预测(参考)帧中的所有点(被应用了局部运动模式的点除外)。八叉树的节点的局部节点运动向量是运动向量,其仅适用于预测(参考)帧中的节点内的点。下面将详细介绍InterEM中的运动估计算法。

图4是示出用于InterEM的示例运动估计技术的流程图。给定输入的预测(参考)帧和当前帧,首先在全局尺度上估计全局运动。在预测上应用全局运动之后,在较精细的尺度(八叉树中的节点级别)上估计局部运动。最后,在运动补偿中应用所估计的局部节点运动。

上述技术的详细介绍如下。

用于估计全局运动矩阵和平移向量的方法。图5是示出用于估计局部节点运动向量的示例技术的流程图。如图5所示,运动向量是以递归方式来估计的。用于选择最合适运动向量的成本函数可以基于速率-失真成本。

如果当前节点没有拆分成8个孩子节点,则确定可以导致在当前节点和预测节点之间的最低成本的运动向量。如果当前节点被分为8个孩子节点,则应用运动估计算法,并且通过将每个孩子节点的所估计成本值相加来获得拆分条件下的总成本。通过在进行拆分与不进行拆分之间比较成本,来决定进行拆分还是不进行拆分;如果进行拆分,每个子节点将被指派给相应的运动向量(或可以被进一步拆分为其孩子节点),如果不进行拆分,则当前节点将被指派运动向量。

影响运动向量估计的性能的两个参数是块大小(BlockSize)和最小预测单元大小(MinPUSize)。BlockSize定义了用于应用运动向量估计的节点大小的上限,并且MinPUSize定义了下限。

上述技术可能存在一个或多个缺点。节点的参考块是通过使用所估计的运动信息(旋转和平移)进行运动补偿来导出的。对运动信息的良好估计带来在几何体结构(诸如在当前节点和参考节点之间的占用、平面信息)方面的高度相关性。因此,利用参考节点的几何体信息将提高当前节点的译码性能。根据本公开内容的一项或多项技术,G-PCC译码器(例如,G-PCC编码器200或G-PCC解码器300)可以在对当前节点的平面信息进行译码时利用参考块的信息。作为一个示例,G-PCC译码器可以在节点针对平面译码模式的资格、当对平面标志和平面索引进行译码时对上下文的选择中,利用参考块的信息。可以单独地应用,或者可以组合本文档中公开的一种或多种技术。

使用帧间预测的节点的平面资格。在一个示例中,PlanarRate可以是通过取决于参考块的平面信息的因子(R)来更新的。在此示例中,GPCC DIS中第8.2.3.1节中的PlanarRate可以被指定为(以粗斜体示出的添加内容):

双亲节点的占用信息用于沿每个轴确定单个被占用平面的存在性,并用于更新对应的平面概率估计PlanarRate[k]。

在另一示例中,如果参照块不是平面的,则不允许使用PlanarEligible。

然后,PlanarEligible被设置如下:

替代地,可以基于参考块的平面性(planarity)来单独地确定参考平面速率(PlanarRateRef)。可以基于对参考平面速率与阈值进行比较来另外确定当前节点针对平面模式的资格。例如:

然后,PlanarEligible被设置如下:

在一些情况下,平面索引位置是基于参考节点的平面索引位置导出的。在一些情况下,此决定可以基于阈值比较。

平面复制模式(PCM)。G-PCC译码器可以在比特流中用信号通知标志(PCM标志),以指示当前节点和参考节点是否在所有方向上共享相同的平面模式(例如,k=0...2)。当该标志为1时,解码器可能不需要对针对每个方向的平面标志进行解码,并且其仅使用参考节点中的对应值(例如,平面标志可以从参考节点中复制)。当标志为0时,可以用信号通知在每个方向上的平面标志信号。

在PCM标志的另一级别,其还可以指示当前节点和参考节点是否共享平面位置索引。在本示例中,如果在第k方向上,PCM标志为1,解码器不需要解码平面位置索引,并且其可以使用在相同的第k方向上参考块中的平面索引。

在一些示例中,可以有条件地用信号通知PCM标志。例如,当参考块的占用为0时,可以不用信号通知PCM标志,而是将其隐式地设为0。在一些示例中,可以定义在切片报头或SPS报头中的标志,以激活或去激活PCM模式。

使用帧间预测在对平面标志进行信号通知时的上下文选择。可以存在用于用信号通知平面标志(is_planar_flag)的三个上下文。对索引的选择是单单通过方向索引(axisIdx)来选择的。根据本公开内容的一种或多种技术,可以使用参考节点的平面模式来扩展用于编码平面标志的上下文。扩展的示例可以被描述如下:

此过程的输入是:

-变量childIdx标识当前节点的孩子,

-变量axisIdx标识垂直于平面的轴,以及

-当前节点在几何体树级别内的位置(sN、tN、vN)。

该过程的输出是变量ctxIdx。ctxIdx的值将被设为等于(2*axisIdx+PlanarModeRef[axisIdx]),且不会执行进一步处理。

在本示例中,PlanarModeRef[axisIdx]指示参考节点在axisIdx方向上是否是平面的。

使用帧间模式针对语法元素plane_position的CtxIdx确定。在GPCC DIS中,用于编码plane_position的上下文索引是axisIdx的函数,平面位置预测基于邻居占用,用以确定在相同缓冲区行索引处最接近的已被译码节点的缓冲区查找包含isPlanar、planePosition和距离测量(distance measure),如下所示(8.2.3.3节):

上下文索引ctxIdx如下被导出:

在本公开内容的一个示例中,参考块的占用和平面模式可以用作用于决定平面位置译码的上下文索引的附加参数。

让PlanarModeRef和RefPlane是参考块中的平面模式和平面位置。

如果PlanarModeRef[axisIdx]为0,则RefPlane[axisIdx]被设为等于-1。

在示例中,可以使用RefPlane[axisIdx]代替prevPlane:

ctxIdx=9×axisIdx+3×adjPlaneCtxInc+(RefPlane[axisIdx]+1)+3

在另一示例中,ctxIdx可以如下被更新。

ctxIdx=(12×axisIdx+4×adjPlaneCtxInc+2×distCtxInc+prevPlane+3)+(RefPlane[axisIdx]+1)x N

其中,N是仅使用axisIdx、adjPlaneCtxInc、distCtxInc和prevPlane来支持的上下文的数量。在目前的GPCC DIS草案中,N是36。

在另一示例中,可以使用参考块的占用和平面位置来代替邻居块占用,用于导出上下文。

在另一示例中,针对平面标志的上下文索引可以是仅使用参考块的方向索引和平面模式如下被导出的:

ctxIdx=3×axisIdx+(RefPlane[axisIdx]+1)+3

使用帧间预测关于针对平面译码模式的上下文contextAngular的导出过程。令M是针对用于对平面位置进行译码的contextAngular支持的上下文的数量。在如在3.3.5节中导出contextAngular之后,可以使用参考块的平面模式和平面位置对其进行更新。

例如,3.3.5节中的contextAngular可以被更新如下:

在一些情况下,如果PlanarModeRef[axisIdx]为0,则RefPlane[axisIdx]被设为-1。

contextAngular值可以以下被指派:

然后,根据两个角度差来推导角度上下文。

contextAngular=thetaLaserDelta<0

if(thetaLaserDeltaTop>=0||thetaLaserDeltaBot<0)

contextAngular+=2

contextAngular=4x(RefPlane[axisIdx]+1)+contextAngular

在另一示例中,如果PlanarModeRef[axisIdx]为0,则RefPlane[axisIdx]被设置0。

contextAngular值可以如下被指派:

然后,根据两个角度差来推导角度上下文。

contextAngular=thetaLaserDelta<0

if(thetaLaserDeltaTop>=0||thetaLaserDeltaBot<0)

contextAngular+=2

contextAngular=4x(RefPlane[axisIdx])+contextAngular

将上下文contextAzimuthalS和上下文contextAzimuthalT与针对平面译码模式的帧间预测相结合的推导过程。

在8.2.4.3中导出上下文contextAzimuthalS和上下文contextAzimuthalT之后,可以通过使用参考块间的平面模式对其进行更新。

在一些情况下,如果PlanarModeRef[axisIdx]为0,RefPlane[axisIdx]被设为等于-1。可以进行如下修改:

在一些情况下,如果PlanarModeRef[axisIdx]为0,则RefPlane[axisIdx]被设为等于0。可以进行如下修改:

利用帧间预测进行上下文占用译码。

在针对InterEM的参考软件中,针对占用比特的上下文导出被导出如下:

在上述计算中,与帧间预测(ctxInter)相关联的上下文是!!mappedPred、bitPred、bitPredStrong的和。根据本公开内容的一种或多种技术,ctxIdxMapIdx可以被修改为:

int ctxIdxMapIdx=8*idxAdj

/*帧内预测*/

+bitIsPredicted+bitPrediction

/*帧间预测*/

+((!!mappedPred)<<2)+(bitPred<<1)+bitPredStrong);

基于运动的阈值。可以基于运动向量/运动参数定义阈值;该阈值可以用于本文档中公开的一个或多个确定中。

例如,可以基于与旋转(例如,旋转角度)或平移(例如,平移幅度)相关联的幅度/参数来确定阈值;如果与旋转相关联的角度为x,并且平移幅度为y,那么阈值可以作为x和y的函数(例如,线性组合a*x+b*y,其中a和b为固定值)导出的。

在其它替代方案中,与每个轴相关联的阈值可以是分别地导出的;例如,与轴相关联的平移可以用于导出与轴相关联的阈值。

基于阈值,可以进行一个或多个确定。例如,点与零运动相关联,与零运动相关联的阈值可以用于确定节点的平面资格(如上文关于PCM讨论地);当与点相关联的运动较大时,可以使用不同阈值用于确定平面资格。

在另一示例中,当阈值(或运动参数)超过特定的固定值时,在本文档中公开的一个或多个确定可以被禁用。

对于不同的确定,可以使用不同的阈值。阈值也可以是在比特流中用信号通知的。

本公开内容的各个方面中的示例可以是单独地使用的或以任何组合使用的。

图6是可以利用本公开内容的一种或多种技术使用的示例测距系统700的概念图。在图6的示例中,测距系统700包括照明器702和传感器704。照明器702可以发射光706。在一些示例中,照明器702可以将光706作为一个或多个激光光束来发射。光706可以是一个或多个波长,诸如红外线波长或可见光波长。在其它示例中,光706不是相干激光。当光706遇到对象(诸如对象708)时,光706产生返回光710。返回光710可以包括背向散射光和/或反射光。返回光710可以通过透镜711,透镜711可以导引返回光710以在传感器704上创造对象708的图像712。传感器704基于图像712来生成信号714。图像712可以包括一组点(例如,如图6的图像712中的点所表示的)。

在一些示例中,照明器702和传感器704可以安装在旋转结构上,使得照明器702和传感器704可以捕获环境的360度视图(例如,旋转LIDAR传感器)。在其它示例中,测距系统700可以包括一个或多个光学组件(例如,反射镜、准直器、衍射光栅等),其使得照明器702和传感器704能够检测特定范围(例如,最大360度)内的对象的范围。虽然图6的示例只示出单个照明器702和传感器704,但是测距系统700可以包括多组照明器和传感器。

在一些示例中,照明器702生成结构化光图案。在这些示例中,测距系统700可以包括多个传感器704,在这多个传感器上形成结构化光图案的相应图像。测距系统700可以使用结构化光图案的图像之间的差异以确定到结构化光图案从其反向散射的对象708的距离。当对象708相对靠近传感器704时(例如,0.2米至2米),基于结构化光的测距系统可以具有较高的准确度(例如,准确度在亚毫米范围内)。这种高准确度可以是在面部识别应用(诸如,解锁移动设备(例如,手机、平板电脑等))中有用的以及对于安全应用是有用的。

在一些示例中,测距系统700是基于飞行时间(ToF)的系统。在其中测距系统700是基于ToF的系统的一些示例中,照明器702生成光脉冲。换句话说,照明器702可以调节发射光706的幅度。在这种示例中,传感器704从由照明器702生成的光脉冲706中检测返回光710。然后,测距系统700可以基于光706被发射的时间和被检测之间的延迟以及已知的空气中光速,来确定到光706从其反向散射的对象708的距离。)在一些示例中,照明器702可以调制所发射的光706的相位,而不是(或除了)调制所发射的光706的幅度。在这样的示例中,传感器704可以检测来自对象708的返回光710的相位,并使用光速并基于照明器702在特定相位生成光706时与传感器704在特定相位检测到返回光710时之间的时间差来确定到对象708上的点的距离。

在其它示例中,可以在不使用照明器702的情况下生成点云。例如,在一些示例中,测距系统700的传感器704可以包括两个或更多个光学摄像头。在这种情况下,测距系统700可以使用光学摄像头以捕捉环境的立体图像,包括对象708。测距系统700可以包括点云生成器716,其可以计算立体图像中的方位之间的差异性。然后,测距系统700可以使用差异性以确定到在立体图像中示出的方位的距离。根据这些距离,点云生成器716可以生成点云。

传感器704还可以检测对象708的其它属性,诸如颜色和反射率信息。在图6的示例中,点云生成器716可以基于由传感器704生成的信号714来生成点云。测距系统700和/或点云生成器716可以形成数据源104(图1)的一部分。因此,可以是根据本公开内容的任何技术来编码和/或解码由测距系统700生成的点云。

图7是示出可以在其中使用本公开内容的一种或多种技术的示例性的基于车辆的场景的概念图。在图7的示例中,车辆800包括测距系统802。可以以参照图107描述的方式来实现测距系统802。虽然在图7的示例中没有示出,但车辆800还可以包括数据源(诸如数据源104(图1))和G-PCC编码器(诸如G-PCC编码器200(图1))。在图7的示例中,测距系统802发射激光光束804,激光光束804在行人806或道路上的其它对象上反射。车辆800的数据源可以基于由测距系统802生成的信号来生成点云。车辆800的G-PCC编码器可以对点云进行编码,以生成比特流808(诸如几何体比特流(图2)和属性比特流(图2))。比特流808包括的比特数可以比由G-PCC编码器获得的未被编码点云少很多。

车辆800的输出接口(例如,输出接口108(图1))可以将比特流808发送给一个或多个其它设备。比特流808包括的比特数可以比由G-PCC编码器获得的未被编码点云少很多。因此,与未被编码点云数据相比,车辆800能够较快地将比特流808发送给其它设备。此外,比特流808可能需要较少的数据存储容量。

在图7的示例中,车辆800可以将比特流808发送给另一车辆810。车辆810可以包括G-PCC解码器,诸如G-PCC解码器300(图1)。车辆810的G-PCC解码器可以对比特流808进行解码,以重构点云。车辆810可以将所重构的点云用于各种用途。例如,车辆810可以基于所重构的点云来确定行人806位于车辆800前方的道路上,并因此开始减速,例如,甚至在车辆810的驾驶员意识到行人806位于道路上之前。因此,在一些示例中,车辆810可以基于所重构的点云来执行自主导航操作。

另外或替代地,车辆800还可以将比特流808发送给服务器系统812。服务器系统812可以将比特流808用于各种目的。例如,服务器系统812可以存储比特流808,用于随后的对点云的重构。在此示例中,服务器系统812可以将点云与其它数据(例如,由车辆800生成的车辆遥测数据)一起用于训练自动驾驶系统。在其它示例中,服务器系统812可以存储比特流808,用于随后的用于法医碰撞调查的重构。

图8是示出可以在其中使用本公开内容的一种或多种技术的示例扩展现实系统的概念图。扩展现实(XR)是术语,用于涵盖一定范围的技术,包括增强现实(AR)、混合现实(MR)和虚拟现实(VR)。在图8的示例中,用户900位于第一方位902。用户900佩戴XR耳机904。作为XR耳机904的替代方案,用户900可以使用移动设备(例如,手机、平板电脑等)。XR耳机904包括深度检测传感器(诸如测距系统),其可以检测在方位902处对象906上的点的位置。XR耳机904的数据源可以使用由深度检测传感器生成的信号以生成在方位902处对对象906的点云表示。XR耳机904可以包括G-PCC编码器(例如,图1中的G-PCC编码器200),该编码器被配置为对点云进行编码以生成比特流908。

XR耳机904可以将比特流908(例如,经由诸如互联网的网络)发送给在第二方位914处由用户912佩戴的XR耳机910。XR耳机910可以解码比特流908以重构点云。XR耳机910可以使用点云以生成XR可视化(例如,AR、MR、VR可视化),其表示在方位902处的对象906。因此,在一些示例中,诸如当XR耳机910生成VR可视化时,用户912可以获得方位902的3D沉浸式体验。在一些示例中,XR耳机910可以基于所重构的点云来确定虚拟对象的位置。例如,XR耳机910可以基于所重构的点云来确定环境(例如,方位902)包括平坦表面,然后确定虚拟对象(例如,卡通人物)将被定位在该平坦表面上。XR耳机910可以生成XR可视化,其中虚拟对象位于所确定的位置。例如,XR耳机910可以示出坐在平坦表面上的卡通人物。

图9是示出可以在其中使用本公开内容的一种或多种技术的示例移动设备系统的概念图。在图9的示例中,移动设备1000(例如,无线通信设备)(诸如移动电话或平板电脑)包括测距系统(诸如LIDAR系统),其用于检测在移动设备1000的环境中对象1002上的点的位置。移动设备1000的数据源可以使用由深度检测传感器生成的信号以生成对对象1002的点云表示。移动设备1000可以包括G-PCC编码器(例如,图1的G-PCC编码器200),该编码器被配置为对点云进行编码以生成比特流1004。在图9的示例中,移动设备1000可以将比特流发送给远程设备1006,诸如服务器系统或其它移动设备。远程设备1006可以解码比特流1004以重构点云。远程设备1006可以将点云用于各种用途。例如,远程设备1006可以使用点云以生成移动设备1000的环境的地图。例如,远程设备1006可以基于所重构的点云来生成建筑物内部的地图。在另一示例中,远程设备1006可以基于点云来生成图像(例如,计算机图形)。例如,远程设备1006可以使用点云的点作为多边形的顶点,并使用点的颜色属性作为将多边形着色的基础。在一些示例中,远程设备1006可以将所重构的点云用于面部识别或其它安全应用。

图10A和10B示出在二进制体(bin)n处的该过程的示例。在图10A的示例201中,在二进制体n处的范围包括给定特定上下文状态(σ)由LPS的概率(p

在一些示例中,范围可以用9个比特来表示,并且低值可以用10个比特来表示。存在重归一化过程,用以保持处于足够精度的范围和下限值。只要范围小于256,就发生重归一化。因此,在重归一化后,范围总是等于或大于256。取决于范围和下限的值,BAC向比特流输出‘0’或‘1’,或更新内部变量(被称为BO:未完成比特),以备将来输出。图11示出了取决于范围的BAC输出的示例。例如,当范围和下限高于特定门限(例如,512)时,向比特流输出‘1’。例如,当范围和下限低于特定门限(例如,512)时,向比特流输出‘0’。当范围和下限介于特定阈值之间时,不向比特流输出任何内容。而是,将BO值递增,并且对下一二进制体进行编码。

如上所讨论地,算术译码方法可以用于提供较高的压缩效率。这通过首先使用称为二进制化的过程来将非二进制语法元素转换为二进制表示(例如,0、1)。作为结果转换后的条目被称为二进制体或二进制体串(bin-string)。然后将这些二进制体或二进制体串馈送入算术译码过程。图11示出了示例上下文自适应二进制算术译码(CABAC)编码阶段。示例CABAC编码阶段可以是在G-PCC编码器中实现的,诸如由图2的G-PCC编码器200的算术编码单元214和/或算术编码单元226实现。

在G-PCC的一些示例中,上下文自适应二进制算术译码(CABAC)可以用于通过二进制化过程生成二进制体。对于每个经译码二进制体值,选择合适的上下文模型。这些上下文模型用于基于二进制体概率值将每个二进制体值编码成输出比特。当二进制体同等可能地是0或1时,CABAC引擎将上下文建模和二进制体编码旁路。这是如下文讨论的旁路译码阶段。否则,随着基于二进制体值的概率对二进制体值进行编码和进行建模,指定适当的上下文模型。随着编码器对更多的二进制体进行编码,上下文被调整。最后,将被上下文-译码的二进制体值或原始比特流发送给或以其它方式提供给解码器。

图12是示例算术编码单元214的框图,该单元可以根据本公开内容的技术被配置为执行CABAC。语法元素1180被输入到熵编码单元220中。如果语法元素已经是二进制值语法元素(即,仅具有值0和1的标志或其它语法元素),则可以跳过二进制化的步骤。如果语法元素是非二进制值语法元素(例如,可以具有1或0以外的值的语法元素),则由二进制化器1200对非二进制值语法元素进行二进制化。二进制化器1200执行非二进制值语法元素到二进制决定序列的映射。这些二进制决定通常被称为“二进制体”。例如,对于转换系数级别,级别的值可以被分解成连续的二进制体,每个二进制体指示系数级别的绝对值是否大于某个值。例如,二进制体0(有时被称为显著性标志)指示变换系数级别的绝对值是否大于0。二进制体1指示变换系数级别的绝对值是否大于1,以此类推。可以针对每个非二进制值语法元素开发唯一的映射。

由二进制化器1200产生的每个二进制体被馈送给熵编码单元220的二进制算术译码侧。也就是说,对于预定的非二进制值语法元素集合,每个二进制体类型(例如,二进制体0)在下一个二进制体类型(例如,二进制体1)之前被译码。可以在常规模式或者旁路模式下执行译码。在旁路模式下,旁路编码引擎1260使用固定概率模型来执行算术译码,例如,使用Golomb-Rice或指数Golomb译码。旁路模式通常用于更可预测的语法元素。

常规模式下的译码涉及执行CABAC。常规模式CABAC用于对二进制体值进行译码,其中二进制体的值的概率是在给定先前被译码的二进制体的值的情况下可预测的。关于二进制体是LPS的概率是由上下文建模器1220确定的。上下文建模器1220输出针对上下文的二进制体值和概率状态(例如,概率状态σ,包括LPS值和关于LPS发生的概率)。上下文模型可以是针对一系列二进制体的初始上下文,或者可以是基于先前被译码二进制体的被译码值来确定的。上下文的标识可以是基于变量ctxInc的值(上下文增量,诸如,ctxInc的值,其表示要应用于先前上下文的增量)来表示和/或来确定的。如上所述,上下文建模器1220可以基于所接收的二进制体是MPS还是LPS来更新状态。在由上下文建模器1220确定上下文和概率状态σ之后,常规编码引擎1240对二进制体值执行BAC。

图13是示例算术解码单元302的框图,该单元可以根据本公开内容的技术被配置为执行CABAC。图13的熵解码单元302以与图12中描述的熵编码单元214的方式相反的方式执行CABAC。来自比特流2180的被译码比特被输入给熵解码单元302。基于是使用常规模式还是使用旁路模式对被译码比特进行熵编码,将被译码比特馈送给上下文建模器2200或旁路解码引擎2220。如果被译码比特是在旁路模式下译码的,则旁路解码引擎452可以例如使用Golomb-Rice或指数Golomb解码,以取回二进制值语法元素、或非二进制语法元素的二进制体。

如果被译码比特是在常规模式下译码的,则上下文建模器2200可以确定被译码比特的概率模型,并且常规解码引擎2240可以对被译码比特进行解码以产生非二进制值语法元素(或者语法元素本身,如果其是二进制值的话)的二进制体。在上下文建模器2200确定上下文和概率状态σ之后,常规解码引擎2240对二进制体值执行BAC。换句话说,常规解码引擎2240可以确定上下文的概率状态,并且基于先前被译码二进制体和当前范围来解码二进制体值。在解码二进制体之后,上下文建模器2200可以基于窗口大小和被解码二进制体的值来更新上下文的概率状态。

图14是示出根据本公开内容的一个或多个方面的对点云的点进行预测的示例技术的流程图。图14的技术可以由诸如图2的G-PCC编码器200的G-PCC译码器执行。然而,其它设备也可以执行图14的技术,诸如图3的G-PCC解码器300。

G-PCC编码器200可以获得点云的参考块的平面信息(1402)。例如,G-PCC编码器200的算术编码单元214可以确定参考块是否是在特定方向上使用平面模式来编码的(例如,PlanarModeRef[axisIdx],其可以指示参考块/节点是否在axisIdx方向上是平面的)。

G-PCC编码器200可以基于参考块的平面信息来确定上下文(1404)。例如,算术译码单元214可以基于参考块的平面信息来确定上下文索引(ctxIdx)。作为一个示例,算术译码单元214可以将ctxIdx确定为(2*axisIdx+PlanarModeRef[axisIdx])。

G-PCC编码器200可以基于上下文来对语法元素进行上下文-自适应译码,该语法元素指示当前节点是否是使用平面模式来译码的(1406)。例如,算术编码单元214可以基于ctxIdx对针对当前节点的语法元素is_planar_flag执行上下文自适应二进制算术译码(CABAC)。如上所述,语法元素is_planar_flag[axisIdx]等于1可以指示当前节点的孩子节点的位置形成垂直于第axisIdx轴的单个平面;is_planar_flag[axisIdx]等于0可以指示当前节点的孩子节点的位置占用垂直于第axisIdx轴的两个平面。

G-PCC编码器200可以基于当前节点是使用平面模式来译码的,来使用平面模式对当前节点进行译码(1408)。例如,G-PCC编码器200可以将当前节点的孩子节点译码为形成单个平面。

在一些示例中,当当前节点是使用平面模式来译码的时,算术译码单元214可以基于参考平面来确定第二上下文;并且基于第二上下文来对指示针对当前节点的平面的语法元素进行上下文-自适应译码。指示针对当前节点的平面的语法元素可以是语法元素plane_position。在一些示例中,为了基于参考平面确定第二上下文,算术译码单元214可以根据下式确定上下文索引:ctxIdx=(12×axisIdx+4×adjPlaneCtxInc+2×distCtxInc+prevPlane+3)+(RefPlane[axisIdx]+1)×N,其中,ctxIdx是上下文索引,axisIdx是轴索引,adjPlaneCtxInc是被调整平面上下文增量,distCtxInc是距离上下文增量,prevPlane是先前平面,并且RefPlane[axisIdx]是参考平面。

在一些示例中,算术译码单元214可以基于参考平面来确定针对当前节点的角度上下文;并基于角度上下文来确定针对当前节点的平面。为了使用平面模式对当前节点进行译码,G-PCC编码器200可以基于平面对当前节点进行译码。

在一些示例中,算术译码单元214可以基于参考平面来确定针对当前节点的方位角上下文;并基于方位角上下文来确定针对当前节点的平面。为了使用平面模式对当前节点进行译码,G-PCC编码器200可以基于平面对当前节点进行译码。在一些示例中,为了确定方位角上下文,算术译码单元214可以根据下式确定方位角上下文:contextAzimuthal=contextAnglePhi+8x(RefPlane[axisIdx]+1),其中,contextAzimuthal是方位角上下文,contextAnglePhi是用于导出方位角上下文的中间值,并且RefPlane[axisIdx]是参考平面。可以基于contextAnglePhi导出多个方位角上下文,包括contextAzimuthalS和contextAzimuthalT。

在一些示例中,当前节点可以是选择性地使用平面复制模式(PCM)来译码的。例如,G-PCC编码器200可以确定是否从参考节点复制针对当前节点的平面信息。G-PCC编码器200可以用信号通知当前节点是否是使用PCM来译码的。例如,算术译码单元214可以译码语法元素,诸如二进制标志,其指示当前节点是否是使用平面复制模式来译码的(例如,PCM_flag)。在当前节点是使用平面复制模式来译码的情况下,G-PCC解码器300可以从参考节点复制针对当前节点的平面信息。例如,G-PCC解码器300可以利用参考节点的平面位置作为当前节点的平面位置。同样,在当前节点不是使用平面复制模式来译码的情况下,G-PCC编码器200可以编码(以及G-PCC解码器300可以解码)来自比特流的针对当前节点的平面信息。这样,PCM可以提高译码效率。

以下带编号的条款可以示出本公开内容的一个或多个方面:

条款1A.一种对点云数据进行译码的方法,该方法包括:获得所述点云数据的参考块的平面信息;以及基于所获得的平面信息,对所述点云数据的当前块进行译码

条款2A.根据条款1A的方法,其中,对所述点云数据的所述当前块进行译码包括:针对当前块的当前方向,至少部分地基于所述参考块是否是在所述当前方向上使用平面模式来译码的来确定平面速率。

条款3A.根据条款1A的方法,其中,对所述点云数据的所述当前块进行译码包括:基于所述参考块是否是平面的,确定所述当前块是否是有平面资格的。

条款4A.根据条款1A的方法,还包括:在被译码比特流中对语法元素进行译码,所述语法元素具有指示所述当前块和所述参考块是否在所有方向上共享相同平面模式的值。

条款5A.根据条款1A的方法,还包括:在所述被译码比特流中对语法元素进行译码,所述语法元素具有指示所述当前块和所述参考块是否共享相同平面位置索引的值。

条款5A.根据条款1A的方法,其中,对所述点云数据的所述当前块进行译码包括:基于所述参考块是否是平面的,确定用于对所述当前块的平面标志进行上下文-自适应译码的上下文。

条款6A.根据条款1A的方法,其中,对所述点云数据的所述当前块进行译码包括:基于所述参考块的平面位置的平面模式来确定针对所述当前块的角度上下文。

条款7A.一种用于处理点云的设备,所述设备包括一个或多个用于执行条款1A-6A中任一条款的方法的单元。

条款8A.根据条款7A的设备,其中,所述一个或多个单元包括在电路中实现的一个或多个处理器。

条款9A.根据条款7A或8A中任一条款的设备,还包括:存储器,用于存储表示所述点云的所述数据。

条款10A.根据条款7A-9A中任一条款的设备,其中,所述设备包括解码器。

条款11A.根据条款7A-10A中任一条款的设备,其中,所述设备包括编码器。

条款12A.根据条款7A-11A中任一条款的设备,还包括用于生成所述点云的设备。

条款13A.根据条款7A-12A中任一条款的设备,还包括显示屏,用于呈现基于所述点云的图像。

条款14A.一种具有存储在其上的指令的计算机可读存储介质,所述指令当被执行时使得一个或多个处理器执行根据条款1A-6A中任一条款所述的方法。

要认识到的是,取决于示例,本文中所描述的任何技术的某些动作或事件可以是以不同的顺序来执行的,可以被添加、被合并或完全省略(例如,并非所有描述的动作或事件对于实行所述技术都是必要的)。此外,在某些示例中,动作或事件可以被并发地执行(例如,通过多线程处理、中断处理或多个处理器)而不是被顺序地执行。

在一个或多个示例中,所描述的功能可以是用硬件、软件、固件或其任何组合实现。如果用软件实现,则所述功能可以作为一个或多个指令或代码存储在计算机可读介质上或者通过计算机可读介质进行发送并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质(其对应于诸如数据存储介质之类的有形介质)或者通信介质,所述通信介质包括例如根据通信协议来促进计算机程序从一个地方传送到另一地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质、或者(2)诸如信号或载波之类的通信介质。数据存储介质可以是可以由一个或多个计算机或者一个或多个处理器访问以取得用于实现在本公开内容中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。

通过示例而非限制的方式,这样的计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、闪存、或者能够用于以指令或数据结构形式存储期望的程序代码并且能够由计算机访问的任何其它介质。而且,任何连接被适当地称为计算机可读介质。例如,如果指令是使用同轴电缆、光纤光缆、双绞线、数字用户线(DSL)或者无线技术(例如,红外线、无线电和微波)从网站、服务器或其它远程源传送的,则同轴电缆、光纤光缆、双绞线、DSL或者无线技术(诸如,红外线、无线电和微波)被包括在介质的定义中。然而,应当理解的是,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它暂时性介质,而是替代地针对非暂时性的有形存储介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘则利用激光来光学地复制数据。上述的组合应当也被包括在计算机可读介质的范围内。

指令可以由一个或多个处理器(诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或其它等效的集成或分立逻辑电路)来执行。因此,如本文中所使用的术语“处理器”和“处理电路”可以指代前述结构中的任何结构或者适于实现本文中所描述的技术的任何其它结构。另外,在一些方面中,在本文中描述的功能可以是在被配置用于编码和解码的专用硬件和/或软件模块内提供的,或者被并入组合的编解码器中。此外,所述技术可以是完全地在一个或多个电路或逻辑元件中实现的。

本公开内容的技术可以是在各种各样的设备或装置(包括无线手机、集成电路(IC)或一组IC(例如,芯片组))中实现的。在本公开内容中描述各种组件、模块或单元以强调被配置为执行所公开的技术的设备的功能性方面,但是不一定需要通过不同的硬件单元来实现。确切而言,如上文所描述的,各种单元可以被组合在编解码器硬件单元中,或者由可互操作的硬件单元的集合(包括如在上文描述的一个或多个处理器)结合适当的软件和/或固件来提供。

已经描述各个示例。这些和其它示例在以下权利要求的范围内。

相关技术
  • 几何点云压缩中的平面和方位角模式
  • 高性能视频编码的帧间预测快速模式选择方法
技术分类

06120116480832