CN117643062A - 点云数据的发送装置和由发送装置执行的方法及点云数据的接收装置和由接收装置执行的方法 - Google Patents
点云数据的发送装置和由发送装置执行的方法及点云数据的接收装置和由接收装置执行的方法 Download PDFInfo
- Publication number
- CN117643062A CN117643062A CN202280047124.8A CN202280047124A CN117643062A CN 117643062 A CN117643062 A CN 117643062A CN 202280047124 A CN202280047124 A CN 202280047124A CN 117643062 A CN117643062 A CN 117643062A
- Authority
- CN
- China
- Prior art keywords
- information
- point cloud
- attribute
- value
- pcc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 299
- 230000002123 temporal effect Effects 0.000 claims abstract description 94
- 101150030514 GPC1 gene Proteins 0.000 claims description 16
- 230000006835 compression Effects 0.000 abstract description 15
- 238000007906 compression Methods 0.000 abstract description 14
- 230000008569 process Effects 0.000 description 210
- 238000012545 processing Methods 0.000 description 173
- 238000005538 encapsulation Methods 0.000 description 80
- 230000011664 signaling Effects 0.000 description 67
- 230000006870 function Effects 0.000 description 55
- 238000013139 quantization Methods 0.000 description 50
- 230000009466 transformation Effects 0.000 description 50
- 230000005540 biological transmission Effects 0.000 description 38
- 238000006243 chemical reaction Methods 0.000 description 17
- 230000000007 visual effect Effects 0.000 description 16
- 238000009877 rendering Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 13
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 13
- 238000004458 analytical method Methods 0.000 description 10
- 230000015572 biosynthetic process Effects 0.000 description 9
- AWSBQWZZLBPUQH-UHFFFAOYSA-N mdat Chemical compound C1=C2CC(N)CCC2=CC2=C1OCO2 AWSBQWZZLBPUQH-UHFFFAOYSA-N 0.000 description 9
- 238000012805 post-processing Methods 0.000 description 9
- 230000011218 segmentation Effects 0.000 description 9
- 238000003786 synthesis reaction Methods 0.000 description 9
- 230000001131 transforming effect Effects 0.000 description 9
- 238000002310 reflectometry Methods 0.000 description 7
- 238000005070 sampling Methods 0.000 description 7
- 235000014347 soups Nutrition 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 6
- 230000000750 progressive effect Effects 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 239000003086 colorant Substances 0.000 description 4
- 101100287577 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) gpe-1 gene Proteins 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 239000011449 brick Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- MKXZASYAUGDDCJ-NJAFHUGGSA-N dextromethorphan Chemical compound C([C@@H]12)CCC[C@]11CCN(C)[C@H]2CC2=CC=C(OC)C=C21 MKXZASYAUGDDCJ-NJAFHUGGSA-N 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
提供了点云数据的发送设备和由发送设备执行的方法,以及接收设备和由接收设备执行的方法。根据本公开,由用于点云数据的接收设备执行的方法可以包括以下步骤:获得包括点云数据的基于几何的点云压缩(G‑PCC)文件,该G‑PCC文件包括关于样本组的信息和关于时间级别的信息,其中,该G‑PCC文件中的样本是基于一个或更多个时间级别进行分组的;以及基于关于样本组的信息和关于时间级别的信息,从G‑PCC文件中的样本当中提取属于目标时间级别的一个或更多个样本。
Description
技术领域
本公开涉及用于处理点云内容的方法和装置。
背景技术
将点云内容表达为作为属于表示三维空间的坐标系的一组点的点云。点云内容可以表示三维媒体,并且被用于提供各种服务,诸如虚拟现实(virtual reality,VR)、增强现实(augmented reality,AR)、混合现实(mixed reality,MR)以及自动驾驶(self-driving)服务。由于需要数万至数十万的点数据来表达点云内容,因此需要高效处理大量点数据的方法。
发明内容
技术问题
本公开提供了一种高效处理点云数据的装置和方法。本公开提供了一种用于解决等待时间以及编码/解码复杂度的点云数据处理方法和装置。
另外,本公开提供了一种支持在基于几何(geometry)的点云压缩数据的携带(carriage)方面的时间可缩放性(temporal scalability)的装置和方法。
另外,本公开提出了这样的一种装置和方法,即,该装置和方法用于在文件中的单个轨道(track)中高效存储G-PCC比特流,或者将该G-PCC比特流分开存储在多个轨道中并且提供点云内容服务,该点云内容服务提供该G-PCC比特流的信令。
另外,本公开提出了一种用于处理文件存储技术以支持高效访问所存储的G-PCC比特流的装置和方法。
本公开所解决的技术问题不限于上述技术问题,并且本领域技术人员通过以下描述将清楚本文未描述的其它技术问题。
技术方案
根据本公开的实施方式的由点云数据的接收装置执行的方法可以包括以下步骤:获取包括点云数据的基于几何的点云压缩(geometry-based point cloud compression,G-PCC)文件,其中,该G-PCC文件包括关于样本组的信息,在样本组中,该G-PCC文件中的样本是基于一个或更多个时间级别(temporal level)进行分组的,并且其中,该G-PCC文件还包括关于时间级别的信息;以及基于关于样本组的信息和关于时间级别的信息,从G-PCC文件中的样本当中提取属于目标时间级别的一个或更多个样本。
根据本公开的另一实施方式的点云数据的接收装置可以包括存储器和至少一个处理器。所述至少一个处理器可以获取包括点云数据的基于几何的点云压缩(G-PCC)文件,其中,该G-PCC文件包括关于样本组的信息,其中,该G-PCC文件中的样本是基于一个或更多个时间级别进行分组的,并且其中,该G-PCC文件还包括关于时间级别的信息;以及基于关于样本组的信息和关于时间级别的信息,从G-PCC文件中的样本当中提取属于目标时间级别的一个或更多个样本。
根据本公开的另一实施方式的由点云数据的发送装置执行的方法可以:生成关于样本组的信息,在样本组中,基于几何的点云压缩(G-PCC)样本是基于一个或更多个时间级别进行分组的;以及生成包括关于样本组的信息、关于时间级别的信息以及点云数据的G-PCC文件。
根据本公开的另一实施方式的点云数据的发送装置可以包括存储器和至少一个处理器。所述至少一个处理器可以:生成关于样本组的信息,在样本组中,基于一个或更多个时间级别来对基于几何的点云压缩(G-PCC)样本进行分组;并且生成包括关于样本组的信息、关于时间级别的信息以及点云数据的G-PCC文件。
有益效果
根据本公开的实施方式的装置和方法可以以高效率处理点云数据。
根据本公开的实施方式的装置和方法可以提供高质量点云服务。
根据本公开的实施方式的装置和方法可以提供用于提供诸如VR服务和自动驾驶服务的通用服务的点云内容。
根据本公开的实施方式的装置和方法可以提供用于高效地访问G-PCC分量当中的期望分量的时间可缩放性。
根据本公开的实施方式的装置和方法可以支持时间可缩放性,使得可以以与网络功能或解码器功能一致的高级别来操纵数据,并由此可以提高点云内容提供系统的性能。
根据本公开的实施方式的装置和方法可以通过减少用信号通知帧速率信息的比特来增加比特效率。
根据本公开的实施方式的装置和方法可以通过减少回放复杂度方面的增加来使得能够实现顺畅且渐进的回放。
附图说明
图1是例示根据本公开的实施方式的用于提供点云内容的系统的示例的框图。
图2是例示根据本公开的实施方式的提供点云内容的过程的示例的框图。
图3例示了根据本公开的实施方式的获取点云视频的过程的示例。
图4例示了根据本公开的实施方式的点云编码设备的示例。
图5例示了根据本公开的实施方式的体素(voxel)的示例。
图6例示了根据本公开的实施方式的八叉树(octree)和占用码(occupancy code)的示例。
图7例示了根据本公开的实施方式的邻居模式(neighbor pattern)的示例。
图8例示了根据本公开的实施方式的按照LOD距离值的点配置的示例。
图9例示了根据本公开的实施方式的各个LOD的点的示例。
图10是例示根据本公开的实施方式的点云解码设备的示例的框图。
图11是例示根据本公开的实施方式的点云解码设备的另一示例的框图。
图12是例示根据本公开的实施方式的发送装置的另一示例的框图。
图13是例示根据本公开的实施方式的接收装置的另一示例的框图。
图14例示了根据本公开的实施方式的能够与用于发送和接收点云数据的方法/装置交互工作的结构的示例。
图15是例示根据本公开的实施方式的发送装置的另一示例的框图。
图16例示了其中将根据本公开的实施方式的边界框(bounding box)在空间上分割成三维块的示例。
图17是例示根据本公开的实施方式的接收装置的另一示例的框图。
图18例示了根据本公开的实施方式的比特流的结构的示例。
图19例示了根据本公开的实施方式的比特流中的分量之间的标识关系的示例。
图20例示了根据本公开的实施方式的比特流中的分量之间的参考关系。
图21例示了根据本公开的实施方式的SPS语法结构的示例。
图22例示了根据本公开的实施方式的对属性类型以及位置分量之间的对应关系的指示的示例。
图23例示了根据本公开的实施方式的GPS语法结构的示例。
图24例示了根据本公开的实施方式的APS语法结构的示例。
图25例示了根据本公开的实施方式的属性编码类型表的示例。
图26例示了根据本公开的实施方式的图块清单(tile inventory)语法结构的示例。
图27和图28例示了根据本公开的实施方式的几何切片语法结构的示例。
图29和图30例示了根据本公开的实施方式的属性切片语法结构的示例。
图31例示了根据本公开的实施方式的元数据切片语法结构。
图32例示了根据本公开的实施方式的TLV封装结构的示例。
图33例示了根据本公开的实施方式的TLV封装语法结构和有效载荷类型的示例。
图34例示了根据本公开的实施方式的包括单个轨道的文件的示例。
图35例示了根据本公开的实施方式的包括多个轨道的文件的示例。
图36和图37是例示支持时间可缩放性的实施方式的流程图。
图38和图39是例示确定帧速率信息的信令和获取的示例的流程图。
图40和图41是例示能够防止冗余信令问题的实施方式的流程图。
具体实施方式
在下文中,将参照附图详细地描述本公开的实施方式,以使本公开所属于的技术领域的普通技术人员可以容易地实现它们。本公开可以以多种不同的形式实施,并且不限于本文描述的实施方式。
在描述本公开时,已知功能和配置的详细描述在其可能模糊本公开的主旨时可以省略。在附图中,省略了与本公开的描述无关的部分,并且相似的附图标记被赋予相似的部分。
在本公开中,当一个组件“连接”、“联接”或“链接”到另一组件时,它不仅可以包括直接连接关系,还可以包括在其间存在另一组件的间接连接关系。另外,当说成一个组件“包括”或“具有”另一组件时,这指示除非具体描述,否则不是排除而是还包括其它组件。
在本公开中,诸如第一、第二等的术语仅被用于将一个组件与其它组件区分开的目的,并且除非另外指定,否则不限制组件的顺序或重要性。因此,在本公开的范围内,一个实施方式中的第一组件在另一实施方式中可以被称为第二组件,类似地,一个实施方式中的第二组件在另一实施方式中被称为第一组件。
在本公开中,彼此进行区分的组件用于清楚地解释其特征,并不一定意味着将这些组件分开。即,多个组件可以集成以形成一个硬件或软件单元,或者一个组件可以分布以形成多个硬件或软件单元。因此,即使没有具体提及,这种集成或分布的实施方式也被包括在本公开的范围内。
在本公开中,各种实施方式中所描述的组件并不一定是必不可少的组件,其中一些组件可以是可选的组件。因此,由一个实施方式中描述的组件的子集组成的实施方式也被包括在本公开的范围内。另外,除了在各种实施方式中描述的组件之外还包括其它组件的实施方式也被包括在本公开的范围内。
本公开涉及点云相关数据的编码和解码,并且除非在本公开中重新定义本公开中所使用的术语,否则这些术语可以具有本公开所属技术领域中常用的一般含义。
在本公开中,术语“/”和“、”应被解释为指示“和/或”。例如,表达“A/B”和“A,B”可以意指“A和/或B”。此外,“A/B/C”和“A/B/C”可以意指“A、B和/或C中的至少一个”。
在本公开中,术语“或”应被解释为指示“和/或”。例如,表达“A或B”可以包括1)仅“A”,2)仅“B”,和/或3)“A和B”两者。换言之,在本公开中,术语“或”应被解释为指示“另外地或另选地”。
本公开涉及点云相关数据的压缩。可以将本发明的各种方法或实施方式应用于运动图像专家组(moving picture experts group,MPEG)的点云压缩或点云编码(pointcloud coding,PCC)标准(例如,G-PCC或V-PCC标准)或者下一代视频/图像编码标准。
在本公开中,“点云”可以是指位于三维空间中的一组点。而且,在本公开中,“点云内容”被表达为点云,并且可以是指“点云视频/图像”。在下文中,将‘点云视频/图像’称为‘点云视频’。点云视频可以包括一个或更多个帧,并且一个帧可以是静止图像或图片(picture)。因此,点云视频可以包括点云图像/帧/图片,并且可以被称为“点云图像”、“点云帧”、以及“点云图片”中的任一者。
在本公开中,“点云数据”可以是指与点云中的各个点相关的数据或信息。点云数据可以包括几何和/或属性。另外,点云数据还可以包括元数据。可以将点云数据称为“点云内容数据”或“点云视频数据”等。另外,可以将点云数据称为“点云内容”、“点云视频”、“G-PCC数据”等。
在本公开中,可以以基于坐标系的框形状来表示与点云数据相对应的点云对象,并且可以将基于坐标系的框形状称为边界框。即,边界框可以是能够容纳点云的所有点的长方体,并且可以是包括源点云帧的长方体。
在本公开中,几何包括各个点的位置(或位置信息),并且该位置可以由表示三维坐标系(例如,由x轴、y轴以及z轴组成的坐标系)的参数(例如,x轴值、y轴值、以及z轴值)来表示。可以将几何称为“几何信息”。
在本公开中,属性可以包括各个点的属性,并且属性可以包括各个点的纹理信息、颜色(RGB或YCbCr)、反射率(r)、透明度等中的一个或更多个。可以将属性称为“属性信息”。元数据可以包括与稍后要描述的获取过程中的获取相关的各种数据。
点云内容提供系统的概述
图1例示了根据本公开的实施方式的用于提供点云内容的系统(下文中,被称为‘点云内容提供系统’)的示例。图2例示了点云内容提供系统提供点云内容的过程的示例。
如图1所示,点云内容提供系统可以包括发送装置10和接收装置20。点云内容提供系统可以通过发送装置10和接收装置20的操作,来执行图2所示的获取过程S20、编码过程S21、发送过程S22、解码过程S23、渲染过程S24和/或反馈过程S25。
发送装置10获取点云数据,并且通过针对所获取的点云数据(源点云数据)的一系列过程(例如,编码过程)来输出比特流,以便提供点云内容。这里,可以通过编码过程以比特流的形式输出点云数据。在一些实施方式中,发送装置10可以通过数字存储介质或网络以文件或流传输(流传输段(segment))的形式将输出比特流发送至接收装置20。数字存储介质可以包括多种存储介质,诸如USB、SD、CD、DVD、蓝光光碟、HDD、以及SSD。接收装置20可以将所接收到的数据(例如,经编码的点云数据)处理(例如,解码或重构)成源点云数据并将其渲染。可以通过这些过程向用户提供点云内容,并且本公开可以提供为高效地执行一系列这些过程所需的各种实施方式。
如图1所例示的,发送装置10可以包括:获取单元11、编码单元12、封装处理单元13以及发送单元14,并且接收装置20可以包括:接收单元21、解封装处理单元22、解码单元23、以及渲染单元24。
获取单元11可以执行通过捕获、合成或生成过程来获取点云视频的过程S20。因此,可以将获取单元11称为‘点云视频获取单元’。
可以通过获取过程(S20)来生成多个点的点云数据(几何和/或属性等)。而且,通过获取过程(S20),可以生成与点云视频的获取相关的元数据。而且,可以通过获取过程(S20)来生成指示点云之间的连接信息的网格数据(例如,三角形数据)。
元数据可以包括初始观看取向元数据。初始观看取向元数据可以指示点云数据是表示正面还是背面的数据。可以将元数据称为“辅助数据”,其是点云的元数据。
所获取的点云视频可以包括多边形文件格式或者Stanford三角形格式(PLY)文件。由于点云视频具有一个或更多个帧,因此,所获取的点云视频可以包括一个或更多个PLY文件。PLY文件可以包括各个点的点云数据。
为了获取点云视频(或点云数据),获取单元11可以由能够获取深度(深度信息)的相机设备和能够提取与深度信息相对应的颜色信息的RGB相机的组合组成。这里,能够获取深度信息的相机设备可以是红外图案投影仪和红外相机的组合。另外,获取单元11可以由激光雷达(LiDAR)组成,并且激光雷达可以使用雷达系统,该雷达系统用于通过测量激光脉冲被发射以及在被反射之后返回所需的时间来测量反射器的位置坐标。
获取单元110可以从深度信息中提取由三维空间中的点组成的几何的形状(shapeof geometry),并且可以从RGB信息中提取表示各个点的颜色或反射的属性。
作为提取(或捕获、获取等)点云视频(或点云数据)的方法,可以有捕获中央对象的面向内的方法和捕获外部环境的面向外的方法。图3示出了面向内的方法和面向外的方法的示例。图3的(a)示出了面向内的方法的示例,以及图3的(b)示出了面向外的方法的示例。
如图3的(a)所例示的,当将车辆中的当前周围环境配置为点云内容时(诸如在自动驾驶时),可以使用面向内的方法。如图3的(b)所例示的,当在VR/AR环境中将诸如人物、玩家、对象、行动者等的核心对象配置为能够由用户以360度自由观看的点云内容时,可以使用面向外的方法。当通过多个相机配置点云内容时,为了设定相机之间的全局坐标系,可以在捕获内容之前执行校准相机的过程。可以利用基于所捕获的点云视频来合成任意点云视频的方法。
另一方面,在为由计算机生成的虚拟空间提供点云视频的情况下,可能不执行通过真实相机的捕获。在这种情况下,可能需要后处理来改善所捕获的点云内容的质量。例如,在获取过程(S20)中,可以在由相机设备提供的范围内调整最大/最小深度值,但是可以执行用于去除不想要的区域(例如,背景)或不想要的区域的点数据的后处理,或者用于识别所连接的空间并填充空间孔(spatial hole)的后处理。作为另一示例,可以执行这样的后处理,即,通过基于各个相机的位置坐标将各个点变换到全局坐标系中的变换过程,来将从共享空间坐标系的相机提取的点云数据集成到单个内容中。通过这种方式,可以生成一个宽范围内的点云内容,或者可以获取具有高密度点的点云内容。
编码单元12可以执行将由获取单元11生成的数据(例如,几何、属性和/或元数据,和/或网格数据等)编码成一个或更多个比特流的编码过程(S21)。因此,可以将编码单元12称为‘点云视频编码器’。编码单元12可以串行或并行地编码由获取单元11生成的数据。
由编码单元12执行的编码过程S21可以是基于几何的点云压缩(G-PCC)。编码单元12可以执行一系列过程,诸如用于压缩和编码效率的预测、变换、量化、以及熵编码。
经编码的点云数据可以以比特流的形式输出。基于G-PCC过程,编码单元12可以将点云数据分割成几何和属性,并如下所述对它们进行编码。在这种情况下,输出比特流可以包括包含经编码的几何的几何比特流以及包含经编码的属性的属性比特流。另外,输出比特流还可以包括包含元数据的元数据比特流、包含辅助数据的辅助比特流、以及包含网格数据的网格数据比特流中的一个或更多个。下面将更详细地描述编码过程(S21)。可以将包括经编码的点云数据的比特流称为‘点云比特流’或‘点云视频比特流’。
封装处理单元13可以执行以文件或段的形式封装从解码单元12输出的一个或更多个比特流的过程。因此,可以将封装处理单元13称为‘文件/段封装模块’。尽管附图示出了其中封装处理单元13由与发送单元14相关的单独组件/模块组成的示例,但是在一些实施方式中,可以将封装处理单元13包括在发送单元14中。
封装处理单元13可以以诸如ISO基本媒体文件格式(ISO Base Media FileFormat,ISOBMFF)的文件格式封装数据,或者以其它DASH段的形式来处理数据。在一些实施方式中,封装处理单元13可以包括文件格式的元数据。可以将元数据包括在例如ISOBMFF文件格式的各种级别的框中,或者作为文件内的单独轨道中的数据。在一些实施方式中,封装处理单元130可以将元数据本身封装到文件中。由封装处理单元13处理的元数据可以从图中未示出的元数据处理单元来发送。元数据处理单元可以被包括在编码单元12中,或者可以被配置为单独的组件/模块。
发送单元14可以执行将根据文件格式的过程(用于发送的过程)应用于‘经封装的点云比特流’的发送过程(S22)。发送单元140可以通过数字存储介质或网络,来将比特流或包括比特流的文件/段发送至接收装置20的接收单元21。因此,可以将发送单元14称为‘发送器’或‘通信模块’。
发送单元14可以根据任意传输协议来处理点云数据。这里,‘根据任意传输协议处理点云数据’可以是‘用于发送的处理’。用于发送的处理可以包括用于通过广播网络发送的处理/用于通过宽带发送的处理等。在一些实施方式中,发送单元14不仅可以从元数据处理单元接收点云数据,而且可以从元数据处理单元接收元数据,并且可以对所发送的元数据执行用于发送的处理。在一些实施方式中,用于发送的处理可以由发送处理单元执行,并且发送处理单元可以被包括在发送单元14中,或者被配置为与发送单元14分离的组件/模块。
接收单元21可以接收由发送装置10发送的比特流或者包括该比特流的文件/段。根据所发送的信道,接收单元21可以通过广播网络接收比特流或包括比特流的文件/段,或者可以通过宽带接收比特流或包括比特流的文件/段。另选地,接收单元21可以通过数字存储介质接收比特流或者包括比特流的文件/段。
接收单元21可以根据传输协议对所接收到的比特流或者包括比特流的文件/段执行处理。接收单元21可以执行发送处理(用于发送的处理)的逆过程,以与由发送装置10执行的用于发送的处理相对应。接收单元21可以将所接收到的数据当中的经编码的点云数据发送至解封装处理单元22,并可以将元数据发送至元数据解析单元。元数据可以采用信令表的形式。在一些实施方式中,可以在接收处理单元中执行用于发送的处理的逆过程。接收处理单元、解封装处理单元22、以及元数据解析单元中的每一个都可以被包括在接收单元21中,或者可以被配置为与接收单元21分离的组件/模块。
解封装处理单元22可以对从接收单元21或接收处理单元接收的文件格式的点云数据(即,文件格式的比特流)进行解封装。因此,可以将解封装处理单元22称为‘文件/段解封装模块’。
解封装处理单元22可以通过根据ISOBMFF等对文件进行解封装,来获取点云比特流或元数据比特流。在一些实施方式中,可以将元数据(元数据比特流)包括在点云比特流中。可以将所获取的点云比特流发送至解码单元23,并且可以将所获取的元数据比特流发送至元数据处理单元。元数据处理单元可以被包括在解码单元23中,或者可以被配置为单独的组件/模块。由解封装处理单元23获得的元数据可以采用文件格式中的框或轨道的形式。若必要的话,解封装处理单元23可以从元数据处理单元接收解封装所需的元数据。元数据可以被发送至解码单元23并在解码过程中使用(S23),或者可以被发送至渲染单元24并在渲染过程中使用(S24)。
解码单元23可以接收比特流并且执行与编码单元12的操作相对应的操作,从而执行对点云比特流(经编码的点云数据)进行解码的解码过程(S23)。因此,可以将解码单元23称为‘点云视频解码器’。
解码单元23可以将点云数据分割成几何和属性并对它们进行解码。例如,解码单元23可以从被包括在点云比特流中的几何比特流重构(解码)几何,并且基于经重构的几何和被包括在点云比特流中的属性比特流来恢复(解码)属性。三维点云视频/图像可以基于根据经重构的几何的位置信息以及根据经解码的属性的属性(诸如颜色或纹理)来进行重构。下面将更详细地描述解码过程(S23)。
渲染单元24可以执行对经重构的点云视频进行渲染的渲染过程S24。因此,可以将渲染单元24称为‘渲染器’。
渲染过程S24可以指的是在3D空间中渲染和显示点云内容的过程。渲染过程S24可以基于通过解码过程解码的点的位置信息和属性信息,来根据期望的渲染方法执行渲染。
可以以具有特定厚度的顶点、以顶点位置为中心的具有特定最小尺寸的立方体、或者以顶点位置为中心的圆来渲染点云内容的点。用户可以通过VR/AR显示器或者通用显示器来观看经渲染的结果的全部或部分。经渲染的视频可以通过显示单元来显示。用户可以通过VR/AR显示器或者通用显示器来观看经渲染的结果的全部或部分。
反馈过程S25可以包括将在渲染过程S24或显示过程期间获取的各种反馈信息发送至发送装置10或接收装置20中的其它组件的过程。反馈过程S25可以由图1的接收装置20中所包括的组件中的一个或更多个组件来执行,或者可以由图10和图11中所示的组件中的一个或更多个组件来执行。在一些实施方式中,反馈过程S25可以由‘反馈单元’或‘感测/跟踪单元’来执行。
可以通过反馈过程(S25)来提供点云内容消费的交互性。在一些实施方式中,在反馈过程S25中,可以反馈头部取向信息、指示用户当前正在观看的区域的视口信息等。在一些实施方式中,用户可以与在VR/AR/MR/自动驾驶环境中实现的那些交互。在这种情况下,在反馈过程S25中,将与交互相关的信息从发送装置10发送至服务提供商。在一些实施方式中,可以不执行反馈过程(S25)。
头部取向信息可以指的是关于用户的头部位置、角度、移动等的信息。基于该信息,可以计算关于点云视频中的用户当前正在观看的区域的信息(即,视口信息)。
视口信息可以是关于点云视频中的用户当前正在观看的区域的信息。视点(viewpoint)是点云视频中的用户在正在观看的点,并且可以是指视口区域的中心点。即,视口是以视点为中心的区域,并且该区域的大小和形状可以由视场(field of view,FOV)来确定。通过使用视口信息的注视(gaze)分析,可以检查用户如何消费点云视频、用户注视点云视频的哪个区域多长时间等。注视分析可以在接收侧(接收装置)执行,并且通过反馈信道发送至发送侧(发送装置)。诸如VR/AR/MR显示器的装置可以基于用户的头部位置/方向、由该装置支持的垂直或水平FOV等来提取视口区域。
在一些实施方式中,反馈信息不仅可以被发送至发送侧(发送装置),而且可以在接收侧(接收装置)被消费。即,可以使用反馈信息来执行接收侧(接收装置)的解码过程、渲染过程等。
例如,接收装置20可以使用头部取向信息和/或视口信息,优先地仅解码和渲染用户当前正在观看的区域的点云视频。另外,接收单元21可以接收所有点云数据,或者基于取向信息和/或视口信息来接收由该取向信息和/或视口信息指示的点云数据。而且,解封装处理单元22可以解封装所有点云数据,或者基于取向信息和/或视口信息来解封由该取向信息和/或视口信息指示的点云数据。而且,解码单元23可以解码所有点云数据,或者基于取向信息和/或视口信息来解码由该取向信息和/或视口信息指示的点云数据。
点云编码设备的概述
图4例示了根据本公开的实施方式的点云编码设备400的示例。图4的点云编码设备400在配置和功能方面可以对应于图1的编码单元12。
如图4所示,点云编码设备400可以包括:坐标系变换单元405、几何量化单元410、八叉树分析单元415、近似单元420、几何编码单元425、重构单元430、以及属性变换单元440、RAHT变换单元445、LOD生成单元450、提升(lifting)单元455、属性量化单元460、属性编码单元465、和/或颜色变换单元435。
由获取单元11获取的点云数据可以经历根据网络情形或应用来调整点云内容的质量(例如,无损、有损、接近无损)的过程。另外,可以无损地发送所获取的点云内容的各个点,但是在该情况下,因为点云内容的大小较大,所以实时流传输是不可能的。因此,为了流畅地提供点云内容,需要根据最大目标比特率来重构点云内容的过程。
调整点云内容的质量的过程可以是重构和编码点的位置信息(被包括在几何信息中的位置信息)或颜色信息(被包括在属性信息中的颜色信息)的过程。可以将重构和编码点的位置信息的过程称为几何编码,并且可以将重构和编码与各个点相关联的属性信息的过程称为属性编码。
几何编码可以包括:几何量化过程、体素化过程、八叉树分析过程、近似过程、几何编码过程、和/或坐标系变换过程。而且,几何编码还可以包括几何重构过程。属性编码可以包括:颜色变换过程、属性变换过程、预测变换过程、提升变换过程、RAHT变换过程、属性量化过程、属性编码过程等。
几何编码
坐标系变换过程可以对应于变换点位置的坐标系的过程。因此,可以将坐标系变换过程称为‘变换坐标’。坐标系变换过程可以由坐标系变换单元405来执行。例如,坐标系变换单元405可以将点的位置从全局空间坐标系变换成三维空间(例如,以X轴、Y轴、以及Z轴的坐标系表达的三维空间)中的位置信息。可以将根据实施方式的3D空间中的位置信息称为‘几何信息’。
几何量化过程可以对应于量化点的位置信息的过程,并且可以由几何量化单元410来执行。例如,几何量化单元410可以在点的位置信息当中找到具有最小(x、y、z)值的位置信息,并且从各个点的位置信息中减去具有最小(x、y、z)位置的位置信息。另外,几何量化单元410可以将经相减的值乘以预设的量化比例值(scale value),然后将结果调整(降低或升高)到接近整数的值,从而执行量化过程。
体素化过程可以对应于将通过量化过程量化的几何信息与3D空间中存在的特定体素相匹配的过程。体素化过程也可以由几何量化单元410来执行。几何量化单元410可以基于点的位置信息来执行基于八叉树的体素化,以便重构应用量化过程的各个点。
图5示出了根据本公开的实施方式的体素的示例。体素可以是指用于存储关于3D中存在的点的信息的空间,类似于作为具有关于2D图像/视频的信息的最小单元的像素。体素是通过组合体积和像素而获得的混合词。如图5所例示的,体素指的是通过基于各个轴(x轴、y轴、以及z轴)将三维空间(2depth、2depth、2depth)分割成为单位(单位=1.0)而形成的三维立方空间。体素可以根据与体素组的位置关系来估计空间坐标,并且可以具有类似于像素的颜色或反射率信息。
在一个体素中可能不是只存在(匹配)一个点。即,在一个体素中可以存在与多个点相关的信息。另选地,可以将与被包括在一个体素中的多个点相关的信息集成到一个点信息中。这种调整可以选择性地执行。当一个体素被集成并表达为一个点信息时,可以基于体素中存在的点的位置值来设定体素的中心点的位置值,并且需要执行与其相关的属性变换过程。例如,可以将属性变换过程调整成被包括在体素中的点或体素的中心点的位置值,以及特定半径内的邻居点的颜色或反射率的平均值。
八叉树分析单元415可以使用八叉树来高效地管理体素的区域/位置。图6的(a)示出了根据本公开的实施方式的八叉树的示例。为了高效地管理二维图像的空间,如果基于x轴和y轴分割整个空间,则创建四个空间,并且当基于x轴和y轴分割四个空间中的各个空间时,为各个小空间创建四个空间。可以对区域进行分割,直到叶节点变成像素为止,并且可以将四叉树(quadtree)用作根据区域的大小和位置进行高效管理的数据结构。
同样地,本公开可以应用同一方法来根据空间的位置和大小高效地管理3D空间。然而,如图6的(a)的中间所示,由于添加了z轴,因此,当基于x轴、y轴、以及z轴分割三维空间时,可以创建8个空间。另外,如图6的(a)的右侧所示,当基于x轴、y轴、以及z轴再次分割8个空间中的各个空间时,可以为各个小空间创建8个空间。
八叉树分析单元415可以分割该区域,直到叶节点变成体素,并且可以使用能够管理八个子节点区域的八叉树数据结构,以用于根据该区域的大小和位置进行高效管理。
由于使用八叉树管理反映点位置的体素,因此,八叉树的总体积应当被设定成(0、0、0)到(2d、2d、2d)。将2d设定成构成包围点云的所有点的最小边界框的值,并且d是八叉树的深度。用于计算d值的等式可以与下式1相同,其中,是应用量化过程的点的位置值。
[式1]
可以将八叉树表达为占用码,并且图6的(b)示出了根据本公开的实施方式的占用码的示例。八叉树分析单元415可以在各个节点中包括一个点时将节点的占用码表达为1,而在不包括该点时将节点的占用码表达为0。
各个节点都以具有指示8个子节点的占用的8比特位图。例如,由于与图6的(b)的第二深度(1-深度)相对应的节点的占用码是00100001,因此,与第三节点和第八节点相对应的空间(体素或区域)可以包括至少一个点。而且,由于第三节点的子节点(叶节点)的占用码是10000111,因此,与叶节点当中的第一叶节点、第六叶节点、第七叶节点以及第八叶节点相对应的空间可以包括至少一个点。另外,由于第八节点的子节点(叶节点)的占用码是01001111,因此,与叶节点当中的第二叶节点、第五叶节点、第六叶节点、第七叶节点以及第八叶节点相对应的空间可以包括至少一个点。
几何编码过程可以对应于对占用码执行熵编码的过程。几何编码过程可以由几何编码单元425来执行。几何编码单元425可以对占用码执行熵编码。所生成的占用码可以被立即编码,或者可以通过帧内/帧间(intra/inter)编码过程来编码,以提高压缩效率。接收装置20可以通过占用码重构八叉树。
另一方面,在特定区域没有点或只有很少的点的情况下,对所有区域进行体素化可能是低效的。即,由于在特定区域中存在很少的点,因此,可能不需要构造整个八叉树。对于这种情况,可能需要早期终止方法。
点云编码设备400可以仅针对特定区域直接发送点的位置,或者使用表面模型基于体素来重新配置特定区域内的点的位置,而不是针对特定区域(不对应于叶节点的特定区域)将与该特定区域相对应的节点(特定节点)分割成8个亚节点(sub-node)(子节点)。
用于针对特定节点直接发送各个点的位置的模式可以是直接模式。点云编码设备400可以检查是否满足启用直接模式的条件。
启用直接模式的条件是:1)应当启用使用直接模式的选项,2)特定节点不对应于叶节点,3)在特定节点内应当存在低于阈值的点,以及4)要直接发送的点的总数不超过限制值。
当满足所有上述条件时,点云编码设备400可以通过几何编码单元425直接针对特定节点对点的位置值进行熵编码和发送。
使用表面模型基于体素来重构特定区域中的点的位置的模式可以是三角汤(trisoup)模式。三角汤模式可以由近似单元420来执行。近似单元420可以确定八叉树的特定级别,并且使用来自所确定的特定级别的表面模型基于体素来重构节点区域中的点的位置。
点云编码设备400可以选择性地应用三角汤模式。具体地,当应用三角汤模式时,点云编码设备400可以指定应用三角汤模式的级别(特定级别)。例如,当所指定的特定级别等于八叉树的深度(d)时,可以不应用三角汤模式。即,所指定的特定级别应当小于八叉树的深度值。
所指定的特定级别的节点的三维立方体区域被称为块,并且一个块可以包括一个或更多个体素。块或体素可以对应于砖块(brick)。各个块皆可以具有12个边,并且近似单元420可以检查各个边是否与具有点的被占用体素相邻。各个边皆可以与多个被占用体素相邻。与一体素相邻的边的特定位置被称为顶点,并且当多个被占用体素与一个边相邻时,近似单元420可以将这些位置的平均位置确定为顶点。
当存在顶点时,点云编码设备400可以通过几何编码单元425,对边的起始点(x、y、z)、边的方向向量(Δx、Δy、Δz)以及顶点的位置值(边内的相对位置值)进行熵编码。
几何重构过程可以对应于通过重构八叉树和/或近似八叉树来生成经重构的几何的过程。几何重构过程可以由重构单元430来执行。重构单元430可以通过三角形重构、上采样、体素化等来执行几何重构过程。
当在近似单元420中应用三角汤模式时,重构单元430可以基于边的起始点、边的方向向量以及顶点的位置值来重构三角形。为此,重构单元430可以如下式2所示计算各个顶点的质心值如下式3所示从各个顶点的值/>中减去质心值以导出经相减的值然后如下式4所示导出通过将经相减的值的所有平方相加而获得的值/>
[式2]
[式3]
[式4]
而且,重构单元430可以获得经相加的值的最小值,并且可以沿着具有最小值的轴执行投影过程。
例如,当x元素最小时,重构单元430可以基于块的中心沿着x轴投影各个顶点,并将它们投影在(y、z)平面中。另外,当通过将顶点投影到(y、z)平面上而导出的值是(ai,bi)时,重构单元430可以通过atan2(bi,ai)获得θ值,并且基于θ值对准顶点。
根据顶点的数量重构三角形的方法可以根据所对准的顺序通过组合如下表1所示的这些顶点来生成三角形。例如,如果有4个顶点(n=4),则可以形成两个三角形(1,2,3)和(3,4,1)。第一个三角形(1,2,3)可以由来自所对准的顶点的第一顶点、第二顶点以及第三顶点组成,第二个三角形(3,4,1)可以由第三顶点、第四顶点以及第一顶点组成。
[表1]由1、……、n排序的顶点形成的三角形
重构单元430可以通过沿着三角形的边在中间添加点来执行用于体素化的上采样过程。重构单元430可以基于上采样因子和块的宽度来生成附加点。这些点可以被称为细化顶点。重构单元430可以对细化顶点进行体素化,并且点云编码设备400可以基于体素化的位置值来执行属性编码。
在一些实施方式中,几何编码单元425可以通过应用上下文自适应算术编码来增加压缩效率。几何编码单元425可以使用算术码直接对占用码进行熵编码。在一些实施方式中,几何编码单元425基于邻居节点的占用自适应地执行编码(帧内编码),或者基于先前帧的占用码自适应地执行编码(帧间编码)。这里,帧可以是指同时生成的一组点云数据。帧内编码和帧间编码是可选的过程,因此可以省略。
压缩效率可以根据参考了多少邻居节点而改变,并且当比特大时,编码过程变得更加复杂,但是压缩效率可以通过将其偏向一侧来提高。例如,在具有3比特上下文的情况下,可以通过将其分割成23=8来执行编码。由于经分割和编码的部分可能影响实现复杂度,因此,必需调整适当的复杂度水平和压缩效率。
在帧内编码的情况下,几何编码单元425可以首先使用邻居节点的占用来获得邻居模式的值。图7示出了邻居模式的示例。
图7的(a)示出了与节点相对应的立方体(位于中心的立方体)和与立方体共享至少一个表面的六个立方体(邻居节点)。图中所示的节点是相同深度的节点。图中所示的数字表示分别与六个节点相关联的权重(1、2、4、8、16、32等)。根据邻居节点的位置顺序地给出各个权重。
图7的(b)示出了邻居模式值。邻居模式值是乘以被占用邻居节点(具有点的邻居节点)的权重的值的总和。因此,邻居模式值可以具有范围从0到63变动的值。当邻居模式值是0时,它指示在节点的邻居节点当中没有具有点的节点(被占用节点)。当邻居模式值是63时,它指示邻居节点都是被占用节点。在图7的(b)中,由于被赋予权重1、2、4以及8的邻居节点是被占用节点,因此,邻居模式值是15,其是1、2、4以及8的总和。
几何编码单元425可以根据邻居模式值来执行编码。例如,当邻居模式值是63时,几何编码单元425可以执行64种类型的编码。在一些实施方式中,几何编码单元425可以通过改变邻居模式值来降低编码复杂度,并且例如可以基于将64改变为10或6的表来执行邻居模式值的变化。
属性编码
属性编码可以对应于基于经重构的几何和坐标系变换之前的几何(源几何)来对属性信息进行编码的过程。由于属性可能取决于几何,因此,经重构的几何可以被用于属性编码。
如上所述,属性可以包括颜色、反射率等。可以将同一属性编码方法应用于被包括在属性中的信息或参数。颜色具有三个元素,反射率具有一个元素,并且各个元素都可以独立地处理。
属性编码可以包括:颜色变换过程、属性变换过程、预测变换过程、提升变换过程、RAHT变换过程、属性量化过程、属性编码过程等。可以选择性地使用预测变换过程、提升变换过程、以及RAHT变换过程,或者可以使用其中的一个或更多个过程的组合。
颜色变换过程可以对应于将属性中的颜色的格式变换成另一格式的过程。颜色变换过程可以由颜色变换单元435来执行。即,颜色变换单元435可以变换属性中的颜色。例如,颜色变换单元435可以执行用于将属性中的颜色从RGB变换成YCbCr的编码操作。在一些实施方式中,颜色变换单元435的操作(即,颜色变换过程)可以可选地根据被包括在属性中的颜色值来应用。
如上所述,当一个体素中存在一个或更多个点时,将体素中存在的点的位置值设定成体素的中心点,以便通过将它们集成到体素的一个点信息中来显示它们。因此,可能需要变换与点相关的属性值的过程。而且,即使执行三角汤模式,也可以执行属性变换过程。
属性变换过程可以对应于基于未执行几何编码的位置和/或经重构的几何来变换属性的过程。例如,属性变换过程可以对应于基于被包括在体素中的点的位置来变换具有该位置的点的属性的过程。属性变换过程可以由属性变换单元440来执行。
属性变换单元440可以计算体素的中心位置值,以及特定半径内的邻居点的属性值的平均值。另选地,属性变换单元440可以根据距中心位置的距离来向属性值应用权重,并且计算应用了权重的属性值的平均值。在这种情况下,各个体素具有位置和所计算的属性值。
当搜索存在于特定位置或半径内的邻居点时,可以利用K-D树或莫顿(Morton)码。K-D树是二叉搜索树,并且支持能够基于位置来管理点的数据结构,以使快速执行最近邻搜索(nearest neighbor search,NNS)。可以通过对所有点的3D位置信息(x,y,z)的比特进行混合来生成莫顿码。例如,当(x,y,z)是(5,9,1),并且(5,9,1)被表达为一比特时,它变成(0101,1001,0001),并且当该值以z、y以及x的顺序根据比特索引进行混合时,它变成010001000111,并且该值变成1095。即,1095变成(5,9,1)的莫顿码值。基于莫顿码对点进行对准,并且最近邻搜索(NNS)可以通过深度优先遍历过程来进行。
在属性变换过程之后,可能存在即使在用于属性编码的另一变换过程中也需要最近邻搜索(NNS)的情况。在这种情况下,可以利用K-D树或莫顿码。
预测变换过程可以对应于基于与当前点(对应于预测目标的点)相邻的一个或更多个点(邻居点)的属性值来预测当前点的属性值的过程。预测变换过程可以由细节级别(level-of-detail,LOD)生成单元450来执行。
预测变换是应用LOD变换技术的方法,并且LOD生成单元450可以基于各个点的LOD距离值来计算和设定各个点的LOD值。
图8示出了根据LOD距离值的点配置的示例。在图8中,基于箭头的方向,第一图表示原始点云内容,第二图表示最低LOD的点的分布,而第七图表示最高LOD的点的分布。如图8所例示的,最低LOD的点可以稀疏地分布,而最高LOD的点可以密集地分布。即,随着LOD增加,点之间的间隔(或距离)可能变得更短。
存在于点云中的各个点都可以针对各个LOD来进行分离,并且针对各个LOD的点的配置可以包括属于低于LOD值的LOD的点。例如,具有LOD级别2的点的配置可以包括属于LOD级别1和LOD级别2的所有点。
图9示出了各个LOD的点配置的示例。图9的上图示出了在三维空间中分布的点云内容中的点的示例(P0至P9)。图9的原始顺序指示在LOD生成之前点P0至P9的顺序,而图9的基于LOD的顺序指示根据LOD生成的点的顺序。
如图9所例示的,可以针对各个LOD重新排列点,并且高LOD可以包括属于低LOD的点。例如,LOD0可以包括P0、P5、P4和P2,并且LOD1可以包括LOD0的点以及P1、P6和P3。而且,LOD2可以包括LOD0的点、LOD1的点、P9、P8以及P7。
LOD生成单元450可以生成用于预测变换的各个点的预测器。因此,当有N个点时,可以生成N个预测器。预测器可以基于各个点的LOD值、邻居点的索引信息、以及距邻居点的距离值,来计算和设定权重值(=1/距离)。这里,邻居点可以是存在于针对各个LOD设定的距当前点的距离内的点。
另外,预测器可以将邻居点的属性值乘以‘设定的权重值’,并且将通过对乘以权重值的属性值求平均而获得的值设定为当前点的预测属性值。可以对通过从当前点的属性值中减去当前点的预测属性值而获得的残差属性值执行属性量化过程。
提升变换过程可以对应于通过LOD生成过程将点重构为一组细节级别的过程,就像预测变换过程一样。提升变换过程可以由提升单元455来执行。提升变换过程还可以包括针对各个点生成预测器的过程、在预测器中设定所计算的LOD的过程、登记邻居点的过程、以及根据当前点与邻居点之间的距离来设定权重的过程。
提升变换过程与预测变换过程之间的差别在于,提升变换过程可以是累积地将权重应用于属性值的方法。累积地将权重应用于属性值的方法可以如下。
1)用于存储各个点的权重值的数组QW(量化权重)可以单独存在。QW的所有元素的初始值为1.0。将通过将当前点的预测器的权重乘以被登记在预测器中的邻居节点(邻居点)的预测器索引的QW值而获得的值相加。
2)为了计算预测属性值,从现有属性值中减去通过将点的属性值乘以权重而获得的值。可以将该过程称为提升预测过程。
3)生成被称为‘更新权重(updateweight)’和‘更新’的临时数组,并且将数组中的元素初始化成0。
4)对于所有预测器,还将所计算的权重乘以被存储在QW中的权重以导出新的权重,该新的权重被累积地添加到更新权重中作为邻居节点的索引,并且通过将新的权重乘以邻居节点的索引的属性值获得的值被累积地添加到更新。
5)对于所有预测器,将更新的属性值除以预测器索引的更新权重的权重,并且将结果与现有属性值相加。可以将该过程称提升更新过程。
6)对于所有预测器,将通过提升更新过程更新的属性值乘以通过提升预测过程更新的(被存储在QW中的)权重,将结果(经相乘的值)量化,然后对经量化的值进行熵编码。
RAHT变换过程可以对应于使用与八叉树的较低级别的节点相关联的属性信息来预测较高级别的节点的属性信息的方法。即,RATH变换过程可以对应于通过八叉树后向扫描进行的属性信息帧内编码方法。RAHT变换过程可以由RAHT变换单元445来执行。
RAHT变换单元445扫描体素中的整个区域,并且可以执行直到根节点的RAHT变换过程,同时在各个步骤将体素求和(合并)成更大的块。由于RAHT变换单元445仅对被占用节点执行RAHT变换过程,因此,在未被占用的空节点的情况下,可以对其正上方的较高级别的节点执行RAHT变换过程。
当假设在级别l的体素的平均属性值为时,可以从/>和计算/>当/>和/>的权重分别是/>和时,可以获得下式5所示的RAHT变换矩阵。
[式5]
在式5中,是低通值(low-pass value),并且可以在下一更高级别的合并过程中使用。/>是高通系数,并且各个步骤中的高通系数可以进行量化和熵编码。权重可以通过/>来计算。根节点可以通过最后的和/>生成,如下式6所示。
[式6]
在式6中,gDC值也可以像高通系数一样被量化和熵编码。
属性量化过程可以对应于对从RAHT变换单元445、LOD生成单元450、和/或提升单元455输出的属性进行量化的过程。属性量化过程可以由属性量化单元460来执行。属性编码过程可以对应于对经量化的属性进行编码并输出属性比特流的过程。属性编码过程可以由属性编码单元465来执行。
例如,当LOD生成单元450计算当前点的预测属性值时,属性量化单元460可以对通过从当前点的属性值中减去当前点的预测属性值而获得的残差属性值进行量化。表2示出了本公开的属性量化过程的示例。
[表2]
如果各个点的预测器中不存在邻居点,则属性编码单元465可以直接对当前点的属性值(未量化的属性值)进行熵编码。与此相反,当在当前点的预测器中存在邻居点时,属性编码单元465可以对经量化的残差属性值进行熵编码。
作为另一示例,当从提升单元460输出通过将通过提升更新过程更新的属性值与通过提升预测过程更新的权重(被存储在QW中)相乘而获得的值时,属性量化单元460可以对结果(经相乘的值)进行量化,并且属性编码单元465可以对经量化的值进行熵编码。
点云解码设备的概述
图10示出根据本公开的实施方式的点云解码设备1000的示例。图10的点云解码设备1000在配置和功能方面可以对应于图1的解码单元23。
点云解码设备1000可以基于从发送装置10发送的数据(比特流)来执行解码过程。解码过程可以包括通过对比特流执行与上述编码操作相对应的操作来重构(解码)点云视频的过程。
如图10所例示的,解码过程可以包括几何解码过程和属性解码过程。几何解码过程可以由几何解码单元1010来执行,并且属性解码过程可以由属性解码单元1020来执行。即,点云解码设备1000可以包括几何解码单元1010和属性解码单元1020。
几何解码单元1010可以从几何比特流来重构几何,并且属性解码器1020可以基于经重构的几何以及属性比特流来重构属性。而且,点云解码设备1000可以基于根据经重构的几何的位置信息以及根据经重构的属性的属性信息,来重构三维点云视频(点云数据)。
图11例示了根据本公开的另一实施方式的点云解码设备1100的具体示例。如图11所例示的,点云解码设备1100包括:几何解码单元1105、八叉树合成单元1110、近似合成单元1115、几何重构单元1120、坐标系逆变换单元1125、属性解码单元1130、属性解量化单元1135、RATH变换单元1150、LOD生成单元1140、逆提升单元1145、和/或颜色逆变换单元1155。
几何解码单元1105、八叉树合成单元1110、近似合成单元1115、几何重构单元1120以及坐标系逆变换单元1150可以执行几何解码。几何解码可以作为参照图1至图9描述的几何编码的逆过程来执行。几何解码可以包括直接编码(direct coding)和三角汤几何解码。可以选择性地应用直接编码和三角汤几何解码。
几何解码单元1105可以基于算术编码来对所接收到的几何比特流进行解码。几何解码单元1105的操作可以对应于由几何编码单元435执行的操作的逆过程。
八叉树合成单元1110可以通过从经解码的几何比特流获得占用码(或者关于作为解码的结果而获得的几何的信息)来生成八叉树。八叉树合成单元1110的操作可以对应于由八叉树分析单元415执行的操作的逆过程。
当应用三角汤几何编码时,近似合成单元1115可以基于经解码的几何和/或所生成的八叉树来合成表面。
几何重构单元1120可以基于表面和经解码的几何来重构几何。当应用直接编码时,几何重构单元1120可以直接带来并添加应用直接编码的点的位置信息。另外,当应用三角汤几何编码时,几何重构单元1120可以通过执行重构操作(例如,三角形重构、上采样、体素化操作等)来重构几何。经重构的几何可以包括不包括属性的点云图片或帧。
坐标系逆变换单元1150可以通过基于经重构的几何变换坐标系来获取点的位置。例如,坐标系逆变换单元1150可以将点的位置从三维空间(例如,由x轴、y轴、以及z轴的坐标系等表达的三维空间)逆变换成全局空间坐标系的位置信息。
属性解码单元1130、属性解量化单元1135、RATH变换单元1230、LOD生成单元1140、逆提升单元1145、和/或颜色逆变换单元1250可以执行属性解码。属性解码可以包括:RAHT变换解码、预测变换解码以及提升变换解码。可以选择性地使用上述三种解码,或者可以使用一种或更多种解码的组合。
属性解码单元1130可以基于算术编码来对属性比特流进行解码。例如,当在各个点的预测器中不存在邻居点并因此当前点的属性值被直接熵编码时,属性解码单元1130可以对当前点的属性值(未量化的属性值)进行解码。作为另一示例,当在当前点的预测器中存在邻居点并因此经量化的残差属性值被熵编码时,属性解码单元1130可以对经量化的残差属性值进行解码。
属性解量化单元1135可以对作为解码结果而获得的经解码的属性比特流或者关于属性的信息进行解量化,并且输出经解量化的属性(或属性值)。例如,当从属性解码单元1130输出经量化的残差属性值时,属性解量化单元1135可以对经量化的残差属性值进行解量化,以输出残差属性值。可以基于属性是否在点云编码设备400中被编码来选择性地应用解量化过程。即,当在各个点的预测器中不存在邻居点并因此当前点的属性值被直接编码时,属性解码单元1130可以输出未被量化的当前点的属性值,并且可以跳过属性编码过程。表3示出了本公开的属性解量化过程的示例。
[表3]
RATH变换单元1150、LOD生成单元1140、和/或逆提升单元1145可以处理经重构的几何和经解量化的属性。RATH变换单元1150、LOD生成单元1140、和/或逆提升单元1145可以选择性地执行与点云编码设备400的编码操作相对应的解码操作。
颜色逆变换单元1155可以执行逆变换编码,以对被包括在经解码的属性中的颜色值(或纹理)进行逆变换。可以基于颜色变换单元435是否操作来选择性地执行颜色逆变换单元1155的操作。
图12示出了根据本公开的实施方式的发送装置的另一示例。如图12所例示的,发送装置可以包括:数据输入单元1205、量化处理单元1210、体素化处理单元1215、八叉树占用码生成单元1220、表面模型处理单元1225、帧内/帧间编码处理单元1230、算术编码器1235、元数据处理单元1240、颜色变换处理单元1245、属性变换处理单元1250、预测/提升/RAHT变换处理单元1255、算术编码器1260以及发送处理单元1265。
数据输入单元1205的功能可以对应于由图1的获取单元11执行的获取过程。即,数据输入单元1205可以获取点云视频并且生成多个点的点云数据。可以通过量化处理单元1210、体素化处理单元1215、八叉树占用码生成单元1220、表面模型处理单元1225、帧内/帧间编码处理单元1230以及算术编码器1235,来以几何比特流的形式生成点云数据中的几何信息(位置信息)。可以通过颜色变换处理单元1245、属性变换处理单元1250、预测/提升/RAHT变换处理单元1255、以及算术编码器1260,来以属性比特流的形式生成点云数据中的属性信息。可以通过发送处理单元1265的处理,来将几何比特流、属性比特流、和/或元数据比特流发送至接收装置。
具体地,量化处理单元1210的功能可以对应于由图4的几何量化单元410执行的量化过程和/或坐标系变换单元405的功能。体素化处理单元1215的功能可以对应于由图4的几何量化单元410执行的体素化过程,并且八叉树占用码生成单元1220的功能可以对应于由图4的八叉树分析单元415执行的功能。表面模型处理单元1225的功能可以对应于由图4的近似单元420执行的功能,并且帧内/帧间编码处理单元1230的功能和算术编码器1235的功能可以对应于由几何编码单元425执行的功能。元数据处理单元1240的功能可以对应于参照图1描述的元数据处理单元的功能。
另外,颜色变换处理单元1245的功能可以对应于由图4的颜色变换单元435执行的功能,并且属性变换处理单元1250的功能可以对应于由图4的属性变换单元440执行的功能。预测/提升/RAHT变换处理单元1255的功能可以对应于由图4的RAHT变换单元4450、LOD生成单元450、以及提升单元455执行的功能,并且算术编码器1260的功能可以对应于图4的属性编码单元465的功能。发送处理单元1265的功能可以对应于由图1的发送单元14和/或封装处理单元13执行的功能。
图13示出了根据本公开的实施方式的接收装置的另一示例。如图13所例示的,接收装置包括:接收单元1305、接收处理单元1310、算术解码器1315、元数据解析器1335、基于占用码的八叉树重构处理单元1320、表面模型处理单元1325、逆量化处理单元1330、算术解码器1340、逆量化处理单元1345、预测/提升/RAHT逆变换处理单元1350、颜色逆变换处理单元1355以及渲染器1360。
接收单元1305的功能可以对应于由图1的接收单元21执行的功能,并且接收处理单元1310的功能可以对应于由图1的解封装处理单元22执行的功能。即,接收单元1305可以从发送处理单元1265接收比特流,并且接收处理单元1310可以通过解封装处理来提取几何比特流、属性比特流、和/或元数据比特流。可以通过算术解码器1315、基于占用码的八叉树重构处理单元1320、表面模型处理单元1325以及逆量化处理单元1330,来将几何比特流生成为经重构的位置值(位置信息)。可以通过算术解码器1340、逆量化处理单元1345、预测/提升/RAHT逆变换处理单元1350以及颜色逆变换处理单元1355,来将属性比特流生成为经重构的属性值。可以通过元数据解析器1335来将元数据比特流生成为经重构的元数据(或元数据信息)。位置值、属性值、和/或元数据可以在渲染器1360中进行渲染,以向用户提供诸如VR/AR/MR/自动驾驶的体验。
具体地,算术解码器1315的功能可以对应于由图11的几何解码单元1105执行的功能,并且基于占用码的八叉树重构单元1320的功能可以对应于由图11的八叉树合成单元1110执行的功能。表面模型处理单元1325的功能可以对应于由图11的近似合成单元执行的功能,并且逆量化处理单元1330的功能可以对应于由图11的几何重构单元1120和/或坐标系逆变换单元1125执行的功能。元数据解析器1335的功能可以对应于由参照图1描述的元数据解析器执行的功能。
另外,算术解码器1340的功能可以对应于由图11的属性解码单元1130执行的功能,并且逆量化处理单元1345的功能可以对应于图11的属性逆量化单元1135的功能。预测/提升/RAHT逆变换处理单元1350的功能可以对应于由图11的RAHT变换单元1150、LOD生成单元1140、以及逆提升单元1145执行的功能,并且颜色逆变换处理单元1355的功能可以对应于由图11的颜色逆变换单元1155执行的功能。
图14例示了根据本公开的实施方式的能够与用于发送和接收点云数据的方法/装置交互工作的结构的示例。
图14的结构例示了服务器(AI服务器)、机器人、自动驾驶车辆、XR装置、智能电话、家用电器和/或HMD中的至少一个被连接至云网络的配置。可以将机器人、自动驾驶车辆、XR装置、智能电话或家用电器称为装置。另外,XR装置可以对应于根据实施方式的点云数据装置(PCC),或者可以与PCC装置交互工作。
云网络可以指的是形成云计算基础设施的部分或者存在于云计算基础设施内的网络。这里,可以使用3G网络、4G或长期演进(Long Term Evolution,LTE)网络、或5G网络来配置云网络。
服务器可以通过云网络连接至机器人、自动驾驶车辆、XR装置、智能电话、家用电器、和/或HMD中的至少一个,并且可以帮助所连接的装置的处理的至少一部分。
HMD可以表示其中可以实现根据实施方式的XR装置和/或PCC装置的类型之一。根据实施方式的HMD类型装置可以包括:通信单元、控制单元、存储器单元、I/O单元、传感器单元以及电源单元。
<PCC+XR>
XR/PCC装置可以通过应用PCC和/或XR技术,由HMD、被设置在车辆中的HUD、TV、移动电话、智能电话、计算机、可穿戴装置、家用电器、数字标牌、车辆、固定机器人或移动机器人等来实现。
XR/PCC装置可以通过分析通过各种传感器或者从外部装置获取的3D点云数据或图像数据,来获取关于周围空间或真实对象的信息,以生成3D点的位置(几何)数据和属性数据,并渲染和输出要输出的XR对象。例如,XR/PCC装置可以输出与所识别对象相对应的包括关于所识别对象的附加信息的XR对象。
<PCC+XR+移动电话>
XR/PCC装置可以通过应用PCC技术由移动电话等来实现。移动电话可以基于PCC技术来解码和显示点云内容。
<PCC+自动驾驶+XR>
自动驾驶车辆可以通过应用PCC技术和XR技术由移动机器人、车辆、无人驾驶飞行器等来实现。应用XR/PCC技术的自动驾驶车辆可以是指配备有用于提供XR图像的单元的自动驾驶车辆,或者是在XR图像内经受控制/交互的自动驾驶车辆。特别地,在XR图像内经受控制/交互的自动驾驶车辆与XR装置区分开,并且可以彼此交互工作。
配备有用于提供XR/PCC图像的单元的自动驾驶车辆可以从包括相机的传感器获取传感器信息,并且输出基于所获取的传感器信息生成的XR/PCC图像。例如,自动驾驶车辆具有HUD,并且可以通过输出XR/PCC图像,来向乘客提供与真实对象或屏幕中的对象相对应的XR/PCC对象。
在这种情况下,当将XR/PCC对象被输出至HUD时,可以输出XR/PCC对象的至少一部分,以便重叠乘客的注视所指向的实际对象。另一方面,当将XR/PCC对象输出至被设置在自动驾驶车辆内部的显示器时,可以输出XR/PCC对象的至少一部分,以重叠屏幕中的对象。例如,自动驾驶车辆可以输出与诸如车道、其它车辆、交通灯、交通标志、两轮车辆、行人以及建筑物的对象相对应的XR/PCC对象。
根据实施方式的VR技术、AR技术、MR技术、和/或PCC技术可应用于各种装置。即,VR技术是仅作为CG图像提供真实世界中的对象或背景的显示技术。另一方面,AR技术指的是在真实对象图像的顶部上显示虚拟CG图像的技术。而且,MR技术与上述AR技术的相似之处在于,示出了虚拟对象在真实世界中中的混合和组合。然而,在AR技术中,真实对象与由CG图像构成的虚拟对象之间的区别是清楚的,并且虚拟对象是以补充真实对象的形式来使用的,而而在MR技术中,虚拟对象被认为等同于真实对象,这与AR技术不同。更具体地,例如,应用上述MR技术的是全息图服务。VR、AR以及MR技术可以被集成并且被称为XR技术。
空间分割
点云数据(即,G-PCC数据)可以表示由一序列帧(点云帧)组成的点云的体积编码(volumetric encoding)。各个点云帧可以包括:点的数量、点的位置、以及点的属性。点的数量、点的位置、以及点的属性可以从一帧到另一帧而改变。各个点云帧可以是指在特定时间实例中由零个或更多个属性以及三维点的笛卡尔坐标(x,y,z)指定的一组三维点。这里,三维点的笛卡尔坐标(x,y,z)可以是位置或几何。
在一些实施方式中,本公开还可以在对点云数据进行编码之前执行将点云数据分割成一个或更多个3D块的空间分割过程。3D块可以是指由点云数据占用的3D空间的全部或部分。3D块可以是图块组、图块、切片、编码单元(CU)、预测单元(PU)、或变换单元(TU)中的一个或更多个。
与3D块相对应的图块可以是指由点云数据占用的3D空间的全部或部分。而且,与3D块相对应的切片可以是指由点云数据占用的3D空间的全部或部分。可以基于一个图块中包括的点的数量,来将图块分割成一个或更多个切片。图块可以是具有边界框信息的一组切片。可以在图块清单(或图块参数集,tile parameter set,TPS)中指定各个图块的边界框信息。在边界框中图块可以与另一图块重叠。切片可以是独立地执行编码的数据单元,或者是独立地执行解码的数据单元。即,切片可以是可以独立地编码或解码的点的集合。在一些实施方式中,切片可以是表示经编码的点云帧的部分或全部的一系列语法元素。各个切片皆可以包括用于标识该切片所属的图块的索引。
经空间分割的3D块可以独立地或非独立地进行处理。例如,经空间分割的3D块可以分别独立地或非独立地进行编码或解码,并且可以分别独立地或非独立地进行发送或接收。另外,经空间分割的3D块可以独立地或非独立地进行量化或解量化,并且可以分别独立地或非独立地进行变换或逆变换。另外,经空间分割的3D块可以独立地或非独立地进行渲染。例如,可以以切片为单位或以图块为单位来执行编码或解码。另外,可以针对各个图块或切片不同地执行量化或解量化,并且可以针对各个经变换或经逆变换的图块或切片不同地执行量化或解量化。
这样,当将点云数据在空间上被分割成一个或更多个3D块并且独立地或非独立地处理经空间分割的3D块时,实时地执行处理3D块的过程并且以低等待时间执行该过程。此外,可以使得能够实现在由点云数据占用的三维空间中的随机访问和并行编码或并行解码,并且可以防止在编码或解码过程中累积的误差。
图15是例示根据本公开的实施方式的用于执行空间分割过程的发送装置1500的示例的框图。如图15所例示的,发送装置1500可以包括:用于执行空间分割过程的空间分割单元1505、信令处理单元1510、几何编码器1515、属性编码器1520、以及封装处理单元1525和/或发送处理单元1530。
空间分割单元1505可以基于边界框和/或子边界框执行将点云数据分割成一个或更多个3D块的空间分割过程。通过空间分割过程,可以将点云数据分割成一个或更多个图块和/或一个或更多个切片。在一些实施方式中,可以将点云数据分割成一个或更多个图块,并且可以将各个经分割的图块通过空间分割过程进一步分割成一个或更多个切片。
图16例示了边界框(即,点云数据)在空间上被分割成一个或更多个3D块的示例。如图16所例示的,点云数据的整个边界框具有三个图块,即,图块#0、图块#1、以及图块#2。而且,可以将图块#0分割成两个切片,即,切片#0和切片#1。另外,可以将图块#1再次分割成两个切片,即,切片#2和切片#3。而且,可以将图块#2再次分割成切片#4。
信令处理单元1510可以生成和/或处理(例如,熵编码)信令信息,并且以比特流的形式输出该信令信息。在下文中,从信令处理单元输出的比特流(其中,信令信息被编码)被称为‘信令比特流’。信令信息可以包括用于空间分割的信息或者关于空间分割的信息。即,信令信息可以包括与由空间分割单元1505执行的空间分割过程相关的信息。
当将点云数据分割成一个或更多个3D块时,可能需要用于对点云数据当中的与特定图块或特定切片相对应的一些点云数据进行解码的信息。此外,为了支持对点云数据的空间访问(或部分访问),可能需要与3D空间区域相关的信息。这里,空间访问可以是指仅从文件中提取整个点云数据中的必要的部分点云数据。信令信息可以包括:用于对一些点云数据进行解码的信息、与用于支持空间访问的3D空间区域相关的信息等。例如,信令信息可以包括:3D边界框信息、3D空间区域信息、图块信息、和/或图块清单信息。
可以从空间分割单元1505、几何编码器1515、属性编码器1520、发送处理单元1525、和/或封装处理单元1530来提供信令信息。另外,信令处理单元1510可以将从图17的接收装置1700反馈的反馈信息提供给空间分割单元1505、几何编码器1515、属性编码器1520、发送处理单元1525和/或封装处理单元1530。
信令信息可以以轨道中的样本、样本条目、样本组、轨道组、或单独的元数据轨道来存储并且用信号通知。在一些实施方式中,可以以用于序列级别的信令的序列参数集(sequence parameter set,SPS)、用于几何编码信息的信令的几何参数集(geometryparameter set,GPS)、用于属性编码信息的信令的属性参数集(attribute parameterset,APS)、以及用于图块级别的信令的图块参数集(tile parameter set,TPS)(或图块清单)等为单位来用信号通知信令信息。另外,可以以诸如切片或图块的编码单元为单位来用信号通知信令信息。
此时,可以将3D块的位置(位置信息)输出至几何编码器1515,并且可以将3D块的属性(属性信息)输出至属性编码器1520。
几何编码器1515可以基于位置信息构造八叉树,对所构造的八叉树进行编码,并且输出几何比特流。而且,几何编码器1515可以重构八叉树和/或近似八叉树,并将其输出至属性编码器1520。经重构的八叉树可以是经重构的几何。几何编码器1515可以执行由图4的坐标系变换单元405、几何量化单元410、八叉树分析单元415、近似单元420、几何编码单元425和/或重构单元430执行的所有或一些操作。在一些实施方式中,几何编码器1515可以执行由量化处理单元1210、体素化处理单元1215、八叉树占用码生成单元1220、表面模型处理单元1225、以及帧内/帧间编码处理单元1230和算术编码器1235执行的所有或一些操作。
属性编码器1520可以通过基于经重构的几何对属性进行编码来输出属性比特流。属性编码器1520可以执行由图4的属性变换单元440、RAHT变换单元445、LOD生成单元450、提升单元455、属性量化单元460、属性编码单元465和/或颜色变换单元435执行的所有或一些操作。在一些实施方式中,属性编码器1520可以执行由图12的属性变换处理单元1250、预测/提升/RAHT变换处理单元1255、算术编码器1260、和/或颜色变换处理单元1245执行的所有或一些操作。
封装处理单元1525可以将一个或更多个输入比特流封装成文件或段。例如,封装处理单元1525可以封装几何比特流、属性比特流、以及信令比特流中的每一个,或复用并封装几何比特流、属性比特流、以及信令比特流。在一些实施方式中,封装处理单元1525可以将由一序列类型-长度-值(type-length-value,TLV)结构组成的比特流(G-PCC比特流)封装成文件。构成G-PCC比特流的TLV(或TLV封装)结构可以包括:几何比特流、属性比特流、信令比特流等。在一些实施方式中,G-PCC比特流可以由封装处理单元1525来生成,或者由发送处理单元1530来生成。稍后将详细描述TLV结构或TLV封装结构。在一些实施方式中,封装处理单元1525可以执行由图1的封装处理单元13执行的所有或一些操作。
发送处理单元1530可以根据任意传输协议处理经封装的比特流或文件/段。发送处理单元1530可以执行由参照图1描述的发送单元14和发送处理单元或者图12的发送处理单元1265执行的所有或一些操作。
图17是例示根据本公开的实施方式的接收装置1700的示例的框图。接收装置1700可以执行与发送装置1500的用于执行空间分割的操作相对应的操作。如图17所例示的,接收装置1700可以包括:接收处理单元1705、解封装处理单元1710、信令处理单元1715、几何解码器1720、属性解码器1725、和/或后处理单元1730。
接收处理单元1705可以接收其中封装了G-PCC比特流的文件/段、G-PCC比特流或比特流,并且根据传输协议对它们执行处理。接收处理单元1705可以执行由参照图1描述的接收单元21和接收处理单元或者图13的接收单元1305或接收处理单元1310执行的所有或一些操作。
解封装处理单元1710可以通过执行由封装处理单元1525执行的操作的逆过程来获取G-PCC比特流。解封装处理单元1710可以通过解封装文件/段来获取G-PCC比特流。例如,解封装处理单元1710可以获取信令比特流并将该信令比特流输出至信令处理单元1715,获取几何比特流并将该几何比特流输出至几何解码器1720,以及获取属性比特流并将该属性比特流输出至属性解码器1725。解封装处理单元1710可以执行由图1的解封装处理单元22或者图13的接收处理单元1410执行的所有或一些操作。
信令处理单元1715可以通过执行由信令处理单元1510执行的操作的逆过程来解析和解码信令信息。信令处理单元1715可以解析和解码来自信令比特流的信令信息。信令处理单元1715可以将经解码的信令信息提供给几何解码器1720、属性解码器1720、和/或后处理单元1730。
几何解码器1720可以通过执行由几何编码器1515执行的操作的逆过程来从几何比特流重构几何。几何解码器1720可以基于信令信息(与几何相关的参数)来重构几何。可以将经重构的几何提供给属性解码器1725。
属性解码器1725可以通过执行由属性编码器1520执行的操作的逆过程来从属性比特流重构属性。属性解码器1725可以基于信令信息(与属性相关的参数)和经重构的几何来重构属性。
后处理单元1730可以基于经重构的几何和经重构的属性来重构点云数据。点云数据的重构可以通过将经重构的几何与经重构的属性相匹配的过程来执行。在一些实施方式中,当经重构的点云数据是以图块和/或切片为单位时,后处理单元1730可以通过基于信令信息执行发送装置1500的空间分割过程的逆过程来重构点云数据的边界框。在一些实施方式中,当通过空间分割过程将边界框分割成多个图块和/或多个切片时,后处理单元1730可以通过基于信令信息组合一些切片和/或一些图块来重构边界框的部分。这里,被用于重构边界框的一些切片和/或一些图块可以是与希望进行空间访问的3D空间区域相关的切片和/或一些图块。
比特流
图18例示了根据本公开的实施方式的比特流的结构的示例,图19例示了根据本公开的实施方式的比特流中的分量之间的标识关系的示例,并且图20例示了根据本公开的实施方式的比特流中的分量之间的参考关系。
当几何比特流、属性比特流、和/或信令比特流由一个比特流(或G-PCC比特流)组成时,该比特流可以包括一个或更多个子比特流。
如图18所例示的,比特流可以包括:一个或更多个SPS、一个或更多个GPS、一个或更多个APS(APS0和APS1)、一个或更多个TPS、和/或一个或更多个切片(切片0、……、切片n)。由于图块是包括一个或更多个切片的切片组,因此,比特流可以包括一个或更多个图块。TPS可以包括关于各个图块的信息(举例来说,诸如边界框的坐标值、高度、和/或大小的信息),并且各个切片都可以包括几何比特流Geom0和/或一个或更多个属性比特流Attr0和Attr1。例如,切片0可以包括几何比特流Geom00和/或一个或更多个属性比特流Attr00和Attr10。
各个切片中的几何比特流可以由几何切片报头(Geom_slice_header)和几何切片数据(Geom_slice_data)组成。几何切片报头包括:被包括在GPS中的参数集的标识信息(geom_parameter_set_id)、图块标识符(geom_tile_id)、切片标识符(geom_slice_id)、和/或关于被包括在几何切片数据(geom_slice_data)中的数据的信息(geomBoxOrigin、geom_box_log2_scale、geom_max_node_size_log2、geom_num_points)等。geomBoxOrigin是指示几何切片数据的框原点的几何框原点信息,geom_box_log2_scale是指示几何切片数据的对数标尺(log scale)的信息,geom_max_node_size_log2是指示根几何八叉树节点的大小的信息,geom_num_points是与几何切片数据的点数量相关的信息。几何切片数据可以包括切片中的点云数据的几何信息(或几何数据)。
各个切片中的各个属性比特流都可以包括属性切片报头(Attr_slice_header)和属性切片数据(Attr_slice_data)。属性切片报头可以包括关于属性切片数据的信息,并且属性切片数据可以包括切片中的点云数据的属性信息(或属性数据)。当在一个切片中存在多个属性比特流时,各个属性比特流皆可以包括不同的属性信息。例如,一个属性比特流可以包括与颜色相对应的属性信息,而另一属性比特流可以包括与反射率相对应的属性信息。
如图19和图20所示,SPS可以包括用于标识SPS的标识符(seq_parameter_set_id),并且GPS可以包括用于标识GPS的标识符(geom_parameter_set_id)以及指示GPS所属(参考)的活动SPS的标识符(seq_parameter_set_id)。此外,APS可以包括用于标识APS的标识符(attr_parameter_set_id)以及指示APS所参考的活动SPS的标识符(seq_parameter_set_id)。几何数据包括几何切片报头和几何切片数据,并且几何切片报头可以包括由几何切片参考的活动GPS的标识符(geom_parameter_set_id)。几何切片报头还可以包括用于标识几何切片的标识符(geom_slice_id)和/或用于标识图块的标识符(geom_tile_id)。属性数据包括属性切片报头和属性切片数据,并且属性切片报头可以包括由属性切片参考的活动APS的标识符(attr_parameter_set_id)以及用于标识与属性切片相关的几何切片的标识符(geom_slice_id)。
通过这种参考关系,几何切片可以参考GPS,并且GPS可以参考SPS。另外,SPS可以列出可用属性,将标识符指派给所列出的属性中的各个属性,以及标识解码方法。可以将属性切片根据标识符映射至输出属性,并且属性切片本身可以具有对先前解码的几何切片和APS的依赖性。
在一些实施方式中,对点云数据进行编码所需的参数可以在点云数据和/或切片报头的参数集中被新定义。例如,当执行属性编码时,编码所需的参数可以在APS中被新定义(被添加至APS),而当执行基于图块的编码时,编码所需的参数在图块和/或切片报头中被新定义(被添加至图块和/或切片报头)。
SPS语法结构
图21例示了根据本公开的实施方式的SPS的语法结构的示例。在图21中,在SPS的语法结构中表达的语法元素(或字段)可以是被包括在SPS中的语法元素或者通过SPS用信号通知的语法元素。
main_profile_compatibility_flag可以指定比特流是否符合主配置文件(Profile)。例如,等于第一值(例如,1)的main_profile_compatibility_flag可以指定比特流符合主配置文件。等于第二值(例如,0)的main_profile_compatibility_flag可以指定比特流符合除主配置文件之外的配置文件。
unique_point_positions_constraint_flag可以指示在参考当前SPS的各个点云帧中,所有输出点是否具有唯一位置。例如,等于第一值(例如,1)的unique_point_positions_constraint_flag可以指示在参考当前SPS的各个点云帧中,所有输出点具有唯一位置,而等于第二值(例如,0)的unique_point_positions_constraint_flag可以指示在参考当前SPS的任何点云帧中,两个或更多个输出点可以具有相同位置。虽然在各个切片中所有的点都是唯一的,但是帧中的切片和其它点可以重叠。在该情况下,可以将unique_point_positions_constraint_flag的值设定成0。
level_idc可以指示比特流符合的级别。sps_seq_parameter_set_id可以指示SPS的标识符以供其它语法元素参考。
sps_bounding_box_present_flag可以指示是否存在边界框。例如,等于第一值(例如,1)的sps_bounding_box_present_flag可以指示在SPS中存在边界框,而等于第二值(例如,0)的sps_bounding_box_present_flag可以指示边界框的大小未定义。当sps_bounding_box_present_flag等于第一值(例如,1)时,可以进一步用信号通知sps_bounding_box_offset_x、sps_bounding_box_offset_y、sps_bounding_box_offset_z、sps_bounding_box_offset_log2_scale、sps_bounding_box_size_width、sps_bounding_box_size_height、和/或sps_bounding_box_size_depth。
sps_bounding_box_offset_x可以指示笛卡尔坐标中的源边界框的经量化的x偏移,并且当源边界框的x偏移不存在时,可以将sps_bounding_box_offset_x的值推断为0。sps_bounding_box_offset_y可以指示笛卡尔坐标中的源边界框的经量化的y偏移,并且当源边界框的y偏移不存在时,可以将sps_bounding_box_offset_y的值推断为0。sps_bounding_box_offset_z可以指示笛卡尔坐标中的源边界框的经量化的z偏移,并且当源边界框的z偏移不存在时,可以将sps_bounding_box_offset_z的值推断为0。sps_bounding_box_offset_log2_scale可以指示缩放经量化的x、y、以及z源边界框偏移的缩放因子(scaling factor)。sps_bounding_box_size_width可以指示笛卡尔坐标中的源边界框的宽度,并且当源边界框的宽度不存在时,可以将sps_bounding_box_size_width的值推断为1。sps_bounding_box_size_height可以指示笛卡尔坐标中的源边界框的高度,并且当笛卡尔坐标中的源边界的高度不存在时,可以将sps_bounding_box_size_height推断为1。sps_bounding_box_size_depth指示笛卡尔坐标中的源边界框的深度,并且当笛卡尔坐标中的源边界的深度不存在时,可以将sps_bounding_box_size_depth推断为1。
sps_source_scale_factor_numerator_minus1加1可以指示源点云的缩放因子分子。sps_source_scale_factor_denominator_minus1加1可以表示源点云的缩放因子分母。sps_num_attribute_sets可以指示比特流中的经编码的属性的数量。sps_num_attribute_sets的值应当在0至63的范围内。
可以进一步用信号通知由sps_num_attribute_sets指示的‘比特流中的经编码的属性的数量’的attribute_dimension_minus1[i]和attribute_instance_id[i]。i可以按1从0增加至‘比特流中的经编码的属性的数量-1’。attribute_dimension_minus1[i]加1可以指定第i个属性的分量数量。attribute_instance_id[i]可以指定第i个属性的实例id。
当attribute_dimension_minus1[i]的值大于1时,可以进一步用信号通知attribute_bitdepth_minus1[i]、attribute_secondary_bitdepth_minus1[i]、attribute_cicp_colour_primaries[i]、attribute_cicp_transfer_characteristics[i]、attribute_cicp_matrix_coeffs[i]、和/或attribute_cicp_video_full_range_flag[i]。attribute_bitdepth_minus1[i]加1可以指定第i个属性信号的第一分量的位深度。attribute_secondary_bitdepth_minus1[i]加1可以指定第i个属性信号的第二分量的位深度。attribute_cicp_colour_primaries[i]可以指示第i个属性的颜色属性源原色(primaries)的色度(chromaticity)坐标。attribute_cicp_transfer_characteristics[i]可以将参考光电传递特性函数指示为具有0到1的标称实值范围的源输入线性光强度,或者将参考电光传递特性函数的逆指示为输出线性光强度的函数。attribute_cicp_matrix_coeffs[i]可以描述用于从第i个属性的绿色、蓝色、以及红色(或Y、Z以及X原色)导出亮度和色度信号的矩阵系数。attribute_cicp_video_full_range_flag[i]可以指定从E'Y、E'PB以及E'PR或者E'R、E'G以及E'B实值分量信号导出的亮度和色度信号的黑电平(black level)和范围。known_attribute_label_flag[i]可以指示是否针对第i个属性用信号通知know_attribute_label[i]或attribute_label_four_bytes[i]。例如,等于第一值(例如,1)的known_attribute_label_flag[i]可以指定针对第i个属性用信号通知known_attribute_label,而等于第二值(例如,0)的known_attribute_label_flag[i]可以指定针对第i个属性用信号通知attribute_label_four_bytes[i]。known_attribute_label[i]可以指定第i个属性的类型。例如,等于第一值(例如,0)的known_attribute_label[i]可以指定该属性是颜色。等于第二值(例如,1)的known_attribute_label[i]可以指定该属性是反射率。等于第三值(例如,2)的known_attribute_label[i]可以指定该属性是帧索引。attribute_label_four_bytes[i]可以指示具有4字节码的已知属性类型,如图22a所示。
log2_max_frame_idx可以指定被用于frame_idx语法变量的比特数。例如,log2_max_frame_idx加1可以指定被用于用信号通知frame_idx语法变量的比特数。如图22b所示,axis_coding_order可以指示X、Y以及Z输出轴标签与经重构的点云RecPic[pointIdx][axis]中的三个位置分量之间的对应关系,其中,axis=0,……,2。
sps_bypass_stream_enabled_flag可以指定在读取比特流时是否使用旁路编码模式。例如,等于第一值(例如,1)的sps_bypass_stream_enabled_flag可以指定在读取比特流时可以使用旁路编码模式。作为另一示例,等于第二值(例如,0)的sps_bypass_stream_enabled_flag可以指定在读取比特流时不使用旁路编码模式。sps_extension_flag可以指定sps_extension_data语法元素是否存在于SPS语法结构中。例如,等于第一值(例如,1)的sps_extension_flag可以指定在SPS语法结构中存在sps_extension_data语法元素。等于第二值(例如,0)的sps_extension_flag可以指定在SPS语法结构中不存在sps_extension_data_flag语法元素。sps_extension_flag在比特流中应当等于0。当sps_extension_flag的值等于第一值(例如,1)时,可以进一步用信号通知sps_extension_data_flag。sps_extension_data_flag可以具有任何值,并且sps_extension_data_flag的存在和值可以不影响解码器与配置文件的一致性。
GPS语法结构
图23示出了GPS语法结构的示例。在图23中,在GPS的语法结构中表达的语法元素(或字段)可以是被包括在GPS中的语法元素或者通过GPS用信号通知的语法元素。
gps_geom_parameter_set_id可以指定由其它语法元素参考的GPS的标识符。gps_seq_parameter_set_id可以指定活动SPS的seq_parameter_set_id的值。gps_box_present_flag可以指定在参考当前CPS的几何报头中是否提供了附加的边界框信息。例如,等于第一值(例如,1)的gps_box_present_flag可以指定在参考当前GPS的几何报头中提供附加的边界框信息。等于第二值(例如,0)的gps_bounding_box_present_flag可以指定在参考当前GPS的几何报头中不提供附加的边界框信息。当gps_box_present_flag的值等于第一值(例如,1)时,可以进一步用信号通知gps_gsh_box_log2_scale_present_flag。gps_gsh_box_log2_scale_present_flag可以指定在参考当前GPS的各个几何切片报头中是否用信号通知gps_gsh_box_log2_scale。例如,等于第一值(例如,1)的gps_gsh_box_log2_scale_present_flag可以指定在参考当前GPS的各个几何切片报头中用信号通知gps_gsh_box_log2_scale。等于第二值(例如,0)的gps_gsh_box_log2_scale_present_flag可以指定在参考当前GPS的各个几何切片报头中没有用信号通知gps_gsh_box_log2_scale,并且在当前GPS的gps_gsh_box_log2_scale中用信号通知所有切片的公共缩放(commonscale)。当gps_gsh_box_log2_scale_present_flag的值等于第二值(例如,0)时,可以进一步用信号通知gps_gsh_box_log2_scale。gps_gsh_box_log2_scale可以指示参考当前GPS的所有切片的边界框原点的公共缩放因子。
unique_geometry_points_flag可以指示在参考当前GPS的所有切片中,所有输出点是否在一个切片内具有唯一位置。例如,等于第一值(例如,1)的unique_geometry_points_flag可以指示在参考当前GPS的所有切片中,所有输出点在切片内具有唯一位置。等于第二值(例如,0)的unique_geometry_points_flag可以指示在参考当前GPS的所有切片中,两个或更多个输出点可以在一个切片内具有相同的位置。
geometry_planar_mode_flag可以指示平面编码模式是否被激活。等于第一值(例如,1)的geometry_planar_mode_flag可以指示平面编码模式被激活。等于第二值(例如,0)的geometry_planar_mode_flag可以指示平面编码模式未被激活。当geometry_planar_mode_flag的值等于第一值(例如,1)时,可以进一步用信号通知geom_planar_mode_th_idcm、geom_planar_mode_th[1]、和/或geom_planar_mode_th[2]。geom_planar_mode_th_idcm可以指定用于直接编码模式的激活阈值的值。geom_planar_mode_th_idcm是处于0到127(包含0和127)的范围内的整数。对于范围0、……、2中的i,geom_planar_mode_th[i]可以沿着平面编码模式是高效的第i个最可能方向来指定平面编码模式的激活阈值的值。geom_planar_mode_th[i]是处于0、……、127的范围内的整数。
geometry_angular_mode_flag可以指示角度编码模式是否被激活。例如,等于第一值(例如,1)的geometry_angular_mode_flag可以指示角度编码模式被激活。等于第二值(例如,0)的geometry_angular_mode_flag可以指示角度编码模式未被激活。当geometry_angular_mode_flag的值是第一值(例如,1)时,可以进一步用信号通知lidar_head_position[0]、lidar_head_position[1]、lidar_head_position[2]、number_lasers、planar_buffer_disabled、implicit_qtbt_angular_max_node_min_dim_log2_to_split_z、和/或implicit_qtbt_angular_max_diff_to_split_z。
lidar_head_position[0]、lidar_head_position[1]、和/或lidar_head_position[2]可以指定激光雷达头在具有内部轴的坐标系中的(x、y、z)坐标。number_lasers可以指定被用于角度编码模式的激光器的数量。可以通过由number_lasers指示的数字来用信号通知各个laser_angle[i]和laser_correction[i]。这里,i可以按1从0增加至‘值‘number_lasers 1”。laser_angle[i]可以指定第i个激光器相对于由第0个和第1个内部轴定义的水平面的仰角的正切。laser_correction[i]可以指定第i个激光位置相对于lidar_head_position[2]沿着第2个内部轴的校正。planar_buffer_disabled可以指示在平面模式下对平面模式标志和平面位置进行编码的过程中是否使用利用缓冲器来跟踪最近的节点。例如,等于第一值(例如,1)的planar_buffer_disabled可以指示在平面模式下对平面模式标志和平面位置进行编码的过程中不使用利用缓冲器来跟踪最近的节点。等于第二值(例如,0)的planar_buffer_disabled可以指示在平面模式下对平面模式标志和平面位置进行编码的过程中使用利用缓冲器来跟踪最近的节点。当不存在时,将planar_buffer_disabled推断为第二值(例如,0)。implicit_qtbt_angular_max_node_min_dim_log2_to_split_z可以指示节点大小的log2值,低于该节点大小,节点的水平分裂(split)优于垂直分裂。implicit_qtbt_angular_max_diff_to_split_z可以指定节点所允许的垂直与水平节点尺寸比的log2值。当implicit_qtbt_angular_max_diff_to_split_z不存在时,可以将implicit_qtbt_angular_max_node_min_dim_log2_to_split_z推断为0。
neighbour_context_restriction_flag可以指示当前节点的几何节点占用是否利用从位于当前节点的父节点内部的相邻节点确定的上下文来进行编码。例如,等于第一值(例如,0)的neighbour_context_restriction_flag可以指示当前节点的几何节点占用利用从位于当前节点的父节点内部的相邻节点确定的上下文来进行编码。等于第二值(例如,1)的neighbour_context_restriction_flag可以指示当前节点的几何节点占用未利用从位于当前节点的父节点内部或外部的相邻节点确定的上下文来编码。inferred_direct_coding_mode_enabled_flag可以指示在对应的几何节点语法中是否存在direct_mode_flag。等于第一值(例如,1)的inferred_direct_coding_mode_enabled_flag可以指示在几何节点语法中存在direct_mode_flag。等于第二值(例如,0)的inferred_direct_coding_mode_enabled_flag可以指示在几何节点语法中不存在direct_mode_flag。
bitwise_occupancy_coding_flag可以指示几何节点占用是否使用语法元素occupancy_map的逐位上下文化来进行编码。例如,等于第一值(例如,1)的bitwise_occupancy_coding_flag可以指示几何节点占用使用语法元素occupancy_map的逐位上下文化来进行编码,而等于第二值(例如,0)的bitwise_occupancy_coding_flag可以指示几何节点占用使用经字典编码的语法元素occypancy_map来进行编码。adjacent_child_contextualization_enabled_flag可以指示相邻八叉树节点的相邻孩子是否被用于逐位占用上下文化。等于第一值(例如,1)的adjacent_child_contextualization_enabled_flag可以指示相邻八叉树节点的相邻孩子被用于逐位占用上下文化。等于第二值(例如,0)的adjacent_child_contextualization_enabled_flag可以指示相邻八叉树节点的孩子不被用于占用上下文化。
log2_neighbour_avail_boundary可以指定被用于解码过程的变量NeighbAvailBoundary的值。例如,变量neighbour_context_restriction_flag等于第一值(例如,1),可以将NeighbAvailabilityMask设定成1,而当neighbour_context_restriction_flag的值等于第二值(例如,0)时,可以将NeighbAvailabilityMask设定成1<<log2_neighbour_avail_boundary。log2_intra_pred_max_node_size可以指定有资格占用帧内预测的八叉树节点大小。log2_trisoup_node_size可以将变量TrisoupNodeSize指定为三角形节点的大小。
geom_scaling_enabled_flag可以指定在几何切片解码过程期间是否调用几何位置的缩放过程。举例来说,等于第一值(例如,1)的geom_scaling_enabled_flag可以指定在几何切片解码过程期间调用几何位置的缩放过程,并且等于第二值(例如,0)的geom_scaling_enabled_flag可以指定几何位置不需要缩放。当geom_scaling_enabled_flag的值等于第一值(例如,1)时,可以进一步用信号通知geom_base_qp。geom_base_qp可以指定几何位置量化参数的基值(base value)。gps_implicit_geom_partition_flag可以指定是否针对序列或切片启用隐式几何分割。例如,等于第一值(例如,1)的gps_implicit_geom_partition_flag可以指定针对序列或切片启用隐式几何分割,而等于第二值(例如,0)的gps_implicit_geom_partition_flag可以指定针对序列或切片禁用隐式几何分割。如果gps_implicit_geom_partition_flag等于第一值(例如,1),则可以用信号通知gps_max_num_implicit_qtbt_before_ot和gps_min_size_implicit_qtbt。gps_max_num_implicit_qtbt_before_ot可以指定OT分割之前的隐式QT分割和BT分割的最大数量。gps_min_size_implicit_qtbt可以指定隐式QT分割和BT分割的最小尺寸。
gps_extension_flag可以指定gps_extension_data_flag语法元素是否存在于GPS语法结构中。例如,等于第一值(例如,1)的gps_extension_flag可以指定在GPS语法结构中存在gps_extension_data_flag语法元素,而等于第二值(例如,0)的gps_extension_flag可以指定在GPS语法结构中不存在gps_extension_data_flag语法元素。当gps_extension_flag的值等于第一值(例如,1)时,可以进一步用信号通知gps_extension_data_flag。gps_extension_data_flag可以具有任何值。gps_extension_data_flag的存在和值不影响解码器与配置文件的一致性。
APS语法结构
图24示出了APS语法结构的示例。在图24中,在APS的语法结构中表达的语法元素(或字段)可以是被包括在APS中的语法元素或者通过APS用信号通知的语法元素。
aps_attr_parameter_set_id可以提供APS的标识符以供其它语法元素参考,并且aps_seq_parameter_set_id可以指定活动SPS的sps_seq_parameter_set_id的值。attr_coding_type可以指示用于该属性的编码类型。图25示出了attr_coding_type的值和被指派给这些值中的各个值的属性编码类型的表。如图25所例示的,当attr_coding_type的值是第一值(例如,0)时,编码类型可以指示预测权重提升,而当attr_coding_type的值是第二值(例如,1)时,编码类型可以指示RAHT,而当attr_coding_type的值是第三值(例如,2)时,编码类型可以指示固定权重提升。
aps_attr_initial_qp可以指定参考APS的各个切片的变量SliceQp的初始值。aps_attr_initial_qp的值应当处于4到51(包含4和51)的范围内。aps_attr_chroma_qp_offset可以指定由语法aps_attr_initial_qp用信号通知的初始量化参数的偏移。aps_slice_qp_delta_present_flag可以指定在属性切片报头(attribute slice header,ASH)中是否存在ash_attr_qp_delta_luma和ash_attr_qp_delta_chroma语法元素。例如,等于第一值(例如,1)的aps_slice_qp_delta_present_flag可以指定在ASH中存在ash_attr_qp_delta_luma和ash_attr_qp_delta_chroma语法元素,而等于第二值(例如,0)的aps_slice_qp_present_flag可以指定在ASH中不存在ash_attr_qp_delta_luma和ash_attr_qp_delta_chroma语法元素。
当attr_coding_type的值是第一值(例如,0)或第三值(例如,2)时,即,当编码类型是预测权重提升或固定权重提升时,可以进一步用信号通知lifting_num_pred_nearest_neighbours_minus1、lifting_search_range_minus1、以及lifting_neighbour_bias[k]。lifting_num_pred_nearest_neighbers_minus1加1可以指定要用于预测的最近邻居的最大数量。将变量NumPredNearestNeighbours的值设定成等于lifting_num_pred_nearest_neighbors(lifting_num_pred_nearest_neighbors_minus1加1)。lifting_search_range_minus1加1可以指定被用于确定要用于预测的最近邻居并构建基于距离的细节级别的搜索范围。变量LiftingSearchRange可以通过lifting_search_range_minus1字段的值加1来获得(LiftingSearchRange=lifting_search_range_minus1+1)。lifting_neighbour_bias[k]可以指定在计算两点之间的欧几里得距离作为最近邻居推导过程的部分时被用于对第k个分量进行加权的偏差。
当attr_coding_type的值是第三值(例如,2)时,即,编码类型指示固定的权重提升,可以进一步用信号通知lifting_scalability_enabled_flag。lifting_scalability_enabled_flag可以指定属性解码过程是否允许针对输入几何点的修剪八叉树解码结果。例如,等于第一值(例如,1)的lifting_scalability_enabled_flag可以指定属性解码过程允许针对输入几何点的经修剪的八叉树解码结果,而等于第二值(例如,0)的lifting_scalability_enabled_flag可以指定属性解码过程需要针对输入几何点的完整八叉树解码结果。当lifting_scalability_enabled_flag的值不是第一值(例如,1)时,可以进一步用信号通知lifting_num_detail_levels_minus1。lifting_num_detail_levels_minus1可以指定用于属性编码的LOD的数量。指定LOD数量的变量LevelDetailCount可以通过lifting_num_detail_levels_minus1的值加1来导出(LevelDetailCount=lifting_num_detail_levels_minus1+1)。
当lifting_num_detail_levels_minus1的值大于1时,可以进一步用信号通知lifting_lod_regular_sampling_enabled_flag。lifting_lod_regular_sampling_enabled_flag可以指定是否通过使用常规采样策略来建立细节级别。等于第一值(例如,1)的lifting_lod_regular_sampling_enabled_flag可以指定通过使用常规采样策略来建立细节级别。等于第二值(例如,0)的lifting_lod_regular_sampling_enabled_flag可以指定代替地使用基于距离的采样策略。
当lifting_scalability_enabled_flag的值不是第一值(例如,1)时,可以根据是否通过使用常规采样策略(lifting_lod_regular_sampling_enabled_flag的值)来构建细节级别,来进一步用信号通知lifting_sampling_period_minus2[idx]或lifting_sampling_distance_squared_scale_minus1[idx]。例如,当lifting_lod_regular_sampling_enabled_flag的值等于第一值(例如,1)时,可以用信号通知lifting_sampling_period_minus2[idx],而当lifting_lod_regular_sampling_enabled_flag的值等于第二值(例如,0)时,可以用信号通知lifting_sampling_distance_squared_scale_minus1[idx]。当idx的值不是0(idx!=0)时,可以进一步用信号通知lifting_sampling_distance_squared_offset[idx]。idx可以按1从0增加至通过从num_detail_levels_minus1中减去1而获得的值。lifting_sampling_period_minus2[idx]加2可以指定细节级别idx的采样时段。lifting_sampling_distance_squared_scale_minus1[idx]加1可以指定用于导出细节级别idx的采样距离的平方的缩放因子。lifting_sampling_distance_squared_offset[idx]可以指定用于导出细节级别idx的采样距离的平方的偏移。
当attr_coding_type的值等于第一值(例如,0)时,即,当编码类型是预测权重提升时,可以用信号通知lifting_adaptive_prediction_threshold、lifting_intra_lod_prediction_num_layers、lifting_max_num_direct_predictors、以及inter_component_prediction_enabled_flag。lifting_adaptive_prediction_threshold可以指定用于启用自适应预测的阈值。可以将指定切换自适应预测器选择模式的阈值的变量AdaptivePredictionThreshold设定成等于lifting_adaptive_prediction_threshold的值。lifting_intra_lod_prediction_num_layers可以指定其中可以参考同一LoD层中的经解码的点以生成目标点的预测值的LoD层的数量。例如,等于LevelDetailCount的lifting_intra_lod_prediction_num_layers可以指示目标点可以参考所有LoD层中的同一LoD层中的经解码的点。等于0的lifting_intra_lod_prediction_num_layers指示针对任何LoD层,目标点可以不参考同一LoD层中的经解码的点。lifting_intra_lod_prediction_num_layers应当处于0到LevelDetailCount的范围内。lifting_max_num_direct_predictors可以指定要用于直接预测的预测器的最大数量。inter_component_prediction_enabled_flag可以指定多分量属性的主要分量是否被用于预测非主要分量的经重构的值。例如,等于第一值(例如,1)的inter_component_prediction_enabled_flag可以指定多分量属性的主要分量被用于预测非主要分量的经重构的值。作为另一示例,等于第二值(例如,0)的inter_component_prediction_enabled_flag可以指定独立地重构所有属性分量。
当attr_coding_type的值等于第二值(例如,1)时,即,当属性编码类型是RAHT时,可以用信号通知raht_prediction_enabled_flag。raht_prediction_enabled_flag可以指定在RAHT解码过程中是否启用根据邻居点的变换权重预测。例如,等于第一值(例如,1)的raht_prediction_enabled_flag可以指定在RAHT解码过程中启用根据邻居点的变换权重预测,而等于第二值(例如,0)的raht_prediction_enabled_flag可以指定在RAHT解码过程中禁用来自邻居点的变换权重预测。当raht_prediction_enabled_flag的值等于第一值(例如,1)时,可以进一步用信号通知raht_prediction_threshold0和raht_prediction_threshold1。raht_prediction_threshold0可以指定终止根据邻居点的变换权重预测的阈值。raht_prediction_threshold1可以指定跳过根据邻居点的变换权重预测的阈值。
aps_extension_flag可以指定aps_extension_data_flag语法元素是否存在于APS语法结构中。举例来说,等于第一值(例如,1)的aps_extension_flag可以指定在APS语法结构中存在aps_extension_data_flag语法元素,而等于第二值(例如,0)的aps_extension_flag可以指定在APS语法结构中不存在aps_extension_data_flag语法元素。当aps_extension_flag的值等于第一值(例如,1)时,可以用信号通知aps_extension_data_flag。aps_extension_data_flag可以具有任何值。aps_extension_data_flag的存在和值不影响解码器与配置文件的一致性。
图块清单语法结构
图26示出了图块清单的语法结构的示例。可以将图块清单称为图块参数集(TPS)。在图26中,在TPS的语法结构中表达的语法元素(或字段)可以是被包括在TPS中的语法元素或者通过TPS用信号通知的语法元素。
tile_frame_idx可以包含可以被用于标识图块清单的目的的标识号。tile_seq_parameter_set_id可以指定活动SPS的sps_seq_parameter_set_id的值。tile_id_present_flag可以指定用于标识图块的参数。例如,等于第一值(例如,1)的tile_id_present_flag可以指定根据tile_id语法元素的值来标识图块。等于第二值(例如,0)的tile_id_present_flag可以指定根据图块在图块清单中的位置来标识图块。tile_cnt可以指定存在于图块清单中的图块边界框的数量。tile_bounding_box_bits可以指定位深度来表示图块清单的边界框信息。当循环变量tileIdx按1从0增加至(图块边界框的数量-1)时,可以用信号通知tile_id、tile_bounding_box_offset_xyz[tile_id][k]、以及tile_bounding_box_size_xyz[tile_id][k]。tile_id可以标识tile_inventory内的特定图块。当tile_id_present_flag的值等于第一值(例如,1)时,可以用信号通知tile_id,并且可以通过图块边界框的数量来用信号通知tile_id。当tile_id不存在(未用信号通知)时,将tile_id的值推断为由循环变量tileIdx给出的图块清单内的图块的索引。比特流一致性的要求是tile_id的所有值在图块清单内是唯一的。tile_bounding_box_offset_xyz[tileId][k]和tile_bounding_box_size_xyz[tileId][k]和tile_bounding_box_offset_xyz[tileId][k]可以指示包含由与tileId相同的gsh_tile_id标识的切片的边界框。tile_bounding_box_offset_xyz[tileId][k]可以是相对于TileOrigin[k]的图块边界框的(x、y、z)原点坐标的第k个分量。tile_bounding_box_size_xyz[tileId][k]可以分别是图块边界框宽度、高度、以及深度的第k个分量。
当变量k按1从0增加至2时,可以用信号通知tile_origin_xyz[k]。tile_origin_xyz[k]可以指定笛卡尔坐标中的图块原点的第k个分量。tile_origin_xyz[k]的值应当等于sps_bounding_box_offset[k]。tile_origin_log2_scale可以指定缩放因子来缩放tile_origin_xyz的分量。tile_origin_log2_scale的值应当等于sps_bounding_box_offset_log2_scale。具有元素TileOrigin[k]的数组TileOrigin(对于k=0、……、2)是通过‘TileOrigin[k]=tile_origin_xyz[k]<<tile_origin_log2_scale’导出的。
几何切片语法结构
图27和图28例示了几何切片的语法结构的示例。图27和图28中所示的语法元素(或字段)可以是被包括在几何切片中的语法元素或者通过几何切片用信号通知的语法元素。
从发送装置向接收装置发送的比特流可以包括一个或更多个切片。各个切片都可以包括几何切片和属性切片。这里,几何切片可以是几何切片比特流,并且属性切片可以是属性切片比特流。几何切片可以包括几何切片报头(geometry slice header,GSH),并且属性切片可以包括属性切片报头(attribute slice header,ASH)。
如图27a所例示的,几何切片比特流(geometry_slice_bitstream())可以包括几何切片报头(geometry_slice_header())和几何切片数据(geometry_slice_data())。几何切片数据可以包括与部分或整个点云相关联的几何或几何相关数据。如图27b所例示的,通过几何切片报头用信号通知的语法元素如下。
gsh_geometry_parameter_set_id可以指定活动GPS的gps_geom_parameter_set_id的值。gsh_tile_id可以指定GSH所参考的图块id的值。gsh_slice_id可以指定用于由其它语法元素参考的切片的标识符。frame_idx可以指定概念(notional)帧号计数器的log2_max_frame_idx+1个最低有效位。具有不同frame_idx值的连续切片可以形成不同输出点云帧的部分。在不具有中间帧边界标记数据单元的情况下具有相同frame_idx值的连续切片可以形成同一输出点云帧的部分。gsh_num_points可以指定切片中的经编码的点的最大数量。比特流一致性的要求是gsh_num_points的值大于或等于切片中的经解码的点的数量。
当gps_box_present_flag的值等于第一值(例如,1)时,可以用信号通知gsh_box_log2_scale、gsh_box_origin_x、gsh_box_origin_y、以及gsh_box_origin_z。在一些实施方式中,当gps_box_present_flag的值等于第一值(例如,1)并且gps_gsh_box_log2_scale_present_flag的值等于第一值(例如,1)时,可以用信号通知gsh_box_log2_scale。gsh_box_log2_scale可以指定切片的边界框原点的缩放因子。gsh_box_origin_x可以指定由gsh_box_log2_scale值缩放的边界框原点的x值。gsh_box_origin_y可以指定由gsh_box_log2_scale值缩放的边界框原点的y值。gsh_box_origin_z可以指定由gsh_box_log2_scale值缩放的边界框原点的z值。变量slice_origin_x、slice_origin_y、和/或slice_origin_z可如下导出:
如果gps_gsh_box_log2_scale_present_flag等于第二值(例如,0),则将originScale设定成等于gsh_box_log2_scale。否则,如果gps_gsh_box_log2_scale_present_flag等于第一值(例如,1),则将originScale设定成等于gps_gsh_box_log2_scale。如果gps_box_present_flag等于第二值(例如,0),则可以将slice_origin_x和slice_origin_y和slice_origin_z的值推断为0。否则,如果gps_box_present_flag等于第一值(例如,1),则可以应用下式:
slice_origin_x=gsh_box_origin_x<<originScale
slice_origin_y=gsh_box_origin y<<originScale
slice_origin_z=gsh_box_origin_z<<originScale
当gps_implicit_geom_partition_flag的值等于第一值(例如,1)时,可以进一步用信号通知gsh_log2_max_nodesize_x、gsh_log2_max_nodesize_y_minus_x、gsh_log2_max_nodesize_z_minus_y。如果gps_implicit_geom_partition_flag的值等于第二值(例如,0),则可以用信号通知gsh_log2_max_nodesize。
gsh_log2_max_nodesize_x可以指定x维度中的边界框大小,即,如下在解码过程中使用的MaxNodesizeXLog2。
MaxNodeSizeXLog2=gsh_log2_max_nodesize_x
MaxNodeSizeX=1<<MaxNodeSizeXLog2
gsh_log2_max_nodesize_y_minus_x可以指定y维度中的边界框大小,即,如下在解码过程中使用的MaxNodesizeYLog2:
MaxNodeSizeYLog2=gsh_log2_max_nodesize_y_minus_x+MaxNodeSizeXLog2。
MaxNodeSizeY=1<<MaxNodeSizeYLog2。
gsh_log2_max_nodesize_z_minus_y可以指定z维度中的边界框大小,即,如下在解码过程中使用的MaxNodesizeZLog2。
MaxNodeSizeZLog2=gsh_log2_max_nodesize_z_minus_y+MaxNodeSizeYLog2
MaxNodeSizeZ=1<<MaxNodeSizeZLog2
gsh_log2_max_nodesize可以指定当gps_implicit_geom_partition_flag等于第一值(例如,1)时根几何八叉树节点的大小。如下导出变量MaxNodeSize和MaxGeometryOctreeDepth。
MaxNodeSize=1<<gsh_log2_max_nodesize
MaxGeometryOctreeDepth=gsh_log2_max_nodesize-log2_trisoup_node_size
当geom_scaling_enabled_flag的值等于第一值(例如,1)时,可以用信号通知geom_slice_qp_offset和geom_octree_qp_offsets_enabled_flag。geom_slice_qp_offset可以指定基本几何量化参数geom_base_qp的偏移。geom_octree_qp_offsets_enabled_flag可以指定geom_node_qp_offset_eq0_flag是否可以存在于几何节点语法中。等于第一值(例如,1)的geom_octree_qp_offsets_enabled_flag可以指定在几何节点语法中可以存在geom_node_qp_offset_eq0_flag。等于第二值(例如,0)的geom_octree_qp_offsets_enabled_flag可以指定在几何节点语法中不存在geom_node_qp_offset_eq0_flag。当geom_octree_qp_offsets_enabled_flag的值等于第一值(例如,1)时,可以用信号通知geom_octree_qp_offsets_depth。geom_octree_qp_offsets_depth可以在几何节点语法中存在geom_node_qp_offset_eq0_flag时指定几何八叉树的深度。
如图28所例示的,通过几何切片数据用信号通知的语法元素可以如下。几何切片数据可以包括重复MaxGeometryOctreeDepth的值的循环(第一循环)。MaxGeometryOctreeDepth可以表示几何八叉树的深度的最大值。在第一循环中,深度可以按1从0增加至(MaxGeometryOctreeDepth-1)。第一循环可以包括重复NumNodesAtDepth的值的循环(第二循环)。NumNodesAtDepth[depth]可以指示要在所述深度解码的节点的数量。在第二次迭代(iteration)中,nodeidx可以按1从0增加至(NumNodesAtDepth-1)。通过第一循环和第二循环,可以用信号通知xN=NodeX[depth][nodeIdx]、yN=NodeY[depth][nodeIdx]、zN=NodeZ[depth][nodeIdx]、geometry_node(depth,nodeIdx,xN,yN,zN)。变量NodeX[depth][nodeIdx]、NodeY[depth][nodeIdx]、NodeZ[depth][nodeIdx]可以表示在给定深度处按解码顺序的第Idx个节点的x、y、z坐标。所述深度的节点的几何比特流可以通过geometry_node(depth,nodeIdx,xN,yN,zN)来发送。
当log2_trisoup_node_size的值大于0时,可以进一步用信号通知geometry_trisoup_data()。即,如果三角形节点的大小大于0,则可以通过geometry_trisoup_data()来用信号通知trisoup几何编码的几何比特流。
属性切片语法结构
图29和图30例示了属性切片的语法结构的示例。图29和图30中所示的语法元素(或字段)可以是被包括在属性切片中的语法元素或者通过属性切片用信号通知的语法元素。
如图29a所例示的,属性切片比特流(attribute_slice_bitstream())可以包括属性切片报头(attribute_slice_header())和属性切片数据(attribute_slice_data())。属性切片数据attribute_slice_data()可以包含与部分或整个点云相关联的属性或属性相关数据。如图29b所例示的,通过属性切片报头用信号通知的语法元素可以如下。
ash_attr_parameter_set_id可以指定活动APS的aps_attr_parameter_set_id的值。ash_attr_sps_attr_idx可以指定活动SPS中的属性集。ash_attr_geom_slice_id可以指定活动几何切片报头的gsh_slice_id的值。aps_slice_qp_delta_present_flag可以指定在当前ASH中是否存在ash_attr_layer_qp_delta_luma和ash_attr_layer_qp_delta_chroma语法元素。例如,等于第一值(例如,1)的aps_slice_qp_delta_present_flag可以指定在当前ASH中存在ash_attr_layer_qp_delta_luma和ash_attr_layer_qp_delta_chroma,而等于第二值(例如,0)的aps_slice_qp_delta_present_flag可以指定在当前ASH中不存在ash_attr_layer_qp_delta_luma和ash_attr_layer_qp_delta_chroma。当aps_slice_qp_delta_present_flag的值是第一值(例如,1)时,可以用信号通知ash_attr_qp_delta_luma。ash_attr_qp_delta_luma可以指定来自活动属性参数集中的初始切片qp的亮度增量(delta)量化参数(quantization parameter,qp)。当attribute_dimension_minus1[ash_attr_sps_attr_idx]的值大于0时,可以用信号通知ash_attr_qp_delta_chroma。ash_attr_qp_delta_chroma可以指定来自活动属性参数集中的初始切片qp的色度增量qp。变量InitialSliceQpY和变量InitialSliceQpC可以如下导出。
InitialSliceQpY=aps_attrattr_initial_qp+ash_attr_qp_delta_luma
InitialSliceQpC=aps_attrattr_initial_qp+aps_attr_chroma_qp_offset+ash_attr_qp_delta_chroma
当ash_attr_layer_qp_delta_present_flag的值等于第一值(例如,1)时,可以用信号通知ash_attr_num_layer_qp_minus1。ash_attr_num_layer_qp_minus1加1可以指定用信号通知ash_attr_qp_delta_luma和ash_attr_qp_delta_chroma的层的数量。当不用信号通知ash_attr_num_layer_qp时,可以将ash_attr_num_layer_qp的值推断为0。指定层的数量的变量NumLayerQp可以如下通过ash_attr_num_layer_qp_minus1的值加1来导出。(NumLayerQp=ash_attr_num_layer_qp_minus1+1)。
当ash_attr_layer_qp_delta_present_flag的值等于第一值(例如,1)时,ash_attr_layer_qp_delta_luma[i]可以重复地用信号通知达NumLayerQp值。i可以按1从0增加至(NumLayerQp-1)。另外,在将i按1增加的重复过程中,当attribute_dimension_minus1[ash_attr_sps_attr_idx]的值大于0时,可以进一步用信号通知ash_attr_layer_qp_delta_chroma[i]。ash_attr_layer_qp_delta_luma可以指示来自各个层中的InitialSliceQpY的亮度增量量化参数(qp)。ash_attr_layer_qp_delta_chroma可以指示来自各个层中的InitialSliceQpC的色度增量量化参数(qp)。变量SliceQpY[i]和变量SliceQpC[i]可以如下导出。
SliceQpY[i]=InitialSliceQpY+ash_attr_layer_qp_delta_luma[i]
SliceQpC[i]=InitialSliceQpC+ash_attr_layer_qp_delta_chroma[i]
可以进一步用信号通知ash_attr_region_qp_delta_present_flag。等于第一值(例如,1)的ash_attr_region_qp_delta_present_flag可以指示在当前属性切片报头中存在ash_attr_region_qp_delta、区域边界框原点以及大小。等于第二值(例如,0)的ash_attr_region_qp_delta_present_flag指示在当前属性切片报头中不存在ash_attr_region_qp_delta以及区域边界框原点和大小。当ash_attr_layer_qp_delta_present_flag的值等于第一值(例如,1)时,可以进一步用信号通知ash_attr_qp_region_box_origin_x、ash_attr_qp_region_box_origin_y、ash_attr_qp_region_box_origin_z、ash_attr_qp_region_box_width、ash_attr_qp_region_box_height、ash_attr_qp_region_box_depth、以及ash_attr_region_qp_delta。ash_attr_qp_region_box_origin_x可以指示相对于slice_origin_x的区域边界框的x偏移。ash_attr_qp_region_box_origin_y可以指示相对于slice_origin_y的区域边界框的y偏移。ash_attr_qp_region_box_origin_z可以指示相对于slice_origin_z的区域边界框的z偏移。ash_attr_qp_region_box_size_width可以指示区域边界框的宽度。ash_attr_qp_region_box_size_height可以指示区域边界框的高度。ash_attr_qp_region_box_size_depth可以指示区域边界框的深度。ash_attr_region_qp_delta可以指定来自由ash_attr_qp_region_box指定的区域的SliceQpY[i]和SliceQpC[i]的增量qp。可以将指定区域框增量量化参数的变量RegionboxDeltaQp设定成等于ash_attr_region_qp_delta。
如图30所例示的,通过属性切片数据用信号通知的语法元素可以如下。Zerorun可以指示残差或predIndex中的前置零(preceding zero)的数量。predIndex[i]可以指示用于对属性的第i个点值进行解码的预测器索引。predIndex[i]的值可以具有从0到max_num_predictors的值的范围。
元数据切片语法结构
图31示出了元数据切片的语法结构的示例。图31所示的语法元素(或字段)可以是被包括在属性切片中的语法元素或者通过属性切片用信号通知的语法元素。
如图31的(a)所例示的,元数据切片比特流(metadata_slice_bitstream())可以包括元数据切片报头(metadata_slice_header())和元数据切片数据(metadata_slice_data())。图31的(b)示出了元数据切片报头的示例,并且图31的(c)示出了元数据切片数据的示例。
如图31的(b)所例示的,通过元数据切片报头用信号通知的语法元素可以如下。msh_slice_id可以指示用于标识元数据切片比特流的标识符。msh_geom_slice_id可以指示用于标识与被携带至元数据切片的元数据相关的几何切片的标识符。msh_attr_id可以指示用于标识与被携带至元数据切片的元数据相关的属性的标识符。msh_attr_slice_id可以指示用于标识与被携带至元数据切片的元数据相关的属性切片的标识符。如图31的(c)所例示的,元数据比特流(metadata_bitstream())可以通过元数据切片数据来用信号通知。
TLV结构
如上所述,G-PCC比特流可以是指由一序列TLV结构组成的点云数据的比特流。可以将TLV结构称为“TLV封装结构”、“G-PCC TLV封装结构”、或“G-PCC TLV结构”。
图32示出了TLV封装结构的示例,图33a示出了TLV封装的语法结构的示例,并且图33b示出了TLV封装结构的有效载荷类型的示例。如图32所例示的,各个TLV封装结构都可以由TLV类型(TLV TYPE)、TLV长度(TLV LENGTH)、和/或TLV有效载荷(TLV PAYLOAD)组成。TLV类型可以是TLV有效载荷的类型信息,TLV长度可以是TLV有效载荷的长度信息,并且TLV有效载荷可以是有效载荷(或有效载荷字节)。参照图33a所例示的TLV封装语法结构(tlv_encapsulation()),tlv_type可以指示TLV有效载荷的类型信息,并且tlv_num_payload_bytes可以指示TLV有效载荷的长度信息。而且,tlv_payload_byte[i]可以指示TLV有效载荷。tlv_payload_byte[i]可以通过tlv_num_payload_bytes的值来用信号通知,并且i可以按1从0增加至(tlv_num_payload_bytes-1)。
TLV有效载荷可以包括:SPS、GPS、一个或更多个APS、图块清单、几何切片、一个或更多个属性切片以及一个或更多个元数据切片。在一些实施方式中,根据TLV有效载荷的类型信息,各个TLV封装结构的TLV有效载荷可以包括:SPS、GPS、一个或更多个APS、图块清单、几何切片、一个或更多个属性切片以及一个或更多个元数据切片。被包括在TLV有效载荷中的数据可以通过TLV有效载荷的类型信息来区分。例如,如图33b所例示的,等于0的tlv_type可以指示被包括在TLV有效载荷中的数据是SPS,而等于1的tlv_type可以指示被包括在TLV有效载荷中的数据是GPS。等于2的tlv_type可以指示被包括在TLV有效载荷中的数据是几何切片,等于3的tlv_type可以指示被包括在TLV有效载荷中的数据是APS。等于4的tlv_type可以指示被包括在TLV有效载荷中的数据是属性切片,而等于5的tlv_type可以指示被包括在TLV有效载荷中的数据是图块清单(或图块参数集)。等于6的tlv_type可以指示被包括在TLV有效载荷中的数据是帧边界标记,而等于7的tlv_type可以指示被包括在TLV有效载荷中的数据是元数据切片。TLV封装结构的有效载荷可以符合高效率视频编码(HighEfficiency Video Coding,HEVC)网络抽象层(Network Abstraction Layer,NAL)单元的格式。
在TLV有效载荷中的SPS中包括的信息可以包括在图21的SPS中包括的一些或全部信息。在TLV有效载荷中的图块清单中包括的信息可以包括在图26的图块清单中包括的一些或全部信息。在TLV有效载荷中的GPS中包括的信息可以包括在图23的GPS中包括的一些或全部信息。在TLV有效载荷中的APS中包括的信息可以包括在图24的APS中包括的一些或全部信息。在TLV有效载荷中的几何切片中包括的信息可以包括在图27和图28的几何切片中包括的一些或全部信息。在TLV有效载荷中的属性切片中包括的信息可以包括在图29和图30的属性切片中包括的所有或部分信息。在TLV有效载荷中的元数据切片中包括的信息可以包括在图31的元数据切片中包括的所有或部分信息。
封装/解封装
这种TLV封装结构可以由本说明书中提及的发送单元、发送处理单元以及封装单元来生成。由TLV封装结构组成的G-PCC比特流可以在无变化的情况下被发送至接收装置,或者可以被封装并被发送至接收装置。例如,封装处理单元1525可以以文件/段的形式封装由TLV封装结构组成的G-PCC比特流并发送它。解封装处理单元1710可以通过解封装经封装的文件/段来获取G-PCC比特流。
在一些实施方式中,G-PCC比特流可以以基于ISOBMFF的文件格式来进行封装。在这种情况下,可以将G-PCC比特流存储在ISOBMFF文件中的单个轨道或多个轨道中。这里,可以将文件中的单个轨道或多个轨道称为“轨道”或“G-PCC轨道”。可以将基于ISOBMFF的文件称为容器(container)、容器文件、媒体文件、G-PCC文件等。具体地,该文件可以由框和/或信息组成,其可以被称为ftyp、moov、mdat等。
ftyp框(ftyp box,文件类型框)可以为文件提供文件类型或文件兼容性相关信息。接收装置可以通过参考ftyp框来标识文件。mdat框也被称为媒体数据框,并且可以包括实际的媒体数据。在一些实施方式中,可以将几何切片(或者经编码的几何比特流)以及零个或更多个属性切片(或者经编码的属性比特流)包括在文件中的mdat框的样本中。这里,可以将样本称为G-PCC样本。moov框也被称为电影(movie)框,并且可以包括文件的媒体数据的元数据。例如,moov框可以包括解码和回放媒体数据所需的信息,并且可以包括关于文件的轨道和样本的信息。moov框可以充当所有元数据的容器。moov框可以是元数据相关框当中的最上层的框。
在一些实施方式中,moov框可以包括提供与文件的轨道相关的信息的轨道(trak)框,并且trak框可以包括提供轨道的媒体信息的媒体(mdia)框(MediaBox)、以及用于链接(参考)轨道和对应于轨道的文件的样本的轨道参考容器(tref)框。媒体框MediaBox可以包括提供关于媒体数据的信息的媒体信息容器(minf)框、以及指示流类型的处理程序(handler)(hdlr)框。minf框可以包括提供与mdat框的样本相关的元数据的样本表(stbl)框。stbl框可以包括提供关于所使用的编码类型的信息和编码类型所需的初始化信息的样本描述(stsd)框。在一些实施方式中,样本描述(stsd)框可以包括轨道的样本条目。在一些实施方式中,可以将诸如SPS、GPS、APS、以及图块清单的信令信息(或元数据)包括在文件中的moov框的样本条目或者mdat框的样本中。
可以将G-PCC轨道定义为携带几何切片(或者经编码的几何比特流)或属性切片(或者经编码的属性比特流)、或者几何切片和属性切片两者的体积可视(visual)轨道。在一些实施方式中,可以通过媒体框(MediaBox)的处理程序框HandlerBox中的体积可视媒体处理程序类型‘volv’、和/或媒体框MediaBox的minf框中的体积可视媒体报头vvhd来标识体积可视轨道。可以将minf框称为媒体信息容器或媒体信息框。可以将minf框包括在媒体框MediaBox中,可以将媒体框MediaBox包括在轨道框中,并且可以将轨道框包括在文件的moov框中。文件中可以存在单个体积可视轨道或多个体积可视轨道。
体积可视媒体报头框(VolumetricVisualMediaHeaderBox)
体积可视轨道可以使用媒体信息框(MediaInformationBox)中的体积可视媒体报头(vvhd)框。可以将体积可视媒体报头框定义如下。
框类型:‘vvhd’
容器:MediaInformationBox
强制性:是
量:正好一个
体积可视媒体报头框的语法可以如下。
aligned(8)class VolumetricVisualMediaHeaderBox
extends FullBox('vvhd',version=0,1){
}
在上述语法中,版本可以是指示体积可视媒体报头框的版本的整数值。
体积可视化样本条目(VolumetricVisualSampleEntry)
在一些实施方式中,体积可视轨道可以如下使用体积可视样本条目来发送信令信息。
class VolumetricVisualSampleEntry(codingname)extends SampleEntry(codingname){
unsigned int(8)[32]compressorname;
//从规范得到的其它框
}
在上述语法中,compressorname可以指示用于信息目的的压缩程序(compressor)的名称。在一些实施方式中,从中继承了体积可视化样本条目VolumetricVisualSampleEntry的样本条目(即,VolumetricVisualSampleEntry的更高类)可以包括GPCC解码器配置框GPCCConfigurationBox。
G-PCC解码器配置框(GPCCConfigurationBox)
在一些实施方式中,G-PCC解码器配置框可以包括如下GPCCDecoderConfigurationRecord()。
class GPCCConfigurationBox extends Box('gpcC'){
GPCCDecoderConfigurationRecord()GPCCConfig;
}
在一些实施方式中,GPCCDecoderConfigurationRecord()可以提供用于基于几何的点云内容的G-PCC解码器配置信息。可以将GPCCDecoderConfigurationRecord()的语法可定义如下。
aligned(8)class GPCCDecoderConfigurationRecord{
unsigned int(8)configurationVersion=1;
unsigned int(8)profile_idc;
unsigned int(24)profile_compatibility_flags
unsigned int(8)level_idc;
unsigned int(8)numOfSetupUnitArrays;
for(i=0;i<numOfSetupUnitArrays;i++){
unsigned int(7)SetupUnitType;
bit(1)SetupUnit completeness;
unsigned int(8)numOfSepupUnit;
for(i=0;numOfSepupUnit;i++){
tlv_encapsulation setupUnit;
}
}
//附加字段
}
configurationVersion可以是版本字段。对记录的不兼容改变可以由版本号的改变来指示。profile_idc、profile_compatibility_flags、以及level_idc的值对于在由记录描述的比特流被解码时所激活的所有参数集都是有效的。profile_idc可以指示与配置记录相关的比特流所符合的配置文件。profile_idc可以包括指示G-PCC的特定配置文件的配置文件码。等于1的profile_compatibility_flags可以指示比特流符合profile_idc字段所指示的配置文件。profile_compatibility_flags中的各个比特可以仅在所有参数集设定该比特时被设定。level_idc可以包括配置文件级别码。level_idc可以指示等于或高于为所有参数集中的最高等级(tier)指示的最高级别的能力级别。numOfSetupUnitArrays可以指示由setupUnitTye指示的类型的G-PCC设置单元的阵列的数量。即,numOfSetupUnitArrays可以指示被包括在GPCCDecoderConfigurationRecord()中的G-PCC设置单元的阵列的数量。还可以将setupUnitType、setupUnit_completeness以及numOfSetupUnits包括在GPCCDecoderConfigurationRecord()中。setupUnitType、setupUnit_completeness以及numOfSetupUnits由根据numOfSetupUnitArrays的值重复的循环所包含,并且该循环可以在按1增加的同时重复,直到i从0到(numOfSetupUnitArrays-1)。setupUnitType可以指示G-PCC设置单元的类型。即,setupUnitType的值可以是指示SPS、GPS、APS、或图块清单的值之一。等于1的setupUnit_completeness可以指示给定类型的所有设置单元在下一阵列中,并且流中不存在任何东西。另外,等于0的setupUnit_completeness字段可以指示在流中存在所指示类型的附加设置单元。numOfSetupUnits可以指示由setupUnitTye指示的类型的G-PCC设置单元的数量。还可以将setupUnit(tlv_encapsulatuon setupUnit)包括在GPCCDecoderConfigurationRecord()中。setupUnit被根据numOfSetupUnits的值重复的循环所包含,并且该循环可以在按1增加的同时重复,直到i从0到(numOfSetupUnits-1)。setupUnit可以是由setupUnitTye指示的类型的设置单元的实例,例如,SPS、GPS、APS、或携带图块清单的TLV封装结构。
体积可视轨道可以使用体积可视样本(VolumetricVisualSample)来发送实际数据。可以将体积可视样本条目称为样本条目或G-PCC样本条目,并且可以将体积可视样本称为样本或G-PCC样本。可以将单个体积可视轨道称为单个轨道或G-PCC单个轨道,并且可以将多个体积可视轨道称为多个轨道或多个G-PCC轨道。可以将与样本分组、轨道分组、G-PCC比特流的单个轨道封装、或G-PCC比特流的多轨道封装相关的信令信息支或者支持空间访问的信令信息以框(box)或FullBox的形式添加至样本条目。信令信息可以包括以下项中的至少一个:GPCC条目信息框(GPCCEntryInfoBox)、GPCC分量类型框(GPCCComponentTypeBox)、立方区域信息框(CubicRegionInfoBox)、3D边界框信息框(3DBoundingBoxInfoBox)、或图块清单框(TileInventoryBox)。
GPCC条目信息结构
可以将G-PCC条目信息框(GPCCEntryInfoBox)的语法结构定义如下。
class GPCCEntryInfoBox extends Box('gpsb'){
GPCCEntryInfoStruct();
}
在上述语法结构中,具有样本条目类型‘gpsb’的GPCCEntryInfoBox可以包括GPCCEntryInfoStruct()。可以将GPCCEntryInfoStruct()的语法定义如下。
aligned(8)class GPCCEntryInfoStruct{
unsigned int(1)main_entry_flag;
unsigned int(1)dependent_on;
if(dependent_on){//非条目
unsigned int(16)dependency_id;
}
}
GPCCEntryInfoStruct()可以包括main_entry_flag和dependent_on。main_entry_flag可以指示它是否是用于解码G-PCC比特流的入口点(entry point)。dependent_on指示其解码是否依赖于其它。如果dependent_on存在于样本条目中,则dependent_on可以指示对轨道中的样本的解码依赖于其它轨道。如果dependent_on的值是1,则GPCCEntryInfoStruct()还可以包括dependency_id。dependency_id可以指示用于解码相关数据的轨道的标识符。如果dependency_id存在于样本条目中,则dependency_id可以指示携带对轨道中的样本的解码所依赖的G-PCC子比特流的轨道的标识符。如果dependency_id存在于样本组中,则dependency_id可以指示携带对相关样本的解码所依赖的G-PCC子比特流的样本的标识符。
G-PCC分量信息结构
可以将G-PCC分量类型框(GPCCComponentTypeBox)的语法结构定义如下。
aligned(8)class GPCCComponentTypeBox extends FullBox('gtyp',version=0,0){
GPCCComponentTypeStruct();
}
具有样本条目类型‘gtyp’的GPCCComponentTypeBox可以包括GPCCComponentTypeStruct()。可以将GPCCComponentTypeStruct()的语法定义如下。
aligned(8)class GPCCComponentTypeStruct{
unsigned int(8)numOfComponents;
for(i=0;i<numOfComponents;i++){
unsigned int(8)gpcc_type;
if(gpcc_type==4)
unsigned int(8)AttrIdx;
}
//附加字段
}
numOfComponents可以指示被用信号通知给GPCCComponentTypeStruct的G-PCC分量的数量。可以将gpcc_type通过根据numOfComponents的值重复的循环包括在GPCCComponentTypeStruct中。该循环可以在按1增加的同时重复,直到i从0到(numOfComponents-1)。gpcc_type可以指示G-PCC分量的类型。例如,如果gpcc_type的值是2,则它可以指示几何分量,而如果它是4,则它可以指示属性分量。如果gpcc_type的值是4,即,当它指示属性分量时,循环还可以包括AttrIdx。AttrIdx可以指示在SPS()中用信号通知的属性的标识符。可以将G-PCC分量类型框(GPCCComponentTypeBox)包括在针对多个轨道的样本条目中。如果G-PCC分量类型框(GPCCComponentTypeBox)存在于携带部分或全部G-PCC比特流的轨道的样本条目中,则GPCCComponentTypeStruct()可以指示由各个轨道携带的一个或更多个G-PCC分量类型。可以将包括GPCCComponentTypeStruct()或GPCCComponentTypeStruct()的GPCCComponentTypeBox称为G-PCC分量信息。
样本组
本公开中提及的封装处理单元可以通过对一个或更多个样本进行分组来生成样本组。本公开中提及的封装处理单元、元数据处理单元、或信令处理单元可以在样本、样本组、或样本条目中用信号通知与样本组相关联的信令信息。即,可以将与样本组相关联的样本组信息添加至样本、样本组、或样本条目。样本组信息可以是3D边界框样本组信息、3D区域样本组信息、3D图块样本组信息、3D图块清单样本组信息等。
轨道组
本公开中提及的封装处理单元可以通过对一个或更多个轨道进行分组来生成轨道组。本公开中提及的封装处理单元、元数据处理单元、或信令处理单元可以在样本、轨道组、或样本条目中用信号通知与轨道组相关联的信令信息。即,可以将与轨道组相关联的轨道组信息添加至样本、轨道组或样本条目。轨道组信息可以是3D边界框轨道组信息、点云构成成轨道组信息、空间区域轨道组信息、3D图块轨道组信息、3D图块清单轨道组信息等。
样本条目
图34是用于解释包括单个轨道的基于ISOBMFF的文件的图。图34的(a)例示了包括单个轨道的基于ISOBMFF的文件的布局的示例,并且图34的(b)例示了当G-PCC比特流被存储在文件的单个轨道中时mdat框的样本结构的示例。图35是用于解释包括多个轨道的基于ISOBMFF的文件的图。图35的(a)例示了包括多个轨道的基于ISOBMFF的文件的布局的示例,并且图35的(b)例示了当G-PCC比特流被存储在文件的单个轨道中时mdat框的样本结构的示例。
被包括在文件的moov框中的stsd框(SampleDescriptionBox)可以包括用于存储G-PCC比特流的单个轨道的样本条目。可以将SPS、GPS、APS、图块清单包括在文件中的moov框中的样本条目中或者mdat框中的样本中。而且,可以将几何切片以及零个或更多个属性切片包括在文件中的mdat框的样本中。当G-PCC比特流被存储在文件的单个轨道中时,各个样本皆可以包含多个G-PCC分量。即,各个样本皆可以由一个或更多个TLV封装结构组成。可以如下定义单个轨道的样本条目。
样本条目类型:‘gpe1’、‘gpeg’
容器:SampleDescriptionBox
强制性:‘gpe1’或‘gpeg’样本条目是强制性的量:可以存在一个或更多个样本条目
样本条目类型‘gpe1’或‘gpeg’是强制性的,并且可以存在一个或更多个样本条目。G-PCC轨道可以使用具有样本条目类型gpe1’或‘gpeg’的VolumetricVisualSampleEntry。G-PCC轨道的样本条目可以包括G-PCC解码器配置框GPCCConfigurationBox,并且G-PCC解码器配置框可以包括G-PCC解码器配置记录(GPCCDecoderConfigurationRecord())。GPCCDecoderConfigurationRecord()可以包括以下项中的至少一个:configurationVersion、profile_idc、profile_compatibility_flags、level_idc、numOfSetupUnitArrays、SetupUnitType、completeness、numOfSepupUnit、或setupUnit。被包括在GPCCDecoderConfigurationRecord()中的setupUnit阵列字段可以包括包含一个SPS的TLV封装结构。
如果样本条目类型是‘gpe1’,则可以将所有参数集(例如,SPS、GPS、APS、图块清单)包括在setupUints的阵列中。如果样本条目类型是‘gpeg’,则可以将上述参数集包括在setupUint的阵列(即,样本条目)中或者包括在流(即,样本)中。具有样本条目类型‘gpe1’的G-PCC样本条目(GPCCSampleEntry)的语法的示例如下。
aligned(8)class GPCCSampleEntry()
extends VolumetricVisualSampleEntry('gpe1'){
GPCCConfigurationBox config;//强制性
3DBoundingBoxInfoBox();
CubicRegionInfoBox();
TileInventoryBox();
}
具有样本条目类型‘gpe1’的G-PCC样本条目(GPCCSampleEntry)可以包括:GPCCConfigurationBox、3DBoundingBoxInfoBox()、CubicRegionInfoBox()、以及TileInventoryBox()。3DBoundingBoxInfoBox()可以指示与由轨道携带的样本相关的点云数据的3D边界框信息。CubicRegionInfoBox()可以指示关于由轨道中的样本携带的点云数据的一个或更多个空间区域的信息。TileInventoryBox()可以指示由轨道中的样本携带的点云数据的3D图块清单信息。
如图34的(b)所例示的,样本可以包括包含几何切片的TLV封装结构。另外,样本可以包括包含一个或更多个参数集的TLV封装结构。另外,样本可以包括包含一个或更多个属性切片的TLV封装结构。
如图35的(a)所例示的,当G-PCC比特流由基于ISOBMFF的文件的多个轨道携带时,可以将各个几何切片或属性切片映射至单独的轨道。例如,可以将几何切片映射至轨道1,并且可以将属性切片映射至轨道2。可以将携带几何切片的轨道(轨道1)称为几何轨道或G-PCC几何轨道,并且可以将携带属性切片的轨道(轨道2)称为属性轨道或G-PCC属性轨道。另外,可以将几何轨道定义为携带几何切片的体积可视轨道,并且可以将属性轨道定义为携带属性切片的体积可视轨道。
可以将携带包括几何切片和属性切片两者的G-PCC比特流的部分的轨道称为经复用的轨道。在几何切片和属性切片被存储在单独的轨道上的情况下,轨道中的各个样本都可以包括携带单个G-PCC分量的数据的至少一个TLV封装结构。在这种情况下,各个样本既不包含几何也不包含属性,并且可以不包含多个属性。G-PCC比特流的多轨道封装可以使得G-PCC播放器能够有效地访问G-PCC分量之一。当G-PCC比特流由多个轨道携带时,为了使G-PCC播放器有效地访问G-PCC分量之一,需要满足以下条件。
a)当由TLV封装结构组成的G-PCC比特流由多个轨道携带时,携带几何比特流(或几何切片)的轨道成为入口点。
b)在样本条目中,添加新的框以指示被包括在轨道中的流的角色。该新的框可以是前述G-PCC分量类型框(GPCCComponentTypeBox)。即,可以将GPCCComponentTypeBox包括在多个轨道的样本条目中。
c)引入从仅携带G-PCC几何比特流的轨道到携带G-PCC属性比特流的轨道的轨道参考。
GPCCComponentTypeBox可以包括GPCCComponentTypeStruct()。如果GPCCComponentTypeBox存在于携带部分或全部G-PCC比特流的轨道的样本条目中,则GPCCComponentTypeStruct()可以指定由各个轨道携带的一个或更多个G-PCC分量的类型(例如,几何、属性)。例如,如果被包括在GPCCComponentTypeStruct()中的gpcc_type字段的值是2,则它可以指示几何分量,而如果它是4,则它可以指示属性分量。另外,当gpcc_type字段的值指示4(即,属性分量)时,可以进一步包括指示被用信号通知给SPS()的属性标识符的AttrIdx字段。
在G-PCC比特流由多个轨道携带的情况下,可以将样本条目的语法定义如下。
样本条目类型:‘gpe1’、‘gpeg’、‘gpc1’或‘gpcg’
容器:SampleDescriptionBox
强制性:‘gpc1’或‘gpcg’样本条目是强制性的量:可以存在一个或更多个样本条目
样本条目类型‘gpc1’、‘gpcg’、‘gpc1’或‘gpcg’是强制性的,并且可以存在一个或更多个样本条目。多个轨道(例如,几何或属性道)可以使用具有样本条目类型‘gpc1’、‘gpcg’、‘gpc1’或‘gpcg’的VolumetricVisualSampleEntry。在‘gpe1’样本条目中,所有参数集可以存在于setupUnit阵列中。在‘gpeg’样本条目中,参数集存在于阵列或流中。在‘gpe1’或‘gpeg’样本条目中,GPCCComponentTypeBox不应存在。在‘gpc1’样本条目中,SPS、GPS以及图块清单可以存在于携载G-PCC几何比特流的轨道的SetupUnit阵列中。所有相关APS可以存在于携带G-PCC属性比特流的轨道的SetupUnit阵列中。在‘gpcg’样本条目中,SPS、GPS、APS或图块清单可以存在于阵列或流中。在‘gpc1’或‘gpcg’样本阵列中,应当存在GPCCComponentTypeBox。
G-PCC样本条目的语法的示例如下。
基类VolumetricVisualSampleEntry的compressorname(即,codingname)可以指示与推荐的“013GPCC编码”值一起使用的压缩程序的名称。在“\013GPCC编码”中,第一字节(由\013表示的八进制数13或十进制数11)是剩余字节的数量,并且可以指示剩余串的字节数。congif可以包括G-PCC解码器配置信息。info可以指示各个轨道中携带的G-PCC分量信息。info可以指示轨道中携带的分量图块,并且还可以指示G-PCC属性轨道中携带的G-PCC分量的属性名称、索引以及属性类型。
样本格式
当G-PCC比特流被存储在单个轨道中时,样本格式的语法如下。
aligned(8)class GPCCSample
{
unsigned int GPCCLength=sample_size;//样本的大小
for(i=0;i<GPCCLength;)//到样本的结束
{
tlv_encapsulation gpcc_unit;
i+=(1+4)+gpcc_unit.tlv_num_payload_bytes;
}
}
在上述语法中,各个样本(GPCCSample)都对应于单个点云帧,并且可以由属于同一呈现时间的一个或更多个TLV封装结构组成。各个TLV封装结构都可以包括单一类型的TLV有效载荷。另外,一个样本可以是独立的(例如,同步样本)。GPCCLength指示样本的长度,并且gpcc_unit可以包括包含单个G-PCC分量(例如,几何切片)的TLV封装结构的实例。
当G-PCC比特流被存储在多个轨道中时,各个样本都可以对应于单个点云帧,并且对不同轨道中的同一点云帧有贡献的样本可能必须具有同一呈现时间。各个样本都可以由样本条目的GPCCComponentInfoBox中指示的G-PCC分量的一个或更多个G-PCC单元以及携带参数集或图块清单之一的零个或更多个G-PCC单元来组成。当包括参数集或图块清单的G-PCC单元存在于样本中时,F-PCC样本可能需要出现在G-PCC分量的G-PCC单元之前。各个样本都可以包括包含属性数据单元的一个或更多个G-PCC单元、以及携带参数集的零个或更多个G-PCC单元。在G-PCC比特流被存储在多个轨道中的情况下,样本格式的语法和语义可以与上述将G-PCC比特流存储在单个轨道中的情况下的语法和语义相同。
子样本
在接收装置中,由于首先对几何切片进行解码,并且需要基于经解码的几何对属性切片进行解码,因此,当各个样本都由多个TLV封装结构组成时,必需访问样本中的各个TLV封装结构。另外,如果一个样本由多个TLV封装结构组成,则所述多个TLV封装结构中的各个TLV封装结构都可以被存储为子样本。可以将子样本称为G-PCC子样本。例如,如果一个样本包括包含参数集的参数集TLV封装结构、包含几何切片的几何TLV封装结构以及包含属性切片的属性TLV封装结构,则可以将参数集TLV封装结构、几何TLV封装结构以及属性TLV封装结构分别存储为子样本。在这种情况下,为了能够访问样本中的各个G-PCC分量,可能需要由子样本携带的TLV封装结构的类型。
当G-PCC比特流被存储在单个轨道中时,G-PCC子样本可以仅包括一个TLV封装结构。一个SubSampleInformationBox可以存在于moov框的样本表框(SampleTableBox,stbl)中,或者可以存在于各个电影片段框(MovieFragmentBox,moof)的轨道片段框(TrackFragmentBox,traf)中。如果存在SubSampleInformationBox,则可以将TLV封装结构的8位类型值包括在SubSampleInformationBox中的子样本条目的32位codec_specific_parameters字段中。如果TLV封装结构包括属性有效载荷,则可以将属性索引的6位值包括在SubSampleInformationBox中的子样本条目的32位codec_specific_parameters字段中。在一些实施方式中,可以通过解析SubSampleInformationBox中的子样本条目的codec_specific_parameters字段来标识各个子样本的类型。可以将SubSampleInformationBox的codec_specific_parameters定义如下。
if(flags==0){
unsigned int(8)PayloadType;
if(PayloadType==4){//属性有效载荷
unsigned int(6)AttrIdx;
bit(18)reserved=0;
}
else
bit(24)reserved=0;
}else if(flags==1){
unsigned int(1) tile_data;
bit(7) reserved=0;
if(tile_data)
unsigned int(24) tile_id;
else
bit(24) reserved=0;
}
在上述子样本语法中,payloadType可以指示子样本中的TLV封装结构的tlv_type。例如,如果payloadType的值是4,则可以指示属性切片(即,attribute slice)。attrIdx可以指示在子样本中包括属性有效载荷的TLV封装结构的属性信息的标识符。attrIdx可以与在子样本中包括属性有效载荷的TLV封装结构的ash_attr_sps_attr_idx相同。tile_data可以指示子样本是否包括一个图块或另一图块。当tile_data的值为1时,其可以指示子样本包括包含与一个G-PCC图块相对应的几何数据单元或属性数据单元的TLV封装结构。当tile_data的值为0时,其可以指示子样本包括包含各个参数集、图块清单、或帧边界标记的TLV封装结构。tile_id可以指示在图块清单中与子样本相关联的G-PCC图块的索引。
当将G-PCC比特流存储在多个轨道中时(在ISOBMFF中的G-PCC数据的多轨道封装的情况下),如果存在子样本,则在各个moviefragmentbox的SampleTableBox或TrackFragmentBox中可能仅需要存在标志为1的SubSampleInformationBox。在G-PCC比特流被存储在多个轨道中的情况下,语法元素和语义可以与当G-PCC比特流被存储在单个轨道中时的语法元素和语义中的标志(flag)==1的情况相同。
轨道之间的参考
当在多个轨道中携带G-PCC比特流时(即,当在不同的(单独的)轨道中携带G-PCC几何比特流和属性比特流时),为了在轨道之间连接,可以使用轨道参考工具。可以将一个TrackReferenceTypeBoxes添加至G-PCC轨道的TrackBox中的TrackReferenceBox。TrackReferenceTypeBox可以包含指定G-PCC轨道所参考的轨道的track_ID的阵列。
在一些实施方式中,本公开可以提供用于支持G-PCC数据(在下文中,可以被称为G-PCC比特流、经封装的G-PCC比特流、或G-PCC文件)的携带中的时间可缩放性的装置和方法。另外,本公开可以提出一种用于提供点云内容服务的装置和方法,其高效地将G-PCC比特流存储在文件中的单个轨道中,或者将其分开地存储在多个轨道中,并且为其提供信令。另外,本公开提出了一种用于处理文件存储技术以支持高效访问所存储的G-PCC比特流的装置和方法。
时间可缩放性
时间可缩放性可以指的是允许提取经独立编码的帧的一个或更多个子集的可能性的功能。而且,时间可缩放性可以指的是将G-PCC数据分成多个不同的时间级别并且独立地处理属于不同的时间级别的各个G-PCC帧的功能。如果支持时间可缩放性,则G-PCC播放器(或者本公开的发送装置和/或接收装置)可以有效地访问G-PCC分量当中的期望分量(目标分量)。另外,如果支持时间可缩放性,则由于G-PCC帧被彼此独立地处理,因此,可以将在系统级别的时间可缩放性支持表达为更灵活的时间子分层。另外,如果支持时间可缩放性,则处理G-PCC数据的系统(点云内容提供系统)可以以高级别操纵数据以匹配网络能力或解码器能力,从而可以提高点云内容提供系统的性能。
现有技术的问题
涉及点云内容提供系统或G-PCC数据的携带的现有技术不支持时间可缩放性。即,现有技术仅根据一个时间级别来处理G-PCC数据。因此,现有技术无法提供根据上述时间可缩放性支持的效果。
1.实施方式1
图36至图39示出了支持时间可缩放性的实施方式1的流程图。
参照图36,发送装置10和1500可以生成关于样本组的信息(S3610)。如下所述,样本组可以是基于一个或更多个时间级别对G-PCC文件中的样本(G-PCC样本)进行分组的样本组。而且,发送装置10和1500可以生成G-PCC文件(S3620)。具体地,发送装置10和1500可以生成包括点云数据、关于样本组的信息、和/或关于时间级别的信息的G-PCC文件。步骤S3610和S3620可以由封装处理单元13、封装处理单元1525、和/或信令处理单元1510中的一个或更多个来执行。发送装置10和1500可以用信号通知G-PCC文件。
参照图37,接收装置20和1700可以获取G-PCC文件(S3710)。G-PCC文件可以包括:点云数据、关于样本组的信息、和/或关于时间级别的信息。样本组可以是基于一个或更多个时间级别对G-PCC文件中的样本(G-PCC样本)进行分组的样本组。接收装置20和1700可以从G-PCC文件中的样本(G-PCC样本)当中提取属于目标时间级别的一个或更多个样本(S3720)。具体地,接收装置20和1700可以基于关于样本组的信息和/或关于时间级别的信息,来解封装或提取属于目标时间级别的样本。这里,目标时间级别可以是期望时间级别。在一些实施方式中,步骤S3720可以包括:确定是否存在一个或更多个时间级别;当存在一个或更多个时间级别时,确定期望时间级别和/或期望帧速率是否可用;和/或,以及当期望时间级别和/或期望帧速率可用时,提取属于期望时间级别的样本组中的样本。步骤S3710(和/或解析样本条目的步骤)和S3720可以由解封装处理单元22、解封装处理单元1710、和/或信令处理单元1715中的一个或更多个来执行。在一些实施方式中,接收装置20和1700可以执行以下步骤:基于关于样本组的信息、和/或关于步骤S3710和步骤S3720之间的时间级别的信息,来确定G-PCC文件中的样本的时间级别。
样本分组
作为用于支持时间可缩放性的方法,可以存在样本分组方法和轨道分组方法。样本分组方法可以是根据时间级别对G-PCC文件中的样本进行分组的方法,并且轨道分组方法可以是根据时间级别对G-PCC文件中的轨道进行分组的方法。在下文中,对本公开的描述将集中于支持基于样本分组方法的时间可缩放性的装置和方法。
可以将样本组用于将样本与向其指定的时间级别彼此相关联。即,样本组可以指示哪个样本属于哪个时间级别。而且,样本组可以是关于将一个或更多个样本分组到一个或更多个时间级别的结果的信息。可以将样本组称为‘tele’样本组或时间级别样本组‘tele’。
关于样本组的信息
关于样本组的信息可以包括关于样本分组的结果的信息。因此,关于样本组的信息可以是用于将样本和向其指定的时间级别彼此关联的信息。即,关于样本组的信息可以指示哪个样本属于哪个时间级别,并且可以是关于将一个或更多个样本分组到一个或更多个时间级别的结果的信息。
关于样本组的信息可以存在于包含几何数据单元的轨道中。在G-PCC数据以多个轨道携带的情况下,关于样本组的信息可以仅存在于几何轨道中,以将轨道中的各个样本分组至所指定的时间级别。属性轨道中的样本可以基于它们与和其相关联的几何轨道的关系来进行推断。例如,属性轨道中的样本可以属于和与其相关联的几何轨道中的样本相同的时间级别。
当关于样本组的信息存在于由G-PCC图块基本轨道参考的G-PCC图块轨道中时,关于样本组的信息可以存在于由G-PCC图块基本轨道参考的其余图块轨道中。这里,G-PCC图块轨道可以是携带所有G-PCC分量的体积可视轨道,或者是与一个或更多个G-PCC图块相对应的单个G-PCC分量。而且,G-PCC图块基本轨道可以是携带与G-PCC图块轨道相对应的所有参数集和图块清单的体积可视轨道。
关于时间级别的信息
为了解释G-PCC文件所支持的时间可缩放性,可以用信号通知关于时间级别的信息。关于时间级别的信息可以存在于包括样本组(或者关于样本组的信息)的轨道的样本条目中。例如,关于时间级别的信息可以存在于GPCCDecoderConfigurationRecord()中,或者存在于用信号通知G-PCC轨道的可缩放性信息的G-PCC可缩放性信息框(GPCCScalabilityInfoBox)中。
如下面的语法结构中所表达的,关于时间级别的信息包括数量信息(例如,num_temporal_levels)、时间级别标识信息(例如,level_idc)和/或关于帧速率的信息中的一个或更多个。另外,关于帧速率的信息可以包括帧速率信息(例如,avg_frame_rate)、和/或帧速率存在信息(例如,avg_frame_rate_present_flag)。
(1)数量信息
数量信息可以指示时间级别的数量。例如,当num_temporal_levels的值大于第一值(例如,1)时,num_temporal_levels的值可以指示时间级别的数量。在一些实施方式中,数量信息还可以指示G-PCC文件中的样本是否在时间上可缩放。例如,当num_temporal_levels的值等于第一值(例如,1)时,这可以指示时间可缩放性是不可能的(不支持时间可缩放性)。作为另一示例,当num_temporal_levels的值小于第一值(例如,1)(例如,num_temporal_levels的值为0)时,这可以指示不知道时间可缩放性是否可能。总之,当num_temporal_levels的值等于或小于第一值(例如,1)时,num_temporal_levels的值可以指示num_temporal_levels的值是否在时间上可缩放。
(2)时间级别标识信息
时间级别标识信息可以指示轨道的时间级别标识符(或级别码)。即,时间级别标识信息可以指示轨道中的样本的时间级别标识符。在一些实施方式中,当num_temporal_levels的值等于或小于第一值(例如,1)时,时间级别标识信息可以指示G-PCC文件中的样本的级别码。时间级别标识信息可以在步骤S3620中通过数量信息所指示的时间级别的数量来生成,并且可以在步骤S3710中通过数量信息所指示的时间级别的数量来获取。例如,当i按1从0增加至‘num_temporal_levels-1’时,可以生成/获取时间级别标识信息。
(3)关于帧速率的信息
如上所述,关于帧速率的信息可以包括帧速率信息(例如,avg_frame_rate)、和/或帧速率存在信息(例如,avg_frame_rate_present_flag)。
帧速率信息可以指示时间级别的帧速率。例如,帧速率信息可以指示以帧为单位的时间级别的帧速率,并且由帧速率信息指示的帧速率可以是平均帧速率。在一些实施方式中,当avg_frame_rate的值等于第一值(例如,0)时,其可以指示未指定的平均帧速率。帧速率信息可以通过由数量信息指示的时间级别的数量来生成,并且可以通过由数量信息指示的时间级别的数量来获得。例如,当i按1从0增加至‘num_temporal_levels-1’时,可以生成/获取帧速率信息。
帧速率存在信息可以指示是否存在帧速率信息(即,是否用信号通知帧速率信息)。例如,当avg_frame_rate_present_flag的值等于第一值(例如,1)时,其可以指示存在帧速率信息,并且当avg_frame_rate_present_flag的值等于第二值(例如,0)时,其可以指示不存在帧速率信息。
可以用信号通知帧速率信息,而不管帧速率存在信息的值。在一些实施方式中,可以根据帧速率存在信息的值来确定是否用信号通知帧速率信息。图38和图39是用于解释确定是否根据帧速率存在信息的值来用信号通知帧速率信息的示例的流程图。
参照图38,发送装置10和1500可以确定是否存在帧速率信息(S3810)。当不存在帧速率信息时,发送装置10和1500可以在关于时间级别的信息中仅包括帧速率存在信息。即,当不存在帧速率信息时,发送装置10和1500可以仅用信号通知帧速率存在信息。在这种情况下,avg_frame_rate_present_flag的值可以等于第二值(例如,0)。与此相反,当存在帧速率信息时,发送装置10和1500可以在关于时间级别的信息中包括帧速率存在信息和帧速率信息(S3830)。即,当存在帧速率信息时,发送装置10和1500可以用信号通知帧速率存在信息和帧速率信息。在这种情况下,avg_frame_rate_present_flag的值可以等于第一值(例如,1)。步骤S3810至S3830可以由封装处理单元13、封装处理单元1525、和/或信令处理单元1510中的一个或更多个来执行。
参照图39,接收装置20和1700可以获取帧速率存在信息(S3910)。另外,接收装置20和1700可以确定由帧速率存在信息指示的值(S3920)。当avg_frame_rate_present_flag的值等于第二值(例如,0)时,接收装置20和1700可以结束获取关于帧速率的信息而不获取帧速率信息的步骤。与此相反,当avg_frame_rate_present_flag的值等于第一值(例如,1)时,接收装置20和1700可获取帧速率信息(S3930)。接收装置20和1700可以从G-PCC文件中的样本当中提取与目标帧速率相对应的样本(S3940)。这里,‘与目标帧速率相对应的样本’可以是具有与目标帧速率相对应的帧速率的时间级别或轨道。另外,‘与目标帧速率相对应的帧速率’不仅可以包括具有与目标帧速率相同的值的帧速率,而且可以包括具有比目标帧速率的值小的值的帧速率。步骤S3910至S3940可以由解封装处理单元22、解封装处理单元1710、和/或信令处理单元1715中的一个或更多个来执行。在一些实施方式中,可以在步骤S3930与S3940之间执行基于帧速率信息确定时间级别(或轨道)的帧速率的步骤。
这样,当根据帧速率存在信息的值来确定是否用信号通知帧速率信息时,用于用信号通知帧速率信息的比特被减少,从而增加比特效率。例如,特定文件解析器或播放器(例如,接收装置)可以使用帧速率信息,但是其它文件解析器或播放器可能不想使用或者可能不使用帧速率信息。如果G-PCC文件由不想使用帧速率信息或者不使用帧速率信息的文件解析器或播放器来再现,则将帧速率存在信息的值设定成第二值(例如,0),从而增加用于用信号通知帧速率信息的比特的效率。
2.实施方式2
实施方式2是将‘连续样本之间的最小组合时间差’的条件添加至实施方式1的实施方式。
如果针对G-PCC文件使用或激活时间可缩放性,则G-PCC比特流的经编码的帧可以以不同的时间级别进行对准。而且,可以将不同的时间级别存储在不同的轨道中。而且,可以基于帧速率信息来确定各个时间级别(或各个轨道)的帧速率。
例如,将样本以三个时间级别(时间级别0、时间级别1以及时间级别2)进行布置,并且可以将各个时间级别存储在一个轨道中,使得可以配置三个轨道(轨道0、轨道1以及轨道2)。在这种情况下,文件解析器或播放器(例如,接收装置)可以容易地确定当仅播放轨道0时帧速率是什么,或者当轨道0和轨道1一起播放时帧速率是什么。文件解析器或播放器(例如,接收装置)可以在给定目标帧速率时选择要播放的轨道。例如,如果在时间级别0与30fps的帧速率相关联、时间级别1与60fps的帧速率相关联、并且时间级别2与120fps相关联的状态下,目标帧速率是60fps,则可以容易地确定文件解析器或播放器应当一起播放轨道0和轨道1。
另一方面,如果具有较高时间级别的样本(或者与较高时间级别相关联的轨道)与较大的帧速率相关联,则当以较高时间级别进行文件回放时,轨道的复杂度和大小可能增加。即,如果具有某一时间级别的样本(或者与任意时间级别相关联的轨道)与具有紧接着较低的时间级别的轨道相比具有两倍的帧速率(两倍的帧数),则随着要播放的轨道的时间级别增加,回放的复杂度可能增加许多倍。
因此,为了顺畅且渐进的回放,可能必需限制各个轨道的帧速率的差异。各个轨道内的两个不同帧之间的距离(即,组合时间差)应当相同的约束(无论选择哪个(哪些)轨道用于回放)可以是顺畅、渐进回放的理想条件。然而,由于这种条件可能发生在理想情形下,因此,在可能不发生理想情形的实际情形下,可能需要顺畅且渐进回放的实际约束。
本公开提出了用于回放的各个轨道的连续样本(帧)之间的最小时间差可以彼此相等的约束。具体地,假设时间级别包括‘第一时间级别’和‘具有比第一时间级别大的级别值的第二时间级别’,‘第二时间级别中的连续样本之间的最小时间差’可以等于‘第一时间级别中的连续样本之间的最小时间差’、或者大于‘第一时间级别中的连续样本之间的最小时间差’。即,‘第二时间级别中的连续样本之间的最小时间差’可以大于或等于‘第一时间级别中的连续样本之间的最小时间差’。
当应用这种约束时,与具有相对较低值的时间级别相比,可以防止非常大量的帧被包括在具有相对较高值的时间级别中,从而降低回放复杂度的增加,并且可以进行顺畅且渐进的回放。
3.实施方式3
实施方式3是基于实施方式1和/或实施方式2来防止关于时间级别的信息的冗余信令的实施方式。
如上所述,样本组(或者关于样本组的信息)可以存在于包括几何数据单元的轨道中,并且关于时间级别的信息可以存在于包括样本组(或者关于样本组的信息)的轨道的样本条目中。即,关于时间级别的信息可以仅存在于包括几何轨道的轨道中。而且,属性轨道中的样本可以基于它们与和其相关联的几何轨道的关系来进行推断。因此,即使对于没有包括几何轨道的轨道,关于时间级别的信令信息也可能造成冗余信令的问题。
以下语法结构是根据实施方式3的语法结构。
在上述语法结构中,multiple_temporal_level_tracks_flag是被包括在关于时间级别的信息中的语法元素,并且可以指示在G-PCC文件中是否存在多个时间级别轨道。例如,当multiple_temporal_level_tracks_flag的值等于第一值(例如,1)时,它可以指示G-PCC比特流帧被分组成多个时间级别轨道,而当multiple_temporal_level_tracks_flag的值等于第二值(例如,2)时,它可以指示所有时间级别样本存在于单个轨道中。‘当由当前轨道携带的分量的类型(gpcc_data)是属性时’,和/或‘如果当前轨道是具有预定样本条目类型(例如,‘gpc1’和/或‘gpcg’)的轨道’,可以不用信号通知multiple_temporal_level_tracks_flag。在这种情况下,multiple_temporal_level_tracks_flag的值可以与当前轨道所参考的几何轨道中的对应语法元素(关于时间级别的信息)相同。
frame_rate_present_flag是帧速率存在信息,并且其意义可以如上所述。‘当由当前轨道携带的分量的类型(gpcc_data)是属性时’,和/或‘如果当前轨道是具有预定样本条目类型(例如,‘gpc1’和/或‘gpcg’)的轨道’,可以不用信号通知frame_rate_present_flag。在这种情况下,frame_rate_present_flag的值可以与当前轨道所参考的几何轨道中的对应语法元素(关于时间级别的信息)相同。
num_temporal_levels是数量信息,并且可以指示其中对G-PCC比特流帧进行分组的时间级别的最大数量。当关于时间级别的信息不可用或者所有帧是利用单个时间级别用信号通知时,可以将num_temporal_levels的值设定成1。num_temporal_levels的最小值可以是1。‘如果由当前轨道携带的分量的类型(gpcc_data)是属性’,和/或‘如果当前轨道是具有预定样本条目类型(例如,‘gpc1’和/或‘gpcg’)的轨道’,则可以不用信号通知num_temporal_levels。在这种情况下,num_temporal_levels的值可以与当前轨道所参考的几何轨道中的对应语法元素(关于时间级别的信息)相同。
图40和图41是例示能够防止冗余信令问题的方法的流程图。
参照图40,发送装置10和1500可以确定当前轨道所携带的分量的类型(当前轨道的分量的类型)(S4010)。分量类型可以根据gpcc_type的值和下表4来确定。
[表4]G-PCC分量类型
gpcc_type值 | 描述 |
1 | 保留 |
2 | 几何数据 |
3 | 保留 |
4 | 属性数据 |
5、……、31 | 保留。 |
当由当前轨道携带的分量的类型是属性(或属性数据)(gpcc_type==4)时,发送装置10和1500可以不包括关于时间级别的信息(S4020)。即,当由当前轨道携带的分量的类型是属性时,发送装置10和1500可以不用信号通知关于时间级别的信息。在这种情况下,multiple_temporal_level_tracks_flag、frame_rate_present_flag和/或frame_rate_present_flag中的一个或更多个值可以与当前轨道所参考的几何轨道中的对应语法元素(关于时间级别的信息)相同。与此相反,当由当前轨道携带的分量的类型是属性时,发送装置10和1500可以包括关于时间级别的信息(S4030)。即,当由当前轨道携带的分量的类型是属性时,发送装置10和1500可以用信号通知关于时间级别的信息。步骤S4010至S4030可以由封装处理单元13、封装处理单元1525、和/或信令处理单元1510中的一个或更多个来执行。
在一些实施方式中,在步骤S4010中,发送装置10和1500还可以确定当前轨道的样本条目的类型。如果由当前轨道携带的分量的类型是属性,并且当前轨道是具有预定样本条目类型(例如,‘gpc1’和/或‘gpcg’)的轨道,则发送装置10和1500可以不包括(不用信号通知)关于时间级别的信息(S4020)。在这种情况下,multiple_temporal_level_tracks_flag、frame_rate_present_flag和/或frame_rate_present_flag中的一个或更多个值可以与当前轨道所参考的几何轨道中的对应语法元素(关于时间级别的信息)相同。相反,如果由当前轨道携带的分量的类型不是属性,或者如果当前轨道不是具有预定样本条目类型(例如,‘gpc1’和/或‘gpcg’)的轨道,则发送装置10和1500可以包括(用信号通知)关于时间级别的信息(S4030)。
参照图41,接收装置20和1700可以确定当前轨道所携带的分量的类型(S4110)。分量的类型可以根据gpcc_type的值和上表4来确定。
当由当前轨道携带的分量的类型是属性时,接收装置20和1700可以不获取关于时间级别的信息(S4120)。在这种情况下,可以将multiple_temporal_level_tracks_flag、frame_rate_present_flag、和/或frame_rate_present_flag中的一个或更多个值设定为与当前轨道所参考的几何轨道中的对应语法元素(关于时间级别的信息)相同。与此相反,当由当前轨道携带的分量的类型不是属性时,接收装置20和1700可以获取关于时间级别的信息(S4130)。步骤S4110至S4130可以由解封装处理单元22、解封装处理单元1710、和/或信令处理单元1715中的一个或更多个来执行。
在一些实施方式中,在步骤S4110中,接收装置20和1700还可以确定当前轨道的样本条目的类型。如果由当前轨道携带的分量的类型是属性,并且当前轨道是具有预定样本条目类型(例如,‘gpc1’和/或‘gpcg’)的轨道,则接收装置20和1700可以不获取关于时间级别的信息(S4120)。在这种情况下,可以将multiple_temporal_level_tracks_flag、frame_rate_present_flag和/或frame_rate_present_flag中的一个或更多个值设定为与当前轨道所参考的几何轨道中的对应语法元素(关于时间级别的信息)相同。相反,如果由当前轨道携带的分量的类型不是属性或者如果当前轨道不是具有预定样本条目类型(例如,‘gpc1’和/或‘gpcg’)的轨道,则接收装置20和1700可以获取关于时间级别的信息(S4130)。
本公开的范围包括使根据各种实施方式的方法的操作在装置或计算机上执行的软件或机器可执行指令(例如,操作系统、应用、固件、程序等)、以及其中存储此类软件、指令等并且可在装置或计算机上执行的非暂时性计算机可读介质。
工业实用性
根据本公开的实施方式可以被用于提供点云内容。而且,根据本公开的实施方式可以被用于对点云数据进行编码/解码。
Claims (15)
1.一种由点云数据的接收装置执行的方法,所述方法包括以下步骤:
获取包括所述点云数据的基于几何的点云压缩G-PCC文件,其中,所述G-PCC文件包括关于样本组的信息,在所述样本组中,所述G-PCC文件中的样本是基于一个或更多个时间级别来分组的,并且其中,所述G-PCC文件还包括关于时间级别的信息;以及
基于所述关于样本组的信息和所述关于时间级别的信息,从所述G-PCC文件中的所述样本中提取属于目标时间级别的一个或更多个样本。
2.根据权利要求1所述的方法,其中,所述关于时间级别的信息包括指示时间级别数量的数量信息以及用于标识所述时间级别的时间级别标识信息。
3.根据权利要求2所述的方法,其中,所述数量信息还指示所述G-PCC文件中的所述样本的时间可缩放性。
4.根据权利要求3所述的方法,
其中,基于所述数量信息的值大于第一值,所述数量信息指示所述时间级别的数量,并且
其中,基于所述数量信息的值等于或小于所述第一值,所述数量信息指示所述G-PCC文件中的所述样本的时间可缩放性。
5.根据权利要求1所述的方法,其中,基于由多个轨道来携带所述G-PCC文件,所述关于样本组的信息存在于所述多个轨道当中的携带所述点云数据的几何数据的几何轨道中。
6.根据权利要求5所述的方法,
其中,存在于属性轨道中的一个或更多个样本的时间级别等于所述几何轨道中的对应样本的时间级别,并且
其中,所述属性轨道携带所述多个轨道当中的所述点云数据的属性数据。
7.根据权利要求1所述的方法,
其中,所述关于时间级别的信息包括指示所述时间级别的帧速率的帧速率信息,并且
其中,提取属于目标时间级别的一个或更多个样本的步骤包括:提取所述G-PCC文件中的所述样本当中的与目标帧速率相对应的一个或更多个样本。
8.根据权利要求7所述的方法,
其中,所述关于时间级别的信息包括指示是否存在所述帧速率信息的帧速率存在信息,并且
其中,基于所述帧速率存在信息指示所述帧速率信息的存在,将所述帧速率信息包括在所述关于时间级别的信息中。
9.根据权利要求7所述的方法,
其中,所述时间级别包括第一时间级别和第二时间级别,所述第二时间级别具有比所述第一时间级别大的级别值,
所述第二时间级别中的连续样本之间的最小组合时间差等于所述第一时间级别中的连续样本之间的最小组合时间差,或者大于所述第一时间级别中的所述连续样本之间的所述最小组合时间差。
10.根据权利要求1所述的方法,
其中,基于由当前轨道携带的分量的类型是所述点云数据的属性,所述关于时间级别的信息具有与由所述当前轨道参考的几何轨道中的对应信息相同的值。
11.根据权利要求10所述的方法,
其中,基于所述分量的类型是所述点云数据的属性并且所述当前轨道的样本条目的类型是预定样本条目类型,所述关于时间级别的信息具有与由所述当前轨道参考的几何轨道中的对应信息相同的值。
12.根据权利要求11所述的方法,其中,所述预定样本条目类型包括gpc1样本条目类型和gpcg样本条目类型中的一个或更多个。
13.一种点云数据的接收装置,所述接收装置包括:
存储器;以及
至少一个处理器,
其中,所述至少一个处理器被配置为:
获取包括所述点云数据的基于几何的点云压缩G-PCC文件,其中,所述G-PCC文件包括关于样本组的信息,在所述样本组中,所述G-PCC文件中的样本是基于一个或更多个时间级别来分组的,并且其中,所述G-PCC文件还包括关于时间级别的信息,并且
基于所述关于样本组的信息和所述关于时间级别的信息,从所述G-PCC文件中的所述样本中提取属于目标时间级别的一个或更多个样本。
14.一种由点云数据的发送装置执行的方法,所述方法包括以下步骤:
生成关于样本组的信息,在所述样本组中,基于一个或更多个时间级别来对基于几何的点云压缩G-PCC样本进行分组,以及
生成包括所述关于样本组的信息、关于时间级别的信息以及所述点云数据的G-PCC文件。
15.一种点云数据的发送装置,所述发送装置包括:
存储器;以及
至少一个处理器,
其中,所述至少一个处理器被配置为:
生成关于样本组的信息,在所述样本组中,基于一个或更多个时间级别来对基于几何的点云压缩G-PCC样本进行分组,并且
生成包括所述关于样本组的信息、关于时间级别的信息以及所述点云数据的G-PCC文件。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/218,279 | 2021-07-03 | ||
US63/219,360 | 2021-07-08 | ||
US202163223051P | 2021-07-18 | 2021-07-18 | |
US63/223,051 | 2021-07-18 | ||
PCT/KR2022/009457 WO2023282543A1 (ko) | 2021-07-03 | 2022-06-30 | 포인트 클라우드 데이터의 전송 장치와 이 전송 장치에서 수행되는 방법 및, 포인트 클라우드 데이터의 수신 장치와 이 수신 장치에서 수행되는 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117643062A true CN117643062A (zh) | 2024-03-01 |
Family
ID=90032528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280047124.8A Pending CN117643062A (zh) | 2021-07-03 | 2022-06-30 | 点云数据的发送装置和由发送装置执行的方法及点云数据的接收装置和由接收装置执行的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117643062A (zh) |
-
2022
- 2022-06-30 CN CN202280047124.8A patent/CN117643062A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102330527B1 (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
CN114503571B (zh) | 点云数据发送装置和方法、点云数据接收装置和方法 | |
KR102355634B1 (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
KR20210040253A (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
EP4131961A1 (en) | Device for transmitting point cloud data, method for transmitting point cloud data, device for receiving point cloud data, and method for receiving point cloud data | |
EP3992910A1 (en) | Apparatus and method for processing point cloud data | |
KR20210132200A (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신장치 및 포인트 클라우드 데이터 수신 방법 | |
US20220368751A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US20230291895A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US11765387B2 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
EP4161073A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US20240137578A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US12003769B2 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US20220351421A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US20240155157A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method | |
EP4240014A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US20230014844A1 (en) | Transmission device of point cloud data and method performed by transmission device, and reception device of point cloud data and method performed by reception device | |
CN117643062A (zh) | 点云数据的发送装置和由发送装置执行的方法及点云数据的接收装置和由接收装置执行的方法 | |
CN118318448A (zh) | 点云数据的发送装置和由发送装置执行的方法及点云数据的接收装置和由接收装置执行的方法 | |
KR20240090298A (ko) | 포인트 클라우드 데이터의 전송 장치와 이 전송 장치에서 수행되는 방법 및, 포인트 클라우드 데이터의 수신 장치와 이 수신 장치에서 수행되는 방법 | |
US20240029313A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
CN118251892A (zh) | 点云数据的发送装置、由发送装置执行的方法、点云数据的接收装置和由接收装置执行的方法 | |
KR20240093609A (ko) | 포인트 클라우드 데이터의 전송 장치와 이 전송 장치에서 수행되는 방법 및, 포인트 클라우드 데이터의 수신 장치와 이 수신 장치에서 수행되는 방법 |
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 |