CN117730539A - 点云数据发送设备和方法以及点云数据接收设备和方法 - Google Patents
点云数据发送设备和方法以及点云数据接收设备和方法 Download PDFInfo
- Publication number
- CN117730539A CN117730539A CN202280048937.9A CN202280048937A CN117730539A CN 117730539 A CN117730539 A CN 117730539A CN 202280048937 A CN202280048937 A CN 202280048937A CN 117730539 A CN117730539 A CN 117730539A
- Authority
- CN
- China
- Prior art keywords
- point cloud
- slice
- cloud data
- group
- layers
- 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 382
- 230000005540 biological transmission Effects 0.000 claims abstract description 185
- 238000009877 rendering Methods 0.000 claims description 22
- 238000000638 solvent extraction Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 description 80
- 230000036961 partial effect Effects 0.000 description 59
- 230000011664 signaling Effects 0.000 description 44
- 238000012545 processing Methods 0.000 description 42
- 238000007906 compression Methods 0.000 description 37
- 230000006835 compression Effects 0.000 description 37
- 238000013139 quantization Methods 0.000 description 28
- 238000005516 engineering process Methods 0.000 description 24
- 230000015654 memory Effects 0.000 description 24
- 230000011218 segmentation Effects 0.000 description 19
- 238000005192 partition Methods 0.000 description 18
- 239000000872 buffer Substances 0.000 description 17
- 230000000694 effects Effects 0.000 description 13
- 230000008859 change Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 230000009466 transformation Effects 0.000 description 11
- 239000012634 fragment Substances 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000007423 decrease Effects 0.000 description 8
- 238000002310 reflectometry Methods 0.000 description 8
- 238000007907 direct compression Methods 0.000 description 7
- 210000003128 head Anatomy 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 5
- 230000014509 gene expression Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 206010017886 Gastroduodenal ulcer Diseases 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000007774 longterm Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000001747 exhibiting effect Effects 0.000 description 2
- 210000000887 face Anatomy 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000012797 qualification Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000011449 brick Substances 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/40—Tree coding, e.g. quadtree, octree
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
根据实施例的点云数据传输方法可以包括对点云数据进行编码、以及发送点云数据的步骤。根据实施例的点云数据接收方法可以包括接收包括点云数据的比特流、以及对点云数据进行解码的步骤。
Description
技术领域
实施例涉及一种用于处理点云内容的方法和设备。
背景技术
点云内容是由点云表示的内容,其是属于表示三维空间的坐标系的点的集合。点云内容可表达以三个维度配置的媒体,并且用于提供诸如虚拟现实(VR)、增强现实(AR)、混合现实(MR)和自驾驶服务的各种服务。然而,需要数万至数十万的点数据来表示点云内容。因此,需要一种用于有效地处理大量点数据的方法。
发明内容
技术问题
实施例提供一种用于有效地处理点云数据的设备和方法。实施例提供一种用于解决时延和编码/解码复杂度的点云数据处理方法和设备。
实施例的技术范围不限于前述技术目的,并且可以扩展至本领域的技术人员基于本文所公开的整个内容可推断出的其它技术目的。
技术方案
为了实现这些目的和其他优点并且根据本公开的目的,如本文所体现和广泛描述的,发送点云数据的方法可以包括:对点云数据进行编码,以及发送包括点云数据的比特流。在本公开的另一方面,一种接收点云数据的方法可以包括接收包括点云数据的比特流,以及对点云数据进行解码。
有益效果
根据实施例的设备和方法可以高效地处理点云数据。
根据实施例的设备和方法可以提供高质量点云服务。
根据实施例的设备和方法可以提供点云内容以提供诸如VR服务和自驾驶服务的通用服务。
附图说明
附图被包括以提供本公开的进一步理解,并且被并入本申请中且构成本申请的一部分,附图图示本公开的实施例并与描述一起用于说明本公开的原理。为了更好地理解下面描述的各种实施例,应该结合附图参考以下实施例的描述。贯穿附图将使用相同的附图标记来指代相同或相似的部分。在附图中:
图1示出根据实施例的示例性点云内容提供系统;
图2是图示根据实施例的点云内容提供操作的框图;
图3图示根据实施例的捕获点云视频的示例性处理;
图4图示根据实施例的示例性点云编码器;
图5示出根据实施例的体素的示例;
图6示出根据实施例的八叉树和占用码的示例;
图7示出根据实施例的邻居节点图案的示例;
图8图示根据实施例的每个LOD中的点配置的示例;
图9图示根据实施例的每个LOD中的点配置的示例;
图10图示根据实施例的点云解码器;
图11图示根据实施例的点云解码器;
图12图示根据实施例的发送设备;
图13图示根据实施例的接收设备;
图14图示根据实施例的结合点云数据发送/接收方法/设备可操作的示例性结构;
图15图示根据实施例的对点云数据进行编码、传输和解码的过程;
图16示出根据实施例的基于层的点云数据配置以及几何和属性比特流的结构;
图17示出根据实施例的比特流配置;
图18图示根据实施例的比特流排序方法;
图19图示根据实施例的选择几何数据和属性数据的方法;
图20图示根据实施例的配置包括点云数据的切片的方法;
图21示出根据实施例的比特流配置;
图22示出根据实施例的序列参数集和几何参数集的语法;
图23示出根据实施例的属性参数集的语法;
图24示出根据实施例的几何数据单元报头的语法;
图25示出根据实施例的属性数据单元报头的语法;
图26示出根据实施例的基于单切片的几何树结构和基于分段切片的几何树结构;
图27示出根据实施例的几何编译树的层组结构和属性编译树的对齐层组结构;
图28示出根据实施例的几何树的层组和属性编译树的独立层组结构;
图29示出根据实施例的参数集的语法;
图30示出根据实施例的几何数据单元报头;
图31图示根据实施例的组合树编译模式和直接编译模式的示例;
图32示出根据实施例的推断直接编译模式(IDCM)的概览;
图33图示根据实施例的算术熵编译(AEC)比特流和直接编译(DC)比特流的示例;
图34示出根据实施例的几何树结构和切片片段的示例以及多个AEC切片和一个DC切片的示例;
图35示出根据实施例的几何树结构和切片片段的示例以及AEC切片和DC切片的示例;
图36示出根据实施例的几何树结构和切片片段的示例以及AEC切片和DC切片的示例;
图37示出根据实施例的序列参数集(SPS)(seq_parameter_set())和几何参数集;
图38示出根据实施例的几何数据单元报头(或称为几何切片报头)的语法结构;
图39图示根据实施例的几何编译层结构;
图40图示根据实施例的层组结构和子组结构;
图41图示根据实施例的基于层组的点云数据的输出;
图42图示根据实施例的基于层的点云表示的结果的比较;
图43图示根据实施例的部分解码的示例;
图44图示根据实施例的根据层组结构和子组结构的解码效果的示例;
图45示出根据实施例的几何数据单元报头;
图46示出根据实施例的几何数据单元页脚;
图47示出根据实施例的点云数据发送设备的结构;
图48示出根据实施例的点云数据接收设备;
图49是根据实施例的点云数据接收设备的流程图;
图50图示根据实施例的通过点云数据发送/接收设备对点云数据的主区域进行有效处理的示例;
图51示出根据实施例的层组结构和子组边界框;
图52示出根据实施例的几何参数集;
图53示出根据实施例的属性参数集;
图54示出根据实施例的几何数据单元报头和属性数据单元报头;
图55图示根据实施例的有效的兴趣区域处理过程;
图56图示根据实施例的有效的兴趣区域处理过程;
图57图示根据实施例的有效的兴趣区域处理过程;
图58图示根据实施例的有效的兴趣区域处理过程;
图59示出根据实施例的层组信息;
图60图示根据实施例的层组切片;
图61示出根据实施例的图块分区和层组切片之间的性能;
图62、63、64、65和66图示根据实施例的多分辨率和多尺寸ROI输出;
图67图示根据实施例的基于层组和子组的上下文、邻居搜索范围和缓冲区设置;
图68图示根据实施例的发送和接收点云数据的方法;
图69图示根据实施例的发送和接收点云数据的方法;
图70图示根据实施例的点云数据发送方法;以及
图71图示根据实施例的点云数据接收方法。
具体实施方式
现在将详细参考本公开的优选实施例,其示例在附图中被图示。下面将参考附图给出的详细描述旨在解释本公开的示例性实施例,而非示出可以根据本公开实现的仅有实施例。以下详细描述包括具体细节以便于提供本公开的彻底理解。然而,对于本领域的技术人员而言将显而易见的是,本公开可以在没有这些具体细节的情况下实践。
尽管本公开中使用的大多数术语已经选自本领域中广泛使用的通用术语,但是一些术语已经由申请人任意选择并且在以下描述中根据需要详细说明其含义。因此,本公开应该基于术语的预期含义而非其简单名称或含义来理解。
图1示出根据实施例的示例性点云内容提供系统。
图1中所图示的点云内容提供系统可以包括发送设备10000和接收设备10004。发送设备10000和接收设备10004能够有线或无线通信以发送和接收点云数据。
根据实施例的点云数据发送设备10000可以取得(secure)和处理点云视频(或点云内容)并将其发送。根据实施例,发送设备10000可以包括固定站、基站收发器系统(BTS)、网络、人工智能(AI)设备和/或系统、机器人、AR/VR/XR设备和/或服务器。根据实施例,发送设备10000可以包括被配置成使用无线电接入技术(例如,5G新RAT(NR)、长期演进(LTE))与基站和/或其它无线设备执行通信的设备、机器人、车辆、AR/VR/XR设备、便携式设备、家用电器、物联网(IoT)设备和AI设备/服务器。
根据实施例的发送设备10000包括点云视频获取器10001、点云视频编码器10002和/或发射器(或通信模块)10003。
根据实施例的点云视频获取器10001通过诸如捕获、合成或生成的处理过程来获取点云视频。点云视频是由点云表示的点云内容,其是被定位在3D空间中的点的集合,并且可以被称为点云视频数据。根据实施例的点云视频可以包括一个或更多个帧。一个帧表示静止图像/图片。因此,点云视频可以包括点云图像/帧/图片,并且可以被称为点云图像、帧或图片。
根据实施例的点云视频编码器10002对所获取的点云视频数据进行编码。点云视频编码器10002可以基于点云压缩编译对点云视频数据进行编码。根据实施例的点云压缩编译可以包括基于几何的点云压缩(G-PCC)编译和/或基于视频的点云压缩(V-PCC)编译或下一代编译。根据实施例的点云压缩编译不限于上述实施例。点云视频编码器10002可以输出包含编码的点云视频数据的比特流。比特流可以不仅包含编码的点云视频数据,而且包含与点云视频数据的编码有关的信令信息。
根据实施例的发射器10003发送包含编码的点云视频数据的比特流。根据实施例的比特流被封装在文件或片段(例如,流片段(streaming segment))中,并且通过诸如广播网络和/或宽带网络的各种网络发送。尽管图中未示出,发送设备10000可以包括被配置成执行封装操作的封装器(或封装模块)。根据实施例,封装器可以包括在发射器10003中。根据实施例,文件或片段可以通过网络发送到接收设备10004,或者存储在数字存储介质(例如,USB、SD、CD、DVD、蓝光、HDD、SSD等)中。根据实施例的发射器10003能够通过4G、5G、6G等网络与接收设备10004(或接收器10005)有线/无线通信。另外,发射器可以根据网络系统(例如,4G、5G或6G通信网络系统)执行必要的数据处理操作。发送设备10000可以按照按需方式发送封装的数据。
根据实施例的接收设备10004包括接收器10005、点云视频解码器10006和/或渲染器10007。根据实施例,接收设备10004可以包括被配置成使用无线电接入技术(例如,5G新RAT(NR)、长期演进(LTE))与基站和/或其它无线设备执行通信的设备、机器人、车辆、AR/VR/XR设备、便携式设备、家用电器、物联网(IoT)设备和AI设备/服务器。
根据实施例的接收器10005从网络或存储介质接收包含点云视频数据的比特流或者其中封装比特流的文件/片段。接收器10005可以根据网络系统(例如,4G、5G、6G等的通信网络系统)执行必要的数据处理。根据实施例的接收器10005可以将所接收的文件/片段解封装并输出比特流。根据实施例,接收器10005可以包括被配置成执行解封装操作的解封装器(或解封装模块)。解封装器可以被实现为与接收器10005分离的元件(或组件)。
点云视频解码器10006将包含点云视频数据的比特流解码。点云视频解码器10006可以根据点云视频数据被编码的方法(例如,以点云视频编码器10002的操作的逆过程)来将点云视频数据解码。因此,点云视频解码器10006可以通过执行点云解压缩编译来将点云视频数据解码,该点云解压缩编译是点云压缩的逆过程。点云解压缩编译包括G-PCC编译。
渲染器10007渲染解码的点云视频数据。渲染器10007可以通过不仅渲染点云视频数据,而且渲染音频数据来输出点云内容。根据实施例,渲染器10007可以包括被配置成显示点云内容的显示器。根据实施例,显示器可以被实现为单独的设备或组件而非包括在渲染器10007中。
图中由虚线指示的箭头表示接收设备10004所获取的反馈信息的传输路径。反馈信息是反映与消费点云内容的用户的交互性的信息,并且包括关于用户的信息(例如,头定向信息、视口信息等)。具体地,当点云内容是用于需要与用户交互的服务(例如,自驾驶服务等)的内容时,反馈信息可以被提供给内容发送方(例如,发送设备10000)和/或服务提供商。根据实施例,反馈信息可以在接收设备10004以及发送设备10000中使用,或者可以不提供。
根据实施例的头定向信息是关于用户的头位置、定向、角度、运动等的信息。根据实施例的接收设备10004可以基于头定向信息来计算视口信息。视口信息可以是关于用户正在观看的点云视频的区域的信息。视点是用户通过其观看点云视频的点,并且可以指代视口区域的中心点。即,视口是以视点为中心的区域,并且区域的尺寸和形状可以由视场(FOV)确定。因此,除了头定向信息之外,接收设备10004还能够以基于设备所支持的垂直或水平FOV来提取视口信息。另外,接收设备10004执行凝视分析等以检查用户消费点云的方式、点云视频中用户凝视的区域、凝视时间等。根据实施例,接收设备10004可以将包括凝视分析结果的反馈信息发送到发送设备10000。根据实施例的反馈信息可以在渲染和/或显示过程中获取。根据实施例的反馈信息可以由包括在接收设备10004中的一个或更多个传感器取得。根据实施例,反馈信息可以由渲染器10007或单独的外部元件(或设备、组件等)取得。图1中的虚线表示发送渲染器10007所取得的反馈信息的过程。点云内容提供系统可以基于反馈信息来处理(编码/解码)点云数据。因此,点云视频数据解码器10006可以基于反馈信息来执行解码操作。接收设备10004可以将反馈信息发送到发送设备10000。发送设备10000(或点云视频数据编码器10002)可以基于反馈信息来执行编码操作。因此,点云内容提供系统可以基于反馈信息有效地处理必要数据(例如,与用户的头位置对应的点云数据)而非处理(编码/解码)整个点云数据,并将点云内容提供给用户。
根据实施例,发送设备10000可以被称为编码器、发送设备、发射器等,并且接收设备10004可以被称为解码器、接收设备、接收器等。
根据实施例的图1的点云内容提供系统中(通过获取/编码/传输/解码/渲染的一系列过程)处理的点云数据可以被称为点云内容数据或点云视频数据。根据实施例,点云内容数据可以用作涵盖与点云数据有关的元数据或信令信息的概念。
图1所图示的点云内容提供系统的元件可以由硬件、软件、处理器和/或其组合实现。
图2是图示根据实施例的点云内容提供操作的框图。
图2的框图示出图1中描述的点云内容提供系统的操作。如上所述,点云内容提供系统可以基于点云压缩编译(例如,G-PCC)来处理点云数据。
根据实施例的点云内容提供系统(例如,点云发送设备10000或点云视频获取器10001)可以获取点云视频(20000)。点云视频由属于用于表达3D空间的坐标系的点云表示。根据实施例的点云视频可以包括Ply(Polygon文件格式或斯坦福三角形(StanfordTriangle)格式)文件。当点云视频具有一个或更多个帧时,所获取的点云视频可以包括一个或更多个Ply文件。Ply文件包含诸如点几何和/或属性的点云数据。几何包括点的位置。每个点的位置可以由表示三维坐标系(例如,由X、Y和Z轴组成的坐标系)的参数(例如,X、Y和Z轴的值)表示。属性包括点的属性(例如,关于每个点的纹理、颜色(YCbCr或RGB)、反射率r、透明度等的信息)。点具有一个或更多个属性。例如,点可以具有作为颜色的属性或者颜色和反射率两个属性。根据实施例,几何可以被称为位置、几何信息、几何数据等,并且属性可以被称为属性、属性信息、属性数据等。点云内容提供系统(例如,点云发送设备10000或点云视频获取器10001)可以从与点云视频获取过程有关的信息(例如,深度信息、颜色信息等)取得点云数据。
根据实施例的点云内容提供系统(例如,发送设备10000或点云视频编码器10002)可以对点云数据进行编码(20001)。点云内容提供系统可以基于点云压缩编译对点云数据进行编码。如上所述,点云数据可以包括点的几何和属性。因此,点云内容提供系统可以执行对几何进行编码的几何编码并输出几何比特流。点云内容提供系统可以执行对属性进行编码的属性编码并输出属性比特流。根据实施例,点云内容提供系统可以基于几何编码来执行属性编码。根据实施例的几何比特流和属性比特流可以被复用并作为一个比特流输出。根据实施例的比特流还可以包含与几何编码和属性编码有关的信令信息。
根据实施例的点云内容提供系统(例如,发送设备10000或发射器10003)可以发送编码的点云数据(20002)。如图1中所图示,编码的点云数据可以由几何比特流和属性比特流表示。另外,编码的点云数据可以与点云数据的编码相关的信令信息(例如,与几何编码和属性编码有关的信令信息)一起以比特流的形式发送。点云内容提供系统可以将承载编码的点云数据的比特流封装并以文件或片段的形式将其发送。
根据实施例的点云内容提供系统(例如,接收设备10004或接收器10005)可以接收包含编码的点云数据的比特流。另外,点云内容提供系统(例如,接收设备10004或接收器10005)可以将比特流解复用。
点云内容提供系统(例如,接收设备10004或点云视频解码器10005)可以将比特流中发送的编码的点云数据(例如,几何比特流、属性比特流)解码。点云内容提供系统(例如,接收设备10004或点云视频解码器10005)可以基于比特流中包含的与点云视频数据的编码有关的信令信息将点云视频数据解码。点云内容提供系统(例如,接收设备10004或点云视频解码器10005)可以将几何比特流解码以重构点的位置(几何)。点云内容提供系统可以通过基于重构的几何对属性比特流进行解码来重构点的属性。点云内容提供系统(例如,接收设备10004或点云视频解码器10005)可以根据重构的几何和解码的属性基于位置来重构点云视频。
根据实施例的点云内容提供系统(例如,接收设备10004或渲染器10007)可以渲染解码的点云数据(20004)。点云内容提供系统(例如,接收设备10004或渲染器10007)可以使用各种渲染方法来渲染通过解码过程解码的几何和属性。点云内容中的点可以被渲染为具有某个厚度的顶点、以对应顶点位置为中心的具有特定最小尺寸的立方体,或者以对应顶点位置为中心的圆。渲染的点云内容的全部或部分通过显示器(例如,VR/AR显示器、一般显示器等)提供给用户。
根据实施例的点云内容提供系统(例如,接收设备10004)可以取得反馈信息(20005)。点云内容提供系统可以基于反馈信息对点云数据进行编码和/或解码。根据实施例的点云内容提供系统的反馈信息和操作与参考图1描述的反馈信息和操作相同,并且因此省略其详细描述。
图3图示根据实施例的捕获点云视频的示例性过程。
图3图示参考图1至图2描述的点云内容提供系统的示例性点云视频捕获过程。
点云内容包括表示位于各种3D空间(例如,表示真实环境的3D空间、表示虚拟环境的3D空间等)中的对象和/或环境的点云视频(图像和/或视频)。因此,根据实施例的点云内容提供系统可以使用一个或更多个相机(例如,能够取得深度信息的红外相机、能够提取与深度信息对应的颜色信息的RGB相机等)、投影仪(例如,取得深度信息的红外图案投影仪)、LiDAR等来捕获点云视频。根据实施例的点云内容提供系统可以从深度信息提取由3D空间中的点组成的几何形状并且从颜色信息提取每个点的属性以取得点云数据。根据实施例的图像和/或视频可以基于面向内(inward-facing)技术和面向外(outward-facing)技术中的至少一个来捕获。
图3的左侧部分图示面向内技术。面向内技术指代通过定位在中心对象周围的一个或更多个相机(或相机传感器)来捕获中心对象的图像的技术。面向内技术可以被用于生成向用户提供关键对象的360度图像的点云内容(例如,向用户提供对象(例如,诸如角色、玩家、对象或演员的关键对象)的360度图像的VR/AR内容)。
图3的右侧部分图示面向外技术。面向外技术指代通过被定位在中心对象周围的一个或更多个相机(或相机传感器)来捕获中心对象的环境而非中心对象的图像的技术。面向外技术可以被用于生成提供从用户的视角出现的周围环境的点云内容(例如,可以提供给自驾驶车辆的用户的表示外部环境的内容)。
如图所示,可以基于一个或更多个相机的捕获操作来生成点云内容。在这种情况下,相机之间的坐标系可以不同,并且因此点云内容提供系统可以在捕获操作之前校准一个或更多个相机以设置全局坐标系。另外,点云内容提供系统可以通过将任意图像和/或视频与通过上述捕获技术捕获的图像和/或视频合成来生成点云内容。点云内容提供系统在生成表示虚拟空间的点云内容时可以不执行图3中描述的捕获操作。根据实施例的点云内容提供系统可以对捕获的图像和/或视频执行后处理。换言之,点云内容提供系统可以移除不想要的区域(例如,背景),识别捕获的图像和/或视频连接至的空间,并且当存在空间空洞时,执行填充空间空洞的操作。
点云内容提供系统可以通过对从每个相机取得的点云视频的点执行坐标变换来生成一条点云内容。点云内容提供系统可以基于每个相机的位置坐标对点执行坐标变换。因此,点云内容提供系统可以生成表示一个宽范围的内容,或者可以生成具有高密度点的点云内容。
图4图示根据实施例的示例性点云编码器。
图4示出图1的点云视频编码器10002的示例。点云编码器重构并编码点云数据(例如,点的位置和/或属性)以根据网络条件或应用来调节点云内容的质量(例如,无损、有损或接近无损)。当点云内容的总大小较大(例如,对于30fps给出60Gbps的点云内容)时,点云内容提供系统可能无法实时流传输内容。因此,点云内容提供系统可以基于最大目标比特率来重构点云内容以根据网络环境等提供点云内容。
如参考图1和图2描述的,点云编码器可以执行几何编码和属性编码。几何编码在属性编码之前执行。
根据实施例的点云编码器包括坐标变换器(变换坐标)40000、量化器(量化和移除点(体素化))40001、八叉树分析器(分析八叉树)40002和表面近似分析器(分析表面近似)40003、算术编码器(算术编码)40004、几何重构器(重构几何)40005、颜色变换器(变换颜色)40006、属性变换器(变换属性)40007、RAHT变换器(RAHT)40008、LOD生成器(生成LOD)40009、提升变换器(提升)40010、系数量化器(量化系数)40011和/或算术编码器(算术编码)40012。
坐标变换器40000、量化器40001、八叉树分析器40002、表面近似分析器40003、算术编码器40004和几何重构器40005可以执行几何编码。根据实施例的几何编码可以包括八叉树几何编码、直接编译、三联体(trisoup)几何编码和熵编码。直接编译和三联体几何编码选择性地或组合应用。几何编码不限于上述示例。
如图所示,根据实施例的坐标变换器40000接收位置并将其变换为坐标。例如,位置可以被变换为三维空间(例如,由XYZ坐标系表示的三维空间)中的位置信息。根据实施例的三维空间中的位置信息可以被称为几何信息。
根据实施例的量化器40001将几何量化。例如,量化器40001可以基于所有点的最小位置值(例如,X、Y和Z轴中的每个上的最小值)来将点量化。量化器40001执行量化操作:将最小位置值与每个点的位置值之间的差乘以预设量化缩放(scale)值,并且然后通过对通过乘法获得的值进行舍入来寻找最近整数值。因此,一个或更多个点可以具有相同的量化位置(或位置值)。根据实施例的量化器40001基于量化位置执行体素化以重构量化点。如作为包含2D图像/视频信息的最小单元的像素的情况中那样,根据实施例的点云内容(或3D点云视频)的点可以包括在一个或更多个体素中。作为体积和像素的复合体的术语体素指代当基于表示3D空间的轴(例如,X轴、Y轴和Z轴)将3D空间划分成单元(单位=1.0)时生成的3D立方空间。量化器40001可以使3D空间中的点组与体素匹配。根据实施例,一个体素可以仅包括一个点。根据实施例,一个体素可以包括一个或更多个点。为了将一个体素表达为一个点,体素的中心的位置可以基于包括在体素中的一个或更多个点的位置来设置。在这种情况下,包括在一个体素中的所有位置的属性可以被组合并指配给体素。
根据实施例的八叉树分析器40002执行八叉树几何编译(或八叉树编译)以按八叉树结构呈现体素。八叉树结构表示基于八进制树结构与体素匹配的点。
根据实施例的表面近似分析器40003可以分析并近似八叉树。根据实施例的八叉树分析和近似是分析包含多个点的区域以有效地提供八叉树和体素化的过程。
根据实施例的算术编码器40004对八叉树和/或近似八叉树执行熵编码。例如,编码方案包括算术编码。作为编码结果,生成几何比特流。
颜色变换器40006、属性变换器40007、RAHT变换器40008、LOD生成器40009、提升变换器40010、系数量化器40011和/或算术编码器40012执行属性编码。如上所述,一个点可以具有一个或更多个属性。根据实施例的属性编码同样应用于一个点所具有的属性。然而,当属性(例如,颜色)包括一个或更多个元素时,对每个元素独立地应用属性编码。根据实施例的属性编码包括颜色变换编译、属性变换编译、区域自适应分层变换(RAHT)编译、基于插值的分层最近邻居预测(预测变换)编译以及具有更新/提升步骤(提升变换)的基于插值的分层最近邻居预测编译。取决于点云内容,可以选择性地使用上述RAHT编译、预测变换编译和提升变换编译,或者可以使用一个或更多个编译方案的组合。根据实施例的属性编码不限于上述示例。
根据实施例的颜色变换器40006执行变换包括在属性中的颜色值(或纹理)的颜色变换编译。例如,颜色变换器40006可以变换颜色信息的格式(例如,从RGB到YCbCr)。可以根据包括在属性中的颜色值来可选地应用根据实施例的颜色变换器40006的操作。
根据实施例的几何重构器40005重构(解压缩)八叉树和/或近似八叉树。几何重构器40005基于分析点的分布的结果来重构八叉树/体素。重构的八叉树/体素可以被称为重构的几何(恢复的几何)。
根据实施例的属性变换器40007执行属性变换以基于重构的几何和/或不执行几何编码的位置来变换属性。如上所述,因为属性取决于几何,所以属性变换器40007可以基于重构的几何信息来变换属性。例如,基于包括在体素中的点的位置值,属性变换器40007可以变换该位置处的点的属性。如上所述,当基于包括在体素中的一个或更多个点的位置来设置体素的中心位置时,属性变换器40007变换一个或更多个点的属性。当执行三联体几何编码时,属性变换器40007可以基于三联体几何编码来变换属性。
属性变换器40007可以通过计算距每个体素的中心的位置(或位置值)特定位置/半径内的邻近点的属性或属性值(例如,每个点的颜色或反射率)的平均来执行属性变换。属性变换器40007可以在计算平均时根据从中心到每个点的距离来应用权重。因此,每个体素具有位置和计算的属性(或属性值)。
属性变换器40007可以基于K-D树或莫顿码(Morton code)搜索存在于距每个体素的中心位置特定位置/半径内的邻近点。K-D树是二叉搜索树,并且支持能够基于位置来管理点的数据结构,使得能够快速地执行最近邻搜索(NNS)。通过将表示所有点的3D位置的坐标(例如,(x,y,z))呈现为比特值并将比特混合来生成莫顿码。例如,当表示点位置的坐标为(5,9,1)时,坐标的比特值为(0101,1001,0001)。根据比特索引按z、y和x的顺序混合比特值产生010001000111。此值被表达为十进制数1095。即,具有坐标(5,9,1)的点的莫顿码值为1095。属性变换器40007可以基于莫顿码值对点进行排序并通过深度优先遍历过程执行NNS。在属性变换操作之后,当在用于属性编译的另一变换过程中需要NNS时,使用K-D树或莫顿码。
如图中所示,变换的属性被输入到RAHT变换器40008和/或LOD生成器40009。
根据实施例的RAHT变换器40008基于重构的几何信息来执行用于预测属性信息的RAHT编译。例如,RAHT变换器40008可以基于与八叉树中更低级别的节点相关联的属性信息来预测八叉树中更高级别的节点的属性信息。
根据实施例的LOD生成器40009生成细节级别(LOD)来执行预测变换编译。根据实施例的LOD是点云内容的细节程度。随着LOD值减小,指示点云内容的细节劣化。随着LOD值增大,指示点云内容的细节增强。点可以按LOD分类。
根据实施例的提升变换器40010执行基于权重来变换点云属性的提升变换编译。如上所述,可以可选地应用提升变换编译。
根据实施例的系数量化器40011基于系数来量化属性编译的属性。
根据实施例的算术编码器40012基于算术编译对量化的属性进行编码。
尽管图中未示出,但图4的点云编码器的元件可以由包括被配置成与包括在点云提供设备中的一个或更多个存储器通信的一个或更多个处理器或集成电路的硬件、软件、固件或其组合实现。一个或更多个处理器可以执行上述图4的点云编码器的元件的操作和/或功能中的至少一个。另外,一个或更多个处理器可以操作或执行用于执行图4的点云编码器的元件的操作和/或功能的软件程序和/或指令的集合。根据实施例的一个或更多个存储器可以包括高速随机存取存储器,或者包括非易失性存储器(例如,一个或更多个磁盘存储设备、闪存设备或其它非易失性固态存储器设备)。
图5示出根据实施例的体素的示例。
图5示出被定位在通过由作为X轴、Y轴和Z轴的三个轴所组成的坐标系表示的3D空间中的体素。如参考图4所述,点云编码器(例如,量化器40001)可以执行体素化。体素指代当基于表示3D空间的轴(例如,X轴、Y轴和Z轴)将3D空间划分成单元(单位=1.0)时生成的3D立方空间。图5示出通过八叉树结构生成的体素的示例,其中由两个极点(0,0,0)和(2d,2d,2d)限定的立方轴对齐边界框被递归地细分。一个体素包括至少一个点。可以从与体素组的位置关系来估计体素的空间坐标。如上所述,体素具有如2D图像/视频的像素的属性(诸如颜色或反射率)。体素的细节与参考图4描述的那些相同,并且因此省略其描述。
图6示出根据实施例的八叉树和占用码的示例。
如参考图1至图4所描述的,点云内容提供系统(点云视频编码器10002)或点云编码器(例如,八叉树分析器40002)基于八叉树结构来执行八叉树几何编译(或八叉树编译)以有效地管理体素的区域和/或位置。
图6的上部示出八叉树结构。根据实施例的点云内容的3D空间由坐标系的轴(例如,X轴、Y轴和Z轴)表示。通过由两个极点(0,0,0)和(2d,2d,2d)限定的立方轴对齐边界框的递归细分来创建八叉树结构。这里,2d可以被设置为构成围绕点云内容(或点云视频)的所有点的最小边界框的值。这里,d表示八叉树的深度。d的值在下面的等式中确定。在下面的等式中,(xint n,yint n,zint n)表示量化的点的位置(或位置值)。
d=Ceil(Log2(Max(x_n^int,y_n^int,z_n^int,n=1,...,N)+1))
如图6的上部的中间所示,整个3D空间可以根据分区被划分成八个空间。每个划分的空间由具有六个面的立方体表示。如图6的右上部所示,八个空间中的每个基于坐标系的轴(例如,X轴、Y轴和Z轴)再次划分。因此,每个空间被划分成八个更小的空间。所划分的更小的空间也由具有六个面的立方体表示。应用该分区方案,直至八叉树的叶节点变为体素。
图6的下部示出八叉树占用码。生成八叉树的占用码以指示通过划分一个空间而生成的八个划分的空间中的每个是否包含至少一个点。因此,单个占用码由八个子节点表示。每个子节点表示划分的空间的占用,并且子节点具有1比特的值。因此,占用码被表示为8比特码。即,当与子节点对应的空间中包含至少一个点时,节点被指配值1。当与子节点对应的空间中不包含点(空间为空)时,节点被指配值0。因为图6所示的占用码为00100001,所以指示与八个子节点当中的第三子节点和第八子节点对应的空间均包含至少一个点。如图所示,第三子节点和第八子节点中的每个具有八个子节点,并且子节点由8比特占用码表示。附图示出第三子节点的占用码为10000111,并且第八子节点的占用码为01001111。根据实施例的点云编码器(例如,算术编码器40004)可以对占用码执行熵编码。为了增加压缩效率,点云编码器可以对占用码执行帧内/帧间编译。根据实施例的接收设备(例如,接收设备10004或点云视频解码器10006)基于占用码来重构八叉树。
根据实施例的点云编码器(例如,图4的点云编码器或八叉树分析器40002)可以执行体素化和八叉树编译以存储点位置。然而,点并不总是均匀分布在3D空间中,并且因此可能存在其中存在较少点的特定区域。因此,对整个3D空间执行体素化是低效的。例如,当特定区域包含很少点时,在该特定区域中不需要执行体素化。
因此,对于上述特定区域(或八叉树的叶节点以外的节点),根据实施例的点云编码器可以跳过体素化并执行直接编译,以直接对包括在特定区域中的点位置进行编译。根据实施例的直接编译点的坐标被称为直接编译模式(DCM)。根据实施例的点云编码器还可以基于表面模型执行三联体几何编码,其要基于体素来重构特定区域(或节点)中的点位置。三联体几何编码是将对象表示为一系列三角形网格的几何编码。因此,点云解码器可以从网格表面生成点云。根据实施例的直接编译和三联体几何编码可以被选择性地执行。另外,根据实施例的直接编译和三联体几何编码可以与八叉树几何编译(或八叉树编译)组合执行。
为了执行直接编译,应该激活要使用直接模式以应用直接编译的选项。要应用直接编译的节点不是叶节点,并且在特定节点内应该存在小于阈值的点。另外,要应用直接编译的点的总数不应超过预设阈值。当满足上述条件时,根据实施例的点云编码器(或算术编码器40004)可以对点位置(或位置值)执行熵编译。
根据实施例的点云编码器(例如,表面近似分析器40003)可以确定八叉树的特定级别(小于八叉树的深度d的级别),并且可以从该级别开始使用表面模型以执行三联体几何编码,以基于体素来重构节点区域中的点位置(三联体模式)。根据实施例的点云编码器可以指定要应用三联体几何编码的级别。例如,当特定级别等于八叉树的深度时,点云编码器不在三联体模式下操作。换言之,仅当指定的级别小于八叉树的深度值时,根据实施例的点云编码器才可以在三联体模式下操作。根据实施例的指定级别的节点的3D立方区域被称为块。一个块可以包括一个或更多个体素。块或体素可以对应于拼块(brick)。几何被表示为每个块内的表面。根据实施例的表面可与块的每个边缘相交至多一次。
一个块具有12个边缘,并且因此一个块中存在至少12个交点。每个交点被称为顶点(或者最高点)。当共享边缘的所有块当中存在与边缘相邻的至少一个占用体素时,检测沿着边缘存在的顶点。根据实施例的占用体素指代包含点的体素。沿着边缘检测到的顶点位置是沿着共享边缘的所有块当中与边缘相邻的所有体素的边缘的平均位置。
一旦检测到顶点,根据实施例的点云编码器就可以对边缘的起点(x,y,z)、边缘的方向矢量(Δx,Δy,Δz)和顶点位置值(边缘内的相对位置值)执行熵编码。当应用三联体几何编码时,根据实施例的点云编码器(例如,几何重构器40005)可以通过执行三角形重构、上采样和体素化过程来生成恢复的几何(重构的几何)。
被定位在块的边缘处的顶点确定穿过块的表面。根据实施例的表面是非平面多边形。在三角形重构过程中,基于边缘的起点、边缘的方向矢量和顶点的位置值来重构由三角形表示的表面。三角形重构过程通过下述执行:i)计算每个顶点的质心值,ii)从每个顶点值减去中心值,并且iii)估计通过减法获得的值的平方和。
估计和的最小值,并且根据具有最小值的轴执行投影过程。例如,当元素x是最小时,每个顶点相对于块的中心投影在x轴上,并且投影在(y,z)平面上。当通过(y,z)平面上的投影获得的值为(ai,bi)时,通过atan2(bi,ai)估计θ的值,并且基于θ的值对顶点进行排序。下表示出根据顶点数量创建三角形的顶点组合。顶点从1至n排序。下表示出对于四个顶点,可以根据顶点组合构造两个三角形。第一个三角形可以由排序的顶点当中的顶点1、2和3组成,并且第二个三角形可以由排序的顶点当中的顶点3、4和1组成。
表2-1.从排序为1,…,n的顶点形成的三角形
n三角形
3(1,2,3)
4(1,2,3),(3,4,1)
5(1,2,3),(3,4,5),(5,1,3)
6(1,2,3),(3,4,5),(5,6,1),(1,3,5)
7(1,2,3),(3,4,5),(5,6,7),(7,1,3),(3,5,7)
8(1,2,3),(3,4,5),(5,6,7),(7,8,1),(1,3,5),(5,7,1)
9(1,2,3),(3,4,5),(5,6,7),(7,8,9),(9,1,3),(3,5,7),(7,9,3)
10(1,2,3),(3,4,5),(5,6,7),(7,8,9),(9,10,1),(1,3,5),(5,7,9),(9,1,5)
11(1,2,3),(3,4,5),(5,6,7),(7,8,9),(9,10,11),(11,1,3),(3,5,7),(7,9,11),(11,3,7)
12(1,2,3),(3,4,5),(5,6,7),(7,8,9),(9,10,11),(11,12,1),(1,3,5),(5,7,9),(9,11,1),(1,5,9)
执行上采样过程以沿着三角形的边缘在中间添加点,并且执行体素化。所添加的点基于上采样因子和块的宽度来生成。添加的点被称为细化顶点。根据实施例的点云编码器可以将细化顶点体素化。另外,点云编码器可以基于体素化的位置(或位置值)来执行属性编码。
图7示出根据实施例的邻居节点图案的示例。
为了增加点云视频的压缩效率,根据实施例的点云编码器可以基于上下文自适应算术编译来执行熵编译。
如参考图1至图6所描述的,点云内容提供系统或点云编码器(例如,点云视频编码器10002、图4的点云编码器或算术编码器40004)可以立即对占用码执行熵编译。另外,点云内容提供系统或点云编码器可以基于当前节点的占用码和邻近节点的占用来执行熵编码(帧内编码),或者基于先前帧的占用码执行熵编码(帧间编码)。根据实施例的帧表示同时生成的点云视频的集合。根据实施例的帧内编码/帧间编码的压缩效率可以取决于所参考的邻近节点的数量。当比特增加时,运算变得复杂,但是编码可以偏向一侧,这可以增加压缩效率。例如,当给出3比特上下文时,需要使用23=8种方法来执行编译。为编译划分的部分影响实现复杂度。因此,有必要满足适当级别的压缩效率和复杂度。
图7图示基于邻居节点的占用来获得占用图案的过程。根据实施例的点云编码器确定八叉树的每个节点的邻居节点的占用并且获得邻居图案的值。邻居节点图案被用于推断节点的占用图案。图7的上部分示出与节点对应的立方体(被定位在中间的立方体)以及与该立方体共享至少一个面的六个立方体(邻居节点)。图中所示的节点是相同深度的节点。图中所示的数字分别表示与六个节点关联的权重(1、2、4、8、16和32)。根据邻近节点的位置依次指配权重。
图7的下部分示出邻居节点图案值。邻居节点图案值是乘以占用邻居节点(具有点的邻居节点)的权重的值之和。因此,邻居节点图案值为0至63。当邻居节点图案值为0时,指示节点的邻居节点当中不存在具有点的节点(无占用节点)。当邻居节点图案值为63时,指示所有邻居节点均是占用节点。如图所示,因为指配有权重1、2、4和8的邻居节点是占用节点,所以邻居节点图案值为15,即1、2、4和8之和。点云编码器可以根据邻居节点图案值执行编译(例如,当邻居节点图案值为63时,可以执行64种类型的编译)。根据实施例,点云编码器可以通过改变邻居节点图案值(例如,基于将64改变为10或6的表)来减少编译复杂度。
图8图示根据实施例的每个LOD中的点配置的示例。
如参考图1至图7描述的,在执行属性编码之前,编码的几何被重构(解压缩)。当应用直接编译时,几何重构操作可以包括改变直接编译的点的放置(例如,将直接编译的点放置在点云数据前面)。当应用三联体几何编码时,通过三角形重构、上采样和体素化来执行几何重构过程。因为属性取决于几何,所以基于重构的几何来执行属性编码。
点云编码器(例如,LOD生成器40009)可以按LOD对点进行分类(或重新组织)。图中示出与LOD对应的点云内容。图中最左侧图片表示原始点云内容。图中左起第二个图片表示最低LOD中的点分布,并且图中最右侧图片表示最高LOD中的点分布。即,最低LOD中的点是稀疏分布的,并且最高LOD中的点是密集分布的。即,随着LOD在图底部所指示的箭头所指出的方向上升高,点之间的空间(或距离)变窄。
图9图示根据实施例的用于每个LOD的点配置的示例。
如参考图1至图8所描述的,点云内容提供系统或点云编码器(例如,点云视频编码器10002、图4的点云编码器或LOD生成器40009)可以生成LOD。通过根据设置的LOD距离值(或欧几里得距离的集合)将点重新组织为细化级别的集合来生成LOD。LOD生成过程不仅由点云编码器执行,而且由点云解码器执行。
图9的上部示出分布在3D空间中的点云内容的点的示例(P0至P9)。在图9中,原始顺序表示在LOD生成之前点P0至P9的顺序。在图9中,基于LOD的顺序表示根据LOD生成的点的顺序。点按LOD重新组织。另外,高LOD包含属于更低LOD的点。如图9所示,LOD0包含P0、P5、P4和P2。LOD1包含LOD0的点、P1、P6和P3。LOD2包含LOD0的点、LOD1的点、P9、P8和P7。
如参考图4所描述的,根据实施例的点云编码器可以选择性地或组合地执行预测变换编译、提升变换编译和RAHT变换编译。
根据实施例的点云编码器可为点生成预测器以执行用于设置每个点的预测属性(或预测属性值)的预测变换编译。即,可以为N个点生成N个预测器。根据实施例的预测器可以基于每个点的LOD值、关于存在于每个LOD的设置距离内的邻近点的索引信息以及到邻近点的距离来计算权重(=1/距离)。
根据实施例的预测属性(或属性值)被设置为通过将每个点的预测器中设置的邻居点的属性(或属性值)(例如,颜色、反射率等)乘以基于到每个邻居点的距离计算的权重(或权重值)而获得的值的平均。根据实施例的点云编码器(例如,系数量化器40011)可以量化和逆量化通过从每个点的属性(属性值)减去预测属性(属性值)而获得的残差(可以称为残差属性、残差属性值或属性预测残差)。量化过程如下表所示配置。
表属性预测残差量化伪代码
int PCCQuantization(int value,int quantStep){
if(value>=0){
return floor(value/quantStep+1.0/3.0);
}else{
return-floor(-value/quantStep+1.0/3.0);
}
}
表属性预测残差逆量化伪代码
int PCCInverseQuantization(int value,int quantStep){
if(quantStep==0){
return value;
}else{
return value*quantStep;
}
}
当每个点的预测器具有邻居点时,根据实施例的点云编码器(例如,算术编码器40012)可以如上所述对量化和逆量化的残差值执行熵编译。当每个点的预测器没有邻居点时,根据实施例的点云编码器(例如,算术编码器40012)可以对对应点的属性执行熵编译,而不执行上述操作。
根据实施例的点云编码器(例如,提升变换器40010)可以生成每个点的预测器,设置计算的LOD并在预测器中注册邻居点,并且根据到邻居点的距离来设置权重,以执行提升变换编译。根据实施例的提升变换编译类似于上述预测变换编译,但不同之处在于,对属性值累积地应用权重。根据实施例对属性值累积地应用权重的过程配置如下。
1)创建用于存储每个点的权重值的阵列量化权重(QW)。QW的所有元素的初始值均为1.0。将预测器中注册的邻居节点的预测器索引的QW值乘以当前点的预测器的权重,并将通过乘法获得的值相加。
2)提升预测过程:从现有属性值减去通过将点的属性值乘以权重而获得的值,以计算预测属性值。
3)创建称为updateweight和update的临时阵列,并且将临时阵列初始化为零。
4)将通过将针对所有预测器计算的权重乘以存储在与预测器索引对应的QW中的权重而计算的权重累加到updateweight阵列,作为邻居节点的索引。将通过将邻居节点索引的属性值乘以所计算的权重而获得的值累加到update阵列。
5)提升更新过程:将所有预测器的update阵列的属性值除以预测器索引的updateweight阵列的权重值,并将现有属性值与通过除法获得的值相加。
6)针对所有预测器通过将通过提升更新过程更新的属性值乘以通过提升预测过程更新的权重(存储在QW中)来计算预测属性。根据实施例的点云编码器(例如,系数量化器40011)量化预测属性值。另外,点云编码器(例如,算术编码器40012)对量化属性值执行熵编码。
根据实施例的点云编码器(例如,RAHT变换器40008)可以执行RAHT变换编译,其中使用与八叉树中更低级别的节点相关联的属性来预测更高级别的节点的属性。RAHT变换编译是通过八叉树后向扫描进行属性帧内编译的示例。根据实施例的点云编码器从体素开始扫描整个区域并且在每一步重复将体素合并为更大的块的合并过程,直至到达根节点。仅对占用节点执行根据实施例的合并过程。不对空节点执行合并过程。对就在空节点上方的上节点执行合并过程。
下面的等式表示RAHT变换矩阵。在该等式中,表示级别l处的体素的平均属性值。/>可以基于/>和/>来计算。
用于和/>的权重为/>和/>
这里,是低通值并且在下一个更高级别的合并过程中使用。/>表示高通系数。每一步的高通系数被量化并经受熵编译(例如,由算术编码器400012编码)。权重被计算为/>通过/>和/>创建根节点如下。
图10图示根据实施例的点云解码器。
图10中图示的点云解码器是图1中描述的点云视频解码器10006的示例,并且可以执行与图1所图示的点云视频解码器10006的操作相同或相似的操作。如图所示,点云解码器可以接收包含在一个或更多个比特流中的几何比特流和属性比特流。点云解码器包括几何解码器和属性解码器。几何解码器对几何比特流执行几何解码并输出解码的几何。属性解码器基于解码的几何和属性比特流执行属性解码,并且输出解码的属性。解码的几何和解码的属性被用于重构点云内容(解码的点云)。
图11图示根据实施例的点云解码器。
图11所图示的点云解码器是图10所图示的点云解码器的示例,并且可以执行解码操作,其是对在图1至图9中图示的点云编码器的编码操作的逆过程。
如参考图1和图10所描述的,点云解码器可以执行几何解码和属性解码。几何解码在属性解码之前执行。
根据实施例的点云解码器包括算术解码器(算术解码)11000、八叉树合成器(合成八叉树)11001、表面近似合成器(合成表面近似)11002和几何重构器(重构几何)11003、坐标逆变换器(逆变换坐标)11004、算术解码器(算术解码)11005、逆量化器(逆量化)11006、RAHT变换器11007、LOD生成器(生成LOD)11008、逆提升器(逆提升)11009和/或颜色逆变换器(逆变换颜色)11010。
算术解码器11000、八叉树合成器11001、表面近似合成器11002、几何重构器11003和坐标逆变换器11004可以执行几何解码。根据实施例的几何解码可以包括直接编译和三联体几何解码。直接编译和三联体几何解码选择性地应用。几何解码不限于上述示例,并且作为对参考图1至图9描述的几何编码的逆过程执行。
根据实施例的算术解码器11000基于算术编译将所接收的几何比特流解码。算术解码器11000的操作对应于对算术编码器40004的逆过程。
根据实施例的八叉树合成器11001可以通过从解码的几何比特流获取占用码(或关于作为解码结果取得的几何的信息)来生成八叉树。占用码如参考图1至图9详细描述那样配置。
当应用三联体几何编码时,根据实施例的表面近似合成器11002可以基于解码的几何和/或生成的八叉树来合成表面。
根据实施例的几何重构器11003可以基于表面和/或解码的几何重新生成几何。如参考图1至图9所描述的,选择性地应用直接编译和三联体几何编码。因此,几何重构器11003直接导入关于对其应用直接编译的点的位置信息并将其相加。当应用三联体几何编码时,几何重构器11003可以通过执行几何重构器40005的重构操作,例如,三角形重构、上采样和体素化,来重构几何。细节与参考图6描述的那些相同,并且因此省略其描述。重构的几何可以包括不包含属性的点云图片或帧。
根据实施例的坐标逆变换器11004可以通过基于重构的几何变换坐标来获取点位置。
算术解码器11005、逆量化器11006、RAHT变换器11007、LOD生成器11008、逆提升器11009和/或颜色逆变换器11010可以执行参考图10描述的属性解码。根据实施例的属性解码包括区域自适应分层变换(RAHT)解码、基于插值的分层最近邻居预测(预测变换)解码以及具有更新/提升步骤的基于插值的分层最近邻居预测(提升变换)解码。上述三个解码方案可以可选择性地使用,或者可以使用一个或更多个解码方案的组合。根据实施例的属性解码不限于上述示例。
根据实施例的算术解码器11005通过算术编译对属性比特流进行解码。
根据实施例的逆量化器11006逆量化关于解码的属性比特流或作为解码结果取得的属性的信息,并且输出逆量化的属性(或属性值)。可以基于点云编码器的属性编码选择性地应用逆量化。
根据实施例,RAHT变换器11007、LOD生成器11008和/或逆提升器11009可以处理重构的几何和逆量化的属性。如上所述,RAHT变换器11007、LOD生成器11008和/或逆提升器11009可以选择性地执行与点云编码器的编码对应的解码操作。
根据实施例的颜色逆变换器11010执行逆变换编译以逆变换包括在解码的属性中的颜色值(或纹理)。可以基于点云编码器的颜色变换器40006的操作选择性地执行颜色逆变换器11010的操作。
尽管图中未示出,图11的点云解码器的元件可以由包括被配置成与包括在点云提供设备中的一个或更多个存储器通信的一个或更多个处理器或集成电路的硬件、软件、固件或其组合实现。一个或更多个处理器可以执行上述图11的点云解码器的元件的操作和/或功能中的至少一个或更多个。另外,一个或更多个处理器可以操作或执行用于执行图11的点云解码器的元件的操作和/或功能的软件程序和/或指令的集合。
图12图示根据实施例的发送设备。
图12所示的发送设备是图1的发送设备10000(或图4的点云编码器)的示例。图12所图示的发送设备可以执行与参考图1至图9描述的点云编码器的那些相同或相似的一个或更多个操作和方法。根据实施例的发送设备可以包括数据输入单元12000、量化处理器12001、体素化处理器12002、八叉树占用码生成器12003、表面模型处理器12004、帧内/帧间编译处理器12005、算术编译器12006、元数据处理器12007、颜色变换处理器12008、属性变换处理器12009、预测/提升/RAHT变换处理器12010、算术编译器12011和/或发送处理器12012。
根据实施例的数据输入单元12000接收或获取点云数据。数据输入单元12000可以执行与点云视频获取器10001的操作和/或获取方法(或参考图2描述的获取过程20000)相同或相似的操作和/或获取方法。
数据输入单元12000、量化处理器12001、体素化处理器12002、八叉树占用码生成器12003、表面模型处理器12004、帧内/帧间编译处理器12005和算术编译器12006执行几何编码。根据实施例的几何编码与参考图1至图9描述的几何编码相同或相似,并且因此省略其详细描述。
根据实施例的量化处理器12001量化几何(例如,点的位置值)。量化处理器12001的操作和/或量化与参考图4描述的量化器40001的操作和/或量化相同或相似。细节与参考图1至图9描述的那些相同。
根据实施例的体素化处理器12002将点的量化的位置值体素化。体素化处理器120002可以执行与参考图4描述的量化器40001的操作和/或体素化过程相同或相似的操作和/或过程。细节与参考图1至图9描述的那些相同。
根据实施例的八叉树占用码生成器12003基于八叉树结构对点的体素化的位置执行八叉树编译。八叉树占用码生成器12003可以生成占用码。八叉树占用码生成器12003可以执行与参考图4和图6描述的点云编码器(或八叉树分析器40002)的操作和/或方法相同或相似的操作和/或方法。细节与参考图1至图9描述的那些相同。
根据实施例的表面模型处理器12004可以基于表面模型执行三联体几何编码以基于体素重构特定区域(或节点)中的点位置。表面模型处理器12004可以执行与参考图4描述的点云编码器(例如,表面近似分析器40003)的操作和/或方法相同或相似的操作和/或方法。细节与参考图1至图9描述的那些相同。
根据实施例的帧内/帧间编译处理器12005可以对点云数据执行帧内/帧间编译。帧内/帧间编译处理器12005可以执行与参考图7描述的帧内/帧间编译相同或相似的编译。细节与参考图7描述的那些相同。根据实施例,帧内/帧间编译处理器12005可以被包括在算术编译器12006中。
根据实施例的算术编译器12006对点云数据的八叉树和/或近似八叉树执行熵编码。例如,编码方案包括算术编码。算术编译器12006执行与算术编码器40004的操作和/或方法相同或相似的操作和/或方法。
根据实施例的元数据处理器12007处理关于点云数据的元数据,例如,设定值,并将其提供给诸如几何编码和/或属性编码的必要处理过程。另外,根据实施例的元数据处理器12007可以生成和/或处理与几何编码和/或属性编码有关的信令信息。根据实施例的信令信息可以与几何编码和/或属性编码分开编码。根据实施例的信令信息可以被交织。
颜色变换处理器12008、属性变换处理器12009、预测/提升/RAHT变换处理器12010和算术编译器12011执行属性编码。根据实施例的属性编码与参考图1至图9描述的属性编码相同或相似,并且因此省略其详细描述。
根据实施例的颜色变换处理器12008执行颜色变换编译以变换包括在属性中的颜色值。颜色变换处理器12008可以基于重构的几何来执行颜色变换编译。重构的几何与参考图1至图9描述的相同。另外,其执行与参考图4描述的颜色变换器40006的操作和/或方法相同或相似的操作和/或方法。省略其详细描述。
根据实施例的属性变换处理器12009执行属性变换以基于重构的几何和/或对其不执行几何编码的位置来变换属性。属性变换处理器12009执行与参考图4描述的属性变换器40007的操作和/或方法相同或相似的操作和/或方法。省略其详细描述。根据实施例的预测/提升/RAHT变换处理器12010可以通过RAHT编译、预测变换编译和提升变换编译中的任一种或组合对变换的属性进行编译。预测/提升/RAHT变换处理器12010执行与参考图4描述的RAHT变换器40008、LOD生成器40009和提升变换器40010的操作相同或相似的至少一个操作。另外,预测变换编译、提升变换编译和RAHT变换编译与参考图1至图9描述的那些相同,并且因此省略其详细描述。
根据实施例的算术编译器12011可以基于算术编译对编译的属性进行编码。算术编译器12011执行与算术编码器400012的操作和/或方法相同或相似的操作和/或方法。
根据实施例的发送处理器12012可以发送包含编码的几何和/或编码的属性和元数据信息的每个比特流,或者发送配置有编码的几何和/或编码的属性和元数据信息的一个比特流。当根据实施例的编码的几何和/或编码的属性和元数据信息被配置成一个比特流时,比特流可以包括一个或更多个子比特流。根据实施例的比特流可以包含信令信息和切片数据,该信令信息包括用于序列级别信令的序列参数集(SPS)、用于几何信息编译信令的几何参数集(GPS)、用于属性信息编译信令的属性参数集(APS)和用于图块级别信令的图块参数集(TPS)。切片数据可以包括关于一个或更多个切片的信息。根据实施例的一个切片可以包括一个几何比特流Geom00以及一个或更多个属性比特流Attr00和Attr10。
切片指代表示编译的点云帧的整体或部分的一系列语法元素。
根据实施例的TPS可以包括关于一个或更多个图块中的每个图块的信息(例如,关于边界框的坐标信息和高度/大小信息)。几何比特流可以包含报头和有效载荷。根据实施例的几何比特流的报头可以包含GPS中所包括的参数集标识符(geom_parameter_set_id)、图块标识符(geom_tile_id)和切片标识符(geom_slice_id),以及关于包含在有效载荷中的数据的信息。如上所述,根据实施例的元数据处理器12007可以生成和/或处理信令信息并将其发送到发送处理器12012。根据实施例,执行几何编码的元件和执行属性编码的元件可以如虚线所指示彼此共享数据/信息。根据实施例的发送处理器12012可以执行与发射器10003的操作和/或发送方法相同或相似的操作和/或发送方法。细节与参考图1和图2描述的那些相同,并且因此省略其描述。
图13图示根据实施例的接收设备。
图13所图示的接收设备是图1的接收设备10004(或图10和图11的点云解码器)的示例。图13所图示的接收设备可以执行与参考图1至图11描述的点云解码器的那些相同或相似的一个或更多个操作和方法。
根据实施例的接收设备可以包括接收器13000、接收处理器13001、算术解码器13002、基于占用码的八叉树重构处理器13003、表面模型处理器(三角形重构、上采样、体素化)13004、逆量化处理器13005、元数据解析器13006、算术解码器13007、逆量化处理器13008、预测/提升/RAHT逆变换处理器13009、颜色逆变换处理器13010和/或渲染器13011。根据实施例的每个解码元件可以执行对根据实施例的用于编码的对应元件的操作的逆过程。
根据实施例的接收器13000接收点云数据。接收器13000可以执行与图1的接收器10005的操作和/或接收方法相同或相似的操作和/或接收方法。省略其详细描述。
根据实施例的接收处理器13001可以从所接收的数据获取几何比特流和/或属性比特流。接收处理器13001可以被包括在接收器13000中。
算术解码器13002、基于占用码的八叉树重构处理器13003、表面模型处理器13004和逆量化处理器13005可以执行几何解码。根据实施例的几何解码与参考图1至图10描述的几何解码相同或相似,并且因此省略其详细描述。
根据实施例的算术解码器13002可以基于算术编译对几何比特流进行解码。算术解码器13002执行与算术解码器11000的操作和/或编译相同或相似的操作和/或编译。
根据实施例的基于占用码的八叉树重构处理器13003可以通过从解码的几何比特流(或关于作为解码结果取得的几何的信息)获取占用码来重构八叉树。基于占用码的八叉树重构处理器13003执行与八叉树合成器11001的操作和/或八叉树生成方法相同或相似的操作和/或方法。当应用三联体几何编码时,根据实施例的表面模型处理器13004可以基于表面模型方法来执行三联体几何解码和相关几何重构(例如,三角形重构、上采样、体素化)。表面模型处理器13004执行与表面近似合成器11002和/或几何重构器11003的操作相同或相似的操作。
根据实施例的逆量化处理器13005可以逆量化解码的几何。
根据实施例的元数据解析器13006可以解析包含在所接收的点云数据中的元数据,例如,设定值。元数据解析器13006可以将元数据传递给几何解码和/或属性解码。元数据与参考图12描述的元数据相同,并且因此省略其详细描述。
算术解码器13007、逆量化处理器13008、预测/提升/RAHT逆变换处理器13009和颜色逆变换处理器13010执行属性解码。属性解码与参考图1至图10描述的属性解码相同或相似,并且因此省略其详细描述。
根据实施例的算术解码器13007可以通过算术编译对属性比特流进行解码。算术解码器13007可以基于重构的几何对属性比特流进行解码。算术解码器13007执行与算术解码器11005的操作和/或编译相同或相似的操作和/或编译。
根据实施例的逆量化处理器13008可以逆量化解码的属性比特流。逆量化处理器13008执行与逆量化器11006的操作和/或逆量化方法相同或相似的操作和/或方法。
根据实施例的预测/提升/RAHT逆变换处理器13009可以处理重构的几何和逆量化的属性。预测/提升/RAHT逆变换处理器13009执行与RAHT变换器11007、LOD生成器11008和/或逆提升器11009的操作和/或解码相同或相似的一个或更多个操作和/或解码。根据实施例的颜色逆变换处理器13010执行逆变换编译以逆变换包括在解码的属性中的颜色值(或纹理)。颜色逆变换处理器13010执行与颜色逆变换器11010的操作和/或逆变换编译相同或相似的操作和/或逆变换编译。根据实施例的渲染器13011可以渲染点云数据。
图14图示根据实施例的结合点云数据发送/接收方法/设备可操作的示例性结构。
图14的结构表示服务器1460、机器人1410、自驾驶车辆1420、XR设备1430、智能电话1440、家用电器1450和/或头戴式显示器(HMD)1470中的至少一个连接到云网络1400的配置。机器人1410、自驾驶车辆1420、XR设备1430、智能电话1440或家用电器1450被称为设备。此外,XR设备1430可以对应于根据实施例的点云数据(PCC)设备或者可操作上连接到PCC设备。
云网络1400可以表示构成云计算基础设施的一部分或存在于云计算基础设施中的网络。这里,云网络1400可以使用3G网络、4G或长期演进(LTE)网络或5G网络来配置。
服务器1460可以经由云网络1400连接到机器人1410、自驾驶车辆1420、XR设备1430、智能电话1440、家用电器1450和/或HMD 1470中的至少一个,并且可以辅助连接的设备1410至1470的至少一部分处理。
HMD 1470表示根据实施例的XR设备和/或PCC设备的实现类型之一。根据实施例的HMD型设备包括通信单元、控制单元、存储器、I/O单元、传感器单元和电源单元。
以下,将描述应用了上述技术的设备1410至1450的各种实施例。图14所图示的设备1410至1450可以可操作地连接/耦合到根据上述实施例的点云数据发送和接收设备。
<PCC+XR>
XR/PCC设备1430可以采用PCC技术和/或XR(AR+VR)技术,并且可以被实现为HMD、提供在车辆中的平视显示器(HUD)、电视、移动电话、智能电话、计算机、可穿戴设备、家用电器、数字标牌、车辆、固定机器人或移动机器人。
XR/PCC设备1430可以分析通过各种传感器或从外部设备获取的3D点云数据或图像数据并生成关于3D点的位置数据和属性数据。由此,XR/PCC设备1430可以获取关于周围空间或真实对象的信息,并且渲染和输出XR对象。例如,XR/PCC设备1430可以使包括关于所识别的对象的辅助信息的XR对象与所识别的对象匹配并输出匹配的XR对象。
<PCC+XR+移动电话>
XR/PCC设备1430可以通过应用PCC技术实现为移动电话1440。
移动电话1440可以基于PCC技术解码和显示点云内容。
<PCC+自驾驶+XR>
自驾驶车辆1420可以通过应用PCC技术和XR技术被实现为移动机器人、车辆、无人驾驶飞行器等。
对其应用XR/PCC技术的自驾驶车辆1420可以表示提供有用于提供XR图像的装置的自驾驶车辆,或者作为XR图像中的控制/交互目标的自驾驶车辆。具体地,作为XR图像中的控制/交互目标,自驾驶车辆1420可与XR设备1430相区分并且可以与其可操作地连接。
具有用于提供XR/PCC图像的装置的自驾驶车辆1420可以从包括相机的传感器获取传感器信息,并且基于所获取的传感器信息来输出所生成的XR/PCC图像。例如,自驾驶车辆1420可以具有HUD并向其输出XR/PCC图像,从而向乘客提供与真实对象或呈现在屏幕上的对象对应的XR/PCC对象。
当XR/PCC对象被输出到HUD时,可以输出XR/PCC对象的至少一部分以与乘客的眼睛所指向的真实对象重叠。另一方面,当XR/PCC对象输出在提供在自驾驶车辆内的显示器上时,可以输出XR/PCC对象的至少一部分以与屏幕上的对象重叠。例如,自驾驶车辆1220可以输出与诸如道路、另一车辆、交通灯、交通标志、两轮车、行人和建筑物的对象对应的XR/PCC对象。
根据实施例的虚拟现实(VR)技术、增强现实(AR)技术、混合现实(MR)技术和/或点云压缩(PCC)技术适用于各种设备。
换言之,VR技术是仅提供真实世界对象、背景等的CG图像的显示技术。另一方面,AR技术指代在真实对象的图像上示出虚拟创建的CG图像的技术。MR技术与上述AR技术的相似之处在于,要示出的虚拟对象与真实世界混合和组合。然而,MR技术与AR技术的不同之处在于,AR技术在真实对象和作为CG图像创建的虚拟对象之间明确区分并且使用虚拟对象作为真实对象的补充对象,而MR技术将虚拟对象视为具有与真实对象等同的特性的对象。更具体地,MR技术应用的示例是全息服务。
最近,VR、AR和MR技术有时被称为扩展现实(XR)技术,而非彼此明确区分。因此,本公开的实施例适用于VR、AR、MR和XR技术中的任何一种。基于PCC、V-PCC和G-PCC技术的编码/解码适用于这种技术。
根据实施例的PCC方法/设备可以被应用于提供自驾驶服务的车辆。
提供自驾驶服务的车辆连接到PCC设备以进行有线/无线通信。
当根据实施例的点云数据(PCC)发送/接收设备连接到车辆以进行有线/无线通信时,设备可以接收/处理与可与自驾驶服务一起提供的AR/VR/PCC服务有关的内容数据,并将其发送到车辆。在PCC发送/接收设备安装在车辆上的情况下,PCC发送/接收设备可以根据通过用户接口设备输入的用户输入信号接收/处理与AR/VR/PCC服务有关的内容数据并将其提供给用户。根据实施例的车辆或用户接口设备可以接收用户输入信号。根据实施例的用户输入信号可以包括指示自驾驶服务的信号。
根据实施例的点云数据发送方法/设备被解释为指代图1的发送设备10000、点云视频编码器10002、以及发射器10003、图2的获取20000/编码20001/发送20002、图4的编码器、图12的发送设备、图14的设备、图15、图47、图68以及图69的编码器、图70的发送方法等等的术语。
根据实施例的点云数据接收方法/设备被解释为指代图1的接收设备10004、接收器10005以及点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和11的解码器、图13的接收设备、图15、图48、图55至图58、图60、图68以及图69的解码器、图71的接收方法等等的术语。
根据实施例的用于发送和接收点云数据的方法/设备可以被称为根据实施例的方法/设备。
根据实施例,构成点云数据的几何数据、几何信息、位置信息等等被解释为具有相同的含义。构成点云数据的属性数据、属性信息等等被解释为具有相同的含义。
根据实施例的方法/设备可以包括并且执行对层组切片的边界处理。
实施例包括一种用于由于发送和接收点云数据中的接收器性能或传输速度而有效地支持部分数据的选择性解码的方法。实施例包括一种用于通过将在数据单元中递送的几何和属性数据划分为诸如几何八叉树和细节级别(LoD)的语义单元来选择比特流单元中的必要信息或去除不必要的信息的方法。
实施例包括一种配置由点云组成的数据结构的方法。更具体地,实施例包括用于有效地传送基于层配置的点云压缩(PCC)数据的打包和信令方法,并且包括将该打包和信令方法应用于可扩展的基于PCC的服务的方法。具体地,实施例包括一种当直接压缩模式被用于位置压缩时配置切片片段并发送和接收其以更适合可扩展PCC服务的方法。具体地,实施例可以提供用于有效地存储和发送具有分布广并且点密度高的大量点云数据的压缩结构。
参考图4和图11,点云数据由每个数据的位置(例如,XYZ坐标)和属性(例如,颜色、反射率、强度、灰度、不透明度等)组成。在点云压缩(PCC)中,执行基于八叉树的压缩以有效地压缩三维空间中不均匀分布的分布特性,并基于此压缩属性信息。图4和图11是用于PCC的发送端和接收端的流程图。根据实施例的操作可以由PCC的发送端和接收端的每个组件来处理。
图15图示根据实施例的点云数据的编码、发送和解码的过程。
图15的每个组件可以对应于硬件、软件、处理器和/或其组合。
点云编码器15000是执行根据实施例的发送方法的发送设备,并且可以可扩展地编码和发送点云数据。
点云解码器15010是执行根据实施例的接收方法的接收设备,并且可以可扩展地解码点云数据。
由编码器15000接收的源数据可以包括几何数据和/或属性数据。
编码器15000可扩展地编码点云数据,但不立即生成部分PCC比特流。相反,当它接收到完整的几何数据和完整的属性数据时,它将数据存储在连接到编码器的存储器中。然后,编码器可以执行用于部分编码的转码,并且生成并发送部分PCC比特流。解码器15010可以接收并解码部分PCC比特流以重构部分几何和/或部分属性。
一旦接收到完整的几何和完整的属性,编码器15000可以将数据存储在连接到编码器的存储器中,并且利用低量化参数(QP)对点云数据进行转码以生成并发送完整的PCC比特流。解码器15010可以接收并解码完整的PCC比特流以重构完整的几何和/或完整的属性。解码器15010可以通过数据选择从完整的PCC比特流中选择部分几何和/或部分属性。
根据实施例的方法/设备通过将作为点云数据的关于数据点的位置信息和诸如颜色/亮度/反射率的特征信息划分为几何信息和属性信息来压缩和发送点云数据。在这种情况下,可以根据细节程度来配置具有层的八叉树结构,或者可以根据细节级别(LoD)来配置PCC数据。然后,可以基于配置的结构或数据来执行可扩展的点云数据编译和表示。在这种情况下,由于接收器的性能或传输速率,可能仅解码或表示点云数据的一部分。
在此过程中,根据实施例的方法/设备可以事先移除不必要的数据。换句话说,当仅需要发送可扩展PCC比特流的一部分时(即,在可扩展解码中仅对一些层进行解码),无法仅选择并发送必要的部分。因此,1)在解码之后需要对必要的部分进行重编码(15020),或者2)接收器必须在将整个数据传输到其之后选择性地应用操作(15030)。然而,在情况1)中,由于解码和重编码的时间,可能会发生延迟(15020)。在情况2)中,带宽效率可能由于传输不必要的数据而退化。此外,当使用固定带宽时,可能需要降低数据质量以进行传输(15030)。
因此,根据实施例的方法/设备可以定义点云数据的切片分段结构,并且用信号发送用于可扩展传输的可扩展层和切片结构。
在实施例中,为了确保高效的比特流递送和解码,可以将比特流划分成要处理的特定单元。
对于基于八叉树的几何压缩,根据实施例的方法/设备可以一起使用基于熵的编译和直接编译。在这种情况下,需要有效利用可扩展性的切片配置。
根据实施例的单元可以被称为LOD、层、切片等。LOD是与属性数据编译中的LOD相同的术语,但可以意指用于比特流的分层结构的数据单元。它可以是基于点云数据的层次结构对应于一个深度或两个或更多个深度的捆绑的概念,例如,八叉树或多树的深度(级别)。类似地,层被提供来生成子比特流的单元,并且是对应于一个深度或者两个或更多个深度的捆绑的概念,并且可以对应于一个LOD或者两个或更多个LOD。另外,切片是用于配置子比特流的单元的单元,并且可以对应于一个深度、一个深度的一部分或者两个或更多个深度。而且,它可以对应于一个LOD、一个LOD的一部分、或者两个或更多个LOD。根据实施例,LOD、层和切片可以彼此对应,或者LOD、层和切片之一可以被包括在另一个中。此外,根据实施例的单元可以包括LOD、层、切片、层组或子组,并且可以被称为彼此的相互补充。
此外,在分布广并且具有密度点高的大点云的情况下,可能会出现延迟问题,因为需要处理许多比特流来接入感兴趣的区域。根据实施例的方法/设备可以解决这个延迟问题。对于根据实施例的用于以低延迟压缩大点云数据的分层点云结构,图块/拼块/切片层组/切片子组、图块/切片层组/切片子组、切片层组/切片子组或层组bbox->子组bbox关系可以被使用。
图16示出根据实施例的基于层的点云数据配置以及几何结构和属性比特流。
根据实施例的发送方法/设备可以配置如图16中所示的基于层的点云数据以对点云数据进行编码和解码。
实施例针对通过选择性地发送和解码按层配置的点云数据的比特流单元中的数据来进行有效的发送和解码。
点云数据的分层可以基于应用领域而具有在SNR、空间分辨率、颜色、时间频率、比特深度等方面的层结构,并且可以基于八叉树结构或LoD结构在数据密度增加的方向上构造层。
根据实施例的方法/设备可以基于如图16所示的分层来配置、编码和解码几何比特流和属性比特流。
根据实施例的发送设备/编码器通过点云压缩获取的比特流可以根据数据的类型被划分为几何数据比特流和属性数据比特流并被发送。
根据实施例的每个比特流可以由切片组成。无论层信息或LoD信息如何,几何数据比特流和属性数据比特流均可以被配置为一个切片并被递送。在这种情况下,当仅使用层或LoD的一部分时,应执行下述操作:1)对比特流进行解码,2)仅选择期望的部分并移除不需要的部分,以及3)仅基于必要的信息再次执行编码。
图17示出根据实施例的比特流配置。
根据实施例的发送方法/设备可以生成如图17所示的比特流,并且根据实施例的接收方法/设备可以对包括在如图17所示的比特流中的点云数据进行解码。
根据实施例的比特流配置
在实施例中,为了避免不必要的中间过程,比特流可以被划分为层(或LoD)并被发送。
例如,在基于LoD的PCC结构中,更低的LoD被包括在更高的LoD中。在当前LoD中包括但未在先前LoD中包括的信息,即,每个LoD中新包括的信息可以被称为R(Rest)。如图17所示,初始LoD信息和新包括在每个LoD中的信息R可以被划分并在每个独立单元中发送。
根据实施例的发送方法/设备可以对几何数据进行编码并生成几何比特流。可以为每个LOD或层配置几何比特流。几何比特流可以包括用于每个LOD或层的报头(几何报头)。报头可以包括用于下一个LOD或下一层的参考信息。当前LOD(层)可以进一步包括在先前LOD(层)中未包括的信息R(几何数据)。
根据实施例的接收方法/设备可以对属性数据进行编码并生成属性比特流。可以为每个LOD或层配置属性比特流,并且属性比特流可以包括用于每个LOD或层的报头(属性头)。报头可以包括用于下一个LOD或下一层的参考信息。当前LOD(层)可以进一步包括先前LOD(层)中未包括的信息R(属性数据)。
根据实施例的接收方法/设备可以接收由LOD或层组成的比特流并且仅有效地解码必要的数据而无需复杂的中间处理。
图18图示根据实施例的比特流排序方法。
根据实施例的方法/设备可以对图18中所示的比特流进行排序。
根据实施例的比特流排序方法
在发送比特流时,根据实施例的发送方法/设备可以串行地发送几何和属性,如图18所示。在这种情况下,取决于数据的类型,可以首先发送整个几何信息(几何数据),并且然后可以发送属性信息(属性数据)。在这种情况下,可以基于发送的比特流信息来快速重构几何信息。
在图18-(a)中,例如,包含几何数据的层(LOD)可以首先定位在比特流中,并且包含属性数据的层(LOD)可以定位在几何层之后。因为属性数据取决于几何数据,所以可以首先放置几何层。另外,根据实施例,位置可以不同地改变。还可以在几何报头之间以及属性报头和几何报头之间进行参考。
参考图18-(b),可以收集和递送构成包括几何数据和属性数据的同一层的比特流。在这种情况下,通过使用能够并行解码几何和属性的压缩技术,可以缩短解码执行时间。在这种情况下,可以首先放置需要首先处理的信息(更低的LoD,其中几何必须先于属性)。
第一层1800包括与最低LOD 0(层0)相对应的几何数据和属性数据以及每个报头。第二层1810包括LOD 0(层0),并且还包括未包括在LOD 0(层0)中的新的且更详细的层1(LOD 1)的点的几何数据和属性数据作为信息R1。随后能够以类似的方式放置第三层1820。
当发送和接收比特流时,根据实施例的发送/接收方法/设备可以在比特流级别处有效地选择应用领域中期望的层(或LoD)。在根据实施例的比特流排序方法中,收集和发送几何信息(图18)可以在比特流级别选择之后在中间产生空部分。在这种情况下,比特流可能需要重新排列。在根据每层捆绑和递送几何和属性的情况下(图18),可以如下根据应用领域选择性地移除不必要的信息。
图19图示根据实施例的选择几何数据和属性数据的方法。
根据实施例的比特流选择
当需要选择如上所述的比特流时,根据实施例的方法/设备可以选择如图21所示的比特流级别处的数据:1)几何和属性的对称选择;2)几何和属性的不对称选择;或3)上述两种方法的组合。
1)几何和属性的对称选择
参考图19,其图示仅选择直到LoD1(LOD 0+R1)的LoD(19000)并发送或解码的情况,与对应于上层的R2(LOD 2中的新部分)相对应的信息被移除以用于发送/解码。
2)几何和属性的不对称选择
根据实施例的方法/设备可以不对称地发送几何和属性。仅移除上层的属性(属性R2)(19001),并且可以选择并发送/解码完整的几何(从三角形八叉树结构中的级别0(根级别)到级别7(叶级别))(19011)。
参考图16,当点云数据以八叉树结构表示并且分层地划分为LOD(或层)时,可以支持可扩展编码/解码(可扩展性)。
根据实施例的可扩展性功能可以包括切片级可扩展性和/或八叉树级可扩展性。
根据实施例的LoD(细节级别)可以被用作用于表示一个或多个八叉树层的集合的单元。此外,它可能意味着要配置为切片的八叉树层的捆绑。
在属性编码/解码中,根据实施例的LOD可以被扩展并用作用于在更广泛的意义上详细划分数据的单元。
也就是说,可以为每个八叉树层提供通过实际八叉树层(或可扩展属性层)的空间可扩展性。然而,当在比特流解析之前在切片中配置可扩展性时,可以根据实施例在LoD中进行选择。
在八叉树结构中,LOD0可以对应于根级别到级别4,LOD1可以对应于根级别到级别5,并且LOD2可以对应于根级别到级别7,级别7是叶级别。
也就是说,如图16所示,当在切片中利用可扩展性时,如在可扩展传输的情况下,所提供的可扩展步骤可以对应于LoD0、LoD1和LoD2这三个步骤,并且可以由解码操作中的八叉树结构提供的可扩展步骤可以对应从根到叶的八个步骤。
根据实施例,例如,在图16中,当LoD0至LoD2被配置为各自切片时,接收器或发射器的转码器(图15的转码器15040)可以选择1)仅LoD0、选择2)LoD0和LoD1,或者选择3)用于可扩展处理的LoD0、LoD1、以及LoD2。
示例1:当仅选择LoD0时,最大八叉树级可以为4,并且在解码过程中可以从八叉树层0至4中选择一个可扩展层。在这种情况下,接收器可以将通过最大八叉树深度可获得的节点大小视为叶节点,并且可以通过信令信息发送节点大小。
示例2:当选择LoD0和LoD1时,可以添加层5。因此,最大八叉树级可以是5,并且在解码过程中可以从八叉树层0至5当中选择一个可扩展层。在这种情况下,接收器可以将通过最大八叉树深度可获得的节点大小视为叶节点,并且可以通过信令信息发送节点大小。
根据实施例,八叉树深度、八叉树层和八叉树级别可以是其中数据被详细划分的单位。
示例3:当选择LoD0、LoD1和LoD2时,可以添加层6和层7。因此,最大八叉树级可以是7,并且在解码过程中可以从八叉树层0至7当中选择一个可扩展层。在这种情况下,接收器可以将通过最大八叉树深度可获得的节点大小视为叶节点,并且可以通过信令信息发送节点大小。
图20图示根据实施例的配置包括点云数据的切片的方法。
根据实施例的切片配置
根据实施例的发送方法/设备/编码器可以通过以切片结构分段比特流来配置G-PCC比特流。用于详细数据表示的数据单元可以是切片。
根据实施例的切片可以意指用于分区点云数据的数据单元。也就是说,切片表示点云数据的一部分。切片可以被称为表示某个部分或单元的术语。
例如,一个或多个八叉树层可以匹配到一个切片。
根据实施例的发送方法/设备,例如,编码器可以通过在扫描顺序2000的方向上扫描八叉树中包括的节点(点)来配置基于切片2001的比特流。
在图20-(a)中,八叉树层中的一些节点可以被包括在一个切片中。
八叉树层(例如,级别0至级别4)可以构成一个切片2002。
八叉树层(例如,级别5)的部分数据可以构成每个切片2003、2004、2005。
八叉树层(例如,级别6)的部分数据可以构成每个切片。
在图20-(b)和图20-(c)中,当多个八叉树层被匹配到一个切片时,可以仅包括每个层的一些节点。以这种方式,当多个切片构成一个几何/属性帧时,可以为接收器递送配置层所必需的信息。该信息可以包括关于每个切片中包括的层的信息和关于每个层中包括的节点的信息。
在图20-(b)中,八叉树层,例如,级别0至级别3以及级别4的部分数据可以被配置为一个切片。
八叉树层,例如,级别4的部分数据和级别5的部分数据可以被配置为一个切片。
八叉树层,例如,级别5的部分数据和级别6的部分数据可以被配置为一个切片。
八叉树层,例如,级别6的部分数据可以被配置为一个切片。
在图20-(c)中,八叉树层,例如,级别0至级别4的数据可以被配置为一个切片。
来自八叉树级别5、级别6和级别7中每个的部分数据可以被配置为一个切片。
根据实施例的编码器和与编码器相对应的设备可以对点云数据进行编码,并且可以生成并发送包括与点云数据有关的编码的数据和参数信息的比特流。
此外,在生成比特流时,可以基于根据实施例的比特流结构来生成比特流(参见例如图16至图20)。因此,根据实施例的接收设备、解码器和对应设备可以接收并解析被配置为适合于选择性部分数据解码的比特流,并且部分解码并有效地提供点云数据(参见图15)。
根据实施例的可扩展传输
根据实施例的点云数据发送方法/设备可以可扩展地发送包括点云数据的比特流,并且根据实施例的点云数据接收方法/设备可以可扩展地接收和解码比特流。
当根据图16至图20所示的实施例的比特流被用于可扩展传输时,可以将选择接收器所需的切片所需要的信息发送到接收器。可扩展传输可以意味着仅发送或解码比特流的一部分,而不是解码整个比特流,并且其结果可能是低分辨率点云数据。
当可扩展传输被应用于基于八叉树的几何比特流时,点云数据可能需要被配置有范围仅直至针对从根节点到叶节点的每个八叉树层的比特流(图16)的特定八叉树层的信息。
为此,目标八叉树层应当不依赖于关于更低八叉树层的信息。这可能是共同应用于几何编译和属性编译的约束。
另外,在可扩展传输中,需要递送用于发射器/接收器选择可扩展层的可扩展结构。考虑到根据实施例的八叉树结构,所有八叉树层可以支持可扩展传输,或者可以仅针对特定八叉树层或更低层允许可扩展传输。当切片包括八叉树层中的一些时,可以指示其中包括切片的可扩展层。从而,可以确定在比特流阶段切片是否是必要的/不必要的。在图20-(a)的示例中,从根节点开始的黄色部分在不支持可扩展传输的情况下构成一个可扩展层。接下来的八叉树层能够以一对一的对应关系匹配到可扩展层。一般来说,可以支持针对与叶节点相对应的部分的可扩展性。如图23-(c)中所示,当切片中包括多个八叉树层时,可以定义应当为这些层配置一个可扩展层。
在这种情况下,可以根据目的单独使用可扩展传输和可扩展解码。可扩展传输可以在发送/接收侧被用于选择直到特定层的信息而不涉及解码器的目的。可扩展解码被用于在编译期间选择特定层。也就是说,可扩展传输可以支持对必要信息的选择,而不涉及处于压缩状态(在比特流阶段)的解码器,使得信息可以由接收器发送或确定。另一方面,可扩展解码可以仅支持编码/解码数据直到编码/解码过程中所需的部分,并且因此可以在这种情况下用作可扩展表示。
在这种情况下,用于可扩展传输的层配置可以不同于用于可扩展解码的层配置。例如,就可扩展传输而言,包括叶节点的三个底部八叉树层可以构成一个层。然而,当就可扩展解码而言包括所有层信息时,可以针对叶节点层n、叶节点层n-1、叶节点层n-2中的每个执行可扩展解码。
在下文中,将描述用于上述的层配置的切片结构和用于可扩展传输的信令方法。
图21示出根据实施例的比特流配置。
根据实施例的方法/设备可以生成如图21所示的比特流。比特流可以包括编码的几何数据和属性数据,并且还包括参数信息。
下面描述用于参数信息的语法和语义。
根据实施例,关于分离的切片的信息可以如下定义在比特流和SEI消息的参数集中。
比特流可以包括序列参数集(SPS)、几何参数集(GPS)、属性参数集(APS)、几何切片报头和属性切片报头。在这点上,取决于应用或系统,要应用的范围和方法可以在相应的或单独的位置中定义并且不同地使用。即,信号可以取决于发送信号的位置而具有不同的含义。如果信号在SPS中被定义,则它可以同等地应用于整个序列。如果该信号在GPS中定义,则这可能指示该信号被用于位置重构。如果该信号在APS中定义,则这可以指示该信号被应用于属性重构。如果在TPS中定义信号,则这可以指示信号仅应用于图块内的点。如果信号在切片中被递送,则这可以指示信号仅应用于该切片。另外,取决于应用或系统,将要应用的范围和方法可以定义在相应的位置或单独的位置中,以便被不同地使用。另外,当下面定义的语法元素适用于多个点云数据流以及当前点云数据流时,可以将其承载在高级参数集(superordinate parameter set)中。
这里使用的缩写是:SPS:序列参数集;GPS:几何参数集;APS:属性参数集;TPS:图块参数集;Geom:几何比特流=几何切片报头+几何切片数据;Attr:属性比特流=属性切片报头+属性切片数据。
虽然实施例独立于编译技术来定义信息,但是可以结合编译技术来定义信息。为了支持区域上不同的可扩展性,可以在比特流的图块参数集中定义该信息。另外,当下面定义的语法元素不仅适用于当前点云数据流,还适用于多个点云数据流时,可以将其承载在高级参数集等中。
可替选地,可以为比特流定义网络抽象层(NAL)单元,并且可以递送用于选择层的相关信息,诸如layer_id。由此,可以在系统级别处选择比特流。
在下文中,根据实施例的参数(可以被称为元数据、信令信息等)可以在根据实施例的发射器的过程中产生,并且被发送到根据实施例的接收器,使得在重构过程中使用。
例如,参数可以由根据稍后将描述的实施例的发送设备的元数据处理器(或元数据生成器)生成,并且可以由根据实施例的接收设备的元数据解析器获取。
TPS可以包括关于图块的信息。例如,它可以承载关于图块的边界框的坐标信息、宽度、深度、深度信息等。
切片可以包括关于几何和/或属性的信息。例如,几何可以包括几何切片报头和几何切片数据。切片可以被称为数据单元。几何切片报头可以包括与几何相关的参数集ID、几何切片所属的图块的ID、切片的ID、与包括几何的边界框相关的位置、节点大小、以及关于几何点的数量的信息。有关属性的信息以类似的方式应用。
在下文中,将描述包括在比特流中的参数的语法/语义。
图22示出根据实施例的序列参数集和几何参数集的语法。
图23示出根据实施例的属性参数集的语法。
图24示出根据实施例的几何数据单元报头的语法。
图25示出根据实施例的属性数据单元报头的语法。
scalable_transmission_enable_flag:当等于1时,可以指示比特流被配置为适合于可扩展传输。也就是说,因为比特流由多个切片组成,所以可以在比特流阶段选择信息。可扩展层配置信息可以被发送以指示切片选择在发射器或接收器中可用,并且几何和/或属性被压缩以能够部分解码。当scalable_transmission_enable_flag为1时,接收器或发射器的转码器可以被用于确定是否允许几何和/或属性可扩展传输。转码器可以被耦合到发送设备和接收设备或包括在发送设备和接收设备中。
geom_scalable_transmission_enable_flag和attr_scalable_transmission_enable_flag:当等于1时,它们可以指示几何或属性被压缩以启用可扩展传输。
例如,对于几何,该标志可以指示该几何由基于八叉树的层组成或者已经考虑到可扩展传输来执行切片分区(参见图23)。
当geom_scalable_transmission_enable_flag或attr_scalable_transmission_enable_flag为1时,接收器可以知道可扩展传输可用于几何或属性。
例如,geom_scalable_transmission_enable_flag等于1可以指示使用基于八叉树的几何编译,并且禁用QTBT,或者通过按照BT-QT-OT的顺序执行编译来以诸如八叉树的形式对几何进行编译。
attr_scalable_transmission_enable_flag为1可以指示通过使用可扩展LOD生成来使用pred-Lifting编译或者使用可扩展RAHT(例如,基于Haar的RAHT)。
num_scalable_layers可以指示支持可扩展传输的层的数量。根据实施例,层可以意指LOD。
scalable_layer_id指定用于构成可扩展传输的层的指示符。当可扩展层由多个切片组成时,可以在通过scalable_layer_id的参数集中承载公共信息,并且可以根据切片在数据单元报头中承载不同的信息。
num_octree_layers_in_scalable_layer可以指示包括在构成可扩展传输的层中或对应于构成可扩展传输的层的八叉树层的数量。当可扩展层不是基于八叉树配置时,它可以指代相应的层。
tree_depth_start可以指示构成可扩展传输的层中包括的或对应于构成可扩展传输的层的八叉树层当中的起始八叉树深度(相对最接近根)。
tree_depth_end可以指示包括在构成可扩展传输的层中或与构成可扩展传输的层相对应的八叉树层当中的最后八叉树深度(相对最接近叶)。
node_size可以指示当通过可扩展传输重构可扩展层时输出点云数据的节点大小。例如,当node_size等于1时可以指示叶节点。尽管实施例假定XYZ节点大小是恒定的,但是可以通过用信号发送XYZ方向或变换坐标(诸如(r(半径)、phi、theta))中的每个方向上的大小来指示任意节点大小。
num_nodes可以指示包括在对应的可扩展层中的节点的数量。
num_slices_in_scalable_layer可以指示属于可扩展层的切片的数量。
slice_id指定用于区分切片或数据单元的指示符,并且可以递送用于属于可扩展层的数据单元的指示符。
aligned_slice_struct_enabled_flag:当等于1时,可以指示属性可扩展层结构和/或切片配置与几何可扩展层结构和/或切片配置匹配。在这种情况下,可以通过关于几何可扩展层结构和/或切片配置的信息来识别关于属性可扩展层结构和/或切片配置的信息。即,几何层/切片结构与属性层/切片结构相同。
slice_id_offset可以指示用于基于几何切片id获得属性切片或数据单元的偏移。根据实施例,当aligned_slice_struct_enabled_flag为1时,即,当属性切片结构与几何切片结构匹配时,可以如下基于几何切片id获得属性切片id。
Slice_id(属性)=slice_id(几何)+slice_id_offset
在这种情况下,几何参数集中提供的值可以用于num_scalable_layers、scalable_layer_id、tree_depth_start、tree_depth_end、node_size、num_nodes和num_slices_in_scalable_layer,它们是用于配置属性切片结构的变量。
corresponding_geom_scalable_layer可以指示与属性可扩展层结构相对应的几何可扩展层。
num_tree_depth_in_data_unit可以指示其中包括属于数据单元的节点的树深度。
tree_depth可以指示树深度。
num_nodes可以指示属于数据单元的节点当中属于tree_depth的节点的数量。
aligned_geom_data_unit_id可以指示当属性数据单元符合相应几何数据单元的可扩展传输层结构/切片结构时的几何数据单元ID。
ref_slice_id可以用于指代应在当前切片之前进行解码的切片(参见例如图18至图20)。
图26示出根据实施例的基于单个切片的几何树结构和基于分段切片的几何树结构。
根据实施例的方法/设备可以配置用于发送点云数据的切片,如图26所示。
图26示出包含在不同切片结构中的几何树结构。根据G-PCC技术,整个编译的比特流可以被包括在单个切片中。对于多个切片,每个切片可以包含子比特流。切片的顺序可以与子比特流的顺序相同。比特流可以按照几何树的广度优先顺序累积,并且每个切片可以匹配到一组树层(见图26)。分段的切片可以继承G-PCC比特流的分层结构。
切片可以不影响先前的切片,正如更高层不影响几何树中的更低层一样。
根据实施例的分段切片在错误稳健性、有效传输、兴趣区域的支持等方面是有效的。
1)错误恢复能力
与单切片结构相比,分段切片可更能抵抗错误。当切片包含帧的整个比特流时,数据丢失可能会影响整个帧数据。另一方面,当比特流被分段成多个切片时,即使一些其他切片丢失,一些未受丢失影响的切片也可能被解码。
2)可扩展传输
可以支持具有不同能力的多个解码器。当编译的数据在单个切片中时,可以在编码之前确定编译的点云的LOD。因此,可以独立地发送具有不同分辨率的点云数据的多个预编码的比特流。就大的带宽或存储空间而言,这可能效率低下。
当生成PCC比特流并将其包括在分段的切片中时,单个比特流可以支持不同级别的解码器。从解码器的角度来看,接收器可以选择目标层并且可以将部分选择的比特流递送到解码器。类似地,通过使用单个PCC比特流而不分区整个比特流,可以在发射器侧有效地生成部分PCC比特流。
3)基于区域的空间可扩展性
关于G-PCC要求,基于区域的空间可扩展性可以定义如下。压缩的比特流可以被配置为具有一个或多个层。特殊的兴趣区域可以利用附加层而具有高密度,并且可以从更低层预测这些层。
为了支持这个要求,有必要支持区域的不同详细表示。例如,在VR/AR应用中,远处的对象可能以低精度表示,以及附近的对象可能以高精度表示。可替选地,解码器可以根据请求增加兴趣区域的分辨率。此操作可以使用G-PCC的可扩展结构来实现,诸如几何八叉树和可扩展属性编译方案。解码器应基于包括整个几何或属性的当前切片结构接入整个比特流。这可能会导致带宽、存储器和解码器方面的效率低下。另一方面,当比特流被分段成多个切片,并且每个切片包括根据可扩展层的子比特流时,根据实施例的解码器可以在有效地解析比特流之前根据需要选择切片。
图27示出根据实施例的几何编译树的层组结构和属性编译树的对齐的层组结构。
根据实施例的方法/设备可以使用如图27所示的点云数据的分层结构来生成切片层组。
根据实施例的方法/设备可以应用包括在不同切片中的几何和属性比特流的分段。另外,从树深度的角度来看,可以使用几何和属性编译的编译树结构以及部分树信息中包括的每个切片。
图27-(a)示出几何树结构和所建议的切片片段的示例。
例如,八叉树中可以配置8个层,并且可以使用5个切片来包含一个或多个层的子比特流。组表示一组几何树层。例如,组1包括层0至4,组2包括层5,并且组3包括层6和7。而且,组可以被划分为三个子组。每个子组中都存在父子对。组3-1至3-3是组3的子组。当使用可扩展属性编译时,树结构与几何树结构相同。相同的八叉树-切片映射可以用于创建属性切片片段(图27-(b))。
层组表示在G-PCC编译中生成的层结构单元的捆绑,诸如八叉树层和LoD层。
子组可以基于用于一个层组的位置信息来表示邻近节点的集合。可替选地,可以基于层组中的最低层(其可以是最靠近根侧的层,并且在图27中的组3的情况下可以是层6)来配置邻居节点的集合,可以是根据Morton码顺序配置,可以基于距离配置,或者可以根据编译顺序配置。另外,可以定义规则使得具有父子关系的节点存在于同一子组中。
当定义子组时,可以在层的中间形成边界。关于在边界处是否维持连续性,可以使用sps_entropy_continuation_enabled_flag、gsh_entropy_continuation_flag等来指示是否连续使用熵,并且可以提供ref slice id。由此,可以维持与先前切片的连续性。
图28示出根据实施例的几何树的层组和属性编译树的独立层组结构。
根据实施例的方法/设备可以生成如图28所示的基于几何的切片层和基于属性的切片层。
属性编译层可以具有与几何编译树不同的结构。参考图28-(b),可以独立于几何树结构来定义组。
为了有效地使用G-PCC的分层结构,可以提供与几何和属性分层结构配对的切片的分段。
对于几何切片片段,每个切片片段可以包含来自层组的编译的数据。这里,层组被定义为一组连续的树层,树层的起始深度和结束深度可以是树深度中的特定数字,并且起始深度小于结束深度。
对于属性切片片段,每个切片片段可以包含来自层组的编译的数据。这里,根据属性编译方案,层可以是树深度或LOD。
切片片段中的编译的数据的顺序可以与单个切片中的编译的数据的顺序相同。
作为包括在比特流中的参数集,可以提供以下参数集。
在几何参数集中,需要通过例如组数、组标识符、组中树深度的数量、以及组中子组的数量来描述与几何树层相对应的层组结构。
在属性参数集中,需要指示切片结构是否与几何切片结构对齐的指示信息。定义组的数量、组标识符、树深度的数量和片段的数量来描述层组结构。
在切片报头中定义以下元素。
在几何切片报头中,可以定义组标识符、子组标识符等来标识每个切片的组和子组。
在属性切片报头中,当属性层结构不与几何组对齐时,有必要标识每个切片的组和子组。
图29示出根据实施例的参数集的语法。
图29的语法可以与图22至图25的参数信息一起被包括在图21的比特流中。
num_layer_groups_minus1加1指定层组的数量,其中层组表示作为几何或属性编译树结构的一部分的一组连续树层。
layer_group_id指定第i层组的层组标识符。
num_tree_depth_minus1加1指定第i层组中包含的树深度的数量。
num_subgroups_minus1加1指定第i层组中的子组的数量。
aligned_layer_group_struction_flag等于1指定属性切片的层组和子组结构与几何层组和子组结构相同。aligned_layer_group_struction_flag等于0指定属性切片的层组和子组结构与几何层组和子组结构不相同。
geom_parameter_set_id指定包含与属性层组结构对齐的层组和子组结构信息的几何参数集标识符。
图30示出根据实施例的几何数据单元报头。
图30的报头可以与图22至图25的参数信息一起被包括在图21的比特流中。
subgroup_id指定由layer_group_id指示的层组中的子组的指示符。subgroup_id的范围可以是0至num_subgroups_minus1。
layer_group_id和subgroup_id可以用于指示切片的顺序,并且可以用于按比特流顺序对切片进行排序。
根据实施例的发送方法/设备和编码器可以通过将点云数据划分为用于传输的单元来发送点云数据。通过比特流生成器,数据可以被划分并打包成适合于根据分层结构信息选择比特流单元中的必要信息的单元(图33至图35)。
根据实施例的接收方法/设备和解码器可以基于比特流层重构几何数据和属性数据(图33至图35)。
在这种情况下,子比特流分类器可以基于比特流报头中的信息将适当的数据递送到解码器。可替选地,在此过程中,可以选择接收器所需的层。
基于图26至图28的切片分层比特流,可以参考必要的参数信息来选择几何切片和/或属性切片,并且然后进行解码和渲染。
基于图26至图28的实施例,可以根据层来划分和发送压缩数据,并且可以在比特流阶段中选择性地仅发送预压缩数据的必要部分,而无需单独的转码过程。此方案在存储空间方面可能是高效的,因为每个流仅需要一个存储空间。它还可以在(比特流选择器)带宽方面实现高效传输,因为在传输之前仅选择必要的层。
另外,根据实施例的接收方法/设备可以逐切片地接收比特流,并且接收器可以根据要根据解码器性能或应用领域表示的点云数据的密度选择性地将比特流发送到解码器。在这种情况下,因为在解码之前进行选择,所以可以增加解码器效率,并且可以支持各种性能的解码器。
图31图示根据实施例的组合树编译模式和直接编译模式的示例。
也就是说,当执行基于八叉树的压缩时,可以在捆绑中表示存在于相似位置处的点的位置,并且因此可以减少所需比特的数量。然而,如图31中所示,当占用节点(31000)的后代节点当中不存在兄弟节点时,基于八叉树的压缩可能没有显着效果。因此,在这种情况下,通过以直接模式执行节点(即,点)31000的直接编译,可以改进编译效率和压缩速度。
也就是说,参考八叉树结构,基于当前点(节点)可以提供最多8个后代节点。8个后代节点可以包括占用节点和/或未占用节点。
如果不存在基于当前点的后代节点和/或兄弟节点,则很可能不存在相似的邻居点。因此,通过生成节点(点)之间的期望值来生成残差值,残差可能变大,精度可能降低,或者可能出现时延。在这种情况下,可以通过点的直接编译来发送点的位置值(例如,图31中的31000)。
作为确定是否执行直接编译的方法,根据实施例的方法/设备可以基于与邻居节点的关系如下确定直接编译的使用。即,当满足以下特定条件时可以操作直接压缩方法。
1)基于父节点的资格条件:从当前节点(点)的父节点的角度来看,只有当前节点是被占用的子节点,并且从父节点的父(祖父)节点的角度来看存在最多一个被占用的子节点(即,父节点的被占用的兄弟节点)(即,存在2个占用的子节点)。
2)6N资格条件:从父节点来看,只有当前节点是被占用的子节点,并且6个邻居(面对面接触的节点)未被占用。
例如,在这种情况下,可以确定直接编译可用。在这种情况下,仅当所包括的点的数量小于或等于阈值时,可以应用推断直接编译模式(IDCM)。当执行IDCM时,可以执行指示IDCM的信息,点的数量、以及指示点位置的XYZ值的信息(即,与未被八叉树编译的剩余深度相对应的部分)被包括在至少一个参数集中并且递送到接收设备。
图32示出根据实施例的IDCM的概览。
根据实施例的直接压缩操作可以由被配置为与图1的发送设备10000、图1的点云视频编码器10002、图2的编码、图4的点云视频编码器、图12的发送设备、图14的设备、图39的点云数据发送设备、或与其对应的一个或多个存储器通信的一个或多个处理器或集成电路来执行。一个或多个存储器可以存储用于处理/控制根据实施例的操作的程序。根据实施例的点云发送设备/方法的每个组件能够以硬件、软件、处理器和/或其组合来实现。一个或多个处理器可以控制本文描述的各种操作。处理器可以被称为控制器等。在一些实施例中,操作可以由固件、软件和/或其组合来执行。固件、软件和/或其组合可以存储在处理器或存储器中。
根据实施例的直接解压缩操作可以由被配置为与图1的接收设备10004、图1的点云视频解码器10006、图2的解码、图10的解码器、图11的解码器、图13的接收设备、图14的设备、图50的点云数据接收设备、或与其对应的一个或多个存储器通信。一个或多个存储器可以存储用于处理/控制根据实施例的操作的程序。根据实施例的点云接收设备/方法的每个组件可以通过硬件、软件、处理器和/或其组合来实现。一个或多个处理器可以控制本文描述的各种操作。处理器可以被称为控制器等。在一些实施例中,操作可以由固件、软件和/或其组合来执行。固件、软件和/或其组合可以存储在处理器或存储器中。
参考图32作为示例,根据点的分布,父节点32000可以具有多达8个子节点,并且特定子节点32001可以进一步具有子节点32002。在这种情况下,子节点32001是子节点32002的父节点。另外,可以确定是否在子32002处另外执行八叉树分割和预测编译或直接模式编译。
当确定直接模式编译可用时(32003),检查点32002的邻居节点(邻居点)的数量是否小于或等于阈值th。当点32002的邻居节点(邻居点)的数量小于或等于阈值th时,可以启用直接模式。另外,可以针对一个或多个点中的每一点直接编译用于位置值的x、y和z坐标信息。根据实施例,位置值可以基于用于八叉树的子立方体来表示。
在另一实施例中,当用于点32002的邻居节点(邻居点)的数量超过阈值th时,预测编译的压缩效率可以高于直接编译的压缩效率,并且因此直接模式被禁用并且节点可以进一步分割以生成八叉树。也就是说,当确定直接模式编译不可用时(32004),八叉树可以基于该点另外被分割成基于八叉树的子立方体。
如上所述,当执行直接压缩时,当前深度或更小的x、y和z位置信息被直接发送到接收设备。在这种情况下,每条独立的位置信息被压缩,并且因此即使当使用算术熵压缩时压缩效率也可能不高。
因此,在这种情况下,发送设备/方法可以对x、y和z值执行直接压缩(或称为编译)。在这种情况下,可以独立于算术熵编译的比特流(图33)来发送直接编译的比特流(图33)。
图33图示根据实施例的算术熵编译(AEC)的比特流和直接编译(DC)的比特流的示例。
当几何树结构被划分为用于可扩展传输的层组和/或子组时,可以通过根据每个层组和/或子组划分AEC比特流来配置切片。在一个实施例中,当配置多个切片时,每个切片包括AEC比特流的一部分,即,AEC子比特流。另外,可以为DC比特流配置单独的切片。在这种情况下,每个切片中包括的比特流的类型可以被划分为AEC比特流和DC比特流。因此,当执行几何部分解码时,接收设备可以选择包括所需AEC比特流的切片,并且在包括DC比特流的切片当中选择关于所需深度的DC点的信息。
在本公开中,为了简单起见,包括AEC比特流的切片将被称为AEC切片,以及包括DC比特流的切片将被称为DC切片。
图34示出根据实施例的几何树结构和切片片段的示例以及多个AEC切片和一个DC切片的示例。
也就是说,DC比特流被承载在一个切片中。
图34图示基于7个八叉树深度来执行位置压缩的情况。在这种情况下,几何树结构(即,八叉树结构)具有3个组并且被划分为总共5个层组(例如,3个组之一又被划分为3个子组),并且5个层组的AEC比特流分别包括在5个切片中(例如,切片1至切片5)。在这种情况下,当使用直接压缩时,DC比特流可以在单独的切片(例如,切片6)中发送。根据实施例,可以根据八叉树深度顺序地发送切片6中包括的DC比特流。参考图34-(b)作为示例,深度4的DC比特流、深度5的DC比特流、深度6的DC比特流和深度7的DC比特流以此顺序被包括在切片6中。此示例对应于从深度4开始执行直接编译的情况。
当接收设备仅使用关于多达八叉树深度5(即,组2)的深度的信息时,接收设备可以选择切片1和2以通过AEC解码器重构与八叉树深度5相对应的AEC比特流。另外,接收设备可以选择切片6,并重新选择切片6中对应于深度4和5的DC比特流以通过DC解码器重构比特流。也就是说,接收设备可以通过DC解码器独立地重构直接压缩点的位置。
在这种情况下,DC解码器可以从x、y和z位置信息中仅选择并使用对应层所需的信息。
在下面的示例中,八叉树深度A是执行直接编译的八叉树深度,并且八叉树深度B是八叉树深度A之后的八叉树深度,并且可以是通过从全八叉树深度N减去八叉树深度A获得的值。即,当定义八叉树深度B=八叉树深度(N-A)时,DC压缩叶节点的位置可以定义为DC之前AEC占用节点位置处的DC位置,如下面的等式5所示。即,当执行直接编译时,如果在通过八叉树编译朝向叶节点执行编译时满足预设条件,则执行直接编译。在等式5的示例中,当直接编译开始的深度是深度B时,通过将先前深度(例如,深度A、八叉树编译的深度)相对于深度B的位置级联到直接编译的位置来获得最终节点位置。换句话说,它是在完全执行解码时找到位置的表达式。
[等式5]
叶节点位置(x或y或z)
=八叉树深度A<<八叉树深度B处占用的节点位置(来自上层的AEC比特流)+在八叉树深度A之后的DC位置
在等式5中,“在八叉树深度A<<八叉树深度B处占用的节点位置”意指“在八叉树深度A处占用的节点位置”应当向左位移了“八叉树深度B”。
另外,当八叉树深度C是目标在部分解码中的八叉树深度时(其中八叉树深度C<全八叉树深度N,并且八叉树深度C>八叉树深度A),如果执行部分几何解码,则点/节点可以如下面的等式6中定义。
[等式6]
八叉树深度C处的部分解码的节点位置(x或y或z)
=八叉树深度A<<八叉树深度(C–A)处的占用的节点位置(来自AEC)+八叉树深度A>>八叉树深度(B–(C–A))之后的DC位置
等式6是等式5的应用。即,因为当执行部分解码时位置改变。此时改变的位置由此等式来获得。
例如,在利用八叉树解码的位置之后添加DC位置。在这种情况下,在该等式中考虑部分解码丢失的节点(或深度)。考虑到由于部分解码而丢失的深度,除了这部分之外的深度的位置被位移并级联。
图35示出根据实施例的几何树结构和切片片段的示例以及AEC切片和DC切片的示例。
即,图35图示用于发送DC比特流的另一种方法。在此示例中,DC比特流被八叉树深度划分并且每个划分的DC比特流通过每个切片被发送。即,对与划分的DC比特流的数量一样多的DC切片分段。
在此示例中,DC比特流被划分为三个DC组。DC组可以根据层组来划分。例如,当几何树结构被划分为三个层组(组1、组2和组3)时,DC比特流也被划分为三个DC组(DC组1、DC组2和DC组3)。在此示例中,子组未应用于DC比特流。然而,在应用领域中,也能够以同样的方式划分子组。在这种情况下,DC组3可以进一步被划分为三个DC组,即,DC组3-1、DC组3-2和DC组3-3(即,三个DC子组)。根据实施例,三个DC组(DC组1、DC组2和DC组3)的DC比特流分别在三个切片(切片6至切片8)中发送。在此示例中,深度4的DC比特流(即,DC组1)包括在切片6中,深度5的DC比特流(即,DC组2)被包括在切片7中,并且深度6和7的DC比特流(即,DC组3)被包括在切片8中。
可替选地,可以根据应用领域单独应用用于将DC比特流划分为组的准则和用于将AEC比特流划分为组的准则。
当接收设备仅对多达八叉树深度5的信息进行解码时,其可以选择切片1和2,并且通过AEC解码器对包括在切片1和2中的AEC比特流执行AEC解码(即,重构),并且可以通过DC解码器对切片6、7中包括的DC比特流执行DC解码(即,重构)。
在这种情况下,为了允许接收设备根据八叉树深度选择DC切片,可以将包括在每个DC切片中的比特流的层组或八叉树深度信息发送到接收设备。
图36示出根据实施例的几何树结构和切片片段的示例以及AEC切片和DC切片的示例。
即,图36图示用于发送DC比特流的另一种方法。在所图示的示例中,通过相同的切片一起发送根据八叉树深度彼此匹配的AEC比特流和DC比特流。此时,在实施例中,用于划分AEC比特流的准则与用于划分DC比特流的准则相同。例如,使用相同的层组分区方法来划分AEC比特流和DC比特流。
当接收设备仅使用多达八叉树深度5的信息时,选择切片1和2。切片1和2包括属于组1的AEC比特流和DC比特流。因此,当选择切片1和2时,切片1和2中包括的AEC比特流可以通过AEC解码器经受AEC解码,并且DC比特流可以通过DC解码器经受DC解码。换句话说,在接收设备仅使用多达八叉树深度5的八叉树深度的情况下,仅需要基于层组信息来选择切片1和2,而不管AEC/DC比特流类型。因此,可以更有效地操作切片选择过程。
虽然在本公开中描述了在一个切片中包括不同的几何编译比特流的方法,但是相同的方法可以应用于不同的属性编译比特流包括在一个切片中或者几何编译比特流和几何比特流被包括在一个切片中的应用领域。在这种情况下,不同类型的比特流可以具有不同的层组。可替选地,不同类型的比特流可以具有相同的层组结构。在这种情况下,它们可以有效地在诸如可扩展传输和空间可扩展性的应用领域中使用。
图21示出根据实施例的用于发送/接收的点云数据的示例性比特流结构。根据实施例,从图1、图2、图4和图12中的任意一个的点云视频编码器输出的比特流可以采用图21所示的形式。
根据实施例,点云数据的比特流提供图块或切片,使得点云数据可以被划分为区域并被处理。比特流的区域可以具有不同的重要性级别。因此,当点云数据被分区为图块时,可以将不同的滤波器(编码方法)或不同的滤波器单元应用于相应的图块。当点云数据被分区为切片时,可以将不同的滤波器或不同的滤波器单元应用于相应的切片。
当通过将点云数据分区成区域来压缩点云数据时,根据实施例的发送设备和接收设备能够以高级语法结构发送和接收比特流,用于选择性地发送经分区的区域的属性信息。
通过根据如图21所示的比特流结构发送点云数据,根据实施例的发送设备可以允许根据重要性级别不同地应用编码操作,并且允许在重要区域中使用高质量的编码方法。此外,可以根据点云数据的特性支持高效的编码和传输,并根据用户需求提供属性值。
当根据实施例的接收设备根据如图34所示的比特流结构来接收点云数据时,可以根据接收设备的处理能力将不同的滤波(解码方法)应用于各自的区域(划分为图块或切片),而不是对整个点云数据使用复杂的解码(滤波)方法。从而,对于用户重要的区域可以确保更好的图像质量,并且可以在系统中确保适当的时延。
当根据实施例的几何比特流、属性比特流和/或信令比特流(或信令信息)被配置在一个比特流(或G-PCC比特流)中时,比特流可以包括一个或多个子比特流。根据实施例的比特流可以包括用于序列级信令的序列参数集(SPS)、用于几何信息编译的信令的几何参数集(GPS)、以及用于属性信息编译的信令的一个或多个属性参数集(APS)(APS0、APS1)、用于图块级信令的图块库存(或称为TPS)、以及一个或多个切片(切片0至切片n)。也就是说,根据实施例的点云数据的比特流可以包括一个或多个图块。每个图块可以是包括一个或多个切片(切片0至切片n)的切片组。根据实施例的图块库存(即,TPS)可以包括关于一个或多个图块中的每个的信息(例如,关于图块边界框的坐标值信息和高度/大小信息)。每个切片可以包括一个几何比特流(Geom0)和/或一个或多个属性比特流(Attr0、Attr1)。例如,切片0可以包括一个几何比特流Geom00和一个或多个属性比特流Attr00和Attr10。
每个切片中的几何比特流可以由几何切片报头(geom_slice_header)和几何切片数据(geom_slice_data)组成。根据实施例,每个切片中的几何比特流可以被称为几何数据单元,几何切片报头可以被称为几何数据单元报头,并且几何切片数据可以被称为几何数据单元数据。
每个切片中的每个属性比特流可以由属性切片报头(attr_slice_header)和属性切片数据(attr_slice_data)组成。根据实施例,每个切片中的属性比特流可以被称为属性数据单元,属性切片报头可以被称为属性数据单元报头,并且属性切片数据可以被称为属性数据单元数据。
根据实施例,可以在点云数据的参数集(例如,SPS、GPS、APS和TPS(或称为图块库存)等)和/或相应切片的报头中重新定义对点云数据的编码和/或解码所需的参数。例如,它们可以在几何信息的编码和/或解码中被添加到GPS,并且可以在基于图块的编码和/或解码中被添加到图块和/或切片报头。
根据实施例,关于分段的(分离的)切片的信息和/或与直接编译相关的信息可以在SPS、GPS、APS、TPS或SEI消息中的至少一个中用信号发送。此外,关于分段的(分离的)切片的信息和/或与直接编译相关的信息可以在几何切片报头(或称为几何数据单元报头)或属性切片报头(或称为属性数据单元报头)中的至少一个中用信号发送。
根据实施例,关于分段的(分离的)切片的信息和/或与直接编译相关的信息可以取决于应用或系统被定义在相应的位置或单独的位置,使得要应用的范围和方法可以不同地使用。字段是在本公开中稍后将描述的语法中使用的术语,可以具有与参数或语法元素相同的含义。
也就是说,信号(即,关于分段的(分离的)切片的信息和/或与直接编译有关的信息)可以取决于发送信号的位置而具有不同的含义。如果信号在SPS中被定义,则它可以同等地应用于整个序列。如果该信号在GPS中定义,则这可以指示该信号被用于位置重构。如果该信号在APS中定义,则这可以指示该信号被应用于属性重构。如果在TPS中定义该信号,则这可以指示信号仅应用于图块内的点。如果信号在切片中被递送,则这可以指示信号仅应用于该切片。另外,当字段(或称为语法元素)适用于多个点云数据流以及当前点云数据流时,可以将其承载在高级参数集中。
根据实施例,参数(可以被称为元数据、信令信息等)可以由元数据处理器(或元数据生成器)、信令处理器、或发送设备的处理器生成,并且被发送到接收设备使得在解码/重构过程中使用。例如,由发送设备生成并发送的参数可以由接收设备的元数据解析器获取。
在此实施例中,已经描述了独立于编译技术来定义信息。然而,在其他实施例中,可以结合编译技术来定义信息。为了支持区域上不同的可扩展性,可以在图块参数集中定义该信息。可替选地,可以定义网络抽象层(NAL)单元,并且可以递送用于选择诸如layer_id的层的相关信息(例如,关于分段的(分离的)切片的信息和/或与直接编译相关的信息),使得甚至可以在系统级别处选择比特流。
图37示出根据实施例的序列参数集(SPS)(seq_parameter_set())和几何参数集。
参数集可以被包括在图21的比特流中,并且可以由根据实施例的编码器生成并由解码器解码。
根据实施例的SPS可以包括main_profile_compatibility_flag字段、unique_point_positions_constraint_flag字段、level_idc字段、sps_seq_parameter_set_id字段、sps_bounding_box_present_flag字段、sps_source_scale_factor_numerator_minus1字段、sps_source_scale_factor_denominator_minus1字段、sps_num_attribute_sets字段、log2_max_frame_idx字段、axis_coding_order字段、sps_bypass_stream_enabled_flag字段和sps_extension_flag字段。
main_profile_compatibility_flag字段可以指示比特流是否符合主简档。例如,main_profile_compatibility_flag等于1可以指示比特流符合主简档。例如,main_profile_compatibility_flag等于0可以指示比特流符合除了主简档之外的简档。
当unique_point_positions_constraint_flag等于1时,在当前SPS所引用的每个点云帧中,所有输出点可以具有唯一的位置。当unique_point_positions_constraint_flag等于0时,在当前SPS引用的任何点云帧中,两个或更多个输出点可能具有相同的位置。例如,即使当相应切片中的所有点都是唯一的时,帧中的切片和其他点也可能重叠。在这种情况下,unique_point_positions_constraint_flag被设置为0。
level_idc指示比特流所符合的级别。
sps_seq_parameter_set_id为SPS提供标识符以供其他语法元素参考。
sps_bounding_box_present_flag字段指示边界框是否存在于SPS中。例如,sps_bounding_box_present_flag等于1指示边界框存在于SPS中,而sps_bounding_box_present_flag等于0指示边界框的大小未定义。
根据实施例,当sps_bounding_box_present_flag等于1时,SPS可以进一步包括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源边界框偏移的缩放因子。
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包括重复与sps_num_attribute_sets字段的值一样多的迭代语句。在一个实施例中,i被初始化为0,并且每次执行迭代语句时递增了1。重复迭代语句,直到i的值变成等于sps_num_attribute_sets字段的值。迭代语句可以包括attribute_dimension_minus1[i]字段和attribute_instance_id[i]字段。attribute_dimension_minus1[i]加1指示第i个属性的分量的数量。
attribute_instance_id[i]字段指定第i个属性的实例ID。
根据实施例,当attribute_dimension_minus1[i]字段的值大于1时,迭代语句可以进一步包括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_secondary_bitdepth_minus1[i]加1指定针对第i个属性信号的二次分量的比特深度。
attribute_cicp_colour_primaries[i]指示第i个属性的颜色属性源原色的色度坐标。
attribute_cicp_transfer_characteristics[i]指示作为标称实值范围0到1的源输入线性光强度的函数的颜色属性的参考光电传递特性函数,或者指示作为输出线性光强度的函数的参考电光传递特性函数的倒数。
attribute_cicp_matrix_coeffs[i]描述用于从第i个属性的绿色、蓝色和红色或者Y、Z和X原色导出亮度和色度信号的矩阵系数。
attribute_cicp_video_full_range_flag[i]指定如从第i个属性的E'Y、E'PB和E'PR或E'R、E'G和E'B实值分量信号导出的亮度和色度信号的黑级别和范围。
known_attribute_label_flag[i]字段指示是否针对第i个属性用信号发送know_attribute_label[i]字段或者attribute_label_four_bytes[i]字段。例如,当known_attribute_label_flag[i]等于0时指示针对第i个属性用信号发送known_attribute_label[i]字段。known_attribute_label_flag[i]等于1指示针对第i个属性用信号发送attribute_label_four_bytes[i]字段。
known_attribute_label[i]指定第i个属性的类型。例如,known_attribute_label[i]等于0可以指定第i个属性是颜色。known_attribute_label[i]等于1可以指定第i个属性是反射率。known_attribute_label[i]等于2可以指定第i个属性是帧索引。此外,known_attribute_label[i]等于4指定第i个属性是透明度。known_attribute_label[i]等于5指定第i个属性是法线(normals)。
attribute_label_four_bytes[i]指示具有4字节码的已知属性类型。
根据实施例,attribute_label_four_bytes[i]等于0可以指示第i属性是颜色。attribute_label_four_bytes[i]等于1可以指示第i个属性是反射率。attribute_label_four_bytes[i]等于2可以指示第i个属性是帧索引。attribute_label_four_bytes[i]等于4可以指示第i个属性是透明度。attribute_label_four_bytes[i]等于5可以指示第i个属性是法线。
log2_max_frame_idx指示用于用信号发送语法变量frame_idx的比特数。
axis_coding_order指定X、Y和Z输出轴标签与具有axis=0..2的重构点云RecPic[pointidx][axis]中的三个位置分量之间的对应关系。
sps_bypass_stream_enabled_flag等于1指定可以在读取比特流时使用旁路编译模式。作为另一示例,sps_bypass_stream_enabled_flag等于0指定在读取比特流时不使用旁路编译模式。
sps_extension_flag指示sps_extension_data语法结构是否存在于SPS语法结构中。例如,sps_extension_present_flag等于1指示sps_extension_data语法结构存在于SPS语法结构中。sps_extension_present_flag等于0指示该语法结构不存在。
当sps_extension_flag字段的值为1时,根据实施例的SPS可以进一步包括sps_extension_data_flag字段。
sps_extension_data_flag可以具有任何值。
图37示出根据实施例的SPS(sequency_parameter_set())的语法结构的另一实施例。
图37的SPS可以进一步包括scalable_transmission_enable_flag字段。scalable_transmission_enable_flag指示比特流配置是否被建立为适合可扩展传输。例如,scalable_transmission_enable_flag等于1指示比特流配置被建立为适合于可扩展传输。即,可以指示几何树结构和/或属性树结构由多个切片组成,并且因此可以在比特流阶段选择信息,指示通过GPS、APS、TPS、切片报头、SEI消息等发送关于分段(分离)的切片的信息和/或与直接编译相关的信息(例如,可扩展层配置信息),以允许发送设备或接收设备执行片选择,并指示几何和/或属性被压缩以启用部分解码。也就是说,当scalable_transmission_enable_flag的值为1时,基于该值,接收设备或接收设备的转码器可以标识几何和/或属性可扩展传输可用。
根据实施例,图37的scalable_transmission_enable_flag字段可以被包括在图37的SPS中的任何位置中。
图37示出根据本公开的GPS的语法结构(geometry_parameter_set())的实施例。GPS可以包括关于对包括在一个或多个切片中的点云数据的几何信息进行编码的方法的信息。
根据实施例,GPS可以包括gps_geom_parameter_set_id字段、gps_seq_parameter_set_id字段、gps_box_present_flag字段、unique_geometry_points_flag字段、geometry_planar_mode_flag字段、geometry_angular_mode_flag字段、neighbour_context_restriction_flag字段、inferred_direct_coding_mode_enabled_flag字段、bitwise_occupancy_coding_flag字段、adjacent_child_contextualization_enabled_flag字段、log2_neighbour_avail_boundary字段、log2_intra_pred_max_node_size字段、log2_trisoup_node_size字段、geom_scaling_enabled_flag字段、gps_implicit_geom_partition_flag字段和gps_extension_flag字段。
gps_geom_parameter_set_id为GPS提供标识符以供其他语法元素参考。
gps_seq_parameter_set_id指定用于活动SPS的sps_seq_parameter_set_id的值。
gps_box_present_flag指示在引用当前GPS的几何切片报头中是否提供附加边界框信息。例如,等于1的gps_box_present_flag字段可以指示在引用当前GPS的几何切片报头中提供附加边界框信息。因此,当gps_box_present_flag字段的值为1时,GPS可以进一步包括gps_gsh_box_log2_scale_present_flag字段。
gps_gsh_box_log2_scale_present_flag指示gps_gsh_box_log2_scale是否在引用当前GPS的每个几何切片报头中被用信号发送。例如,等于1的gps_gsh_box_log2_scale_present_flag可以指示gps_gsh_box_log2_scale在引用当前GPS的每个几何切片报头中被用信号发送。作为另一示例,等于0的gps_gsh_box_log2_scale_present_flag可以指示gps_gsh_box_log2_scale不在引用当前GPS的每个几何切片报头中被用信号发送,并且针对所有切片的公共缩放在当前GPS的gps_gsh_box_log2_scale字段中被用信号发送。
当gps_gsh_box_log2_scale_present_flag字段的值为0时,GPS可以进一步包括gps_gsh_box_log2_scale字段。
gps_gsh_box_log2_scale指示引用当前GPS的所有切片的边界框原点的公共缩放因子。
unique_geometry_points_flag指示所有输出点是否在当前引用GPS的所有切片中的一个切片中具有唯一位置。例如,unique_geometry_points_flag等于1指示在引用当前GPS的所有切片中,所有输出点在切片内具有唯一位置。unique_geometry_points_flag字段等于0指示在引用当前GPS的所有切片中,两个或更多个输出点可以在切片内具有相同的位置。
geometry_planar_mode_flag字段指示平面编译模式是否被激活。例如,geometry_planar_mode_flag等于1指示平面编译模式是活动的。Geometry_planar_mode_flag等于0指示平面编译模式不是活动的。
当geometry_planar_mode_flag字段的值为1,即,真(TRUE)时,GPS可以进一步包括geom_planar_mode_th_idcm字段、geom_planar_mode_th[1]字段和geom_planar_mode_th[2]字段。
geom_planar_mode_th_idcm字段可以指定针对直接编译模式的激活阈值的值。
geom_planar_mode_th[i]指定,对于0…2范围内的i,指定沿着针对平面编译模式有效的第i个最可能方向的平面编译模式的激活阈值的值。
geometry_angular_mode_flag指示角度编译模式是否是活动的。例如,geometry_angular_mode_flag字段等于1可以指示角度编译模式是活动的。geometry_angular_mode_flag字段等于0可以指示角度编译模式不是活动的。
当geometry_angular_mode_flag字段的值为1,即,真时,GPS可以进一步包括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指定用于角度编译模式的激光的数量。
根据实施例的GPS包括迭代语句,其重复与number_lasers字段的值一样多的次数。在实施例中,i被初始化为0,并且每次执行迭代语句时被递增了1。重复迭代语句,直到i的值变成等于number_lasers字段的值。该迭代语句可以包括laser_angle[i]字段和laser_Correction[i]字段。
laser_angle[i]指定第i个激光器相对于由第0个和第1个内轴限定的水平面的仰角的正切。
laser_Correction[i]指定第i个激光位置相对于lidar_head_position[2]沿着第二内轴的校正。
planar_buffer_disabled等于1指示在平面模式中,在对平面模式标志和平面位置进行编译的过程中,使用缓冲区跟踪最近的节点不被使用。planar_buffer_disabled等于0指示使用缓冲区跟踪最近的节点被使用。
implicit_qtbt_angular_max_node_min_dim_log2_to_split_z指定节点大小的log2值,低于该值节点的水平分割优于垂直分割。
implicit_qtbt_angular_max_diff_to_split_z指定节点所允许的最大垂直与水平节点大小比率的log2值。
neighbour_context_restriction_flag等于0指示当前节点的几何节点占用是用从位于当前节点的父节点内部的邻近节点确定的上下文来编译的。neighbour_context_restriction_flag等于1指示当前节点的几何节点占用是用从位于当前节点的父节点内部或外部的邻近节点确定的上下文来编译的。
inferred_direct_coding_mode_enabled_flag指示direct_mode_flag是否存在于几何节点语法中。例如,inferred_direct_coding_mode_enabled_flag等于1指示direct_mode_flag存在于几何节点语法中。例如,inferred_direct_coding_mode_enabled_flag等于0指示direct_mode_flag不存在于几何节点语法中。
bitwise_ocupancy_coding_flag指示是否使用语法元素占用图的按比特上下文化来编码几何节点占用。例如,bitwise_ocupancy_coding_flag等于1指示几何节点占用是使用语法元素ocupancy_map的按比特上下文化来编码的。例如,bitwise_occupancy_coding_flag等于0指示使用目录编码的语法元素occypancy_byte对几何节点占用进行编码。
adjacent_child_contextualization_enabled_flag指示邻近八叉树节点的相邻子节点是否用于按比特占用上下文化。例如,adjacent_child_contextualization_enabled_flag等于1指示相邻八叉树节点的相邻子节点被用于按比特占用上下文化。例如,adjacent_child_contextualization_enabled_flag等于0指示邻近八叉树节点的子节点不被用于占用上下文化。
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指示在几何切片解码过程期间是否应用几何位置的缩放过程。例如,geom_scaling_enabled_flag等于1指定在几何切片解码过程期间应用几何位置的缩放过程。geom_scaling_enabled_flag等于0指定几何位置不需要缩放。
geom_base_qp指示几何位置量化参数的基值。
gps_implicit_geom_partition_flag指示是否对序列或切片启用隐式几何分区。例如,等于1指定为序列或切片启用隐式几何分区。gps_implicit_geom_partition_flag等于0指定对序列或切片禁用隐式几何分区。当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分区的最大数量。然后,变量K由gps_max_num_implicit_qtbt_before_ot如下初始化。
K=gps_max_num_implicit_qtbt_before_ot。
gps_min_size_implicit_qtbt指定隐式QT和BT分区的最小大小。然后,变量M由gps_min_size_implicit_qtbt如下初始化。
M=gps_min_size_implicit_qtbt
gps_extension_flag指示gps_extension_data语法结构是否存在于GPS语法结构中。例如,gps_extension_flag等于1指示gps_extension_data语法结构存在于GPS语法中。例如,gps_extension_flag等于0指示gps_extension_data语法结构不存在于GPS语法中。
当gps_extension_flag等于1时,根据实施例的GPS可以进一步包括gps_extension_data_flag字段。
gps_extension_data_flag可以具有任何值。它的存在和值不会影响解码器对简档的一致性。
根据实施例,GPS可以进一步包括geom_tree_type字段。例如,geom_tree_type等于0指示位置信息(或几何)是使用八叉树编译的。geom_tree_type等于1指示使用预测树对位置信息(或几何)进行编译。
根据实施例,当SPS中包括的scalable_transmission_enable_flag字段的值为1时,GPS可以包括geom_scalable_transmission_enable_flag字段。
在一个实施例中,geom_scalable_transmission_enable_flag等于1指示几何被压缩以启用可扩展传输。
例如,其可以指示几何由基于八叉树的层来组成或者考虑到可扩展传输来执行切片分区(参见图24等)。
例如,geom_scalable_transmission_enable_flag等于1可以指示使用基于八叉树的几何编译,并且禁用QTBT,或者通过按照BT(二叉树)-QT(四叉树)-OT(八叉树)的顺序执行编译来以八叉树的形式对几何进行编译。
当geom_scalable_transmission_enable_flag等于1时,GPS可以进一步包括num_scalable_layer字段。
num_scalable_layers可以指示支持可扩展传输的层的数量。根据实施例的层可以意指LOD。
根据实施例,GPS包括重复与num_scalable_layers字段的值一样多次的迭代语句。在实施例中,i被初始化为0,并且每次执行迭代语句时被递增了1。重复迭代语句,直到i的值等于num_scalable_layers字段的值。迭代语句可以包括scalable_layer_id[i]字段和num_slices_in_scalable_layer[i]字段。
scalable_layer_id[i]字段可以指定第i可扩展层的标识符。即,它指定构成可扩展传输的可扩展层的指示符。根据实施例,当可扩展层由多个切片组成时,可以通过参数集中的scalable_layer_id字段来发送公共信息,并且可以根据切片通过数据单元报头来发送其他个体信息。
根据实施例,当geom_tree_type等于0时,即,当使用八叉树对位置信息(即,几何)进行编译时,GPS可以进一步包括num_octree_layers_in_scalable_layer[i]字段、tree_depth_start[i]字段、Tree_Depth_end[i]字段、node_size[i]字段和num_nodes[i]字段。
num_octree_layers_in_scalable_layer[i]可以指示构成可扩展传输的第i个可扩展层中包括的或对应于构成可扩展传输的第i个可扩展层的八叉树层的数量。当可扩展层不是基于八叉树配置时,num_octree_layers_in_scalable_layer[i]可以指代相应的层。
tree_depth_start[i]可以指示构成可扩展传输的第i可扩展层中包括的或与构成可扩展传输的第i可扩展层相对应的八叉树层当中的起始八叉树深度(相对最接近根)。
tree_depth_end[i]可以指示构成可扩展传输的第i个可扩展层中包括的或对应于构成可扩展传输的第i个可扩展层的八叉树层当中的最后八叉树深度(相对最接近叶)。
node_size[i]可以指示当通过可扩展传输重构第i可扩展层时输出点云数据的节点大小。例如,node_size[i]等于1可以指示叶节点。尽管实施例假定XYZ节点大小是恒定的,但是可以通过用信号发送XYZ方向或诸如(r(半径)、phi、theta)的变换坐标中的每个方向上的大小来指示任意节点大小。
num_slices_in_scalable_layer[i]可以指示属于第i可扩展层的切片的数量。
根据实施例,GPS可以包括重复与num_slices_in_scalable_layer[i]字段的值一样多的迭代语句。在实施例中,j被初始化为0,并且每次执行迭代语句时被递增了1。重复迭代语句,直到j的值变成等于num_slices_in_scalable_layer[i]字段的值。该迭代语句可以包括sub_group_id[i][j]字段、num_nodes_in_subgroup[i][j]字段、bitstream_type[i][j]字段和slice_id[i][j]字段。
sub_group_id[i][j]字段指定包括在属于第i可扩展层的第j切片中的子组的标识符。也就是说,sub_group_id[i][j]字段指定由layer_group_id字段指示的层组中的子组的指示符。subgroup_id的范围是0到num_subgroups_minus1[layer_group_id],其中subgroup_id指示同一layer_group_id中的切片的顺序。
num_nodes_in_subgroup[i][j]指示与属于第i可扩展层的第j切片相关的节点的数量。即,num_nodes_in_subgroup[i][j]指示几何数据单元中包括的节点的数量。根据实施例,几何数据单元中的所有num_nodes的总和指定几何数据单元中的节点的总数。
bitstream_type[i][j]指示属于第i可扩展层的第j切片中包括的比特流的类型。根据实施例,bitstream_type可以指示切片中包括的比特流的类型。bitstream_type等于0可以指示比特流是算术熵编译(AEC)比特流。bitstream_type等于1可以指示比特流是直接编译(DC)比特流。bitstream_type等于2可以指示AEC比特流和DC比特流一起存在于切片中。
slice_id[i][j]指定用于标识属于第i可扩展层的第j切片的标识符。即,slice_id[i][j]可以指定用于区分切片或数据单元的指示符,并且可以递送用于属于切片层的数据单元(或称为切片)的指示符。
根据实施例,关于分段的(分离的)切片的信息和/或与图38的直接编译相关的信息可以被包括在图37的GPS中的任何位置中。
图38示出根据实施例的几何数据单元报头(或称为几何切片报头)的语法结构。
根据实施例的几何数据单元报头可以包括slice_id字段和bitstream_type字段。
slice_id指定用于标识数据单元(即,切片)的标识符。也就是说,slice_id指定用于区分切片或数据单元的指示符,并且可以递送用于属于切片层的数据单元(或称为切片)的指示符。
bitstream_type指示切片中包括的比特流的类型。根据实施例,bitstream_type可以指示切片中包括的比特流的类型。bitstream_type等于0可以指示比特流是算术熵编译(AEC)比特流。bitstream_type等于1可以指示比特流是直接编译(DC)比特流。bitstream_type等于2可以指示AEC比特流和DC比特流一起存在于切片中。
根据实施例,当geom_scalable_transmission_enable_flag字段的值为1时,几何数据单元报头可以进一步包括scalable_layer_id字段、num_tree_depth_in_data_unit字段和bitstream_type字段。
scalable_layer_id可以指定与数据单元(即,切片)相关的可扩展层的标识符。即,它指定用于构成可扩展传输的可扩展层的指示符。根据实施例,当可扩展层由多个切片组成时,可以通过参数集中的scalable_layer_id字段来发送公共信息,并且可以根据切片通过图43的数据单元报头来发送其他个别信息。
当在与scalable_layer_id相对应的可扩展层中存在多个子组时,几何数据单元报头可以进一步包括sub_group_id字段。
sub_group_id指定属于由scalable_layer_id指定的可扩展层的子组的标识符。即,sub_group_id指定由layer_group_id指示的层组中的子组的指示符。subgroup_id的范围是0到num_subgroups_minus1[layer_group_id],其中subgroup_id指示同一layer_group_id中的切片的顺序。
num_tree_depth_in_data_unit可以指示包括属于数据单元(即,切片)的节点的树深度的数量。
根据实施例,几何数据单元报头包括重复与num_tree_depth_in_data_unit的值一样多的迭代语句。在一个实施例中,i被初始化为0,并且每次执行迭代语句时被递增了1。重复迭代语句,直到i的值变成等于num_tree_depth_in_data_unit的值。此迭代语句可以包括tree_depth[i]字段、num_nodes[i]字段和num_nodes_in_subgroup[i][sub_group_id]字段。
Tree_Depth[i]可以指示第i个树深度。也就是说,tree_depth可以指示树深度。
num_nodes[i]可以指示第i树深度中包括的节点的数量。也就是说,num_nodes[i]可以指示属于数据单元的节点当中属于第i树深度(tree_depth)的节点的数量。
num_nodes_in_subgroup[i][sub_group_id]指示与数据单元(即,切片)相关的节点的数量。即,num_nodes_in_subgroup[i]指示包括在由sub_group_id指示的子组中的节点的数量。根据实施例,几何数据单元中的所有num_nodes的总和指定几何数据单元中的节点的总数。
num_points指定属性数据单元中的点的数量。属性数据单元中所有num_points的总和指定属性数据单元中的点的总数。
根据实施例,当bitstream_type等于2时,即,AEC比特流和DC比特流一起存在于切片中时,几何数据单元报头可以进一步包括dc_bitstream_offset字段、dc_bitstream_length字段和dc_backward_enabled_flag字段。
根据实施例,dc_bitstream_offset和dc_bitstream_length可以指示切片中DC比特流的开始/结束位置以及DC比特流的总长度。也就是说,当bitstream_type等于2时,AEC比特流和DC比特流可以一起存在于一个切片中。在这种情况下,可以指示DC比特流的开始/结束位置以及DC比特流的总长度。
dc_backward_enabled_flag等于1可以指示DC比特流以相反的顺序被包括在包括AEC比特流和DC比特流两者的切片中。在这种情况下,切片的比特流的结尾可以是DC比特流的开始,并且dc_bitstream_offset可以是DC比特流的结尾。dc_backward_enabled_flag等于0指示在包括AEC比特流和DC比特流的切片中以与AEC比特流相同的方向包括DC比特流。在这种情况下,可以看出DC比特流从dc_bitstream_offset开始并且DC比特流在整个比特流的结尾处结束(即,dc_bitstream_offset+dc_bitstream_length)。
根据实施例,几何数据单元报头可以进一步包括ref_slice_id字段。
ref_slice_id字段可以用于指示必须领先于当前切片解码的切片(参见例如图19-图21的报头)。
根据实施例,关于分段的(分离的)切片的信息和/或与图38的直接编译相关的信息可以被包括在几何切片报头(即,几何数据单元报头)中的任何位置中。
图39图示根据实施例的几何编译层结构。
根据实施例的点云数据发送方法/设备可以对应于图1的发送设备10000、图1的点云视频编码器10002、图1的发射器10003、图2的获取20000/编码20001/发送20002、图4的编码器、图12的发送设备、图14的设备、图15和图47的编码器、图49的子比特流分类器、图55和图56的编码器、图62的发送方法等可以通过对如图16至19、26至28、34、35、36和39所图示的分层结构中的点云进行编码来生成基于层的比特流。
根据实施例的点云数据接收方法/设备,可以对应于图1的接收设备10004、图1的接收器10005、图1的点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和图11的解码器、图13的接收设备、图14的设备、图15和图48的解码器、图49的子比特流分类器、图55和图56的解码器、图57至图60的解码器/渲染器、图63的接收方法等等,可以接收基于层的点云数据和比特流并且选择性地解码数据,如图16至19、26至28、34、35、36和39中所图示。
根据实施例的比特流和点云数据可以根据基于编译层的切片分段来生成。通过在编码过程的编译层的结尾处对比特流进行切片,根据实施例的方法/设备可以选择相关的切片,从而支持可扩展传输或部分解码。
图39-(a)示出具有8层的几何编译层结构,其中每个切片对应于层组。层组1 3900包括编译层0至4。层组2 3901包括编译层5。层组33902是用于编译层6和7的组。当几何(或属性)具有有着八个级别(深度)的树结构时,可以通过对与一个或多个级别(深度)相对应的数据进行分组来分层地配置比特流。每个组可以包括在一个切片中。
图39-(b)示出当从3组当中选择2个切片时的解码的输出。当解码器选择组1和组2时,可以选择树的级别(深度)0至5的部分层。也就是说,可以在无需接入整个比特流的情况下通过使用层组结构的切片来支持编译层的部分解码。
对于根据实施例的部分解码过程,编码器可以生成基于层组结构生成的三个切片。解码器可以通过从三个切片当中选择两个切片来执行部分解码。
根据实施例的比特流(图21)可以包括基于层的组/切片3903。每个切片可以包括报头,该报头包括与切片中包括的点云数据(几何数据和/或属性数据)相关的信令信息。根据实施例的接收方法/设备可以基于包括在切片中的报头来选择部分切片并解码包括在切片的有效负载中的点云数据。
除了层组结构之外,根据实施例的方法/设备可以进一步考虑空间随机接入的使用情况将层组划分为数个子组(subgroup)。子组是互斥的,并且子组的集合可以与层组相同。因为每个子组的点在空间域中形成边界,所以子组可以由子组边界框信息来表示。基于空间信息,层组和子组结构可以支持空间接入。通过有效地将兴趣区域(ROI)与关于每个切片的边界框信息进行比较,可以支持帧或图块内的空间随机接入。
根据实施例的方法/设备可以将层组1至3 3900、3901和3902划分为一个或多个子组。
尽管图39示出几何编译层结构作为示例,但是能够以类似的方式生成属性编译层结构。
图40图示根据实施例的层组结构和子组结构。
图39所示的基于层结构的点云数据和比特流可以表示如图40所示的边界框。
示出子组结构和对应于子组的边界框。层组2被划分为两个子组(组2-1和组2-2),层组3被划分为四个子组(组3-1、组3-2、组3-3和组3-4)。层组2的子组和层组3的子组包括在不同的切片中。考虑到具有边界框信息的层组和子组的切片,1)可以将每个切片的边界框与ROI进行比较,并且2)可以选择其子组边界框与ROI相关的切片并且可以执行空间接入。然后,3)选择所选择的切片。当在区域3-3中考虑ROI时,选择切片1、3和6作为层组1以及子组2-2和3-3的子组边界框以覆盖ROI区域。为了有效的空间接入,假定同一层组的子组之间不存在依赖性。在直播流或低时延用例中,当接收到每个切片片段时,可以执行选择和解码操作以提高时间效率。
根据实施例的方法/设备可以在几何和/或属性编码期间将数据表示为层(其可以被称为深度或级别)作为层树4000。与层(深度/级别)相对应的点云数据可以被分组为层组(或组)4001,如图39中所示。每个层组可以被进一步划分(分段)为子组4002。可以通过将每个子组配置为切片来生成比特流。根据实施例的接收设备可以接收比特流,选择特定切片,对切片中包括的子组进行解码,并且对与子组相对应的边界框进行解码。例如,当选择切片1时,可以对与组1相对应的边界框4003进行解码。组1可以是与最大区域相对应的数据。当用户想要另外查看用于组1的详细区域时,根据实施例的方法/设备可以选择切片3和/或切片6,并且可以部分地且分层次地接入包括在组1的区域中的详细区域的组2-2和/或组3-3的边界框(点云数据)。
图41图示根据实施例的基于层组的点云数据的输出。
图40所图示的基于层组的点云数据可以部分地输出,如图41所示。
根据实施例的方法/设备可以基于用于可扩展传输的一组编译层来显示点云数据。
包含点云数据的每个序列的编译的数据可以被包括在与叶、叶-1和叶-2以及其余编译层的编译层的四个层组相对应的四个切片中。以最大树深度为10的queen_200.ply的测试内容为例进行描述。第一层组可以包括深度0至6,第二层组可以包括深度7,第三层组可以包括深度8,并且最后层组可以包括深度9。
也就是说,叶节点可以对应于深度9和层组4,叶-1节点可以对应于深度8和层组3,并且叶-2节点可以对应于深度7和层组2。此外,深度0至6可以对应于层组1。
当跳过层组时输出的点云可以如图41所示分布。随着点数的减小,当跳过层组的数量增加时,比特流大小和解码时间大大减小。因为全树深度是在编码后由转码器选择的,所以编码时间不会像解码时间那样变化那么多。实施例可以用于支持使用单个比特流来支持具有多个解码功能的接收器的使用情况。
图41-(a)图示具有10个深度的所有点云数据的表示,其能够看到针对对象的点的位置和属性都被表示。
图41-(b)图示在跳过深度0至9当中与作为叶节点的深度9的点相对应的层组时与深度0至8相对应的点的表示。
图41-(c)图示在跳过叶节点和叶-1节点时对应于深度0至7的点的表示。
图41-(d)图示在跳过叶节点、叶-1节点和叶-2节点时对应于深度0至6的点的表示。
图42图示根据实施例的基于层的点云表示的结果的比较。
在如图41所示跳过层组并执行部分解码的情况下,可以获得如图41中所示的结果。
在图41中示出根据层组的切片的使用的编译开销。层组参数可以用于标识该方法的效果。如图41所示,由于报头的添加而造成的损失微不足道。
随着跳过层组的数量增加,所表示的树深度的数量减小,并且输出(所表示的)点的数量也减小。比特流大小也被减少。如果基于根据全深度编码和切片选择所花费的时间来考虑,编码时间不会有显着改变,但可能会有细微的变化。可以有效减少解码时间。
在仅解码用户期望的特定区域时,解码整个区域可能是低效的。因此,可以通过基于具有根据实施例的结构的比特流来选择切片并对其进行解码来减少解码所花费的时间。
图43图示根据实施例的部分解码的示例。
对于根据图40的部分解码,根据实施例的方法/设备可以基于用于空间随机接入的子组边界框来显示点云数据,如图43所示。
例如,子组可以应用在层组结构中,其中层组1至4均分别具有maxDepth-3层、1层、1层和1层。对于最后三个层组,边界框可以在x轴、y轴和z轴上被分区成两部分以创建子组。结果,层组1、2、3和4中的每个中的子组的数量可以分别是1、2、4和8。
图43-(a)示出假定ROI为手的点云数据。
图43-(b)示出根据边界框和ROI的解码输出的示例。
基于4个层组和子组结构,可以从ROI中选择最后层组的8个区域之一。在图43-(a)的示例中,点云数据(queen_200.ply)的测试内容的ROI区域是右手中的平板电脑。切片选择器(或接收器)将每个切片的边界框与ROI进行比较,并选择具有ROI区域的切片。所选择的切片的解码结果如图43-(b)所示。随着为不同子组结构选择的切片数量从15个减少到4个,输出点的数量减少到输入点的1/3。因此,可以减少比特流大小和解码时间,并且不同的子组结构可以产生不同的比特流大小。
换句话说,为了部分解码如图40中所示的所提出的结构中的ROI区域和边界框,代替对每个深度的所有层的点云数据进行解码,可以仅选择相关层组和层组的子组并对其进行解码。
图44图示根据实施例的根据层组结构和子组结构的解码效果的示例。
图44示出与具有针对有损操作的3.9%和针对无损操作的0.3%的平均损耗的锚点相比的编译效率。由于位于层组中间的子组边界的不连续性而发生编译丢失,这可能是空间随机接入的权衡。
图44-(a)所示的数据可以是作为根据实施例的方法/设备的输入给出的点云数据。
图44-(b)示出从根据实施例的方法/设备输出的点云数据的示例。
根据实施例的方法/设备可以将点云数据配置为层组0至4。层组0可以包括与深度0相对应的一个层,并且可以具有8个点。层组1可以包括与深度1至4相对应的四个层。层组2可以包括与深度5和深度6相对应的两个层。层组2中包括的层可以进一步被划分为子组。例如,深度为5的层可以被划分为4个子组。总共12711个点可以通过子组1(具有2871点)、子组2(具有2901点)、子组3(具有3606点)和子组4(具有3333点)来表示为子组。层组2中包括的每个层可以包括四个子组。层组3可以包括对应于深度8和9的两层,并且每层可以被分为8个子组。
图44-(b)图示根据实施例的根据层组和ROI结构处理点云数据的效果。随着处理点的数量被减少,比特流大小可以减小,从而增加编码和解码效率。
图45图示根据实施例的几何数据单元报头。
图21中的比特流的切片可以被称为数据单元。切片和/或数据单元可以意指编码/解码单元。图45示出呈现切片中包括的几何相关信息的切片报头。图45示出数据单元中包括的几何相关信息。
layer_group_enabled_flag等于1指定帧或图块的几何比特流包含匹配到编译层组或其子组的多个切片中。Layer_group_enabled_flag等于0指定帧或图块的几何比特流包含在单个切片中。
num_layer_groups_minus1加1指定层组的数量,其中层组表示作为几何编译树结构的一部分的连续树层的组。num_layer_groups_minus1应在0至编译树层数的范围内。
layer_group_id指定帧或图块的层组的指示符。layer_group_id可以在0至num_layer_groups_minus1的范围内。
dependent_slice_flag等于1指定切片依赖于由ref_slice_id和ref_layer_group_id指示的切片。dependent_slice_flag等于0指定该切片不依赖于其他切片并且可以是相关切片的解码的开始。
ref_slice_id指定参考切片的指示符。ref_slice_id可以在用于当前帧或当前图块的slice_id的范围内。
ref_layer_group_id指定引用层组的指示符。ref_layer_group_id可以在当前帧或当前图块的0至num_layer_group_minus1的范围内。
num_layers_minus1加1指定第i层组中包含的编译层的数量。可以通过将针对i等于0的所有(num_layers_minus1[i]+1)添加到num_layer_groups_minus1来导出层组的总数。
layer_group_stream_len_bits加1是语法元素layer_group_stream_len的以比特为单位的长度。
layer_group_stream_len指定当前layer_group_stream的长度。
subgroup_enabled_flag等于1指定当前层组由可以包含在多个切片中的子组组成。subgroup_enabled_flag等于0指定当前层组包含在单个切片中。子组是互斥的,并且子组的总和与层组相同。
num_subgroups_minus1加1指定由layer_group_id指示的层组中的子组的数量。
subgroup_id指定由layer_group_id指示的层组的子组的指示符。subgroup_id可以在0至num_subgroups_minus1[layer_group_id]的范围内。这里,subgroup_id可以表示同一layer_group_id中的切片的顺序。当不存在时,subgroup_id被推断为0。
ref_subgroup_id指定由ref_layer_group_id指示的层组的引用子组的指示符。ref_subgroup_id可以在0到当前层组的num_subgroup_id_minus1的范围内。当不存在时,subgroup_id被推断为0。
num_points_bits_minus1加1是语法元素num_points的以比特为单位的长度。
num_points指定通过解码当前切片的输出点的数量。
subgroup_bbox_origin_bits_minus1加1是语法元素subgroup_bbox_origin的以比特为单位的长度。
subgroup_bbox_origin指定由layer_group_id指示的层组的subgroup_id指示的子组的子组边界框的原点。
subgroup_bbox_size_bits_minus1加1是语法元素subgroup_bbox_size的以比特为单位的长度。
subgroup_bbox_size指定由layer_group_id指示的层组的subgroup_id指示的子组的子组边界框的原点。
根据实施例的几何数据单元报头可以进一步包括下述。
gdu_geometry_parameter_set_id指示活动GPS gps_geom_parameter_set_id的值。
在遵循本文档的此版本之后的比特流中,gdu_reserved_zero_3bits可以等于0。gdu_reserved_zero_3bits的其他值保留以供将来在ISO/IEC中使用。解码器可能会忽略gdu_reserved_zero_3bits的值。
slice_id标识要在其他语法元素中引用的切片。
slice_tag可以用于标识具有特定slice_tag值的一个或多个切片。如果存在图块库存数据单元,则slice_tag是图块ID。否则,当图块库存数据单元不存在时,通过外部手段指定slice_tag的解释。
frame_ctr_lsb指定帧号计数器的frame_ctr_lsb_bits的最低有效位。具有不同frame_ctr_lsb的值的连续切片形成不同输出点云帧的一部分。具有相同frame_ctr_lsb的值而没有中间帧边界标记数据单元的连续切片形成同一编译的点云帧的一部分。
slice_entropy_continuation等于1指示熵解析状态恢复过程(XREF)应该被应用于切片中的GDU和所有的ADU。slice_entropy_continuation等于0指定切片的GDU和ADU的熵解析独立于其他切片。当不存在时,slice_entropy_continuation被推断为0。当GDU是编译的点云帧中的第一个DU时,slice_entropy_continuation等于0是比特流一致性的要求。
prev_slice_id与按比特流顺序的前一个GDU的slice_id的值相同。解码器可以忽略其中存在prev_slice_id并且不等于前一切片的slice_id的值的切片。
slice_geom_origin_log2_scale指示切片原点的缩放因子。当不存在时,slice_geom_origin_log2_scale被推断为gps_geom_origin_log2_scale。
slice_geom_origin_bits_minus1加1指定以比特为单位的每个语法元素slice_geom_origin_xyz[k]的长度。
slice_geom_origin_xyz[k]指示切片原点的量化的(x,y,z)坐标的第k个分量。
SliceOriginStv[k]:当k=0、2时,SliceOriginStv数组如下指定按编译的几何轴的顺序替换的slice_geom_origin_xyz的缩放值。
SliceOriginStv[XyzToStv[k]]=slice_geom_origin_xyz[k]<<slice_geom_origin_log2_scale
slice_angular_origin_bits_minus1加1指定以比特为单位的每个语法元素slice_angular_origin_xyz[k]的长度。
slice_angular_origin_xyz[k]指示用于角度编译模式的处理的原点的(x,y,z)坐标的第k个分量。当不存在时,slice_angular_origin_xyz[k]被推断为0。
根据实施例的方法/设备可以产生ROI作为用于切片片段选择的信令信息。例如,可以基于subgroup_bbox_origin_bits_minus1、subgroup_bbox_origin[i]、subgroup_bbox_size_bits_minus1、subgroup_bbox_size[i]、num_layers_minus1、num_points等来用信号发送区域分辨率。
图46示出根据实施例的几何数据单元页脚。
图46的几何数据单元页脚被包括在图21的比特流中。
几何数据单元页脚包含下述信息。
occtree_lvl_point_cnt_minus1[lvl]加1指示对于lvl=0...,在具有occtree_depth_minus1的DU中从根到第lvl个几何树级别的解码点的数量。occtree_lvl_point_cnt_minus1[0]可以被推断为0。occtree_lvl_point_cnt_minus1[occtree_depth_minus1]被推断为slice_num_points_minus1。
slice_num_points_minus1加1指示DU中的编译的点的数量。slice_num_points_minus1加1等于DU的解码点的数量是比特流一致性的要求。解码器不应依赖比特流一致性来避免缓冲区溢出。
num_skipped_layer_groups指定当前帧或图块中的跳过层组的数量:num_encoded_layer_group=num_delivered_layer_group+num_skipped_la yer_group。
num_skipped_layers指定当前帧或图块中跳过的几何编译层的数量:num_encoded_layers=num_delivered_layers+num_skipped_layers。
作为提出用于全编译层的压缩比特流的方法,当数据被划分为切片并发送时,可以支持具有不同能力的接收器。当根据ROI或接收器能力选择性地对切片进行解码时,接收器可以直接选择切片或者转码器可以执行选择。当转码器执行选择时,不存在关于全解码情况的信息(例如,全编译层深度、层组总数、子组总数等)。在这种情况下,接收器在解码过程中可能需要该信息。在这种情况下,可以直接递送信息,或者可以递送num_skipped_layer_groups和num_skipped_layers作为可以从其推断信息的信息。
图47示出根据实施例的点云数据发送设备的结构。
根据图47实施例的点云数据发送方法/设备对应于图1的发送设备10000、图1的点云视频编码器10002、图1的发射器10003、图2的获取20000/编码20001/发送20002、图4的编码器、图12的发送设备、图14的设备、图15和图47的编码器、图49的子比特流分类器、图55和图56的编码器、图62的发送方法等等。图47中的每个部件可以对应于硬件、软件、处理器和/或其组合。
下面描述根据实施例的编码器和发射器的操作。
当点云数据被输入到发送设备时,几何编码器对位置信息(几何数据(例如,XYZ坐标、phi-theta坐标等))进行编码,并且属性编码器对属性数据(例如,颜色、反射率、强度、灰度、不透明度、介质、材质、光泽度等)进行编码。
经压缩的(经编码的)数据被划分为用于传输的单元。由子比特流生成器60040可以将数据划分为适合于根据分层结构信息选择比特流单元中的必要信息的单元,并且然后可以将数据打包。
根据实施例,八叉树编译的几何比特流被输入到八叉树编译的几何比特流分段部分,并且直接编译的几何比特流被输入到直接编译的几何比特流分段部分。
八叉树编译的几何比特流分段部分基于关于分段的(分离的)切片的信息和/或与由层组结构生成器生成的直接编译相关的信息将八叉树编译的几何比特流划分成一个或多个组和/或子组。对于详情,请参考上面的描述。将跳过其详细描述。
另外,直接编译的几何比特流分段部分基于关于分段的(分离的)切片的信息和/或由层组结构生成器生成的与直接编译相关的信息将直接编译的几何比特流划分为一个或多个组和/或子组。对于详情,请参考上面给出的描述。将跳过其详细描述。
八叉树编译的几何比特流分段部分的输出和直接编译的几何比特流分段部分的输出被输入到几何比特流结合部分。
几何比特流结合部分基于关于分段的(分离的)切片的信息和/或由层组结构生成器生成的与直接编译相关的信息来执行几何比特流结合过程,并且基于逐层组将子比特流输出到分段的(分离的)切片生成器。例如,几何比特流结合部分执行在切片内级联AEC比特流和DC比特流的过程。最终切片由几何比特流结合部分创建。
编译的属性比特流分段部分基于关于分段的(分离的)切片的信息和/或由层组结构生成器生成的与直接编译相关的信息将编译的属性比特流划分为一个或多个组和/或子组。属性信息的一个或多个组和/或子组可以与用于几何信息的一个或多个组和/或子组链接,或者可以独立地生成。对于详情,请参考上面的描述。将跳过其详细描述。
分段切片生成器基于关于分段(分离)切片的信息和/或由元数据生成器生成的直接编译相关信息,根据从几何比特流结合部分和/或编译的属性比特流分段部分接收到的输入,将一个切片分段成多个切片。每个子比特流通过每个切片片段发送。在这种情况下,AEC比特流和DC比特流可以通过一个切片来发送或者可以通过不同的切片来发送。
复用器针对每一层对分段的切片生成器60045的输出和元数据生成器60050的输出进行复用,并将复用的输出提供给发射器60070。对于关于分段(分离)的切片的信息和/或由层组结构生成器60030和/或元数据生成器生成的与直接编码相关的信息,请参考上面给出的描述。
也就是说,如本公开中所提出的,当不同类型的比特流(例如,AEC比特流和DC比特流)被包括在一个切片中时,由几何编码器生成的比特流(例如,AEC比特流和DC比特流)可以根据用途分离。然后,根据关于分段的(分离的)切片的信息和/或由层组结构生成器或元数据生成器生成的与直接编译相关的信息(即,层组信息),相应的切片或相邻信息可以被包括在一个切片中。根据实施例,关于分段的(分离的)切片的信息和/或与直接编译相关的信息(例如,诸如比特流类型、bitstream_offset、bitstream_length和比特流方向的信息,还根据每个切片id的层-组信息、包括在层-组中的层信息、节点数目、层深度信息,以及包括在子组中的节点的数目)可以从元数据生成器发送。关于分段(分离)的切片的信息和/或与直接编译相关的信息(例如,诸如比特流类型、bitstream_offset、bitstream_length和比特流方向的信息,还有根据每个切片id的层-组信息、包括在层-组中的层信息、节点数目、层深度信息,以及包括在子组中的节点的数目)可以在SPS、APS、GPS、几何数据单元报头、属性数据单元报头或SEI消息中用信号发送。对于关于分段的(分离的)切片的信息和/或与直接编译相关的信息的详情(例如,诸如比特流类型、bitstream_offset、bitstream_length和比特流方向的信息,还有根据每个切片id的层-组信息、包括在层-组中的层信息、节点数目、层深度信息,以及包括在子组中的节点的数目)参考上面给出的描述。将跳过其详细描述。
图47的子比特流生成器可以生成具有根据图39至图44的层组相关结构的点云数据,并且可以生成表示根据图45和46的层组相关结构的信令信息。
图48示出根据实施例的点云数据接收设备。
图48的接收设备的每个组件的操作可以遵循图47的发送设备的相应组件的操作,或其逆过程。
根据图48的实施例的点云数据接收方法/设备可以对应于图1的接收设备10004、图1的接收器10005、图1的点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和图11的解码器、图13的接收设备、图14的设备、图15和图48的解码器、图49的子比特流分类器、图55和图56的解码器、图57至图60的解码器/渲染器、图63的接收方法等等。每个组件可以对应于硬件、软件、处理器和/或其组合。
图48是用于接收/解码PCC数据的详细功能配置的实施例。当输入比特流时,接收器可以单独处理用于位置信息的比特流和用于属性信息的比特流。在这种情况下,子比特流分类器可以基于比特流报头中的信息将比特流发送到适当的解码器。可替选地,在此过程中,接收器可以选择必要的层。几何解码器和属性解码器可以根据数据的特性分别从分类的比特流重构几何数据和属性数据,并且然后可以将其转换成用于由渲染器最终输出的格式。
当包括不同类型的几何比特流时,每个比特流可以通过如下所述的比特流分离器单独地解码。在此实施例中,几何解码器可以分别对基于八叉树编译的算术熵编译的比特流和直接编译比特流进行处理。在这种情况下,可以基于关于比特流类型、bitstream_offset、bitstream_length和比特流方向的信息来分离比特流。可以包括为分离的比特流级联相同类型的比特流片段的操作。这可以被包括作为用于将由层组分隔的比特流处理为连续比特流的过程。可以基于层组信息按顺序对比特流进行排序。在无需级联操作的情况下可以并行处理的比特流可以由解码器处理。
接收器可以接收比特流。
解复用器可以输出包括在比特流中的点云数据和元数据(信令信息)。
子比特流分类器可以选择切片,分割比特流,并且级联八叉树编译的几何比特流和直接编译的几何比特流的比特流片段。
元数据解析器可以提供关于切片和/或层组的信息。
切片选择器可以选择包括在比特流中的一个或多个切片。
比特流分离器可以分割几何比特流。几何数据可以基于八叉树来编译和/或可以直接编译。
比特流片段级联器可以根据编码类型来级联八叉树编译的几何比特流和直接编译的几何比特流。对于基于层组的几何比特流,包括与解码区域相关的多个组/子组的比特流片段可以被级联。
几何解码器可以解码几何比特流以输出几何数据。
属性解码器可对包括在选择的切片中的属性数据进行解码。
渲染器可以基于几何数据和/或属性数据来渲染点云数据。
图49是根据实施例的点云数据接收设备的流程图。
即,图49更详细地图示图48所示的子比特流分类器的操作。换句话说,假定从发射器可扩展地发送几何数据和属性数据。
接收设备在逐个切片的基础上接收数据,并且元数据解析器递送诸如SPS、GPS、APS和TPS的参数集信息(例如,关于分段的(分离的)切片的信息和/或与直接编译相关信息)。基于所递送的信息,可以确定可扩展性。当数据是可扩展的时,用于可扩展传输的切片结构被标识,如图49所示(65011)。首先,可以根据在GPS中承载的诸如num_scalable_layers、scalable_layer_id、tree_depth_start、tree_depth_end、node_size、num_nodes、num_slices_in_scalable_layer和slice_id的信息来标识几何切片结构。
当aligned_slice_struct_enabled_flag等于1(65017)时,也能够以相同的方式来标识属性切片结构(例如,基于八叉树对几何结构进行编码,基于可扩展LoD或可扩展RAHT对属性进行编码,并且通过相同切片分区生成的属性切片对于相同八叉树层来说具有相同数量的节点。
当结构相同时,几何切片id的范围根据目标可扩展层被确定,并且属性切片id的范围由slice_id_offset确定。根据确定的范围(65012至65014、65018和65019)选择几何/属性切片。
当aligned_slice_sturcutre_enabled_flag=0时,可以基于诸如通过APS递送的num_scalable_layers、scalable_layer_idtree_depth_start、tree_depth_end、node_size、num_nodes、num_slices_in_scalable_layer、以及slice_id的信息来单独地标识属性切片结构,并且必要的属性切片id的范围可以根据可扩展操作被限制。基于该范围,可以通过重构之前的每个切片id(65019、65020和65021)来选择需要的切片。通过上述过程选择的几何/属性切片作为输入被发送到解码器。
上面已经基于接收器的可扩展传输或可扩展选择描述了根据切片结构的解码过程。然而,当scalable_transmission_enabled_flag等于0时,可以跳过测距几何/属性切片id的操作并且可以选择整个切片,使得它们甚至可以在非可扩展操作中使用。即使在这种情况下,也可以通过经由诸如SPS、GPS、APS或TPS的参数集递送的切片结构信息(例如,关于分段的(分离的)切片的信息和/或与直接编译相关的信息)来使用关于先前的切片(例如,属于更高层的切片或通过ref_slice_id指定的切片)的信息。
如上所述,可以基于可扩展传输来接收比特流,并且可以基于包括在比特流中的参数信息来标识可扩展比特流结构。可以估计几何可扩展层。
可以基于geom_slice_id来标识几何切片。
可以基于slice_id来选择几何切片。
解码器可以对所选择的几何切片进行解码。
当包括在比特流中的aligned_slice_struct_enabled_flag等于1时,可以检查与几何切片相对应的属性切片ID。可以基于slice_id_offset来接入属性切片。
可以基于slice_id来选择属性切片。
解码器可以对所选择的属性切片进行解码。
当aligned_slice_struct_enabled_flag不等于1时,可以估计属性可扩展层。可以基于属性切片id来标识属性切片。
可以基于slice id来选择属性切片。
在本公开中,当存在不同类型的几何比特流(例如,AEC比特流和DC比特流)时,可以在切片选择操作中选择包括在用于不同比特流的范围内的所有切片。当不同类型的比特流被包括在一个切片中时,可以基于偏移信息和长度信息来分离比特流,并且分离的比特流可以经受级联操作,在该级联操作中,将多个比特流级联为一个比特流以用于根据层组顺序进行解码。此操作可以被包括作为将按层组分离的比特流处理成连续比特流的过程,并且可以基于层组信息按顺序对比特流进行排序。可以并行处理的比特流可以在解码器中处理而没有级联操作。
根据实施例的发送设备具有下述效果。
对于点云数据,发送设备可以根据特定准则来划分并发送压缩的数据。当使用根据实施例的分层的编译时,可以根据层来划分和发送压缩的数据。因此,可以增加发送侧上的存储和发送效率。
参考图15和图16,可以压缩并提供点云数据的几何形状和属性。在基于PCC的服务中,可以根据接收器性能或发送环境来调整压缩率或数据量。
在点云数据被配置在一个切片中的情况下,当接收器性能或发送环境改变时,1)可以转码并单独存储适合每个环境的比特流,并且可以在发送时选择,或者2)在发送之前可能需要转码操作。在这种情况下,如果要支持的接收器环境的数量增加或者发送环境频繁地改变,则可能会引起与存储空间相关的问题或者由转码导致的延迟的问题。
图50图示根据实施例的通过点云数据发送/接收设备对点云数据的主要区域进行有效处理的示例。
根据实施例的点云数据发送方法/设备,诸如图1的发送设备10000、图1的点云视频编码器10002、图1的发射器10003、图2的获取20000/编码20001/发送20002、图4的编码器、图12的发送设备、图14的设备、图15和图47的编码器、图49的子比特流分类器、图55和图56的编码器、图62的发送方法、图1的接收设备10004、图1的接收器10005、图1的点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和图11的解码器、图13的接收设备、图14的设备、图15和图48的解码器、图49的子比特流分类器、图55和图56的解码器、图57至图60的解码器/渲染器、以及图63的接收方法,可以支持基于ROI的主区域的有效编码/解码或者根据区域具有不同分辨率的编码/解码。为此,可以使用根据实施例的切片片段结构。因此,根据实施例的方法/设备可以提供诸如空间随机接入、基于ROI的逐区域数据分辨率以及接收器效率的增加的效果。
例如,当作为点云数据的目标的对象是人时,人的头部区域可以是兴趣区域,并且腿部区域可以不是兴趣区域。与兴趣区域对应的数据需要具有高数据分辨率,并且与兴趣区域不对应的数据可以具有低数据分辨率。从而,可以实现有效的数据处理。
根据实施例的方法/设备可以通过层组结构和相应的切片分区来支持需要低时延或低复杂性的使用情况,诸如直播流或表现出低性能的设备。对于表现出低性能的设备,当点或编译层的数量大时,解码可能会很麻烦。在这种情况下,可以使用由切片分区实现的可扩展传输来接收和解码部分比特流。从而,可以减少所需的时间和复杂性。然而,因为跳过详细层,所以输出点云数据的质量可能会劣化。
另外,如果解码器可以执行逐区域解码,则可以减少复杂性,同时维持兴趣区域(ROI)中的高质量。通过根据ROI改变解码深度,即,通过针对ROI解码整个编译层并且针对非ROI解码较少编译层,低性能和高性能设备都可以有效地生成点云数据。这可能是针对空间随机接入应用的主要用例,其旨在以有效的方式提供对ROI的直接接入。实施例包括用于支持基于层组结构的空间接入的切片分区方法。
图51示出根据实施例的层组结构和子组边界框。
根据实施例的点云数据发送方法/设备,诸如图1的发送设备10000、图1的点云视频编码器10002、图1的发射器10003、图2的获取20000/编码20001/发送20002、图4的编码器、图12的发送设备、图14的设备、图15和图47的编码器、图49的子比特流分类器、图55和图56的编码器、图62的发送方法、图1的接收设备10004、图1的接收器10005、图1的点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和图11的解码器、图13的接收设备、图14的设备、图15和图48的解码器、图49的子比特流分类器、图55和图56的解码器、图55至图60的解码器/渲染器、图63的接收方法,可以在层组结构中应用切片分段。
在此示例中,提供了8个编译层,并且下层的编译取决于先前层的编译的信息(即,占用)。在生成切片片段时,将编译层分组为三个不同的层组,并且层组的集合与编译层的集合相同。另外,最后两个层组被划分为数个子组。层组2具有两个子组,并且层组3具有四个子组。层组或子组分别包含在7个不同的切片片段中。
通过这样的切片分区,根据实施例的点云数据接收设备可以选择应用程序所需的切片,从而改进解码和渲染效率。例如,当应用仅需要子组3-3的数据时,接收器可以选择切片6,其包含用于子组3-3的数据。另外,考虑到层之间的编译依赖性,可能需要层组1和子组2-2的先前的切片1和3。对于空间接入使用情况,可以假定同一层组的子组之间不存在依赖性。基于切片分区,由于切片较少,可以减少解码复杂度。
根据实施例的子组边界框:
考虑到效率是通过解码之前的切片选择获得的,有必要提供每个切片的数据的描述,以便于找到包含目标数据的切片。实施例提出将信号发送到包含在用于空间接入使用情况的子组中的数据的边界框。图43示出在每个层组中提出的子组边界框。考虑到每个编译层的节点大小,所有层组的边界与序列或帧的边界框相同。另外,假定在前一子组的边界内执行子组分区。因此,子组2-1和2-2的边界框在层组1的边界框中,并且子组3-1和3-2以及子组3-3和3-4的边界框可以在子组2-1和2-2中。
用于层组1的子组边界框可以对应于帧和/或边界框。
对于下层组,可以划分上子组边界框。也就是说,下子组边界框的集合是上层组的子组边界框。
当需要子组3-1的边界框(组)时,可以仅对框(组)3-1、框(组)2-1和框(组)1进行解码。
当存在每个子组的子组边界框时,可以通过将每个切片的边界框与ROI进行比较、选择其子组边界框与ROI相关的切片、并且然后对所选择的切片进行解码来执行空间接入。例如,假设ROI在子组3-3中。在这种情况下,可以通过将ROI与子组边界框进行比较来选择层组1以及子组2-2和3-3。通过对对应的切片1、3和6进行解码,能够以子组3-1的高数据分辨率和其他区域的低数据分辨率来执行对ROI的有效接入。对于直播流或低时延使用,可以在接收每个切片片段时执行选择和解码。
根据实施例的方法/设备可以在具有数据单元报头或层组信息的参数集中用信号发送子组边界框信息以使能够在解码之前进行切片选择。下面描述上述项目的语法示例。
根据实施例的用于切片选择的信息不仅可以包括位置范围,而且可以包括属性范围、法矢量范围和属性类型。
根据实施例的信令示例:(包括在图21的比特流中的信令信息(图53至图55)的示例)
根据本公开的实施例,关于分离的切片的信息可以在参数集中定义如下。其可以被定义在序列参数集、几何参数集、属性参数集、SEI消息、几何切片报头和属性切片报头中。取决于应用和系统,可以在相应或单独的位置中定义以不同地使用要应用的范围和方法。即,信号可以取决于发送信号的位置而具有不同的含义。当在SPS中定义信号时,它可以同等地应用于整个序列。当在GPS中定义信号时,这可以指示该信号被用于位置重构。当在APS中定义信号时,这可以指示该信号被应用于属性重构。当在TPS中定义信号时,这可以指示信号仅应用于图块内的点。当信号在切片中被递送时,这可以指示信号仅被应用于切片。另外,可以取决于应用或系统将要应用的范围和方法定义在相应的位置或单独的位置,使得不同地使用。另外,当下面定义的语法元素适用于多个点云数据流以及当前点云数据流时,可以将其承载在高级参数集中。
虽然实施例独立于编译技术来定义信息,但是可以结合编译技术来定义信息。为了支持区域上不同的可扩展性,可以在图块参数集中定义该信息。另外,当下面定义的语法元素不仅适用于当前点云数据流,而且适用于多个点云数据流时,可以将其承载在高级参数集等中。
可替选地,可以定义网络抽象层(NAL)单元,并且可以递送用于选择诸如layer_id的层的相关信息。由此,可以在系统级别选择比特流。
在下文中,根据实施例的参数(可以被称为元数据、信令信息等)可以在根据下面描述的实施例的发射器的过程中被生成,并且被发送到根据实施例的接收器使得在重构过程中使用。
例如,参数可以由根据稍后将描述的实施例的发送设备的元数据处理器(或元数据生成器)生成,并且可以由根据实施例的接收设备的元数据解析器来获取。
可以考虑层组结构中的切片分段。在此示例中,可以存在8个编译层,其中更低层的编译取决于先前层的编译的信息(例如,占用)。在产生切片片段中,编译层具有3个不同的层组,其中层组的聚合可以等于编译层的集合。另外,第二层组和第三层组可以被划分为多个子组。层组2可以被划分为两个子组,而层组3可以被划分为四个子组。每个层组或子组可以包含在不同的切片片段中。
使用层组结构中的切片片段,接收器可以通过部分解码来针对相应的区域生成不同的分辨率。例如,可以考虑需要子组3-3中的数据的一个应用。在这种情况下,接收器可以解码切片6,但不能解码切片4、5和7。由于层之间的编译依赖性,还需要先前的切片。基于切片分段,由于切片数量较少,解码复杂度被减少。
在空间接入使用例子中使用切片分段的重要方面之一是接收器如何找到ROI所需的切片。在本公开中,有必要使用子组边界框来提供切片中的数据分布的描述。图示每个层组中所提出的子组边界框。考虑到每个编译层的节点大小,所有层组的边界与序列或帧的边界框相同。另外,假定在先前子组的边界内执行子组分区。因此,子组2-1和2-2的边界框在层组1的边界框中,子组3-1和3-2以及子组3-3和3-4分别在子组2-1和2-2的边界中。
当给出子组边界框时,可以通过将每个切片的边界框与ROI进行比较、选择其子组边界框与ROI相关的切片、并且然后对所选择的切片进行解码来执行空间接入。在此示例中,选择切片1、3和6,因为ROI分别在层组1以及子组2-2和3-3的子组边界框中。通过解码所选择的切片,生成表示针对ROI的高数据分辨率和针对其他区域的低数据分辨率的输出点云。假定同一层组中的子组之间不存在用于有效空间接入的依赖性。在直播流或低时延用例中,可以在接收到每个切片片段时执行选择和解码,这可以提高时间效率。
图52示出根据实施例的几何参数集。
图53示出根据实施例的属性参数集。
图52和图53中的参数通过根据图1等的实施例的编码器被生成并且在图21的比特流中递送,并且通过根据图1等的实施例的解码器被解析。
num_layer_groups_minus1加1指定层组的数量,其中层组表示作为几何(或属性)编译树结构的一部分的一组连续的树层。num_layer_groups_minus1可以在0到编译树层的数量的范围内。
layer_group_id指定第i个几何或属性层组的层组标识符。
num_tree_depth_minus1加1指定第i层组中包含的树深度的数量。树深度的总数可以通过将针对i等于0的所有(num_tree_depth_minus1[i]+1)添加到num_layer_groups_minus1来导出。
num_subgroups_minus1加1指定第i层组中的子组的数量。
subgroup_id指定由layer_group_id指示的第i层组的第j子组的指示符。
subgroup_bbox_origin指定第i层组的第j子组的子组边界框的原点。它可以具有接近边界框的8个顶点当中的xyz原点的值。
subgroup_bbox_size指定第i层组的第j子组的子组边界框的大小。它可以具有沿着每个轴的从边界框原点到最大值的距离。指示原点和大小的单元可以基于叶节点大小来表示。如果另一个表示单元被使用,则其可以用信号发送。
aligned_layer_group_struction_flag等于1指定属性切片的层组和子组结构与几何层组和子组结构相同。aligned_layer_group_struction_flag等于0指定属性切片的层组和子组结构可以与几何层组和子组结构不同。
geom_parameter_set_id指定包含与属性层组结构对齐的层组和子组结构信息的几何参数集标识符。
子节点子组的数量(num_child_subgroups_minus1):指示第i层组的第j子组中的子组的数量。
child_subgroup_id指定第i层组的第j子组的子节点子组的标识符。
图54示出根据实施例的几何数据单元报头和属性数据单元报头。
图54示出图21的比特流中包括的参数信息。
对于图54中包括的参数,参考图52和图53的描述。
参考图15,根据实施例的点云数据发送设备可以提供下述效果。
对于点云数据,根据实施例,发送设备可以根据准则来划分并发送压缩的数据。例如,当使用分层编译时,可以根据层来划分并发送压缩的数据。这种情况下,可以增加发送侧上的存储和传输效率。
图15图示其中压缩并提供点云数据的几何和属性的实施例。在基于PCC的服务中,可以根据接收器性能或发送环境来调整压缩率或数据量。在像传统情况一样将点云数据捆绑在一个切片中的情况下,当接收器性能或发送环境改变时,1)可以对适合每个环境的比特流进行转码并单独存储,并且可以在发送时选择适合每个环境的比特流,或者2)在发送之前可能需要转码操作。在这种情况下,如果要支持的接收器环境的数量增加或者传输环境频繁地改变,则可能会引起与存储空间相关的问题或者由转码导致的延迟的问题。
图55图示根据实施例的有效的兴趣区域处理过程。
根据实施例的点云数据发送方法/设备,诸如图1的发送设备10000、图1的点云视频编码器10002、图1的发射器10003、图2的获取20000/编码20001/发送20002、图4的编码器、图12的发送设备、图14的设备、图15和图47的编码器、图49的子比特流分类器、图55和图56的编码器、以及图62的发送方法,可以支持如图57所示的ROI处理。另外,图1的接收设备10004、图1的接收器10005、图1的点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和图11的解码器、图13的接收设备、图14的设备、图15和图48的解码器、图49的子比特流分类器、渲染器、图71的接收方法等可以支持如图55所示的ROI处理。
根据实施例的方法/设备基于图块和切片结构来发送点云数据。在可能包含多个图块的大数据的情况下,为了接入ROI(圆圈区域)5700,可以选择特定图块。然后,可以选择图块中包括的切片之一,并且可以对所选择的切片中的整个点云数据进行解码。其后,可以通过渲染获得一些区域。在这种情况下,因为图块和切片中包含的数据量很大,所以花费大量时间来获取ROI。
图块选择器可以接收点云比特流。图块选择器可以基于ROI来选择图块边界框。
切片/拼块选择器可以基于ROI选择切片和/或拼块边界框。
解码器可以对所选择的切片和/或拼块进行解码。
渲染器可以基于ROI渲染点云数据,并且高效地将部分点云数据提供给用户。
例如,整个点云数据5501可以包括一个或多个图块(图块边界框)5502。
图块5502可以被配置为切片5503的集合(其可以被称为数据单元和/或拼块)。
切片和/或拼块可以被表示具有分层结构(层、深度和级别)的树结构。
根据实施例的接收方法/设备可以快速解码点云数据的特定ROI 5504。
可以更有效地减少对直到通过在接收整个点云数据5602之后获得ROI 5504之前的选择和解码所花费的时间。
图56图示根据实施例的有效的兴趣区域处理过程。
图56图示类似于图55的有效ROI处理过程。
当根据实施例基于点云数据的层组和子组结构执行压缩/重构操作时,可以通过选择图块/切片并且然后仅选择与所选切片中的数据当中的ROI有关的子组来减少延迟因子,如图58所示。在这种情况下,上层组的中间结果可以用作低分辨率点云数据。
例如,根据实施例的方法/设备可以基于ROI 5601快速处理整个点云数据5600。ROI 5601可以是整个点云数据5600的部分区域。ROI 5601可以包括被分区成切片和/或拼块的图块。ROI 5601可以被表示为层组和子组结构5702以用于高效处理。层组1可以包括从根节点到深度(级别)4(4层)的深度,层组2可以包括深度(级别)5和6,并且层组3可以包括叶节点。叶节点可以包括子组3-1、3-2和3-3。层的数量和组中包括的子组的数量可以根据实施例而变化,并且图56示出一个示例。根据实施例的方法/设备可以选择层组和子组并处理用于ROI的子组边界框。随着树结构5602的深度(级别)更加靠近根节点,点云数据可以越发地对应于低分辨率点云5603。包括低分辨率点云数据的组可以表示所选择的图块的部分区域。子组可以对应于ROI。
根据实施例的方法/设备可以通过图块选择器接收点云数据比特流5500,并且基于图块边界框和ROI来选择用于部分解码的图块。
切片/拼块选择器可以基于与切片和拼块相对应的边界框来选择切片和拼块。
解码器可以对所选择的层组进行解码。解码器可以输出低分辨率点云数据5603。低分辨率点云数据5603表示选择的图块的部分区域。
层组和子组选择器可以选择子组边界框5604。
也就是说,根据实施例的方法/设备可以一起提供部分数据5704和包括该部分数据的整个数据5603。低分辨率数据可以用作关于ROI的地图数据。该方法/设备可以参考低分辨率地图数据5603有效地提供ROI的部分数据5604。低分辨率数据5603可以用作概览数据。
图57图示根据实施例的有效的兴趣区域处理过程。
如图56的情况,根据实施例的方法/设备可以一起处理并提供低分辨率完整数据和部分数据。
根据实施例的方法/设备可以基于层组和/或子组结构来压缩/重构图块。在这种情况下,上层组的解码结果可以是用于属于图块的整个区域的低分辨率点云数据。甚至在与ROI相关的子组被解码时,用于ROI的高分辨率点云数据可以被获取。在这种情况下,因为直接对图块进行解码,所以可以省略切片选择。当ROI在图块中时,可以通过在具有关于层组的解码信息的同时附加地解码子组数据来无延迟地切换ROI。
根据实施例的方法/设备可以选择用于图块边界框的图块57000。
图块57000可以对应于最大层组57001。
在包括层组和子组的分层树结构57002中,根据实施例的方法/设备可以一起提供与所选图块的整个区域相对应的低分辨率点云数据57003和ROI的高分辨率点云数据。能够以低分辨率快速检查整个区域,并且能够以高分辨率快速提供ROI。
图块选择器可以基于ROI在输入点云数据比特流中选择与ROI相关的图块。
解码器可以对所选择的层组进行解码。解码器可以输出用于所选图块的整个区域的低分辨率点云数据。
子组选择器可以基于ROI选择子组边界框。
子组部分解码器可以输出用于所选择的子组的部分点云数据。
图58图示根据实施例的有效的兴趣区域处理过程。
如在图56至图58的情况中那样,根据实施例的方法/设备可以一起处理并提供低分辨率完整数据和部分数据。
根据实施例的方法/设备能够以层组结构来压缩输入图像。在这种情况下,通过密集划分层组和子组可以有效地支持对每个区域的空间随机接入。首先,关于整个数据的以概览/缩略图形式的信息可以通过针对上层组的结果提供给用户,并且可以被用于整个数据的导航。当用户期望更高分辨率的信息时,可以另外对与ROI相关的层组或子组数据进行解码。可以通过附加解码的中间过程来提供关于与ROI相关的宽区域的低分辨率信息,并且可以通过附加子组解码来提供关于ROI的高分辨率局部信息。在这种情况下,层组的层结构可以替代现有的图块/拼块/切片结构,并且根据用户的兴趣从整个低分辨率信息中渐进地提供高分辨率的特定信息。在解码方面,可以通过仅解码在请求时间所必要的大量信息而不是解码整个数据来提供渐进解码的功能。此外,因为解码所需的资源减少,所以可以获得低延迟效果。另外,即使在ROI不断改变的环境中,也可以基于上层的信息来减少根据ROI的变化的延迟。
例如,根据实施例的方法/设备能够以树结构5801表示所有输入点云数据5800。树结构5801可以由层组和子组组成,并且使能够基于层接入ROI部分数据。可以基于子组边界框来选择层组和子组。包括最高层的层组5802可以对应于具有非常低分辨率的点云数据,并且表示关于内容的整个区域的信息用于导航点云数据的内容。属于层组或层组的子组5803的子层组可以表示输入内容的部分区域并且对应于低分辨率的点云数据。子层组的子组5801可以对应于ROI的高分辨率点云数据。从整个区域到ROI的区域范围可以通过层之间的关系、区域的范围、各种分辨率设置等来表示。还可以提供用于高分辨率ROI数据的宽区域的低分辨率概览图像。
解码器可以接收点云数据并基于层组对点云数据进行解码。解码器能够以低分辨率输出关于内容的整个区域的数据。解码器能够以低分辨率输出关于内容的部分区域的数据。
子组选择器可以基于ROI来选择子组。
解码器可以部分地解码所选择的子组并输出部分点云数据。
图59示出根据实施例的层组信息。
图1的发送设备10000、图1的点云视频编码器10002、图1的发射器10003、图2的获取20000/编码20001/发送20002、图4的编码器、图12的发送设备、图14的设备、图15和图47的编码器、图49的子比特流分类器、图55和图56的编码器、以及图70的发送方法,对应于根据实施例的点云数据发送方法/设备,可以对如图21所示的点云数据进行编码,生成如图59所示的相关信令信息,并且生成并发送比特流。
图1的接收设备10004、图1的接收器10005、图1的点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和图11的解码器、图13的接收设备、图14的设备、图15和图48的解码器、图49的子比特流分类器、图55和图56的解码器、图57至图60的解码器/渲染器、以及图63的接收方法,对应于根据实施例的点云数据接收方法/设备,可以接收如图21所示的比特流,并且基于图61所示的信令信息等等重构点云数据。
每个层组和子组可以基于切片被划分和发送。为了将每个层组和子组的特性递送给接收器,layer_group_info可以定义如下。可以在图45的比特流中发送layer_group_info。比特流可以包括层组和子组的分层结构、ID、包括的点的数量、包括的区域的位置和范围、编译层的数量、相互依赖、编译约束(是否引用邻居、是否使用上下文)、引用的切片和帧信息。下述是基于数据单元包括layer_group_info的情况的示例。可以基于参数集、帧、序列、图块、切片或点单元来包括layer_group_info,或者可以定义和递送单独的层组单元。
layer_group_enabled_flag等于1指定帧或图块的几何比特流被包含在匹配到编译层的组或其子组的多个切片中。layer_group_enabled_flag等于0指定帧或图块的几何比特流被包含在单个切片中。
num_layer_groups_minus1加1指定表示作为几何编译树结构的一部分的连续树层的组的层组的数量。num_layer_groups_minus1可以在0到编译树层的数量的范围内。
layer_group_id指定帧或图块的层组的指示符。layer_group_id可以在0至num_layer_groups_minus1的范围内。
dependent_slice_flag等于1指定切片取决于由ref_slice_id和ref_layer_group_id指示的切片。dependent_slice_flag等于0指定该切片不取决于其他切片并且可以是相关切片的解码的开始。
ref_slice_id指定参考切片的指示符。ref_slice_id可以在用于当前帧或当前图块的slice_id的范围内。
ref_layer_group_id指定参考层组的指示符。ref_layer_group_id可以在当前帧或当前图块的0至num_layer_group_minus1的范围内。
num_layers_minus1加1指定第i层组中包含的编译层的数量。可以通过将针对i等于0的所有(num_layers_minus1[i]+1)添加到num_layer_groups_minus1来导出层组的总数。
layer_group_stream_len_bits加1是语法元素layer_group_stream_len的以比特为单位的长度。
layer_group_stream_len指定当前layer_group_stream的长度。
subgroup_enabled_flag等于1指定当前层组由可以包含在多个切片中的子组组成。subgroup_enabled_flag等于0指定当前层组被包含在单个切片中。子组是互斥的,并且子组的总和与层组相同。
num_subgroups_minus1加1指定由layer_group_id指示的层组中的子组的数量。
subgroup_id指定由layer_group_id指示的层组的子组的指示符。subgroup_id可以在0至num_subgroups_minus1[layer_group_id]的范围内。这里,subgroup_id可以表示同一layer_group_id中的切片的顺序。当不存在时,subgroup_id被推断为0。
ref_subgroup_id指定由ref_layer_group_id指示的层组的参考子组的指示符。ref_subgroup_id可以在0到当前层组的num_subgroup_id_minus1的范围内。当不存在时,subgroup_id被推断为0。
num_points_bits_minus1加1是语法元素num_points的以比特为单位的长度。
num_points指定通过解码当前切片的输出点的数量。
subgroup_bbox_origin_bits_minus1加1是语法元素subgroup_bbox_origin的以比特为单位的长度。
subgroup_bbox_origin指定由layer_group_id指示的层组的subgroup_id指示的子组的子组边界框的原点。
subgroup_bbox_size_bits_minus1加1是语法元素subgroup_bbox_size的以比特为单位的长度。
subgroup_bbox_size指定由layer_group_id指示的层组的subgroup_id指示的子组的子组边界框的原点。
num_skipped_layer_groups指定当前帧或图块中的跳过层组的数量:num_encoded_layer_group=num_delivered_layer_group+num_skipped_la yer_group。
num_skipped_layers指定当前帧或图块中跳过的几何编译层的数量。
num_encoded_layers=num_delivered_layers+num_skipped_layers。
因此,根据实施例的方法/设备可以提供参考图15、55和56描述的效果。
图60图示根据实施例的层组切片。
点云数据发送方法/设备(图1的发送设备10000、图1的点云视频编码器10002、图1的发射器10003、图1的获取20000/编码20001/发送20002、图4的编码器、图12的发送设备、图14的设备、图15、图47、图68和图69的编码器以及图70的传输方法)可以基于如图60中所示的层组对点云数据进行切片。
点云数据接收方法/设备(图1的接收设备10004、图1的接收器10005、图1的点云视频解码器10006、图2的传输20002/解码20003/渲染20004、图10和图11的解码器、图14的设备、图15、图48、图55至图58、图60、图68和图69的解码器以及图71的接收方法)可以是接收并解码基于层组的切片数据,如图60所示。
根据实施例的方法/设备可以基于分层切片的可扩展性和空间可达性来支持高分辨率ROI。
参考图60,编码器可以生成八叉树层组或每个层组的空间子组的比特流切片。根据该请求,可以选择并发送与每个分辨率的ROI匹配的切片。因为除了所请求的ROI之外的详细信息不被包括在比特流中,所以整个比特流大小可以小于基于图块的方法中的大小。接收器的解码器可以组合切片以生成三个输出。例如,1)可以从层组切片1生成高级视图输出;2)可以在层组切片1和层组2的所选子组中生成中级视图输出;3)可以在层组1以及层组2和3的所选子组中生成精细细节输出的低级视图。因为可以渐进地生成输出,所以接收器可以提供观看体验,诸如放大/缩小。分辨率可以从高级别视图逐渐增加到低级别视图。
编码器60000可以对应于作为根据实施例的点云编码器的几何编码器和属性编码器。编码器可以基于层组(或组)对点云数据进行切片。层可以被称为树的深度、层的等级等。如部分60000-1中所示,几何形状的八叉树的深度和/或属性层的级别可以被划分为层组(或子组)。
切片选择器60001与编码器60000结合可以选择被分区的切片(或子切片)以选择性地并且部分地发送数据,诸如层组1到层组3。
解码器6002可以对选择性地并且部分地发送的点云数据进行解码。例如,它可以解码层组1的高级视图(其具有高深度/层/级别或索引0,或靠近根)。此后,可以通过基于层组1和层组2单独增加层组1上方的深度/级别的索引来解码中级视图。可以基于层组1到层组3来解码低级视图。
图61示出根据实施例的图块分区域和层组切片之间的性能。
整体性能比较(图块分区对比层组切片)
将描述根据实施例提出的方法与用于通过根据实施例提出的方法的总体性能的G-PCCv1之间的比较。考虑到ROI支持,可以基于适应于源分辨率的tileSize对锚点执行图块分区。相同的图块尺寸可以用于子组分区,使得图块和子组以一一对应的方式映射。在层组结构的情况下,层组中的层数可以被设置为9、3以及其余层。
所提出的层组切片在所有条件下在比特率和编译时间方面可以具有与图块分区类似的性能。另外,所提出的方法可以在损失条件下具有增益,因为随着几何量化级别的增加,层组1中未分割的层的比例变得相对大。因为所提出的方法能够提供额外的可扩展功能,所以与G-PCC v1相比,所提出的方法在保持空间随机接入功能的同时是有利的。
图62、63、64、65和66图示根据实施例的多分辨率和多尺寸ROI输出。
使用图60中所示的结构,可以获得多分辨率和多尺寸的ROI输出。
多分辨率多尺寸ROI的比较示例(锚点1/2对比提议)
为了进行详细比较,能够回顾三种方法的观看距离自适应分辨率用例的结果。根据上述假定,可以将三个不同级别的观看距离视为接收器的输出。可能存在1)粗略细节信息的高级视图,2)中级细节信息的中级视图,3)精细细节信息的低级视图。
参考图62和图63,呈现ULB_unicorn_HiRes_vox15_n.ply和Stanford_Area_4_vox16.ply数据的三种不同分辨率,其表示三个目标输出。从高级到低级,体积尺寸减小并且分辨率(或点密度)增加。锚点的输出和所提出的方法可能是相同的。
图65和图66比较所提出的方法和基于图块分区的方法的结果。在每行中,从每种方法产生不同输出的成本是在比特流大小和编译时间方面来描述的。在列中,大组表示锚点和提出的方法,并且每组的前三列表示具有不同区域大小和分辨率的三个输出。当每个方法组完成时,针对编译和交付所有三个输出的总成本被总结。
锚点A对比层组切片
图65和图66比较所提出的方法和在没有解码的情况下图块分区的结果。
所提出的方法的结果与锚点B的结果进行比较,该锚点B用于通过下采样进行图块分区。
根据上述方法的每种方法生成单个编码的比特流,并且因此对编码的比特流的存储负担是相似的。然而,为高级视图和中级视图输出而发送的G-PCCv1的比特流大小相对大,因为它包含不用于生成输出的细节。考虑到所有三个ROI,锚点发送整个图块以支持三种不同的ROI分辨率。对于每个输出,接收器基于ROI和目标细节级别选择图块,并执行层跳跃。因为输出是由独立的解码器产生的,所以总解码时间是通过将高、中、低电平输出的解码时间相加来计算的。在所提出的方法中,比特流包含必须在切片之间没有冗余的情况下使用的切片,这显着减少三个输出的比特流大小。
锚点B对比层组切片
在图66中,所提出方法的结果与锚点B进行比较,其是具有下采样的图块分区。因为在递送之前选择区域和分辨率,所以锚点B的比特率效率大大被改进。当比较锚点B和所提出的方法时,对于高、中、低视图输出中的每个,锚点的比特流大小较小。每个切片的报头中包括的附加信息和层组1中包括的非ROI信息会导致针对所提出方法的开销。然而,当一起考虑三个输出时,针对所提出方法的总体比特流大小比锚点小7%。在这种情况下,锚点使用三个独立的比特流以向重叠区域引入冗余,但所提出的方法使用不具有重叠区域的单个比特流。
锚点A表示没有下采样的图块分区,并且锚点B表示具有下采样的图块分区。所提出的方法指的是层组切片。
图67图示根据实施例的基于层组和子组的上下文、邻居搜索范围和缓冲区设置。
图60的编码器60000和解码器60002和对应的编码器/解码器可以将点云数据表示为如图67中所示的层组(或子组),并且可以基于其对点云数据进行编码和解码。
根据实施例,几何比特流可以在每层组/子组的基础上被划分成切片,并且几何位置信息可以被有效地压缩和恢复。当使用根据实施例的层组切片时,可以限制关于子组边界框外部的节点的信息的使用作为确保切片之间的编译独立性的方法。在这种情况下,上下文参考的连续性可以被用作用于减少编译效率损失的方法。
当对另一切片进行编译时可以使用在编译一个切片中使用的上下文表。基于一个几何树中存在的节点之间的相关性的上下文表可以被用于增强编译效率。在这种情况下,作为用于考虑层组之间的局部相关性的方法,可以应用限制,使得当参考切片的子组边界框包括所引用的切片的子组边界框或与所引用的切片的子组边界框相同时,建立上下文参考关系。即,通过使用与父子组具有子子组关系或者与祖先子组具有子子组关系的切片的上下文表,可以进一步增加编译效率。可替选地,作为用于减少存储上下文表的缓冲区的负担的方法,第一切片的上下文表可以用于后续切片的编译。
可以假定子组边界框之外的节点是未占用节点。也就是说,当对关于每个节点的几何位置信息进行编译时,存在于包括每个节点的切片中的节点,即,属于同一子组的节点,可以被视为邻居目标。基于此,可以确定关于编译目标节点的邻居占用信息。在这种情况下,为了快速实现,可以将邻居节点的占用信息存储在图集中。在使用关于图集中的节点的占用信息时,可以另外确定该节点是否在当前节点所属的子组的边界框的bbox_max和bbox_min的范围内以选择性地仅使用属于该子组的节点。这用于防止关于属于同一层组的邻居切片的节点信息被用于对属于该切片的节点进行编译。因此,可以确保每个切片在层组中被独立地编译。
接下来,描述将先前提出的准则当中的上下文参考的连续性应用到实际实现中的实施例。为了使用上下文参考信息的连续性,确定每个节点的层组索引和子组索引,并且根据每个索引的参考上下文参考被用作每个子组开始处的上下文表的初始值。在编码操作中,无论子组顺序如何,节点都可以存在,并且可以通过存储和加载编码器上下文状态的过程来确保上下文表在子组中连续使用。
以两个步骤来执行这个过程。当深度改变时,确定层组是否改变,并且根据该确定来执行不同的操作。
根据实施例的对点云数据进行编码/解码的操作可以包括:1)更新层组信息;2)更新子组信息;和/或3)存储用于邻居搜索范围的图集信息。
在下文中,所公开的语法可以是通过解决每个步骤的操作来描述的代码语言。这样的指令可以对应于根据实施例的用于发送和接收点云数据的方法/设备的各自操作。这些操作可以由作为根据实施例的设备的硬件、软件、处理器和/或其组合来执行。
更新层组信息的操作1)可以包括以下操作。这些操作可以按顺序执行,并且根据实施例可以省略一些操作:
在层组的起始点处初始化层组索引和子组索引;
初始化子组边界框;
在层组改变的点处而不是层组的起始点处增加层组索引;
将子组索引初始化为0;
加载缓冲区中存储的上下文状态并初始化当前子组的上下文表,其中根据层组索引和子组索引将上下文表初始化为参考上下文。
更新关于子组边界框的信息(例如,范围等),
基于在不改变层组的情况下增加的八叉树深度,维持层组索引并将子组索引初始化为0;
存储先前的上下文状态,
加载临时存储的上下文状态,包括根据层组索引和子组索引将上下文初始化为参考上下文;
更新关于子组边界框的信息。
更新子组信息的操作2)可以包括以下操作。这些操作可以按顺序执行,并且根据实施例可以省略一些操作:
确定当前节点的位置是否被包括在先前节点的子组边界框中;
更新包括当前节点的子组的索引;
基于子组为起始节点,可以基于当前节点的层组索引和子组索引来搜索参考节点信息,其中术语索引可以称为ID等;
初始化所存储的上下文状态,其中可以根据层组索引和子组索引将上下文初始化为参考上下文;
基于已经开始的子组,初始化临时存储的上下文状态,其中可以根据层组索引和子组索引将上下文初始化为参考上下文。
基于该节点为子组开始的节点,初始化平面缓冲区;
更新关于子组边界框的信息。
存储用于邻居搜索范围的图集信息的操作3)可以包括以下操作。这些操作可以按顺序执行,并且根据实施例可以省略一些操作:
基于子组边界框被改变,在不更新图集的情况下,将用于确定图集中是否存在邻居的范围更新为子组边界框的范围;
基于正在更新的图集,将用于确定图集中是否存在邻居的范围更新为子组边界框的范围;
基于子组边界框更新图集中新定义的邻居范围,该更新包括基于子组边界框的最大值小于图集中的最大值,基于子组边界框更新最大范围,其中当子组边界框的最大值大于图集中的最大值时,可以将图集中存在的节点用作针对最大范围的邻居,因为图集中的最大值在子组边界框的范围。该更新可以包括:基于子组边界框的最小值大于图集的最小值,基于子组边界框更新最小范围,其中当子组边界框的最小值大于图集的最小值,则图集中存在的节点可以用作针对最小范围的邻居,因为图集的最小值在子组边界框的范围内。
在基于邻居的编译中,从邻居范围中排除被定位在相对于子组边界框新定义的范围之外的区域中的节点。
<层组信息更新>
层组信息的更新可以包括如下的为八叉树深度的每个起点设置其中层组起点和层组是连续的八叉树深度的上下文、邻居搜索范围,以及平面缓冲区。
for(深度=0;深度<maxDepth;深度++){
…
当层组启用标志从八叉树深度0到最大深度被激活时,根据实施例的层组信息的更新执行以下操作。
if(gbh.layer_group_enabled_flag){
if(深度==0){
//第一层组的开始。当深度0表示八叉树深度的第一个点和层组的第一个起点时。
//层组索引和子组索引的初始化。指示当前层组的层组索引和指示与层组相关的子组的子组索引被初始化为初始值。
curLayerGroupId=0;
curSubgroupId=0;
prevSubgroupId=0;
numPrevSlices=0;
关于层组ID、子组ID、先前子组ID、先前切片的数量等的信息被初始化为0。
//子组边界框的初始化。子组边界框可以被初始化。
bbox_min=gbh.vec_bboxOrigin[0][0];
bbox_max=bbox_min+gbh.vec_bboxSize[0][0];
边界框的最小值和边界框的最大值可以分别被初始化为与边界框的原点以及边界框的最小值和边界框的尺寸之和相关的值。
}
elseif(深度==sum_layers){
//层组被改变的时间。尽管层的总和和深度相同,但这可能意指层组被改变的点。
//层组索引增量(+1)。因为层组被改变,所以层组索引的值可能会增加了1。
//初始化为子组索引=0(因为它是新层组中的子组)。子组的索引可以被初始化为0。因为子组是属于层组的较低组,所以当层组被改变时子组也被改变。
int prevLayerGroupId=curLayerGroupId++;
prevSubgroupId=curSubgroupId;
curSubgroupId=0;
先前的层组ID被设置为当前层组ID,并且当前层组ID被增加。
if(gbh.num_sub_groups_minus1[curLayerGroupId]>1)
gbh.subgroup_enabled_flag=1;
numNodeVisited.clear();
numNodeVisited.resize(gbh.num_sub_groups_minus1[curLayerGroupId]+1,0);
int refLayerGroupId=gbh.ref_layerGroup[curLayerGroupId][curSubgroupId];
int refSubgroupId=gbh.ref_subgroup[curLayerGroupId][curSubgroupId];
参考层组ID和参考子组ID被设置为与当前层组ID和当前子组ID相关的值。
//存储与先前节点相关的编码器信息。为了在对下一个节点进行编码时使用与先前节点相关的编码信息,可以存储与先前节点相关的编码信息。
savedStateVector[prevLayerGroupId][prevSubgroupId].reset(newGeometryOctreeEncoder(encoder));
可以存储基于先前层组ID和先前子组ID的状态矢量。
//通过加载所存储的编码器上下文状态,可以将当前子组的上下文表初始化(根据层组索引和子组索引初始化为参考上下文:refLyaerGroupId/refSubgroupId)。
可以加载存储在缓冲区中的编码器上下文状态,以将当前层组和子组的上下文表初始化为层组索引和子组索引的参考上下文。
编码器=*savedStateVector[refLayerGroupId][refSubgroupId];
encoder._arithmeticEncoder=(arithmeticEncoderIt+(numPrevSlices+curSubgroupId))->get();
numNodeVisited[curSubgroupId]=1;
//可以更新子组边界框信息(即,可以根据新的索引index(curLayerGroupId,curSubgroupId)更新子组边界框信息)
bbox_min=gbh.vec_bboxOrigin[curLayerGroupId][curSubgroupId];
bbox_max=bbox_min+gbh.vec_bboxSize[curLayerGroupId][curSubgroupId];
可以基于边界框原点和基于当前层组索引和当前子组索引的尺寸信息来更新与边界框的范围相关的值。
sum_layers+=gbh.num_layers_per_layer_group[curLayerGroupId];
}
elseif(gbh.num_sub_groups_minus1[curLayerGroupId]>0)
{
//这表示层组未被改变并且八叉树深度增加的情况。
//可以维护层组索引。
子组索引可以被初始化为0(子组可以由于八叉树深度的变化而改变)。
当使用子组时,需要初始化。
prevSubgroupId=curSubgroupId;
curSubgroupId=0;
//可以存储先前的编码器上下文状态。
savedStateVector[curLayerGroupId][prevSubgroupId].reset(新的GeometryOctreeEncoder(编码器));
//可以加载临时存储的编码器上下文状态(并且可以根据层组索引和子组索引:curLyaerGroupId/curSubgroupId将其初始化为参考上下文)。
可以加载暂时存储在缓冲区中的编码器上下文状态,以将当前层组和子组的上下文表初始化为层组索引和子组索引的参考上下文。
编码器=*savedStateVector[curLayerGroupId][curSubgroupId];
encoder._arithmeticEncoder=(arithmeticEncoderIt+(numPrevSlices+curSubgroupId))->get();
numNodeVisited[curSubgroupId]++;
//可以更新子组边界框信息(即,可以根据改变的索引(curSubgroupId)更新子组边界框信息)。
bbox_min=gbh.vec_bboxOrigin[curLayerGroupId][curSubgroupId];
bbox_max=bbox_min+gbh.vec_bboxSize[curLayerGroupId][curSubgroupId];
可以基于边界框原点和基于当前层组索引和当前子组索引的尺寸信息来更新与边界框的范围有关的值。
}
numProcNodes=0;
}
}
在该过程中,可以在确定层组之后确定每个节点的子组。然后,可以在与先前节点存在连续性的假定下确定先前节点是否属于子组边界框。在深度改变时,确定层组是否改变,并且取决于确定来执行不同的操作。
点云数据的编码/解码可以进一步包括更新子组信息。
<子组信息更新>
对于每个点,可以在子组开始处和子组继续的节点位置处更新上下文、邻居搜索范围和平面缓冲区信息。
for(;fifo.begin()!=fifoCurrLvlEnd;fifo.pop_front()){
……
bool bboxChangedFlag=false;
if(gbh.layer_group_enabled_flag){
if(gbh.num_sub_groups_minus1[curLayerGroupId]>0){//if(gbh.vec_subgroup_enabled_flag[curLayerGroupId]){
Vec3<int>nodePos;
for(int m=0;m<3;m++)
nodePos[m]=node0.pos[m]<<nodeSizeLog2[m];
//可以确定当前节点的位置是否属于先前节点的子组边界框。
if(!(nodePos.x()>=bbox_min.x()&&nodePos.x()<bbox_max.x()
&&nodePos.y()>=bbox_min.y()&&nodePos.y()<bbox_max.y()
&&nodePos.z()>=bbox_min.z()&&nodePos.z()<bbox_max.z())){
//可以检测到与当前节点的偏差。
//可以找到包括在该范围内的节点。
//bool updatedFlag=false;
for(int i=0;i<=gbh.num_sub_groups_minus1[curLayerGroupId];i++){
Vec3<int>bbox_min_tmp=gbh.vec_bboxOrigin[curLayerGroupId][i];
Vec3<int>bbox_max_tmp=bbox_min_tmp+gbh.vec_bboxSize[curLayerGroupId][i];
//可以找到包括节点位置的子组边界框。
if
nodePos.x()>=bbox_min_tmp.x()&&nodePos.x()<bbox_max_tmp.x()
&&nodePos.y()>=bbox_min_tmp.y()&&nodePos.y()<bbox_max_tmp.y()
&&nodePos.z()>=bbox_min_tmp.z()&&nodePos.z()<bbox_max_tmp.z()){
numProcNodes=0;
//包括当前节点的子组的索引可以被更新。
bboxChangedFlag=真;
prevSubgroupId=curSubgroupId;
curSubgroupId=i;
//可以存储与先前节点相关的编码器信息。saveStateVector[curLayerGroupId][prevSubgroupId].reset(新的GeometryOctreeEncoder(编码器));
if(!numNodeVisited[curSubgroupId]){
//可能存在该节点是子组从其起始的节点的情况。
//可以基于当前节点的层组索引和子组索引找到参考节点信息。
int refLayerGroupId=gbh.ref_layerGroup[curLayerGroupId][curSubgroupId];int refSubgroupId=gbh.ref_subgroup[curLayerGroupId][curSubgroupId];//可以将存储的编码器上下文状态初始化(根据层组索引和子组索引初始化为参考上下文:refLyaerGroupId/refSubgroupId)。
编码器=*savedStateVector[refLayerGroupId][refSubgroupId];可以初始化根据参考层组索引和参考子组索引的上下文状态。
}
else{
//可能存在子组已经开始的情况。
//可以将临时存储的编码器上下文状态初始化(根据层组索引和子组索引初始化为参考上下文:curLyaerGroupId/curSubgroupId)。
编码器=*savedStateVector[curLayerGroupId][curSubgroupId];
}
if(!planarInitFlag[curSubgroupId]){
//可能存在该节点是子组从其开始的节点的情况。
//平面缓冲区可以被初始化。encoder.beginOctreeLevel(planarDepth);
planarInitFlag[curSubgroupId]=1;
}
//子组边界框信息可以被更新。
bbox_min=bbox_min_tmp;
bbox_max=bbox_max_tmp;
encoder._arithmeticEncoder=(arithmeticEncoderIt+(numPrevSlices+curSubgroupId))->get();
numNodeVisited[curSubgroupId]++;
break;
}
if(!bboxChangedFlag){
continue;
}
}
}
}
numProcNodes++;
……
}
当邻居限制被应用于实际实现时,可以基于子组边界框来限制有效使用预存储的邻居节点的占用信息的图集的范围,如以下实施例一样。
根据实施例的点云数据的编码/解码可以更新子组边界处的图集。
<更新子组边界处的图集>
void
updateGeometryOccupancyAtlas(
const Vec3<int32_t>¤tPosition,
const int atlasShift,
const pcc::ringbuf<PCCOctree3Node>&fifo,
const pcc::ringbuf<PCCOctree3Node>::iterator&fifoCurrLvlEnd,
MortonMap3D*occupancyAtlas,
Vec3<int32_t>*atlasOrigin
////////////////HMO///////////////
,Vec3<int>curPos_bbox_min,
Vec3<int>curPos_bbox_max,
Vec3<int>nodeSizeLog2,
bool bboxChangedFlag
///////////////////////////////////////////
)
{
const uint32_t mask=(1<<ocupancyAtlas->cubeSizeLog2())-1;
const int shift=ocupancyAtlas->cubeSizeLog2();
const int shiftX=(atlasShift&4?1:0);
const int shiftY=(atlasShift&2?1:0);
const int shiftZ=(atlasShift&1?1:0);
const auto currentOrigin=currentPosition>>shift;
//如果当前位置位于图集之外,则可以刷新图集。
//当前图集。
if(*atlasOrigin==currentOrigin){
//当图集中的边界框bbox改变时,只有范围可以改变,同时保持图集中的点。
//当子组边界框被改变时,图集本身可以不被更新,但是用于确定图集中邻居的存在的范围可以被更新为子组边界框范围。
if(bboxChangedFlag){
ocupancyAtlas->setRange(curPos_bbox_max,curPos_bbox_min,*atlasOrigin,nodeSizeLog2);
}
return;
}
//可能存在图集更新的情况。
*atlasOrigin=currentOrigin;
occupancyAtlas->clearUpdates();
//用于确定图集中邻居的存在的范围可以被更新为子组边界框范围。//////////////HMO///////////////
ocupancyAtlas->setRange(curPos_bbox_max,curPos_bbox_min,*atlasOrigin,nodeSizeLog2);
///////////////////////////////////
for(auto it=fifo.begin();it!=fifoCurrLvlEnd;++it){
if(currentOrigin!=it->pos>>shift)
break;
const uint32_t x=(it->pos[0]&mask)>>shiftX;
const uint32_t y=(it->pos[1]&mask)>>shiftY;
const uint32_t z=(it->pos[2]&mask)>>shiftZ;
occupancyAtlas->setByte(x,y,z,it->siblingOccupancy);
}
}
用于根据子组边界框更新图集内新定义的邻居范围(_maxRange,_minRange)的实施例被配置如下。
int setRange(Vec3<int>bbox_max,Vec3<int>bbox_min,Vec3<int>atlasOrigin,Vec3<int>nodeSizeLog2)
{
int changedFlag=0;
auto bboxSize=bbox_max-bbox_min;
bool setRangeEnabledFlag=!!bboxSize[0]||!!bboxSize[1]||!!bboxSize[2];
如果(setRangeEnabledFlag){
对于(int m=0;m<3;m++){
int bboxMaxShift=bbox_max[m]>>nodeSizeLog2[m];
int bboxMinShift=bbox_min[m]>>nodeSizeLog2[m];
int atlasOriginShift=atlasOrigin[m]<<_cubeSizeLog2;
//_maxRange
if(atlasOriginShift+_cubeSize>bboxMaxShift){
//如果子组边界框的最大值(bboxMaxShift)小于图集的最大值(图集中心+图集大小):可以根据子组边界框大小来更新最大范围(_maxRange)。
//在这种情况下,_maxRange可以表示为距atlasOriginShift的距离。
_maxRange[m]=bboxMaxShift-atlasOriginShift;
changedFlag=1;
}
else
//如果子组边界框的最大值(bboxMaxShift)大于图集的最大值(图集中心+图集大小):图集的最大值可能存在于子组边界框的范围内。对于最大范围,可以使用图集中的最大值,因为位于图集中的节点能够被用作邻居。
_maxRange[m]=_cubeSize;
//_minRange
如果(bboxMinShift>atlasOriginShift){
//如果子组边界框的最小值大于图集的最小值(图集的中心):基于子组边界框更新最小范围(_minRange)。
//在这种情况下,_minutige可以表示为距atlasOriginShift的距离。
_minRange[m]=bboxMinShift-atlasOriginShift;
changedFlag=1;
}
else
//如果子组边界框的最小值(bboxMaxShift)大于图集的最小值(图集的中心):可以使用图集的最小值,因为它位于子组边界框的范围内,并且位于范围Min内的图集中的节点能够被用作邻居。
_minRange[m]=0;
}
}
return changeFlag;
}
uint32_t getWithCheck(
const int32_t x,
const int32_t y,
const int32_t z,
const int shiftX,
const int shiftY,
const int shiftZ)const
{
if(
////////////////HMO///////////////
//x<0||x>=_cubeSize||y<0||y>=_cubeSize||z<0
//||z>=_cubeSize){
x<_minRange[0]||x>=_maxRange[0]
||y<_minRange[1]||y>=_maxRange[1]
||z<_minRange[2]||z>=_maxRange[2]){
//当使用邻居信息时,位于基于子组边界框新定义的_minRange和_maxRange范围之外的节点可能不被使用。
////////////////////////////////////////////
return false;
}
return get(x,y,z,shiftX,shiftY,shiftZ);
}
uint32_t
getWithCheck(const int32_t x,const int32_t y,const int32_t z)const
{
if(
/////////////////HMO////////////////
//x<0||x>=_cubeSize||y<0||y>=_cubeSize||z<0
//||z>=_cubeSize){
x<_minRange[0]||x>=_maxRange[0]
||y<_minRange[1]||y>=_maxRange[1]
||z<_minRange[2]||z>=_maxRange[2]){
////////////////////////////////////////////
//当使用邻居信息时,位于基于子组边界框新定义的_minRange和_maxRange范围之外的节点可能不会被使用。
return false;
}
return getWithCheck(x,y,z,1,1,1);
}
图67图示其中用于对点云数据进行编码/解码的方法/装置考虑到基于层组的切片和基于层组的上下文连续性来有效地压缩和重构数据的示例。
图67的过程可以由图1的发送设备10000、图1的点云视频编码器10002、图1的发射器、图2的获取20000/编码20001/发送、图4的编码器、图12的发送设备、图14的设备、图15、图47、图68和图69的编码器、图70的发送方法、图1的接收设备10004、图1的接收器10005、图1的点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和图11的解码器、图13的接收设备、图14的设备、图15、图48、图55至图58、图60、图68和图69的解码器、图71的接收方法等来执行。
数据结构6700表示几何数据和/或属性数据的八叉树的LOD/层结构。根据实施例,术语八叉树、树、LOD和层表示从属关系和分层结构中的点云数据,并且可以彼此对应。
数据结构6700可以由几何编码器的八叉树生成器11001和属性编码器的LOD生成器11008生成。类似地,在接收侧处,可以由每个相应解码器的组件进行处理。
数据结构6700可以包括层组6701。如参考图60描述的那样执行层组的生成。
层组6701包括父子节点,该父子节点包括点云数据。可以按照表示更高层组和更低层组的节点的关系来分层地生成层组。
如参考图34至图41所描述的,一个层组或多个层组可以被包括在一个切片中以被发送和接收。另外,一个层组可以被分段成多个子组。每个层组和每个子组可以根据解码器性能、分辨率和ROI被发送到接收器。
可以针对切片中包括的每个层组执行编码。编码顺序6702表示从父节点到子节点的编码顺序。
例如,对点云数据进行编码/解码的方法可以包括以下流程图。
S6700:对点云数据进行编码/解码的方法可以包括加载上下文。
根据实施例的上下文信息可以指的是点云数据,例如,由图4和图11的算术编码器和/或算术解码器在对几何数据和/或属性数据进行编码和/或解码中生成的附加信息。根据实施例,在根据实施例的编码和/或解码中对当前点云数据进行编码/解码中,可以基于根据先前点云数据计算的上下文信息来有效地压缩和重构当前点云数据。
在对切片进行编译中使用上下文表的操作可能需要大的延迟,并且因此根据实施例可以使用基于层组的相关性和相似性来实现有效的压缩和重构。
层组6701可以对应于边界框。
子组6703可以对应于子组边界框。
在加载和引用上下文中,可以存储和使用对应于或者包括当前切片的子组边界框的切片的子组边界框的上下文表。当前子组边界框和参考子组边界框可以是父子关系。
因为上下文表的数据计算量大,所以当前子组边界框的切片和参考子组边界框的切片可能是连续的。
可以有效地设置子组边界框的尺寸。被定位在子组边界框的尺寸之外的区域中的节点可以被视为未被占用的节点。也就是说,当从当前点的邻居执行预测编译时,邻居搜索范围可以被限制在子组边界框的区域。例如,在子组6703的情况下,可以包括所有八个节点,并且可以排除区域外的节点。子组边界框外的区域/节点6704可以被视为未被占用的区域/节点。关于邻居(外围)节点的占用信息可以被存储在比特流中。例如,占用信息可以被存储在图集中。可以对包括在子组的边界框的最小/最大范围中的节点进行编码。
S6701:对点云数据进行编码/解码的方法可以包括存储上下文。在当前层组或当前子组的编码/解码终止并且对下一个切片、下一个层组或下一个子组进行编码/解码时,可以存储先前的上下文表。在没有给缓冲区带来负担的情况下,可以通过利用0到N层组(包括子组)的上下文加载和上下文保存对点云数据进行编码/解码。另外,可以有效地配置邻居节点。此外,可以针对每个切片/层组独立地执行部分/可扩展的编码/解码。
参考图15,根据实施例的点云数据发送设备可以提供以下效果。
根据实施例,可以根据准则对点云数据的压缩数据进行分区和发送。例如,当使用分层编译时,可以根据层来划分经压缩的数据。这种情况下,可以增加发送侧处的存储和传输效率。
图15图示点云数据的几何和属性被压缩和服务的情况的实施例。在基于PCC的服务中,可以根据接收器性能或传输环境来调整压缩率或数据的数量。在接收器性能或传输环境改变同时如在传统情况下基于逐个切片绑定点云数据的情况下,有必要1)对适合每个环境的比特流进行预转码,单独地存储变换的比特流使得被选择用于传输或2)在传输之前对比特流进行转码。就这一点而言,当要支持的接收器环境增加或者传输环境频繁改变时,可能出现与存储空间或由转码引起的延迟有关的问题。
图68图示根据实施例的发送和接收点云数据的方法。
通过图1的发送设备10000、图1的点云视频编码器10002、图1的发射器10003、图2的获取20000/编码20001/发送20002、图4的编码器、图12的发送设备、图14的设备、参考图15、图47、图68和图69的编码器、图70的发送方法、图1的接收设备10004、图1的接收器10005、图1的点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和图11的解码器、图13的接收设备、图14的设备、图15、图48、图55至图58、图60、图68和图69的解码器、图71的接收方法等等,点云数据可以被分区和发送/接收,如图68所示。图68的每个组件可以对应于硬件、软件、处理器和/或其组合。
根据实施例,当根据层对压缩数据进行分区和发送时,在无需单独的转码操作的情况下,可以在比特流步骤中选择性地仅发送预压缩数据的必要部分。即使就存储空间而言,这也是高效的,因为每个流仅需要一个存储空间。此外,因为仅选择性地发送必要的层,所以即使在(比特流选择器)带宽方面也可以执行有效的发送。
根据实施例的点云数据接收方法/设备可以提供以下效果。
图69图示根据实施例的发送和接收点云数据的方法。
通过图1的发送设备10000、图1的点云视频编码器10002、图1的发射器10003、图2的获取20000/编码20001/发送20002、图4的编码器、图12的发送设备、图14的设备、图15、图47、图68和图69的编码器、图70的传输方法、图1的接收设备10004、图1的接收器10005、图1的点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和图11的解码器、图13的接收设备、图14的设备、图15、图48、图55至图58、图60、图68和图69的解码器、图71的接收方法等等,点云数据可以被分区和发送/接收,如图56中所示。图69的每个组件可以对应于硬件、软件、处理器和/或其组合。
实施例包括基于针对点云数据的某些准则来分区和发送经压缩的数据的方法。当使用分层编译时,可以根据层对压缩数据进行分区和发送,这增加接收侧处的效率。
图56图示在发送包括层的点云数据中在发送/接收侧处执行的操作。在这种情况下,当发送用于重构整个PCC数据的信息而不管接收器的性能如何时,接收器需要在通过解码重构点云数据之后进行数据选择或子采样以用于仅选择与所需层相对应的数据。在这种情况下,因为所发送的比特流已经被解码,所以在以低时延为目标的接收器中可能会产生延迟,或者取决于接收器的性能可能无法执行解码。
根据实施例,当比特流被划分为切片并发送时,接收器可以根据要根据解码器性能或应用领域表示的点云数据的密度选择性地将比特流发送到解码器。在这种情况下,因为在解码之前执行选择,所以可以增加解码器效率,并且可以支持具有各种性能的解码器。
因此,根据实施例的用于发送和接收点云数据的方法/设备基于所提出的操作、信令方案等提供对点云数据的有效空间随机访问。
图70图示根据实施例的点云数据传输方法。
S7000:根据实施例的点云数据传输方法可以包括对点云数据进行编码。
根据实施例,编码操作可以包括图1的发送设备10000、图1的点云视频编码器10002、图1的发射器10003、图2的获取20000/编码20001/发送20002、图4的编码器、图12的发送设备、图14的设备、以及图15、图47、图68和图69的编码器。
S7001:点云数据传输方法可以进一步包括发送包含点云数据的比特流。
根据实施例,传输操作可以包括图1的发送器10003、图2的传输、图4的几何比特流和属性比特流的传输、图12的传输处理器12012、包含图15至图46的编码的点云数据的比特流的传输、图47至图59的比特流的部分传输、图60的基于层组的传输、以及图69和图70的可扩展传输。
图71图示根据实施例的点云数据接收方法。
S7100:根据实施例的点云数据接收方法可以包括接收包含点云数据的比特流。
根据实施例的接收操作可以包括图1的接收器10005、图2的接收、图11的几何比特流和属性比特流的接收、图13的接收器13000、图15至图46的处理的比特流的接收、图47至图59的部分接收、图60的层组的接收、以及图69和图70的可扩展接收。
S7101:点云数据接收方法可以进一步包括对点云数据进行解码。
根据实施例,解码操作可以包括图1的接收设备10004、图1的接收器10005、图1的点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和图11的解码器、图13的接收设备、图14的设备、以及图15、图48、图55至图58、图60、图68和图69的解码器。
参考图1,根据实施例的点云数据传输方法可以包括对点云数据进行编码和发送点云数据。
参考图16至图25,关于基于层的点云数据处理,点云数据的编码可以包括对点云数据的几何数据进行编码以及对点云数据的属性数据进行编码,其中该几何数据和属性数据基于细节级别(LOD)表示。比特流可以包含包括基于LOD编码的点云数据的切片。比特流可以包含关于与点云数据的LOD相关的层的信息。
根据实施例,LOD可以指的是数据的分区单元、八叉树的深度、层、分层片段数据等。几何数据可以基于八叉树的深度来表示,该八叉树的深度表示为8个子节点的分层关系,或者属性数据可以基于LOD被表示为多个级别。点云数据可以由几何编码器/解码器的八叉树生成器和/或属性编码器/解码器的LOD生成器以分层结构表示。基于分层结构可以有效地压缩和重构点云数据。
参考图26至图38,关于几何/属性切片结构,点云数据的编码可以包括基于树来呈现点云数据的几何数据、生成包括用于树的至少一个深度的点云数据的切片,或者生成包括包含树的至少一个深度的组的切片。对点云数据进行编码可以包括基于层来呈现点云数据的属性数据以及生成包括包含至少一层的组的切片,其中该组可以被划分为至少一个子组,并且比特流可以包含关于组的信息、关于层的信息以及关于子组的信息。对于该信息,参考在图29、图30和图37至图38所示的信息(即,字段和元素)的描述。
参考图31-38,关于直接模式,在点云数据的编码中,点云数据的几何数据树中包括的节点可以包括子节点,并且该子节点的点可以基于节点和子节点之间的关系被直接编码。可以单独发送包含直接编码的点的比特流。接收解码器可以基于此信息来执行基于层组的解码。
参考图39至图54,关于基于层组的部分编译和子比特流生成器,点云数据的编码可以包括基于层组来呈现点云数据,其中基于点云数据的深度或层来生成层组。该层组可以被划分为至少一个子组,其中层组和子组可以被包括在切片中。根据实施例的方法可以进一步包括基于层组来分割点云数据。关于切片、层组和子组的信息可以被生成并且在比特流中被发送,如图45、图46、图52至图54和图59所示。接收解码器可以基于此信息来执行基于层组的解码。
参考图60,关于层组切片,点云数据的编码可以进一步包括基于层组对点云数据进行切片。比特流的发送可以进一步包括选择比特流中的切片,其中切片可以包括点云数据的层组和层组的子组。基于点云数据的分辨率和兴趣区域(ROI),层组可以包括点云数据。
参考图67,关于基于层组的上下文配置,对点云数据的编码可以包括加载与层组相关的切片的上下文表,并且通过参考上下文表对层组的节点进行编码,其中可以基于与在包括节点的子组边界框中包括的节点有关的信息来对点云数据进行编码。可以不使用关于在子组边界框外的节点的信息,并且可以从与层组的切片连续的切片来生成参考上下文表。属于子组的节点可以被用作点云数据的邻居。关于邻居的信息可以被存储在图集中。
根据实施例的点云数据传输方法可以由发送设备执行。
根据实施例的点云数据发送设备可以包括编码器,该编码器被配置为对点云数据进行编码;以及发射器,该发射器被配置为发送点云数据。
根据实施例的点云数据接收方法可以对应于发送方法并且可以执行发送的逆过程。
根据实施例的点云数据接收方法可以包括接收包含点云数据的比特流以及对点云数据进行解码。
参考图55至图59,关于图块选择,根据实施例的方法可以进一步包括接收比特流、选择比特流中的图块、以及选择图块的切片。可替选地,该方法可以进一步包括接收比特流、选择比特流中的图块、选择图块的切片、以及选择与切片相关的层组和子组。可替选地,该方法可以进一步包括接收比特流、选择比特流中的图块、以及选择图块的层组和子组。可替选地,该方法可以进一步包括接收比特流并且对比特流中的层组和子组进行解码。
点云数据的解码可以进一步包括基于层组对点云数据进行切片,其中接收比特流可以包括接收比特流的切片,该切片包括点云数据的层组和层组的子组。基于点云数据的分辨率和兴趣区域(ROI),层组可以包括点云数据。
点云数据的解码可以包括加载与层组相关的切片的上下文表,并且通过参考上下文表来解码层组的节点,其中可以基于与在包括节点的子组边界框中包括的节点有关的信息来解码该点云数据。可以不使用关于在子组边界框外部的节点的信息,并且可以根据与层组的切片连续的切片来生成参考上下文表。属于子组的节点可以被用作点云数据的邻居。有关邻居的信息可以被包括在图集中。
点云数据接收方法可以由接收设备执行。
根据实施例的点云数据接收设备可以包括接收器,其被配置为接收包含点云数据的比特流;以及解码器,其被配置为对点云数据进行解码。
被配置为对点云数据进行解码的解码器可以基于层组对点云数据进行切片,并且接收器可以接收比特流的切片。切片可以包括点云数据的层组和层组的子组。基于点云数据的分辨率和兴趣区域(ROI),层组可以包括点云数据。
被配置为对点云数据进行解码的解码器可以加载与层组相关的切片的上下文表,通过参考上下文表来解码层组的节点,并且基于与在包括该节点的子组边界框中包括的节点相关的信息对点云数据进行解码。可以不使用关于子组边界框外部的节点的信息,并且可以从与层组的切片连续的切片来生成参考上下文表。属于子组的节点可以被用作点云数据的邻居,并且关于邻居的占用信息可以被包括在图集中。
因此,可以增加点云数据的压缩和重构的效率,并且可以有效地提供部分随机接入和可扩展的编译。
此外,除了将点云数据分区成切片的方法之外,可以进一步基于点云数据的结构和比特流中的信息来提供层组和子组边界处的上下文、平面缓冲区和邻居图集的处理。
另外,可以用信号通知具有多个切片的属性数据单元。除了用于部分可扩展性的属性切片方法之外,可以基于点云数据的结构和在比特流中的信息进一步提供在层组和子组边界处的上下文、平面缓冲区和邻居图集的处理。
除了分段用于八叉树几何编译的切片的方法之外,可以基于点云数据的结构和比特流中的信息来进一步提供在层组和子组边界处的上下文、平面缓冲区和邻居图集的处理。
已经就方法和/或设备而言描述了实施例,并且该方法的描述和设备的描述可以彼此互补地应用。
尽管为了简单起见已经单独描述了附图,但是可以通过将各自附图中所示的实施例组合来设计新的实施例。根据本领域地技术人员的需要设计可由计算机读取的记录有用于执行上述实施例的程序的记录介质也落在所附权利要求及其等同物的范围内。根据实施例的装置和方法可不限于上述实施例的配置和方法。可通过选择性地组合所有或一些实施例来对实施例进行各种修改。尽管参考附图描述了优选实施例,但本领域技术人员将理解,在不脱离所附权利要求中描述的本公开的精神或范围的情况下,可对实施例进行各种修改和变化。这些修改不应从实施例的技术思想或观点单独地理解。
实施例的设备的各种元件可以由硬件、软件、固件或其组合实现。实施例中的各种元件可由单个芯片实现,例如,单个硬件电路。根据实施例,根据实施例的组件可分别被实现为单独的芯片。根据实施例,根据实施例的设备的至少一个或更多个组件可以包括能够执行一个或更多个程序的一个或更多个处理器。一个或更多个程序可执行根据实施例的任一个或更多个操作/方法或者包括用于执行其的指令。用于执行根据实施例的设备的方法/操作的可执行指令可被存储在被配置成由一个或更多个处理器执行的非暂时性CRM或其它计算机程序产品中,或者可被存储在被配置成由一个或更多个处理器执行的暂时性CRM或其它计算机程序产品中。另外,根据实施例的存储器可用作不仅涵盖易失性存储器(例如,RAM),而且涵盖非易失性存储器、闪存和PROM的概念。另外,也可按载波(例如,经由互联网的传输)的形式实现。另外,处理器可读记录介质可分布到经由网络连接的计算机系统,使得处理器可读代码可按分布式方式存储和执行。
在本公开中,“/”和“,”应该被解释为指示“和/或”。例如,表达“A/B”可以意指“A和/或B”。此外,“A、B”可以意指“A和/或B”。此外,“A/B/C”可以意指“A、B和/或C中的至少一个”。另外,“A/B/C”可以意指“A、B和/或C中的至少一个”。此外,在本说明书中,术语“或”应该被解释为指示“和/或”。例如,表达“A或B”可以意指1)仅A、2)仅B或3)A和B二者。换言之,本文档中使用的术语“或”应该被解释为指示“另外地或另选地”。
诸如第一和第二的术语可用于描述实施例的各种元件。然而,根据实施例的各种组件不应受上述术语限制。这些术语仅用于将一个元件与另一元件相区分。例如,第一用户输入信号可以被称为第二用户输入信号。类似地,第二用户输入信号可以被称为第一用户输入信号。这些术语的使用应该不脱离各种实施例的范围来解释。第一用户输入信号和第二用户输入信号均是用户输入信号,但除非上下文清楚地另外规定,否则并不意指相同的用户输入信号。
用于描述实施例的术语被用于描述具体实施例的目的,并非旨在限制实施例。如在实施例的描述和权利要求中使用的,除非上下文清楚地另外规定,否则单数形式“一(a)”、“一个(an)”、“该(the)”包括复数个所指对象。表达“和/或”被用于包括术语的所有可能组合。诸如“包括”或“具有”的术语旨在指示图形、数量、步骤、元件和/或组件的存在,并且应该理解为不排除另外存在图形、数量、步骤、元件和/或组件的可能性。如本文所使用的,诸如“如果”和“当”的条件表达不限于可选情况,并且旨在当满足特定条件时执行相关操作或者根据特定条件解释相关定义。
根据本说明书中描述的实施例的操作可以由根据实施例的包括存储器和/或处理器的发送/接收设备来执行。存储器可以存储用于处理/控制根据实施例的操作的程序,并且处理器可以控制本说明书中描述的各种操作。处理器可以被称为控制器等。在实施例中,操作可以由固件、软件和/或其组合来执行。固件、软件和/或其组合可以存储在处理器或存储器中。
根据上述实施例的操作可以由根据实施例的发送设备和/或接收设备执行。发送/接收设备可以包括:发射器/接收器,其被配置成发送和接收媒体数据;存储器,其被配置成存储用于根据实施例的处理的指令(程序代码、算法、流程图和/或数据);以及处理器,其被配置成控制发送/接收设备的操作。
处理器可以被称为控制器等,并且可以对应于例如硬件、软件和/或其组合。根据上述实施例的操作可以由处理器执行。另外,处理器可以被实现为用于上述实施例的操作的编码器/解码器。
本公开的方式
如上所述,已经在实现实施例的最佳模式中描述了相关详情。
工业实用性
如上所述,实施例可完全或部分地适用于点云数据发送/接收设备和系统。
本领域的技术人员可以在实施例的范围内以各种方式对实施例进行改变或修改。
实施例可以包括在权利要求及其等效物的范围内的变化和修改。
Claims (15)
1.一种发送点云数据的方法,所述方法包括:
对点云数据进行编码;以及
发送所述点云数据。
2.根据权利要求1所述的方法,其中,所述点云数据的编码包括:
对所述点云数据的几何数据进行编码;以及
对所述点云数据的属性数据进行编码,
其中,基于细节级别(LOD)来表示所述几何数据和所述属性数据,
其中,比特流包含切片,所述切片包括基于所述LOD编码的所述点云数据,
其中,所述比特流包含与所述点云数据的所述LOD相关的层的信息。
3.根据权利要求1所述的方法,其中,所述点云数据的编码包括:
基于树来呈现所述点云数据的几何数据,并且生成包括用于所述树的至少一个深度的点云数据的切片;或者
生成包括组的切片,所述组包括所述树的至少一个深度,或者
其中,所述点云数据的编码包括:
基于层来呈现所述点云数据的属性数据,并且生成包括组的切片,所述组包括至少一个层;以及
将所述组划分为至少一个子组,
其中,所述比特流包含关于所述组的信息、关于所述层的信息以及关于所述子组的信息。
4.根据权利要求1所述的方法,其中,所述点云数据的几何数据树中包括的节点包括子节点,
其中,所述点云数据的编码包括:
基于所述节点与所述子节点的关系,对所述子节点的点进行直接编码;以及
单独地发送包含直接编码的点的比特流。
5.根据权利要求1所述的方法,其中,所述点云数据的编码包括:
基于层组来呈现所述点云数据,基于所述点云数据的深度或层来生成所述层组,
将所述层组划分为至少一个子组,
其中,所述层组和所述子组被包括在切片中,
所述方法进一步包括:
基于所述层组,对所述点云数据进行分区。
6.根据权利要求1所述的方法,其中,所述点云数据的编码进一步包括:
基于层组,对所述点云数据进行切片,
其中,所述比特流的传输进一步包括:
选择所述比特流的一部分,
其中,所述切片包括所述点云数据的所述层组和所述层组的子组,
其中,基于所述点云数据的分辨率和兴趣区域(ROI),所述层组包含所述点云数据。
7.根据权利要求6所述的方法,其中,所述点云数据的编码包括:
加载与所述层组相关的切片的上下文表;以及
通过参考所述上下文表,对所述层组的节点进行编码,
其中,基于与包括所述节点的子组边界框中包括的节点相关的信息,对所述点云数据进行编码,同时不使用所述子组边界框外部的节点,
其中,从与所述层组的所述切片连续的切片来生成参考的上下文表,
其中,属于所述子组的节点被用作所述点云数据的邻居,
其中,关于所述邻居的占用信息被存储在图集中。
8.一种用于发送点云数据的设备,包括:
编码器,所述编码器配置为对点云数据进行编码;以及
发射器,所述发射器配置为发送所述点云数据。
9.一种接收点云数据的方法,所述方法包括:
接收包含点云数据的比特流;以及
对所述点云数据进行解码。
10.根据权利要求9所述的方法,进一步包括:
接收所述比特流并且选择所述比特流的图块;以及
选择所述图块的切片,或者
所述方法进一步包括:
接收所述比特流并且选择所述比特流的图块;
选择所述图块的切片;以及
选择与所述切片相关的层组和子组,或者
所述方法进一步包括:
接收所述比特流并且选择所述比特流的图块;
选择所述图块的层组和子组,或者
所述方法进一步包括:
接收所述比特流并且对所述比特流的层组和子组进行解码。
11.根据权利要求9所述的方法,其中,对所述点云数据进行解码进一步包括:
基于层组,对所述点云数据进行切片,
其中,所述比特流的接收包括:
接收所述比特流的切片,
其中,所述切片包括所述点云数据的层组和所述层组的子组,
其中,基于所述点云数据的分辨率和兴趣区域(ROI),所述层组包含所述点云数据。
12.根据权利要求11所述的方法,其中,所述点云数据的解码包括:
加载与所述层组相关的切片的上下文表;以及
通过参考所述上下文表来解码所述层组的节点,
其中,基于与包括所述节点的子组边界框中包括的节点相关的信息来对所述点云数据进行解码,同时不使用所述子组边界框外部的节点,
其中,从与所述层组的所述切片连续的切片来生成参考的上下文表,
其中,属于所述子组的节点被用作所述点云数据的邻居,
其中,关于所述邻居的占用信息被包括在图集中。
13.一种用于接收点云数据的设备,包括:
接收器,所述接收器被配置为接收包含点云数据的比特流;以及
解码器,所述解码器被配置为对所述点云数据进行解码。
14.根据权利要求13所述的设备,其中,所述解码器被配置为对所述点云数据进行解码,并且基于所述层组对所述点云数据进行切片,
其中,所述接收器接收所述比特流的切片,
其中,所述切片包括所述点云数据的层组和所述层组的子组,
其中,基于所述点云数据的分辨率和兴趣区域(ROI),所述层组包含所述点云数据。
15.根据权利要求14所述的设备,其中,被配置为对所述点云数据进行解码的所述解码器被配置为:
加载与所述层组相关的切片的上下文表;以及
通过参考所述上下文表来解码所述层组的节点,
其中,基于与包括所述节点的子组边界框中包括的节点相关的信息来对所述点云数据进行解码,同时不使用所述子组边界框外部的节点,
其中,从与所述层组的切片连续的切片来生成参考的上下文表,
其中,属于所述子组的节点被用作所述点云数据的邻居,
其中,关于所述邻居的占用信息被包括在图集中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0092519 | 2021-07-14 | ||
KR20210092519 | 2021-07-14 | ||
PCT/KR2022/010265 WO2023287213A1 (ko) | 2021-07-14 | 2022-07-14 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117730539A true CN117730539A (zh) | 2024-03-19 |
Family
ID=84920237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280048937.9A Pending CN117730539A (zh) | 2021-07-14 | 2022-07-14 | 点云数据发送设备和方法以及点云数据接收设备和方法 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4373096A1 (zh) |
CN (1) | CN117730539A (zh) |
WO (1) | WO2023287213A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024196143A1 (ko) * | 2023-03-20 | 2024-09-26 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
CN116109752B (zh) * | 2023-04-12 | 2023-06-20 | 深圳市其域创新科技有限公司 | 一种点云实时采集结构化及渲染方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020072665A1 (en) * | 2018-10-02 | 2020-04-09 | Futurewei Technologies, Inc. | Hierarchical tree attribute coding in point cloud coding |
CN114073092A (zh) * | 2019-06-28 | 2022-02-18 | Lg电子株式会社 | 用于处理点云数据的设备和方法 |
US11140395B2 (en) * | 2019-07-03 | 2021-10-05 | Tencent America LLC | Method and apparatus for adaptive point cloud attribute coding |
WO2021049333A1 (ja) * | 2019-09-11 | 2021-03-18 | ソニー株式会社 | 情報処理装置、情報処理方法、再生処理装置及び再生処理方法 |
CN114207668A (zh) * | 2019-09-30 | 2022-03-18 | Oppo广东移动通信有限公司 | 划分方法、编码器、解码器以及计算机存储介质 |
-
2022
- 2022-07-14 EP EP22842475.0A patent/EP4373096A1/en active Pending
- 2022-07-14 CN CN202280048937.9A patent/CN117730539A/zh active Pending
- 2022-07-14 WO PCT/KR2022/010265 patent/WO2023287213A1/ko active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP4373096A1 (en) | 2024-05-22 |
WO2023287213A1 (ko) | 2023-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114503571B (zh) | 点云数据发送装置和方法、点云数据接收装置和方法 | |
CN114616827A (zh) | 点云数据发送装置及方法、点云数据接收装置及方法 | |
CN114930397A (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
US20220383552A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
CN115428467B (zh) | 点云数据发送设备和方法、点云数据接收设备和方法 | |
US20220230360A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US20230260163A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
CN114009046A (zh) | 用于处理点云数据的装置和方法 | |
EP4243413A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
EP4373096A1 (en) | Point cloud data transmission device and method, and point cloud data reception device and method | |
CN114097247A (zh) | 点云数据发送设备、点云数据发送方法、点云数据接收设备、以及点云数据接收方法 | |
CN117121487A (zh) | 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法 | |
EP4240014A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
CN114051730A (zh) | 处理点云数据的设备和方法 | |
EP4228267A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
CN117178555A (zh) | 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法 | |
CN114930860B (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
CN114402624B (zh) | 点云数据处理设备和方法 | |
EP4373097A1 (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 | |
CN116438799A (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
CN115702568A (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
EP4412208A1 (en) | Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device | |
CN114503586B (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
EP4425933A1 (en) | Point cloud data transmission device and method, and point cloud data reception device and method |
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 |