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

本申请要求于2021年6月17日提交的美国专利申请17/350,603、于2020年6月22日提交的美国临时专利申请63/042,432和于2020年6月30日提交的美国临时专利申请63/046,512的优先权,这些申请的全部内容通过引用并入本文中。

技术领域

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

背景技术

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

发明内容

总的来说,本公开描述了可以简化三维图形(3DG)组在运动图像专家组(MPEG)内开发的几何点云压缩(GPCC)标准中的平面模式和方位角模式的技术。更具体地,用于确定用于指示平面位置和点偏移的语法元素的算术译码的上下文的现有过程是复杂的。这种复杂性可能增加硬件实施成本,并且可能减慢编码和解码点云数据的过程。本公开的技术可以解决这个技术问题。如本文所描述,数量减少的上下文可用于平面位置语法元素和点偏移语法元素的算术译码。这可以降低硬件实施成本和/或加速编码和解码点云数据的过程。

在一个示例中,本公开描述了一种用于编码点云数据的设备,该设备包括:存储器,用于存储所述点云数据;以及耦合到所述存储器并且在电路中实施的一个或多个处理器,所述一个或多个处理器被配置为:确定节点的被占用的子节点形成垂直于坐标系的第一轴的单个平面,其中,所述第一轴是水平轴,并且所述被占用的子节点包含由所述点云数据表示的点;确定所述节点的水平平面位置,其中,所述水平平面位置指示垂直于所述坐标系的所述第一轴的所述单个平面的位置;从由8个上下文组成的多个上下文中确定所述节点的所述水平平面位置的上下文;以及使用所确定的上下文对指示所述水平平面位置的语法元素执行算术编码。

在另一示例中,本公开描述了一种用于解码点云数据的设备,该设备包括:存储器,用于存储所述点云数据;以及耦合到所述存储器并且在电路中实施的一个或多个处理器,所述一个或多个处理器被配置为:确定节点的被占用的子节点形成垂直于坐标系的第一轴的单个平面,其中,所述第一轴是水平轴,并且所述被占用的子节点包含由所述点云数据表示的点;从由8个上下文组成的多个上下文中确定所述节点的水平平面位置的上下文,其中,所述水平平面位置指示垂直于所述坐标系的所述第一轴的所述单个平面的位置;以及使用所确定的上下文对指示所述水平平面位置的语法元素执行算术解码。

在另一示例中,本公开描述了一种用于编码点云数据的方法,该方法包括:确定节点的被占用的子节点形成垂直于坐标系的第一轴的单个平面,其中,所述第一轴是水平轴,并且所述被占用的子节点包含由所述点云数据表示的点;确定所述节点的水平平面位置,其中,所述水平平面位置指示垂直于所述坐标系的所述第一轴的所述单个平面的位置;从由8个上下文组成的多个上下文中确定所述节点的所述水平平面位置的上下文;以及使用所确定的上下文对指示所述水平平面位置的语法元素执行算术编码。

在另一示例中,本公开描述了一种用于解码点云数据的方法,该方法包括:确定节点的被占用的子节点形成垂直于坐标系的第一轴的单个平面,其中,所述第一轴是水平轴,并且所述被占用的子节点包含由所述点云数据表示的点;从由8个上下文组成的多个上下文中确定所述节点的水平平面位置的上下文,其中,所述水平平面位置指示垂直于所述坐标系的所述第一轴的所述单个平面的位置;以及使用所确定的上下文对指示所述水平平面位置的语法元素执行算术解码。

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

附图说明

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

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

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

图4是示出垂直方向上的示例平面占用的概念图。

图5是示出第一水平方向上的示例平面占用的概念图。

图6是示出第二水平方向上的示例平面占用的概念图。

图7是描绘在方位角平面译码模式的上下文推导中使用的角度的示例定义的概念图,其中示出了planarX。

图8是描绘在方位角模式的上下文推导中使用的角度的示例定义的概念图,其中示出了y推断的直接译码模式(IDCM)。

图9是根据本公开的一种或多种技术的用于编码点云数据的示例方法的流程图。

图10是根据本公开的一种或多种技术的用于解码点云数据的示例方法的流程图。

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

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

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

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

具体实施方式

点云是三维(3D)空间中的点的集合。点云数据可以包括表示点云的全部或一些数据。基于几何的点云压缩(G-PCC)是一种用于减少编码或存储点云所需数据量的方法。作为对点云进行编码的一部分,G-PCC编码器可以生成八叉树。八叉树的每个节点对应于一个长方体空间。为了便于解释,在一些情况下,本公开可以互换地指代节点和对应于该节点的长方体空间。八叉树的节点可以具有零个或八个子节点。在其他示例中,可以根据其他树结构将节点划分为子节点。父节点的子节点对应于与父节点对应的长方体内的相等大小的长方体。可以相对于与包含这些点的长方体对应的节点来信令通知点云的各个点的位置。如果节点不包含点云的任何点,则称该节点未被占用。如果该节点未被占用,则可能没有必要信令通知关于该节点的附加数据。相反,如果节点包含点云的一个或多个点,则称该节点被占用。

平面模式是一种可以改进八叉树中哪些节点被占用的编码或信令通知的技术。当节点的所有被占用的子节点都与平面相邻并且在该平面的与增加与该平面正交的维度的坐标值相关联的一侧时,可以使用平面模式。换句话说,节点的被占用的子节点形成垂直于坐标系的轴的单个平面。例如,当节点的所有被占用的子节点都在穿过该节点的中心点的水平平面之上或之下时,对于该节点可以使用平面模式,或者当节点的所有被占用的子节点都在穿过该节点的中心点的垂直平面的近侧或远侧时,对于该节点可以使用平面模式。

G-PCC编码器可以信令通知x、y和z轴中的每个的平面位置语法元素。轴(例如,x、y或z轴)的平面位置语法元素指示与该轴正交的平面是在第一位置还是第二位置。如果该平面处于第一位置,则该平面对应于节点的边界。如果该平面处于第二个位置,则该平面穿过该节点的3D中心。因此,对于x轴或y轴,G-PCC编码器或G-PCC解码器可以译码节点中的水平平面位置(即,垂直于水平轴的平面的位置)。水平平面位置语法元素指示垂直于水平轴(诸如x轴或y轴)的平面的位置。

G-PCC译码器(例如,G-PCC编码器或G-PCC解码器)可以使用算术译码,诸如上下文自适应二进制算术译码(CABAC),来译码平面位置语法元素。当G-PCC译码器使用算术译码来译码平面位置语法元素时,G-PCC译码器可以确定用于平面位置语法元素的算术译码的上下文。上下文指定算术译码中使用的符号的概率。如在本公开的其他地方更详细描述的,用于确定上下文的传统技术是复杂的。这种复杂性可能减慢译码点云数据的过程。此外,这种复杂性可能增加实施G-PCC编码器和G-PCC解码器的硬件的成本。

点云的各个点的位置可以相对于包含这些点的节点进行编码。在一些示例中,节点中点的位置可以使用推断的直接译码模式(IDCM)来编码。当使用IDCM信令通知点时,G-PCC编码器编码点偏移,该点偏移指示该点在特定轴(例如,x、y或z轴)上相对于节点的原点的偏移。点偏移也可以被称为点位置偏移。本公开可以将指示点在水平轴(例如,x轴或y轴)上的偏移的点偏移称为方位角点偏移。本公开可以将指示点在垂直轴(例如,z轴)上的偏移的点偏移称为角点偏移。G-PCC译码器可以确定上下文,并且在指示点偏移的点偏移语法元素的一个或多个比特的算术译码(例如,CABAC译码)中使用该上下文。

本公开描述了可以降低确定水平平面位置语法元素和方位角点偏移语法元素的上下文的复杂性的技术。例如,在一个示例中,G-PCC编码器可以确定节点的被占用的子节点形成垂直于坐标系的第一轴的单个平面,其中,第一轴是水平轴(例如,x或y轴)。在该示例中,G-PCC编码器可以确定节点的水平平面位置。水平平面位置指示垂直于坐标系的第一轴的单个平面的位置。G-PCC编码器可以从由8个上下文组成的多个上下文中确定节点的水平平面位置的上下文。G-PCC编码器可以使用所确定的上下文对水平平面位置或方位角点偏移执行算术编码。类似地,G-PCC解码器可以确定节点的被占用的子节点形成垂直于坐标系的第一轴的单个平面,其中,第一轴是水平轴。G-PCC解码器可以从由8个上下文组成的多个上下文中确定节点的水平平面位置的上下文,其中,水平平面位置指示垂直于坐标系的第一轴的单个平面的位置。G-PCC解码器可以使用所确定的上下文对指示水平平面位置或点偏移的语法元素执行算术解码。

与先前使用的大量上下文相反,从由8个上下文组成的多个上下文中确定上下文可以降低确定上下文索引的复杂性。降低确定上下文索引的复杂性可以加速点云数据的编码和解码。降低确定上下文索引的复杂性还可以降低用于编码和解码点云数据的硬件的实施成本。

尽管本公开描述了激光、激光束、激光候选以及涉及激光的其他术语,但是这些术语不一定限于使用物理激光的情况。相反,这些术语可以关于物理激光或其他测距技术来使用。此外,这些术语可以关于用于译码点云的目的的概念束来使用。换句话说,术语“激光″、“激光束”等可能不是指真实的激光和激光束,而是可以将激光和激光束的概念用于译码点云数据的目的。

图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可以被配置为应用本公开的与译码G-PCC中的平面和方位角模式的语法元素相关的技术。因此,源设备102表示编码设备的示例,而目的地设备116表示解码设备的示例。在其他示例中,源设备102和目的地设备116可以包括其他组件或布置。例如,源设备102可以从内部或外部源接收数据(例如,点云数据)。同样,目的地设备116可以与外部数据消费者接口,而不是在同一设备中包括数据消费者。

如图1中所示的系统100仅是一个示例。通常,其他数字编码和/或解码设备可以执行本公开的与译码G-PCC中的平面和方位角模式的语法元素相关的技术。源设备102和目的地设备116仅是这样的设备的示例,其中,源设备102生成用于传输到目的地设备116的经译码数据。本公开的“译码”设备是指对数据执行译码(编码和/或解码)的设备。因此,G-PCC编码器200和G-PCC解码器300表示译码设备的示例,具体地,分别是编码器和解码器。在一些示例中,源设备102和目的地设备116可以以基本上对称的方式操作,使得源设备102和目的地设备116中的每个包括编码和解码组件。因此,系统100可以支持源设备102和目的地设备116之间的单向或双向传输,例如,用于流式传输、回放、广播、电话、导航和其他应用。

通常,数据源104表示点云数据(即,原始的、未编码的点云数据)的源,并且可以向G-PCC编码器200提供点云数据的“帧”的连续系列,G-PCC编码器200对帧的点云数据进行编码。在一些示例中,数据源104生成点云数据。源设备102的数据源104可以包括点云捕获设备(诸如各种相机或传感器中的任何一种,例如,3D扫描仪或光探测和测距(LIDAR)设备、一个或多个视频相机、包含先前捕获的点云数据的存档)和/或用于从数据内容提供商接收点云数据的数据馈送接口。因此,在一些示例中,数据源104可以基于来自LIDAR装置的信号生成点云数据。替代地或附加地,点云数据可以由计算机从扫描仪、相机、传感器或其他数据生成。例如,数据源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可以被配置为根据其他无线标准(诸如IEEE802.11规范、IEEE 802.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中的每个可以被包括在一个或多个编码器或解码器中,这两者中的任一个可以被集成为相应设备中的组合编码器/解码器(译码器)的一部分。包括G-PCC编码器200和/或G-PCC解码器300的设备可以包括一个或多个集成电路、微处理器和/或其他类型的设备。

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

本公开通常可以涉及“信令通知”某些信息,诸如语法元素。术语″信令通知”通常可以涉及语法元素的值和/或用于对经编码的数据进行解码的其他数据的通信。也就是说,G-PCC编码器200可以信令通知比特流中的语法元素的值。通常,信令指的是在比特流中生成值。如上所述,源设备102可以基本上实时地或非实时地向目的地设备116传送比特流,诸如可以在将语法元素存储到存储设备112以供目的地设备116随后检索时发生。

ISO/IEC MPEG(JTC 1/SC 29/WG 11)正在研究具有大大超过当前方法的压缩能力的压缩能力的点云译码技术标准化的潜在需求,并且将致力于创建标准。该团体正在被称为三维图形团队(3DG)的合作中进行这项探索活动,以评估该领域专家提出的压缩技术设计。

点云压缩活动分为两种不同的方式。第一种方法是“视频点云压缩”(V-PCC),其将3D对象分段,并且将分段投影到多个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 w19328,teleconference,April 2020(下文称为“w19238”)中获得,并且译码器的描述可在G-PCC Codec Description v6,ISO/IEC JTC1/SC29/WG11w19091,Brussels,Belgium,January 2020(下文称为“w19091”)中获得。

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

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

图2提供了G-PCC编码器200的概述。图3提供了G-PCC解码器300的概述。所示模块是合乎逻辑的,并且不一定与G-PCC译码器的参考实施方式中实施的代码(即由ISO/IECMPEG(JTC 1/SC 29/WG 11)研究的TMC13测试模型软件)一一对应。

在G-PCC编码器200和G-PCC解码器300二者中,点云位置首先被译码。属性译码取决于经解码的几何结构。在图2和图3中,灰色阴影模块是通常用于类别1数据的选项。对角线交叉影线模块是通常用于类别3数据的选项。所有其他模块在类别1与类别3之间是通用的。

对于类别3数据,经压缩的几何结构通常被表示为从根一直向下到各个体素的叶级的八叉树。对于类别1数据,经压缩的几何结构通常由修剪的八叉树(即,从根向下到大于体素的块的叶级的八叉树)加上近似修剪的八叉树的每个叶内的表面的模型来表示。以这种方式,类别1和类别3数据共享八叉树译码机制,而类别1数据可以另外用表面模型近似每个叶内的体素。所使用的表面模型是每块包括1至10个三角形的三角剖分,产生三角形汤(triangle soup)。因此,类别1几何译码器被称为三角形汤(Trisoup)几何译码器,而类别3几何译码器被称为八叉树几何译码器。

在八叉树的每个节点处,信令通知(当未推断时)其一个或多个子节点(最多八个节点)de占用。指定多个邻域,其包括(a)与当前八叉树节点共享面的节点,(b)与当前八叉树节点共享面、边或顶点的节点等。在每个邻域内,节点和/或其子节点的占用可以被用于预测当前节点或其子节点的占用。对于稀疏填充在八叉树的某些节点中的点,译码器还支持推断的直接译码模式(IDCM),其中点的3D位置被直接编码。标志可以被信令通知,以指示直接模式被信令通知。在最低级,还可以对与八叉树节点/叶节点相关联的点的数量进行译码。

一旦几何结构被译码,对应于几何点的属性就被译码。当有多个属性点对应于一个经重构/解码的几何点时,可以推导代表经重构的点的属性值。

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

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

在G-PCC编码器200处,可以量化作为用于属性的译码方法的输出而获得的残差。可以使用上下文自适应二进制算术译码(CABAC)来对量化残差进行译码。为了对语法元素应用CABAC编码,G-PCC编码器200可以将语法元素的值二进制化,以形成一系列的一个或多个比特,这些比特被称为“二进制数(bin)”。此外,G-PCC编码器200可以标识译码上下文(即上下文)。译码上下文可以标识具有特定值的二进制数的概率。例如,译码上下文可以指示译码0值二进制数的0.7概率,并且译码1值二进制数的0.3概率。在标识译码上下文之后,G-PCC编码器200可以将区间划分为下部子区间和上部子区间。子区间中的一个可以与值0相关联,并且另一子区间可以与值1相关联。子区间的宽度可以与由所标识的译码上下文为相关联的值指示的概率成比例。如果语法元素的二进制数具有与下部子区间相关联的值,则经编码值可以等于下部子区间的下边界。如果语法元素的同一二进制数具有与上部子区间相关联的值,则经编码值可以等于上部子区间的下边界。为了编码语法元素的下一个二进制数,G-PCC编码器200可以重复这些步骤,其中区间是与经编码比特的值相关联的子区间。当G-PCC编码器200对下一个二进制数重复这些步骤时,G-PCC编码器200可以使用基于由所标识的译码上下文指示的概率和经编码的二进制数的实际值而修改的概率。

当G-PCC解码器300对语法元素的值执行CABAC解码时,G-PCC解码器300可以标识译码上下文。然后,G-PCC解码器300可以将区间划分为下部子区间和上部子区间。子区间中的一个可以与值0相关联,并且另一子区间可以与值1相关联。子区间的宽度可以与由所标识的译码上下文为相关联的值指示的概率成比例。如果经编码值在下部子区间内,则G-PCC解码器300可以解码具有与下部子区间相关联的值的二进制数。如果经编码值在上部子区间内,G-PCC解码器300可以解码具有与上部子区间相关联的值的二进制数。为了解码语法元素的下一个二进制数,G-PCC解码器300可以重复这些步骤,其中区间是包含经编码值的子区间。当G-PCC解码器300对下一个二进制数数重复这些步骤时,G-PCC解码器300可以使用基于由所标识的译码上下文指示的概率和经解码的二进制数而修改的概率。然后,G-PCC解码器300可以对二进制数进行解二进制化,以恢复语法元素的值。

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

如图2的示例所示,G-PCC编码器200可以接收一组位置和一组属性。位置可以包括点云中的点的坐标。属性可以包括关于点云中的点的信息,诸如与点云中的点相关联的颜色。

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

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

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

此外,RAHT单元218可以对重构点的属性应用RAHT译码。替代地或附加地,LOD生成单元220和提升单元222可以分别对重构点的属性应用LOD处理和提升。RAHT单元218和提升单元222可以基于属性生成系数。系数量化单元224可以量化由RAHT单元218或提升单元222生成的系数。算术编码单元226可以对表示经量化系数的语法元素应用算术译码。G-PCC编码器200可以在属性比特流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可以执行重构以确定点云中的点的坐标。逆变换坐标单元320可以对重构坐标应用逆变换,以将点云中的点的重构坐标(位置)从变换域转换回初始域。

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

取决于属性值如何被编码,RAHT单元314可以执行RAHT译码,以基于逆量化的属性值来确定点云中的点的颜色值。替代地,LOD生成单元316和逆提升单元318可以使用基于细节级别的技术来确定点云中的点的颜色值。

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

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

在Sébastien Lasserre、David Flynn,“[GPCC]Planar mode in octree-basedgeometry coding″(ISO/IEC JTC1/SC29/WG11 MPEG/m48906,Gothenburg,Sweden,2019年7月)中提出的平面译码模式在瑞士日内瓦的第128届MPEG会议上被采用(参见SébastienLasserre、Jonathan Taquet,“[GPCC]CE13.22report on planar coding mode″(ISO/IECJTC1/SC29/WG11 MPEG/m50008,瑞士,日内瓦,2019年10月))。在Sébastien Lasserre、Jonathan Taquet,“[GPCC][CE 13.22related]An improvement of the planar codingmode″(ISO/IEC JTC1/SC29/WG11 MPEG/m50642,日内瓦,CH,2019年10月)中提出的角度译码模式在比利时布鲁塞尔的第129届MPEG会议上被采用(参见Sébastien Lasserre、Jonathan Taquet的“[GPCC]CE 13.22report on angular mode”(ISO/IEC JTC1/SC29/WG11 MPEG/m51594,布鲁塞尔,比利时,2020年1月))。

图4是示出垂直方向上的示例平面占用的概念图。在图4的示例中,节点400被分割成八个子节点402A-402H(统称为“子节点402”)。子节点402可以被占用或未被占用。在图4的示例中,被占用的子节点有阴影。当一个或多个子节点402A至402D被占用并且子节点402E至402H没有被占用时,G-PCC编码器200可以用0的值来编码平面位置语法元素(例如,plane_position),以指示节点400的所有被占用的子节点在节点400的最小z坐标的平面的正侧(即,增加z坐标的一侧)是相邻的。当一个或多个子节点402E-402H被占用并且子节点402A至-402D没有被占用时,G-PCC编码器200可以用1的值来编码平面位置语法元素,以指示所有被占用的子节点在节点400的中点z坐标的平面的正侧是相邻的。以这种方式,平面位置语法元素可以指示节点400的垂直平面位置(即,垂直于垂直轴的平面的位置)。

角度译码模式可以通过使用典型LIDAR传感器的传感器特性来提高平面模式的译码效率。角度译码模式可选地与平面模式一起使用,并且可以通过采用典型LIDAR传感器中感测激光束的位置和角度的知识来改进垂直(z)平面位置语法元素的译码。此外,,角度译码模式可以可选地被用来改进IDCM中的垂直z位置比特的译码。在单独的投稿,Geert Vander Auwera、Bappaditya Ray、Louis Kerofsky、Adarsh K.Ramasubramonian、MartaKarczewicz,″[GPCC][New Proposal]Angular mode simplifications and HLSrefinements”(ISO/IEC JTC1/SC29/WG11 MPEG/m53693,电信会议(之前为Alpbach会议),2020年4月)中,角度译码模式的上下文推导得到简化,并且传感器数据参数的HLS译码变得更高效。以下章节中的角度模式描述基于原始MPEG投稿文档Sébastien Lasserre、Jonathan Taquet,“[GPCC][CE 13.22related]An improvement of the planar codingmode”(ISO/IEC JTC1/SC29/WG11MPEG/m50642,Geneva,CH,2019年10月),以及SébastienLasserre、Jonathan Taquet,″[GPCC]CE 13.22report on angular mode”(ISO/IEC JTC1/SC29/WG11MPEG/m51594,Brussels,Belgium,2020年1月),以及GPCC DIS文本(G-PCC DIS,ISO/IEC JTC1/SC29/WG11 w19328,电信会议(之前为Alpbach会议),2020年4月)。

Sébastien Lasserre、Jonathan Taquet,″[GPCC][CE13.22 related]Theazimuthal coding mode”(ISO/IEC JTC1/SC29/WG11 MPEG/m51596,Brussels,Belgium,2020年1月)中首次提出的方位角译码模式在第130届MPEG电信会议上被采用。(参见Sébastien Lasserre、Jonathan Taquet,″[GPCC][CE13.22]Report on azimuthal codingmode”(ISO/IEC JT C1/SC29/WG11 MPEG/m52958,电信会议(之前为Alpbach会议),2020年4月)。方位角译码模式类似于角度模式,并且将角度模式扩展到平面模式的(x)和(y)平面位置语法元素的译码,并且改进了IDCM中的x或y位置比特的译码。因此,″角度模式”在下面的章节中也可以指方位角模式。

图5是示出水平方向上的示例平面占用的概念图。更具体地,图5示出了x平面位置的译码的平面占用。在图5的示例中,节点500被分割成八个子节点502A-502H(统称为″子节点502”)。子节点502可以被占用或未被占用。在图5的示例中,被占用的子节点有阴影。当一个或多个子节点502A、502B、502E和502F被占用并且子节点502C、502D、502G和502H都没有被占用时,G-PCC编码器200可以信令通知0的值的平面位置(planePosition)语法元素,以指示所有被占用的子节点在节点500的最小x坐标的平面的正侧(即,增加x坐标的一侧)是相邻的。因此,当平面位置具有0的值时,G-PCC编码器200可能不需要编码与子节点502C、502D、502G或502H相关联的另外语法元素。当一个或多个子节点502C、502D、502G和502H被占用并且子节点502A、502B、502E或502F都没有被占用时,G-PCC编码器200可以信令通知1的的平面位置(planePosition)语法元素,以指示所有被占用的子节点在节点500的中点x坐标的平面的正侧是相邻的。因此,当平面位置具有1的值时,G-PCC编码器200可能不需要编码与子节点502A、502B、502E或502F相关联的另外语法元素。以这种方式,平面位置语法元素可以指示节点500中的平面模式的水平平面位置。

图6是示出水平方向上的示例平面占用的概念图。更具体地,图6示出了y平面位置的译码的平面占用。在图6的示例中,节点600被分割成八个子节点602A-602H(统称为“子节点602”)。子节点602可以被占用或未被占用。在图6的示例中,被占用的子节点有阴影。当一个或多个子节点602A、602D、602E和602H被占用并且子节点602B、602C、602F和602G都没有被占用时,G-PCC编码器200可以信令通知0的值的平面位置(planePosition)语法元素,以指示所有被占用的子节点在节点600的最小x坐标的平面的正侧(即,增加y坐标的一侧)是相邻的。因此,当平面位置具有0的值时,G-PCC编码器200可能不需要编码与子节点602B、602C、602F或602G相关联的另外语法元素。当一个或多个子节点602B、602C、602F和602G被占用并且子节点602A、602D、602E或602H都没有被占用时,G-PCC编码器200可以信令通知1的值的平面位置(planePosition)语法元素,以指示所有被占用的子节点在节点600的中点y坐标的平面的正侧是相邻的。因此,当平面位置具有1的值时,G-PCC编码器200可能不需要编码与子节点602A、602D、602E或602H相关联的另外语法元素。以这种方式,平面位置语法元素可以指示节点600中的平面模式的水平平面位置。

G-PCC编码器200可以编码与平面模式相关的语法元素。这些语法元素可以包括平面模式标志(例如,is_planar_flag语法元素),其指示节点在垂直于特定轴(例如,axisIdx-th轴)的方向上是否是平面的。与平面模式相关的语法元素还可以包括指示平面模式的平面的位置的平面位置语法元素(例如,plane_position)。以下讨论描述了与平面模式相关的语法元素的示例语义,以及相关联的变量的描述。

平面译码模式

is_planar_flag[childIdx][axisIdx]等于1指示当前子节点在垂直于axisIdx-th轴的方向上是平面的。is_planar_flag[child][axisIdx]等于0指示当前子节点在垂直于axisIdx-th轴的方向上不是平面的。当不存在时,is_planar_flag[childIdx][axisIdx]的值被推断为0。

变量two_planar_flag指示节点在至少两个方向上是否是平面的,并且确定如下:

plane_position[childIdx][axisIdx]等于0指示平面模式的平面的位置是相对于增加的第i个坐标的较低位置。plane_position[childIdx][axisIdx]等于1指示平面模式的平面的位置是相对于增加的axisIdx-th坐标的较高位置。

只有特定类型的节点才有资格使用平面译码模式进行编码。通常,如果节点的被占用子节点的估计密度低于特定阈值并且使用平面模式的概率高于另一阈值,则该节点有资格使用平面译码模式进行编码。在下文中,变量eligible_planar_flag指示节点是否有资格使用平面译码模式进行编码。

对于范围0..2中的轴索引axisIdx,当前节点的eligible_planar_flag[axisIdx]的值确定如下:

变量GeomScalingDepth指示确定ScalingNodeSizeLog2的值(缩放位置分量的大小)的几何八叉树深度。因此,GeomScalingDepth–1描述了该深度级别,因为如果量化发生在子节点中,则在当前节点处不允许平面模式。变量localDensity是对节点中被占用的子节点的平均数量的估计。当开始几何解码过程时,localDensity可以被初始化为值localDensity=1024*4。

对于范围0..2中的axisIdx,变量planeRate[axisIdx]是对节点在垂直于axisIdx-th轴的方向上是平面的概率的估计。当开始几何解码过程时,planeRate[axisIdx]被初始化为值planeRate[axisIdx]=128*8。

在对当前节点的occupancy_map或occupancy_byte进行解码之后,localDensity和planeRate[axisIdx]的值可以通过以下方式进行更新:

其中,如果当前节点在垂直于axisIdx-th轴的方向上是平面的,则isNodePlanar[axisIdx]等于1,否则等于0。

probable_order[]的三个值可以从如下面表1中定义的三条目数组planeRate[]的排序中推断。

表1—从planeRate[]确定probable_order[]的值

数组PlanarPrevPos、PlanarPlaneOffset、IsPlanar记录关于先前解码的几何树节点的信息,以用于确定语法元素is_planar_flag和plane_position的ctxIdx。当geometry_planar_mode_flag等于0或planar_buffer_disabled_flag等于1时,解码过程不使用这些数组。

在该过程中,变量axisIdx被用于表示三个译码的轴中的一个,变量axisPos表示节点沿axisIdx-th轴的位置。axisPos的值在范围0…0x3fff内。

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

具有值PlanarPrevPos[axisIdx][axisPos][k]的数组PlanarPrevPos标识具有等于axisPos的axisIdx-th位置分量的最近解码的节点的第k分量。

具有值PlanarPlaneOffset[axisIdx][axisPos]的数组PlanarPlaneOffset指示具有等于axisPos的axisIdx-th位置分量的最近解码的节点的plane_position的值。

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

在用参数childIdx和axisIdx解码每个geometry_planar_mode_data语法结构之后,数组PlanarPrevPos、PlanarPlane和IsPlanar更新如下:

-数组childPos被设置为对应子节点的空间位置,如下所示:

childPos[0]=2×sN+(childIdx&4==1)

childPos[1]=2×tN+(childIdx&2==1)

childPos[2]=2×vN+(childIdx&1==1)

-表示沿axisIdx-th轴的位置的变量axisPos推导如下:

axisPos=childPos[axisIdx]&0x3fff

-对应于子节点的数组条目更新如下:

G-PCC编码器200和G-PCC解码器300可以对与平面译码模式相关的某些语法元素(诸如平面模式标志(例如,is_planar_flag)和平面位置语法元素(例如,plane_position))执行算术编码(例如,CABAC编码)和算术解码(例如,CABAC解码)。作为执行算术译码的一部分,G-PCC编码器200或G-PCC解码器300可以确定上下文。上下文指示一对符号的概率。角度平面译码模式和方位角平面译码模式可以在比特流中被启用或被禁用。当角度平面译码模式和方位角平面译码模式被启用或被禁用时,可以使用平面模式。然而,根据角度平面译码模式和方位角平面译码模式被启用还是被禁用,用于确定用于算术译码平面模式标志和平面位置语法元素的上下文的过程可能不同。

下文描述了G-PCC编码器200和G-PCC解码器300可以用于确定公共变量的示例过程,所述公共变量用于在角度平面译码模式和方位角平面译码模式被禁用时确定平面模式标志和平面位置语法元素的上下文索引。

该过程的输入是:

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

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

-几何树级别中的当前节点的位置(sN,tN,vN)。

这个过程的输出是变量axisPos、axisOffset、dist、neighOccupied。

数组childPos被设置为对应子节点的空间位置如下:

childPos[0]=2×sN+(childIdx&4==1)

childPos[1]=2×tN+(childIdx&2==1)

childPos[2]=2×vN+(childIdx&1==1)

变量axisOffset标识平面相对于与垂直于axisIdx-th轴的对应子节点相交的当前节点的位置:

axisOffset=childPos[axisIdx]&1

变量axisPos指示子节点沿axisIdx-th轴的位置:

axisPos=childPos[axisIdx]&0x3fff

变量dist表示childPos与沿axisIdx-th轴具有相同的axisPos值的最近解码的子节点位置之间的曼哈顿距离。变量dist推导如下:

变量neighOccupied指示是否存在沿axisIdx-th轴与当前节点相邻并且在空间上与当前子节点相邻的被占用节点。变量neighOccupied可以推导如下:

neighPatternBitIdx=2×axisIdx+axisOffset^(axisIdx?0:1)

neighOccupied=(NeighbourPattern>>neighPatternBitIdx)&1

以下是用于确定当角度模式和方位角模式被禁用时平面模式标志(例如,is_planar_flag)的上下文索引的示例过程的描述。

该过程的输入是:

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

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

-几何树级别中的当前节点的位置(sN,tN,vN)。

该过程的输出是变量ctxIdx。

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

变量neighOccupied和dist是根据以上所描述的公共变量确定过程来确定的。

上下文索引ctxIdx推导如下:

ctxIdx=axisIdx+3×neighOccupied+(dist<=1?0:6)

以下是用于确定当角度平面译码模式和方位角平面译码模式被禁用时平面位置语法元素(例如,plane_position)的上下文索引的示例过程的描述。

该过程的输入是:

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

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

-几何树级别中的当前节点的位置(sN,tN,vN)。

该过程的输出是变量ctxIdx。

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

变量axisOffset、neighOccupied和dist是根据以上所描述的公共变量确定过程来确定的。

上下文索引ctxIdx推导如下:

当角度平面译码模式被启用时,G-PCC编码器200和G-PCC解码器300可以确定指示垂直轴的平面位置语法元素(例如,plane_position)的上下文的变量planePosIdxAngular。下文提供了G-PCC编码器200和G-PCC解码器300如何确定planePosIdxAngular的值的描述。

对plane_position[child][2]的算术译码的planePosIdxAngular的确定获得如下。

如果geometry_angular_mode_flag等于0,即,不使用角度译码模式,则planePosIdxAngular的值被设置为等于planePosIdx。

如果geometry_angular_mode_flag等于1,则planePosIdxAngular的值从contextAngular通过以下确定:

可以执行plane_position[child][2]的算术译码的contextAngular[child]的确定,如G-PCC DIS(ISO/IEC JTC1/SC29/WG11 w19328,电信会议(之前为Alpbach会议),2020年4月)的第8.2.5.3节中所描述的。

关于良好平面位置预测的概率的信息proba_planar[]被用于确定直接译码模式激活标志DirectModeFlagPresent。对于范围0..2中的轴索引,proba_planar[axisIdx]的值在范围1..127中,并且对于每个子节点推断如下

其中,p0[planePosIdx](分别为p0[planePosIdxAngular])是由CABAC在解码plane_position[child][axisIdx]之前提供的具有与上下文相关联的零的概率。这个概率p0[planePosIdx](分别为p0[planePosIdxAngular])被提供为范围0..0xffff中的16位无符号整数。

注意,proba_planar[axisIdx]不需要依赖于子节点,因为如果当前节点中只有一个被占用的子节点,则直接模式被激活。

G-PCC规范提供了与角度平面译码模式和方位角平面译码模式相关的一组语法元素。如本公开中其他地方简要描述的,当用角度模式(即,角度平面译码模式)对节点进行编码时,G-PCC编码器200使用具有垂直于垂直轴(例如,z轴)的平面的平面模式对节点进行编码。当用方位角模式(即,方位角平面译码模式)对节点进行编码时,G-PCC编码器200使用具有垂直于水平轴(例如,x轴或y轴)的平面的平面模式对节点进行编码。下文提供了与角度平面译码模式和方位角平面译码模式相关的语法元素的描述。更具体地,携带角度平面译码模式所需的LIDAR激光传感器信息以具有任何译码效率益处的语法元素用下表2中的<!>…标记指示。

表2.几何参数集语法。角度平面译码模式语法元素用<!>…标记指示。

下面展现了与角度平面译码模式相关的语法元素的语义,如在G-PCC DIS(ISO/IEC JTC1/SC29/WG11 w19328,电信会议(之前为Alpbach会议),2020年4月)中规定的在。

等于1的geometry_planar_mode_flag指示平面译码模式被激活。等于0的geometry_planar_mode_flag指示平面译码模式未被激活。

geom_planar_mode_th_idcm指定直接译码模式的激活阈值。geom_planar_mode_th_idcm是范围0至127的整数。当不存在时,geom_planar_mode_th_idcm被推断为127。

对于范围0..2中的i,geom_planar_mode_th[i]指定沿第i个最可能方向的平面译码模式的激活阈值的值,以使平面译码模式高效。geom_planar_mode_th[i]是范围0..127中的整数。

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

geom_angular_origin_xyz[k]指定角度译码模式的处理中使用的原点的(x,y,z)坐标的第k分量。不存在时,geom_angular_origin_x、geom_angular_origin_y和geom_angular_origin_z被推断为0。

数组geomAngularOrigin(具有值geomAngularOrigin[k],k=0..2)表示按译码的几何轴顺序排列的geom_angular_origin_xyz的值,如下所示:

geomAngularOrigin[XyzToStv[k]]=geom_angular_origin_xyz[k],for k=0..2

number_lasers指定用于角度译码模式的激光的数量。当不存在时,number_lasers被推断为0。

对于范围0..number_lasers_minus1中的i,laser_angle[i]和laser_angle_diff[i]指定第i个激光相对于由第一译码轴和第二译码轴定义的水平平面的仰角的正切值。当不存在时,laser_angle[i]被推断为0。

对于范围0..number_lasers_minus1中的i,laser_correction[i]和laser_correction_diff[i]指定第i个激光位置相对于geomAngularOrigin[2]的沿第二内部轴的校正。当不存在时,laser_correction[i]被推断为0。

对于范围0..number_lasers_minus1中的i,具有元素laserAngle[i]和LaserCorrection[i]的数组LaserAngle和LaserCorrection推导如下:

等于1的planar_buffer_disabled_flag指示使用缓冲器跟踪最近节点不在译码平面模式中的平面模式标志和平面位置的过程中被使用。等于0的planar_buffer_disabled_flag指示使用缓冲器跟踪最近节点被使用。当不存在时,planar_buffer_disabled_flag被推断为0。

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

表3.平面模式数据语法

等于1的is_planar_flag[childIdx][axisIdx]指示当前节点的子节点的位置形成垂直于axisIdx-th轴的单个平面。当存在时,等于0的is_planar_flag[axisIdx]指示当前节点的子节点的位置占用垂直于axisIdx-th轴的两个平面。

等于0的plane_position[childIdx][axisIdx]指示平面模式的平面的位置是相对于增加axisIdx-th坐标的较低位置。等于1的plane_position[axisIdx]指示平面模式的平面的位置是相对于增加axisIdx-th坐标的较高位置。当不存在时,plane_position[axisIdx]被推断为0。

表4.直接模式数据语法

在表4中,laser_residual_eq0_flag、laser_residual_sign、laser_residual_eq1_flag、laser_residual_eq2_flag和laser_residual_minus3共同指定当geometry_angular_enabled_flag等于1时与使用IDCM的节点相关联的残余激光索引值。

除了仅确定节点是否有资格使用平面模式进行编码之外,G-PCC编码器200和G-PCC解码器300还可以确定该节点是否有资格使用角度平面译码模式进行编码。通常,如果节点被两个或更多个激光相交,则有资格使用平面模式编码的节点没有资格使用角度平面译码模式编码。通常,如果节点包含两个或更多个激光采样位置(对于使用垂直于水平轴的平面的平面模式),则有资格使用平面模式编码的节点没有资格使用方位角平面译码模式编码。如果节点没有资格使用角度平面译码模式进行编码,则可以认为角度平面译码模式相对于该节点是被禁用。同样,如果节点没有资格使用方位角平面译码模式进行编码,则方位角平面译码模式可以被认为相对于该节点被禁用。以下描述描述了用于确定要使用角度平面译码模式编码的节点的资格的过程。

以下过程适用于子节点Child,以确定子节点的角度资格angular_eligible[Child]。如果geometry_angular_mode_flag等于0,则angular_eligible[Child]被设置为等于0。否则,以下适用:

其中,deltaAngle是激光之间的最小角度距离,由下式确定

deltaAngle=Min{Abs(LaserAngle[i]–LaserAngle[j]);0≤i

并且其中,(sNchild,tNchild,vNchild)指定几何八叉树子节点Child在当前条带中的位置。术语ChildNodeSizeLog2指示节点“Child”的大小的以2为底的对数。

作为确定角度平面译码模式的上下文的过程的一部分,G-PCC编码器200和G-PCC解码器300可以确定节点的激光索引(例如,laserIndex)。节点的激光索引是与该节点相交的激光的索引。下文描述了确定激光索引的过程。

以下过程适用于子节点Child,以确定与子节点相关联的激光索引laserIndex[Child]。

如果角度资格angular_eligible[Child]等于0,则laserIndex[Child]索引被设置为预设值UNKNOWN_LASER。

否则,如果角度资格angular_eligible[Child]等于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)

在上面的文本中,invSqrt()指示反平方根函数。

基于子节点的父节点Parent,G-PCC编码器200和G-PCC解码器300可以确定与子节点相关联的角度资格和激光(laserIndex)如下。

在确定节点的激光索引之后,G-PCC编码器200和G-PCC解码器300可以执行确定上下文索引(例如,contextAngular)的过程,该上下文索引指示G-PCC编码器200和G-PCC解码器300可以用于算术编码(例如,CABAC编码)和算术解码(例如,CABAC解码)平面位置语法元素和/或点偏移(例如,point_offset)语法元素的上下文。下文描述了用于确定节点的contextAngular的示例过程。

以下过程适用于子节点Child,以确定与子节点相关联的角度上下文contextAngular[Child]。

如果激光索引laserIndex[Child]等于UNKNOWN_LASER,则contextAngular[Child]被设置为预设值UNKNOWN_CONTEXT。否则,如果激光索引laserIndex[Child]不等于UNKNOWN_LASER,则以下适用于G-PCC DIS(ISO/IEC JTC1/SC29/WG11 w19328,电信会议(之前为Alpbach会议),2020年4月)的8.2.5.2中所描述过程的延续部分。

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

thetaLaserDelta=LaserAngle[laserIndex[Child]]-theta32

Hr=LaserCorrection[laserIndex[Child]]×rInv;

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

vShift=(rInv<>20

thetaLaserDeltaTop=thetaLaserDelta-vShift

thetaLaserDeltaBot=thetaLaserDelta+vShift

然后,从两个角度差中推断角度上下文(contextAngular)。

contextAngular[Child]=thetaLaserDelta<0

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

contextAngular[Child]+=2

图7是描绘在方位角平面译码模式的上下文推导中使用的角度的示例定义的概念图,其中示出了planarX。具体地,图7的示例示出了具有原点702和中心点704的节点700。节点700的原点702是最接近坐标系的原点706(例如geomAngularOrigin)的点。节点700的中心点704是节点700的所有边界之间的中间点。节点原点角度708(phiNode0)是相对于从坐标系的原点706穿过节点700的原点702的线的第一轴(例如,x)的角度。节点中心角度710(phiNode)是相对于从坐标系的原点706穿过节点700的中心点704的线的第一轴(例如,x)的角度。角度712(predPhi)是离节点700最近的激光的角度。换句话说,角度712可以是由节点700的激光索引指示的激光的方位角。

G-PCC编码器200和G-PCC解码器300可以使用图7中所描述的角度来确定方位角平面译码模式的算术编码(例如,CABAC编码)和算术解码(例如,CABAC解码)平面位置语法元素(plane_position)的上下文。例如,以下伪代码描述了用于确定译码平面位置语法元素的方位角上下文的示例过程。以下伪代码摘自″G-PCC Test Model v10”(ISO/IEC JTC1/SC29/WG11 w19323,电信会议,2020年4月)中描述的软件测试模型(TMC13v10.0)。

在上面的伪代码中,变量contextAnglePhiX是用于垂直于坐标系的x轴的平面的水平平面位置的算术译码的上下文的上下文索引。变量contextAnglePhiY是用于垂直于坐标系的y轴的平面的水平平面位置的算术译码的上下文的上下文索引。x轴和y轴被认为是水平轴。

G-PCC编码器200和G-PCC解码器300可以确定激光索引,以用于确定IDCM中的垂直点偏移语法元素的算术编码和算术解码的上下文。垂直点偏移语法元素指示节点中的点相对于该节点的原点在垂直(z轴)方向上的偏移。用于确定用于算术编码和算术解码垂直点偏移语法元素的激光索引的过程可以不同于用于确定用于算术编码和算术解码平面位置语法元素的激光索引的过程。下文描述了用于确定用于算术编码和算术解码垂直点偏移语法元素的激光索引的操作。

本章节中描述了为经历推断的直接译码模式的子节点Child确定激光索引laserIndex[Child]的过程。这仅适用于geometry_angular_mode_flag等于1的情况。

首先,通过确定节点角度NodeTheta来计算估计值laserIndexEstimate[Child]

sNode=(sNchild-geomAngularOrigin[0])<<8

tNode=(tNchild-geomAngularOrigin[1])<<8

r2=sNode×sNode+tNode×tNode

rInvLaser=invSqrt(r2)

NodeTheta=((vNchild-geomAngularOrigin[2])*rInvLaser)>>14

并且确定离该节点角度最近的激光角度LaserAngle[laserIndexEstimate[Child]]

其次,从经解码值中推断激光索引残差laserIndexResidual[Child]

然后,通过求和获得激光索引laserIndex[Child]

laserIndex[Child]=laserIndexEstimate[Child]+laserIndexResidual[Child]

在上文中,thetaList是包含激光角度的正切值的列表。

此外,在确定用于算术编码和算术解码点偏移语法元素的激光索引之后,G-PCC编码器200和G-PCC解码器300可以使用激光索引来确定用于算术编码和算术解码垂直点偏移语法元素的上下文(idcmIdxAngular)。下文描述了用于确定用于算术编码和算术解码垂直点偏移语法元素的上下文(idcmIdxAngular)的操作。

在本章节中描述了确定用于译码与属于经历推断的直接译码模式的子节点的第i点的第j位相关联的二进制数point_offset[i][2][j]的上下文idcmIdxAngular[i][j]的过程,本章节是前一章节的延续部分。

该过程在point_offset[i][0][j]和point_offset[i][1][j]被解码使得PointOffset[i][0]和PointOffset[i][1]已知之后被执行。点i相对于LIDAR的s和t位置由以下确定:

posSlidar[i]=sNchild-geomAngularOrigin[0]+PointOffset[i][0]

posTlidar[i]=tNchild-geomAngularOrigin[1]+PointOffset[i][1]

其中(sNchild,tNchild,vNchild)指定几何八叉树子节点Child在当前条带中的位置。

该点距LIDAR的径向距离的倒数rInv由以下确定:

sLidar=(posSlidar[i]<<8)-128

tLidar=(posTlidar[i]<<8)-128

r2=sLidar×sLidar+tLidar×tLidar

rInv=invSqrt(r2)

与子节点Child相关联的激光的经校正激光角度ThetaLaser由以下确定:

Hr=LaserCorrection[laserIndex[Child]]×rInv

ThetaLaser=LaserAngle[laserIndex[Child]]+(Hr>=0?-(Hr>>17):((-Hr)>>17))

对于j2=0..j-1,假设位point_offset[i][2][j2]是已知的,则已知该点属于虚拟垂直区间,其一半大小由以下提供:

halfIntervalSize[j]=(1<<(EffectiveChildNodeSizeLog2[2]-1))>>j

并且提供区间的下端的部分v点位置posVlidarPartial[i][j]由以下推断:

PointOffsetVpartial=0;

for(j2=0;j2

PointOffsetVpartial[i]+=point_offset[i][2][j2]<

PointOffsetVpartial[i]<<=(EffectiveChildNodeSizeLog2[2]-j)

posVlidarPartial[i][j]=vNchild-geomAngularOrigin[2]+PointOffsetVpartial[i]

相对于虚拟区间的中间的相对激光位置thetaLaserDeltaVirtualInterval计算如下:

vLidar=((posVlidarPartial[i][j]+halfIntervalSize[j])<<1)-1

theta=zLidar×rInv

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

thetaLaserDeltaVirtualInterval=ThetaLaser-theta32;

确定激光相对于虚拟区间中的较低和较高v位置的两个角度差,deltaVirtualIntervalTop和deltaVirtualIntervalBot。

vShift=((rInv<>18)>>j

deltaVirtualIntervalTop=thetaLaserDeltaVirtualInterval-vShift

deltaVirtualIntervalBot=thetaLaserDeltaVirtualInterval+vShift

然后,从两个角度差中推断角度上下文。

idcmIdxAngular[i][j]=thetaLaserDeltaVirtualInterval<0

if(deltaVirtualIntervalTop>=0||deltaVirtualIntervalBot<0)

idcmIdxAngular[i][j]+=2

当IDCM被应用于子节点Child时,在第一位由平面位置plane_position[Child][2]推断的情况下,对于在范围0..EffectiveChildNodeSizeLog2[2]中或在范围1..EffectiveChildNodeSizeLog2[2]中的j,子节点中的第i点的位point_offset[i][2][j]通过应用以下过程进行解码。

如果geometry_angular_mode_flag等于0,则使用旁路解码过程解码point_offset[i][2][j]。

否则,如果geometry_angular_mode_flag等于0,则位point_offset[i][2][0]在不由平面位置推断时被旁路解码,并且对于j>0,位point_offset[i][2][j]使用上下文idcmIdxAngular[i][j]进行解码。

图8是描绘在方位角模式的上下文推导中使用的角度的示例性定义的概念图,其中示出了y-IDCM。图8的示例示出了节点802的原点800和节点802的中心点804。在图8的示例中仅示出了沿节点802的更近的x轴边界的点。节点802的原点800是最接近坐标系的原点806(例如geomAngularOrigin)的点。节点802的中心点804是节点802的较近y轴边界与较远y轴边界之间的中间点。节点802的y轴边界垂直于y轴。节点原点角度808(phiNode0)是相对于从坐标系的原点806穿过节点802的原点800的线的第一轴(例如,x)的角度。节点中心角810(phiNode)是相对于从坐标系的原点806穿过节点802的中心点804的线的第一轴(例如,x)的角度。角度812(predPhi)是离节点802最近的激光的角度。换句话说,角度812可以是由节点700的激光索引指示的激光的方位角。

G-PCC编码器200和G-PCC解码器300可以使用图8中描述的角度来确定用于算术编码和算术解码方位角点偏移语法元素的上下文。方位角点偏移语法元素可以是x轴方位角点偏移语法元素或y轴方位角点偏移语法元素。x轴方位角点偏移语法元素指示节点中的点相对于该节点的原点在x轴方向(水平方向中的一个方向)上的偏移。y轴方位角点偏移语法元素指示节点中的点相对于该节点的原点在y轴方向(水平方向中的一个方向)上的偏移。G-PCC编码器200和G-PCC解码器300可以使用来自软件测试模型(TMC13v10.0)的以下代码摘录和图8中的图示来确定用于译码point_offset语法元素的方位角上下文:

如上文关于描述用于确定平面译码模式的contextAngular的操作和用于确定角度上下文idcmIdxAngular的操作的章节所描述的,用于译码平面模式的水平(x或y)平面位置和用于译码IDCM水平(x或y)点位置偏移的方位角上下文索引的确定可能涉及相当大的复杂性。例如:

·16个上下文被用于译码平面模式的水平(x或y)平面位置。

·16个上下文被用于译码IDCM的水平(x或y)点偏移。

·基于两个大整数值的比较的4个条件被用来确定每个上下文索引。

如上文关于描述当角度平面译码模式和方位角平面译码模式被禁用时用于确定平面模式标志(例如,is_planar_flag)的ctxIdx的操作和用于确定平面位置语法元素(例如,plane_position)的ctxIdx的操作的章节所描述的,用于确定用于算术编码和算术解码平面模式标志和平面位置语法元素的上下文的过程涉及相当大的复杂性。例如:

·每轴4个上下文(3x)被用于译码平面模式标志。

·每轴24个上下文(3x)被用于译码平面位置语法元素。

本公开描述了可以降低与确定用于算术译码平面模式的水平平面位置(例如,x轴和y轴的平面位置语法元素)和译码IDCM水平点位置偏移(例如,指示节点中的点在x轴和y轴上的偏移的点偏移语法元素)的上下文相关联的复杂性的技术。降低与确定这些方位角上下文索引相关联的复杂性可以降低实施G-PCC编码器200和G-PCC解码器300的硬件的成本。附加地,降低与确定这些方位角上下文索引相关联的复杂性可以加速点云数据的编码和解码时间。如下文所描述,本公开的技术可以允许较少的上下文来降低与确定用于算术译码平面模式的水平平面位置的上下文和确定用于算术译码IDCM水平点位置偏移的上下文相关联的复杂性。

以下示例和伪代码参考本公开的以上与平面译码模式的上下文contextAngular的确定和角度上下文idcmIdxAngular的确定有关的章节。例如,在以下示例和伪代码中使用的术语和变量可以如本公开的这些章节中所描述的那样定义。可以独立应用或组合应用本文中所公开的一个或多个示例。

在减少用于译码平面模式的水平平面位置和/或IDCM中的x或y点偏移的上下文的数量的第一示例中,G-PCC编码器200和G-PCC解码器300可以从由2个上下文组成的多个上下文中确定上下文。以下伪代码与多个上下文由2个上下文组成的示例一致。

此第一示例中的变量contextAnglePhi可以具有仅2个可能值中的一个(即,0或1,这取决于是否(angleL>=0&&angleR>=0)||(angleL<0&&angleR<0))。相反,在w19328中描述的用于确定contextAnglePhiX或contextAnglePhiY的过程可以具有16个可能值中的一个。

在减少用于译码平面模式的水平平面位置和/或IDCM中的x或y点偏移的上下文的数量的第二示例中,G-PCC编码器200和G-PCC解码器300可以从由4个上下文组成的多个上下文中确定上下文。以下伪代码与多个上下文由4个上下文组成的示例一致。

此第二示例中的变量contextAnglePhi可以具有仅4个可能值中的一个(即,0、1、2或3),这取决于是否(angleL>=0&&angleR>=0)||(angleL<0&&angleR<0)以及是否angleL>angleR。相反,在章节3.3.4中描述的用于确定contextAnglePhiX或contextAnglePhiY的过程可以具有16个可能值中的一个。

在减少用于译码平面模式的水平平面位置和/或IDCM中的x或y点偏移的上下文的数量的第三示例中,G-PCC编码器200和G-PCC解码器300可以从由8个上下文组成的多个上下文中确定上下文。以下伪代码与多个上下文由8个上下文组成的示例一致。

此第三示例中的变量contextAnglePhi可以具有仅8个可能值中的一个(即,0至7,这取决于是否(angleL>=0&&angleR>=0)||(angleL<0&&angleR<0),是否angleL>angleR,以及是否angleR>(angleL<<1))。相反,在章节3.3.4中描述的用于确定contextAnglePhiX或contextAnglePhiY的过程可以具有16个可能值中的一个。

或替代地,具有经修改的阈值:

在第三示例的这个替代版本中的变量contextAnglePhi可以具有仅8个潜在值中的一个(即,0至7,这取决于是否(angleL>=0&&angleR>=0)||(angleL<0&&angleR<0),是否angleL>angleR,以及是否angleR>(angleL<<2))。相反,在章节3.3.4中描述的用于确定contextAnglePhiX或contextAnglePhiY的过程可以具有16个可能值中的一个。

因此,在第三示例的替代版本中,G-PCC译码器(例如,G-PCC编码器200或G-PCC解码器300)可以将第一轴位置(例如,posx)确定为节点的原点的第一轴坐标与坐标系的原点的第一轴坐标之间的差。G-PCC译码器可以将第二轴位置(例如,posy)确定为节点的原点的第二轴坐标与坐标系的原点的第二轴坐标之间的差。此外,G-PCC译码器可以将第一角度(例如,angleL)确定为节点原点角度(例如,phiNode0)与激光角度(例如,predPhi)之间的差。节点原点角度是从坐标系的原点穿过节点的原点的直线相对于坐标系的第一轴的角度。激光角度是源自坐标系的原点的可应用激光相对于第一轴的角度。可应用激光是离节点最近的激光。

附加地,G-PCC译码器可以将第二角度(例如angleR)确定为节点中心角度(例如phiNode)与激光角度(例如predPhi)之间的差。节点中心角是从坐标系的原点穿过节点的中心点的直线相对于坐标系的第一轴的角度。取决于第一角度和第二角度是否都是非负的或第一角度和第二角度是否都是负的(例如,(angleL>=0&&angleR>=0)||(angleL<0&&angleR<0)),G-PCC译码器可以将方位角上下文值(例如,contextAnglePhi)设置为2或0。然后,G-PCC译码器可以将第一角度设置为第一角度的绝对值,并且将第二角度设置为第二角度的绝对值。

基于第一角度大于第二角度,G-PCC译码器可以将方位角上下文值递增1(例如,contextAnglePhi++)。G-PCC译码器可以将临时值(temp)设置为第一角度。G-PCC译码器还可以将第一角度设置为第二角度(例如,angleL=angleR)。然后,G-PCC译码器可以将第二角度设置为临时值(例如angleR=temp)。

此外,基于第二角度大于移位值,G-PCC译码器可以将方位角上下文值递增4。在该示例中,移位值等于第一角度左移2。因此,G-PCC译码器可以执行if(angleR>(angleL<<2))contextAnglePhi+=4。

基于第一轴位置的绝对值(例如,abs(posx))小于或等于第二轴位置的绝对值(例如,abs(posy)),G-PCC译码器可以将第一轴方位角上下文值(例如,contextAnglePhiX)设定为上下文角度值。替代地,基于第一轴位置的绝对值(例如,abs(posx))大于第二轴位置的绝对值(例如,abs(posy)),G-PCC译码器可以将第二轴方位角上下文值(例如,contextAnglePhiY)设置为上下文角度值。然后,G-PCC译码器可以基于第一轴方位角上下文值或第二轴方位角上下文值来确定上下文。例如,G-PCC译码器可以确定上下文是由第一轴方位角上下文值或第二轴方位角上下文值标识的上下文,或由从第一轴方位角上下文值或第二轴方位角上下文值数学推导的值标识的上下文。

在减少用于译码平面模式的水平平面位置和/或IDCM中的x或y点偏移的上下文的数量的第四示例中,G-PCC编码器200和G-PCC解码器300可以从由12个上下文组成的多个上下文中确定上下文。以下伪代码与多个上下文由12个上下文组成的示例一致。

此第四示例中的变量contextAnglePhi可以具有仅12个可能值中的一个(即,0至11,这取决于是否(angleL>=0&&angleR>=0)||(angleL<0&&angleR<0),是否angleL>angleR,是否angleR>(angleL<<2),以及是否angleR>(angleL<<2))。相反,在章节3.3.4中描述的用于确定contextAnglePhiX或contextAnglePhiY的过程可以具有16个可能值中的一个。

在减少用于译码平面模式的水平平面位置和/或IDCM中的x或y点偏移的上下文的数量的第五示例中,G-PCC编码器200和G-PCC解码器300可以从由6个上下文组成的多个上下文中确定上下文。以下伪代码与多个上下文由6个上下文组成的示例一致。

此第五示例中的变量contextAnglePhi可以具有仅6个可能值中的一个(即,0至5,这取决于是否(angleL>=0&&angleR>=0)||(angleL<0&&angleR<0),是否angleL>angleR,是否contextAnglePhi<2,以及是否angleR>(angleL<<2))。相反,在章节3.3.4中描述的用于确定contextAnglePhiX或contextAnglePhiY的过程可以具有16个可能值中的一个。

或替代地:

此第五示例的这个替换版本中,变量contextAnglePhi可以具有仅6个可能值中的一个(即,0至5,这取决于是否(angleL>=0&&angleR>=0)||(angleL<0&&angleR<0),是否angleL>angleR,是否contextAnglePhi>=2,以及是否angleR>(angleL<<2))。相反,在章节3.3.4中描述的用于确定contextAnglePhiX或contextAnglePhiY的过程可以具有16个可能值中的一个。

因此,在以上第一示例至第五示例中,G-PCC编码器200或G-PCC解码器300可以从多个上下文中确定水平平面位置的上下文,其中该多个上下文由2、4、6、8或12个上下文组成。附加地,G-PCC编码器200或G-PCC解码器300可以使用所确定的上下文对水平平面位置执行算术译码(例如,CABAC编码或CABAC解码)。G-PCC编码器200或G-PCC解码器300可以基于水平平面位置译码(例如,编码或解码)点云中的至少一个点。

在以上第一示例至第五示例的每个中,G-PCC编码器200和G-PCC解码器300可以使用由对应伪代码描述的操作来确定水平轴点偏移语法元素的上下文。然而,在用于确定水平轴点偏移语法元素的上下文的操作中,G-PCC编码器200和G-PCC解码器300可以使用contextAnglePhi作为在不评估(abs(pos)<=abs(posy))、将contextAnglePhi分配给contextAnglePhiX或将contextAnglePhi分配给contextAnglePhiY的情况下标识点偏移语法元素的上下文的上下文索引。

因此,关于第三示例,G-PCC译码器(例如,G-PCC编码器200和G-PCC解码器300)可以将第一角度(例如,angleL)确定为节点原点角度(例如,phiNode0)与激光角度(例如,predPhi)之间的差。节点原点角度是从坐标系的原点穿过节点的原点的直线相对于坐标系的第一轴的角度。激光角度是源自坐标系的原点的可应用激光相对于第一轴的角度,其中可应用激光是离节点最近的激光。在该示例中,G-PCC译码器还可以将第二角度(例如angleR)确定为节点中心角度(例如phiNode)与激光角度(例如predPhi)之间的差。节点中心角度是从坐标系的原点穿过节点的中心点的直线相对于坐标系的第一轴的角度。此外,在该示例中,取决于第一角度和第二角度都是非负的或第一角度和第二角度都是负的,G-PCC译码器可以将上下文值(例如,contextAnglePhi)设置为2或0。然后,G-PCC译码器可以将第一角度设置为第一角度的绝对值,并且将第二角度设置为第二角度的绝对值。然后,基于第一角度大于第二角度,G-PCC译码器可以将方位角上下文值递增1,将临时值(例如,temp)设置为第一角度,将第一角度设置为第二角度,并且将第二角度设置为临时值。然后,基于第二角度大于移位值(例如,angleL<<2),G-PCC译码器可以将方位角上下文值递增4。移位值可以等于第一角度左移1(或在一些示例中左移2)。此外,G-PCC译码器可以基于方位角上下文值从多个第二上下文中确定第二上下文,其中多个第二上下文由8个上下文组成。G-PCC译码器可以使用所确定的上下文对水平轴点偏移的一个或多个比特执行算术译码。水平轴点偏移是节点的点相对于节点的原点的x轴或y轴坐标。

此外,根据本公开的一些技术,G-PCC编码器200和G-PCC解码器300可以使用减少数量的上下文以用于算术编码(例如,CABAC编码)和算术解码(例如,CABAC解码)平面模式标志(例如,is_planar_flag)。此外,当角度平面译码模式和方位角平面译码模式被禁用时,G-PCC编码器200和G-PCC解码器300可以使用减少数量的上下文以用于算术编码和算术解码角度译码模式的平面位置语法元素。以下示例和伪代码参考本公开的以上与平面模式标志语法元素的ctxIdx的确定和平面位置语法元素的ctxIdx的确定有关的章节。

在第六示例中,当角度平面译码模式和方位角平面译码模式被禁用时,G-PCC编码器200和G-PCC解码器300使用每个轴一个上下文以用于译码平面模式标志语法元素。换句话说,用于算术译码平面模式标志语法元素的上下文仅取决于平面模式标志所涉及的轴(例如,x轴、y轴或z轴)。

在该第六示例中,G-PCC编码器200和G-PCC解码器300可以推导上下文索引ctxIdx如下。在本说明书中,用标记示出对w19328的删除,用<!>…标记强调的文本。

ctxIdx=axisIdx+3×neighOccupied+(dist<=1?0:6)

因此,在该第六示例中,G-PCC编码器200或G-PCC解码器300可以从一组上下文中确定轴的语法元素的上下文,其中语法元素指示当前子节点在垂直于轴的方向上是否是平面的;使用所确定的上下文对语法元素执行算术译码(例如,CABAC编码或CABAC解码);并且基于水平平面位置译码点云中的至少一个点。

更具体地,在该第六示例中,G-PCC编码器200或G-PCC解码器300可以确定等于第一轴的轴索引的上下文索引,而不管相邻节点的占用(例如,neighOccupied)或节点的位置(例如,childPos)与对于第一轴具有相同轴位置值的最近节点的位置之间的曼哈顿距离(例如,dist)并且不管使用缓冲器跟踪最近节点是否在译码平面模式标志和平面位置的过程中被使用(例如,不管geometry_angular_mode_flag的值)。第一轴的轴位置值指示当前节点的第一轴坐标的14个最低有效位。G-PCC编码器200可以使用由上下文索引指示的上下文对第一轴的平面标志执行算术编码。G-PCC解码器300可以使用由上下文索引指示的上下文对第一轴的平面标志执行算术解码。

在第七示例中,当角度平面译码模式和方位角平面译码模式被禁用时,G-PCC编码器200和G-PCC解码器300可以使用每个轴1个上下文以用于译码平面位置语法元素。在该第七示例中,G-PCC编码器200和G-PCC解码器300可以确定上下文索引ctxIdx如下:

或者等效地:

在第八示例中,当角度平面译码模式和方位角平面译码模式被禁用时,G-PCC编码器200和G-PCC解码器300可以使用每轴减少数量的上下文以用于译码平面位置语法元素。在该第八示例中,G-PCC编码器200和G-PCC解码器300可以确定上下文索引ctxIdx如下:

或者几个替代的示例或组合是可能的:

在另一示例中:

因此,在角度平面方位角译码模式和方位角平面译码模式被禁用的本公开的第七示例和第八示例中,G-PCC编码器200或G-PCC解码器300可以从一组上下文中确定轴的语法元素的上下文,其中语法元素指示平面模式的平面的位置是相对于对应于该轴的平面的更高或更低位置;使用所确定的上下文对语法元素执行算术译码;以及基于水平平面位置译码点云中的至少一个点。

在角度平面译码模式和方位角平面译码模式被禁用的第九示例中,如果planar_buffer_disabled_flag等于1,则G-PCC编码器200和G-PCC解码器300可以使用每个轴1个上下文以用于译码平面模式标志。例如,Wei Zhang、Zexing Sun、Mary-Luc Champel,″[G-PCC]EE13.37 report on planar coding improvement”(ISO/IEC JTC1/SC29/WG11 MPEG/m53693,电信会议(之前为日内瓦会议),2020年6月)中将平面模式标志(例如is_planar_flag)的上下文推导描述如下:

If(planar_buffer_disabled_flag)

{

ctxIdx=axisIdx+3×(!neighOccupied)

}

Else

{

}

在该第九示例中提出了在planar_buffer_disabled_flag语法元素为真的情况下(例如,当使用缓冲器跟踪最近节点在译码平面模式标志和平面模式中的平面位置的过程中不被使用时)进一步简化上下文推导如下,其中用标签指示删除:

If(planar_buffer_disabled_flag)

{

ctxIdx=axisIdx+3×(!neighOccupied)

}

Else

{

}

因此,在该第九示例中,G-PCC编码器200或G-PCC解码器300可以从一组上下文中确定轴的语法元素的上下文,其中语法元素指示当前子节点在垂直于轴的方向上是否是平面的,并且确定上下文包括将上下文的上下文索引确定为等于轴的轴索引;使用所确定的上下文对语法元素执行算术译码(例如,CABAC译码);并且基于水平平面位置译码点云中的至少一个点。

图9是根据本公开的一种或多种技术的用于编码点云数据的示例方法的流程图。在图9的示例中,G-PCC编码器200可以确定节点的被占用的子节点形成垂直于坐标系的第一轴(例如,x轴或y轴)的单个平面(900)。第一轴是水平轴。例如,G-PCC编码器200可以复查点云中的点的位置,以确定哪些子节点包含点。在一些示例中,基于确定该节点的被占用的子节点形成垂直于第一轴的平面,G-PCC编码器200可以省略对节点的不在垂直于第一轴的平面中的子节点的编码。省略不在垂直于第一轴的平面中的子节点的编码可以减少几何比特流203和/或属性比特流205中的数据量。

附加地,G-PCC编码器200可以确定节点的水平平面位置(902)。水平平面位置指示垂直于坐标系的第一轴的单个平面的位置。例如,G-PCC编码器200可以确定垂直于第一轴的平面是否在沿第一轴最靠近坐标系的原点的节点的边界处,或垂直于第一轴的平面是否穿过节点的中心点。

此外,G-PCC编码器200可以从由8个上下文组成的多个上下文中确定节点的水平平面位置的上下文(904)。例如,G-PCC编码器200可以使用减少用于译码平面模式的水平平面位置和/或IDCM中的x或y点偏移的上下文的数量的第三示例中所描述的过程来确定上下文,如以上所描述。

G-PCC编码器200(例如,G-PCC编码器200的几何算术编码单元214)可以使用所确定的上下文对指示水平平面位置的语法元素执行算术编码(906)。例如,G-PCC编码器200可以对平面位置语法元素(例如,plane_position)执行算术编码。G-PCC编码器200可以使用如以上所描述的CABAC编码。

在一些示例中,除了算术解码水平平面位置之外或作为其替代,G-PCC编码器200可以确定平面偏移语法元素的上下文,并且使用所确定的上下文来对平面偏移语法元素执行算术解码。在本公开的不同示例中,G-PCC编码器200可以从由2、4、8、12或6个上下文组成的多个上下文中确定平面偏移语法元素的上下文,例如,如上文提供的示例中所描述的。

图10是示出可以与本公开的一种或多种技术一起使用的示例测距系统的概念图。在图10的示例中,G-PCC解码器300可以确定节点的被占用的子节点形成垂直于坐标系的第一轴的单个平面,其中第一轴是水平轴(1000)。例如,G-PCC解码器300可以基于平面模式标志(例如,is_planar_flag)来确定G-PCC解码器300的节点的被占用的子节点是否形成垂直于坐标系的第一轴的平面。例如,在该示例中,G-PCC解码器300可以基于等于1的平面模式标志来确定该节点的被占用的子节点形成垂直于坐标系的第一轴的平面。否则,如果平面模式标志等于0,则G-PCC解码器300可以确定该节点的被占用的子节点不形成垂直于坐标系的第一轴的平面。在一些示例中,基于确定该节点的被占用的子节点形成垂直于第一轴的平面,G-PCC解码器300可以省略对节点的不在垂直于第一轴的平面中的子节点的解码。省略不在垂直于第一轴的平面中的子节点的解码可以减少几何比特流203和/或属性比特流205中的数据量。

G-PCC解码器300(例如,G-PCC解码器300的几何算术解码单元302)可以从由8个上下文组成的多个上下文中确定节点的水平平面位置的上下文(1002)。水平平面位置指示垂直于坐标系的第一轴线的单个平面的位置。例如,G-PCC解码器300可使用减少用于译码平面模式的水平平面位置的上下文的数量的第三示例中所描述的过程来确定上下文,如以上所描述的。

G-PCC解码器300(例如,G-PCC解码器300的几何算术解码单元302)可以使用所确定的上下文对指示水平平面位置的语法元素执行算术解码(1004)。例如,G-PCC解码器300可以对plane_position语法元素执行算术解码。G-PCC解码器300可以使用如以上所描述的CABAC解码。

在一些示例中,除了算术解码水平平面位置之外或作为其替代,G-PCC解码器300可以确定水平轴平面偏移语法元素的上下文,并且使用所确定的上下文来对水平轴平面偏移语法元素执行算术解码。在本公开的不同示例中,G-PCC解码器300可以从由2、4、8、12或6个上下文组成的多个上下文中确定水平轴平面偏移语法元素的上下文,例如,如上文提供的示例中所描述的。

G-PCC解码器300可以重构点云数据。G-PCC解码器300使用水平轴平面偏移语法元素作为重构点云数据的一部分。例如,G-PCC解码器300可以基于水平轴点偏移确定点云数据的点的位置。例如,G-PCC解码器300可以通过将水平轴点偏移添加到包含点的节点的原点的x轴或y轴坐标来确定该点在x轴或y轴上的绝对位置。

图11是示出可以与本公开的一种或多种技术一起使用的示例测距系统1100的概念图。在图11的示例中,测距系统1100包括照明器1102和传感器1104。照明器1102可以发射光1106。在一些示例中,照明器1102可以发射作为一个或多个激光束的光1106。光1106可以处于一种或多种波长,诸如红外波长或可见光波长。在其他示例中,光1106不是相干激光。当光1106遇到对象(诸如对象1108)时,光1106产生返回光1110。返回光1110可以包括反向散射光和/或反射光。返回光1110可以穿过透镜1111,透镜1111引导返回光1110以在传感器1104上产生对象1108的图像1112。传感器1104基于图像1112生成信号1414。图像1112可以包括一组点(例如,如由图11的图像1112中的点表示的)。

在一些示例中,照明器1102和传感器1104可以安装在旋转结构上,使得照明器1102和传感器1104捕获环境的360度视图。在其他示例中,测距系统1100可以包括一个或多个光学组件(例如,镜、准直器、衍射光栅等),该一个或多个光学组件使得照明器1102和传感器1104能够检测特定范围(例如,高达360度)内的对象的范围。尽管图11的示例仅示出了单个照明器1102和传感器1104,但是测距系统1100可以包括多组照明器和传感器。

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

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

在其他示例中,可以在不使用照明器1102的情况下生成点云。例如,在一些示例中,测距系统1100的传感器1104可以包括两个或更多个光学相机。在这样的示例中,测距系统1100可以使用光学相机来捕获包括对象1108的环境的立体图像。测距系统1100可以包括点云生成器1420,点云生成器1420可以计算立体图像中的位置之间的差异。然后,测距系统1100可以使用这些差异来确定到立体图像中示出的位置的距离。根据这些距离,点云生成器1420可以生成点云数据。

传感器1104还可以检测对象1108的其他属性,诸如颜色和反射信息。在图11的示例中,点云生成器1116可以基于由传感器1104生成的信号1118生成点云数据。测距系统1100和/或点云生成器1116可以形成数据源104(图1)的一部分。因此,由测距系统1100生成的点云可以根据本公开的任何技术进行编码和/或解码。

图12是示出其中可以使用本公开的一种或多种技术的基于车辆的示例场景的概念图。在图12的示例中,车辆1200包括测距系统1202。测距系统1202可以以参考图11讨论的方式实施。尽管在图12的示例中没有示出,但是车辆1200还可以包括数据源(诸如数据源104(图1))以及G-PCC编码器(诸如G-PCC编码器200(图1))。在图15的示例中,测距系统1202发射激光束1204,激光束1204从行人1206或道路上的其他对象反射。车辆1200的数据源可以基于由测距系统1202生成的信号生成点云数据。车辆1200的G-PCC编码器可以编码点云以生成比特流1208,诸如几何比特流203(图2)和属性比特流205(图2)。比特流1208可以包括比由G-PCC编码器获得的未编码点云少得多的比特。

车辆1200的输出接口(例如,输出接口108(图1))可以将比特流1208发送到一个或多个其他设备。比特流1208可以包括比由G-PCC编码器获得的未编码点云少得多的比特。因此,车辆1200能够比未编码的点云数据更快地将比特流1208发送到其他设备。附加地,比特流1208可能需要较少的数据存储容量。本公开的技术可以进一步减少比特流1208中的比特数。例如,基于激光束和节点的相交来确定上下文索引,并且使用由上下文索引指示的上下文以用于对垂直平面位置或垂直点位置偏移进行算术译码,可以进一步减少比特流1208中的比特数。

在图12的示例中,车辆1200可以向车辆1210发送比特流1208。车辆1210可以包括G-PCC解码器,诸如G-PCC解码器300(图1)。车辆1210的G-PCC解码器可以解码比特流1208,以重构点云数据。车辆1210可以将重构的点云数据用于各种目的。例如,车辆1210可以基于重构的点云数据确定行人1206在车辆1200前方的道路中,并且因此开始减速,例如,甚至在车辆1210的驾驶员意识到行人1206在道路中之前开始减速。因此,在一些示例中,车辆1210可以基于重构的点云数据执行自主导航操作。

附加地或替代地,车辆1200可以向服务器系统1212发送比特流1208。服务器系统1212可以将比特流1208用于各种目的。例如,服务器系统1212可以存储比特流1208,以用于点云的后续重构。在该示例中,服务器系统1212可以使用点云以及其他数据(例如,由车辆1200生成的车辆遥测数据)来训练自动驾驶系统。在其他示例中,服务器系统1212可以存储比特流1208,以用于司法事故调查的后续重构(例如,如果车辆1200与行人1206碰撞)。

因为本公开的技术可以降低为水平平面位置和/或点偏移选择上下文的复杂性,所以本公开的技术可以加速译码点云的过程。此外,本公开的技术可以降低可以用于实施车辆1200、车辆1210和/或服务器系统1212中的编码器和解码器的硬件的成本。

图13是示出其中可以使用本公开的一种或多种技术的示例扩展现实系统的概念图。扩展现实(XR)是用来涵盖包括增强现实(AR)、混合现实(MR)和虚拟现实(VR)的一系列技术的术语。在图13的示例中,用户1300位于第一位置1302。用户1300佩戴XR头戴式视图器1304。作为XR头戴式视图器1304的替代,用户1300可以使用移动设备(例如,移动电话、平板计算机等)。XR头戴式视图器1304包括深度检测传感器(诸如测距系统),该深度检测传感器检测位置1302处的对象1306上的点的位置。XR头戴式视图器1304的数据源可以使用由深度检测传感器生成的信号来生成位置1302处的对象1306的点云数据表示。XR头戴式视图器1304可以包括G-PCC编码器(例如,图1的G-PCC编码器200),该G-PCC编码器被配置为编码点云,以生成比特流1308。

XR头戴式视图器1304可以将比特流1308(例如,经由网络,诸如互联网)发送到由第二位置1314处的用户1312佩戴的XR头戴式视图器1310。XR头戴式视图器1310可以解码比特流1308,以重构点云。XR头戴式视图器1310可以使用点云来生成表示位置1302处的对象1306的XR可视化(例如,AR、MR、VR可视化)。因此,在一些示例中,诸如当XR头戴式视图器1310生成VR可视化时,用户1312可以具有位置1302的3D沉浸式体验。在一些示例中,XR头戴式视图器1310可以基于重构的点云数据来确定虚拟对象的位置。例如,XR头戴式视图器1310可以基于重构的点云数据确定环境(例如,位置1302)包括平坦表面,并且然后确定虚拟对象(例如,卡通人物)将被定位在平坦表面上。XR头戴式视图器1310可以生成其中虚拟对象处于所确定的位置的XR可视化。例如,XR头戴式视图器1310可以示出坐在平坦表面上的卡通人物。

因为本公开的技术可以降低为水平平面位置和/或点偏移选择上下文的复杂性,所以本公开的技术可以加速译码点云的过程。此外,本公开的技术可以降低可以用于实施XR头戴式视图器1304和/或XR头戴式视图器1310中的编码器和解码器的硬件的成本。

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

因为本公开的技术可以降低为水平平面位置和/或点偏移选择上下文的复杂性,所以本公开的技术可以加速译码点云的过程。此外,本公开的技术可以降低可以用于实施移动设备1400和/或远程设备1406中的编码器和解码器的硬件的成本。

本公开的技术可以进一步减少比特流1404中的比特数。例如,基于激光束和节点的交点来确定上下文索引,以及使用由上下文索引指示的上下文用于对垂直平面位置或垂直点位置偏移的算术译码,可以进一步减少比特流1404中的比特数。

本公开的各个方面中的示例可以单独使用或以任何组合使用。以下是可以根据本公开的一种或多种技术的方面的非限制性列表。

方面1A:一种译码点云数据的方法,包括:从多个上下文中确定平面模式水平平面位置的上下文,其中,所述多个上下文由2、4、6、8或12个上下文组成;使用所确定的上下文熵译码所述平面模式水平平面位置;以及基于所述平面模式水平平面位置译码点云中的至少一个点。

方面2A:一种译码点云数据的方法,包括:从一组上下文中确定轴的语法元素的上下文,其中,所述语法元素指示当前子节点在垂直于轴的方向上是否是平面的;使用所确定的上下文熵译码所述语法元素;以及基于平面模式水平平面位置译码点云中的至少一个点。

方面3A:根据方面2A所述的方法,其中,该组上下文由每个轴1个上下文组成。

方面4A:一种译码点云数据的方法,包括:从一组上下文中确定轴的语法元素的上下文,其中所述语法元素指示平面模式的平面的位置相对于对应于所述轴的平面是在较高位置还是较低位置;使用所确定的上下文熵译码所述语法元素;以及基于平面模式水平平面位置译码点云中的至少一个点。

方面5A:根据方面4A所述的方法,其中,该组上下文由每个轴1个上下文组成。

方面6A:一种译码点云数据的方法,包括:从一组上下文中确定轴的语法元素的上下文,其中所述语法元素指示当前子节点在垂直于轴的方向上是否是平面的,并且确定所述上下文包括将所述上下文的上下文索引确定为等于所述轴的轴索引;使用所确定的上下文熵译码所述语法元素;以及基于平面模式水平平面位置译码点云中的至少一个点。

方面7A:根据方面1A-6A中的任一项所述的方法,还包括生成所述点云。

方面8A:一种用于处理点云的设备,该设备包括用于执行根据方面1A-7A中任一方面所述的方法的一个或多个部件。

方面9A:根据方面8A所述的设备,其中,所述一个或多个部件包括在电路中实施的一个或多个处理器。

方面10A:根据方面8A或9A中的任一项所述的设备,还包括存储表示所述点云的数据的存储器。

方面11A:根据方面8A-10A中的任一项所述的设备,其中,该设备包括解码器。

方面12A:根据方面8A-11A中的任一项所述的设备,其中,该设备包括编码器。

方面13A:根据方面8A-12A中的任一项所述的设备,还包括生成所述点云的设备。

方面14A:根据方面8A-13A中的任一项所述的设备,还包括基于所述点云呈现影像的显示器。

方面15A:一种计算机可读存储介质,其上存储有指令,所述指令在被执行时使一个或多个处理器执行方面1A-7A中的任一项所述的方法。

方面1B:一种用于编码点云数据的设备,包括:存储器,用于存储所述点云数据;以及耦合到所述存储器并且在电路中实施的一个或多个处理器,所述一个或多个处理器被配置为:确定节点的被占用的子节点形成垂直于坐标系的第一轴的单个平面,其中所述第一轴是水平轴并且所述被占用的子节点包含由所述点云数据表示的点;确定所述节点的水平平面位置,其中所述水平平面位置指示垂直于所述坐标系的所述第一轴的所述单个平面的位置;从由8个上下文组成的多个上下文中确定所述节点的所述水平平面位置的上下文;以及使用所确定的上下文对指示所述水平平面位置的语法元素执行算术编码。

方面2B:根据方面1B所述的设备,其中所述一个或多个处理器被配置为,作为确定所述节点的所述水平平面位置的所述上下文的一部分,:将第一轴位置确定为所述节点的原点的第一轴坐标与所述坐标系的原点的第一轴坐标之间的差;将第二轴位置确定为所述节点的所述原点的第二轴坐标与所述坐标系的所述原点的第二轴坐标之间的差;将第一角度确定为节点原点角度与激光角度之间的差,其中:所述节点原点角度是从所述坐标系的所述原点穿过所述节点的原点的直线相对于所述坐标系的所述第一轴的角度,并且所述激光角度是源自所述坐标系的所述原点的可应用激光相对于所述第一轴的角度,其中所述可应用激光是离所述节点最近的激光;将第二角度确定为节点中心角度和所述激光角度之间的差,其中所述节点中心角度是从所述坐标系的所述原点穿过所述节点的中心点的直线相对于所述坐标系的所述第一轴的角度;取决于所述第一角度和所述第二角度都是非负的或所述第一角度和所述第二角度都是负的,将方位角上下文值设置为2或0;将所述第一角度设置为所述第一角度的绝对值;将所述第二角度设置为所述第二角度的绝对值;基于所述第一角度大于所述第二角度:将所述方位角上下文值递增1;将临时值设置为所述第一角度;将所述第一角度设置为所述第二角度;以及将所述第二角度设置为所述临时值;基于所述第二角度大于移位值,将所述方位角上下文值递增4,其中所述移位值等于所述第一角度左移2;基于所述第一轴位置的绝对值小于或等于所述第二轴位置的绝对值,将第一轴方位角上下文值设置为上下文角度值;基于所述第一轴位置的所述绝对值大于所述第二轴位置的所述绝对值,将第二轴方位角上下文值设置为所述上下文角度值;以及基于所述第一轴方位角上下文值或所述第二轴方位角上下文值来确定所述上下文。

方面3B:根据方面1B和2B中的任一项所述的设备,其中所述一个或多个处理器被配置为基于确定所述节点的所述被占用的子节点形成垂直于所述第一轴的平面,省略对所述节点的不在垂直于所述第一轴的平面中的子节点的编码。

方面4B:根据方面1B至3B中的任一项所述的设备,其中所述上下文是第一上下文,所述多个上下文是多个第一上下文,并且所述一个或多个处理器还被配置为:将第一角度确定为节点原点角度与激光角度之间的差,其中:所述节点原点角度是从所述坐标系的原点穿过所述节点的原点的直线相对于所述坐标系的所述第一轴的角度,并且所述激光角度是源自所述坐标系的所述原点的可应用激光相对于所述第一轴的角度,其中所述可应用激光是离所述节点最近的激光;将第二角度确定为节点中心角度和激光角度之间的差,其中所述节点中心角度是从所述坐标系的所述原点穿过所述节点的中心点的直线相对于所述坐标系的所述第一轴的角度;取决于所述第一角度和所述第二角度都是非负的或所述第一角度和所述第二角度都是负的,将上下文值设置为2或0;将所述第一角度设置为所述第一角度的绝对值;将所述第二角度设置为所述第二角度的绝对值;基于所述第一角度大于所述第二角度:将所述方位角上下文值递增1;将临时值设置为所述第一角度;将所述第一角度设置为所述第二角度;以及将所述第二角度设置为所述临时值;基于所述第二角度大于移位值,将所述方位角上下文值递增4,其中所述移位值等于所述第一角度左移1;基于所述方位角上下文值从多个第二上下文中确定第二上下文,其中所述多个第二上下文由8个上下文组成;以及使用所确定的上下文对点偏移的一个或多个比特执行算术编码,其中所述点偏移是所述节点的点相对于所述节点的所述原点的第一轴坐标。

方面5B:根据方面1B至4B中的任一项所述的设备,其中,所述节点是第一节点,所述上下文是第一上下文,所述多个上下文是多个第一上下文,所述单个平面是第一单个平面,角度平面译码模式和方位角平面译码模式对于第二节点被禁用,并且所述一个或多个处理器还被配置为:确定等于所述第一轴的轴索引的上下文索引,而不管相邻节点的占用或所述节点的位置与具有所述第一轴的相同轴位置值的最近节点的位置之间的曼哈顿距离,并且不管使用缓冲器跟踪最近节点是否在译码平面模式标志和平面位置的过程中被使用,其中所述第一轴的所述轴位置值指示所述节点的第一轴坐标的14个最低有效位;以及使用由所述上下文索引指示的上下文对所述第一轴的平面标志执行算术编码,其中所述平面标志指示所述第二节点的子节点形成垂直于所述坐标系的所述第一轴的第二单个平面,并且由所述上下文索引指示的所述上下文在不同于所述多个第一上下文的多个第二上下文中。

方面6B:根据方面1B至5B中的任一项所述的设备,其中,所述一个或多个处理器还被配置为生成所述点云数据。

方面7B:根据方面6B所述的设备,其中所述一个或多个处理器被配置为,作为生成所述点云数据的一部分,基于来自LIDAR装置的信号生成所述点云数据。

方面8B:根据方面1B至7B中的任一项所述的设备,其中,该设备是移动电话、平板计算机、车辆或扩展现实设备中的一个。

方面9B:根据方面1B至8B中的任一项所述的设备,其中,该设备包括接口,所述接口被配置为传输经编码的点云数据。

方面10B:一种用于解码点云数据的设备,包括:存储器,用于存储所述点云数据;以及耦合到所述存储器并且在电路中实施的一个或多个处理器,所述一个或多个处理器被配置为:确定节点的被占用的子节点形成垂直于坐标系的第一轴的单个平面,其中所述第一轴是水平轴并且所述被占用的子节点包含由所述点云数据表示的点;从由8个上下文组成的多个上下文中确定所述节点的水平平面位置的上下文,其中所述水平平面位置指示垂直于所述坐标系的所述第一轴的所述单个平面的位置;以及使用所确定的上下文对指示所述水平平面位置的语法元素执行算术解码。

方面11B:根据方面10B所述的设备,其中所述一个或多个处理器被配置为,作为确定所述节点的所述水平平面位置的所述上下文的一部分:将第一轴位置确定为所述节点的原点的第一轴坐标与所述坐标系的原点的第一轴坐标之间的差;将第二轴位置确定为所述节点的所述原点的第二轴坐标与所述坐标系的所述原点的第二轴坐标之间的差;将第一角度确定为节点原点角度与激光角度之间的差,其中:所述节点原点角度是从所述坐标系的所述原点穿过所述节点的原点的直线相对于所述坐标系的所述第一轴的角度,并且所述激光角度是源自所述坐标系的所述原点的可应用激光相对于所述第一轴的角度,其中所述可应用激光是离所述节点最近的激光;将第二角度确定为节点中心角度和所述激光角度之间的差,其中所述节点中心角度是从所述坐标系的所述原点穿过所述节点的中心点的直线相对于所述坐标系的所述第一轴的角度;取决于所述第一角度和所述第二角度都是非负的或所述第一角度和所述第二角度都是负的,将方位角上下文值设置为2或0;将所述第一角度设置为所述第一角度的绝对值;将所述第二角度设置为所述第二角度的绝对值;基于所述第一角度大于所述第二角度:将所述方位角上下文值递增1;将临时值设置为所述第一角度;将所述第一角度设置为所述第二角度;以及将所述第二角度设置为所述临时值;基于所述第二角度大于移位值,将所述方位角上下文值递增4,其中所述移位值等于所述第一角度左移2;基于所述第一轴位置的绝对值小于或等于所述第二轴位置的绝对值,将第一轴方位角上下文值设置为上下文角度值;基于所述第一轴位置的所述绝对值大于所述第二轴位置的所述绝对值,将第二轴方位角上下文值设置为所述上下文角度值;基于所述第一轴方位角上下文值或所述第二轴方位角上下文值来确定所述上下文。

方面12B:根据方面10B和11B中的任一项所述的设备,其中,所述一个或多个处理器被配置为基于确定所述节点的被占用的子节点形成垂直于所述第一轴的平面,省略对所述节点的不在垂直于所述第一轴的平面中的子节点的解码。

方面13B:根据方面10B至12B中的任一项所述的设备,其中,所述上下文是第一上下文,所述多个上下文是多个第一上下文,并且所述一个或多个处理器还被配置为:将第一角度确定为节点原点角度与激光角度之间的差,其中:所述节点原点角度是从所述坐标系的原点穿过所述节点的原点的直线相对于所述坐标系的所述第一轴的角度,并且所述激光角度是源自所述坐标系的所述原点的可应用激光相对于所述第一轴的角度,其中所述可应用激光是离所述节点最近的激光;将第二角度确定为节点中心角度和所述激光角度之间的差,其中所述节点中心角度是从所述坐标系的所述原点穿过所述节点的中心点的直线相对于所述坐标系的所述第一轴的角度;根据所述第一角度和所述第二角度都是非负的或所述第一角度和所述第二角度都是负的,将方位角上下文值设置为2或0;将所述第一角度设置为所述第一角度的绝对值;将所述第二角度设置为所述第二角度的绝对值;基于所述第一角度大于所述第二角度:将所述方位角上下文值递增1;将临时值设置为所述第一角度;将所述第一角度设置为所述第二角度;以及将所述第二角度设置为所述临时值;基于所述第二角度大于移位值,将所述方位角上下文值递增4,其中所述移位值等于所述第一角度左移1;基于所述方位角上下文值从多个第二上下文中确定第二上下文,其中所述多个第二上下文由8个上下文组成;以及使用所确定的上下文对水平轴点偏移的一个或多个比特执行算术解码,其中所述点偏移是所述节点的点相对于所述节点的所述原点的第一轴坐标。

方面14B:根据方面13B所述的设备,其中,所述一个或多个处理器还被配置为重构所述点云数据,并且其中所述一个或多个处理器被配置为,作为重构所述点云数据的一部分,基于所述水平轴点偏移确定所述节点的所述点的位置。

方面15B:根据方面10B至14B中的任一项所述的设备,其中,所述节点是第一节点,所述上下文是第一上下文,所述多个上下文是多个第一上下文,所述单个平面是第一单个平面,角度平面译码模式和方位角平面译码模式对于第二节点被禁用,并且所述一个或多个处理器还被配置为:确定等于所述第一轴的轴索引的上下文索引,而不管相邻节点的占用或所述节点的位置与具有所述第一轴的相同轴位置值的最近节点的位置之间的曼哈顿距离,并且不管使用缓冲器跟踪最近节点是否在译码平面模式标志和平面位置的过程中被使用,所述第一轴的所述轴位置值指示所述节点的第一轴坐标的14个最低有效位;以及使用由所述上下文索引指示的上下文对所述第一轴的平面标志执行算术解码,其中所述平面标志指示所述第二节点的子节点形成垂直于所述坐标系的所述第一轴的第二单个平面,并且由所述上下文索引指示的所述上下文在不同于所述多个第一上下文的多个第二上下文中。

方面16B:根据方面10B至15B中任一项所述的设备,

其中,所述一个或多个处理器还被配置为:重构所述点云数据;以及执行以下操作中的一个或多个:基于重构的点云数据生成建筑物的内部的地图,基于所述重构的点云数据执行自主导航操作,或基于所述重构的点云数据生成计算机图形。

方面17B:根据方面10B至16B中的任一项所述的设备,其中,所述一个或多个处理器被配置为:基于所述重构的点云数据确定虚拟对象的位置;以及生成其中所述虚拟对象处于所确定的位置的扩展现实(XR)可视化。

方面18B:根据方面10B至17B中的任一项所述的设备,其中,所述设备是移动电话、平板计算机、车辆或扩展现实设备中的一个。

方面19B:根据方面10B至18B中的任一项所述的设备,还包括基于所述点云数据呈现影像的显示器。

方面20B:一种用于编码点云数据的方法,包括:确定节点的被占用的子节点形成垂直于坐标系的第一轴的单个平面,其中所述第一轴是水平轴,并且所述被占用的子节点包含由所述点云数据表示的点;确定所述节点的水平平面位置,其中所述水平平面位置指示垂直于所述坐标系的所述第一轴的所述单个平面的位置;从由8个上下文组成的多个上下文中确定所述节点的所述水平平面位置的上下文;以及使用所确定的上下文对指示所述水平平面位置的语法元素执行算术编码。

方面21B:根据方面20B所述的方法,其中,确定所述节点的所述水平平面位置的所述上下文包括:将第一轴位置确定为所述节点的原点的第一轴坐标与所述坐标系的原点的第一轴坐标之间的差;将第二轴位置确定为所述节点的所述原点的第二轴坐标与所述坐标系的所述原点的第二轴坐标之间的差;将第一角度确定为节点原点角度与激光角度之间的差,其中:所述节点原点角度是从所述坐标系的所述原点穿过所述节点的所述原点的直线相对于所述坐标系的所述第一轴的角度,并且所述激光角度是源自所述坐标系的所述原点的可应用激光相对于所述第一轴的角度,其中所述可应用激光是离所述节点最近的激光;将第二角度确定为节点中心角度和所述激光角度之间的差,其中所述节点中心角度是从所述坐标系的所述原点穿过所述节点的中心点的直线相对于所述坐标系的所述第一轴的角度;取决于所述第一角度和所述第二角度都是非负的或所述第一角度和所述第二角度都是负的,将方位角上下文值设置为2或0;将所述第一角度设置为所述第一角度的绝对值;将所述第二角度设置为所述第二角度的绝对值;基于所述第一角度大于所述第二角度:将所述方位角上下文值递增1;将临时值设置为所述第一角度;将所述第一角度设置为所述第二角度;以及将所述第二角度设置为所述临时值;基于所述第二角度大于移位值,将所述方位角上下文值递增4,其中所述移位值等于所述第一角度左移2;基于所述第一轴位置的绝对值小于或等于所述第二轴位置的绝对值,将第一轴方位角上下文值设置为上下文角度值;基于所述第一轴位置的所述绝对值大于所述第二轴位置的所述绝对值,将第二轴方位角上下文值设置为所述上下文角度值;以及基于所述第一轴方位角上下文值或所述第二轴方位角上下文值来确定所述上下文。

方面22B:根据方面20B和21B中的任一项所述的方法,其中,所述上下文是第一上下文,所述多个上下文是多个第一上下文,并且所述方法还包括:将第一角度确定为节点原点角度与激光角度之间的差,其中:所述节点原点角度是从所述坐标系的原点穿过所述节点的原点的直线相对于所述坐标系的所述第一轴的角度,并且所述激光角度是源自所述坐标系的所述原点的可应用激光相对于所述第一轴的角度,其中所述可应用激光是离所述节点最近的激光;将第二角度确定为节点中心角度和所述激光角度之间的差,其中所述节点中心角度是从所述坐标系的所述原点穿过所述节点的中心点的直线相对于所述坐标系的所述第一轴的角度;取决于所述第一角度和所述第二角度都是非负的或所述第一角度和所述第二角度都是负的,将上下文值设置为2或0;将所述第一角度设置为所述第一角度的绝对值;将所述第二角度设置为所述第二角度的绝对值;基于所述第一角度大于所述第二角度:将所述方位角上下文值递增1;将临时值设置为所述第一角度;将所述第一角度设置为所述第二角度;以及将所述第二角度设置为所述临时值;基于所述第二角度大于移位值,将所述方位角上下文值递增4,其中所述移位值等于所述第一角度左移1;基于所述方位角上下文值从多个第二上下文中确定第二上下文,其中所述多个第二上下文由8个上下文组成;以及使用所确定的上下文对点偏移的一个或多个比特执行算术编码,其中所述点偏移是所述节点的点相对于所述节点的所述原点的第一轴坐标。

方面23B:根据方面20B至22B中的任一项所述的方法,其中,所述节点是第一节点,所述上下文是第一上下文,所述多个上下文是多个第一上下文,所述单个平面是第一单个平面,角度平面译码模式和方位角平面译码模式对于第二节点被禁用,并且所述方法还包括:确定等于所述第一轴的轴索引的上下文索引,而不管相邻节点的占用或所述节点的位置与具有所述第一轴的相同轴位置值的最近节点的位置之间的曼哈顿距离,并且不管使用缓冲器跟踪最近节点是否在译码平面模式标志和平面位置的过程中被使用,其中所述第一轴的所述轴位置值指示所述节点的第一轴坐标的14个最低有效位;以及使用由所述上下文索引指示的上下文对所述第一轴的平面标志执行算术编码,其中所述平面标志指示所述第二节点的子节点形成垂直于所述坐标系的所述第一轴的第二单个平面,并且由所述上下文索引指示的所述上下文在不同于所述多个第一上下文的多个第二上下文中。

方面24B:一种用于解码点云数据的方法,包括:确定节点的被占用的子节点形成垂直于坐标系的第一轴的单个平面,其中所述第一轴是水平轴,并且所述被占用的子节点包含由所述点云数据表示的点;从由8个上下文组成的多个上下文中确定所述节点的水平平面位置的上下文,其中所述水平平面位置指示垂直于所述坐标系的所述第一轴的所述单个平面的位置;以及使用所确定的上下文对指示所述水平平面位置的语法元素执行算术解码。

方面25B:根据方面24B所述的方法,其中,确定所述节点的所述水平平面位置的所述上下文包括:将第一轴位置确定为所述节点的原点的第一轴坐标与所述坐标系的原点的第一轴坐标之间的差;将第二轴位置确定为所述节点的所述原点的第二轴坐标与所述坐标系的所述原点的第二轴坐标之间的差;将第一角度确定为节点原点角度与激光角度之间的差,其中:所述节点原点角度是从所述坐标系的所述原点穿过所述节点的所述原点的直线相对于所述坐标系的所述第一轴的角度,并且所述激光角度是源自所述坐标系的所述原点的可应用激光相对于所述第一轴的角度,其中所述可应用激光是离所述节点最近的激光;将第二角度确定为节点中心角度和所述激光角度之间的差,其中所述节点中心角度是从所述坐标系的所述原点穿过所述节点的中心点的直线相对于所述坐标系的所述第一轴的角度;取决于所述第一角度和所述第二角度都是非负的或所述第一角度和所述第二角度都是负的,将方位角上下文值设置为2或0;将所述第一角度设置为所述第一角度的绝对值;将所述第二角度设置为所述第二角度的绝对值;基于所述第一角度大于所述第二角度:将所述方位角上下文值递增1;将临时值设置为所述第一角度;将所述第一角度设置为所述第二角度;以及将所述第二角度设置为所述临时值;基于所述第二角度大于移位值,将所述方位角上下文值递增4,其中所述移位值等于所述第一角度左移2;基于所述第一轴位置的绝对值小于或等于所述第二轴位置的绝对值,将第一轴方位角上下文值设置为上下文角度值;基于所述第一轴位置的所述绝对值大于所述第二轴位置的所述绝对值,将第二轴方位角上下文值设置为所述上下文角度值;基于所述第一轴方位角上下文值或所述第二轴方位角上下文值来确定所述上下文。

方面26B:根据方面24B和25B中的任一项所述的方法,还包括,基于确定所述节点的所述被占用的子节点形成垂直于所述第一轴的平面,省略对所述节点的不在垂直于所述第一轴的平面中的子节点的解码。

方面27B:根据方面24B至26B中的任一项所述的方法,其中,所述上下文是第一上下文,所述多个上下文是多个第一上下文,并且所述方法还包括:将第一角度确定为节点原点角度与激光角度之间的差,其中:所述节点原点角度是从所述坐标系的原点穿过所述节点的原点的直线相对于所述坐标系的所述第一轴的角度,并且所述激光角度是源自所述坐标系的所述原点的可应用激光相对于所述第一轴的角度,其中所述可应用激光是离所述节点最近的激光;将第二角度确定为节点中心角度和所述激光角度之间的差,其中所述节点中心角度是从所述坐标系的所述原点穿过所述节点的中心点的直线相对于所述坐标系的所述第一轴的角度;取决于所述第一角度和所述第二角度都是非负的或所述第一角度和所述第二角度都是负的,将方位角上下文值设置为2或0;将所述第一角度设置为所述第一角度的绝对值;将所述第二角度设置为所述第二角度的绝对值;基于所述第一角度大于所述第二角度:将所述方位角上下文值递增1;将临时值设置为所述第一角度;将所述第一角度设置为所述第二角度;以及将所述第二角度设置为所述临时值;基于所述第二角度大于移位值,将所述方位角上下文值递增4,其中所述移位值等于所述第一角度左移1;基于所述方位角上下文值从多个第二上下文中确定第二上下文,其中所述多个第二上下文由8个上下文组成;以及使用所确定的上下文对水平轴点偏移的一个或多个比特执行算术解码,其中所述点偏移是所述节点的点相对于所述节点的所述原点的第一轴坐标。

方面28B:根据方面27B所述的方法,还包括重构所述点云数据,其中重构所述点云数据包括基于所述水平轴点偏移确定所述节点的所述点的位置。

方面29B:根据方面24B至28B中的任一项的方法,其中,所述节点是第一节点,所述上下文是第一上下文,所述多个上下文是多个第一上下文,所述单个平面是第一单个平面,角度平面译码模式和方位角平面译码模式对于第二节点被禁用,并且所述方法还包括:确定等于所述第一轴的轴索引的上下文索引,而不管相邻节点的占用或所述节点的位置与具有所述第一轴的相同轴位置值的最近节点的位置之间的曼哈顿距离,并且不管使用缓冲器跟踪最近节点是否在译码平面模式标志和平面位置的过程中被使用,所述第一轴的所述轴位置值指示所述节点的第一轴坐标的14个最低有效位;以及使用由所述上下文索引指示的上下文对所述第一轴的平面标志执行算术解码,其中所述平面标志指示所述第二节点的子节点形成垂直于所述坐标系的所述第一轴的第二单个平面,并且由所述上下文索引指示的所述上下文在不同于所述多个第一上下文的多个第二上下文中。

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

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

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

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

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

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

技术分类

06120115628526