CN117999580A - 在g-pcc中使用用于帧间预测的直接模式对点云数据进行译码 - Google Patents

在g-pcc中使用用于帧间预测的直接模式对点云数据进行译码 Download PDF

Info

Publication number
CN117999580A
CN117999580A CN202280063734.7A CN202280063734A CN117999580A CN 117999580 A CN117999580 A CN 117999580A CN 202280063734 A CN202280063734 A CN 202280063734A CN 117999580 A CN117999580 A CN 117999580A
Authority
CN
China
Prior art keywords
node
mode
point
determining
inter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280063734.7A
Other languages
English (en)
Inventor
L·法姆范
G·范德奥韦拉
A·K·拉马苏布拉莫尼安
M·卡尔切维茨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/933,300 external-priority patent/US20230099908A1/en
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN117999580A publication Critical patent/CN117999580A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一种用于对点云数据进行译码的示例设备包括:存储器,该存储器被配置为存储点云数据;和一个或多个处理器,该一个或多个处理器在电路中实现并且被配置为:确定以下各项中的至少一项:1)该点云数据的八叉树的节点不是可帧间预测的,或者2)针对该节点启用角模式;响应于确定以下各项中的至少一项而确定用于节点的推断直接译码模式(IDCM)模式:1)该节点不是可帧间预测的,或者2)针对该节点启用角模式;以及使用所确定的IDCM模式对该节点的占用数据进行译码。

Description

在G-PCC中使用用于帧间预测的直接模式对点云数据进行 译码
本申请要求2022年9月19日提交的美国专利申请17/933,300号以及2021年9月27日提交的美国临时申请63/261,722号的优先权,这些申请中的每一者的全部内容以引用方式并入本文。2022年9月19日提交的美国专利申请17/933,300号要求2021年9月27日提交的美国临时申请63/261,722号的权益。
技术领域
本公开涉及点云编码和解码。
背景技术
点云是三维空间中的点的集合。这些点可以对应于三维空间内的对象上的点。因此,点云可以用于表示三维空间的物理内容。点云可以在各种各样的情况下具有实用性。例如,可以在自主车辆的上下文中使用点云来表示道路上的对象的位置。在另一示例中,可以在表示环境的物理内容的上下文中使用点云,以便在增强现实(AR)或混合现实(MR)应用中定位虚拟对象。点云压缩是用于对点云进行编码和解码的过程。对点云进行编码可以减少存储和传输点云所需的数据量。
发明内容
一般来讲,本公开描述用于使用直接模式对点云数据进行译码(例如,用于对几何点云压缩(G-PCC)的帧间预测译码)的技术。具体地,本公开描述用于直接对用于节点的占用数据进行译码(例如,直接对八叉树的节点的点的位置进行译码、将节点的点的位置译码为与针对节点的参考节点中的点的位置相同,或根据相对于参考节点中的点的位置的位置偏移(或残差)对节点的点的位置进行译码)的技术。译码模式可以是推断直接译码模式(IDCM)。G-PCC译码器可以在节点中的至少一个节点不是可帧间预测的或针对节点启用角模式时确定针对节点启用IDCM模式。因此,G-PCC译码器可以确定针对节点禁用IDCM,该节点是可帧间预测的并且未针对该节点启用角模式。
在一个示例中,一种对点云数据进行译码的方法包括:确定以下各项中的至少一项:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对该节点启用角模式;响应于确定以下各项中的至少一项而确定用于节点的推断直接译码模式(IDCM)模式:1)该节点不是可帧间预测的,或者2)针对该节点启用角模式;以及使用所确定的IDCM模式对该节点的占用数据进行译码。
在另一示例中,一种用于对点云数据进行译码的设备包括:存储器,该存储器被配置为存储点云数据;和一个或多个处理器,该一个或多个处理器在电路中实现并且被配置为:确定以下各项中的至少一项:1)该点云数据的八叉树的节点不是可帧间预测的,或者2)针对该节点启用角模式;响应于确定以下各项中的至少一项而确定用于节点的推断直接译码模式(IDCM)模式:1)该节点不是可帧间预测的,或者2)针对该节点启用角模式;并且使用所确定的IDCM模式对该节点的占用数据进行译码。
在另一示例中,一种其上存储有指令的计算机可读存储介质,该指令在被执行时使处理器:确定以下各项中的至少一项:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对该节点启用角模式;响应于确定以下各项中的至少一项而确定用于节点的推断直接译码模式(IDCM)模式:1)该节点不是可帧间预测的,或者2)针对该节点启用角模式;并且使用所确定的IDCM模式对该节点的占用数据进行译码。
在另一示例中,一种用于对点云数据进行译码的设备包括:用于确定以下各项中的至少一项的构件:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对该节点启用角模式;用于响应于确定以下各项中的该至少一项而确定用于该节点的推断直接译码模式(IDCM)模式的构件:1)该节点不是可帧间预测的,或者2)针对该节点启用角模式;以及用于使用所确定的IDCM模式对该节点的占用数据进行译码的构件。
在附图和以下描述中阐述一个或多个示例的细节。根据描述、附图以及权利要求书,其它特征、目的和优点将是显而易见的。
附图说明
图1是示出可以执行本公开内容的技术的示例编码和解码***的框图。
图2是示出根据本公开的一种或多种技术的示例几何点云压缩(G-PCC)编码器的框图。
图3是示出根据本公开的一种或多种技术的示例G-PCC解码器的框图。
图4是描绘根据本公开的一种或多种技术的用于执行针对G-PCC的基于运动的帧间预测的示例过程的流程图。
图5是示出根据本公开的一种或多种技术的用于估计本地节点运动矢量的示例过程的流程图。
图6是示出根据本公开的一种或多种技术的在G-PCC中执行针对帧间预测的占用比较的示例的概念图。
图7是示出根据本公开的一种或多种技术的用于G-PCC的平面译码模式(PCM)的概念图。
图8是示出根据本公开的一种或多种技术的扫描三维空间中的点的激光器封装(诸如LIDAR传感器或包括一个或多个激光器的另一***)的概念图。
图9是示出可以与本公开的一种或多种技术一起使用的示例测距***的概念图。
图10是示出可以使用本公开的一种或多种技术的示例基于车辆的场景的概念图。
图11是示出可以使用本公开的一种或多种技术的示例扩展现实***的概念图。
图12是示出可以使用本公开的一种或多种技术的示例移动设备***的概念图。
图13是示出根据本公开的技术的对点云数据进行编码的示例方法的流程图。
具体实施方式
一般来讲,本公开描述了与点云译码(编码和/或解码)相关的技术。点云译码通常包括将三维空间递归地划分成节点,以及对指示该节点是否由一个或多个点占用的数据进行译码。还可以针对点对属性数据进行译码。当对节点的占用数据(即,数据是否由至少一个点占用)进行译码时,可以使用各种模式,诸如帧内预测、帧间预测、角模式或推断直接译码模式(IDCM)。本公开认识到,使用IDCM对节点的占用进行译码可能涉及相对较高的开销位成本。因此,本公开描述了用于将IDCM的使用限制在IDCM适当的时间的技术。例如,如果节点是可帧间预测的,则可以使用帧间预测更高效地对节点的占用进行译码。作为另一示例,本公开认识到,当针对节点启用角模式时,IDCM数据的开销显著降低。因此,本公开描述了用于在节点不是可帧间预测的时或在针对节点启用角模式时启用IDCM的技术。当针对节点启用IDCM时,可以使用IDCM对用于该节点的占用数据进行译码。
图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编码器对帧的数据进行编码。源设备102的数据源104可包括点云捕获设备诸如多种相机或传感器中的任一者(例如,3D扫描仪或光探测和测距(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可被配置为根据其它无线标准诸如IEEE 802.11规范、IEEE802.15规范(例如,ZigBeeTM)、BluetoothTM标准等来传输数据诸如所编码的数据。在一些示例中,源设备102和/或目的地设备116可以包括相应的片上***(SoC)器件。例如,源设备102可包括用于执行归属于G-PCC编码器200和/或输出接口108的功能的SoC器件,并且目的地设备116可包括用于执行归属于G-PCC解码器300和/或输入接口122的功能的SoC器件。
本公开的技术可适用于支持多种应用中的任一种应用的编码和解码,诸如自主车辆之间的通信、扫描仪、相机、传感器和处理设备诸如本地或远程服务器之间的通信、地理制图或其它应用。
目的地设备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)正在研究具有显著超过当前办法的压缩能力的点云译码技术标准化的潜在需求,并且将致力于创建该标准。该小组在称为三维图形团队(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 w19088,比利时布鲁塞尔,2020年1月)中获得,并且编解码器的说明书可在G-PCC编解码器说明书v6(ISO/IEC JTC1/SC29/WG11 w19091,比利时布鲁塞尔,2020年1月)中获得。
点云包含3D空间中的点集合,并且可以具有与这些点相关联的属性。属性可以是诸如R、G、B或Y、Cb、Cr的颜色信息,或反射率信息,或其他属性。点云可由各种相机或传感器(诸如LIDAR传感器和3D扫描仪)来捕获,并且也可以是计算机生成的。点云数据用于多种应用,包括但不限于建筑(建模)、图形(用于可视化和动画的3D模型)和汽车行业(用于帮助导航的LIDAR传感器)。
点云数据所占用的3D空间可由虚拟边界框来包围。点在边界框中的位置可通过一定精度表示;因此,一个或多个点的位置可基于该精度来量化。在最小级别,边界框被拆分为体素,体素是由单位立方体所表示的最小空间单位。边界框中的体素可与零个、一个或不止一个点相关联。边界框可被拆分为多个立方体/长方体区域,这些区域可被称为瓦片。每个瓦片可被译码为一个或多个切片。将边界框划分为切片和瓦片可以基于每个分区中的点的数目,或者基于其他考虑(例如,特定区域可被译码为瓦片)。可以使用类似于视频编解码器中的拆分决策来进一步划分切片区域。
图2提供了G-PCC编码器200的概览。图3提供了G-PCC解码器300的概览。所示模块是逻辑的,并且不一定与G-PCC编解码器的参考实现中的所实现代码(即由ISO/IEC MPEG(JTC 1/SC 29/WG 11)研究的TMC13测试模型软件)一一对应。在G-PCC编码器200和G-PCC解码器300两者中,首先对点云位置进行译码。属性译码取决于所解码的几何。
对于类别3数据,所压缩的几何通常被表示为从根一直到个体体素的叶级的八叉树。对于类别1数据,所压缩的几何通常由经修剪的八叉树(即,从根到大于体素的块的叶级的八叉树)加上近似经修剪的八叉树的每个叶内表面的模型来表示。以此方式,类别1数据和类别3数据共享八叉树译码机制,而类别1数据可另外用表面模型来近似每个叶内的体素。所使用的表面模型是每块包括1-10个三角形的三角测量,从而形成三角形汤。因此,类别1几何编解码器被称为Trisoup几何编解码器,而类别3几何编解码器被称为八叉树几何编解码器。
在八叉树的每个节点处,为一个或多个其子节点(最多达八个节点)发信号通知占用(当未推断时)。指定了多个邻域,包括(a)与当前八叉树节点共用面的节点,(b)与当前八叉树节点共用面、边或顶点的节点等。在每个邻域内,可使用节点和/或其子节点的占用来预测当前节点或其子节点的占用。对于在八叉树的某些节点中稀疏填充的点,编解码器还支持直接译码模式,在该直接译码模式中,直接对点的3D位置进行编码。可发信号通知标志以指示直接模式被发信号通知。在最低级别处,也可对与八叉树节点/叶节点相关联的点的数目进行译码。
一旦对几何译码,则对与该几何点相对应的属性进行译码。当存在对应于一个所重构/所解码的几何点的多个属性点时,可以推导出表示所重构点的属性值。
在G-PCC中存在三种属性译码方法:区域自适应分层变换(RAHT)译码、基于插值的分层最近邻预测(预测变换)和带有更新/提升步骤(提升变换)的基于插值的分层最近邻预测。RAHT和提升通常用于类别1数据,而预测通常用于类别3数据。然而,任一种方法都可用于任何数据,并且就像G-PCC中的几何编解码器一样,用于对点云进行译码的属性译码方法在比特流中指定。
对属性的编码可以按细节级别(LOD)进行,其中通过每个细节级别可以获得点云属性的更精细的表示。可基于距相邻节点的距离度量或基于取样距离来指定每个细节级别。
在G-PCC编码器200处,作为用于属性的译码方法的输出所获得的残差被量化。可以通过从基于当前点的邻域中的点并且基于先前编码的点的属性值来推导的预测中减去属性值来获得残差。可以使用上下文自适应算术编码来对经量化的残余进行编码。
G-PCC还包括角译码模型。角译码模式可以使用例如典型LIDAR传感器的传感器特性来提升平面模式的译码效率。角译码模式可以任选地与平面模式一起使用,并且可以通过采用关于典型LIDAR传感器中的感测激光束的位置和角度的数据来改进对竖直(z)平面位置语法元素的译码。此外,可以任选地使用角译码模式来改进推断直接译码模式(IDCM)下对竖直z位置位的译码。角译码模式可以使用对传感器数据参数的简化上下文推导和高效高级别信令(HLS)译码。
方位角译码模式类似于角模式,并且将角模式扩展到对平面模式的(x)平面位置语法元素和(y)平面位置语法元素的译码,并且改进IDCM下对x位置位或y位置位的译码。方位角译码模式可以使用减少数量的上下文。
与平面译码模式相关的规范总结如下:
8.2.3.1用于平面译码模式的节点的资格
拆分和重定位
对占用平面的显式译码以概率为条件。
具有元素PlanarRate[k](k=0...2)的数组PlanarRate是节点的占用形成垂直于第k个轴的单个平面的概率的估计。
变量LocalDensity是节点中所占用子节点的平均数量的估计。
变量NumNodesUntilPlanarUpdate对要在更新PlanarRate和LocalDensity之前解析的节点的数量进行计数。
在开始解析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-1
-父节点的占用信息用于沿每个轴确定单个所占用平面的存在,并且更新对应的平面概率估计PlanarRate[k]。
在开始解析每个geometry_octree_node语法结构时,针对每个轴确定当前节点是否有资格发信号通知平面信息。此过程的输出是具有元素PlanarEligible[k](k=0...2)的数组PlanarEligible。
首先,根据下表18,使用PlanarRate来确定三个平面的从最可能到最不可能的次序planeOrder[k]。
然后,如下设置PlanarEligible:
表18-根据planarRate[k]确定planeOrder[k]的值
G-PCC编码器200和G-PCC解码器300可以根据以下语义对指示节点是否为平面的针对语法元素(诸如is_planar_flag语法元素)的值进行译码:is_planar_flag[axisIdx]等于1指示当前节点的子节点的位置形成垂直于第axisIdx个轴的单个平面。当存在时,等于0的is_planar_flag[axisIdx]指示当前节点的子节点的位置占用垂直于第axisIdx个轴的两个平面。G-PCC编码器200和G-PCC解码器300可以使用等于axisIdx的上下文索引集对is_planar_flag进行译码,如2020年11月远程电信会议G-PCC DIS,ISO/IEC JTC1/SC29/WG11 w55637中所指示。
关于沿轴跟踪节点的G-PCC标准规范再现如下:
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指示具有等于axisPos的第axisIdx个位置分量的最近解码的节点在垂直于第axisIdx个轴的平面中是否是平面的。
具有值PlanarPrevPos[axisIdx][axisPos]的数组PlanarPrevPos存储具有等于axisPos的第axisIdx个位置分量的最近解码的节点的最大位置分量。
具有值PlanarPlane[axisIdx][axisPos]的数组PlanarPlane指示针对具有等于axisPos的第axisIdx个位置分量的最近解码的节点的plane_position[axisIdx]的值。
在开始每个几何树级别时,数组PlanarPrevPos和IsPlanarNode的每个元素被初始化为0。
在对具有参数childIdx和axisIdx的每个geometry_planar_mode_data语法结构进行解码之后,如下更新数组PlanarPrevPos、PlanarPlane和IsPlanarNode:
-如下推导表示沿第axisIdx个轴的位置的变量axisPos:
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个轴与当前节点都相邻的节点。其推导如下:
neighOccupied=(NeighbourPattern>>2×axisIdx)&3
adjPlaneCtxInc=neighOccupied==3?0:neighOccupied
if(axisIdx==0&&neighOccupied==3)
adjPlaneCtxInc=((neighOccupied&1)<<1)|(neighOccupied>>1)
当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
如下获得确定用于对plane_position[0]的算术译码的planePosIdxAngularS和用于对plane_position[1]的算术译码的planePosIdxAngularT。
当geometry_angular_enabled_flag等于0时,planePosIdxAzimuthalS和planePosIdxAzimuthalT两者的值被设置为等于planePosIdx。否则,以下内容适用:
如XREF中所描述而执行确定用于对plane_position[2]的算术译码的contextAngular。
8.2.3.5确定用于对竖直平面位置的译码的planePosIdxAngular
如下获得确定用于对plane_position[2]的算术译码的planePosIdxAngular。
当geometry_angular_enabled_flag等于0时,planePosIdxAngular的值被设置为等于planePosIdx。否则,以下内容适用:
如章节8.2.5.3中所描述而执行确定用于对plane_position[2]的算术译码的contextAngular。
下面总结用于G-PCC的角模式语法:
下面讨论携带LIDAR激光传感器信息的特定语法元素,该LIDAR激光传感器信息可以为角译码模式提供译码效率益处。如下指定特定语法元素的语义:
geometry_planar_enabled_flag等于1指示平面译码模式被激活。geometry_planar_enabled_flag等于0指示平面译码模式未被激活。当不存在时,geometry_planar_enabled_flag被推断为0。
geom_planar_th[i](i在范围0...2内)指定沿用于平面译码模式的第i个最可能方向的针对平面译码模式的激活阈值的值以使平面译码模式是高效的。
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_angular_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_minus11和geom_angular_radius_scale_log2指定在转换为笛卡尔坐标期间用于缩放使用球面坐标系译码的位置的因子。
geom_angular_azimuth_step_minus1加1指定方位角的单位变化。角预测树译码中使用的差分预测残差可以被部分地表示为geom_angular_azimuth_geo_minus1加1的倍数。geom_angular_azimuth_step_minus1的值应当小于(1<<(geom_angular_azimuth_scale_log2_minus11+12))。
number_lasers_minus1加1指定用于角译码模式的激光器的数量。
laser_angle_init和laser_angle_diff[i](i=0...number_lasers_minus1)指定第i个激光器相对于由第一译码轴和第二译码轴限定的水平平面的仰角的正切。
如下推导数组LaserAngle[i](i=0...number_lasers_minus1):
比特流一致性的要求是LaserAngle[i](i=1...number_lasers_minus1)的值应当大于或等于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_lasers_minus1):
比特流一致性的要求是LaserPhiPerTurn[i](i=0...number_lasers_minus1)的值不应为0。
如下推导数组DeltaPhi[i]和InvDeltaPhi[i](i=0...number_lasers_minus1):
planar_buffer_disabled_flag等于1指示使用缓冲器跟踪最近节点未在平面模式下对平面模式标志和平面位置进行译码的过程中使用。planar_buffer_disabled_flag等于0指示使用缓冲器跟踪最近节点被使用。当不存在时,planar_buffer_disabled_flag被推断为!geometry_planar_enabled_flag。
表2.几何参数集语法。使用<++和++>标签突出显示角模式语法元素
/>
/>
/>
平面模式和直接模式的数据语法分别包括在表3和表4中。
表3.几何八叉树模式数据语法
/>
表4.直接模式数据语法
/>
8.2.4.1针对节点的角资格的推导过程
如果geometry_angular_enabled_flag等于0,则angular_eligible被设置为等于0。
否则,以下内容适用:
如下推导指定激光器之间的最小角距离的变量deltaAngle:
最后,如下推导angular_eligible:
midNodeS=1<<(Max(1,ChildNodeSizeLog2[0])-1)
8.2.4.2与节点相关联的激光索引laserIndex的推导过程
如果角资格angular_eligible等于0,则laserIndex索引被设置为预设值UNKNOWN_LASER。
否则,如果角资格angle_eligible等于1,则以下内容作为在8.2.5.1中描述的过程的继续而适用。
首先,如下确定当前节点距激光雷达的径向距离的倒数rInv:
r2=sLidar×sLidar+tLidar×tLidar
rInv=IntRecipSqrt(r2)
然后,如下确定角度theta32:
vLidar=((vNchild-GeomAngularOrigin[2]+midNodeT)<<1)-1
theta=vLidar×rInv
theta32=theta>=0?theta>>15:-((-theta)>>15)
最后,基于父节点Parent,如下确定角资格和相关联的激光器。
/>
8.2.4.3用于平面译码模式的上下文contextAzimuthalS和contextAzimuthalT的 推导过程
以下内容作为8.2.5.2中描述的过程的继续而适用。
首先,根据相对于角原点的节点位置对两个角进行解码
sPos=sNchild-GeomAngularOrigin[0]
tPos=tNchild-GeomAngularOrigin[1]
phiNode=IntAtan2(tPos+midNodeT,sPos+midNodeS)
phiNode0=IntAtan2(tPos,sPos)
其次,从数组phiBuffer获得方位角预测器
predPhi=phiBuffer[laserIndex]
if(predPhi==0x80000000)
predPhi=phiNode
如下初始化两个方位角上下文
contextAzimuthalS=-1
contextAzimuthalT=-1
然后,如果预测器predPhi不等于0x80000000,则以下内容适用于细化两个方位角上下文
/>
8.2.4.4用于平面译码模式的上下文contextAngular的推导过程
如果激光索引laserIndex等于UNKNOWN_LASER,则contextAngular被设置为预设值UNKNOWN_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<<ChildNodeSizeLog2[2])>>20
thetaLaserDeltaTop=thetaLaserDelta-vShift
thetaLaserDeltaBot=thetaLaserDelta+vShift
然后,根据这两个角差推出角上下文。
contextAngular=thetaLaserDelta<0
if(thetaLaserDeltaTop>=0||thetaLaserDeltaBot<0)
contextAngular+=2
当树内量化和角模式被联合启用时,有效节点大小、点位置和偏移中的一者或多者的缩放版本可以用于针对平面模式的上下文推导,以确保以相同比例使用位置/偏移/节点大小和角原点;例如,这在激光索引的正确推导和上下文推导中可能是有用的。不使用缩放值可能导致对激光索引或上下文的不正确推导。
G-PCC编码器200和G-PCC解码器300可以被配置为使用推断直接译码模式(IDCM)对数据进行译码。与IDCM模式相关的语法可以包括以下内容:
inferred_direct_coding_mode大于0指示direct_mode_flag可能存在于几何节点语法中。inferred_direct_coding_mode等于0指示direct_mode_flag不存在于几何节点语法中。
joint_2point_idcm_enabled_flag等于1指示对两个点的联合译码在直接译码模式下被激活。joint_2point_idcm_enabled_flag等于0指示对两个点的联合译码未被激活。
geom_idcm_rate_minus1指定节点可以有资格进行直接译码的速率。当不存在时,geom_idcm_rate_minus1被推断为31。
如下推导数组IdcmEnableMask:
direct_point_cnt_eq2_flag等于1指定当前节点包含表示两个译码点的残差的两个point_offset值。direct_point_cnt_eq2_flag等于0指定当前节点包含表示复制零次或更多次的单个点位置的残差的单个point_offset值。
dup_point_cnt_gt0_flag、dup_point_cnt_gt1_flag和
dup_point_cnt_minus2一起指定单个point_offset值重复的次数,以便表示在重构的点云中具有相同位置的多个点。不存在的dup_point_cnt_gt0_flag、dup_point_cnt_gt1_flag或dup_point_cnt_minus2中的任一者被推断为0。
如下推导表示点重复次数的变量DirectDupPointCnt:
DirectDupPointCnt=
dup_point_cnt_gt0_flag+dup_point_cnt_gt1_flag+dup_point_cnt_minus2
具有元素PointOffset[i][k](i=0...NumDirectPoints-1并且k=0...2)的数组PointOffset表示第i个点的第k个维度相对于当前节点的全分辨率位置的位置。PointOffset[i][k]由EffectiveNodeSizeLog2[k]个位组成,并且如下推导。
变量NodeSizeLog2Rem[k]指示独立于i而仍待针对PointOffset[i][k]推导的比特数。NodeSizeLog2Rem和数组PointOffset的初始化针对i的每个值由以下执行
NodeSizeLog2Rem[k]=EffectiveNodeSizeLog2[k]
for(k=0;k<3;k++)
PointOffset[i][k]=0
如果is_planar_flag[k]等于1,则从plane_position[k]推导PointOffset[i][k]的最高有效位:
/>
same_bit[k][j]等于1指定PointOffset[0][k]和PointOffset[1][k]的相应第j个位相等。same_bit[k][j]等于0指定这两个第j个位不相等。
value_bit[k][j]指示PointOffset[0][k]的第j个位的值。当value_bit[k][j]不存在时,其值被推断为0。
变量EligTwoPoints[k]等于1指示节点所包含的点的第k个分量有资格进行对两个点的联合译码。EligTwoPoints[k]等于0指示节点所包含的点的第k个分量没有资格进行对两个点的联合译码。
变量samePrecComp[k]等于1指示节点所包含的两个点的分量0到k-1相等。否则,samePrecComp[k]等于0指示两个点的分量0到k-1中的一者不同。将samePrecComp[k]初始化为1。
for(k=0;k<3;k++)
samePrecComp[k]=1
如果对两个点的联合译码被激活、如果节点中存在两个点并且如果第k个分量有资格进行联合译码,则针对此分量执行联合两点译码。
point_offset[i][k][j]是当前节点的第i个点的相应s、t和v坐标相对于当前节点的原点的第k个分量的第j个位。
如下设置每个点偏移的NodeSizeLog2Rem[k]剩余位:
for(k=0;k<3;k++)
for(j=NodeSizeLog2Rem[k]-1;j>0;j--)
PointOffset[i][k]=(PointOffset[i][k]<<1)+point_offset[i][k][j]
laser_residual_abs_gt0_flag[ptIdx]、laser_residual_sign[ptIdx]、laser_residual_abs_gt1_flag[ptIdx]、laser_residual_abs_gt2_flag[ptIdx]以及laser_residual_abs_minus3[ptIdx]一起指定与在geometry_angular_enabled_flag等于1时使用推断直接译码模式的当前节点的第ptIdx个点相关联的残差激光索引值。不存在的laser_residual_abs_gt0_flag[ptIdx]、laser_residual_sign[ptIdx]、laser_residual_abs_gt1_flag[ptIdx]、laser_residual_abs_gt2_flag[ptIdx]以及laser_residual_minus3[ptIdx]中的任一者被推断为0。
G-PCC解码器300可以被配置为如下解析与IDCM模式相关的语法元素并将其逆二值化:
10.8推断直接译码模式解析过程
10.8.1一般过程
在子条款9.8.2到9.8.5中描述用于点索引i、分量索引k和位索引j的语法元素same_bit[k][j]、value_bit[k][j]和point_offset[i][k][j]的解析和逆二值化。
在direct_point_cnt_eq2_flag值为0的情况下,该过程的输出是属于当前节点的一个点的偏移,或者在direct_point_cnt_eq2_flag值为1的情况下,该过程的输出是属于当前节点的两个点的偏移。当存在时,这些偏移对于第一点是PointOffset[0][k],并且对于第二点是PointOffset[1][k]。
每个偏移PointOffset[i][k]由针对每个分量k和每个点i从最高有效位解码到最低有效位的EffectiveNodeSizeLog2[k]个位组成。为此,IDCM过程利用以下变量
-仍待针对分量k的偏移而解码的比特数NodeSizeLog2Rem[k],独立于点索引
-第i个点的第k个分量的部分解码partialOffset[i][k]
在该过程中的任何步骤处,partialOffset[i][k]的值都表示PointOffset[i][k]的EffectiveNodeSizeLog2[k]-NodeSizeLog2Rem[k]个最高有效位。在该过程期间,一个接一个地确定partialOffset个位,同时NodeSizeLog2Rem[k]针对每个所确定的位减少一,以达到NodeSizeLog2Rem[k]等于0并且partialOffset[i][k]等于PointOffset[i][k]的最终状态。
IDCM过程在以下次序和条件下通过子条款9.8.2到9.8.5进行
-用于过程变量的初始化以及通过平面模式推断点偏移的最高有效位的子条款9.8.2
-然后,如果对两个点的联合译码被激活(joint_2point_idcm_enabled_flag等于1)并且在当前节点中存在两个点(direct_point_cnt_eq2_flag等于1),则子条款9.8.3
-然后,如果角模式被激活(geometry_angular_enabled_flag等于1),则子条款9.8.4,否则(geometry_angular_enabled_flag等于0)子条款
10.8.2初始化和平面推断
对于所有分量k和点i,通过以下使剩余位和部分偏移的数量初始化
如果可用(is_planar_flag[k]等于1),则如下通过平面模式推断点偏移的最高有效位
在角译码模式被激活的情况下,使用当前节点在角译码模式的处理中使用的坐标中的水平位置来确定指示允许对S或T分量中的哪一者进行旁路译码的变量byPassSorT
10.8.3对两个点的偏移的联合解码
此章节中的过程仅在joint_2point_idcm_enabled_flag等于1并且direct_point_cnt_eq2_flag等于1时适用。
首先,通过以下使指示两个点的第k个分量是否有资格进行联合译码的EligTwoPoints[k]的值初始化
for(k=0;k<3;k++)
EligTwoPoints[k]=!geometry_angular_enabled_flag
然后,在角译码模式被激活的情况下,使用变量byPassSorT进一步确定资格
指示节点所包含的两个点的分量0到k-1相等的数组samePrecComp[k]被初始化为
for(k=0;k<3;k++)
samePrecComp[k]=1
然后以递增次序将联合解码过程应用于有资格的分量
10.8.4对点偏移的角和方位角解码
10.8.4.1一般
此章节中的过程仅在geometry_angular_enabled_flag等于1时适用。此过程应用在下面的子章节中描述的子过程。子章节9.8.4.2被应用一次,然后子章节9.8.4.3到9.8.4.6被应用于属于当前节点的每个点i。
10.8.4.2估计与当前节点相关联的激光索引
基于(在对属于当前节点的第一点的定位的平面推断和联合解码之后)对该定位的最佳知识,已探测该点的激光的索引的估计laserIndexEstimate。
首先,通过以下获得第一点的最佳已知3D bestKnownPos定位
bestKnownPos[0]=sN<<EffectiveNodeSizeLog2[0]
bestKnownPos[1]=tN<<EffectiveNodeSizeLog2[1]
bestKnownPos[2]=vN<<EffectiveNodeSizeLog2[2]
bestKnownPos[0]+=partialOffset[0][0]<<EffectiveNodeSizeLog2[0]-NodeSizeLog2Rem[0]
bestKnownPos[1]+=partialOffset[0][1]<<EffectiveNodeSizeLog2[1]-NodeSizeLog2Rem[1]
bestKnownPos[2]+=partialOffset[0][2]<<EffectiveNodeSizeLog2[2]-NodeSizeLog2Rem[2]
其次,通过以下推出在角译码模式的处理中使用的坐标中的最佳已知定位的位置bestKnownPos2Lidar[0]
第三,通过以下确定与此位置相关联的角值bestKnownAngle
sPoint=bestKnownPos2Lidar[0]<<8
tPoint=bestKnownPos2Lidar[1]<<8
r2=sPoint×sPoint+tPoint×tPoint
rInvPoint=IntRecipSqrt(r2)
bestKnownAngle=bestKnownPos2Lidar[2]*rInvPoint>>14
如下获得激光索引估计laserIndexEstimate作为具有与bestKnownAngle最接近的角度的激光的索引
10.8.4.3对point_offset的第一分量S或T的旁路解码
属于当前节点的第i个点的分量bypassSorT(其值对于S为0,并且对于T为1)被旁路解码。
在此子过程结束时,NodeSizeLog2Rem[bypassSorT]等于0。针对点偏移的第bypassSorT个分量不再有位待解码,并且partialOffset[i][bypassSorT]等于完整的点偏移PointOffset[i][bypassSorT]。
10.8.4.4确定与点相关联的激光索引
根据解码值推出与属于当前节点的第i个点相关联的激光索引残差
laserIndexResidual[i]
laserIndexResidual[i]=
(1-2×laser_residual_sign_flag)
×(laser_residual_abs_gt0_flag+laser_residual_abs_gt1_flag
+laser_residual_abs_gt2_flag+laser_residual_abs_minus3_flag)
然后通过以下总和来获得与属于当前节点的第i个点相关联的激光索引
laserIndex[i]
laserIndex[i]=laserIndexEstimate+laserIndexResidual[i]
比特流一致性的要求是laserIndex[i]应当在0...number_lasers_minus1范围内。
10.8.4.5对点偏移的第二分量S或T的方位角解码
使用方位角解码模式对属于当前节点的第i个点的分量1-bypassSorT(其值对于S为0,并且对于T为1)进行解码。
使用部分偏移中的已解码的位,通过以下计算点i在用于角译码模式的处理中的坐标中的最佳已知水平位置
posPoint2LidarS[i]=(sN<<EffectiveNodeSizeLog2[0])-GeomAngularOrigin[0]
posPoint2LidarT[i]=(tN<<EffectiveNodeSizeLog2[1])-GeomAngularOrigin[1]
posPoint2LidarS[i]+=partialOffset[i][0]<<NodeSizeLog2Rem[0]
posPoint2LidarT[i]+=partialOffset[i][1]<<NodeSizeLog2Rem[1]
然后,根据缓冲器phiBuffer确定方位角预测器predPhi的初始值。
phiNode=IntAtan2(posPoint2LidarT[i],posPoint2LidarS[i])
predph=phiBuffer[laserIndex[i]]
if(predPhi==0x80000000)
predPhi=phiNode
nShift=((predPhi-phiNode)*InvDeltaPhi[laserIndex[i]]+536870912)>>30
predPhi-=DeltaPhi[laserIndex[i]]*nShift
在循环j中在剩余位上迭代地对点部分偏移partialOffset[i][1-bypassSorT]的剩余部分进行解码,以针对分量1-bypassSorT的部分偏移进行解码。在循环中,方位角上下文idcmIdxAzimuthal[i][j]被确定并用于对语法元素point_offset[i][1-bypassSorT][j]进行解码。点的位置(取决于方位角解码中所涉及的分量,是posPoint2LidarS[i]或posPoint2Lidart[i])也被迭代地更新。
/>
然后更新缓冲器phiBuffer[]
phiBuffer[laserIndex[i]]=phiNode
10.8.4.6对点偏移的分量V的角解码
使用角解码模式对属于当前节点的第i个点的最后一个分量V进行解码。
根据方位角解码已知水平位置posPoint2LidarS[i]和posPoint2LidarT[i],并且通过以下对逆水平径向距离rInv进行解码
sLidar=(posPoint2LidarS[i]<<8)-128
tLidar=(posPoint2LidarT[i]<<8)-128
r2=sLidar×sLidar+tLidar×tLidar
rInv=IntRecipSqrt(r2)
使用部分偏移中的已解码的位,通过以下计算点i在用于角译码模式的处理中的坐标中的最佳已知竖直位置
posPoint2LidarV[i]=(vN<<EffectiveNodeSizeLog2[2])-GeomAngularOrigin[2]
posPoint2LidarV[i]+=partialOffset[i][2]<<NodeSizeLog2Rem[2]
与点相关联的激光的校正激光角ThetaLaser是
Hr=LaserCorrection[laserIndex[i]]×rInv
ThetaLaser=LaserAngle[laserIndex[i]]+(Hr>=0?-(Hr>>17):((-Hr)>>17))
在循环j中在剩余位上迭代地对点部分偏移partialOffset[i][2]的剩余部分进行解码,以针对分量V的部分偏移进行解码。在循环中,角上下文idcmIdxAngular[i][j]被确定并用于对语法元素point_offset[i][2][j]进行解码。点的位置posPoint2LidarV[i]也被迭代地更新。
10.8.5对点偏移的所有分量的旁路解码
此章节中的过程仅在geometry_angular_enabled_flag等于0时适用。
在此过程中,通过对point_offset[i][k][j]的旁路解码来确定点偏移的剩余位。这针对每个点索引i和每个分量k执行如下
在此过程结束时,对于所有k,NodeSizeLog2Rem[k]等于0。针对点偏移不再有位待解码,并且partialOffset[i][k]等于完整的点偏移PointOffset[i][k]。
当树内量化、角模式和IDCM被联合启用时,有效节点大小、点位置和偏移中的一者或多者的缩放版本可以用于IDCM解码过程,以确保以相同比例使用位置/偏移/节点大小和角原点;例如,这在激光索引的正确推导和上下文推导中可能是有用的。不使用缩放值可能导致对激光索引或上下文的不正确推导。
在图2的示例中,G-PCC编码器200可以包括坐标变换单元202、颜色变换单元204、体素化单元206、属性传输单元208、八叉树分析单元210、表面近似分析单元212、算术编码单元214、几何重构单元216、RAHT单元218、LOD生成单元220、提升单元222、系数量化单元224、存储器228和算术编码单元226。
存储器228可以被配置为存储要用作用于帧间预测的参考数据的点云数据,例如原始点云数据、编码点云数据和/或解码点云数据。
如图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还可以包括其他语法元素,包括未进行算术编码的语法元素。
根据本公开的技术,算术编码单元214可以确定如何对当前节点的占用数据进行编码,例如,当前节点是否由当前节点中的至少一个点和/或点的定位占用。具体地,算术编码单元214可以根据当前节点是否是可帧间预测的和/或是否针对当前节点启用角模式来确定推断直接译码模式(IDCM)模式是否可用于当前节点。例如,如果针对当前节点启用帧间预测并且针对当前模式禁用角模式,则可以针对当前节点禁用IDCM模式。另一方面,如果针对当前节点启用帧间预测或针对当前节点启用角模式,则IDCM模式可以被启用并且因此用于对用于当前节点的占用数据进行编码。
在一些示例中,当IDCM模式被启用时,算术编码单元214可以进一步确定是否启用用于当前节点的位置复制模式。在IDCM模式下,算术编码单元214可以直接对针对当前节点中的点的位置值进行编码。在位置复制模式下,算术编码单元214可以根据用于当前节点的参考节点的位置值预测针对当前节点的点的位置值。预测可以使得从参考节点的位置值直接复制针对当前节点的位置值,或算术编码单元214可以进一步对表示针对当前节点的位置值相对于参考节点的位置值的位置偏移的残差值进行编码。
几何重构单元216可以基于八叉树、指示由表面近似分析单元212所确定的表面的数据和/或其他信息来重构点云中的点的变换坐标。由于体素化和表面近似,由几何重构单元216所重构的变换坐标的数目可以不同于点云的原始点数。本公开可将得到的点称为重构点。属性传输单元208可将点云的原始点的属性传输到点云的重构点。
此外,RAHT单元218可以将RAHT译码应用到重构点的属性。在一些示例中,根据RAHT,获取2x2x2点位置的块的属性并沿一个方向进行变换,以获得四个低频节点(L)和四个高频节点(H)。随后,在第二方向上变换四个低频节点(L),以获得两个低频节点(LL)和两个高频节点(LH)。沿第三方向变换两个低频节点(LL)以获得一个低频节点(LLL)和一个高频节点(LLH)。低频节点LLL对应于DC系数,并且高频节点H、LH和LLH对应于AC系数。每个方向上的变换可以是具有两个系数权重的1D变换。可获取低频系数作为用于RAHT变换的下一个更高级别的2×2×2块的系数,并且不作改变地对AC系数进行编码;此类变换继续,直到顶部根节点。用于编码的树遍历是从上到下的,并且用于计算待用于系数的权重;变换次序是自下而上。然后,可量化这些系数并对其进行译码。
另选地或另外地,LOD生成单元220和提升单元222可以分别将LOD处理和提升应用于重构点的属性。使用LOD生成来将属性拆分为不同的细化级别。每个细化级别提供对点云的属性的细化。第一细化级别提供粗略近似并且包含很少的点;后续细化级别通常包含更多的点,等等。细化级别可使用基于距离的度量来构造,或者也可使用一个或多个其它分类标准(例如,从特定次序进行子采样)。因此,所有重构点可包括在细化级别中。每个细节级别通过取直至特定细化级别的所有点的并集来产生:例如,基于细化级别RL1获得LOD1,基于RL1和RL2获得LOD2,...,通过RL1、RL2、...、RLN的并集获得LODN。在一些情况下,LOD生成可后跟预测方案(例如,预测变换),在预测方案中,根据先前点的加权平均值预测与LOD中的每个点相关联的属性并且对残差进行量化和熵译码。提升方案建立在预测变换机制之上,在提升方案中,使用更新运算符来更新系数并且执行系数的自适应量化。
RAHT单元218和提升单元222可基于这些属性生成系数。系数量化单元224可量化由RAHT单元218或提升单元222生成的系数。算术编码单元226可以对表示经量化系数的语法元素应用算术译码。G-PCC编码器200可以在属性比特流205中输出这些语法元素。属性比特流205还可以包括其他语法元素,包括非算术编码的语法元素。
在图3的示例中,G-PCC解码器300可以包括几何算术解码单元302、存储器324、属性算术解码单元304、八叉树合成单元306、逆量化单元308、表面近似合成单元310、几何重构单元312、RAHT单元314、LoD生成单元316、逆提升单元318、逆变换坐标单元320和逆变换颜色单元322。
G-PCC解码器300可以获得几何比特流203和属性比特流205。解码器300的几何算术解码单元302可以将算术解码(例如,上下文自适应二元算术译码(CABAC)或其他类型的算术解码)应用于几何比特流203中的语法元素。类似地,属性算术解码单元304可以将算术解码应用于属性比特流205中的语法元素。
根据本公开的技术,几何算术解码单元302可以确定如何对当前节点的占用数据进行解码。具体地,几何算术解码单元302可以根据当前节点是否是可帧间预测的和/或是否针对当前节点启用角模式来确定推断直接译码模式(IDCM)模式是否可用于当前节点。例如,如果针对当前节点启用帧间预测并且针对当前模式禁用角模式,则可以针对当前节点禁用IDCM模式。另一方面,如果针对当前节点启用帧间预测或针对当前节点启用角模式,则IDCM模式可以被启用并且因此用于对用于当前节点的占用数据进行解码。
在一些示例中,当IDCM模式被启用时,几何算术解码单元302可以进一步确定是否启用用于当前节点的位置复制模式。在IDCM模式下,几何算术解码单元302可以直接对针对当前节点中的点的位置值进行解码。在位置复制模式下,几何算术解码单元302可以根据用于当前节点的参考节点的位置值预测针对当前节点的点的位置值。预测可以使得从参考节点的位置值直接复制针对当前节点的位置值,或几何算术解码单元302可以进一步对表示针对当前节点的位置值相对于参考节点的位置值的位置偏移的残差值进行解码。
八叉树合成单元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执行的操作。单元可以被实现为固定功能电路、可编程电路或它们的组合。固定功能电路是指提供特定功能的电路,并预先设定了可以执行的操作。可编程电路指代可以被编程以执行各种任务并且在可以执行的操作上提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使得可编程电路以由软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但固定功能电路执行的操作类型通常是不可变的。在一些示例中,单元中的一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,单元中的一个或多个单元可以是集成电路。
图4是描绘用于执行针对G-PCC的基于运动的帧间预测的示例过程的流程图。G-PCC编码器200和G-PCC解码器300可以被配置为如下执行运动预测(即,帧间预测)。
G-PCC InterEM软件中涉及两种运动:全局运动矩阵和本地节点运动矢量。全局运动参数被定义为将在预测(参考)帧中的所有点(被应用局部运动模式的点除外)上应用的旋转矩阵和平移矢量。八叉树的节点的本地节点运动矢量是仅在预测(参考)帧中的节点内的点上应用的运动矢量。下面描述InterEM中的运动估计算法的细节。图4描绘了用于运动估计算法的流程图。
给定输入预测(参考)帧和当前帧,首先以全局比例估计全局运动。在预测上应用全局运动之后,在八叉树中以更精细的比例(即,节点级别)估计局部运动。最终,在运动补偿中应用所估计的本地节点运动。
图5是示出用于估计本地节点运动矢量的示例过程的流程图。G-PCC编码器200和G-PCC解码器300可以根据图5以递归方式估计本地节点运动矢量。用于选择最合适的运动矢量的成本函数可以是基于速率失真成本。
如果当前节点未被拆分成8个子节点,则确定可以产生当前节点与预测节点之间的最低成本的运动矢量。如果当前节点被分成8个子节点,则应用运动估计算法,并且通过将每个子节点的估计成本值相加来获得拆分条件下的总成本。通过比较拆分和不拆分之间的成本来决定拆分还是不拆分;如果拆分,则向每个子节点指派其相应运动矢量(或者可将每个子节点进一步拆分为其子节点),如果不拆分,则向当前节点指派运动矢量。
影响运动矢量估计的性能的两个参数是块大小(BlockSize)和最小预测单元大小(MinPUSize)。BlockSize定义应用运动矢量估计的节点大小的上限,并且MinPUSize定义下限。
G-PCC编码器200和G-PCC解码器300可以根据占用译码(包括禁用角模式的平面模式译码)来执行帧间预测。
图6是示出在G-PCC中执行针对帧间预测的占用比较的示例的概念图。G-PCC编码器200和G-PCC解码器300可以将八叉树的父节点450的当前节点452与针对父参考节点454的参考节点456进行比较。参考节点456是参考帧中与当前帧的当前节点452的并置节点。G-PCC编码器200和G-PCC解码器300可以使用应用于参考帧的全局运动矢量从参考帧推导预测帧。当获得父参考节点454时,G-PCC编码器200和G-PCC解码器300可以将父参考节点454拆分成具有相同大小的8个立方子节点,这些立方子节点包括参考节点456。
G-PCC编码器200和G-PCC解码器300可以对父参考节点454的每个子节点中的点进行计数,以形成帧间预测占用值(predOccupancy,其可以是二元值的数组)和预测占用强值(predOccupancyStrong)。predOccupancy数据结构可以是八个位的数组,索引为0到7。在一些示例中,如果在父参考节点454的子节点中存在至少一个点,则对应位(8个位中的i,即0到7)predOccupancy[i]被设置为等于1。否则,predOccupancy数组的对应位被设置为等于0。在一些示例中,如果子节点中的点的数量大于2,则predOccupancyStrong(其还可以是八个位的数组,索引为0到7)中的对应位被设置为等于1;否则,此位被设置为等于0。
然后,通过被称为‘occupancyIsPredictable’的参数来评估帧间预测的质量。根据已经错过预测的兄弟节点的数量推导用于节点的occupancyIsPredictable的值。具体地,如果父节点中的子节点的占用位与父参考节点中的对应参考节点的占用位不同,则认为该子节点已经错过预测。G-PCC编码器200和G-PCC解码器300可以通过将父节点450的占用与父参考节点454的占用进行比较来计算已经错过预测的兄弟节点的数量(numSiblingsMispredicted),如图6所示。如果当前节点的predOccupancy是0或者错过预测的兄弟节点的数量大于5,则occupancyIsPredictable被设置为等于0。否则,它被设置为等于1。因此,在一个示例中,可以使用阈值5来确定节点是否是可帧间预测的。
G-PCC编码器200和G-PCC解码器300可以使用occupancyIsPredictable来更新predOccupancy、predOccupancyStrong、平面复制模式资格和IDCM资格。如果occupancyIsPredictable等于0,则predOccupancy、predOccupancyStrong和平面复制模式资格被设置为等于0。如果occupancyIsPredictable是1,则IDCM在常规InterEM中针对此节点被禁用。
图7是示出用于G-PCC的平面译码模式(PCM)的概念图。具体地,如果所有点都在特定方向(例如,X方向、Y方向和Z方向)的单个平面中或在该方向的两个平面中,则可以说节点在该方向上是平面的。在每个方向上可以有两个平面:例如,对于X方向,左平面和右平面,对于Y方向,顶平面和底平面,并且对于Z方向,前平面和后平面。
在平面模式下,如果使用平面复制模式(PCM)对节点进行译码,则不在比特流中用信号通知此节点的平面信息。而是,例如对于当前节点460,PCM下的三个方向上的平面模式和平面位置是从参考节点462的平面信息复制的,该平面信息可以根据predOccupancy生成。图7中示出PCM译码的当前节点460和非PCM译码的节点464的示例。对于非PCM译码的节点464,参考节点466的平面信息用于在对平面模式和平面位置译码的上下文选择中提供更大的灵活性。
G-PCC编码器200和G-PCC解码器300可以被配置为根据占用译码执行帧间预测。帧间预测可以用于改进占用译码,具体地讲,该帧间预测用于上下文选择以对当前节点的占用位进行编码。这在GeometryOctreeEncoder::encodeOccupancyNeighNZ()和GeometryOctreeEncoder::encodeOccupancyNeighZ()函数中表示如下:
在以上示例伪代码中,使用相邻节点的占用来决定idxAdj。bitIsPredicted和bitPrediction是使用帧内预测推导的占用位。在帧间帧中,这些参数被设置为等于0。值“!!mappedPred”指示帧间参考块的预测占有是否为零。bitPred和bitPredStrong是predOccupancy和predOccupancyStrong中的子节点的对应位。
本公开认识到,在用于G-PCC的当前InterEM版本3中,帧间预测为有损-有损配置和无损-无损配置两者提供显著译码效率。注意,在当前InterEM版本3中,如果节点是可帧间预测的,则针对子节点禁用IDCM模式。在这种情况下,对于无损-无损情况,编码器和解码器运行时间显著增加。当启用角的使用时,对IDCM节点进行译码的开销显著降低。因此,当通过使用对节点是否是可帧间预测的确定来减少IDCM节点的数量时,IDCM的益处被减少并且这降低了译码效率。
本公开描述了可以用于解决上述问题以及使用帧间预测改进对IDCM模式的译码(具体地讲,对G-PCC中的点的位置译码)的各种技术。
在一些示例中,当节点是可帧间预测的时,不允许IDCM模式。否则,对IDCM模式的允许是基于IDCM模式、节点大小和每isDirectModeEligible()的兄弟节点的数量,该数量可以被定义如下:
/>
根据本公开的技术,G-PCC编码器200和G-PCC解码器300可以被配置为使用所修改的IDCM资格检查来更自适应地控制IDCM模式的折衷。在一个示例中,在IDCM资格中不使用帧间预测,因此可以如下修改以上函数,其中“移除”指示从G-PCC标准的移除:
在另一示例中,G-PCC编码器200和G-PCC解码器300可以在取决于角模式的IDCM资格检查中使用帧间预测。例如,如果角模式被禁用并且节点是可帧间预测的,则不可针对此节点允许IDCM模式。上述函数可以相应地更新如下,其中“添加”指示相对于G-PCC标准的添加,并且“修改”表示对G-PCC标准的修改:
/>
在此示例中,如果当前节点具有occupancyIsPredictable的真实值(即,该节点是可帧间预测的)并且角模式未被启用,则针对该节点禁用IDCM模式。否则,即,如果当前节点不是可帧间预测的或角模式被启用,则可以针对当前节点启用IDCM模式。
如以上所讨论,为了确定节点是否是可帧间预测的,G-PCC编码器200和G-PCC解码器300可以确定针对该节点的兄弟节点是被正确预测还是具有预测错过(即,错过预测),这可根据以上所讨论的技术来确定。如果错过预测的数量满足或超过阈值,则G-PCC编码器200和G-PCC解码器300可以确定该节点不是可帧间预测的。另一方面,如果错过预测的数量小于或等于阈值,则G-PCC编码器200和G-PCC解码器300可以确定该节点是可帧间预测的。
G-PCC编码器200可以测试用于节点的角模式,并使用用于该节点的角模式来确定速率失真优化(RDO)值。如果RDO值指示应当针对节点启用角模式,则G-PCC编码器200可以对指示针对节点启用角模式的针对语法元素的值进行编码。另一方面,如果RDO值指示不应当针对节点启用角模式,则G-PCC编码器200可以对指示针对节点禁用角模式的针对语法元素的值进行编码。G-PCC解码器300可以使用语法元素的值来确定是否针对节点启用角模式。语法元素可以是例如angularModeIsEnabled,如上所示。
在另一示例中,G-PCC编码器200和G-PCC解码器300可以在对IDCM资格条件的选择中使用可帧间预测性,如下,其中“移除”指示相对于G-PCC标准的移除并且“添加”指示相对于G-PCC标准的添加:
在另一示例中,G-PCC编码器200和G-PCC解码器300可以被配置为执行以下各项:
/>
G-PCC编码器200和G-PCC解码器300可以被配置为如下执行具有针对IDCM模式的RD检查的位置复制模式(被称为“PCMI模式”)。如果节点被译码为PCMI,则可以从参考节点中的点的位置复制此节点中的点的位置。可以用信号发出标志以指示是否使用PCMI模式对节点进行编码。
G-PCC编码器200和G-PCC解码器300可以如下确定PCMI模式资格:PCMI模式可以仅应用于某些深度中的节点,这可以在标头或参数集中发信号通知。PCMI模式可以仅应用于具有参考节点的节点,该参考节点带有特定数量的点。例如,如果参考节点具有至多3个点,则可以用PCMI对当前节点进行编码。可以在配置文件中设置PCMI资格,并且将该PCMI资格发信号通知给解码器。例如,PCMI不可应用于无损-无损情况。
在一些示例中,可以将PCMI模式应用于PCM节点。
G-PCC编码器200可以被配置为根据速率和失真(RDO)的优化来确定是否使用PCMI模式。可以通过重构点中的节点的位置与原始点之间的差的总和来计算失真。任选地,在比特流和速率中对位置残差进行译码。对于非PCMI节点,速率是发信号通知点的数量和点的位置的比特数。
G-PCC编码器200和G-PCC解码器300可以被配置为执行联合位置译码的改进版本。具体地,参考节点中的点可以与当前节点中的点一起用于联合译码。应当注意,联合译码技术仅限于具有两个点的节点。在本公开的技术中,在联合译码中使用参考点的情况下,可以放宽此限制。
在下表中示出联合译码的示例情况:
示例联合译码情况
而在一些技术中,当两个点的位相同(same_bit[k][j]=真,k是方向索引,j是位置中的位索引)时,对value_bit[k][j]进行旁路编码。然而,在本公开的技术中,G-PCC编码器200和G-PCC解码器300可以避免对value_bit[k][j]进行译码,因为其可以从参考点中的位值取得。
在一些示例中,联合位置译码可以仅应用于当前节点和参考节点共享包括平面模式和平面位置的相同平面信息的方向。
G-PCC编码器200和G-PCC解码器300可以被配置为执行可改进用于对点偏移进行译码的上下文选择的本公开的技术。与当前节点相关联的激光索引用于决定将用于选择上下文以对点偏移的对应分量进行编码的角或方位角。具体地,在对点偏移的第二分量S或T进行编码时使用方位角来选择上下文(G-PCC标准的章节10.8.4.5),而在对点偏移的分量V进行编码时使用角来选择上下文(当前G-PCC标准的章节10.8.4.6)。
根据本公开的技术,G-PCC编码器200和G-PCC解码器300可以使用参考节点中的点来自适应地选择用于对点偏移的分量进行编码或解码的上下文。可以定义参考点以表示参考节点中的点。参考点可以是参考节点中的点的位置的函数。在一个示例中,参考点可以是参考节点中的点的平均位置。在另一示例中,参考点可以是参考节点中的点的中值位置。在又一示例中,参考点可以是参考节点中的点的最大位置。在再一示例中,参考点可以是参考节点中的点的最大位置。
G-PCC编码器200和G-PCC解码器300可以被配置为如下使用参考点在点偏移译码中执行上下文选择:
6.2.4.1在对点偏移的分量V进行编码的上下文选择中使用的参考点
在此示例中,参考点的分量z(高度)可以用于选择上下文。可以如下决定基于z的上下文索引:
/>
章节10.8.4.6可以如下更新:
例如,竖直方向上的节点位置可以与垂直于竖直轴的节点边界平面的竖直坐标相关联。
在一个示例中,可以取决于节点大小来选择n值。例如,对于较大的节点大小,可以选择较大的n值。在另一示例中,可以如下推断上下文索引的值:ctxRefZ=(z-竖直方向上的节点位置)*T/n,其中T是根据节点大小来选择的。对于越小的节点大小值,T的值越大,反之亦然。
作为另一示例,可以在基于先前解码的二进制数更新z之后重新计算针对每个二进制数的ctxRefZ值。类似的技术可以应用于对S点偏移或T点偏移的译码,如下所示:
6.2.4.2在对点偏移的第二分量S或T进行编码的上下文选择中使用的参考点
/>
图8是示出扫描三维空间中的点的激光器封装600(诸如LIDAR传感器或包括一个或多个激光器的另一***)的概念图。数据源104(图1)可包括激光器封装600。
如图8所示,可以使用激光器封装600捕获点云,即,传感器扫描3D空间中的点。然而,应当理解,一些点云不是由实际LIDAR传感器生成的,而是可像它们由实际LIDAR传感器生成那样进行编码。在图8的示例中,激光器封装600包括LIDAR头602,该LIDAR头包括相对于原点以不同角度排列在竖直平面中的多个激光器604A-604E(统称为“激光器604”)。激光器封装600可围绕垂直轴608旋转。激光器封装600可使用返回的激光来确定点云中的点的距离和位置。由激光器封装600的激光器604发射的激光束606A-606E(统称为“激光束606”)可由一组参数表征。由箭头610、612表示的距离分别表示激光器604B、604A的示例激光校正值。
图9是示出可以与本公开的一种或多种技术一起使用的示例测距***900的概念图。在图9的示例中,测距***900包括照明器902和传感器904。照明器902可发射光906。在一些示例中,照明器902可将光906作为一个或多个激光束来发射。光906可呈一个或多个波长,诸如红外波长或可见光波长。在其它示例中,光906不是相干激光。当光906遇到对象诸如对象908时,光906产生返回光910。返回光910可包括背散射和/或反射光。返回光910可穿过透镜911,该透镜引导返回光910在传感器904上创建对象908的图像912。传感器904基于图像912生成信号914。图像912可以包括点集合(例如,由图9的图像912中的点所表示的点集合)。
在一些示例中,照明器902和传感器904可被安装在旋转结构上,以使得照明器902和传感器904捕获环境的360度视图。在其它示例中,测距***900可包括使得照明器902和传感器904能够检测特定范围(例如,高达360度)内的对象的一个或多个光学组件(例如,反射镜、准直器、衍射光栅等)。尽管图9的示例仅示出了单个照明器902和传感器904,但测距***900可以包括多组照明器和传感器。
在一些示例中,照明器902生成结构化光图案。在此类示例中,测距***900可包括多个传感器904,在该多个传感器上形成结构化光图案的相应图像。测距***900可使用结构化光图案的图像之间的不一致性来确定到结构化光图案从其背散射的对象908的距离。当对象908相对接近传感器904(例如,0.2米到2米)时,基于结构化光的测距***可具有高级别的精度(例如,亚毫米范围中的精度)。该高级别的精度可在面部辨识应用诸如解锁移动设备(例如,移动电话、平板计算机等)中有用并且对于安全应用有用。
在一些示例中,测距***900是基于飞行时间(ToF)的***。在测距***900是基于ToF的***的一些示例中,照明器902生成光脉冲。换句话讲,照明器902可调制发射光906的振幅。在此类示例中,传感器904检测来自由照明器902生成的光906的脉冲的返回光910。然后,测距***900可基于在发射光906时和检测到该光时之间的延迟与空气中的已知光速来确定到光906从其后向散射的对象908的距离。在一些示例中,照明器902可调制发射光1404的相位,而不是(或除了)调制发射光906的振幅。在此类示例中,传感器904可检测来自对象908的返回光910的相位,并且使用光速并基于照明器902在特定相位生成光906时和传感器904在该特定相位检测到返回光910时之间的时间差来确定到对象908上的点的距离。
在其它示例中,可在不使用照明器902的情况下生成点云。例如,在一些示例中,测距***900的传感器904可包括两个或更多个光学相机。在此类示例中,测距***900可使用光学相机来捕获包括对象908的环境的立体图像。然后,测距***900(例如,点云生成器920)可计算立体图像中的定位之间的差异。然后,测距***900可使用这些差异来确定到立体图像中所示的定位的距离。根据这些距离,点云生成器920可生成点云。
传感器904还可检测对象908的其它属性,诸如颜色和反射率信息。在图9的示例中,点云生成器920可以基于由传感器904生成的信号918来生成点云。测距***900和/或点云生成器920可形成数据源104(图1)的一部分。
图10是示出可以使用本公开的一种或多种技术的示例基于车辆的场景的概念图。在图10的示例中,车辆1000包括激光器封装1002,诸如LIDAR***。激光器封装1002可以与激光器封装600(图8)相同的方式实现。尽管图10的示例中未示出,但车辆1000还可以包括数据源(诸如数据源104(图1))和G-PCC编码器(诸如G-PCC编码器200(图1))。在图10的示例中,激光器封装1002发射激光束1004,这些激光束从道路上的行人1006或其他对象反射。车辆1000的数据源可基于由激光器封装1002生成的信号来生成点云。车辆1000的G-PCC编码器可对点云进行编码以生成比特流1008,诸如图2的几何比特流和图2的属性比特流。比特流1008可包括比由G-PCC编码器获得的未译码的点云少很多的比特。车辆1000的输出接口(例如,图1的输出接口108)可以将比特流1008传输到一个或多个其他设备。因此,车辆1000可能够比所编码的点云数据快地将比特流1008传输到其它设备。另外,比特流1008可能需要较少的数据存储容量。
本公开的技术可进一步减少比特流1008中的比特数。例如,如上文所讨论,如果使用帧间预测占用或平面掩码数据中的至少一者来对当前节点进行编码,则不需要针对当前节点对单个占用数据进行编码。在这些情况下避免对单个占用数据进行编码可以减少比特流中的比特数,因为使用帧间预测占用或平面掩码数据可以更高效地对针对当前节点的占用进行译码。
在图10的示例中,车辆1000可以将比特流1008传输到另一车辆1010。车辆1010可包括G-PCC解码器,诸如G-PCC解码器300(图1)。车辆1010的G-PCC解码器可对比特流1008进行解码以重构点云。车辆1010可将所重构的点云用于各种目的。例如,车辆1010可基于所重构的点云来确定行人1006在车辆1000前方的道路上,并且因此开始减速,例如,甚至在车辆1010的驾驶员意识到行人1006在该道路上之前。因此,在一些示例中,车辆1010可基于所重构的点云来执行自主导航操作、生成通知或警告,或执行另一动作。
另外地或另选地,车辆1000可将比特流1008传输到服务器***1012。服务器***1012可将比特流1008用于各种目的。例如,服务器***1012可存储比特流1008以用于点云的后续重构。在该示例中,服务器***1012可连同其它数据(例如,由车辆1000生成的车辆遥测数据)一起使用点云来训练自主驾驶***。在其他示例中,服务器***1012可以存储比特流1008以用于法医碰撞调查(例如,如果车辆1000与行人1006碰撞)的后续重构。
图11是示出可以使用本公开的一种或多种技术的示例扩展现实***的概念图。扩展现实(XR)是用于覆盖包括增强现实(AR)、混合现实(MR)和虚拟现实(VR)的技术范围的术语。在图11的示例中,第一用户1100位于第一定位1102中。用户1100佩戴XR头戴式设备1104。作为XR头戴式设备1104的另选方案,用户1100可使用移动设备(例如,移动电话、平板计算机等)。XR头戴式设备1104包括深度检测传感器诸如LIDAR***,该深度检测传感器检测定位1102处的对象1106上的点的位置。XR头戴式设备1104的数据源可使用由深度检测传感器生成的信号来生成定位1102处的对象1106的点云表示。XR头戴式设备1104可包括G-PCC编码器(例如,图1的G-PCC编码器200),该G-PCC编码器被配置为对点云进行编码以生成比特流1108。
本公开的技术可进一步减少比特流1108中的比特数。例如,如上文所讨论,如果使用帧间预测占用或平面掩码数据中的至少一者来对当前节点进行编码,则不需要针对当前节点对单个占用数据进行编码。在这些情况下避免对单个占用数据进行编码可以减少比特流中的比特数,因为使用帧间预测占用或平面掩码数据可以更高效地对针对当前节点的占用进行译码。
XR头戴式设备1104可向由第二定位1114处的用户1112所佩戴的XR头戴式设备1110传输比特流1108(例如,经由网络诸如互联网)。XR头戴式设备1110可对比特流1108进行解码以重构点云。XR头戴式设备1110可以使用点云来生成表示定位1102处的对象1106的XR可视化(例如,AR可视化、MR可视化、VR可视化)。因此,在一些示例中,诸如当XR头戴式设备1110生成VR可视化时,定位1114处的用户1112可具有定位1102的3D沉浸式体验。在一些示例中,XR头戴式设备1110可基于所重构的点云来确定虚拟对象的位置。例如,XR头戴式设备1110可基于所重构的点云来确定环境(例如,定位1102)包括平坦表面,并且然后确定虚拟对象(例如,卡通人物)要定位在该平坦表面上。XR头戴式设备1110可生成其中虚拟对象位于所确定的位置处的XR可视化。例如,XR头戴式设备1110可示出卡通人物坐在该平坦表面上。
图12是示出可以使用本公开的一种或多种技术的示例移动设备***的概念图。在图12的示例中,移动设备1200(诸如移动电话或平板计算机)包括深度检测传感器(诸如LIDAR***),该深度检测传感器检测对象1202上的点在移动设备1200的环境中的位置。移动设备1200的数据源可使用由深度检测传感器生成的信号来生成对象1202的点云表示。移动设备1200可包括G-PCC编码器(例如,图1的G-PCC编码器200),该G-PCC编码器被配置为对点云进行编码以生成比特流1204。
在图12的示例中,移动设备1200可以将比特流传输到远程设备1206,诸如服务器***或另一移动设备。远程设备1206可对比特流1204进行解码以重构点云。远程设备1206可将所重构的点云用于各种目的。例如,远程设备1206可以使用点云来生成移动设备1200的环境地图。例如,远程设备1206可基于所重构的点云来生成建筑物内部地图。又如,远程设备1206可基于点云来生成图像(例如,计算机图形)。例如,远程设备1206可将点云中的点用作多边形的顶点,并且将点的颜色属性用作对多边形进行着色的基础。在一些示例中,远程设备1206可使用点云来执行面部辨识。
图13是示出根据本公开的技术的对点云数据进行译码的示例方法的流程图。图13的方法可以在点云编码过程期间由G-PCC编码器200执行,或者在点云解码过程期间由G-PCC解码器300执行。为了示例和解释的目的,关于G-PCC解码器300解释图13的方法,但G-PCC编码器200也可以执行此方法或类似的方法。
最初,G-PCC解码器300可以获得点云数据的八叉树的当前节点(500)。例如,G-PCC解码器300可以从比特流中提取用于八叉树的数据,并从根节点开始互逆地对八叉树的节点进行解码。当由G-PCC编码器200执行时,G-PCC编码器200可以从根节点开始互逆地对八叉树进行编码。
G-PCC解码器300可以将每个所占用节点划分成八个子节点,如例如图6和图7所示。G-PCC解码器300可以针对当前节点确定节点是否是可帧间预测的(502)。例如,G-PCC解码器300可以确定错过预测的兄弟节点的数量以及此数量是否小于或等于阈值(TH)。当节点的占用不同于针对该节点的参考节点的占用时,该节点可能错过预测。例如,如果当参考节点未被占用时该节点实际上被占用,或如果当参考节点被占用时该节点实际上未被占用,则可以说该节点已经错过预测。如果当前节点具有五个或更少个错过预测的兄弟节点,则可以认为该节点是可帧间预测的。否则,如果当前节点具有多于五个错过预测的兄弟节点,则可以认为该节点不是可帧间预测的。
如果错过预测的兄弟节点的数量小于或等于阈值(502的“是”分支),即,如果当前节点是可帧间预测的,则G-PCC解码器300可以进一步确定是否针对当前节点启用角模式(504)。G-PCC解码器300可以例如确定指示是否针对当前节点启用角模式的语法元素的值(例如,geometry_angular_enabled_flag)。另选地,G-PCC解码器300可以接收指示是否启用角模式的配置文件。G-PCC编码器200可以执行速率失真优化(RDO)程序以确定是否针对当前节点启用角模式,并且相应地设置语法元素的值。
如果错过预测的兄弟的数量小于或等于阈值(即,当前节点是可帧间预测的)(502的“是”分支)并且没有针对当前节点启用角模式(504的“否”分支),则G-PCC解码器300可以使用非IDCM模式(诸如帧间预测)对用于当前节点的占用数据进行解码(506)。即,帧间预测通常可以比IDCM模式更高效,因此,如果帧间预测可用并且角模式不可用,则G-PCC解码器300可以使用帧间预测对当前节点的占用数据进行解码。例如,G-PCC解码器300可以根据当前节点的参考节点是否被占用来确定用于对指示当前节点是否被占用的值进行熵解码的上下文,然后使用所确定的上下文对该值进行熵解码。
然而,如果错过预测的兄弟的数量大于阈值(即,当前节点不是可帧间预测的)(502的“否”分支)或针对当前节点启用角模式(504的“是”分支),则G-PCC解码器300可以确定针对当前节点启用IDCM模式。在一些情况下,当IDCM模式被启用并且当前节点是可帧间预测的时,G-PCC解码器300可以进一步对指示是使用IDCM还是帧间预测对当前节点进行译码的值进行解码。假设使用IDCM模式对当前节点进行译码,则G-PCC解码器300可以使用IDCM模式对占用数据进行解码。例如,G-PCC编码器200可以执行RDO过程以确定IDCM或帧间预测是否实现更好的RDO表现,并且确定使用IDCM或帧间预测中具有更好的RDO表现的一者对当前节点的占用数据进行解码,并且相应地进一步对指示是使用帧间预测还是IDCM对当前节点的占用数据进行编码的值进行编码。
在图13的示例中,G-PCC解码器300可以进一步确定IDCM模式是否是用于当前节点的位置复制模式(508),例如,常规IDCM模式或位置复制模式。如果将不使用位置复制模式(510的“否”分支),则G-PCC解码器300可以直接对占用数据进行解码,即,占用数据可以直接指示用于当前模式的点位置(512)。另一方面,如果将使用位置复制模式(510的“是”分支),则G-PCC解码器300可以根据参考节点预测用于当前节点的点位置(514)。在一些示例中,当前节点可以直接继承参考节点的点位置,而在其他示例中,G-PCC解码器300可以对表示将应用于参考节点中的点的位置的位置偏移的残差值进行解码,以实现当前节点中的点位置。
以这种方式,图13的方法表示对点云数据进行译码的方法的示例,该方法包括:确定以下各项中的至少一项:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对该节点启用角模式;响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及使用所确定的IDCM模式对该节点的占用数据进行译码。
本公开的技术的各种示例汇总于以下条款中:
条款1:一种对点云数据进行译码的方法,所述方法包括:确定以下各项中的至少一项:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对所述节点启用角模式;响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及使用所确定的IDCM模式对所述节点的占用数据进行译码。
条款2:根据条款1所述的方法,其中所述节点包括第一节点,所述方法还包括:确定所述八叉树的第二节点是可帧间预测的以及针对所述第二节点禁用角模式;以及响应于确定所述第二节点是可帧间预测的以及针对所述第二节点禁用角模式,使用帧间预测对所述第二节点的占用数据进行译码。
条款3:根据条款1所述的方法,其中确定点云数据的所述八叉树的所述节点不是可帧间预测的包括确定所述八叉树的错过预测的针对所述节点的兄弟节点的数量超过阈值。
条款4:根据条款1所述的方法,其中确定针对所述节点启用角模式包括对针对语法元素的值进行译码,所述值指示针对所述节点启用角模式。
条款5:根据条款1所述的方法,其中使用所确定的IDCM模式对所述占用数据进行译码包括对表示所述节点中的点的位置的数据进行译码。
条款6:根据条款1所述的方法,其中所确定的IDCM模式包括位置复制模式,并且其中对所述节点的所述占用数据进行译码包括:确定针对所述节点的参考节点;确定所述参考节点中的点的位置;以及根据所述参考节点中的所述点的所述位置来确定所述节点的所述点。
条款7:根据条款6所述的方法,还包括确定语法元素具有指示所述位置复制模式是能够使用的值。
条款8:根据条款6所述的方法,还包括根据所述节点在所述八叉树中的深度来确定所述位置复制模式是能够使用的。
条款9:根据条款6所述的方法,还包括根据所述参考节点中的所述点的数量来确定所述位置复制模式是能够使用的。
条款10:根据条款6所述的方法,其中确定所述节点的所述点包括确定所述节点的所述点位于所述参考节点中的所述点的所述位置处。
条款11:根据条款6所述的方法,其中确定所述节点的所述点包括对针对所述节点的所述点的位置残差值进行译码,所述位置残差值表示所述参考节点的所述点的所述位置与所述节点的所述点的位置之间的位置偏移。
条款12:根据条款1所述的方法,其中对所述占用数据进行译码包括对所述占用数据进行解码。
条款13:根据条款1所述的方法,其中对所述占用数据进行译码包括对所述占用数据进行编码。
条款14:一种用于对点云数据进行译码的设备,所述设备包括:存储器,所述存储器被配置为存储点云数据;和一个或多个处理器,所述一个或多个处理器在电路中实现并且被配置为:确定以下各项中的至少一项:1)所述点云数据的八叉树的节点不是可帧间预测的,或者2)针对所述节点启用角模式;响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及使用所确定的IDCM模式对所述节点的占用数据进行译码。
条款15:根据条款14所述的设备,其中所述节点包括第一节点,并且其中所述一个或多个处理器被进一步配置为:确定所述八叉树的第二节点是可帧间预测的以及针对所述第二节点禁用角模式;以及响应于确定所述第二节点是可帧间预测的以及针对所述第二节点禁用角模式,使用帧间预测对所述第二节点的占用数据进行译码。
条款16:根据条款14所述的设备,其中为了确定点云数据的所述八叉树的所述节点不是可帧间预测的,所述一个或多个处理器被配置为确定所述八叉树的错过预测的针对所述节点的兄弟节点的数量超过阈值。
条款17:根据条款14所述的设备,其中为了确定针对所述节点启用角模式,所述一个或多个处理器被配置为对针对语法元素的值进行译码,所述值指示针对所述节点启用角模式。
条款18:根据条款14所述的设备,其中为了使用所确定的IDCM模式对所述占用数据进行译码,所述一个或多个处理器被配置为对表示所述节点中的点的位置的数据进行译码。
条款19:根据条款14所述的设备,其中所确定的IDCM模式包括位置复制模式,并且其中为了对所述节点的所述占用数据进行译码,所述一个或多个处理器被配置为:确定针对所述节点的参考节点;确定所述参考节点中的点的位置;以及根据所述参考节点中的所述点的所述位置来确定所述节点中的所述点。
条款20:根据条款19所述的设备,其中所述一个或多个处理器被配置为确定所述节点的所述点位于所述参考节点中的所述点的所述位置处。
条款21:根据条款19所述的设备,其中为了确定所述节点的所述点,所述一个或多个处理器被配置为对针对所述节点的所述点的位置残差值进行译码,所述位置残差值表示所述参考节点的所述点的所述位置与所述节点的所述点的位置之间的位置偏移。
条款22:一种其上存储有指令的计算机可读存储介质,所述指令在被执行时使处理器:确定以下各项中的至少一项:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对所述节点启用角模式;响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及使用所确定的IDCM模式对所述节点的占用数据进行译码。
条款23:根据条款22所述的计算机可读存储介质,其中所述节点包括第一节点,所述计算机可读存储介质还包括使所述处理器进行以下操作的指令:确定所述八叉树的第二节点是可帧间预测的以及针对所述第二节点禁用角模式;以及响应于确定所述第二节点是可帧间预测的以及针对所述第二节点禁用角模式,使用帧间预测对所述第二节点的占用数据进行译码。
条款24:根据条款22所述的计算机可读存储介质,其中使所述处理器确定点云数据的所述八叉树的所述节点不是可帧间预测的所述指令包括使所述处理器确定所述八叉树的错过预测的针对所述节点的兄弟节点的数量超过阈值的指令。
条款25:根据条款22所述的计算机可读存储介质,其中使所述处理器确定针对所述节点启用角模式的所述指令包括使所述处理器对针对语法元素的值进行译码的指令,所述值指示针对所述节点启用角模式。
条款26:根据条款22所述的计算机可读存储介质,其中使所述处理器使用所确定的IDCM模式对所述占用数据进行译码的所述指令包括使所述处理器对表示所述节点中的点的位置的数据进行译码的指令。
条款27:根据条款22所述的计算机可读存储介质,其中所确定的IDCM模式包括位置复制模式,并且其中使所述处理器对所述节点的所述占用数据进行译码的所述指令包括使所述处理器进行以下操作的指令:确定针对所述节点的参考节点;确定所述参考节点中的点的位置;以及根据所述参考节点中的所述点的所述位置来确定所述节点中的所述点。
条款28:根据条款27所述的计算机可读存储介质,其中使所述处理器确定所述节点的所述点的所述指令包括使所述处理器确定所述节点的所述点位于所述参考节点中的所述点的所述位置处的指令。
条款29:根据条款27所述的计算机可读存储介质,其中使所述处理器确定所述节点的所述点的所述指令包括使所述处理器对针对所述节点的所述点的位置残差值进行译码的指令,所述位置残差值表示所述参考节点的所述点的所述位置与所述节点的所述点的位置之间的位置偏移。
条款30:一种用于对点云数据进行译码的设备,所述设备包括:用于确定以下各项中的至少一项的构件:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对所述节点启用角模式;用于响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式的构件:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及用于使用所确定的IDCM模式对所述节点的占用数据进行译码的构件。
条款31:一种对点云数据进行译码的方法,所述方法包括:确定以下各项中的至少一项:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对所述节点启用角模式;响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及使用所确定的IDCM模式对所述节点的占用数据进行译码。
条款32:根据条款1所述的方法,其中所述节点包括第一节点,所述方法还包括:确定所述八叉树的第二节点是可帧间预测的以及针对所述第二节点禁用角模式;以及响应于确定所述第二节点是可帧间预测的以及针对所述第二节点禁用角模式,使用帧间预测对所述第二节点的占用数据进行译码。
条款33:根据条款31和32中任一项所述的方法,其中确定点云数据的所述八叉树的所述节点不是可帧间预测的包括确定所述八叉树的错过预测的针对所述节点的兄弟节点的数量超过阈值。
条款34:根据条款31至33中任一项所述的方法,其中确定针对所述节点启用角模式包括对针对语法元素的值进行译码,所述值指示针对所述节点启用角模式。
条款35:根据条款31至34中任一项所述的方法,其中使用所确定的IDCM模式对所述占用数据进行译码包括对表示所述节点中的点的位置的数据进行译码。
条款36:根据条款31至35中任一项所述的方法,其中所确定的IDCM模式包括位置复制模式,并且其中对所述节点的所述占用数据进行译码包括:确定针对所述节点的参考节点;确定所述参考节点中的点的位置;以及根据所述参考节点中的所述点的所述位置来确定所述节点的所述点。
条款37:根据条款36所述的方法,还包括确定语法元素具有指示所述位置复制模式是能够使用的值。
条款38:根据条款36和37中任一项所述的方法,还包括根据所述节点在所述八叉树中的深度来确定所述位置复制模式是能够使用的。
条款39:根据条款36至38中任一项所述的方法,还包括根据所述参考节点中的所述点的数量来确定所述位置复制模式是能够使用的。
条款40:根据条款36至39中任一项所述的方法,其中确定所述节点的所述点包括确定所述节点的所述点位于所述参考节点中的所述点的所述位置处。
条款41:根据条款36至39中任一项所述的方法,其中确定所述节点的所述点包括对针对所述节点的所述点的位置残差值进行译码,所述位置残差值表示所述参考节点的所述点的所述位置与所述节点的所述点的位置之间的位置偏移。
条款42:根据条款31至41中任一项所述的方法,其中对所述占用数据进行译码包括对所述占用数据进行解码。
条款43:根据条款31至42中任一项所述的方法,其中对所述占用数据进行译码包括对所述占用数据进行编码。
条款44:一种用于对点云数据进行译码的设备,所述设备包括:存储器,所述存储器被配置为存储点云数据;和一个或多个处理器,所述一个或多个处理器在电路中实现并且被配置为:确定以下各项中的至少一项:1)所述点云数据的八叉树的节点不是可帧间预测的,或者2)针对所述节点启用角模式;响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及使用所确定的IDCM模式对所述节点的占用数据进行译码。
条款45:根据条款44所述的设备,其中所述节点包括第一节点,并且其中所述一个或多个处理器被进一步配置为:确定所述八叉树的第二节点是可帧间预测的以及针对所述第二节点禁用角模式;以及响应于确定所述第二节点是可帧间预测的以及针对所述第二节点禁用角模式,使用帧间预测对所述第二节点的占用数据进行译码。
条款46:根据条款44和45中任一项所述的设备,其中为了确定点云数据的所述八叉树的所述节点不是可帧间预测的,所述一个或多个处理器被配置为确定所述八叉树的错过预测的针对所述节点的兄弟节点的数量超过阈值。
条款47:根据条款44至46中任一项所述的设备,其中为了确定针对所述节点启用角模式,所述一个或多个处理器被配置为对针对语法元素的值进行译码,所述值指示针对所述节点启用角模式。
条款48:根据条款44至47中任一项所述的设备,其中为了使用所确定的IDCM模式对所述占用数据进行译码,所述一个或多个处理器被配置为对表示所述节点中的点的位置的数据进行译码。
条款49:根据条款44至48中任一项所述的设备,其中所确定的IDCM模式包括位置复制模式,并且其中为了对所述节点的所述占用数据进行译码,所述一个或多个处理器被配置为:确定针对所述节点的参考节点;确定所述参考节点中的点的位置;以及根据所述参考节点中的所述点的所述位置来确定所述节点中的所述点。
条款50:根据条款49所述的设备,其中所述一个或多个处理器被配置为确定所述节点的所述点位于所述参考节点中的所述点的所述位置处。
条款51:根据条款49所述的设备,其中为了确定所述节点的所述点,所述一个或多个处理器被配置为对针对所述节点的所述点的位置残差值进行译码,所述位置残差值表示所述参考节点的所述点的所述位置与所述节点的所述点的位置之间的位置偏移。
条款52:一种其上存储有指令的计算机可读存储介质,所述指令在被执行时使处理器:确定以下各项中的至少一项:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对所述节点启用角模式;响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及使用所确定的IDCM模式对所述节点的占用数据进行译码。
条款53:根据条款52所述的计算机可读存储介质,其中所述节点包括第一节点,所述计算机可读存储介质还包括使所述处理器进行以下操作的指令:确定所述八叉树的第二节点是可帧间预测的以及针对所述第二节点禁用角模式;以及响应于确定所述第二节点是可帧间预测的以及针对所述第二节点禁用角模式,使用帧间预测对所述第二节点的占用数据进行译码。
条款54:根据条款52和53中任一项所述的计算机可读存储介质,其中使所述处理器确定点云数据的所述八叉树的所述节点不是可帧间预测的所述指令包括使所述处理器确定所述八叉树的错过预测的针对所述节点的兄弟节点的数量超过阈值的指令。
条款55:根据条款52至54中任一项所述的计算机可读存储介质,其中使所述处理器确定针对所述节点启用角模式的所述指令包括使所述处理器对针对语法元素的值进行译码的指令,所述值指示针对所述节点启用角模式。
条款56:根据条款52至55中任一项所述的计算机可读存储介质,其中使所述处理器使用所确定的IDCM模式对所述占用数据进行译码的所述指令包括使所述处理器对表示所述节点中的点的位置的数据进行译码的指令。
条款57:根据条款52至56中任一项所述的计算机可读存储介质,其中所确定的IDCM模式包括位置复制模式,并且其中使所述处理器对所述节点的所述占用数据进行译码的所述指令包括使所述处理器进行以下操作的指令:确定针对所述节点的参考节点;确定所述参考节点中的点的位置;以及根据所述参考节点中的所述点的所述位置来确定所述节点中的所述点。
条款58:根据条款57所述的计算机可读存储介质,其中使所述处理器确定所述节点的所述点的所述指令包括使所述处理器确定所述节点的所述点位于所述参考节点中的所述点的所述位置处的指令。
条款59:根据条款57所述的计算机可读存储介质,其中使所述处理器确定所述节点的所述点的所述指令包括使所述处理器对针对所述节点的所述点的位置残差值进行译码的指令,所述位置残差值表示所述参考节点的所述点的所述位置与所述节点的所述点的位置之间的位置偏移。
条款60:一种用于对点云数据进行译码的设备,所述设备包括:用于确定以下各项中的至少一项的构件:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对所述节点启用角模式;用于响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式的构件:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及用于使用所确定的IDCM模式对所述节点的占用数据进行译码的构件。
要认识到的是,根据示例,本文中所描述的任何技术的某些动作或事件可以以不同的顺序来执行,可以被添加、合并或完全省略(例如,并非所有描述的动作或事件对于实施所述技术都是必要的)。此外,在某些示例中,动作或事件可以被并发地执行(例如,通过多线程处理、中断处理或多个处理器)而不是顺序地执行。
在一个或多个示例中,所描述的功能可以在硬件、软件、固件或它们的任何组合中实现。如果在软件中实现,则该功能可以作为一个或多个指令或代码存储在计算机可读介质上或者通过计算机可读介质进行传输并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质(其对应于诸如数据存储介质之类的有形介质)或者通信介质,该通信介质包括例如根据通信协议来促进计算机程序从一个地方传送到另一地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非非暂态的有形的计算机可读存储介质,或(2)诸如信号或载波之类的通信介质。数据存储介质可以是可以由一个或多个计算机或者一个或多个处理器访问以检索用于实现本公开中所描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
通过示例而非限制的方式,此类计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁存储设备、闪存存储器、或者能够用于以指令或数据结构的形式存储期望的程序代码并且能够由计算机访问的任何其它介质。而且,任何连接被适当地称为计算机可读介质。例如,如果指令是使用同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或者无线技术(诸如红外线、无线电和微波)从网站、服务器或其它远程源发射的,则同轴电缆、光纤光缆、双绞线、DSL或者无线技术(诸如红外线、无线电和微波)被包括在介质的定义中。然而,应当理解的是,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它非暂态介质,而是替代地针对非非暂态的有形存储介质。如本文所使用的,碟和盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软碟和蓝光光盘,其中碟通常磁性地再现数据,而盘则利用激光来光学地再现数据。上述的组合应当也被包括在计算机可读介质的范围内。
指令可由一个或多个处理器来执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或其它等效的集成或分立逻辑电路。因此,如本文中所使用的术语“处理器”和“处理电路”可以指代前述结构中的任何一者或者适于实现本文中所描述的技术的任何其它结构。另外,在一些方面中,本文中所描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或者被并入组合的编解码器中。同样,这些技术可以在一个或多个电路或逻辑元件中被完全实现。
本公开的技术可以在各种各样的设备或装置中实现,包括无线手机、集成电路(IC)或一组IC(例如,芯片组)。在本公开中描述各种组件、模块或单元以强调被配置成执行所公开的技术的设备的功能性方面,但是不一定要求通过不同的硬件单元来实现。确切而言,如上文所描述的,各种单元可以被组合在编解码器硬件单元中,或者由可互操作的硬件单元的集合(包括如上文所描述的一个或多个处理器)结合适当的软件和/或固件来提供。
已经描述各个示例。这些和其它示例在以下权利要求书的范围内。

Claims (22)

1.一种对点云数据进行译码的方法,所述方法包括:
确定以下各项中的至少一项:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对所述节点启用角模式;
响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及
使用所确定的IDCM模式对所述节点的占用数据进行译码。
2.根据权利要求1所述的方法,其中所述节点包括第一节点,所述方法还包括:
确定所述八叉树的第二节点是可帧间预测的以及针对所述第二节点禁用角模式;以及
响应于确定所述第二节点是可帧间预测的以及针对所述第二节点禁用角模式,使用帧间预测对所述第二节点的占用数据进行译码。
3.根据权利要求1所述的方法,其中确定点云数据的所述八叉树的所述节点不是可帧间预测的包括确定所述八叉树的错过预测的针对所述节点的兄弟节点的数量超过阈值。
4.根据权利要求1所述的方法,其中确定针对所述节点启用角模式包括对针对语法元素的值进行译码,所述值指示针对所述节点启用角模式。
5.根据权利要求1所述的方法,其中使用所确定的IDCM模式对所述占用数据进行译码包括对表示所述节点中的点的位置的数据进行译码。
6.根据权利要求1所述的方法,其中所确定的IDCM模式包括位置复制模式,并且其中对所述节点的所述占用数据进行译码包括:
确定针对所述节点的参考节点;
确定所述参考节点中的点的位置;以及
根据所述参考节点中的所述点的所述位置来确定所述节点中的点。
7.根据权利要求6所述的方法,还包括确定语法元素具有指示所述位置复制模式能够用于所述节点的值。
8.根据权利要求6所述的方法,还包括根据所述节点在所述八叉树中的深度来确定所述位置复制模式是能够使用的。
9.根据权利要求6所述的方法,还包括根据所述参考节点中的所述点的数量来确定所述位置复制模式是能够使用的。
10.根据权利要求6所述的方法,其中确定所述节点中的所述点包括确定所述节点中的所述点位于所述参考节点中的所述点的所述位置处。
11.根据权利要求6所述的方法,其中确定所述节点中的所述点包括对针对所述节点中的所述点的位置残差值进行译码,所述位置残差值表示所述参考节点中的所述点的所述位置与所述节点中的所述点的位置之间的位置偏移。
12.根据权利要求1所述的方法,其中对所述占用数据进行译码包括对所述占用数据进行解码。
13.根据权利要求1所述的方法,其中对所述占用数据进行译码包括对所述占用数据进行编码。
14.一种用于对点云数据进行译码的设备,所述设备包括:
存储器,所述存储器被配置为存储点云数据;和
一个或多个处理器,所述一个或多个处理器在电路中实现并且被配置为:
确定以下各项中的至少一项:1)所述点云数据的八叉树的节点不是可帧间预测的,或者2)针对所述节点启用角模式;
响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及
使用所确定的IDCM模式对所述节点的占用数据进行译码。
15.根据权利要求14所述的设备,其中所述节点包括第一节点,并且其中所述一个或多个处理器被进一步配置为:
确定所述八叉树的第二节点是可帧间预测的以及针对所述第二节点禁用角模式;以及
响应于确定所述第二节点是可帧间预测的以及针对所述第二节点禁用角模式,使用帧间预测对所述第二节点的占用数据进行译码。
16.根据权利要求14所述的设备,其中为了确定点云数据的所述八叉树的所述节点不是可帧间预测的,所述一个或多个处理器被配置为确定所述八叉树的错过预测的针对所述节点的兄弟节点的数量超过阈值。
17.根据权利要求14所述的设备,其中为了确定针对所述节点启用角模式,所述一个或多个处理器被配置为对针对语法元素的值进行译码,所述值指示针对所述节点启用角模式。
18.根据权利要求14所述的设备,其中为了使用所确定的IDCM模式对所述占用数据进行译码,所述一个或多个处理器被配置为对表示所述节点中的点的位置的数据进行译码。
19.根据权利要求14所述的设备,其中所确定的IDCM模式包括位置复制模式,并且其中为了对所述节点的所述占用数据进行译码,所述一个或多个处理器被配置为:
确定针对所述节点的参考节点;
确定所述参考节点中的点的位置;以及
根据所述参考节点中的所述点的所述位置来确定所述节点中的点。
20.根据权利要求19所述的设备,其中所述一个或多个处理器被配置为确定所述节点中的所述点位于所述参考节点中的所述点的所述位置处。
21.根据权利要求19所述的设备,其中为了确定所述节点中的所述点,所述一个或多个处理器被配置为对针对所述节点中的所述点的位置残差值进行译码,所述位置残差值表示所述参考节点中的所述点的所述位置与所述节点中的所述点的位置之间的位置偏移。
22.一种其上存储有指令的计算机可读存储介质,所述指令在被执行时使处理器:
确定以下各项中的至少一项:1)点云数据的八叉树的节点不是可帧间预测的,或者2)针对所述节点启用角模式;
响应于确定以下各项中的所述至少一项而确定用于所述节点的推断直接译码模式(IDCM)模式:1)所述节点不是可帧间预测的,或者2)针对所述节点启用角模式;以及
使用所确定的IDCM模式对所述节点的占用数据进行译码。
CN202280063734.7A 2021-09-27 2022-09-20 在g-pcc中使用用于帧间预测的直接模式对点云数据进行译码 Pending CN117999580A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US63/261,722 2021-09-27
US17/933,300 US20230099908A1 (en) 2021-09-27 2022-09-19 Coding point cloud data using direct mode for inter-prediction in g-pcc
US17/933,300 2022-09-19
PCT/US2022/076704 WO2023049698A1 (en) 2021-09-27 2022-09-20 Coding point cloud data using direct mode for inter prediction in g-pcc

Publications (1)

Publication Number Publication Date
CN117999580A true CN117999580A (zh) 2024-05-07

Family

ID=90889574

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280063734.7A Pending CN117999580A (zh) 2021-09-27 2022-09-20 在g-pcc中使用用于帧间预测的直接模式对点云数据进行译码

Country Status (1)

Country Link
CN (1) CN117999580A (zh)

Similar Documents

Publication Publication Date Title
US20210407143A1 (en) Planar and azimuthal mode in geometric point cloud compression
JP2023520855A (ja) ジオメトリベースのポイントクラウド圧縮における角度モードおよび方位角モードについてのレーザー角度のコーディング
CN115298698A (zh) 基于几何的点云压缩中用于角度模式和方位角模式的激光器角度的译码
WO2022147015A1 (en) Hybrid-tree coding for inter and intra prediction for geometry coding
CN118160006A (zh) 用于预测性基于几何的点云压缩的具有半径插值的帧间预测译码
CA3189639A1 (en) Gpcc planar mode and buffer simplification
US11871037B2 (en) Sorted laser angles for geometry-based point cloud compression (G-PCC)
US20230099908A1 (en) Coding point cloud data using direct mode for inter-prediction in g-pcc
CN117999580A (zh) 在g-pcc中使用用于帧间预测的直接模式对点云数据进行译码
US11910021B2 (en) Planar and direct mode signaling in G-PCC
US20230018907A1 (en) Occupancy coding using inter prediction in geometry point cloud compression
US20230177739A1 (en) Local adaptive inter prediction for g-pcc
WO2023059446A1 (en) Planar and direct mode signaling in g-pcc
CN117561544A (zh) 几何点云压缩中使用帧间预测进行的占用译码
CN117121492A (zh) 使用帧间预测的对几何体点云压缩(gpcc)平面模式的性能提高
WO2023102484A1 (en) Local adaptive inter prediction for g-pcc
KR20230170908A (ko) 인터 예측을 사용한 지오메트리 포인트 클라우드 압축 (gpcc) 평면 모드의 성능 개선
WO2024086604A1 (en) Decoding attribute values in geometry-based point cloud compression
CN116648914A (zh) 用于基于几何的点云压缩的使用道路和地面物体标记的全局运动估计
TW202408244A (zh) 用於幾何點雲端壓縮的內部預測譯碼
KR20230125786A (ko) 지오메트리 기반 포인트 클라우드 압축을 위한 도로 및 그라운드 물체 라벨을 사용한 글로벌 모션 추정
TW202420822A (zh) 使用垂直預測進行幾何點雲壓縮
CN116636204A (zh) 用于几何编解码的帧间和帧内预测的混合树编解码
CN116711313A (zh) 用于几何体点云压缩的帧间预测编解码

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination