CN115918093A - 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法 - Google Patents
点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法 Download PDFInfo
- Publication number
- CN115918093A CN115918093A CN202180044178.4A CN202180044178A CN115918093A CN 115918093 A CN115918093 A CN 115918093A CN 202180044178 A CN202180044178 A CN 202180044178A CN 115918093 A CN115918093 A CN 115918093A
- Authority
- CN
- China
- Prior art keywords
- point cloud
- information
- atlas
- cloud data
- data
- 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 337
- 230000011664 signaling Effects 0.000 claims abstract description 81
- 230000005540 biological transmission Effects 0.000 claims abstract description 59
- 230000036961 partial effect Effects 0.000 claims abstract description 33
- 238000013507 mapping Methods 0.000 claims description 84
- 238000009877 rendering Methods 0.000 claims description 32
- 230000003068 static effect Effects 0.000 claims description 18
- 230000008859 change Effects 0.000 claims description 17
- 239000000523 sample Substances 0.000 description 435
- 230000008569 process Effects 0.000 description 206
- 239000012634 fragment Substances 0.000 description 87
- 238000007906 compression Methods 0.000 description 61
- 230000006835 compression Effects 0.000 description 56
- 230000000007 visual effect Effects 0.000 description 48
- 238000012545 processing Methods 0.000 description 45
- 230000033001 locomotion Effects 0.000 description 41
- 238000009499 grossing Methods 0.000 description 32
- 238000003860 storage Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 25
- 239000013598 vector Substances 0.000 description 24
- 230000006978 adaptation Effects 0.000 description 22
- 238000013139 quantization Methods 0.000 description 22
- 238000001914 filtration Methods 0.000 description 20
- 238000005516 engineering process Methods 0.000 description 19
- 230000011218 segmentation Effects 0.000 description 17
- 238000012856 packing Methods 0.000 description 15
- 238000005538 encapsulation Methods 0.000 description 14
- 238000005192 partition Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 12
- 230000006837 decompression Effects 0.000 description 12
- 239000000284 extract Substances 0.000 description 10
- 238000013144 data compression Methods 0.000 description 9
- 230000007774 longterm Effects 0.000 description 9
- 239000000463 material Substances 0.000 description 8
- 230000009466 transformation Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000002310 reflectometry Methods 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 5
- 229960000892 attapulgite Drugs 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 229910052625 palygorskite Inorganic materials 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 241000023320 Luma <angiosperm> Species 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- AWSBQWZZLBPUQH-UHFFFAOYSA-N mdat Chemical compound C1=C2CC(N)CCC2=CC2=C1OCO2 AWSBQWZZLBPUQH-UHFFFAOYSA-N 0.000 description 4
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 4
- 230000000153 supplemental effect Effects 0.000 description 4
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000001131 transforming effect Effects 0.000 description 3
- 101100490488 Mus musculus Add3 gene Proteins 0.000 description 2
- FAPWRFPIFSIZLT-UHFFFAOYSA-M Sodium chloride Chemical compound [Na+].[Cl-] FAPWRFPIFSIZLT-UHFFFAOYSA-M 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 2
- 230000002146 bilateral effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 239000000945 filler Substances 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000013074 reference sample Substances 0.000 description 2
- 101100352432 Caenorhabditis elegans acl-6 gene Proteins 0.000 description 1
- 230000005526 G1 to G0 transition Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000010339 dilation Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- -1 entity group Substances 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/762—Media network packet handling at the source
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01B—MEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
- G01B11/00—Measuring arrangements characterised by the use of optical techniques
- G01B11/24—Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures
- G01B11/245—Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures using a plurality of fixed, simultaneously operating transducers
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
根据实施方式的点云数据发送方法包括以下步骤:对点云数据进行编码;将包括编码的点云数据的比特流封装到文件中;以及发送所述文件,其中,比特流被存储在文件的一个或更多个轨道中,文件包括信令数据,并且点云数据由一个或更多个对象组成;其中,信令数据可以包括至少一个参数集和用于点云数据的部分访问的信息。
Description
技术领域
实施方式提供了一种提供点云内容以向用户提供诸如虚拟现实(VR)、增强现实(AR)、混合现实(MR)和自主驾驶服务之类的各种服务的方法。
背景技术
点云是三维(3D)空间中的点集合。因为3D空间中的点的数量大,所以难以生成点云数据。
需要大吞吐量以发送和接收点云的数据。
发明内容
技术问题
本公开的一个目的在于提供一种用于高效地发送和接收点云的点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法。
本公开的另一目的在于提供一种用于解决延迟和编码/解码复杂度的点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法。
本公开的另一目的在于提供一种用于通过发信号通知关于一个或更多个阿特拉斯的信息来向用户提供优化的点云内容的点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法。
本公开的另一目的在于提供一种用于通过发信号通知空间区域信息和与对象和阿特拉斯相关的信息来向用户提供优化的点云内容的点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法。
本公开的另一目的在于提供一种用于通过以文件格式级别发信号通知空间区域信息和与对象和阿特拉斯相关的信息来向用户提供优化的点云内容的点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法。
本公开的另一目的在于提供一种用于发信号通知在轨道或项目中是静态的或随时间改变的空间区域信息和与对象和阿特拉斯相关的信息来高效地向用户提供点云数据的点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法。
本公开的附加优点、目的和特征将在以下描述中部分地阐述,并且对于本领域普通技术人员而言在考察以下内容后将部分地变得显而易见或者可从本公开的实践学习。本公开的目的和其它优点可通过所撰写的说明书及其权利要求以及附图中具体指出的结构来实现和获得。
技术方案
为了实现这些目的和其它优点并且根据本公开的目的,如本文所实现和广泛描述的,一种发送点云数据的方法可以包括以下步骤:对点云数据进行编码;将包括编码的点云数据的比特流封装到文件中;以及发送所述文件,所述比特流被存储在所述文件的一个或更多个轨道中,所述文件还包括信令数据,所述点云数据由一个或更多个对象组成,并且所述信令数据包括至少一个参数集和用于所述点云数据的部分访问的信息。
根据实施方式,所述点云数据包括通过基于视频的编码方案编码的几何数据、属性数据和占用图数据。
根据实施方式,用于部分访问的所述信息是不随时间改变的静态信息或随时间动态改变的动态信息中的至少一者。
根据实施方式,所述一个或更多个对象与所述一个或更多个阿特拉斯拼块相关联,所述一个或更多个阿特拉斯拼块构成阿特拉斯帧,并且用于部分访问的所述信息包括所述一个或更多个对象与所述一个或更多个阿特拉斯拼块之间的映射信息。
根据实施方式,所述映射信息包括用于标识所述一个或更多个对象中的每一个的对象索引信息、用于标识与由所述对象索引信息指示的对象相关联的阿特拉斯拼块的数量的数量信息以及用于标识与所述对象相关联的所述阿特拉斯拼块中的每一个的阿特拉斯标识信息。
根据实施方式,一种点云数据发送设备可以包括:编码器,所述编码器用于对点云数据进行编码;封装器,所述封装器用于将包括编码的点云数据的比特流封装到文件中;以及发送器,所述发送器用于发送所述文件,所述比特流被存储在所述文件的一个或更多个轨道中,所述文件还包括信令数据,所述点云数据由一个或更多个对象组成;并且所述信令数据包括至少一个参数集和用于所述点云数据的部分访问的信息。
根据实施方式,所述点云数据包括通过基于视频的编码方案编码的几何数据、属性数据和占用图数据。
根据实施方式,用于部分访问的所述信息是不随时间改变的静态信息或随时间动态改变的动态信息中的至少一者。
根据实施方式,所述一个或更多个对象与所述一个或更多个阿特拉斯拼块相关联,所述一个或更多个阿特拉斯拼块构成阿特拉斯帧,并且用于部分访问的所述信息包括所述一个或更多个对象与所述一个或更多个阿特拉斯拼块之间的映射信息。
根据实施方式,所述映射信息包括用于标识所述一个或更多个对象中的每一个的对象索引信息、用于标识与由所述对象索引信息指示的对象相关联的阿特拉斯拼块的数量的数量信息以及用于标识与所述对象相关联的所述阿特拉斯拼块中的每一个的阿特拉斯标识信息。
根据实施方式,一种点云数据接收方法可以包括以下步骤:接收文件;将所述文件解封装成包括点云数据的比特流,所述比特流被存储在所述文件的一个或更多个轨道中,并且所述文件还包括信令数据;基于所述信令数据对所述点云数据的全部或一部分进行解码;以及基于所述信令数据渲染解码的点云数据的全部或一部分,所述点云数据由一个或更多个对象组成,并且所述信令数据包括至少一个参数集和用于所述点云数据的部分访问的信息。
根据实施方式,所述点云数据包括通过基于视频的编码方案解码的几何数据、属性数据和占用图数据。
根据实施方式,用于部分访问的所述信息是不随时间改变的静态信息或随时间动态改变的动态信息中的至少一者。
根据实施方式,所述一个或更多个对象与所述一个或更多个阿特拉斯拼块相关联,所述一个或更多个阿特拉斯拼块构成阿特拉斯帧,并且用于部分访问的所述信息包括所述一个或更多个对象与所述一个或更多个阿特拉斯拼块之间的映射信息。
根据实施方式,所述映射信息包括用于标识所述一个或更多个对象中的每一个的对象索引信息、用于标识与由所述对象索引信息指示的对象相关联的阿特拉斯拼块的数量的数量信息以及用于标识与所述对象相关联的所述阿特拉斯拼块中的每一个的阿特拉斯标识信息。
根据实施方式,一种点云数据接收设备可以包括:接收器,所述接收器用于接收文件;解封装器,所述解封装器用于将所述文件解封装成包括点云数据的比特流,所述比特流被存储在所述文件的一个或更多个轨道中,并且所述文件还包括信令数据;解码器,所述解码器用于基于所述信令数据对所述点云数据的全部或一部分进行解码;以及渲染器,所述渲染器用于基于所述信令数据渲染解码的点云数据的全部或一部分,所述点云数据由一个或更多个对象组成;并且所述信令数据包括至少一个参数集和用于所述点云数据的部分访问的信息。
根据实施方式,所述点云数据包括通过基于视频的编码方案解码的几何数据、属性数据和占用图数据。
根据实施方式,用于部分访问的所述信息是不随时间改变的静态信息或随时间动态改变的动态信息中的至少一者。
根据实施方式,所述一个或更多个对象与所述一个或更多个阿特拉斯拼块相关联,所述一个或更多个阿特拉斯拼块构成阿特拉斯帧,并且用于部分访问的所述信息包括所述一个或更多个对象与所述一个或更多个阿特拉斯拼块之间的映射信息。
根据实施方式,所述映射信息包括用于标识所述一个或更多个对象中的每一个的对象索引信息、用于标识与由所述对象索引信息指示的对象相关联的阿特拉斯拼块的数量的数量信息以及用于标识与所述对象相关联的所述阿特拉斯拼块中的每一个的阿特拉斯标识信息。
有利效果
根据实施方式的点云数据发送方法、发送装置、点云数据接收方法和接收装置可以提供良好质量的点云服务。
根据实施方式的点云数据发送方法、发送装置、点云数据接收方法和接收装置可以实现各种视频编解码方案。
根据实施方式的点云数据发送方法、发送装置、点云数据接收方法和接收装置可以提供诸如自驾驶服务之类的通用点云内容。
根据实施方式的点云数据发送方法、发送装置、点云数据接收方法和接收装置可以通过配置V-PCC比特流并允许文件被发送、接收和存储来提供最佳的点云内容服务。
利用根据实施方式的点云数据发送方法、发送装置、点云数据接收方法和接收装置,可以通过在V-PCC单元的基础上复用V-PCC比特流来高效地访问V-PCC比特流。另外,V-PCC比特流的阿特拉斯比特流(或阿特拉斯子流)可以有效地存储在文件中的轨道中,从而被发送和接收。
利用根据实施方式的点云数据发送方法、发送装置、点云数据接收方法和接收装置,可以将V-PCC比特流划分并存储在文件中的一个或多个轨道中,可以发信号通知指示存储在V-PCC比特流中的多个轨道之间的关系的信息。因此,点云比特流的文件可以被高效地存储和发送。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,用于V-PCC比特流中的数据处理和渲染的元数据可以在V-PCC比特流中被发送和接收。因此,可以提供最佳的点云内容服务。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,可以在文件的轨道或项目中存储和递送阿特拉斯参数集,以用于对V-PCC比特流中的阿特拉斯子流进行解码和渲染。因此,V-PCC解码器/播放器可以在解码V-PCC比特流和阿特拉斯子流或者解析和处理轨道/项目中的比特流时有效地操作。另外,即使当阿特拉斯子比特流被划分为一个或更多个轨道并存储时,必要的阿特拉斯数据和相关的视频数据也可以被有效地选择、提取和解码。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,点云数据可以被划分成多个空间区域以被处理以用于对点云内容的部分访问和/或空间访问。因此,可以实时地执行在发送侧的编码和发送操作以及在接收侧的解码和渲染操作,并且可以以低延迟对其进行处理。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,可以提供关于从点云内容分割的空间区域的空间区域信息。因此,可以在考虑接收侧处的播放器或用户环境的情况下以各种方式访问点云内容。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,可以通过轨道以文件格式级别发送和接收用于V-PCC比特流中的数据处理和渲染的空间区域信息。因此,可以提供最佳点云内容服务。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,根据从点云内容划分的一个或更多个对象与阿特拉斯帧的一个或更多个阿特拉斯拼块之间的关联程度,可以在样本、样本组、样本条目、轨道组中、在轨道中的实体组上或在定时元数据轨道中递送对象与阿特拉斯拼块之间的关联。因此,可以启用基于对象的访问和对与对象或相关联的点云数据相关联的阿特拉斯拼块的访问。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,根据从点云内容划分的一个或更多个对象与一个或更多个阿特拉斯之间的关联程度,可以在样本、样本组、样本条目、轨道组中、在轨道中的实体组上或在定时元数据轨道中递送对象和阿特拉斯之间的关联。因此,可以高效地提取与对象相关联的阿特拉斯。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,用于处理和渲染V-PCC比特流中的数据的SEI消息可以存储并递送到文件中的轨道或项目中。因此,PCC解码器/播放器可以在对V-PCC比特流进行解码的步骤中或对轨道/项目中的对应比特流进行解析以及处理的步骤中高效地操作。
附图说明
附图被包括以提供本公开的进一步理解,并且被并入本申请中并构成本申请的一部分,附图示出本公开的实施方式并与说明书一起用于说明本公开的原理。附图中:
图1示出根据实施方式的用于提供点云内容的发送/接收系统的示例性结构。
图2示出根据实施方式的点云数据的捕获。
图3示出根据实施方式的示例性点云、几何和纹理图像。
图4示出根据实施方式的示例性V-PCC编码处理。
图5示出根据实施方式的表面的切平面和法向量的示例。
图6示出根据实施方式的点云的示例性边界框。
图7示出根据实施方式的占用图上的各个补片位置的确定的示例。
图8示出根据实施方式的法向轴、切向轴和双切轴之间的示例性关系。
图9示出根据实施方式的投影模式的最小模式和最大模式的示例性配置。
图10示出根据实施方式的示例性EDD码。
图11示出根据实施方式的基于邻近点的颜色值重新着色的示例。
图12示出根据实施方式的推拉式背景填充的示例。
图13示出根据实施方式的4*4块的示例性可能遍历顺序。
图14示出根据实施方式的示例性最佳遍历顺序。
图15示出根据实施方式的示例性2D视频/图像编码器。
图16示出根据实施方式的示例性V-PCC解码处理。
图17示出根据实施方式的示例性2D视频/图像解码器。
图18是示出根据本公开的实施方式的发送装置的操作的流程图。
图19是示出根据实施方式的接收装置的操作的流程图。
图20示出根据实施方式的用于点云数据的基于V-PCC的存储和流传输的示例性架构。
图21是根据实施方式的用于存储和发送点云数据的装置的示例性框图。
图22是根据实施方式的点云数据接收装置的示例性框图。
图23示出根据实施方式的可与点云数据发送/接收方法/装置结合操作的示例性结构。
图24示出根据实施方式的对象与阿特拉斯拼块之间的关系的示例。
图25是示出根据实施方式的示例性V-PCC比特流结构的图。
图26示出根据实施方式的由V-PCC比特流中的样本流V-PCC单元载送的数据的示例。
图27示出根据实施方式的包含在V-PCC比特流中的样本流V-PCC头的示例性语法结构。
图28示出根据实施方式的样本流V-PCC单元的示例性语法结构。
图29示出根据实施方式的V-PCC单元的示例性语法结构。
图30示出根据实施方式的V-PCC单元头的示例性语法结构。
图31示出根据实施方式的指派给vuh_unit_type字段的示例性V-PCC单元类型。
图32示出根据实施方式的V-PCC单元有效载荷(vpcc_unit_payload())的示例性语法结构。
图33示出根据实施方式的包括在V-PCC单元有效载荷中的V-PCC参数集的示例性语法结构。
图34示出根据实施方式将阿特拉斯帧划分为多个拼块的示例。
图35是示出根据实施方式的示例性阿特拉斯子流结构的图。
图36示出根据实施方式的包括在阿特拉斯子流中的样本流NAL头的示例性语法结构。
图37示出根据实施方式的样本流NAL单元的示例性语法结构。
图38示出根据实施方式的nal_unit(NumBytesInNalUnit)的语法结构的实施方式。
图39示出根据实施方式的NAL单元头的语法结构的实施方式。
图40示出根据实施方式指派给nal_unit_type字段的RBSP数据结构的类型的示例。
图41示出根据实施方式的阿特拉斯序列参数集的语法的语法结构。
图42示出根据实施方式的阿特拉斯帧参数集的语法结构。
图43示出根据实施方式的阿特拉斯帧拼块信息的语法结构。
图44示出根据实施方式的阿特拉斯适配参数集的语法结构。
图45示出根据实施方式的相机参数的语法结构。
图46示出根据实施方式的指派给acp_camera_model字段的相机模型的示例。
图47示出根据实施方式的阿特拉斯拼块组层的语法结构。
图48示出根据实施方式的包括在阿特拉斯拼块组层中的阿特拉斯拼块组(或拼块)头的语法结构。
图49示出根据实施方式的指派给atgh_type字段的编码类型的示例。
图50示出根据实施方式的ref_list_struct()语法结构的实施方式。
图51示出根据实施方式的阿特拉斯拼块组(或拼块)数据单元。
图52示出根据实施方式的当atgh_type字段指示I_TILE_GRP时分配给atgdu_patch_mode字段的补片模式类型的示例。
图53示出根据实施方式的当atgh_type字段指示P_TILE_GRP时指派给atgdu_patch_mode字段的补片模式类型的示例。
图54示出根据实施方式的当atgh_type字段指示SKIP_TILE_GRP时指派给atgdu_patch_mode字段的补片模式类型的示例。
图55示出根据实施方式的补片信息数据。
图56示出根据实施方式的补片数据单元的语法结构。
图57示出根据实施方式的关于补片取向的旋转和偏移。
图58示出根据实施方式的SEI信息的语法结构。
图59示出根据实施方式的SEI消息有效载荷的示例性语法结构。
图60是示出根据实施方式的根据样本条目类型的样本条目结构和样本格式的示例的表。
图61是示出根据实施方式的通过一个V3C轨道的一个或更多个阿特拉斯拼块的发送的示例的图。
图62是示出根据实施方式的通过多个V3C轨道的一个或更多个阿特拉斯拼块的发送的示例的图。
图63是示出根据实施方式的用于存储具有单个阿特拉斯拼块的单个阿特拉斯(或单个阿特拉斯比特流)的示例性轨道结构的图。
图64是示出根据实施方式的用于存储具有多个阿特拉斯拼块的单个阿特拉斯的示例性轨道结构的图。
图65是示出根据实施方式的用于存储多个阿特拉斯的示例性轨道结构的图。
图66是示出根据实施方式的用于存储多个阿特拉斯的示例性轨道结构的图。
图67是示出根据实施方式的样本条目类型与轨道参考之间的关系的示例的表。
图68是示出根据实施方式的用于封装非定时V-PCC数据的示例性结构的图。
图69是根据实施方式的用于发送点云数据的方法的流程图。
图70是示出根据实施方式的用于接收点云数据的方法的流程图。
具体实施方式
现在将详细参考本公开的优选实施方式,其示例示出于附图中。下面将参照附图给出的详细描述旨在说明本公开的示例性实施方式,而非示出可根据本公开实现的仅有实施方式。以下详细描述包括具体细节以便提供本公开的彻底理解。然而,对于本领域技术人员而言将显而易见的是,本公开可在没有这些具体细节的情况下实践。
尽管本公开中使用的大多数术语选自本领域中广泛使用的通用术语,但是一些术语由申请人任意选择并且在以下描述中根据需要详细说明其含义。因此,本公开应该基于术语的预期含义而非其简单名称或含义来理解。
图1示出根据实施方式的用于提供点云内容的发送/接收系统的示例性结构。
本公开提供一种提供点云内容以向用户提供诸如虚拟现实(VR)、增强现实(AR)、混合现实(MR)和自主驾驶的各种服务的方法。根据实施方式的点云数据表示将对象表示为点的数据,并且可以被称作点云、点云数据、点云视频数据、点云图像数据等。
根据实施方式的点云数据发送装置10000可包括点云视频获取单元10001、点云视频编码器10002、文件/片段封装模块(文件/片段封装器)10003和/或发送器(或通信模块)10004。根据实施方式的发送装置可取得和处理点云视频(或点云内容)并将其发送。根据实施方式,发送装置可包括固定站、基站收发器系统(BTS)、网络、人工智能(AI)装置和/或系统、机器人、以及AR/VR/XR装置和/或服务器。根据实施方式,发送装置10000可包括被配置为使用无线电接入技术(例如,5G新RAT(NR)、长期演进(LTE))与基站和/或其它无线装置执行通信的装置、机器人、车辆、AR/VR/XR装置、便携式装置、家用电器、物联网(IoT)装置和AI装置/服务器。
根据实施方式的点云视频获取单元10001通过捕获、合成或生成点云视频的处理来获取点云视频。
根据实施方式的点云视频编码器10002对从点云视频获取单元10001获取的点云视频数据进行编码。根据实施方式,点云视频编码器10002可以被称为点云编码器、点云数据编码器、编码器等。根据实施方式的点云压缩编码(编码)不限于上述实施方式。点云视频编码器可以输出包括编码的点云视频数据的比特流。比特流不仅可以包括编码的点云视频数据,还可以包括与点云视频数据的编码相关的信令信息。
根据实施方式的点云视频编码器10002可以支持基于几何的点云压缩(G-PCC)编码方案和/或基于视频的点云压缩(V-PCC)编码方案。此外,点云视频编码器10002可以对点云(称作点云数据或点)和/或与点云相关的信令数据进行编码。
根据实施方式的文件/片段封装模块10003以文件和/或片段的形式封装点云数据。根据实施方式的点云数据发送方法/装置可以以文件和/或片段的形式发送点云数据。
根据实施方式的发送器(或通信模块)10004以比特流的形式发送编码的点云视频数据。根据实施方式,文件或片段可以通过网络发送到接收装置,或者存储在数字存储介质(例如,USB、SD、CD、DVD、蓝光、HDD、SSD等)中。根据实施方式的发送器能够通过4G、5G、6G等网络与接收装置(或接收器)有线/无线通信。另外,发送器可根据网络系统(例如,4G、5G或6G通信网络系统)执行必要的数据处理操作。发送装置可按照按需方式发送封装的数据。
根据实施方式的点云数据接收装置10005可包括接收器10006、文件/片段解封装器(或文件/片段解封装模块)10007、点云视频解码器10008和/或渲染器10009。根据实施方式,接收装置可包括被配置为使用无线电接入技术(例如,5G新RAT(NR)、长期演进(LTE))与基站和/或其它无线装置执行通信的装置、机器人、车辆、AR/VR/XR装置、便携式装置、家用电器、物联网(IoT)装置和AI装置/服务器。
根据实施方式的接收器10006接收包含点云视频数据的比特流。根据实施方式,接收器10006可向点云数据发送装置10000发送反馈信息。
文件/片段解封装模块10007将包含点云数据的文件和/或片段解封装。
点云视频解码器10008对所接收的点云视频数据进行解码。
渲染器10009渲染解码的点云视频数据。根据实施方式,渲染器10009可将在接收侧获得的反馈信息发送给点云视频解码器10008。根据实施方式的点云视频数据可将反馈信息载送到接收器10006。根据实施方式,点云发送装置所接收的反馈信息可被提供给点云视频编码器10002。
图中由虚线指示的箭头表示接收装置10005所获取的反馈信息的传输路径。反馈信息是反映与消费点云内容的用户的交互性的信息,并且包括用户信息(例如,头部取向信息、视口信息等)。具体地,当点云内容是用于需要与用户交互的服务(例如,自主驾驶服务等)的内容时,反馈信息可被提供给内容发送方(例如,发送装置10000)和/或服务提供商。根据实施方式,反馈信息可在接收装置10005以及发送装置10000中使用,并且可不提供。
根据实施方式的头部取向信息是关于用户的头部位置、取向、角度、运动等的信息。根据实施方式的接收装置10005可基于头部取向信息来计算视口信息。视口信息可以是关于用户正在观看的点云视频的区域的信息。视点(或取向)是用户观看点云视频的点,并且可指视口区域的中心点。也就是说,视口是以视点为中心的区域,并且区域的尺寸和形状可由视场(FOV)确定。换句话说,视口是根据视觉相机或用户的位置和视点(或取向)来确定的,点云数据基于视口信息在视口中被渲染。因此,除了头部取向信息之外,接收装置10005还可基于装置所支持的垂直或水平FOV来提取视口信息。另外,接收装置10005执行注视分析以检查用户如何消费点云、点云视频中用户注视的区域、注视时间等。根据实施方式,接收装置10005可将包括注视分析结果的反馈信息发送到发送装置10000。根据实施方式的反馈信息可在渲染和/或显示过程中获取。根据实施方式的反馈信息可由包括在接收装置10005中的一个或更多个传感器取得。此外,根据实施方式,反馈信息可由渲染器10009或单独的外部元件(或装置、组件等)取得。图1中的虚线表示发送渲染器10009所取得的反馈信息的过程。点云内容提供系统可基于反馈信息来处理(编码/解码)点云数据。因此,点云视频解码器10008可基于反馈信息来执行解码操作。接收装置10005可将反馈信息发送到发送装置。发送装置(或点云视频编码器10002)可基于反馈信息来执行编码操作。因此,点云内容提供系统可基于反馈信息高效地处理必要数据(例如,与用户的头部位置对应的点云数据)而非处理(编码/解码)全部点云数据,并将点云内容提供给用户。
根据实施方式,发送装置10000可被称为编码器、发送装置、发送器等,接收装置10005可被称为解码器、接收装置、接收器等。
根据实施方式的图1的点云内容提供系统中(通过获取/编码/传输/解码/渲染的一系列过程)处理的点云数据可被称为点云内容数据或点云视频数据。根据实施方式,点云内容数据可用作涵盖与点云数据有关的元数据或信令信息的概念。
图1所示的点云内容提供系统的元件可由硬件、软件、处理器和/或其组合实现。
实施方式可提供一种提供点云内容以向用户提供诸如虚拟现实(VR)、增强现实(AR)、混合现实(MR)和自主驾驶的各种服务的方法。
为了提供点云内容服务,可首先获取点云视频。所获取的点云视频可通过一系列处理发送到接收侧,并且接收侧可将所接收的数据处理回到原始点云视频并渲染所处理的点云视频。由此,点云视频可被提供给用户。实施方式提供一种有效地执行这一系列处理的方法。
用于提供点云内容服务的所有处理(点云数据发送方法和/或点云数据接收方法)可包括获取处理、编码处理、传输处理、解码处理、渲染处理和/或反馈处理。
根据实施方式,提供点云内容(或点云数据)的处理可被称为点云压缩处理。根据实施方式,点云压缩处理可表示基于视频的点云压缩(V-PCC)处理。
根据实施方式的点云数据发送装置和点云数据接收装置的各个元件可以是硬件、软件、处理器和/或其组合。
点云压缩系统可包括发送装置和接收装置。根据实施方式,发送装置可以称作编码器、发送设备、发送器、点云数据发送设备等。根据实施方式,接收装置可以称作解码器、接收设备、接收器、点云数据接收设备等。发送装置可通过对点云视频进行编码来输出比特流,并通过数字存储介质或网络将其以文件或流(流传输片段)的形式传送至接收装置。数字存储介质可包括诸如USB、SD、CD、DVD、蓝光、HDD和SSD的各种存储介质。
发送装置可包括点云视频获取单元、点云视频编码器、文件/片段封装器和发送单元(发送器),如图1所示。接收装置可包括接收器、文件/片段解封装器、点云视频解码器和渲染器,如图1所示。编码器可被称为点云视频/画面/画面/帧编码器,解码器可被称为点云视频/画面/画面/帧解码装置。渲染器可包括显示器。渲染器和/或显示器可被配置成单独的装置或外部组件。发送装置和接收装置还可包括用于反馈处理的单独的内部或外部模块/单元/组件。根据实施方式,发送装置和接收装置中的每个元件可以由硬件、软件和/或处理器配置。
根据实施方式,接收装置的操作可以是发送装置的操作的反向处理。
点云视频获取器可通过捕获、编排或生成点云视频的处理来执行获取点云视频的处理。在获取处理中,可生成多个点的3D位置(x,y,z)/属性(颜色、反射率、透明度等)的数据,例如polygon文件格式(PLY)(或斯坦福三角形(stanford triangle)格式)文件。对于具有多个帧的视频,可获取一个或更多个文件。在捕获处理期间,可生成点云相关元数据(例如,捕获相关元数据)。
根据实施方式的点云数据发送装置可包括被配置为对点云数据进行编码的编码器以及被配置为发送点云数据或包括点云数据的比特流的发送器。
根据实施方式的点云数据接收装置可包括被配置为接收包括点云数据的比特流的接收器、被配置为对点云数据进行解码的解码器以及被配置为渲染点云数据的渲染器。
根据实施方式的方法/装置表示点云数据发送装置和/或点云数据接收装置。
图2示出根据实施方式的点云数据的捕获。
根据实施方式的点云数据(点云视频数据)可通过相机等来获取。根据实施方式的捕获技术可包括例如面向内和/或面向外。
在根据实施方式的面向内中,向内面向点云数据的对象的一个或更多个相机可从对象外部拍摄对象。
在根据实施方式的面向外中,向外面向点云数据的对象的一个或更多个相机可拍摄对象。例如,根据实施方式,可存在四个相机。
根据实施方式的点云数据或点云内容可以是在各种类型的3D空间中表示的对象/环境的视频或静止图像。根据实施方式,点云内容可以包括对象的视频/音频/图像。
作为捕获点云内容的设备,可配置能够获取深度的相机设备(红外图案投影仪和红外相机的组合)和能够提取与深度信息对应的颜色信息的RGB相机的组合。另选地,可通过使用雷达系统的LiDAR来提取深度信息,该雷达系统通过发射激光脉冲并测量返回时间来测量反射器的位置坐标。可从深度信息提取由3D空间中的点组成的几何形状,并且可从RGB信息提取表示各个点的颜色/反射率的属性。点云内容可包括关于位置(x,y,z)和点的颜色(YCbCr或RGB)或反射率(r)的信息。对于点云内容,可使用捕获外部环境的面向外技术和捕获中心对象的面向内技术。在VR/AR环境中,当对象(例如,诸如角色、玩家、事物或演员的核心对象)被配置到用户可在任何方向(360度)观看的点云内容中时,捕获相机的配置可基于面向内技术。当在诸如自主驾驶的车辆模式下当前周围环境被配置到点云内容中时,捕获相机的配置可基于面向外技术。由于可通过多个相机捕获点云内容,所以可能需要在捕获内容之前执行相机校准处理以为相机配置全局坐标系。
点云内容可以是存在于各种类型的3D空间中的对象/环境的视频或静止图像。
另外,在点云内容获取方法中,可基于捕获的点云视频编排任何点云视频。另选地,当要提供计算机生成的虚拟空间的点云视频时,可能不执行利用实际相机的捕获。在这种情况下,捕获处理可简单地由生成相关数据的处理代替。
可能需要对捕获的点云视频进行后处理以改进内容的质量。在视频捕获处理中,可在相机设备所提供的范围内调节最大/最小深度。即使在调节之后,仍可能存在不想要的区域的点数据。因此,可执行去除不想要的区域(例如,背景)或识别连接的空间并填充空间孔洞的后处理。另外,从共享空间坐标系的相机提取的点云可通过基于通过校准处理获取的各个相机的位置坐标将各个点变换到全局坐标系中的处理而被整合为一条内容。由此,可生成具有宽范围的一条点云内容,或者可获取具有高密度点的点云内容。
点云视频编码器10002可将输入点云视频编码为一个或更多个视频流。一个点云视频可包括多个帧,各个帧可对应于静止图像/画面。在本说明书中,点云视频可包括点云图像/帧/画面/视频/音频。另外,术语“点云视频”可与点云图像/帧/画面互换使用。点云视频编码器10002可执行基于视频的点云压缩(V-PCC)处理。为了压缩和编码效率,点云视频编码器可执行诸如预测、变换、量化和熵编码的一系列处理。编码的数据(编码的视频/图像信息)可按比特流的形式输出。基于V-PCC处理,点云视频编码器可通过将点云视频分成几何视频、属性视频、占用图视频和辅助信息(或辅助数据)来对点云视频进行编码(将稍后描述)。几何视频可包括几何图像,属性视频可包括属性图像,占用图视频可包括占用图图像。辅助信息可包括辅助补片信息。属性视频/图像可包括纹理视频/图像。
文件/片段封装器(文件/片段封装模块)10003可以例如文件的形式封装编码的点云视频数据和/或与点云视频有关的元数据。这里,与点云视频有关的元数据可从元数据处理器接收。元数据处理器可包括在点云视频编码器10002中,或者可被配置成单独的组件/模块。文件/片段封装器10003可按照诸如ISOBMFF的文件格式封装数据或者按照DASH片段等的形式处理数据。根据实施方式,文件/片段封装器10003可包括文件格式的点云视频相关元数据。点云视频元数据可被包括在例如ISOBMFF文件格式的各种级别的盒中,或作为文件内的单独轨道中的数据。根据实施方式,文件/片段封装器10003可将点云视频相关元数据封装到文件中。发送处理器可对根据文件格式封装的点云视频数据执行传输处理。发送处理器可包括在发送器10004中,或者可被配置成单独的组件/模块。发送处理器可根据传输协议来处理点云视频数据。传输处理可包括经由广播网络传送的处理和通过宽带传送的处理。根据实施方式,发送处理器可从元数据处理器连同点云视频数据一起接收点云视频相关元数据,并且执行点云视频数据的处理以进行传输。
发送器10004可通过数字存储介质或网络将以比特流的形式输出的编码的视频/图像信息或数据以文件或流的形式发送到接收装置的接收器10006。数字存储介质可包括诸如USB、SD、CD、DVD、蓝光、HDD和SSD的各种存储介质。发送器可包括用于以预定文件格式生成媒体文件的元件,并且可包括用于经由广播/通信网络传输的元件。接收器可提取比特流并将所提取的比特流发送到解码装置。
接收器10006可接收根据本公开的点云视频发送装置所发送的点云视频数据。根据传输信道,接收器可经由广播网络或通过宽带接收点云视频数据。另选地,点云视频数据可通过数字存储介质来接收。
接收处理器可根据传输协议处理所接收的点云视频数据。接收处理器可包括在接收器10006中,或者可被配置成单独的组件/模块。接收处理器可反向执行发送处理器的上述处理,使得处理对应于在发送侧执行的传输处理。接收处理器可将所获取的点云视频数据传送至文件/片段解封装器10007,并将所获取的点云视频相关元数据传送至元数据处理器(未示出)。接收处理器所获取的点云视频相关元数据可采取信令表的形式。
文件/片段解封装器(文件/片段解封装模块)10007可将以文件的形式从接收处理器接收的点云视频数据解封装。文件/片段解封装器10007可根据ISOBMFF等对文件进行解封装,并且可获取点云视频比特流或点云视频相关元数据(元数据比特流)。所获取的点云视频比特流可被传送至点云视频解码器10008,并且所获取的点云视频相关元数据(元数据比特流)可被传送至元数据处理器(未示出)。点云视频比特流可包括元数据(元数据比特流)。元数据处理器可包括在点云视频解码器10008中,或者可被配置成单独的组件/模块。文件/片段解封装器10007所获取的点云视频相关元数据可采取文件格式中的盒或轨道的形式。当需要时,文件/片段解封装器10007可从元数据处理器接收解封装所需的元数据。点云视频相关元数据可被传送至点云视频解码器10008并在点云视频解码处理中使用,或者可被传送至渲染器10009并在点云视频渲染处理中使用。
点云视频解码器10008可接收比特流并且通过执行与点云视频编码器的操作对应的操作来将视频/图像解码。在这种情况下,点云视频解码器10008可通过如下所述将点云视频分成几何视频、属性视频、占用图视频和辅助信息来对点云视频进行解码。几何视频可包括几何图像,属性视频可包括属性图像。占用图视频可包括占用图图像。辅助信息可包括辅助补片信息。属性视频/图像可包括纹理视频/图像。
3D几何可基于解码的几何图像、占用图和辅助补片信息来重构,然后可经受平滑处理。可通过基于纹理图像向平滑的3D几何指派颜色值来重构颜色点云图像/画面。渲染器10009可渲染重构的几何和颜色点云图像/画面。渲染的视频/图像可通过显示器(未示出)显示。用户可通过VR/AR显示器或典型显示器来观看全部或部分渲染结果。
反馈处理可包括将可在渲染/显示处理中获取的各种类型的反馈信息传送至发送侧或接收侧的解码器。可在消费点云视频时通过反馈处理提供交互性。根据实施方式,头部取向信息、指示用户当前观看的区域的视口信息等可在反馈处理中被传送至发送侧。根据实施方式,用户可与VR/AR/MR/自主驾驶环境中实现的事物交互。在这种情况下,与交互有关的信息可在反馈处理期间被传送至发送侧或服务提供商。根据实施方式,反馈处理可被跳过。
头部取向信息可表示用户头部的位置、角度和运动的信息。基于该信息,可计算关于用户当前观看的点云视频的区域的信息(即,视口信息)。
视口信息可以是关于用户当前观看的点云视频的区域的信息。可使用视口信息来执行注视分析,以检查用户消费点云视频的方式、用户所注视的点云视频的区域以及用户注视该区域多长时间。可在接收侧执行注视分析,并且可在反馈信道上将分析结果传送至发送侧。诸如VR/AR/MR显示器的装置可基于用户头部的位置/方向、装置所支持的垂直或水平FOV等来提取视口区域。
根据实施方式,上述反馈信息可不仅被传送至发送侧,而且在接收侧消费。也就是说,可基于上述反馈信息执行接收侧的解码和渲染处理。例如,可基于头部取向信息和/或视口信息仅优先解码和渲染用户当前观看的区域的点云视频。
这里,视口或视口区域可表示用户当前观看的点云视频的区域。视点是点云视频中用户所观看的点,并且可表示视口区域的中心点。也就是说,视口是视点周围的区域,并且区域的大小和形式可由视场(FOV)确定。
本公开涉及如上所述的点云视频压缩。例如,本公开中公开的方法/实施方式可应用于运动图像专家组(MPEG)的点云压缩或点云编码(PCC)标准或下一代视频/图像编码标准。
如本文所使用的,画面/帧通常可表示特定时间间隔中表示一个图像的单位。
像素或画素可以是构成一个画面(或图像)的最小单位。另外,“样本”可用作与像素对应的术语。样本通常可表示像素或像素值。它可仅表示亮度分量的像素/像素值,仅表示色度分量的像素/像素值,或者仅表示深度分量的像素/像素值。
单元可表示图像处理的基本单位。单元可包括画面的特定区域和与该区域有关的信息中的至少一个。在一些情况下,单元可与诸如块或区域或模块之类的术语互换使用。在一般情况下,M×N块可包括按M列和N行配置的样本(或样本阵列)或变换系数集合(或阵列)。
图3示出根据实施方式的点云、几何图像和纹理图像的示例。
根据实施方式的点云可以被输入到将在下面描述的图4的V-PCC编码处理,以生成几何图像和纹理图像。根据实施方式,点云可以具有与点云数据相同的含义。
如图3所示,左部示出了点云,其中点云对象位于3D空间中并且可以用边界框等来表示。图3中的中间部示出了几何图像,并且图3中的右部示出了纹理图像(非填充图像)。在本公开中,几何图像可以称为几何补片帧/画面或几何帧/画面,并且纹理图像可以称为属性补片帧/画面或属性帧/画面。
根据实施方式的基于视频的点云压缩(V-PCC)是一种基于诸如高效视频编码(HEVC)或多功能视频编码(VVC)的2D视频编解码器来压缩3D点云数据的方法。V-PCC压缩处理中可以生成的数据和信息如下:
占用图:这是在将构成点云的点分成补片并将其映射到2D平面时使用值0或1指示在2D平面中的对应位置是否存在数据的二值图。占用图可以表示与阿特拉斯(atlas)对应的2D阵列,并且占用图的值可以指示阿特拉斯中的每个样本位置是否对应3D点。阿特拉斯是指包括关于每个点云帧的2D补片的信息的对象。例如,阿特拉斯可以包括2D布置和补片的大小、3D点内的对应3D区域的位置、投影计划和细节的级别参数。
补片:构成点云的点集合,其指示属于同一补片的点在3D空间中彼此相邻并且在映射到2D图像的处理中在6面边界框平面之间在相同方向上映射。
几何图像:这是逐补片呈现关于构成点云的各个点的位置信息(几何)的深度图形式的图像。几何图像可由一个通道的像素值组成。几何表示与点云帧相关联的坐标的集合。
纹理图像:这是逐补片表示关于构成点云的各个点的颜色信息的图像。纹理图像可由多个通道(例如,R、G和B三个通道)的像素值组成。纹理包括在属性中。根据实施方式,纹理和/或属性可被解释为相同的对象和/或具有包含关系。
辅助补片信息:这指示利用各个补片重构点云所需的元数据。辅助补片信息可包括关于2D/3D空间中的补片的位置、尺寸等的信息。
根据实施方式的点云数据,例如,V-PCC分量,可以包括阿特拉斯、占用图、几何和属性。
阿特拉斯表示2D边界框的集合。它可以是一组补片,例如,投影到对应于3D空间中的3维边界框的矩形框架中的补片,3D空间可以表示点云的子集。在这种情况下,补片可以表示对应于平面投影中的矩形区域的阿特拉斯中的矩形区域。此外,补片数据可以表示需要执行包括在阿特拉斯中的补片从2D到3D的变换的数据。此外,补片数据组也称为阿特拉斯。
属性可以表示与点云中的每个点相关联的标量或向量。例如,属性可以包括颜色、反射率、表面法线、时间戳、材料ID。
根据实施方式的点云数据表示根据基于视频的点云压缩(V-PCC)方案的PCC数据。点云数据可包括多个分量。例如,其可包括占用图、补片、几何和/或纹理。
图4示出根据实施方式的点云视频编码器的示例。
图4示出用于生成和压缩占用图、几何图像、纹理图像和辅助补片信息的V-PCC编码处理。图4的V-PCC编码处理可以由图1的的点云视频编码器10002处理。图4的每个元件可以由软件、硬件、处理器和/或其组合来执行。
补片生成或补片生成器14000接收点云帧(其可以是包含点云数据的比特流的形式)。补片生成器14000根据点云数据生成补片。此外,生成包括关于补片生成的信息的补片信息。
补片打包或补片打包器14001打包一个或更多个补片。另外,补片打包器14001生成包含关于补片打包的信息的占用图。
几何图像生成或几何图像生成器14002基于点云数据、补片信息(或辅助信息)和/或占用图信息生成几何图像。几何图像是指包含与点云数据相关的几何的数据(即,点的3D坐标值),并且是指几何框架。
纹理图像生成或纹理图像生成器14003基于点云数据、补片、打包的补片、补片信息(或辅助信息)和/或平滑的几何来生成纹理图像。纹理图像是指属性帧。也就是说,还可以基于通过基于补片信息进行平滑的平滑处理生成的平滑的几何来生成纹理图像。
平滑或平滑器14004可以减轻或消除包含在图像数据中的错误。例如,重构的几何图像基于补片信息被平滑化。也就是说,可以平滑地过滤掉可能导致数据之间的错误的部分以生成平滑的几何。
辅助补片信息压缩或辅助补片信息压缩器14005可以压缩与在补片生成中生成的补片信息相关的辅助补片信息。此外,辅助补片信息压缩器14005中压缩的辅助补片信息可以被发送到复用器14013。辅助补片信息可以在几何图像生成器14002中使用。根据实施方式,压缩的辅助补片信息可以被称为压缩的辅助补片信息的比特流、辅助补片信息比特流、压缩的阿特拉斯的比特流或阿特拉斯比特流等。
图像填充或图像填充器14006和14007可以分别填充几何图像和纹理图像。填充数据可以被填充到几何图像和纹理图像。
组扩张或组扩张器14008可以以与图像填充类似的方式将数据添加到纹理图像。辅助补片信息可以被插入到纹理图像中。
视频压缩或视频压缩器14009、14010和14011可以分别压缩填充的几何图像、填充的纹理图像和/或占用图。换句话说,视频压缩器14009、14010和14011可以分别压缩输入的几何帧、属性帧和/或占用图帧,以输出几何图像的视频比特流、纹理图像的视频比特流、占用图的视频比特流。视频压缩可以对几何信息、纹理信息和占用信息进行编码。根据实施方式,压缩的几何的视频比特流可以被称为2D视频编码的几何比特流、压缩的几何比特流、视频编码的几何比特流或几何视频数据等。根据实施方式,压缩的纹理图像的视频比特流可以被称为2D视频编码属性比特流、压缩的属性比特流、视频编码的属性比特流或属性视频数据等。
熵压缩或熵压缩器14012可以基于熵方案来压缩占用图。
根据实施方式,熵压缩和/或视频压缩可以根据点云数据是无损的和/或有损的而对占用图帧执行。根据实施方式,熵和/或视频压缩图可以被称为压缩的占用图的视频比特流、2D视频编码的占用图比特流、占用图比特流、压缩的占用图比特流、视频编码的占用图比特流或占用图视频数据等。
复用器14013将来自各个压缩器的压缩的几何的视频比特流、压缩的纹理图像的视频比特流、压缩的占用图的视频比特流和压缩的辅助补片信息的比特流复用成一个比特流。
上述块可以被省略或者可以被具有相似或相同功能的块代替。此外,图4所示的每个块可以用作处理器、软件和硬件中的至少一种。
根据实施方式的图4的每个处理的详细操作描述如下。
补片生成(14000)
补片生成处理是指将点云分成补片(映射单元)以便将点云映射到2D图像的处理。补片生成处理可被分成三个步骤:法向值计算、分段和补片分段。
将参照图5详细描述法向值计算处理。
图5示出根据实施方式的表面的切平面和法向量的示例。
在图4的V-PCC编码处理的补片生成器14000中如下使用图5的表面。
与补片生成相关的法向计算
点云的各个点具有其自己的方向,其由称为法向量的3D向量表示。使用利用K-D树等获得的各个点的邻居,可获得如图5所示构成点云的表面的各个点的切平面和法向量。应用于搜索邻居的处理的搜索范围可由用户定义。
切平面是指穿过表面上的点并且完全包括表面上的曲线的切线的平面。
图6示出根据实施方式的点云的示例性边界框。
根据实施方式的边界框指代用于基于3D空间中的六面体来划分点云数据的单位的框。
根据实施方式的方法/装置(例如,补片生成器14000)可在从点云数据生成补片的处理中使用边界框。
可在将点云数据的目标对象投影到3D空间中的六面体的各个平坦面的平面上的处理中使用边界框。边界框可以由图1的点云视频获取单元10001和点云视频编码器10002生成和处理。此外,基于边界框,可以执行图4的V-PCC编码处理的补片生成14000、补片打包14001、几何图像生成14002和纹理图像生成14003。
与补片生成相关的分段
分段被分成两个处理:初始分段和细化分段。
根据实施方式的点云视频编码器10002将点投影到边界框的一个面上。具体地,如图6所示,构成点云的各个点被投影到围绕点云的边界框的六个面之一上。初始分段是确定各个点要投影至的边界框的平坦面之一的处理。
(1.0,0.0,0.0),(0.0,1.0,0.0),(0.0,0.0,1.0),(-1.0,0.0,0.0),(0.0,-1.0,0.0),(0.0,0.0,-1.0)。
所确定的平面可由一个集群索引(0至5之一)标识。
细化分段是考虑邻近点的投影平面增强在初始分段处理中确定的构成点云的各个点的投影平面的处理。在该处理中,得分法向和得分平滑可一起考虑,得分法向表示在初始分段处理中确定投影平面时考虑的各个点的法向量与边界框的各个平坦面的法向之间的相似度,得分平滑指示当前点的投影平面与邻近点的投影平面之间的相似度。
可通过向得分法向指派权重来考虑得分平滑。在这种情况下,权重值可由用户定义。细化分段可重复地执行,重复次数也可由用户定义。
与补片生成相关的补片分段
补片分段是基于在初始/细化分段处理中获得的关于构成点云的各个点的投影平面信息将整个点云分成补片(邻近点的集合)的处理。补片分段可包括以下步骤:
使用K-D树等计算构成点云的各个点的邻近点。最大邻居数量可由用户定义;
①当邻近点被投影到与当前点相同的平面上时(当它们具有相同的集群索引时),
②提取当前点和邻近点作为一个补片;
③计算所提取的补片的几何值。
④重复操作②至③,直至不存在未提取的点。
各个补片的占用图、几何图像和纹理图像以及各个补片的大小通过补片分段处理来确定。
图7示出根据实施方式的确定占用图上的各个补片位置的示例。
根据实施方式的点云视频编码器10002可以执行补片打包并生成占用图。
补片打包和占用图生成(14001)
这是确定2D图像中的各个补片的位置以将分段的补片映射到2D图像的处理。作为一种2D图像,占用图是使用值0或1指示对应位置处是否存在数据的二值图。占用图由块组成,其分辨率可由块的大小确定。例如,当块为1*1块时,获得像素级分辨率。占用打包块大小可由用户确定。
确定占用图上的各个补片的位置的处理可配置如下:
①将占用图上的所有位置设定为0;
②将补片置于占用图平面中水平坐标在(0,occupancySizeU-patch.sizeU0)范围内并且垂直坐标在(0,occupancySizeV-patch.sizeV0)范围内的点(u,v)处;
③将补片平面中水平坐标在(0,patch.sizeU0)范围内并且垂直坐标在(0,patch.sizeV0)范围内的点(x,y)设定为当前点;
④按光栅顺序改变点(x,y)的位置,并且如果补片占用图上的坐标(x,y)的值为1(补片中的点处存在数据)并且全局占用图上的坐标(u+x,v+y)的值为1(以先前补片填充占用图),则重复操作③和④。否则,进行至操作⑥;
⑤按光栅顺序改变(u,v)的位置并且重复操作③至⑤;
⑥将(u,v)确定为补片的位置并且将关于补片的占用图数据复制到全局占用图上的对应部分上;以及
⑦针对下一补片重复操作②至⑥。
occupancySizeU:指示占用图的宽度。其单位是占用打包块大小。
occupancySizeV:指示占用图的高度。其单位是占用打包块大小。
patch.sizeU0:指示占用图的宽度。其单位是占用打包块大小。
patch.sizeV0:指示占用图的高度。其单位是占用打包块大小。
例如,如图7所示,在与占用打包大小块对应的框中,存在于具有补片大小的补片对应的框,并且点(x,y)可以位于该框中。
图8示出根据实施方式的法向轴、切向轴和双切轴之间的示例性关系。
根据实施方式的点云视频编码器10002可以生成几何图像。几何图像指代包括关于点云的几何信息的图像数据。几何图像生成处理可以采用途8的补片的三个轴(法向、切向和双切)。
几何图像生成(14002)
在该处理中,确定构成各个补片的几何图像的深度值,并且整个几何图像基于在上述补片打包处理中确定的补片的位置来生成。确定构成各个补片的几何图像的深度值的处理可配置如下。
①计算与各个补片的位置和大小有关的参数。参数可包括以下信息。根据实施方式,补片的位置被包括在补片信息中。
指示法向轴的法向索引在先前补片生成处理中获得。切向轴是垂直于法向轴的轴当中与补片图像的水平轴u一致的轴,双切轴是垂直于法向轴的轴当中与补片图像的垂直轴v一致的轴。三个轴可如图8所示。
图9示出根据实施方式的投影模式的最小模式和最大模式的示例性配置。
根据实施方式的点云视频编码器10002可以执行基于补片的投影以生成几何图像,并且根据实施方式的投影模式包括最小模式和最大模式。
可基于围绕补片的最小尺寸的边界框来计算补片的3D空间坐标。例如,3D空间坐标可包括补片的最小切向值(在补片3d移位切向轴上)、补片的最小双切值(在补片3d移位双切轴上)和补片的最小法向值(在补片3d移位法向轴上)。
补片的2D尺寸指示当补片被打包成2D图像时补片的水平尺寸和垂直尺寸。水平尺寸(补片2d尺寸u)可作为边界框的最大切向值和最小切向值之差获得,垂直尺寸(补片2d尺寸v)可作为边界框的最大双切值和最小双切值之差获得。
②确定补片的投影模式。投影模式可以是最小模式或最大模式。关于补片的几何信息利用深度值表示。当构成补片的各个点在补片的法向上投影时,可生成两层图像,利用最大深度值构造的图像和利用最小深度值构造的图像。
在最小模式下,在生成两层图像d0和d1时,可为d0配置最小深度,并且可为d1配置从最小深度的表面厚度内的最大深度,如图9所示。
例如,当点云位于2D中(如图9所示)时,存在包括多个点的多个补片。如图所示,指示了标记有相同风格的阴影的点可以属于相同的补片。图示出投影标记有空白的点的补片的处理。
当将标记有空白的点左/右投影时,相对于左侧,深度可以递增1,为0、1、2、…、6、7、8、9,并且用于计算点的深度的数字可以标记在右侧。
可对所有点云应用相同的投影模式,或者可根据用户定义对各个帧或补片应用不同的投影模式。当对各个帧或补片应用不同的投影模式时,可自适应地选择可增强压缩效率或使缺失的点最少的投影模式。
③计算各个点的深度值。
在最小模式下,利用depth0构造图像d0,depth0是通过针对各个点的最小法向值从补片的最小法向值(在补片3d移位法向轴上)减去在操作1)中计算的补片的最小法向值(在补片3d移位法向轴上)而获得的值。如果在同一位置在depth0与表面厚度之间的范围内存在另一深度值,则该值被设定为depth1。否则,depth0的值被指派给depth1。利用depth1的值构造图像d1。
例如,在计算图像d0的点的深度时可以计算最小值(4 2 4 4 0 6 0 0 9 9 0 80)。在计算图像d1的点的深度时,可以计算两个或更多个点当中的更大值。当仅存在一个点时,其值可以被计算(4 4 4 4 6 6 6 8 9 9 8 8 9)。在编码和重构补片的点的处理中,一些点可能会缺失(例如,在图中,缺失了八个点)。
在最大模式下,利用depth0构造图像d0,depth0是通过针对各个点的最大法向值从补片的最小法向值(在补片3d移位法向轴上)减去在操作1)中计算的补片的最小法向值(在补片3d移位法向轴上)而获得的值。如果在同一位置在depth0与表面厚度之间的范围内存在另一深度值,则该值被设定为depth1。否则,depth0的值被指派给depth1。利用depth1的值构造图像d1。
例如,在计算图像d0的点的深度时可以计算最小值(4 4 4 4 6 6 6 8 9 9 8 89)。在计算图像d1的点的深度时,可以计算两个或更多个点当中的更小值。当仅存在一个点时,其值可以被计算(4 2 4 4 5 6 0 6 9 9 0 8 0)。在编码和重构补片的点的处理中,一些点可能会缺失(例如,在图中,缺失了六个点)。
整个几何图像可通过基于在补片打包处理中确定的补片位置信息将通过上述处理生成的各个补片的几何图像放置到整个几何图像上来生成。
所生成的整个几何图像的层d1可使用各种方法来编码。第一方法(绝对d1编码方法)是对先前生成的图像d1的深度值进行编码。第二方法(差分编码方法)是对先前生成的图像d1的深度值与图像d0的深度值之差进行编码。
在如上所述使用两个层d0和d1的深度值的编码方法中,如果两个深度之间存在另一点,则在编码处理中丢失关于该点的几何信息,因此增强-增量-深度(EDD)码可用于无损编码。
以下,将参照图10详细描述EDD码。
图10示出根据实施方式的示例性EDD码。
在点云视频编码器10002和/或V-PCC编码的一些/全部处理(例如,视频压缩14009)中,可以基于EOD码来编码关于点的几何信息。
如图10所示,EDD码用于包括d1的表面厚度范围内的所有点的位置的二值编码。例如,在图10中,由于在D0上的第一位置和第四位置处存在点并且第二位置和第三位置为空,所以包括在左侧第二列中的点可由EDD码0b1001(=9)表示。当EDD码与D0一起编码并发送时,接收终端可无损地恢复关于所有点的几何信息。
例如,当存在在参考点上方的点时,值为1。当不存在点时,值为0。因此,可以基于4个比特来表示码。
平滑(14004)
平滑是用于消除由于在压缩处理期间发生的图像质量劣化而可能出现在补片边界上的不连续的操作。可由点云视频编码器10002或平滑器14004执行平滑:
①从几何图像重构点云。此操作可与上述几何图像生成相反。例如,可以重构编码的反向处理;
②使用K-D树等计算构成重构的点云的各个点的邻近点;
③确定各个点是否位于补片边界上。例如,当存在具有与当前点不同的投影平面(集群索引)的邻近点时,可确定点位于补片边界上;
④如果在补片边界上存在点,则使该点移动到邻近点的质心(位于邻近点的平均x、y、z坐标处)。也就是说,改变几何值。否则,维持先前几何值。
图11示出根据实施方式的基于邻近点的颜色值来重新着色的示例。
根据实施方式的点云视频编码器10002或纹理图像生成器14003可以基于重新着色来生成纹理图像。
纹理图像生成(14003)
与上述几何图像生成处理类似,纹理图像生成处理包括生成各个补片的纹理图像并且通过将纹理图像布置在确定的位置来生成整个纹理图像。然而,在生成各个补片的纹理图像的操作中,代替用于几何生成的深度值,生成具有构成与位置对应的点云的点的颜色值(例如,R、G和B值)的图像。
在估计构成点云的各个点的颜色值时,可使用先前通过平滑处理获得的几何。在平滑的点云中,一些点的位置可能已相对于原始点云移位,因此可能需要寻找适合于改变的位置的颜色的重新着色处理。可使用邻近点的颜色值来执行重新着色。例如,如图11所示,可考虑最近邻近点的颜色值和邻近点的颜色值来计算新颜色值。
例如,参照图11,在重新着色中,可以基于关于点的最近原始点的属性信息的平均和/或关于点的最近原始点的属性信息的平均来计算改变的位置的合适颜色值。
类似于以两个层d0和d1生成的几何图像,纹理图像也可以两个层t0和t1生成。
辅助补片信息压缩(14005)
根据实施方式的点云视频编码器10002或辅助补片信息压缩器14005可以压缩辅助补片信息(关于点云的辅助信息)。
辅助补片信息压缩器14005压缩在上述补片生成、补片打包和几何生成处理中生成的辅助补片信息。辅助补片信息可包括以下参数:
用于标识投影平面(法向平面)的索引(集群索引);
补片的3D空间位置,即,补片的最小切向值(在补片3d移位切向轴上)、补片的最小双切值(在补片3d移位双切轴上)和补片的最小法向值(在补片3d移位法向轴上);
补片的2D空间位置和尺寸,即,水平尺寸(补片2d尺寸u)、垂直尺寸(补片2d尺寸v)、最小水平值(补片2d移位u)和最小垂直值(补片2d移位u);以及
关于各个块和补片的映射信息,即,候选索引(当补片基于关于补片的2D空间位置和尺寸信息按顺序设置时,多个补片可按交叠方式映射到一个块。在这种情况下,映射的补片构成候选列表,并且候选索引指示其数据存在于块中的补片的顺序位置)和局部补片索引(指示存在于帧中的一个补片的索引)。表1示出表示基于候选列表和局部补片索引在块和补片之间匹配的处理的伪代码。
候选列表的最大数量可由用户定义。
[表1]
图12示出根据实施方式的推拉式背景填充。
图像填充和组扩张(14006、14007、14008)
根据实施方式的图像填充器可以基于推拉式背景填充技术来用无意义的补充数据填充除了补片区域之外的空间。
图像填充14006和14007是以无意义的数据填充补片区域以外的空间以改进压缩效率的处理。对于图像填充,可复制补片中靠近边界的列或行中的像素值以填充空白空间。另选地,如图12所示,可使用推拉式背景填充方法。根据该方法,在逐渐降低非填充图像的分辨率并再次增加分辨率的处理中利用来自低分辨率图像的像素值填充空白空间。
组扩张14008是填充分别以两个层d0/d1和t0/t1配置的几何图像和纹理图像的空白空间的处理。在这里理中,利用同一位置的值的平均填充通过图像填充计算的两个层的空白空间。
图13示出根据实施方式的4*4块的示例性可能遍历顺序。
占用图压缩(14012、14011)
根据实施方式的占用图压缩器可以压缩先前生成的占用图。具体地,可以使用两个方法,即:用于有损压缩的视频压缩和用于无损压缩的熵压缩。下面描述视频压缩。
可通过以下操作执行熵压缩。
①如果构成占用图的块被完全占用,则对1进行编码并针对占用图的下一块重复相同的操作。否则,对0进行编码并执行操作2)至5)。
②确定对块的占用像素执行游程长度编码的最佳遍历顺序。图13示出4*4块的四个可能遍历顺序。
图14示出根据实施方式的示例性最佳遍历顺序。
如上所述,根据实施方式的熵压缩器可以基于图14所示的遍历顺序方案对块进行编码(编码)。
例如,从可能遍历顺序当中选择具有最小游程数量的最佳遍历顺序,并且对其索引进行编码。图中示出选择图13中的第三遍历顺序的情况。在所示情况下,游程数量可被最小化为2,因此第三遍历顺序可被选为最佳遍历顺序。
③对游程数量进行编码。在图14的示例中,存在两个游程,因此对2进行编码。
④对第一游程的占用进行编码。在图14的示例中,对0进行编码,因为第一游程对应于未占用像素。
⑤对各个游程(游程数量那么多)的长度进行编码。在图14的示例中,依次对第一游程和第二游程的长度6和10进行编码。
视频压缩(14009、14010、14011)
根据实施方式的视频压缩器14009、14010、14011使用诸如HEVC或VVC的2D视频编解码器对在上述操作中生成的几何图像、纹理图像、占用图图像等的序列进行编码。
图15示出根据实施方式的示例性2D视频/图像编码器。根据实施方式,2D视频/图像编码器可以称作编码装置。
表示应用了上述视频压缩器14009、14010和14011的实施方式的图15是被配置为对视频/图像信号进行编码的2D视频/图像编码器15000的示意性框图。2D视频/图像编码器15000可包括在上述点云视频编码器10002中,或者可被配置成内部/外部组件。图15的每个组件可以对应于软件、硬件、处理器和/或其组合。
这里,输入图像可包括上述几何图像、纹理图像(属性图像)和占用图图像之一。当图15的2D视频/图像编码器被应用于视频压缩器14009时,输入到2D视频/图像编码器15000的图像是填充的几何图像,并且从2D视频/图像编码器15000输出的比特流是压缩的几何图像的比特流。当图15的2D视频/图像编码器被应用于视频压缩器14010时,输入到2D视频/图像编码器15000的图像是填充的纹理图像,并且从2D视频/图像编码器15000输出的比特流是压缩的纹理图像的比特流。当图15的2D视频/图像编码器被应用于视频压缩器14011时,输入到2D视频/图像编码器15000的图像是占用图图像,并且从2D视频/图像编码器15000输出的比特流是压缩的占用图图像的比特流。
帧间预测器15090和帧内预测器15100可被统称为预测器。也就是说,预测器可包括帧间预测器15090和帧内预测器15100。变换器15030、量化器15040、逆量化器15050和逆变换器15060可以统称为残差处理器。残差处理器还可包括减法器15020。根据实施方式,图15的图像分割器15010、减法器15020、变换器15030、量化器15040、逆量化器15050、逆变换器15060、加法器15200、滤波器15070、帧间预测器15090、帧内预测器15100和熵编码器15110可由一个硬件组件(例如,编码器或处理器)配置。另外,存储器15080可包括解码画面缓冲器(DPB)并且可由数字存储介质配置。
图像分割器15010可将输入到编码器15000的图像(或者画面或帧)分割成一个或更多个处理单元。例如,处理单元可被称为编码单元(CU)。在这种情况下,CU可根据四叉树二叉树(QTBT)结构从编码树单元(CTU)或最大编码单元(LCU)递归地分割。例如,一个CU可基于四叉树结构和/或二叉树结构被分割为较低深度的多个CU。在这种情况下,例如,可首先应用四叉树结构,稍后可应用二叉树结构。另选地,可首先应用二叉树结构。根据本公开的编码处理可基于不再分割的最终CU来执行。在这种情况下,根据图像的特性基于编码效率,LCU可用作最终CU。必要时,CU可被递归地分割为较低深度的CU,并且最优大小的CU可用作最终CU。这里,编码处理可包括预测、变换和重构(将稍后描述)。作为另一示例,处理单元还可包括预测单元(PU)或变换单元(TU)。在这种情况下,PU和TU可从上述最终CU分割或划分。PU可以是样本预测的单元,TU可以是推导变换系数的单元和/或从变换系数推导残差信号的单元。
术语“单元”可与诸如块或区域或模块的术语互换使用。在一般情况下,M×N块可表示以M列和N行配置的样本或变换系数的集合。样本通常可表示像素或像素值,并且可仅指示亮度分量的像素/像素值,或者仅指示色度分量的像素/像素值。“样本”可用作与一个画面(或图像)中的像素或画素对应的术语。
编码装置15000的减法器15020可通过从输入图像信号(原始块或原始样本阵列)减去从帧间预测器15090或帧内预测器15100输出的预测信号(预测块或预测样本阵列)来生成残差信号(残差块或残差样本阵列),并且所生成的残差信号被发送到变换器15030。在这种情况下,如图所示,在编码装置15000中从输入图像信号(原始块或原始样本阵列)减去预测信号(预测块或预测样本阵列)的单元可被称为减法器15020。预测器可对处理目标块(以下称为当前块)执行预测并且生成包括当前块的预测样本的预测块。预测器可基于当前块或CU确定是应用帧内预测还是帧间预测。如稍后将在各个预测模式的描述中描述的,预测器可生成关于预测的各种类型的信息(例如,预测模式信息),并将所生成的信息传送至熵编码器15110。关于预测的信息可由熵编码器15110编码并以比特流的形式输出。
预测器的帧内预测器15100可参考当前画面中的样本来预测当前块。根据预测模式,样本可邻近或远离当前块。在帧内预测下,预测模式可包括多个非定向模式和多个定向模式。非定向模式可包括例如DC模式和平面模式。根据预测方向的精细度,定向模式可包括例如33个定向预测模式或65个定向预测模式。然而,这仅是示例,可根据设置使用更多或更少的定向预测模式。帧内预测器15100可基于应用于邻近块的预测模式来确定要应用于当前块的预测模式。
预测器的帧间预测器15090可基于参考画面上运动向量所指定的参考块(参考样本阵列)来推导当前块的预测块。在这种情况下,为了减少在帧间预测模式下发送的运动信息量,可基于邻近块与当前块之间的运动信息的相关性基于每块、子块或样本来预测运动信息。运动信息可包括运动向量和参考画面索引。运动信息还可包括关于帧间预测方向(L0预测、L1预测、Bi预测等)的信息。在帧间预测的情况下,邻近块可包括存在于当前画面中的空间邻近块和存在于参考画面中的时间邻近块。包括参考块的参考画面可与包括时间邻近块的参考画面相同或不同。时间邻近块可被称为并置参考块或并置CU(colCU),并且包括时间邻近块的参考画面可被称为并置画面(colPic)。例如,帧间预测器15090可基于邻近块来配置运动信息候选列表并且生成指示要用于推导当前块的运动向量和/或参考画面索引的候选的信息。可基于各种预测模式执行帧间预测。例如,在跳过模式和合并模式下,帧间预测器15090可使用关于邻近块的运动信息作为关于当前块的运动信息。在跳过模式下,与合并模式不同,可不发送残差信号。在运动向量预测(MVP)模式下,邻近块的运动向量可用作运动向量预测器,并且可发信号通知运动向量差以指示当前块的运动向量。
由帧间预测器15090或帧内预测器15100生成的预测信号可用于生成重构信号或生成残差信号。
变换器15030可通过对残差信号应用变换技术来生成变换系数。例如,变换技术可包括离散余弦变换(DCT)、离散正弦变换(DST)、Karhunen–Loève变换(KLT)、基于图形的变换(GBT)或条件非线性变换(CNT)中的至少一个。这里,GBT是指从描绘像素之间的关系的图形获得的变换。CNT是指基于根据所有先前重构的像素生成的预测信号获得的变换。另外,变换操作可应用于具有相同大小的正方形像素块,或者可应用于具有正方形以外的可变大小的块。
量化器15040可将变换系数量化并将其发送到熵编码器15110。熵编码器15110可对量化的信号(关于量化的变换系数的信息)进行编码并输出编码的信号的比特流。关于量化的变换系数的信息可被称为残差信息。量化器15040可基于系数扫描顺序按照一维向量的形式重排块形式的量化的变换系数,并且基于一维向量形式的量化的变换系数来生成关于量化的变换系数的信息。
熵编码器15110可采用诸如例如指数Golomb、上下文自适应可变长度编码(CAVLC)和上下文自适应二进制算术编码(CABAC)的各种编码技术。熵编码器15110可与量化的变换系数一起或分开对视频/图像重构所需的信息(例如,语法元素的值)进行编码。编码的信息(例如,编码的视频/图像信息)可基于网络抽象层(NAL)单元以比特流的形式发送或存储。
比特流可经由网络发送或者可被存储在数字存储介质中。这里,网络可包括广播网络和/或通信网络,并且数字存储介质可包括诸如USB、SD、CD、DVD、蓝光、HDD和SSD的各种存储介质。发送从熵编码器15110输出的信号的发送器(未示出)和/或存储该信号的存储部(未示出)可被配置成编码器15000的内部/外部元件。另选地,发送器可被包括在熵编码器15110中。
从量化器15040输出的量化的变换系数可用于生成预测信号。例如,可通过逆量化器15050和逆变换器15060对量化的变换系数应用逆量化和逆变换,以重构残差信号(残差块或残差样本)。加法器15200将重构的残差信号与从帧间预测器15090或帧内预测器15100输出的预测信号相加。由此,可生成重构信号(重构画面、重构块、重构样本阵列)。当如应用跳过模式的情况中一样不存在处理目标块的残差信号时,预测块可用作重构块。加法器15200可被称为重构器或重构块生成器。如下所述,所生成的重构信号可用于当前画面中的下一处理目标块的帧内预测,或者可通过滤波用于下一画面的帧间预测。
滤波器15070可通过对从加法器15200输出的重构信号应用滤波来改进主观/客观图像质量。例如,滤波器15070可通过对重构画面应用各种滤波技术来生成修改的重构画面,并且修改的重构画面可被存储在存储器15080(具体地,存储器15080的DPB)中。例如,各种滤波技术可包括去块滤波、样本自适应偏移、自适应环路滤波和双边滤波。如下面在滤波技术的描述中描述的,滤波器15070可生成关于滤波的各种类型的信息并且将所生成的信息传送至熵编码器15110。关于滤波的信息可由熵编码器15110编码并以比特流的形式输出。
存储在存储器15080中的修改的重构画面可由帧间预测器15090用作参考画面。因此,当应用帧间预测时,编码器可避免编码器15000与解码器之间的预测失配并且改进编码效率。
存储器15080的DPB可存储修改的重构画面以由帧间预测器15090用作参考画面。存储器15080可存储关于推导(或编码)当前画面中的运动信息的块的运动信息和/或关于画面中已经重构的块的运动信息。所存储的运动信息可被传送到帧间预测器15090以用作关于空间邻近块的运动信息或关于时间邻近块的运动信息。存储器15080可存储当前画面中的重构块的重构样本并将重构样本传送至帧内预测器15100。
可跳过上述预测、变换和量化过程中的至少一个。例如,对于应用了脉冲编码调制(PCM)的块,可跳过预测、变换和量化过程,并且原始样本的值可被编码并以比特流的形式输出。
图16示出根据实施方式的示例性V-PCC解码处理。
V-PCC解码处理或V-PCC解码器可以遵循图4的V-PCC编码处理(或编码器)的反向处理。图16的每个组件可以对应于软件、硬件、处理器和/或其组合。
解复用器16000将压缩的比特流解复用,以分别输出压缩的纹理图像、压缩的几何图像、压缩的占用图和压缩的辅助补片信息。
视频解压缩或视频解压缩器16001、16002解压缩压缩的纹理图像和压缩的几何图像中的每一个。
占用图解压缩或占用图解压缩器16003对压缩的占用图图像进行解压缩。
辅助补片信息解压缩或辅助补片信息解压缩器16004对压缩的辅助补片信息进行解压缩。
几何重构或几何重构器16005基于解压缩的几何图像、解压缩的占用图和/或解压缩的辅助补片信息来恢复(重构)几何信息。例如,在编码处理中改变的几何可被重构。
平滑或平滑器16006可对重构的几何应用平滑。例如,可应用平滑滤波。
纹理重构或纹理重构器16007从解压缩的纹理图像和/或平滑的几何重构纹理。
颜色平滑或颜色平滑器16008从重构的纹理平滑颜色值。例如,可应用平滑滤波。
结果,可生成重构的点云数据。
图16示出通过对压缩的占用图、几何图像、纹理图像和辅助补片信息进行解压缩(解码)来重构点云的V-PCC的解码处理。
图16所示的每个单元可以用作处理器、软件和硬件中的至少一个。根据实施方式的图16的每个单元的详细操作描述如下。
视频解压缩(16001、16002)
视频解压缩是上述视频压缩的逆处理。它是使用诸如HEVC或VVC的2D视频编解码器来将在上述处理中生成的几何图像的比特流、压缩的纹理图像的比特流和/或压缩的占用图图像的比特流解码的处理。
图17示出根据实施方式的示例性2D视频/图像解码器,其也称作解码装置。
2D视频/图像解码器可以遵循图15的2D视频/图像编码器的操作的反向处理。
图17的2D视频/图像解码器是图16的视频解压缩器16001和16002的实施方式。图17是对视频/图像信号进行解码的2D视频/图像解码器17000的示意性框图。2D视频/图像解码器17000可被包括在上述点云视频解码器10008中,或者可被配置成内部/外部组件。图17的每个组件可以对应于软件、硬件、处理器和/或其组合。
这里,输入比特流可以是几何图像的比特流、纹理图像(属性图像)的比特流和占用图图像的比特流之一。当图17的2D视频/图像解码器被应用于视频解压缩器16001时,输入到2D视频/图像解码器的比特流是压缩的纹理图像的比特流,并且从2D视频/图像解码器输出的重构图像是解压缩的纹理图像。当图17的2D视频/图像解码器被应用于视频解压缩器16002时,输入到2D视频/图像解码器的比特流是压缩的几何图像的比特流,并且从2D视频/图像解码器输出的重构图像是解压缩的几何图像。图17的2D视频/图像解码器可以接收压缩的占用图图像的比特流并且对齐进行解压缩。重构图像(或输出图像或解码图像)可以表示上述几何图像、纹理图像(属性图像)和占用图图像的重构图像。
参照图17,帧间预测器17070和帧内预测器17080可被统称为预测器。也就是说,预测器可包括帧间预测器17070和帧内预测器17080。逆量化器17020和逆变换器17030可被统称为残差处理器。也就是说,根据实施方式,残差处理器可包括逆量化器17020和逆变换器17030。图17的熵解码器17010、逆量化器17020、逆变换器17030、加法器17040、滤波器17050、帧间预测器17070和帧内预测器17080可由一个硬件组件(例如,解码器或处理器)配置。另外,存储器17060可包括解码画面缓冲器(DPB)或者可由数字存储介质配置。
当输入包含视频/图像信息的比特流时,解码器17000可在与图15的编码器处理视频/图像信息的处理对应的处理中重构图像。例如,解码器17000可使用编码器中应用的处理单元来执行解码。因此,解码的处理单元可以是例如CU。CU可沿着四叉树结构和/或二叉树结构从CTU或LCU分割。然后,可通过播放器播放通过解码器17000解码和输出的重构的视频信号。
解码器17000可接收从编码器以比特流的形式输出的信号,并且所接收的信号可通过熵解码器17010解码。例如,熵解码器17010可解析比特流以推导图像重构(或画面重构)所需的信息(例如,视频/图像信息)。例如,熵解码器17010可基于诸如指数Golomb编码、CAVLC或CABAC的编码技术对比特流中的信息进行解码,输出图像重构所需的语法元素和残差的变换系数的量化值。更具体地,在CABAC熵解码中,可接收与比特流中的各个语法元素对应的信元(bin),并且可基于解码目标语法元素信息以及关于邻近解码目标块的解码信息或关于在先前步骤中解码的符号/信元的信息来确定上下文模型。然后,可根据所确定的上下文模型来预测信元出现的概率,并且可执行信元的算术解码以生成与各个语法元素的值对应的符号。根据CABAC熵解码,在确定上下文模型之后,可基于关于为下一符号/信元的上下文模型解码的符号/信元的信息来更新上下文模型。熵解码器17010所解码的信息中关于预测的信息可被提供给预测器(帧间预测器17070和帧内预测器17080),并且已由熵解码器17010执行了熵解码的残差值(即,量化的变换系数和相关参数信息)可被输入到逆量化器17020。另外,熵解码器17010所解码的信息中关于滤波的信息可被提供给滤波器17050。被配置为接收从编码器输出的信号的接收器(未示出)还可被配置成解码器17000的内部/外部元件。另选地,接收器可以是熵解码器17010的组件。
逆量化器17020可通过将量化的变换系数逆量化来输出变换系数。逆量化器17020可按二维块的形式重排量化的变换系数。在这种情况下,可基于编码器所实现的系数扫描顺序来执行重排。逆量化器17020可使用量化参数(例如,量化步长信息)对量化的变换系数执行逆量化并且获取变换系数。
逆变换器17030通过对变换系数进行变换来获取残差信号(残差块和残差样本阵列)。
预测器可对当前块执行预测并生成包括当前块的预测样本的预测块。预测器可基于从熵解码器17010输出的关于预测的信息来确定对当前块应用帧内预测还是帧间预测,并且可确定特定帧内/帧间预测模式。
预测器的帧内预测器17080可参考当前画面中的样本来预测当前块。根据预测模式,样本可邻近或远离当前块。在帧内预测中,预测模式可包括多个非定向模式和多个定向模式。帧内预测器17080可使用应用于邻近块的预测模式来确定应用于当前块的预测模式。
预测器的帧间预测器17070可基于参考画面上运动向量所指定的参考块(参考样本阵列)来推导当前块的预测块。在这种情况下,为了减少在帧间预测模式下发送的运动信息量,可基于邻近块与当前块之间的运动信息的相关性基于每块、子块或样本来预测运动信息。运动信息可包括运动向量和参考画面索引。运动信息还可包括关于帧间预测方向(L0预测、L1预测、Bi预测等)的信息。在帧间预测的情况下,邻近块可包括存在于当前画面中的空间邻近块和存在于参考画面中的时间邻近块。例如,帧间预测器17070可基于邻近块来配置运动信息候选列表,并且基于所接收的候选选择信息来推导当前块的运动向量和/或参考画面索引。可基于各种预测模式来执行帧间预测。关于预测的信息可包括指示当前块的帧间预测模式的信息。
加法器17040可将逆变换器17030中获取的残差信号与从帧间预测器17070或帧内预测器17080输出的预测信号(预测块或预测样本阵列)相加,从而生成重构信号(重构画面、重构块或重构样本阵列)。当如应用跳过模式的情况中一样不存在用于处理目标块的残差信号时,预测块可用作重构块。
加法器17040可被称为重构器或重构块生成器。所生成的重构信号可用于当前画面中的下一处理目标块的帧内预测,或者可如下所述通过滤波用于下一画面的帧间预测。
滤波器17050可通过对从加法器17040输出的重构信号应用滤波来改进主观/客观图像质量。例如,滤波器17050可通过对重构画面应用各种滤波技术来生成修改的重构画面,并且可将修改的重构画面发送到存储器17060(具体地,存储器17060的DPB)。例如,各种滤波方法可包括去块滤波、样本自适应偏移、自适应环路滤波和双边滤波。
存储在存储器17060的DPB中的重构画面可用作帧间预测器17070中的参考画面。存储器17060可存储关于当前画面中推导(或解码)运动信息的块的运动信息和/或关于已经重构的画面中的块的运动信息。所存储的运动信息可被传送至帧间预测器17070以用作关于空间邻近块的运动信息或关于时间邻近块的运动信息。存储器17060可存储当前画面中的重构块的重构样本并将重构样本传送至帧内预测器17080。
在本公开中,关于图15的编码器15000的滤波器15070、帧间预测器15090和帧内预测器15100描述的实施方式可分别以相同或对应的方式应用于解码器17000的滤波器17050、帧间预测器17070和帧内预测器17080。
可跳过上述预测、逆变换和逆量化过程中的至少一个。例如,对于应用了脉冲编码调制(PCM)的块,可跳过预测、逆变换和逆量化过程,并且解码的样本的值可用作重构图像的样本。
占用图解压缩(16003)
这是上述占用图压缩的逆处理。占用图解压缩是通过将占用图比特流解压缩来重构占用图的处理。
辅助补片信息解压缩(16004)
辅助补片信息可以通过执行上述辅助补片信息压缩的逆处理并且解码压缩的辅助补片信息比特流来重构。
几何重构(16005)
这是上述几何图像生成的逆处理。最初,使用重构的占用图、包括在辅助补片信息中的关于补片的2D位置/尺寸信息以及关于块和补片之间的映射的信息从几何图像提取补片。然后,基于所提取的补片的几何图像和包括在辅助补片信息中的关于补片的3D位置信息在3D空间中重构点云。当与补片内的点(u,v)对应的几何值为g(u,v),并且在3D空间的法向轴、切向轴和双切轴上补片的位置坐标为(δ0,s0,r0)时,映射到点(u,v)的位置在3D空间中的法向、切向和双切坐标δ(u,v)、s(u,v)和r(u,v)可表示如下。
δ(u,v)=δ0+g(u,v)
s(u,v)=s0+u
r(u,v)=r0+v
平滑(16006)
与上述编码处理中的平滑相同,平滑是用于消除由于在压缩处理期间发生的图像质量劣化而可能出现在补片边界上的不连续的处理。
纹理重构(16007)
纹理重构是通过向构成平滑的点云的各个点指派颜色值来重构颜色点云的处理。这可通过基于上述几何重构处理中重构的几何图像和点云的映射信息向点云中与3D空间中的相同位置对应的点指派与2D空间中的几何图像中相同的位置处的纹理图像像素所对应的颜色值来执行。
颜色平滑(16008)
颜色平滑类似于上述几何平滑的处理。颜色平滑是用于消除由于在压缩处理期间发生的图像质量劣化而可能出现在补片边界上的不连续的处理。颜色平滑可通过以下操作执行:
①使用K-D树等计算构成重构的点云的各个点的邻近点。可使用在上述几何平滑处理中计算的邻近点信息。
②确定各个点是否位于补片边界上。这些操作可基于在上述几何平滑处理中计算的边界信息来执行。
③检查存在于边界上的点的邻近点的颜色值的分布并且确定是否要执行平滑。例如,当亮度值的熵小于或等于阈值局部条目(存在许多相似的亮度值)时,可确定对应部分不是边缘部分,并且可执行平滑。作为平滑方法,点的颜色值可被替换为邻近点的颜色值的平均。
图18是示出根据本公开的实施方式的用于压缩和发送基于V-PCC的点云数据的发送装置的操作的流程图。
根据实施方式的发送装置可以对应于图1的发送装置、图4的编码处理、和图15的2D视频/图像编码器,或者执行其操作的一些/全部。发送装置的每个组件可以对应于软件、硬件、处理器和/或其组合。
发送终端使用V-PCC压缩和传输点云数据的操作处理可如图所示执行。
根据实施方式的点云数据发送装置可被称为发送装置或发送系统。
关于补片生成器18000,基于输入的点云数据生成用于点云的2D图像映射的补片。作为补片生成的结果,生成补片信息和/或辅助补片信息。生成的补片信息和/或辅助补片信息可以用于几何图像生成、纹理图像生成、平滑和用于平滑的几何重构的处理中。
补片打包器18001执行将由补片生成器18000生成的补片映射到2D图像中的补片打包处理。例如,可以打包一个或更多个补片。作为补片打包的结果,可以生成占用图。占用图可用于几何图像生成、几何图像填充、纹理图像填充和/或用于平滑的几何重构的处理中。
几何图像生成器18002基于点云数据、补片信息(或辅助补片信息)和/或占用图生成几何图像。生成的几何图像由编码预处理器18003预处理,然后由视频编码器18006编码成一个比特流。
编码预处理器18003可以包括图像填充过程。换句话说,生成的几何图像和生成的纹理图像中的一些空间可以被无意义的数据填充。编码预处理器18003还可以包括用于生成的纹理图像或已经对其执行图像填充的纹理图像的组扩张过程。
几何重构器18010基于由视频编码器18006编码的几何比特流、辅助补片信息和/或占用图来重构3D几何图像。
平滑器18009基于辅助补片信息对由几何重构器18010重构并输出的3D几何图像进行平滑,并将平滑的3D几何图像输出到纹理图像生成器18004。
纹理图像生成器18004可以基于平滑的3D几何、点云数据、补片(或打包的补片)、补片信息(或辅助补片信息)和/或占用图来生成纹理图像。生成的纹理图像可以由编码预处理器18003进行预处理,然后由视频编码器18006编码成一个视频比特流。
元数据编码器18005可以将辅助补片信息编码成一个元数据比特流。
视频编码器18006可以将从编码预处理器18003输出的几何图像和纹理图像编码成相应的视频比特流,并且可以将占用图编码成一个视频比特流。根据实施方式,视频编码器18006通过应用图15的2D视频/图像编码器对每个输入图像进行编码。
复用器18007将从视频编码器18006输出的几何的视频比特流、纹理图像的视频比特流、占用图的视频比特流以及从元数据编码器18005输出的元数据的比特流(包括辅助补片信息)复用到一个比特流中。
发送器18008将从复用器18007输出的比特流发送到接收侧。另选地,还可以在复用器18007和发送器18008之间设置文件/片段封装器,并且可以将从复用器18007输出的比特流封装成文件和/或片段的形式并输出到发送器18008。
图18的补片生成器18000、补片打包器18001、几何图像生成器18002、纹理图像生成器18004、元数据编码器18005和平滑器18009可以分别对应于补片生成14000、补片打包14001、几何图像生成14002、纹理图像生成14003、辅助补片信息压缩14005和平滑14004。图18的编码预处理器18003可以包括图4的图像填充器14006和14007以及组扩张器14008,并且图18的视频编码器18006可以包括图4的视频压缩器14009、14010和14011和/或熵压缩器14012。对于没有参照图18描述的部分,参照图4至图15的描述。上述块可以省略或可以由具有相似或相同功能的块代替。此外,图18所示的每个块可以用作处理器、软件或硬件中的至少一种。另选地,可以将生成的几何、纹理图像、占用图的视频比特流和辅助补片信息的元数据比特流形成为文件中的一个或更多个轨道数据,或者封装成片段,并通过发送器发送到接收侧。
操作接收装置的过程
图19是示出根据实施方式的用于接收和恢复基于V-PCC的点云数据的接收装置的操作的流程图。
根据实施方式的接收装置可以对应于图1的接收装置、图16的解码处理和图17的2D视频/图像编码器,或者执行其操作的一些/全部。接收装置的每个组件可以对应于软件、硬件、处理器和/或其组合。
接收终端使用V-PCC接收和重构点云数据的操作可以如图中所示地执行。V-PCC接收终端的操作可以遵循图18的V-PCC发送终端的操作的逆处理。
根据实施方式的点云数据接收装置可以被称为接收装置、接收系统等。
接收器接收点云的比特流(即,压缩的比特流),解复用器19000从接收到的点云比特流中解复用纹理图像的比特流、几何图像的比特流、和占用图图像的比特流以及元数据(即,辅助补片信息)的比特流。纹理图像、几何图像和占用图图像的解复用的比特流被输出到视频解码器19001,并且元数据的比特流被输出到元数据解码器19002。
根据实施方式,当图18的发送装置设置有文件/片段封装器时,文件/片段解封装器设置在图19的接收装置的接收器和解复用器19000之间。在这种情况下,发送装置将点云比特流以文件和/或片段的形式进行封装和发送,并且接收装置接收并解封装包含点云比特流的文件和/或片段。
视频解码器19001将几何图像的比特流、纹理图像的比特流和占用图图像的比特流分别解码为几何图像、纹理图像和占用图图像。根据实施方式,视频解码器19001通过应用图17的2D视频/图像解码器来对每个输入的比特流执行解码操作。元数据解码器19002将元数据的比特流解码为辅助补片信息,并将该信息输出到几何重构器19003。
几何重构器19003基于从视频解码器19001和元数据解码器19002输出的几何图像、占用图和/或辅助补片信息来重构3D几何。
平滑器19004平滑由几何重构器19003重构的3D几何。
纹理重构器19005使用从视频解码器19001输出的纹理图像和/或平滑的3D几何来重构纹理。也就是说,纹理重构器19005通过使用纹理图像将颜色值指派给平滑的3D几何来重构颜色点云图像/画面。此后,为了提高客观/主观视觉质量,可以通过颜色平滑器19006对颜色点云图像/画面执行附加的颜色平滑处理。在点云渲染器19007中的渲染处理后,将通过上述操作推导的修改的点云图像/画面显示给用户。在一些情况下,可以省略颜色平滑处理。
上述块可以被省略或者可以被具有相似或相同功能的块代替。此外,图19所示的每个块可以用作处理器、软件和硬件中的至少一种。
图20示出根据实施方式的用于点云数据的基于V-PCC的存储和流传输的示例性架构。
图20的系统的一部分/全部可以包括图1的发送装置和接收装置、图4的编码处理、图15的2D视频/图像编码器、图16的解码处理、图18的发送装置和/或图19的接收装置中的一些或全部。图中的每个组件可以对应于软件、硬件、处理器和/或其组合。
图20示出用于存储或流传输根据基于视频的点云压缩(V-PCC)压缩的点云数据的总体架构。存储和流传输点云数据的处理可包括获取处理、编码处理、传输处理、解码处理、渲染处理和/或反馈处理。
实施方式提出了一种有效地提供点云媒体/内容/数据的方法。
为了有效地提供点云媒体/内容/数据,点云获取器20000可获取点云视频。例如,一个或更多个相机可通过捕获、编排或生成点云来获取点云数据。通过该获取处理,可获取包括各个点的3D位置(可由x、y和z位置值等表示)(以下称为几何)和各个点的属性(颜色、反射率、透明度等)的点云视频。例如,可生成包含点云视频的Polygon文件格式(PLY)(或斯坦福三角形格式)文件等。对于具有多个帧的点云数据,可获取一个或更多个文件。在这里理中,可生成点云相关元数据(例如,与捕获有关的元数据等)。
对于捕获的点云视频可能需要用于改进内容的质量的后处理。在视频捕获处理中,可在相机设备所提供的范围内调节最大/最小深度。即使在调节之后,仍可能存在不想要区域的点数据。因此,可执行去除不想要区域(例如,背景)或识别连接的空间并填充空间孔洞的后处理。另外,从共享空间坐标系的相机提取的点云可通过基于通过校准处理获取的各个相机的位置坐标将各个点变换到全局坐标系的处理被整合为一条内容。由此,可获取具有高密度点的点云视频。
点云预处理器20001可生成点云视频的一个或更多个画面/帧。一般地,画面/帧可以是以特定时间间隔表示一个图像的单元。此外,在将构成点云视频的点划分成一个或更多个补片并且将其映射到2D平面时,点云预处理器20001可以生成具有值0或1的占用图画面/帧,其是指示数据在2D平面中的对应位置处的存在与否的二值图。这里,补片是构成点云视频的点的集合,本文中,属于同一补片的点在3D空间中彼此相邻并且在映射到2D图像时被映射到6面边界框的平坦面当中的相同面。此外,点云预处理器20001可生成逐补片表示关于构成点云视频的各个点的位置(几何)的信息的深度图形式的几何画面/帧。点云预处理器20001也可生成逐补片表示关于构成点云视频的各个点的颜色信息的纹理画面/帧。在这里理中,可生成从各个补片重构点云所需的元数据。元数据可包含关于补片的信息(辅助信息或辅助补片信息),例如各个补片在2D/3D空间中的位置和大小。这些画面/帧可按时间顺序连续地生成以构造视频流或元数据流。
点云视频编码器20002可对与点云视频有关的一个或更多个视频流进行编码。一个视频可包括多个帧,并且一个帧可对应于静止图像/画面。在本公开中,点云视频可包括点云图像/帧/画面,并且术语“点云视频”可与点云视频/帧/画面互换使用。点云视频编码器20002可执行基于视频的点云压缩(V-PCC)处理。为了压缩和编码效率,点云视频编码器20002可执行诸如预测、变换、量化和熵编码的一系列处理。编码的数据(编码的视频/图像信息)可按比特流的形式输出。基于V-PCC处理,如下所述,点云视频编码器20002可通过将点云视频分成几何视频、属性视频、占用图视频和元数据(例如,关于补片的信息)来对点云视频进行编码。几何视频可包括几何图像,属性视频可包括属性图像,占用图视频可包括占用图图像。作为辅助信息的补片数据可包括补片相关信息。属性视频/图像可包括纹理视频/图像。
点云图像编码器20003可对与点云视频有关的一个或更多个图像进行编码。点云图像编码器20003可执行基于视频的点云压缩(V-PCC)处理。为了压缩和编码效率,点云图像编码器20003可执行诸如预测、变换、量化和熵编码的一系列处理。编码的图像可按比特流的形式输出。基于V-PCC处理,如下所述,点云图像编码器20003可通过将点云图像分成几何图像、属性图像、占用图图像和元数据(例如,关于补片的信息)来对点云图像进行编码。
根据实施方式,点云视频编码器20002、点云图像编码器20003、点云视频解码器20006和点云图像解码器20008可以由如上所述的一个编码器/解码器执行,并且可以沿着单独的路径执行,如图所示。
在文件/片段封装器20004中,可将编码的点云数据和/或点云相关元数据封装为文件或片段以用于流传输。这里,点云相关元数据可接收自元数据处理器(未示出)等。元数据处理器可包括在点云视频/图像编码器20002/20003中,或者可被配置成单独的组件/模块。文件/片段封装器20004可按诸如ISOBMFF的文件格式或按DASH片段等形式封装对应视频/图像/元数据。根据实施方式,文件/片段封装器20004可包括文件格式的点云元数据。点云相关元数据可包括在例如ISOBMFF文件格式的各种级别的盒中,或作为文件内的单独轨道中的数据。根据实施方式,文件/片段封装器20004可将点云相关元数据封装成文件。
根据实施方式的文件/片段封装器20004可以将一个比特流或单独的比特流存储到文件中的一个或更多个轨道中,并且还可以封装用于该操作的信令信息。此外,包括在比特流中的阿特拉斯(atlas)流(或补片流)可以被存储为文件中的轨道,并且可以存储相关信令信息。此外,比特流中存在的SEI消息可以存储在文件的轨道中,并且可以存储相关信令信息。
发送处理器(未示出)可根据文件格式来执行封装的点云数据的传输处理。发送处理器可包括在发送器(未示出)中,或者可被配置成单独的组件/模块。发送处理器可根据传输协议处理点云数据。传输处理可包括经由广播网络传送的处理和通过宽带传送的处理。根据实施方式,发送处理器可从元数据处理器接收点云相关元数据以及点云数据,并且执行点云视频数据的传输处理。
发送器可经由数字存储介质或网络将点云比特流或包括比特流的文件/片段发送到接收装置的接收器(未示出)。为了传输,可执行根据任何传输协议的处理。为传输而处理的数据可经由广播网络和/或通过宽带传送。数据可按照按需方式传送至接收侧。数字存储介质可包括诸如USB、SD、CD、DVD、蓝光、HDD和SSD的各种存储介质。发送器可包括用于生成预定文件格式的媒体文件的元件,并且可包括用于经由广播/通信网络传输的元件。接收器可提取比特流并将提取的比特流发送到解码器。
接收器可接收根据本公开的点云数据发送装置所发送的点云数据。根据传输信道,接收器可经由广播网络或通过宽带接收点云数据。另选地,可通过数字存储介质接收点云数据。接收器可包括将所接收的数据解码并根据用户的视口渲染数据的处理。
接收处理器(未示出)可根据传输协议对所接收的点云视频数据执行处理。接收处理器可包括在接收器中,或者可被配置成单独的组件/模块。接收处理器可相反地执行上述发送处理器的处理,以与在发送侧执行的传输处理对应。接收处理器可将获取的点云视频传送至文件/片段解封装器20005,并将获取的点云相关元数据传送至元数据解析器。
文件/片段解封装器20005可将以文件的形式从接收处理器接收的点云数据解封装。文件/片段解封装器20005可根据ISOBMFF等对文件进行解封装,并且可获取点云比特流或点云相关元数据(或单独的元数据比特流)。所获取的点云比特流可被传送至点云视频解码器20006和点云图像解码器20008,并且所获取的点云视频相关元数据(元数据比特流)可被传送至元数据处理器(未示出)。点云比特流可包括元数据(元数据比特流)。元数据处理器可包括在点云视频解码器20006中,或者可被配置成单独的组件/模块。文件/片段解封装器20005所获取的点云视频相关元数据可采取文件格式中的盒或轨道的形式。必要时,文件/片段解封装器20005可从元数据处理器接收解封装所需的元数据。点云相关元数据可被传送至点云视频解码器20006和/或点云图像解码器20008并在点云解码处理中使用,或者可被传送至渲染器20009并在点云渲染处理中使用。
点云视频解码器20006可接收比特流并通过执行与点云视频编码器20002的操作对应的操作来对视频/图像进行解码。在这种情况下,如下所述,点云视频解码器20006可通过将点云视频分成几何视频、属性视频、占用图视频和辅助补片信息来将点云视频解码。几何视频可包括几何图像,属性视频可包括属性图像,占用图视频可包括占用图图像。辅助信息可包括辅助补片信息。属性视频/图像可包括纹理视频/图像。
点云图像解码器20008可以接收比特流并且执行对应于点云图像编码器20003的操作的逆处理。在这种情况下,点云图像解码器20008可以将点云图像划分成几何图像、属性图像、占用图图像和元数据(其是例如辅助补片信息),以对其进行解码。
3D几何可基于解码的几何视频/图像、占用图和辅助补片信息来重构,然后可经受平滑处理。可通过基于纹理视频/图像向平滑的3D几何指派颜色值来重构颜色点云图像/画面。渲染器20009可渲染重构的几何和颜色点云图像/画面。渲染的视频/图像可通过显示器显示。渲染结果的全部或部分可通过VR/AR显示器或典型显示器显示给用户。
传感器/跟踪器(感测/跟踪)20007从用户或接收侧获取取向信息和/或用户视口信息并将取向信息和/或用户视口信息传送至接收器和/或发送器。取向信息可表示关于用户头部的位置、角度、移动等的信息,或者表示关于用户正通过其观看视频/图像的装置的位置、角度、移动等的信息。基于该信息,可计算关于3D空间中用户当前观看的区域的信息(即,视口信息)。
视口信息可以是关于3D空间中用户当前通过装置或HMD观看的区域的信息。诸如显示器的装置可基于取向信息、装置所支持的垂直或水平FOV等提取视口区域。可在接收侧提取或计算取向或视口信息。在接收侧分析的取向或视口信息可在反馈信道上发送至发送侧。
基于传感器/跟踪器20007获取的取向信息和/或指示用户当前观看的区域的视口信息,接收器可有效地从文件仅提取或解码特定区域(即,取向信息和/或视口信息所指示的区域)的媒体数据。另外,基于传感器/跟踪器20007所获取的取向信息和/或视口信息,发送器可有效地仅对特定区域(即,取向信息和/或视口信息所指示的区域)的媒体数据进行编码,或者生成并发送其文件。
渲染器20009可在3D空间中渲染解码的点云数据。渲染的视频/图像可通过显示器显示。用户可通过VR/AR显示器或典型显示器来观看渲染结果的全部或部分。
反馈处理可包括将可在渲染/显示处理中获取的各种反馈信息传送至发送侧或接收侧的解码器。通过反馈处理,可在消费点云数据时提供交互性。根据实施方式,头部取向信息、指示用户当前观看的区域的视口信息等可在反馈处理中被传送至发送侧。根据实施方式,用户可与在VR/AR/MR/自主驾驶环境中实现的内容交互。在这种情况下,与交互有关的信息可在反馈处理中被传送至发送侧或服务提供商。根据实施方式,可跳过反馈处理。
根据实施方式,上述反馈信息可不仅被发送至发送侧,而且在接收侧处消费。也就是说,接收侧的解封装处理、解码和渲染处理可基于上述反馈信息来执行。例如,可基于取向信息和/或视口信息优先解封装、解码和渲染关于用户当前观看的区域的点云数据。
图21是根据实施方式的用于存储和发送点云数据的装置的示例性框图。
图21示出根据实施方式的点云系统。图21的系统的一部分/全部可以包括图1的发送装置和接收装置、图4的编码处理、图15的2D视频/图像编码器、图16的解码处理、图18的发送装置和/或图19的接收装置中的一些或全部。此外,它可以被包括或对应于图20的系统的一部分/全部。
根据实施方式的点云数据发送装置可如图所示配置。发送装置的各个元件可以是模块/单元/组件/硬件/软件/处理器。
点云的几何、属性、占用图、辅助数据(辅助信息)和网格数据可各自被配置成单独的流或存储在文件中的不同轨道中。此外,它们可被包括在单独的片段中。
点云获取器21000获取点云。例如,一个或更多个相机可通过捕获、编排或生成点云来获取点云数据。通过该获取处理,可获取包括各个点的3D位置(可由x、y和z位置值等表示)(以下称为几何)和各个点的属性(颜色、反射率、透明度等)的点云数据。例如,可生成包括点云数据的Polygon文件格式(PLY)(或斯坦福三角形格式)文件等。对于具有多个帧的点云数据,可获取一个或更多个文件。在这里理中,可生成点云相关元数据(例如,与捕获有关的元数据等)。补片生成器21001从点云数据生成补片。补片生成器21001将点云数据或点云视频生成为一个或更多个画面/帧。画面/帧通常可表示以特定时间间隔表示一个图像的单元。当构成点云视频的点被分成一个或更多个补片(构成点云视频的点的集合,其中,属于同一补片的点在3D空间中彼此相邻并且在映射到2D图像时在6面边界框的平坦面之间在相同方向上映射)并映射到2D平面时,可生成二值图的占用图画面/帧,其以0或1指示2D平面中的对应位置处是否存在数据。另外,可生成逐补片表示关于构成点云视频的各个点的位置(几何)的信息的深度图形式的几何画面/帧。可生成逐补片表示关于构成点云视频的各个点的颜色信息的纹理画面/帧。在这里理中,可生成从各个补片重构点云所需的元数据。元数据可包括关于补片的信息,例如各个补片在2D/3D空间中的位置和大小。这些画面/帧可按时间顺序连续地生成以构造视频流或元数据流。
另外,补片可用于2D图像映射。例如,点云数据可被投影到立方体的各个面上。在补片生成之后,可基于所生成的补片来生成几何图像、一个或更多个属性图像、占用图、辅助数据和/或网格数据。
几何图像生成、属性图像生成、占用图生成、辅助数据生成和/或网格数据生成由点云预处理器20001或控制器(未示出)执行。点云预处理器20001可以包括补片生成器21001、几何图像生成器21002、属性图像生成器21003、占用图生成器21004、辅助数据生成器21005和网格数据生成器21006。
几何图像生成器21002基于补片生成的结果来生成几何图像。几何表示3D空间中的点。使用占用图来生成几何图像,其包括与补片的2D图像打包有关的信息、辅助数据(包括补片数据)和/或基于补片的网格数据。几何图像与诸如在补片生成之后生成的补片的深度(例如,近、远)的信息有关。
属性图像生成器21003生成属性图像。例如,属性可表示纹理。纹理可以是与各个点匹配的颜色值。根据实施方式,可生成包括纹理的多个属性(例如,颜色和反射率)(N个属性)的图像。多个属性可包括材料信息和反射率。根据实施方式,属性可另外包括指示颜色的信息,其即使对于相同的纹理也可根据视角和光而变化。
占用图生成器21004从补片生成占用图。占用图包括指示像素(例如,对应几何或属性图像)中是否存在数据的信息。
辅助数据生成器21005生成包括关于补片的信息的辅助数据(或辅助信息)。也就是说,辅助数据表示关于点云对象的补片的元数据。例如,其可表示诸如补片的法向量的信息。具体地,辅助数据可包括从补片重构点云所需的信息(例如,关于补片在2D/3D空间中的位置、大小等的信息以及投影(正常)平面标识信息、补片映射信息等)。
网格数据生成器21006从补片生成网格数据。网格表示邻近点之间的连接。例如,其可表示三角形形状的数据。例如,网格数据是指点之间的连接性。
点云预处理器20001或控制器生成与补片生成、几何图像生成、属性图像生成、占用图生成、辅助数据生成和网格数据生成有关的元数据。
点云发送装置响应于点云预处理器20001所生成的结果而执行视频编码和/或图像编码。点云发送装置可生成点云图像数据以及点云视频数据。根据实施方式,点云数据可仅具有视频数据,仅具有图像数据,和/或具有视频数据和图像数据二者。
视频编码器21007执行几何视频压缩、属性视频压缩、占用图视频压缩、辅助数据压缩和/或网格数据压缩。视频编码器21007生成包含编码的视频数据的视频流。
具体地,在几何视频压缩中,点云几何视频数据被编码。在属性视频压缩中,点云的属性视频数据被编码。在辅助数据压缩中,与点云视频数据关联的辅助数据被编码。在网格数据压缩中,点云视频数据的网格数据被编码。点云视频编码器的各个操作可并行执行。
图像编码器21008执行几何图像压缩、属性图像压缩、占用图图像压缩、辅助数据压缩和/或网格数据压缩。图像编码器生成包含编码的图像数据的图像。
具体地,在几何图像压缩中,点云几何图像数据被编码。在属性图像压缩中,点云的属性图像数据被编码。在辅助数据压缩中,与点云图像数据关联的辅助数据被编码。在网格数据压缩中,与点云图像数据关联的网格数据被编码。点云图像编码器的各个操作可并行执行。
视频编码器21007和/或图像编码器21008可从点云预处理器21001接收元数据。视频编码器21007和/或图像编码器21008可基于元数据来执行各个编码处理。
文件/片段封装器21009以文件和/或片段的形式封装视频流和/或图像。文件/片段封装器21009执行视频轨道封装、元数据轨道封装和/或图像封装。
在视频轨道封装中,一个或更多个视频流可被封装到一个或更多个轨道。
在元数据轨道封装中,与视频流和/或图像有关的元数据可被封装在一个或更多个轨道中。元数据包括与点云数据的内容有关的数据。例如,其可包括初始观看取向元数据。根据实施方式,元数据可被封装到元数据轨道,或者可被一起封装在视频轨道或图像轨道中。
在图像封装中,一个或更多个图像可被封装到一个或更多个轨道或项目中。
例如,根据实施方式,当四个视频流和两个图像被输入到封装器时,四个视频流和两个图像可被封装在一个文件中。
文件/片段封装器21009可从点云预处理器21001接收元数据。文件/片段封装器21009可基于元数据来执行封装。
由文件/片段封装器21009生成的文件和/或片段由点云发送装置或发送器发送。例如,片段可根据基于DASH的协议来传送。
传送器可经由数字存储介质或网络将点云比特流或包括比特流的文件/片段发送到接收装置的接收器。为了传输,可执行根据任何传输协议的处理。为传输已处理的数据可经由广播网络和/或通过宽带传送。数据可按照按需方式传送至接收侧。数字存储介质可包括诸如USB、SD、CD、DVD、蓝光、HDD和SSD的各种存储介质。
根据实施方式的文件/片段封装器21009可以将一个比特流或单独的比特流划分并存储到文件中的一个或更多个轨道中,并且可以封装用于其的信令信息。此外,包括在比特流中的补片(或阿特拉斯)流可以被存储为文件中的轨道,并且可以存储相关信令信息。此外,比特流中存在的SEI消息可以存储在文件的轨道中,并且可以存储相关信令信息。
传送器可包括用于生成预定文件格式的媒体文件的元件,并且可包括用于经由广播/通信网络传输的元件。传送器从接收器接收取向信息和/或视口信息。传送器可将所获取的取向信息和/或视口信息(或用户所选择的信息)传送至点云预处理器21001、视频编码器21007、图像编码器21008、文件/片段封装器21009和/或点云编码器。基于取向信息和/或视口信息,点云编码器可对所有点云数据或取向信息和/或视口信息所指示的点云数据进行编码。基于取向信息和/或视口信息,文件/片段封装器可对所有点云数据或取向信息和/或视口信息所指示的点云数据进行封装。基于取向信息和/或视口信息,传送器可传送所有点云数据或取向信息和/或视口信息所指示的点云数据。
例如,点云预处理器21001可对所有点云数据或对取向信息和/或视口信息所指示的点云数据执行上述操作。视频编码器21007和/或图像编码器21008可对所有点云数据或对取向信息和/或视口信息所指示的点云数据执行上述操作。文件/片段封装器21009可对所有点云数据或对取向信息和/或视口信息所指示的点云数据执行上述操作。发送器可对所有点云数据或对取向信息和/或视口信息所指示的点云数据执行上述操作。
图22是根据实施方式的点云数据接收装置的示例性框图。
图22示出根据实施方式的点云系统。图22的系统的一部分/全部可以包括图1的发送装置和接收装置、图4的编码处理、图15的2D视频/图像编码器、图16的解码处理、图18的发送装置和/或图19的接收装置中的一些或全部。此外,它可以被包括或对应于图20和图21的系统的一部分/全部。
接收装置的各个组件可以是模块/单元/组件/硬件/软件/处理器。传送客户端可接收包括根据实施方式的点云数据发送装置所发送的比特流的点云数据、点云比特流或文件/片段。根据用于传输的信道,接收器可经由广播网络或通过宽带接收点云数据。另选地,可通过数字存储介质接收点云数据。接收器可包括将所接收的数据解码并根据用户视口渲染所接收的数据的处理。传送客户端(接收处理器)22006可根据传输协议对所接收的点云数据执行处理。接收处理器可包括在接收器中,或者被配置成单独的组件/模块。接收处理器可相反地执行上述发送处理器的处理,以与发送侧执行的传输处理对应。接收处理器可将所获取的点云数据传送至文件/片段解封装器22000并将所获取的点云相关元数据传送至元数据处理器(未示出)。
传感器/跟踪器22005获取取向信息和/或视口信息。传感器/跟踪器22005可将所获取的取向信息和/或视口信息传送至传送客户端22006、文件/片段解封装器22000、点云解码器22001和22002、以及点云处理器22003。
传送客户端22006可基于取向信息和/或视口信息来接收所有点云数据或取向信息和/或视口信息所指示的点云数据。文件/片段解封装器22000可基于取向信息和/或视口信息将所有点云数据或取向信息和/或视口信息所指示的点云数据解封装。点云解码器(视频解码器22001和/或图像解码器22002)可基于取向信息和/或视口信息将所有点云数据或取向信息和/或视口信息所指示的点云数据解码。点云处理器22003可基于取向信息和/或视口信息来处理所有点云数据或取向信息和/或视口信息所指示的点云数据。
文件/片段解封装器22000执行视频轨道解封装、元数据轨道解封装和/或图像解封装。文件/片段解封装器22000可将从接收处理器以文件的形式接收的点云数据解封装。文件/片段解封装器22000可根据ISOBMFF等对文件或片段进行解封装,以获取点云比特流或点云相关元数据(或单独的元数据比特流)。所获取的点云比特流可被传送至点云解码器22001和22002,并且所获取的点云相关元数据(或元数据比特流)可被传送至元数据处理器(未示出)。点云比特流可包括元数据(元数据比特流)。元数据处理器可包括在点云视频解码器中,或者可被配置成单独的组件/模块。文件/片段解封装器22000所获取的点云相关元数据可采取文件格式中的盒或轨道的形式。必要时,文件/片段解封装器22000可从元数据处理器接收解封装所需的元数据。点云相关元数据可被传送至点云解码器22001和22002并在点云解码处理中使用,或者可被传送至渲染器22004并在点云渲染处理中使用。文件/片段解封装器22000可生成与点云数据有关的元数据。
在由文件/片段解封装器22000进行的视频轨道解封装中,包含在文件和/或片段中的视频轨道被解封装。包括几何视频、属性视频、占用图、辅助数据和/或网格数据的视频流被解封装。
在由文件/片段解封装器22000进行的元数据轨道解封装中,包括与点云数据和/或辅助数据有关的元数据的比特流被解封装。
在由文件/片段解封装器22000进行的图像解封装中,包括几何图像、属性图像、占用图、辅助数据和/或网格数据的图像被解封装。
根据实施方式的文件/片段解封装器22000可以将一个比特流或单独的比特流存储到文件中的一个或更多个轨道中,并且还可以解封装用于其的信令信息。此外,包括在比特流中的或阿特拉斯(补片)流可以基于文件中的轨道而被解封装,并且可以解析相关信令信息。此外,比特流中存在的SEI消息可以基于文件中的轨道而被解封装,并且还可以获取相关信令信息。
视频解码器22001执行几何视频解压缩、属性视频解压缩、占用图解压缩、辅助数据解压缩和/或网格数据解压缩。视频解码器22001在与根据实施方式的点云发送装置的视频编码器所执行的处理对应的处理中对几何视频、属性视频、辅助数据和/或网格数据进行解码。
图像解码器22002执行几何图像解压缩、属性图像解压缩、占用图解压缩、辅助数据解压缩和/或网格数据解压缩。图像解码器22002在与根据实施方式的点云发送装置的图像编码器所执行的处理对应的处理中对几何图像、属性图像、辅助数据和/或网格数据进行解码。
根据实施方式的视频解码器22001和视频解码器22002可以由如上所述的一个视频/图像解码器处理,并且可以沿着单独的路径执行,如图所示。
视频解码器22001和/或图像解码器22002可生成与视频数据和/或图像数据有关的元数据。
在点云处理器22003中,执行几何重构和/或属性重构。
在几何重构中,基于占用图、辅助数据和/或网格数据从解码的视频数据和/或解码的图像数据重构几何视频和/或几何图像。
在属性重构中,基于占用图、辅助数据和/或网格数据从解码的属性视频和/或解码的属性图像重构属性视频和/或属性图像。根据实施方式,例如,属性可以是纹理。根据实施方式,属性可表示多条属性信息。当存在多个属性时,根据实施方式的点云处理器22003执行多个属性重构。
点云处理器22003可从视频解码器22001、图像解码器22002和/或文件/片段解封装器22000接收元数据,并且基于元数据来处理点云。
点云渲染器22004渲染重构的点云。点云渲染器22004可从视频解码器22001、图像解码器22002和/或文件/片段解封装器22000接收元数据,并且基于元数据来渲染点云。
显示器将渲染结果显示在实际显示装置上。
根据根据实施方式的方法/装置,如图20至图22所示,发送侧可以将点云数据编码成比特流,将比特流封装成文件和/或片段的形式并将其发送。接收侧可以将文件和/或片段解封装成包含点云的比特流,并且可以将比特流解码成点云数据。例如,根据实施方式的点云数据装置可以基于文件封装点云数据。文件可以包括包含点云的参数的V-PCC轨道、包含几何的几何轨道、包含属性的属性轨道和包含占用图的占用轨道。
另外,根据实施方式的点云数据接收装置基于文件对点云数据进行解封装。文件可以包括包含点云的参数的V-PCC轨道、包含几何的几何轨道、包含属性的属性轨道和包含占用图的占用轨道。
上述封装操作可以由图20的文件/片段封装器20004、图21的文件/片段封装器21009执行。上述解封装操作可由图20的文件/片段解封装器20005或图22的文件/片段解封装器22000执行。
图23示出可结合根据实施方式的点云数据发送/接收方法/装置操作的示例性结构。
在根据实施方式的结构中,服务器23600、机器人23100、自驾驶车辆23200、XR装置23300、智能电话23400、家用电器23500和/或头戴式显示器(HMD)23700中的至少一个连接到云网络23000。这里,机器人23100、自驾驶车辆23200、XR装置23300、智能电话23400或家用电器23500可被称为装置。另外,XR装置23300可对应于根据实施方式的点云数据(PCC)装置,或者可在操作上连接到PCC装置。
云网络23000可表示构成云计算基础设施的一部分或存在于云计算基础设施中的网络。这里,云网络23000可使用3G网络、4G或长期演进(LTE)网络或5G网络来配置。
服务器23600可经由云网络23000连接到机器人23100、自驾驶车辆23200、XR装置23300、智能电话23400、家用电器23500和/或HMD 23700中的至少一个,并且可辅助所连接的装置23100至23700的至少一部分处理。
HMD 23700表示根据实施方式的XR装置和/或PCC装置的实现类型之一。根据实施方式的HMD型装置包括通信单元、控制单元、存储器、I/O单元、传感器单元和电源单元。
以下,将描述应用了上述技术的装置23100至23500的各种实施方式。图23所示的装置23100至23500可在操作上连接/联接到根据上述实施方式的点云数据发送和接收装置。
<PCC+XR>
XR/PCC装置23300可采用PCC技术和/或XR(AR+VR)技术,并且可被实现为HMD、设置在车辆中的平视显示器(HUD)、电视、移动电话、智能电话、计算机、可穿戴装置、家用电器、数字标牌、车辆、固定机器人或移动机器人。
XR/PCC装置23300可分析通过各种传感器或从外部装置获取的3D点云数据或图像数据并且生成关于3D点的位置数据和属性数据。由此,XR/PCC装置23300可获取关于周围空间或真实对象的信息,并且渲染和输出XR对象。例如,XR/PCC装置23300可使包括关于所识别的对象的辅助信息的XR对象与所识别的对象匹配并输出匹配的XR对象。
<PCC+自驾驶+XR>
自驾驶车辆23200可通过应用PCC技术和XR技术被实现为移动机器人、车辆、无人驾驶飞行器等。
应用了XR/PCC技术的自驾驶车辆23200可表示设置有用于提供XR图像的手段的自主车辆,或者作为XR图像中的控制/交互目标的自主车辆。具体地,作为XR图像中的控制/交互目标的自驾驶车辆23200可与XR装置23300相区分并且可操作上与之连接。
具有用于提供XR/PCC图像的手段的自驾驶车辆23200可从包括相机的传感器获取传感器信息,并且基于所获取的传感器信息来输出所生成的XR/PCC图像。例如,自驾驶车辆可具有HUD并向其输出XR/PCC图像以向乘客提供与真实对象或存在于画面上的对象对应的XR/PCC对象。
在这种情况下,当XR/PCC对象被输出到HUD时,XR/PCC对象的至少一部分可被输出以与乘客眼睛所指向的真实对象交叠。另一方面,当XR/PCC对象输出在自驾驶车辆内部提供的显示器上时,XR/PCC对象的至少一部分可被输出以与画面上的对象交叠。例如,自驾驶车辆可输出与诸如道路、另一车辆、交通灯、交通标志、两轮车、行人和建筑物的对象对应的XR/PCC对象。
根据实施方式的虚拟现实(VR)技术、增强现实(AR)技术、混合现实(MR)技术和/或点云压缩(PCC)技术适用于各种装置。
换句话说,VR技术是仅提供真实世界对象、背景等作为CG图像的显示器技术。另一方面,AR技术是指显示在真实对象图像上虚拟创建的CG图像的技术。MR技术与上述AR技术的相似之处在于,要显示的虚拟对象与真实世界混合并组合。然而,MR技术不同于AR技术,AR技术在真实对象与作为CG图像创建的虚拟对象之间进行清楚的区分并且使用虚拟对象作为真实对象的补充对象,而MR技术将虚拟对象当作具有与真实对象相同特性的对象。更具体地,MR技术应用的示例是全息服务。
最近,VR、AR和MR技术通常被称为扩展现实(XR)技术,而非彼此清楚地区分。因此,本公开的实施方式适用于所有VR、AR、MR和XR技术。对于这些技术,可应用基于PCC、V-PCC和G-PCC技术的编码/解码。
根据实施方式的PCC方法/装置可应用于提供自驾驶服务的自驾驶车辆23200。
提供自驾驶服务的自驾驶车辆23200连接到PCC装置以进行有线/无线通信。
当根据实施方式的点云数据压缩发送和接收装置(PCC装置)连接到自驾驶车辆23200以进行有线/无线通信时,装置可接收并处理与可与自驾驶服务一起提供的AR/VR/PCC服务有关的内容数据并且将处理的内容数据发送到自驾驶车辆23200。在点云数据发送和接收装置被安装在车辆上的情况下,点云发送和接收装置可根据通过用户接口装置输入的用户输入信号来接收并处理与AR/VR/PCC服务有关的内容数据并且将处理的内容数据提供给用户。根据实施方式的自驾驶车辆23200或用户接口装置可接收用户输入信号。根据实施方式的用户输入信号可包括指示自驾驶服务的信号。
如上所述,图1、图4、图18、图20或图21的基于V-PCC的点云视频编码器将3D点云数据(或内容)投影到2D空间中以生成补片。通过将数据划分为表示位置信息的几何图像(称为几何帧或几何补片帧)和表示颜色信息的纹理图像(称为属性帧或属性补片帧)来在2D空间中生成补片。几何图像和纹理图像针对每一帧进行视频压缩,并输出几何图像的视频比特流(称为几何比特流)和纹理图像的视频比特流(称为属性比特流)。此外,包括关于每个补片的投影平面信息和补片大小信息(这些是在接收侧解码2D补片所需的)的辅助补片信息(也称为补片信息或元数据或阿特拉斯数据)也被视频压缩并且输出辅助补片信息的比特流。此外,将每个像素的点的存在/不存在指示为0或1的占用图根据它是处于无损模式还是有损模式而被熵压缩或视频压缩,并且输出占用图的视频比特流(或称为占用图比特流)。将压缩的几何比特流、压缩的属性比特流、压缩的辅助补片信息比特流(也称为压缩的阿特拉斯比特流)和压缩的占用图比特流复用成V-PCC比特流的结构。
根据实施方式,V-PCC比特流可以按原样发送到接收侧,或者可以由图1、图18、图20或图21的文件/片段封装器以文件/片段的形式封装,并且发送到接收装置或存储在数字存储介质(例如,USB、SD、CD、DVD、蓝光、HDD、SSD等)中。根据本公开的实施方式,文件为文件格式ISOBMFF。
根据实施方式,V-PCC比特流可以通过文件中的多个轨道发送,或者可以通过单个轨道发送。稍后将描述细节。
在本公开中,点云数据(即,V-PCC数据)表示由点云帧的序列组成的点云的体积编码。在点云序列(其是点云帧的序列)中,每个点云帧包括点的集合。每个点可以具有3D位置(即,几何信息)以及诸如颜色、反射率、表面法线等的多个属性。也就是说,每个点云帧表示在特定的时间示例处由3D点的笛卡尔坐标(x、y、z)(即,位置)和零个或更多个属性指定的3D点的集合。
如本文所用,术语基于视频的点云压缩(V-PCC)与基于视觉体积视频的编码(V3C)相同。根据实施方式,术语V-PCC和V3C可以具有相同的含义并且可互换地使用。
根据实施方式,点云内容(或称为V-PCC内容或V3C内容)表示使用V-PCC编码的体积媒体(或点云数据)。
根据实施方式,点云内容(或称为体积场景)表示3D数据,并且可以划分成一个或更多个对象(或由一个或更多个对象构成)。
也就是说,体积场景是由构成体积媒体的一个或更多个对象构成的区域或单元。此外,当以文件格式封装V-PCC比特流时,根据空间标准对整个体积媒体的边界框进行划分获得的区域称为3D空间区域。根据实施方式,3D空间区域可以被称为3D区域或空间区域。
根据实施方式,对象可以表示一段点云数据或体积媒体或V3C内容或V-PCC内容。另外,可以根据空间准则等将对象划分成多个对象等。在本公开中,所划分的对象中的每一个被称为子对象或仅称为对象。根据实施方式,3D边界框可以表示指示关于3D空间中的对象的位置信息的信息,并且2D边界框可以表示围绕与2D帧中的一个对象相对应的补片的矩形区域。也就是说,在将对象投影到2D平面上的过程(其为对对象进行编码的过程中的一者)之后生成的数据是补片,并且围绕补片的框可以被称为2D边界框。也就是说,由于一个对象可以在编码过程中由多个补片组成,所以一个对象与补片相关。此外,3D空间中的对象由围绕对象的3D边界框信息表示,并且阿特拉斯帧包括对应于每个对象的补片信息和3D空间中的3D边界框信息。因此,对象与3D边界框、阿特拉斯拼块或3D空间区域相关。
根据实施方式,在以文件格式封装V-PCC比特流的步骤中,点云数据的3D边界框可以被分割成一个或更多个3D区域,并且每个分割的3D区域可以包括一个或更多个对象。此外,在将补片封装在阿特拉斯帧中的步骤时,在逐个对象的基础上收集补片,并且将补片封装(映射)到阿特拉斯帧中的一个或更多个阿特拉斯拼块区域。也就是说,一个3D区域(即,文件级别)可以与一个或更多个对象(即,比特流级别)相关,并且一个对象可以与一个或更多个3D区域相关。并且由于每个对象与一个或更多个阿特拉斯拼块相关,因此3D区域可以与一个或更多个阿特拉斯拼块相关。根据实施方式的阿特拉斯拼块(或拼块)表示阿特拉斯帧的可独立解码的矩形区域。
图24示出根据实施方式的对象与阿特拉斯拼块(或拼块)之间的关系的示例。
根据实施方式,假设点云内容(或称为点云数据或V3C内容或V-PCC内容)被划分为三个对象(对象#1、对象#2、对象#3),并且阿特拉斯帧由五个阿特拉斯拼块(阿特拉斯拼块#1、阿特拉斯拼块#2、阿特拉斯拼块#3、阿特拉斯拼块#4、阿特拉斯拼块#5)组成。
根据实施方式,3D区域可以彼此交叠。作为示例,3D(空间)区域#1可以包括对象#1,并且3D区域#2可以包括对象#2和对象#3。作为另一示例,3D区域#1可以包括对象#1和对象#2,并且3D区域#2可以包括对象#2和对象#3。换句话说,对象#2可以与3D区域#1和3D区域#2相关。另外,由于同一对象(例如,对象#2)可以被包括在不同的3D区域(例如,3D区域#1和3D区域#2)中,所以与对象#2相对应的补片可以被指派给(被包括在)不同的3D区域(3D区域#1和3D区域#2)。
根据实施方式,阿特拉斯帧由一个或更多个阿特拉斯拼块(或称为拼块)组成。点云内容中的对象可以与阿特拉斯帧中的一个或更多个阿特拉斯拼块相关。例如,如在图24中,假设点云内容(或点云数据)被划分成三个对象(对象#1、对象#2、对象#3),并且阿特拉斯帧由五个阿特拉斯拼块(阿特拉斯拼块#1、阿特拉斯拼块#2、阿特拉斯拼块#3、阿特拉斯拼块#4、阿特拉斯拼块#5)组成,对象#1可以与阿特拉斯拼块#1、阿特拉斯拼块#2相关,对象#2可以与阿特拉斯拼块#3相关,并且对象#3可以与阿特拉斯拼块#4和阿特拉斯拼块#5相关。这仅仅是用于更好地理解本公开的示例,并且点云内容被划分为的对象的数量和与每个对象相关的阿特拉斯拼块可以变化。
本公开提出一种用于仅从V-PCC比特流提取、解码以及渲染与必要对象相关的V-PCC子比特流的方法。
根据实施方式,对象可以与一个或更多个阿特拉斯子比特流(或称为阿特拉斯子流)相关。根据实施方式,可以将阿特拉斯子比特流定义为从包括阿特拉斯NAL单元的一部分的V-PCC比特流提取的子比特流。在实施方式中,阿特拉斯子比特流可以对应于一个阿特拉斯。如果有多个阿特拉斯,则可以生成多个阿特拉斯子比特流。另外,视频子比特流可以包含每个阿特拉斯或每个阿特拉斯拼块的占用、几何和属性分量。
例如,一个或更多个阿特拉斯(或阿特拉斯子比特流)可以被包括在V-PCC比特流中以支持3DOF+视频。本公开提出一种用于高效地使用接收器接收的一个或更多个阿特拉斯的方法。具体地,本公开提出一种用于即使在存在多个阿特拉斯子比特流时也仅从V-PCC比特流提取、解码和渲染必要子比特流的方法。
根据实施方式,阿特拉斯子比特流载送一部分或全部阿特拉斯数据。
根据实施方式,阿特拉斯数据是信令信息,其包括阿特拉斯序列参数集(ASPS)、阿特拉斯帧参数集(AFPS)、阿特拉斯适配参数集(AAPS)、阿特拉斯拼块组信息(也称为阿特拉斯拼块信息)和SEI消息,并且可以称为关于阿特拉斯的元数据。根据实施方式,ASPS是包含语法元素的语法结构,语法元素应用于如由ASPS中的语法元素(被称为每个拼块组(或拼块)头中的语法元素)的内容所确定的零个或更多个完整的编码阿特拉斯序列(CAS)。根据实施方式,AFPS是包括语法元素的语法结构,语法元素应用于如由每个拼块组(或拼块)中的语法元素的内容所确定的零个或更多个完整的编码阿特拉斯帧。根据实施方式,AAPS可以包括与阿特拉斯子比特流的一部分相关的相机参数,例如,相机位置、旋转、比例、和相机模型。在本公开中,为简单起见,ASPS、AFPS和AAPS被称为阿特拉斯参数集。
根据实施方式,如本文中所使用的,术语语法元素可以具有与字段或参数相同的含义。
根据实施方式,阿特拉斯表示2D边界框的集合,并且可以是投影到矩形帧上的补片。
根据实施方式,阿特拉斯帧是补片投影到的阿特拉斯样本的2D矩形阵列,以及与补片相关的与体积帧相对应的附加信息。阿特拉斯样本是与阿特拉斯相关的补片投影到的矩形帧的位置。
根据实施方式,阿特拉斯帧可以被划分成一个或更多个矩形分区,其可以被称为拼块分区或拼块。另选地,两个或更多个拼块分区可以被分组并称为拼块。换句话说,一个或更多个拼块分区可以构成一个拼块。在本公开中,拼块具有与阿特拉斯拼块相同的含义。拼块是称为阿特拉斯的点云数据的信令信息的划分单元。根据实施方式,阿特拉斯帧中的拼块不彼此交叠,并且一个阿特拉斯帧可以包括与拼块无关的区域(即,一个或更多个拼块分区)。另外,包括在一个阿特拉斯帧中的每个拼块的高度和宽度可以在拼块之间不同。
根据实施方式,与所有点云数据当中的特定3D空间区域相对应的一些点云数据可以与一个或更多个2D区域相关。因此,一个3D区域可以对应于一个阿特拉斯帧,并且可以与多个2D区域相关。根据实施方式,2D区域表示包含与3D区域中的点云数据相关的数据的一个或更多个视频帧或阿特拉斯帧。
根据实施方式,补片是构成点云的点的集合,其指示属于同一补片的点在3D空间中彼此相邻,并且在映射到2D图像的过程中在6面边界框平面当中沿相同方向映射。补片是关于点云数据的配置的信令信息。
根据实施方式的接收设备可以重构属性视频数据、几何视频数据和占用视频数据,它们是基于阿特拉斯(拼块、补片)的具有相同呈现时间的实际视频数据。
对于点云数据的空间访问或部分访问,需要根据3D(空间)区域或对象来访问点云数据的一部分。为此,在本公开中,发信号通知3D区域与拼块之间的映射信息、3D区域与对象之间的映射信息、对象与阿特拉斯之间的映射信息或对象与拼块之间的映射信息。
也就是说,在本公开中,为了支持接收装置的PCC解码器/播放器中的特定对象的解码和/或渲染/显示,发送装置可以生成用于标识对象与阿特拉斯之间的关系、对象与阿特拉斯拼块之间的关系或者对象与阿特拉斯子比特流之间的关系的信令信息并且将其发送到接收侧。该信令信息可以是静态的或随时间变化的。在本公开中,信令信息可以通过V-PCC比特流或通过载送V-PCC比特流的文件的样本条目和/或样本或以元数据的形式传送。根据实施方式,信令信息可以存储在样本、样本条目、样本组或轨道中的轨道组或文件中的单独元数据轨道中。具体地,信令信息的一部分可以以盒或全盒的形式存储在轨道的样本条目中。稍后将描述与对象和阿特拉斯相关的信令信息的细节以及用于存储/传送信令信息的方法。
当用户放大或用户改变视口时,整个点云对象/数据的一部分可以被渲染或显示在改变的视口上。在这种情况下,PCC解码器/播放器解码或处理与在用户视口上渲染或显示的点云数据的一部分相关联的视频或阿特拉斯数据并且跳过解码或处理与未渲染或显示的部分/区域的点云数据相关联的视频或阿特拉斯数据可以在效率方面更好。为此,需要支持对点云数据的部分访问。
为了在接收装置的PCC解码器/播放器呈现/显示点云数据时实现对渲染/显示的点云数据的空间访问或部分访问,发送装置可以通过V-PCC比特流发送关于点云的3D区域信息(其可以是静态的或随时间变化),在载送V-PCC比特流的文件的样本条目和/或样本中发信号通知关于点云的3D区域信息,或者以元数据的形式发送关于点云的3D区域信息。在本公开中,以V-PCC比特流或文件发信号通知或以元数据的形式发送的信息被称作信令信息。
根据实施方式,信令信息可以存储在样本、样本条目、样本组或轨道中的轨道组或文件中的单独元数据轨道中。具体地,信令信息的一部分可以以盒或全盒的形式存储在样本条目中。稍后将描述与3D空间区域相关的信令信息和用于存储/传送信令信息的方法的细节。
根据实施方式,信令信息可以由发送装置的元数据生成器(例如,图18的元数据编码器18005)生成,并且然后在轨道中的样本、样本条目、样本组或文件的轨道组或者由文件/片段封装器在单独的元数据轨道中发信号通知,或者可以由文件/片段封装器生成并且通过文件/片段封装器在轨道中的样本、样本条目、样本组或轨道组中或在单独的元数据轨道中被发信号通知。在本公开中,信令信息可以包括与点云数据相关的元数据(例如,设定值等)。取决于应用,可以在系统级别(诸如文件格式、HTTP动态自适应流传输(DASH)或MPEG媒体传输(MMT))或有线接口级别(诸如高清晰度多媒体接口(HDMI)、显示端口、视频电子标准协会(VESA)或CTA)定义信令信息。
图25示出根据本公开的其它实施方式的V-PCC比特流结构的示例。在实施方式中,图25的V-PCC比特流由图1、图4、图18、图20或图21的基于V-PCC的点云视频编码器生成和输出。
根据实施方式的包含编码的点云序列(CPCS)的V-PCC比特流可以由样本流V-PCC单元或V-PCC单元组成。样本流V-PCC单元或V-PCC单元载送V-PCC参数集(VPS)数据、阿特拉斯比特流、2D视频编码占用图比特流、2D视频编码几何比特流和零个或更多个2D视频编码属性比特流。
在图25中,V-PCC比特流可以包括一个样本流V-PCC头40010和一个或更多个样本流V-PCC单元40020。为简单起见,一个或更多个样本流V-PCC单元40020可以被称作样本流V-PCC有效载荷。也就是说,样本流V-PCC有效载荷可以被称为样本流V-PCC单元集合。将在图27中描述样本流V-PCC头40010的详细描述。
每个样本流V-PCC单元40021可以包括V-PCC单元大小信息40030和V-PCC单元40040。V-PCC单元大小信息40030指示V-PCC单元40040的大小。为简单起见,V-PCC单元大小信息40030可以称作样本流V-PCC单元头,并且V-PCC单元40040可以称作样本流V-PCC单元有效载荷。
每个V-PCC单元40040可以包括V-PCC单元头40041和V-PCC单元有效载荷40042。
在本公开中,V-PCC单元有效载荷40042中包含的数据由V-PCC单元头40041区分。为此,V-PCC单元头40041包含指示V-PCC单元的类型的类型信息。根据V-PCC单元头40041中的类型信息,每个V-PCC单元有效载荷40042可以含有几何视频数据(即,2D视频编码几何比特流)、属性视频数据(即,2D视频编码属性比特流)、占用视频数据(即,2D视频编码占用图比特流)、阿特拉斯数据或V-PCC参数集(VPS)中的至少一者。
根据实施方式的VPS还称作序列参数集(SPS)。这两个术语可以互换使用。
根据实施方式,阿特拉斯数据是包括阿特拉斯序列参数集(ASPS)、阿特拉斯帧参数集(AFPS)、阿特拉斯适配参数集(AAPS)、阿特拉斯拼块组信息(或称为阿特拉斯拼块信息)和SEI消息的信令信息,并且被称为阿特拉斯比特流或补片数据组。另外,ASPS、AFPS和AAPS也被称为阿特拉斯参数集。
图26示出根据实施方式的由V-PCC比特流中的样本流V-PCC单元载送的数据的示例。
在图26的示例中,V-PCC比特流包含载送V-PCC参数集(VPS)的样本流V-PCC单元、载送阿特拉斯数据(AD)的样本流V-PCC单元、载送占用视频数据(OVD)的样本流V-PCC单元,载送几何视频数据(GVD)的样本流V-PCC单元,以及载送属性视频数据(AVD)的样本流V-PCC单元。
根据实施方式,每个样本流V-PCC单元包含VPS、AD、OVD、GVD和AVD中的一种类型的V-PCC单元。
作为在下面描述的本公开的语法中使用的术语的字段可以具有与参数或元素(或语法元素)相同的含义。
图27示出根据实施方式的包含在V-PCC比特流中的样本流V-PCC头40010的语法结构的示例。
根据实施方式的sample_stream_v-pcc_header()可以包括ssvh_unit_size_precision_bytes_minus1字段和ssvh_reserved_zero_5bits字段。
ssvh_unit_size_precision_bytes_minus1字段的值加1可以指定所有样本流V-PCC单元中的ssvu_vpcc_unit_size元素的精度(以字节为单位)。该字段的值可以在0到7的范围内。
ssvh_reserved_zero_5bits字段是预留字段以供将来使用。
图28示出根据实施方式的样本流V-PCC单元(sample_stream_vpcc_unit())的语法结构的示例。
每个样本流V-PCC单元的内容与与包含在样本流V-PCC单元中的V-PCC单元相同的访问单元相关联。
根据实施方式的sample_stream_vpcc_unit()可以包括ssvu_vpcc_unit_size字段和vpcc_unit(ssvu_vpcc_unit_size)。
ssvu_vpcc_unit_size字段对应于图25的V-PCC单元大小信息40030,并指定后续vpcc_unit的大小(以字节为单位)。用于表示ssvu_vpcc_unit_size字段的比特数等于(ssvh_unit_size_precision_bytes_minus1+1)*8。
vpcc_unit(ssvu_vpcc_unit_size)具有对应于ssvu_vpcc_unit_size字段的值的长度,并且载送VPS、AD、OVD、GVD和AVD之一。
图29示出根据实施方式的V-PCC单元的语法结构的示例。V-PCC单元由V-PCC单元头(vpcc_unit_header())40041和V-PCC单元有效载荷(vpcc_unit_payload())40042组成。根据实施方式的V-PCC单元可以包含更多数据。在这种情况下,它还可以包括trailing_zero_8bits字段。根据实施方式的trailing_zero_8bits字段是对应于0x00的字节。
图30示出根据实施方式的V-PCC单元头40041的语法结构的示例。在实施方式中,图30的vpcc_unit_header()包括vuh_unit_type字段。vuh_unit_type字段指示对应的V-PCC单元的类型。根据实施方式的vuh_unit_type字段也被称为vpcc_unit_type字段。
图31示出根据实施方式的指派给vuh_unit_type字段的V-PCC单元类型的示例。
参照图31,根据实施方式,设置为0的vuh_unit_type字段指示包含在V-PCC单元的V-PCC单元有效载荷中的数据是V-PCC参数集(VPCC_VPS)。设置为1的vuh_unit_type字段指示数据为阿特拉斯数据(VPCC_AD)。设置为2的vuh_unit_type字段指示数据是占用视频数据(VPCC_OVD)。设置为3的vuh_unit_type字段指示数据是几何视频数据(VPCC_GVD)。设置为4的vuh_unit_type字段指示数据是属性视频数据(VPCC_AVD)。
本领域技术人员可以容易地改变指派给vuh_unit_type字段的值的含义、顺序、删除、添加等,因此本公开将不限于上述实施方式。
当vuh_unit_type字段指示VPCC_AVD、VPCC_GVD、VPCC_OVD或VPCC_AD时,根据实施方式的V-PCC单元头还可以包括vuh_vpcc_parameter_set_id字段和vuh_atlas_id字段。
vuh_vpcc_parameter_set_id字段指定活动V-PCC VPS的vps_vpcc_parameter_set_id的值。
vuh_atlas_id字段指定对应于当前V-PCC单元的阿特拉斯的索引。
当vuh_unit_type字段指示VPCC_AVD时,根据实施方式的V-PCC单元头还可以包括vuh_attribute_index字段、vuh_attribute_partition_index字段、vuh_map_index字段和vuh_auxiliary_video_flag字段。
vuh_attribute_index字段指示属性视频数据单元中载送的属性数据的索引。
vuh_attribute_partition_index字段指示属性视频数据单元中载送的属性维度组的索引。
当存在时,vuh_map_index字段可以指示当前几何或属性流的图索引。
当vuh_auxiliary_video_flag字段设置为1时,可以指示相关联的属性视频数据单元仅包含RAW和/或EOM(增强的占用模式)编码点。作为另一示例,当vuh_auxiliary_video_flag字段设置为0时,可以指示相关联的属性视频数据单元可以包含RAW和/或EOM编码点。当vuh_auxiliary_video_flag字段不存在时,其值可被推断为等于0。根据实施方式,RAW和/或EOM编码点也被称为脉冲编码调制(PCM)编码点。
当vuh_unit_type字段指示VPCC_GVD时,根据实施方式的V-PCC单元头还可以包括vuh_map_index字段、vuh_auxiliary_video_flag字段和vuh_reserved_zero_12bits字段。
当存在时,vuh_map_index字段指示当前几何流的索引。
当vuh_auxiliary_video_flag字段设置为1时,可以指示相关的几何视频数据单元仅包含RAW和/或EOM编码点。作为另一示例,当vuh_auxiliary_video_flag字段设置为0时,可以指示相关联的几何视频数据单元可以包含RAW和/或EOM编码点。当vuh_auxiliary_video_flag字段不存在时,其值可被推断为等于0。根据实施方式,RAW和/或EOM编码点也被称为PCM编码点。
vuh_reserved_zero_12bits字段是预留字段以供将来使用。
如果vuh_unit_type字段指示VPCC_OVD或VPCC_AD,则根据实施方式的V-PCC单元头还可以包括vuh_reserved_zero_17bits字段。否则,V-PCC单元头还可以包括vuh_reserved_zero_27bits字段。
vuh_reserved_zero_17bits字段和vuh_reserved_zero_27bits字段是预留字段以供将来使用。
图32示出根据实施方式的V-PCC单元有效载荷(vpcc_unit_payload())的语法结构的示例。
图32的V-PCC单元有效载荷可以根据V-PCC单元头中的vuh_unit_type字段的值而包含V-PCC参数集(vpcc_parameter_set())、阿特拉斯子比特流(atlas_sub_bitstream())和视频子比特流(video_sub_bitstream())之一。
例如,当vuh_unit_type字段指示VPCC_VPS时,V-PCC单元有效载荷包含vpcc_parameter_set(),该vpcc_parameter_set()包含关于比特流的整体编码信息。当vuh_unit_type字段指示VPCC_AD时,V-PCC单元有效载荷包含载送阿特拉斯数据的atlas_sub_bitstream()。此外,根据实施方式,当vuh_unit_type字段指示VPCC_OVD时,V-PCC单元有效载荷包含载送占用视频数据的占用视频子比特流(video_sub_bitstream())。当vuh_unit_type字段指示VPCC_GVD时,V-PCC单元有效载荷包含载送几何视频数据的几何视频子比特流(video_sub_bitstream())。当vuh_unit_type字段指示VPCC_AVD时,V-PCC单元有效载荷包含载送属性视频数据的属性视频子比特流(video_sub_bitstream())。
根据实施方式,阿特拉斯子比特流可以被称为阿特拉斯子流,并且占用视频子比特流可以被称为占用视频子流。几何视频子比特流可以称为几何视频子流,并且属性视频子比特流可以称为属性视频子流。根据实施方式的V-PCC单元有效载荷可以符合高效视频编码(HEVC)网络抽象层(NAL)单元的格式。
图33示出根据实施方式的包括在V-PCC单元有效载荷中的V-PCC参数集的语法结构的示例。
在图33中,profile_tier_level()包含V-PCC编解码器简档相关信息并指定对比特流的约束。它表示对解码比特流所需的能力的限制。简档、层级和级别可以用于指示单独的解码器实现之间的互操作性点。
vps_vpcc_parameter_set_id字段提供V-PCC VPS的标识符以供其它语法元素引用。
vps_atlas_count_minus1字段的值加1指示当前比特流中支持的阿特拉斯的总数。
迭代语句还包括在V-PCC参数集中,该迭代语句重复与vps_atlas_count_minus1字段的值一样多的次数(即,阿特拉斯的总数)。在实施方式中,在迭代语句中,j可以初始化为0,每当执行迭代语句时递增1,直到j达到vps_atlas_count_minus1字段+1的值为止。
在实施方式中,迭代语句包括以下字段。除了以下字段(未示出)之外,迭代语句还可以包括用于标识具有索引j的阿特拉斯的阿特拉斯标识符。在一个实施方式中,索引j可以是用于标识第j阿特拉斯的标识符。
vps_frame_width[j]字段指示具有索引j的阿特拉斯的整数亮度样本方面的V-PCC帧宽度。该帧宽度是与索引为j的阿特拉斯的所有V-PCC分量相关联的标称宽度。
vps_frame_height[j]字段指示具有索引j的阿特拉斯的整数亮度样本方面的V-PCC帧高度。该帧高度是与索引为j的阿特拉斯的所有V-PCC分量相关联的标称高度。
vps_map_count_minus1[j]字段加1指示用于对索引为j的阿特拉斯的几何和属性数据进行编码的图的数量。
当vps_map_count_minus1[j]字段大于0时,参数集中还可以包含以下参数。
根据vps_map_count_minus1[j]field的值,参数集中还可以包括以下参数。
vps_multiple_map_streams_present_flag[j]字段等于0指示索引为j的阿特拉斯的所有几何或属性图分别放置在单个几何或属性视频流中。vps_multiple_map_streams_present_flag[j]字段等于1指示具有索引j的阿特拉斯的所有几何或属性图放置在单独的视频流中。
如果vps_multiple_map_streams_present_flag[j]字段等于1,则vps_map_absolute_coding_enabled_flag[j][i]字段还可以被包括在参数集中。否则,vps_map_absolute_coding_enabled_flag[j][i]字段可以为1。
vps_map_absolute_coding_enabled_flag[j][i]字段等于1指示索引为j的阿特拉斯的索引为i的几何图在没有任何形式的图预测的情况下被编码。vps_map_absolute_coding_enabled_flag[j][i]字段等于0指示索引为j的阿特拉斯的索引为i的几何图首先是在编码前从另一更早的编码图中先预测的。
vps_map_absolute_coding_enabled_flag[j][0]字段等于1指示索引为0的几何图在没有图预测的情况下进行编码。
如果vps_map_absolute_coding_enabled_flag[j][i]字段为0且i大于0,则vps_map_predictor_index_diff[j][i]字段还可以被包括在参数集中。否则,vps_map_predictor_index_diff[j][i]字段可以为0。
当vps_map_absolute_coding_enabled_flag[j][i]字段等于0时,vps_map_predictor_index_diff[j][i]字段用于计算索引为j的阿特拉斯的索引为i的几何图的预测符。
vps_auxiliary_video_present_flag[j]字段等于1指示索引为j的阿特拉斯的辅助信息,即RAW或EOM补片数据,可以存储在单独的视频流中,称为辅助视频流。vps_auxiliary_video_present_flag[j]字段等于0指示索引为j的阿特拉斯的辅助信息不存储在单独的视频流中。
occupancy_information()包括占用视频相关信息。
geometry_information()包括相关的几何视频信息。
attribute_information()包括属性视频相关信息。
也就是说,V-PCC参数集可以包括每个阿特拉斯的occupancy_information()、geometry_information()和attribute_information()。
V-PCC参数集还可以包括vps_extension_present_flag字段。
vps_extension_present_flag字段等于1指定vps_extension_length字段存在于vpcc_parameter_set中。vps_extension_present_flag字段等于0指定vps_extension_length字段不存在。
vps_extension_length_minus1字段加1指定遵循此语法元素的vps_extension_data_byte元素的数量。
根据vps_extension_length_minus1字段,扩展数据(vps_extension_data_byte)还可以包括在参数集中..
vps_extension_data_byte字段可以具有任何值。
作为点云数据的目标的阿特拉斯帧(或点云对象或补片帧)可以被划分(或分割)成一个或更多个拼块或一个或更多个阿特拉斯拼块。根据实施方式,拼块可以表示3D空间中的特定区域或2D平面中的特定区域。此外,拼块可以是边界框中的矩形长方体、子边界框或阿特拉斯帧的一部分。根据其它实施方式,阿特拉斯帧可以被划分成一个或更多个矩形分区,其可以被称为拼块分区或拼块。另选地,可以将两个或更多个拼块分区分组并称为拼块。在本公开中,将阿特拉斯帧(或点云对象)划分成一个或更多个拼块可以由图1的点云视频编码器、图18的补片生成器、图20的点云预处理器或图21的补片生成器执行,或者可以由单独的组件/模块执行。
图34示出通过将阿特拉斯帧(或补片帧)43010划分成一个或更多个拼块行和一个或更多个拼块列来将阿特拉斯帧(或补片帧)43010划分为多个拼块的示例。拼块43030是阿特拉斯帧的矩形区域,并且拼块组43050可以包含阿特拉斯帧中的多个拼块。在本公开中,拼块组43050包含阿特拉斯帧的多个拼块,它们共同形成阿特拉斯帧的矩形(四边形)区域。在本公开中,拼块和拼块组可以不彼此区分开,并且一个拼块组可以对应于一个拼块。例如,图34示出其中阿特拉斯帧(或补片帧)被划分为24个拼块(即,6个拼块列和4个拼块行)和9个矩形(四边形)拼块组的示例。
根据其它实施方式,在图34中,拼块组43050可以被称为拼块,并且拼块43030可以被称为拼块分区。术语信令信息也可以根据上述互补关系进行变化和引用。
图35是示出如上所述的阿特拉斯子流的结构的示例的图。在实施方式中,图35的阿特拉斯子流符合HEVC NAL单元的格式。
根据实施方式的阿特拉斯子流可以包括一个样本流NAL头和一个或更多个样本流NAL单元。在图35中,一个或更多个样本流NAL单元可以称作样本流NAL有效载荷。也就是说,样本流NAL有效载荷可以称作样本流NAL单元的集合。
根据实施方式的一个或更多个样本流NAL单元可以由包含阿特拉斯序列参数集(ASPS)的样本流NAL单元、包含阿特拉斯帧参数集(AFPS)的样本流NAL单元、以及包含关于一个或更多个阿特拉斯拼块组(或阿特拉斯拼块)的信息的一个或更多个样本流NAL单元和/或包含一个或更多个SEI消息的一个或更多个样本流NAL单元组成。
根据实施方式的一个或更多个SEI消息可以包括前缀SEI消息和后缀SEI消息。
图36示出根据实施方式的包含在阿特拉斯子流中的样本流NAL头(sample_stream_nal_header())的语法结构的示例。
根据实施方式的sample_stream_nal_header()可以包括ssnh_unit_size_precision_bytes_minus1字段和ssnh_reserved_zero_5bits字段。
ssnh_unit_size_precision_bytes_minus1字段的值加1可以指定所有样本流NAL单元中ssnu_nal_unit_size元素的精度(以字节为单位)。该字段的值可以在0到7的范围内。
ssnh_reserved_zero_5bits字段是预留字段以供将来使用。
图37示出根据实施方式的样本流NAL单元(sample_stream_nal_unit())的语法结构的示例。
根据实施方式的sample_stream_nal_unit()可以包括ssnu_nal_unit_size字段和nal_unit(ssnu_nal_unit_size)。
ssnu_nal_unit_size字段指定后续NAL_unit的大小(以字节为单位)。用于表示ssnu_nal_unit_size字段的比特数等于(ssnh_unit_size_precision_bytes_minus1+1)*8。
nal_unit(ssnu_nal_unit_size)具有与ssnu_nal_unit_size字段的值相对应的长度,并载送阿特拉斯序列参数集(ASPS)、阿特拉斯帧参数集(AFPS)、阿特拉斯适配参数集(AAPS)、阿特拉斯拼块组信息(或阿特拉斯拼块信息)和SEI消息之一。也就是说,一个样本流NAL单元可以包含ASPS、AFPS、AAPS、阿特拉斯拼块组信息(或阿特拉斯拼块信息)或SEI消息中的一者。根据实施方式,ASPS、AFPS、AAPS、阿特拉斯拼块组信息(或阿特拉斯拼块信息)和SEI消息被称为阿特拉斯数据(或与阿特拉斯相关的元数据)。
根据实施方式的SEI消息可以辅助与解码、重构、显示或其它目的相关的处理。
图38示出图37的nal_unit(NumBytesInNalUnit)的语法结构的示例。
在图38中,NumBytesInNalUnit指示NAL单元的大小(以字节为单位)。NumBytesInNalUnit指示图37的ssnu_nal_unit_size字段的值。
根据实施方式,NAL单元可以包括NAL单元头(nal_unit_header())和NumBytesInRbsp字段。NumBytesInRbsp字段初始化为0并指示属于NAL单元的有效载荷的字节。
NAL单元包括重复次数与NumBytesInNalUnit的值一样多的迭代语句。在实施方式中,迭代语句包括rbsp_byte[NumBytesInRbsp++]。根据实施方式,在迭代语句中,i被初始化为2并且每次执行迭代语句就递增1。重复迭代语句,直到i达到NumBytesInNalUnit的值。
rbsp_byte[NumBytesInRbsp++]是载送阿特拉斯数据的原始字节序列有效载荷(RBSP)的第i字节。RBSP被指定为字节的连续序列。也就是说,rbsp_byte[NumBytesInRbsp++]载送阿特拉斯序列参数集(ASPS)、阿特拉斯帧参数集(AFPS)、阿特拉斯适配参数集(AAPS)、阿特拉斯拼块组信息(阿特拉斯拼块信息)和SEI消息之一。
图39示出图38的NAL单元头的语法结构的示例。NAL单元头可以包括nal_forbidden_zero_bit字段、nal_unit_type字段、nal_layer_id字段和nal_temporal_id_plus1字段。
nal_forbidden_zero_bit用于NAL单元中的错误检测,并且必须为0。
nal_unit_type指定包含在NAL单元中的RBSP数据结构的类型。将参照图40描述根据nal_unit_type字段的值的RBSP数据结构的示例。
nal_layer_id指定阿特拉斯编码层(ACL)NAL单元所属的层的标识符或非ACL NAL单元应用于的层的标识符。
nal_temporal_id_plus1减1指定NAL单元的时间标识符。
图40示出分配给nal_unit_type字段的RBSP数据结构的类型的示例。也就是说,该图示出样本流NAL单元中包括的NAL单元的NAL单元头中的nal_unit_type字段的类型。
在图40中,NAL_TRAIL指示非TSA、非STSA结尾阿特拉斯帧的编码拼块组被包括在NAL单元中。NAL单元的RBSP语法结构为atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp()。NAL单元的类型类是ACL。根据实施方式,拼块组可以称为拼块。
NAL TSA指示TSA阿特拉斯帧的编码拼块组被包括在NAL单元中。NAL单元的RBSP语法结构为atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp()。NAL单元的类型类是ACL。
NAL_STSA指示STSA阿特拉斯帧的编码拼块组被包括在NAL单元中。NAL单元的RBSP语法结构为atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp()。NAL单元的类型类是ACL。
NAL_RADL指示RADL阿特拉斯帧的编码拼块组被包括在NAL单元中。NAL单元的RBSP语法结构为atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp()。NAL单元的类型类是ACL。
NAL_RASL指示RASL阿特拉斯帧的编码拼块组被包括在NAL单元中。NAL单元的RBSP语法结构是atlas_tile_group_layer_rbsp()或aatlas_tile_layer_rbsp()。NAL单元的类型类是ACL。
NAL_SKIP指示跳过的阿特拉斯帧的编码拼块组被包括在NAL单元中。NAL单元的RBSP语法结构为atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp()。NAL单元的类型类是ACL。
NAL_RSV_ACL_6至NAL_RSV_ACL_9指示保留的非IRAP ACL NAL单元类型被包括在NAL单元中。NAL单元的类型类是ACL。
NAL_BLA_W_LP、NAL_BLA_W_RADL和NAL_BLA_N_LP指示BLA阿特拉斯帧的编码拼块组被包括在NAL单元中。NAL单元的RBSP语法结构为atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp()。NAL单元的类型类是ACL。
NAL_GBLA_W_LP、NAL_GBLA_W_RADL和NAL_GBLA_N_LP指示GBLA阿特拉斯帧的编码拼块组可以被包括在NAL单元中。NAL单元的RBSP语法结构为atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp()。NAL单元的类型类是ACL。
NAL_IDR_W_RADL和NAL_IDR_N_LP指示IDR阿特拉斯帧的编码拼块组被包括在NAL单元中。NAL单元的RBSP语法结构为atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp()。NAL单元的类型类是ACL。
NAL_GIDR_W_RADL和NAL_GIDR_N_LP指示GIDR阿特拉斯帧的编码拼块组被包括在NAL单元中。NAL单元的RBSP语法结构为atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp()。NAL单元的类型类是ACL。
NAL_CRA指示CRA阿特拉斯帧的编码拼块组被包括在NAL单元中。NAL单元的RBSP语法结构为atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp()。NAL单元的类型类是ACL。
NAL_GCRA指示GCRA阿特拉斯帧的编码拼块组被包括在NAL单元中。NAL单元的RBSP语法结构为atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp()。NAL单元的类型类是ACL。
NAL_IRAP_ACL_22和NAL_IRAP_ACL_23指示保留的IRAP ACL NAL单元类型被包括在NAL单元中。NAL单元的类型类是ACL。
NAL_RSV_ACL_24至NAL_RSV_ACL_31指示保留的非IRAP ACL NAL单元类型被包括在NAL单元中。NAL单元的类型类是ACL。
NAL_ASPS指示NAL单元中包括ASPS。NAL单元的RBSP语法结构是atlas_sequence_parameter_set_rbsp()。NAL单元的类型类是非ACL。
NAL_AFPS指示NAL单元中包括AFPS。NAL单元的RBSP语法结构为atlas_frame_parameter_set_rbsp()。NAL单元的类型类是非ACL。
NAL_AUD指示在NAL单元中包括访问单元分隔符。NAL单元的RBSP语法结构是access_unit_delimiter_rbsp()。NAL单元的类型类是非ACL。
NAL_VPCC_AUD指示V-PCC访问单元分隔符被包括在NAL单元中。NAL单元的RBSP语法结构是access_unit_delimiter_rbsp()。NAL单元的类型类是非ACL。
NAL_EOS指示NAL单元类型可以是序列的结尾。NAL单元的RBSP语法结构是end_of_seq_rbsp()。NAL单元的类型类是非ACL。
NAL_EOB指示NAL单元类型可以是比特流的结尾。NAL单元的RBSP语法结构是end_of_atlas_sub_bitstream_rbsp()。NAL单元的类型类是非ACL。
NAL_FD填充指示fill_data_rbsp()被包括在NAL单元中。NAL单元的类型类是非ACL。
NAL_PREFIX_NSEI和NAL_SUFFIX_NSEI指示NAL单元中包括非必要补充增强信息。NAL单元的RBSP语法结构是sei_rbsp()。NAL单元的类型类是非ACL。
NAL_PREFIX_ESEI和NAL_SUFFIX_ESEI指示必要补充增强信息被包括在NAL单元中。NAL单元的RBSP语法结构是sei_rbsp()。NAL单元的类型类是非ACL。
NAL_AAPS指示NAL单元中包括阿特拉斯适配参数集。NAL单元的RBSP语法结构是atlas_adaptation_parameter_set_rbsp()。类型类NAL单元是非ACL。
NAL_RSV_NACL_44至NAL_RSV_NACL_47指示NAL单元类型可以是保留的非ACL NAL单元类型。NAL单元的类型类是非ACL。
NAL_UNSPEC_48至NAL_UNSPEC_63指示NAL单元类型可以是未指定的非ACL NAL单元类型。NAL单元的类型类是非ACL。
图41示出根据实施方式的阿特拉斯序列参数集的语法结构。
图41示出当NAL单元类型是阿特拉斯序列参数时包括在NAL单元中的RBSP数据结构的语法。
每个样本流NAL单元可以包含阿特拉斯参数集(例如,ASPS、AAPS或AFPS)、一个或更多个阿特拉斯拼块组(或阿特拉斯拼块)和SEI之一。
ASPS可以包含应用于如由ASPS中找到的语法元素(被称为每个拼块组(或拼块)头中的语法元素)的内容所确定的零个或更多个完整的编码阿特拉斯序列(CAS)的语法元素。根据实施方式,语法元素可以具有与字段或参数相同的含义。
在图41中,asps_atlas_sequence_parameter_set_id字段可以提供用于标识阿特拉斯序列参数集的标识符,以供其它语法元素引用。
asps_frame_width字段指示整数个样本方面的阿特拉斯帧宽度,其中样本对应于视频分量的亮度样本。
asps_frame_height字段指示整数个样本方面的阿特拉斯帧高度,其中样本对应于视频分量的亮度样本。
asps_log2_patch_packing_block_size字段指定变量PatchPackingBlockSize的值,该变量用于补片在阿特拉斯内的水平和垂直放置。
asps_log2_max_atlas_frame_order_cnt_lsb_minus4字段指定用于阿特拉斯帧顺序计数的解码过程中的变量MaxAtlasFrmOrderCntLsb的值。
asps_max_dec_atlas_frame_buffering_minus1字段加1指定CAS的解码阿特拉斯帧缓冲器所需的最大大小,以阿特拉斯帧存储缓冲器为单位。
asps_long_term_ref_atlas_frames_flag字段等于0指定长期参考阿特拉斯帧不用于CAS中任何编码阿特拉斯帧的帧间预测。asps_long_term_ref_atlas_frames_flag字段等于1指定长期参考阿特拉斯帧可以用于CAS中一个或更多个编码阿特拉斯帧的帧间预测。
asps_num_ref_atlas_frame_lists_in_asps字段指定包括在阿特拉斯序列参数集中的ref_list_struct(rlsIdx)语法结构的数量。
ASAP包括重复次数与asps_num_ref_atlas_frame_lists_in_asps字段的值一样多的迭代语句。在实施方式中,迭代语句包括ref_list_struct(i)。根据实施方式,在迭代语句中,i被初始化为0并且每次执行迭代语句就递增1。重复迭代语句,直到i达到asps_num_ref_atlas_frame_lists_in_asps字段的值。
将参照图50详细描述ref_list_struct(i)。
当asps_num_ref_atlas_frame_lists_in_asps字段大于0时,atgh_ref_atlas_frame_list_sps_flag字段可以被包括在阿特拉斯拼块组(拼块)头中。当asps_num_ref_atlas_frame_lists_in_asps字段大于1时,atgh_ref_atlas_frame_list_idx字段可以被包括在阿特拉斯拼块组(拼块)头中。
asps_use_eight_orientations_flag字段等于0指定索引为i的帧中索引为j的补片的补片取向索引pdu_orientation_index[i][j]字段在0到1(内包含)的范围内。asps_use_eight_orientations_flag字段等于1指定在具有索引i的帧中具有索引j的补片的补片取向索引pdu_orientation_index[i][j]字段在0到7(内包含)的范围内。
asps_extended_projection_enabled_flag字段等于0指定不针对当前阿特拉斯拼块组发信号通知补片投影信息。asps_extended_projection_enabled_flag字段等于1指定针对当前阿特拉斯拼块组发信号通知补片投影信息。
asps_normal_axis_limits_quantization_enabled_flag字段等于1指定量化参数应被发信号通知并用于量化补片数据单元、合并补片数据单元或补片间数据单元的法线轴相关元素。如果asps_normal_axis_limits_quantization_enabled_flag字段等于0,则不对补片数据单元、合并补片数据单元或补片间数据单元的任何法线轴相关元素应用量化。
当asps_normal_axis_limits_quantization_enabled_flag字段为1时,atgh_pos_min_z_quantizer字段可以被包括在阿特拉斯拼块组(或拼块)头中。
asps_normal_axis_max_delta_value_enabled_flag字段等于1指定在具有索引j的帧中索引为i的补片的几何信息中可以存在的法线轴的最大标称移位值将在每个补片数据单元、合并补片数据单元、或补片间数据单元的比特流中指示。如果asps_normal_axis_max_delta_value_enabled_flag字段等于0,则在具有索引j的帧中具有索引i的补片的几何信息中可以存在的法线轴的最大标称移位值不应在每个补片数据单元、合并补片数据单元或补片间数据单元的比特流中指示。
当asps_normal_axis_max_delta_value_enabled_flag字段为1时,atgh_pos_delta_max_z_quantizer字段可以被包括在阿特拉斯拼块组(或拼块)头中。
asps_remove_duplicate_point_enabled_flag字段等于1指示不为当前阿特拉斯构造重复点,其中重复点是与来自较低索引图中的另一点具有相同2D和3D几何坐标的点。asps_remove_duplicate_point_enabled_flag字段等于0指示所有点被重构。
asps_max_dec_atlas_frame_buffering_minus1字段加1指定CAS的解码阿特拉斯帧缓冲器所需的最大大小,以阿特拉斯帧存储缓冲器为单位。
asps_pixel_deinterleaving_flag字段等于1指示当前阿特拉斯的解码的几何和属性视频包含来自两个图的空间交错像素。asps_pixel_deinterleaving_flag字段等于0指示与当前阿特拉斯对应的解码的几何和属性视频包含来自仅单个图的像素。
asps_patch_precedence_order_flag字段等于1指示当前阿特拉斯的补片优先级与解码顺序相同。asps_patch_precedence_order_flag字段等于0指示当前阿特拉斯的补片优先级与解码顺序相反。
asps_patch_size_quantizer_present_flag字段等于1指示补片大小量化参数存在于阿特拉斯拼块组头中。asps_patch_size_quantizer_present_flag字段等于0指示补片大小量化参数不存在。
当asps_patch_size_quantizer_present_flag字段等于1时,atgh_patch_size_x_info_quantizer字段和atgh_patch_size_y_info_quantizer字段可以包括在阿特拉斯拼块组(或拼块)头中。
asps_eom_patch_enabled_flag字段等于1指示当前阿特拉斯的解码占用图视频包含与两个深度图之间的中间深度位置是否被占用有关的信息。asps_eom_patch_enabled_flag字段等于0指示解码的占用图视频不包含与两个深度图之间的中间深度位置是否被占用有关的信息。
asps_raw_patch_enabled_flag字段等于1指示当前阿特拉斯的解码的几何和属性视频包含与RAW编码点相关的信息。asps_raw_patch_enabled_flag字段等于0指示解码的几何和属性视频不包含与RAW编码点相关的信息。
当asps_eom_patch_enabled_flag字段或asps_raw_patch_enabled_flag字段等于1时,asps_auxiliary_video_enabled_flag字段可以被包括在阿特拉斯序列参数集语法中。
asps_auxiliary_video_enabled_flag字段等于1指示与RAW和EOM补片类型相关的信息可以放置在辅助视频子比特流中。asps_auxiliary_video_enabled_flag字段等于0指示与RAW和EOM补片类型相关的信息只能放置在主视频子比特流中。
asps_point_local_reconstruction_enabled_flag字段等于1指示点本地重构模式信息可以存在于当前阿特拉斯的比特流中。asps_point_local_reconstruction_enabled_flag字段等于0指示当前阿特拉斯的比特流中不存在与点本地重构模式相关的信息。
asps_map_count_minus1字段加1指示可以用于对当前阿特拉斯的几何和属性数据进行编码的图的数量。
当asps_pixel_deinterleaving_enabled_flag字段等于1时,对于asps_map_count_minus1字段的每个值,asps_pixel_deinterleaving_map_flag[j]字段可以包括在ASPS中。
asps_pixel_deinterleaving_map_flag[i]字段等于1指示与当前阿特拉斯中索引为i的图相对应的解码的几何和属性视频包含对应于两个图的空间交错像素。asps_pixel_deinterleaving_map_flag[i]字段等于0指示当前阿特拉斯中索引为i的图对应的解码的几何和属性视频包含对应于单个图的像素。
当asps_eom_patch_enabled_flag字段和asps_map_count_minus1字段等于0时,ASPS还可以包括asps_eom_fix_bit_count_minus1字段。
asps_eom_fix_bit_count_minus1字段加1指示EOM码字的比特大小。
当asps_point_local_reconstruction_enabled_flag字段等于1时,asps_point_local_reconstruction_information(asps_map_count_minus1)可以被包括在ASPS中并被发送。
当asps_pixel_deinterleaving_enabled_flag字段或asps_point_local_reconstruction_enabled_flag字段等于1时,ASPS还可以包括asps_surface_thickness_minus1字段。
asps_surface_thickness_minus1字段加1指定当asps_pixel_deinterleaving_enabled_flag字段或asps_point_local_reconstruction_enabled_flag字段等于1时显式编码深度值和插值深度值之间的最大绝对差。
asps_vui_parameters_present_flag字段等于1指示存在vui_parameters()语法结构。asps_vui_parameters_present_flag字段等于0指示不存在vui_parameters()语法结构。
asps_extension_flag字段等于0指示在ASPS RBSP语法结构中不存在asps_extension_data_flag字段。
asps_extension_data_flag字段指示用于扩展的数据被包括在ASPS RBSP语法结构中。
rbsp_trailing_bits字段用于在添加1(其是停止比特)后用0填充剩余比特以进行字节对齐,以指示RBSP数据的结束。
图42示出根据实施方式的阿特拉斯帧参数集。
图42示出当NAL单元类型(nal_unit_type)为如图40所示的NAL_AFPS时包含在NAL单元中的阿特拉斯帧参数集的语法结构。
在图42中,阿特拉斯帧参数集(AFPS)包含语法结构,其包含应用于所有的零个或更多个完整编码阿特拉斯帧的语法元素。
afps_atlas_frame_parameter_set_id字段可以提供用于标识阿特拉斯帧参数集的标识符,以供其它语法元素引用。也就是说,可以通过AFPS阿特拉斯帧参数集提供可以被其它语法元素引用的标识符。
afps_atlas_sequence_parameter_set_id字段指定活动阿特拉斯序列参数集的asps_atlas_sequence_parameter_set_id的值。
将参照图43描述atlas_frame_tile_information()。
afps_output_flag_present_flag字段等于1指示atgh_atlas_output_flag或ath_atlas_output_flag字段存在于相关联的拼块组(或拼块)头中。afps_output_flag_present_flag字段等于0指示atgh_atlas_output_flag字段或ath_atlas_output_flag字段不存在于相关联的拼块组(或拼块)头中。
afps_num_ref_idx_default_active_minus1字段加1指定atgh_num_ref_idx_active_override_flag字段等于0的拼块组的变量NumRefIdxActive的推断值。
afps_additional_lt_afoc_lsb_len字段指定在参考阿特拉斯帧的解码过程中使用的变量MaxLtAtlasFrmOrderCntLsb的值。
afps_3d_pos_x_bit_count_minus1字段加1指定在引用afps_atlas_frame_parameter_set_id字段的阿特拉斯拼块组中具有索引j的补片的pdu_3d_pos_x[j]字段的固定长度表示中的比特数。
afps_3d_pos_y_bit_count_minus1字段加1指定在引用afps_atlas_frame_parameter_set_id字段的阿特拉斯拼块组中具有索引j的补片的pdu_3d_pos_y[j]字段的固定长度表示中的比特数。
afps_lod_mode_enabled_flag字段等于1指示LOD参数可以存在于补片中。afps_lod_mode_enabled_flag字段等于0指示LOD参数不存在于补片中。
afps_override_eom_for_depth_flag字段等于1指示afps_eom_number_of_patch_bit_count_minus1字段和afps_eom_max_bit_count_minus1字段的值显式存在于比特流中。afps_override_eom_for_depth_flag字段等于0指示afps_eom_number_of_patch_bit_count_minus1字段和afps_eom_max_bit_count_minus1字段的值是隐式推导的。
afps_eom_number_of_patch_bit_count_minus1字段加1指定用于表示与此阿特拉斯帧参数集相关联的阿特拉斯帧中的EOM属性补片中关联的几何补片的数量的比特数。
afps_eom_max_bit_count_minus1字段加1指定用于表示与此阿特拉斯帧参数集相关联的阿特拉斯帧中的EOM属性补片相关联的每个几何补片的EOM点的数量的比特数。
afps_raw_3d_pos_bit_count_explicit_mode_flag字段等于1指示rpdu_3d_pos_x字段、rpdu_3d_pos_y字段和rpdu_3d_pos_z字段的固定长度表示中的比特数由引用afps_atlas_frame_parameter_set_id字段的阿特拉斯拼块组头中的atgh_raw_3d_pos_axis_bit_count_minus1字段显式编码。afps_raw_3d_pos_bit_count_explicit_mode_flag字段等于0指示atgh_raw_3d_pos_axis_bit_count_minus1字段的值是隐式推导的。
当afps_raw_3d_pos_bit_count_explicit_mode_flag字段等于1时,atgh_raw_3d_pos_axis_bit_count_minus1字段可以包括在阿特拉斯拼块组(或拼块)头中。
afps_fixed_camera_model_flag指示是否存在固定相机模型。
afps_extension_flag字段等于0指示AFPS RBSP语法结构中不存在afps_extension_data_flag字段。
afps_extension_data_flag字段可以包含扩展相关数据。
图43示出根据实施方式的atlas_frame_tile_information的语法结构。
图43示出图42中包含的atlas_frame_tile_information的语法。
afti_single_tile_in_atlas_frame_flag字段等于1指定在引用AFPS的每个阿特拉斯帧中只有一个块。afti_single_tile_in_atlas_frame_flag字段等于0指示在引用AFPS的每个阿特拉斯帧中存在不止一个拼块。
afti_uniform_tile_spacing_flag字段等于1指定拼块列和行边界均匀分布在阿特拉斯帧上,并分别使用语法元素afti_tile_cols_width_minus1字段和afti_tile_rows_height_minus1字段发信号通知。afti_uniform_tile_spacing_flag字段等于0指定拼块列和行边界可以或可以不均匀分布在阿特拉斯帧上,并使用afti_num_tile_columns_minus1字段和afti_num_tile_rows_minus1字段以及语法元素对afti_tile_column_width_minus1[i]和afti_tile_row_height_minus1[i]的列表发信号通知。
afti_tile_cols_width_minus1字段加1指定当afti_uniform_tile_spacing_flag字段等于1时,以64个样本为单位的不包括阿特拉斯帧的最右拼块列的拼块列的宽度。
afti_tile_rows_height_minus1字段加1指定当afti_uniform_tile_spacing_flag字段等于1时,以64个样本为单位的不包括阿特拉斯帧的底部拼块行的拼块行的高度。
afti_num_tile_columns_minus1字段加1指定当afti_uniform_tile_spacing_flag字段等于0时划分阿特拉斯帧的拼块列数。
afti_num_tile_rows_minus1字段加1指定当pti_uniform_tile_spacing_flag字段等于0时划分阿特拉斯帧的拼块行数。
afti_tile_column_width_minus1[i]字段加1指定第i拼块列的宽度,以64个样本为单位。
afti_tile_row_height_minus1[i]字段加1指定第i拼块行的高度,以64个样本为单位。
afti_single_tile_per_tile_group_flag字段等于1指定引用此AFPS的每个拼块组包括一个拼块(或拼块分区)。afti_single_tile_per_tile_group_flag字段等于0指定引用此AFPS的拼块组可以包括不止一个拼块(或拼块分区)。
当afti_single_tile_per_tile_group_flag字段等于0时,在阿特拉斯帧拼块信息中载送afti_num_tile_groups_in_atlas_frame_minus1字段。
afti_num_tile_groups_in_atlas_frame_minus1字段加1指定引用AFPS的每个阿特拉斯帧中的拼块组(或拼块)的数量。
针对afti_num_tile_groups_in_atlas_frame_minus1字段的每个值,afti_top_left_tile_idx[i]字段和afti_bottom_right_tile_idx_delta[i]字段还可以包括在AFPS中。
afti_top_left_tile_idx[i]字段指定位于第i拼块组的左上角的拼块的拼块索引。
afti_bottom_right_tile_idx_delta[i]字段指定位于第i拼块组的右下角的拼块的拼块索引与afti_top_left_tile_idx[i]字段之间的差异。
afti_signalled_tile_group_id_flag字段等于1指定发信号通知每个拼块组的拼块组ID或每个拼块的拼块ID。
当afti_signalled_tile_group_id_flag字段为1时,可以在阿特拉斯帧拼块信息中载送afti_signalled_tile_group_id_length_minus1字段和afti_tile_group_id[i]字段。
afti_signalled_tile_group_id_length_minus1字段加1指定用于表示语法元素afti_tile_group_id[i]字段(当存在时)以及拼块组头中的语法元素atgh_address的比特数。
afti_tile_group_id[i]字段指定第i拼块组的拼块组ID。afti_tile_group_id[i]字段的长度是afti_signalled_tile_group_id_length_minus1+1比特。
在图43中,拼块组可以称作拼块,并且拼块可以称作分区(或拼块分区)。在这种情况下,afti_tile_group_id[i]指示第i拼块的ID。
图44示出根据实施方式的阿特拉斯适配参数集(atlas_adaptation_parameter_set_rbsp())。
图44示出当NAL单元类型(nal_unit_type)为NAL_AAPS时由NAL单元载送的阿特拉斯适配参数集(AAPS)的语法结构。
AAPS RBSP包括可以由一个或更多个编码阿特拉斯帧的编码拼块组(或拼块)NAL单元引用的参数。在解码过程的操作期间的任何给定时刻,至多一个AAPS RBSP被认为是活动的,并且任何特定AAPS RBSP的激活导致先前活动的AAPS RBSP的去激活。
在图44中,aaps_atlas_adaptation_parameter_set_id字段提供了用于标识阿特拉斯适配参数集的标识符,以供其它语法元素引用。
aaps_atlas_sequence_parameter_set_id字段指定活动阿特拉斯序列参数集的asps_atlas_sequence_parameter_set_id字段的值。
aaps_camera_parameters_present_flag字段等于1指定相机参数(atlas_camera_parameters)存在于当前阿特拉斯适配参数集中。aaps_camera_parameters_present_flag字段等于0指定当前适配参数集的相机参数不存在。atlas_camera_parameters将参照图45进行描述。
aaps_extension_flag字段等于0指示AAPS RBSP语法结构中不存在aaps_extension_data_flag字段。
aaps_extension_data_flag字段可以指示AAPS是否包含扩展相关数据。
图45示出根据实施方式的atlas_camera_parameters。
图45示出图44的atlas_camera_parameters的详细语法。
在图45中,acp_camera_model字段指示与当前阿特拉斯适应参数集相关联的点云帧的相机模型。
图46是示出根据实施方式的指派给acp_camera_model字段的相机模型的示例的表。
例如,acp_camera_model字段等于0指示相机模型未指定。
acp_camera_model字段等于1指示相机模型为正交相机模型。
当acp_camera_model字段为2-255时,可以预留相机模型。
根据实施方式,当acp_camera_model字段的值等于1时,相机参数还可以包括与缩放、偏移和旋转相关的acp_scale_enabled_flag字段、acp_offset_enabled_flag字段和/或acp_rotation_enabled_flag字段。
acp_scale_enabled_flag字段等于1指示当前相机模型的缩放参数存在。acp_scale_enabled_flag等于0字段指示当前相机模型的缩放参数不存在。
当acp_scale_enabled_flagfield等于1时,acp_scale_on_axis[d]字段可以被包括在每个d值的阿特拉斯相机参数中。
acp_scale_on_axis[d]字段指定当前相机模型沿d轴的缩放值Scale[d]。d的取值范围为0到2(内包含),其中0、1和2的值分别对应X、Y和Z轴。
acp_offset_enabled_flag字段等于1指示当前相机模型的偏移参数存在。acp_offset_enabled_flag字段等于0指示当前相机模型的偏移参数不存在。
当acp_offset_enabled_flag字段等于1时,对于每个d值,acp_offset_on_axis[d]字段可以包含在阿特拉斯相机参数中。
acp_offset_on_axis[d]字段指示当前相机模型沿d轴的偏移Offset[d]的值,其中d在0到2(内包含)的范围内。d的值等于0、1和2,分别对应于X、Y和Z轴。
acp_rotation_enabled_flag字段等于1指示当前相机模型的旋转参数存在。acp_rotation_enabled_flag字段等于0指示当前相机模型的旋转参数不存在。
当acp_rotation_enabled_flagfield等于1时,阿特拉斯相机参数还可以包括acp_rotation_qx字段、acp_rotation_qy字段和acp_rotation_qz字段。
acp_rotation_qx字段使用四元数表示为当前相机模型的旋转指定x分量qX。
acp_rotation_qy字段使用四元数表示为当前相机模型的旋转指定y分量qY。
acp_rotation_qz字段使用四元数表示为当前相机模型的旋转指定z分量qZ。
如上所述的atlas_camera_parameters()可以被包括在至少一个SEI消息中并且被发送。
图47示出根据实施方式的atlas_tile_group_layer。
图47示出根据图40所示的NAL单元类型在NAL单元中载送的atlas_tile_group_layer或atlas_tile_layer的语法结构。
根据实施方式,拼块组可以对应于拼块。在本公开中,术语“拼块组”可以被称为术语“拼块”。类似地,术语“atgh”可以解释为术语“ath”。
atlas_tile_group_layer字段或atlas_tile_layer字段可以包含atlas_tile_group_header(atlas_tile_group_header)或atlas_tile_header(atlas_tile_header)。将参照图48描述阿特拉斯拼块组(或拼块)头(atlas_tile_group_header或atlas_tile_header)。
当阿特拉斯拼块组(或拼块)的atgh_type字段不是SKIP_TILE_GRP时,阿特拉斯拼块组(或拼块)数据可以包含在atlas_tile_group_layer或atlas_tile_layer中。
图48示出根据实施方式的包括在阿特拉斯拼块组层中的阿特拉斯拼块组(或拼块)头(atlas_tile_group_header()或atlas_tile_header())的语法结构的示例。
在图48中,atgh_atlas_frame_parameter_set_id字段指定当前阿特拉斯块组的活动阿特拉斯帧参数集的afps_atlas_frame_parameter_set_id字段的值。
atgh_atlas_adaptation_parameter_set_id字段指定用于当前阿特拉斯拼块组的活动阿特拉斯适配参数集的aaps_atlas_adaptation_parameter_set_id字段的值。
atgh_address字段指定拼块组(或拼块)的拼块组(或拼块)地址。当不存在时,atgh_address字段的值被推断为等于0。拼块组(或拼块)地址是拼块组(或拼块)的拼块组ID(或拼块ID)。atgh_address字段的长度为afti_signalled_tile_group_id_length_minus1字段+1比特。如果afti_signalled_tile_group_id_flag字段等于0,则atgh_address字段的值在0到afti_num_tile_groups_in_atlas_frame_minus1字段(内包含)的范围内。否则,atgh_address字段的值在0到2(afti_signalled_tile_group_id_length_minus1field+1)-1(内包含)的范围内。AFTI中包括afti_signalled_tile_group_id_length_minus1字段和afti_signalled_tile_group_id_flag字段。
atgh_type字段指定当前阿特拉斯拼块组(拼块)的编码类型。
图49示出根据实施方式的指派给atgh_type字段的编码类型的示例。
例如,当atgh_type字段的值为0时,阿特拉斯拼块组(或拼块)的编码类型为P_TILE_GRP(帧间阿特拉斯拼块组(或拼块))。
当atgh_type字段的值为1时,阿特拉斯拼块组(或拼块)的编码类型为I_TILE_GRP(帧内阿特拉斯拼块组(或拼块))。
当atgh_type字段的值为2时,阿特拉斯拼块组(或拼块)的编码类型为SKIP_TILE_GRP(跳过阿特拉斯拼块组(或拼块))。
AFTI中包括的afps_output_flag_present_flag字段的值等于1,阿特拉斯拼块组(或拼块)头还可以包括atgh_atlas_output_flag字段。
atgh_atlas_output_flag字段影响解码后的阿特拉斯输出和去除过程。
atgh_atlas_frm_order_cnt_lsb字段指定当前阿特拉斯拼块组的阿特拉斯帧顺序计数模(modulo)MaxAtlasFrmOrderCntLsb。
根据实施方式,如果包括在阿特拉斯序列参数集(ASPS)中的asps_num_ref_atlas_frame_lists_in_asps字段的值大于1,则阿特拉斯拼块组(或拼块)头还可以包括atgh_ref_atlas_frame_list_sps_flag字段。asps_num_ref_atlas_frame_lists_in_asps指定ASPS中包括的ref_list_struct(rlsIdx)语法结构的数量。
atgh_ref_atlas_frame_list_sps_flag字段等于1指定当前阿特拉斯拼块组(或拼块)的参考阿特拉斯帧列表是基于活动ASPS中的ref_list_struct(rlsIdx)语法结构之一推导的。atgh_ref_atlas_frame_list_sps_flag字段等于0指定当前atlastile列表的参考阿特拉斯帧列表是基于直接包括在当前阿特拉斯拼块组的拼块组头中的ref_list_struct(rlsIdx)语法结构推导的。
根据实施方式,当atgh_ref_atlas_frame_list_sps_flag字段等于0时,阿特拉斯拼块组(或拼块)头包括ref_list_struct(asps_num_ref_atlas_frame_lists_in_asps),并且当atgh_ref_atlas_frame_list_sps_flag大于1时,阿特拉斯拼块组(或拼块)头包括atgh_ref_atlas_frame_list_sps_flag字段。
atgh_ref_atlas_frame_list_idx字段指定ref_list_struct(rlsIdx)语法结构的索引,其用于推导当前阿特拉斯拼块组(或拼块)的参考阿特拉斯帧列表。参考阿特拉斯帧列表是活动ASPS中包括的ref_list_struct(rlsIdx)语法结构的列表。
根据实施方式,根据NumLtrAtlasFrmEntries字段的值,阿特拉斯拼块组(或拼块)头还包括atgh_additional_afoc_lsb_present_flag[j]字段,并且如果atgh_additional_afoc_lsb_present_flag[j]等于1,则还可以包括atgh_additional_afoc_lsb_val[j]字段。
atgh_additional_afoc_lsb_val[j]指定当前阿特拉斯拼块组(或拼块)的FullAtlasFrmOrderCntLsbLt[RlsIdx][j]的值。
根据实施方式,如果atgh_type字段不指示SKIP_TILE_GRP,则阿特拉斯拼块组(或拼块)头还可以包括atgh_pos_min_z_quantizer字段、atgh_pos_delta_max_z_quantizer字段、atgh_patch_size_x_info_quantizer字段、atgh_patch_size_y_info_quantizer字段、atgh_raw_3d_pos_axis_bit_count_minus1字段,和/或atgh_num_ref_idx_active_minus1字段,这取决于ASPS或AFPS中包括的信息。
根据实施方式,当包括在ASPS中的asps_normal_axis_limits_quantization_enabled_flag字段的值为1时,包括atgh_pos_min_z_quantizer字段。当ASPS中包括的asps_normal_axis_limits_quantization_enabled_flag和asps_axis_max_enabled_flag字段二者的值为1时,包括atgh_pos_delta_max_z_quantizer字段。
根据实施方式,当包括在ASPS中的asps_patch_size_quantizer_present_flag字段的值为1时,包括atgh_patch_size_x_info_quantizer字段和atgh_patch_size_y_info_quantizer字段。当AFPS中包括的afps_raw_3d_pos_bit_count_explicit_mode_flag字段的值为1时,包括atgh_raw_3d_pos_axis_bit_explicit_minus1字段。
根据实施方式,当atgh_type字段指示P_TILE_GRP并且num_ref_entries[RlsIdx]大于1时,阿特拉斯拼块组(或拼块)头还包括atgh_num_ref_idx_active_override_flag字段。当atgh_num_ref_idx_active_override_flag字段的值为1时,atgh_num_ref_idx_active_minus1字段被包括在阿特拉斯拼块组(或拼块)头中。
atgh_pos_min_z_quantizer指定要应用于具有索引p的补片的pdu_3d_pos_min_z[p]的量化器。如果atgh_pos_min_z_quantizer字段不存在,则可以推断其值等于0。
atgh_pos_delta_max_z_quantizer字段指定要应用于具有索引p的补片的pdu_3d_pos_delta_max_z[p]字段的值的量化器。如果atgh_pos_delta_max_z_quantizer字段不存在,则可以推断其值等于0。
atgh_patch_size_x_info_quantizer字段指定要应用于具有索引p的补片的变量pdu_2d_size_x_minus1[p]、mpdu_2d_delta_size_x[p]、ipdu_2d_delta_size_x[p]、rpdu_2d_size_x_minus1[p]和epdu_2d_size_x.minus1[p]的变量的量化器PatchSizeXQuantizer的值。如果atgh_patch_size_x_info_quantizer字段不存在,则可以推断其值等于asps_log2_patch_packing_block_size字段。
atgh_patch_size_y_info_quantizer字段指定要应用于具有索引p的补片的变量pdu_2d_size_y_minus1[p]、mpdu_2d_delta_size_y[p]、ipdu_2d_delta_size_y[p]、rpdu_2d_size_y_minus1[p]和epdu_2d_size_y_minus1[p]的变量的量化器PatchSizeYQuantizer的值。如果atgh_patch_size_y_info_quantizer字段不存在,则可以推断其值等于asps_log2_patch_packing_block_size字段。
atgh_raw_3d_pos_axis_bit_count_minus1字段加1指定rpdu_3d_pos_x、rpdu_3d_pos_y和rpdu_3d_pos_z的固定长度表示中的比特数。
atgh_num_ref_idx_active_override_flag字段等于1指定语法元素atgh_num_ref_idx_active_minus1字段存在于当前阿特拉斯拼块组(或拼块)。atgh_num_ref_idx_active_override_flag字段等于0指定语法元素atgh_num_ref_idx_active_minus1不存在。如果atgh_num_ref_idx_active_override_flag字段不存在,则可以推断其值等于0。
atgh_num_ref_idx_active_minus1字段加1指定可以用于解码当前阿特拉斯拼块组的参考阿特拉斯帧列表的最大参考索引。当atgh_num_ref_idx_active_minus1字段的值等于0时,可以不使用参考阿特拉斯帧列表的参考索引来解码当前阿特拉斯拼块组(或拼块)。
byte_alignment用于在添加1(其是停止比特)后用0填充剩余比特以进行字节对齐,来指示数据的结束。
如上所述,一个或更多个ref_list_struct(rlsIdx)语法结构可以包括在ASPS中和/或可以直接包括在阿特拉斯拼块组(或拼块)头中。
图50示出根据实施方式的ref_list_struct()的语法结构的示例。
在图50中,num_ref_entries[rlsIdx]字段指定ref_list_struct(rlsIdx)语法结构中的条目数。
与num_ref_entries[rlsIdx]字段的值一样多的以下元素可以被包括在参考列表结构中。
当asps_long_term_ref_atlas_frames_flag字段等于1时,参考阿特拉斯帧标志(st_ref_atlas_frame_flag[rlsIdx][i])可以被包括在参考列表结构中。
当第i条目是ref_list_struct(rlsIdx)语法结构中的第一个短期参考阿特拉斯帧条目时,abs_delta_afoc_st[rlsIdx][i]字段指定当前阿特拉斯拼块组与第i条目引用的阿特拉斯帧的阿特拉斯帧顺序计数值之间的绝对差。当第i条目是短期参考阿特拉斯帧条目但不是ref_list_struct(rlsIdx)中的第一个短期参考阿特拉斯帧条目时,该字段指定由ref_list_struct(rlsIdx)语法结构中的第i条目和前一个短期参考阿特拉斯帧条目引用的阿特拉斯帧的阿特拉斯帧顺序计数值之间的绝对差。
当st_ref_atlas_frame_flag[rlsIdx][i]字段等于1时,abs_delta_afoc_st[rlsIdx][i]字段可以包括在参考列表结构中。
abs_delta_afoc_st[rlsIdx][i]字段指定当第i条目是ref_list_struct(rlsIdx)语法结构中的第一个短期参考阿特拉斯帧条目时,当前阿特拉斯拼块组与第i条目引用的阿特拉斯帧的阿特拉斯帧顺序计数值之间的绝对差,或指定当第i条目是短期参考阿特拉斯帧条目但不是ref_list_struct(rlsIdx)语法结构中的第一个短期参考阿特拉斯帧条目时,ref_list_struct(rlsIdx)语法结构中的第i条目和前一个短期参考阿特拉斯帧条目所引用的阿特拉斯帧的阿特拉斯帧顺序计数值之间的绝对差。
当abs_delta_afoc_st[rlsIdx][i]字段的值大于0时,条目符号标志(strpf_entry_sign_flag[rlsIdx][i])字段可以包括在参考列表结构中。
strpf_entry_sign_flag[rlsIdx][i]字段等于1指定语法结构ref_list_struct(rlsIdx)字段中的第i条目具有大于或等于0的值。strpf_entry_sign_flag[rlsIdx][i]字段等于0指定语法结构ref_list_struct(rlsIdx)中的第i条目具有小于0的值。当不存在时,可以推断strpf_entry_sign_flag[rlsIdx][i]字段的值等于1。
当ASPS中包括的asps_long_term_ref_atlas_frames_flag等于0时,afoc_lsb_lt[rlsIdx][i]字段可以包括在参考列表结构中。
afoc_lsb_lt[rlsIdx][i]字段指定由ref_list_struct(rlsIdx)字段中的第i条目引用的阿特拉斯帧的阿特拉斯帧顺序计数模MaxAtlasFrmOrderCntLsb的值。afoc_lsb_lt[rlsIdx][i]字段的长度为asps_log2_max_atlas_frame_order_cnt_lsb_minus4+4比特。
图51示出根据实施方式的阿特拉斯拼块组数据(atlas_tile_group_data_unit)。
图51示出包括在图47的阿特拉斯拼块组(或拼块)层中的阿特拉斯拼块组数据(atlas_tile_group_data_unit())的语法。阿特拉斯拼块组数据可以对应于阿特拉斯拼块数据,并且拼块组可以称为拼块。
在图51中,随着p从0递增1,根据索引p的阿特拉斯相关元素(或字段)可以包括在阿特拉斯拼块组(或拼块)数据中。
atgdu_patch_mode[p]字段指示当前阿特拉斯拼块组中索引为p的补片的补片模式。当阿特拉斯拼块组(或拼块)头中包括的atgh_type字段指示SKIP_TILE_GRP时,这指示整个拼块组(或拼块)信息直接从与对应于第一参考阿特拉斯帧的当前拼块组(或拼块)具有相同atgh_address的拼块组(或拼块)复制而来。
当atgdu_patch_mode[p]字段不是I_END并且atgdu_patch_mode[p]不是P_END时,patch_information_data和atgdu_patch_mode[p]可以包括在每个索引p的阿特拉斯拼块组数据(或阿特拉斯拼块数据)中。
图52示出根据实施方式的当atgh_type字段指示I_TILE_GRP时指派给atgdu_patch_mode字段的补片模式类型的示例。
例如,atgdu_patch_mode字段等于0指示标识符为I_INTRA的非预测补片模式。
atgdu_patch_mode字段等于1指示标识符为I_RAW的RAW点补片模式。
atgdu_patch_mode字段等于2指示标识符为I_EOM的EOM点补片模式。
atgdu_patch_mode字段等于14指示标识符为I_END的补片终止模式。
图53示出根据实施方式的当atgh_type字段指示P_TILE_GRP时指派给atgdu_patch_mode字段的补片模式类型的示例。
例如,atgdu_patch_mode字段等于0指示标识符为P_SKIP的补片跳过模式。
atgdu_patch_mode字段等于1指示标识符为P_MERGE的补片合并模式。
atgdu_patch_mode字段等于2指示标识符为P_INTER的帧间预测补片模式。
atgdu_patch_mode字段等于3指示标识符为P_INTRA的非预测补片模式。
atgdu_patch_mode字段等于4指示标识符为P_RAW的RAW点补片模式。
atgdu_patch_mode字段等于5指示标识符为P_EOM的EOM点补片模式。
atgdu_patch_mode字段等于14指示标识符为P_END的补片终止模式。
图54示出根据实施方式的当atgh_type字段指示SKIP_TILE_GRP时指派给atgdu_patch_mode字段的补片模式类型的示例。
例如,atgdu_patch_mode等于0指示标识符为P_SKIP的补片跳过模式。
根据实施方式,阿特拉斯拼块组(或拼块)数据单元还可以包括AtgduTotalNumberOfPatches字段。AtgduTotalNumberOfPatches字段指示补片的数量并且可以设置为p的最终值。
图55示出根据实施方式的补片信息数据(patch_information_data(patchIdx,patchMode))。
图55示出包括在图51的拼块组(或拼块)数据单元中的补片信息数据(patch_information_data(p,atgdu_patch_mode[p]))的语法结构的示例。在图51的patch_information_data(p,atgdu_patch_mode[p])中,p对应于图55的patchIdx,并且atgdu_patch_mode[p]对应于图55的patchMode。
例如,当atgh_type字段指示SKIP_TILE_GR时,skip_patch_data_unit(patchIdx)作为补片信息数据被包括在内。
当atgh_type字段指示P_TILE_GR时,根据patchMode,skip_patch_data_unit(patchIdx)、merge_patch_data_unit(patchIdx)、patch_data_unit(patchIdx)、inter_patch_data_unit(patchIdx)、raw_patch_data_unit(patchIdx)和eom_patch_data_unit(patchIdx)之一可以作为补片信息数据包括在内。
例如,当patchMode指示补片跳过模式(P_SKIP)时,包括skip_patch_data_unit(patchIdx)。当patchMode指示补片合并模式(P_MERGE)时,包括merge_patch_data_unit(patchIdx)。当patchMode指示P_INTRA时,包括patch_data_unit(patchIdx)。当patchMode指示P_INTER时,包括inter_patch_data_unit(patchIdx)。当patchMode指示RAW点补片模式(P_RAW)时,包括raw_patch_data_unit(patchIdx)。当patchMode为EOM点补片模式(P_EOM)时,包括eom_patch_data_unit(patchIdx)。
当atgh_type字段指示I_TILE_GR时,可以根据patchMode包括patch_data_unit(patchIdx)、raw_patch_data_unit(patchIdx)和eom_patch_data_unit(patchIdx)之一作为补片信息数据。
例如,当patchMode指示I_INTRA时,包括patch_data_unit(patchIdx)。当patchMode指示RAW点补片模式(I_RAW)时,包括raw_patch_data_unit(patchIdx)。当patchMode指示EOM点补片模式(I_EOM)时,包括eom_patch_data_unit(patchIdx)。
图56示出根据实施方式的补片数据单元(patch_data_unit(patchIdx))的语法结构。如上所述,当atgh_type字段指示P_TILE_GR并且patchMode指示P_INTRA时,或者当atgh_type字段指示I_TILE_GR并且patchMode指示I_INTRA时,可以包括patch_data_unit(patchIdx)作为补片信息数据。
在图56中,pdu_2d_pos_x[p]字段指示当前阿特拉斯拼块组(或拼块)(tileGroupIdx)中具有索引p的补片的补片边界框的左上角的x坐标(或左偏移)。阿特拉斯拼块组(或拼块)可以具有拼块组(或拼块)索引(tileGroupIdx)。tileGroupIdx可以表示为PatchPackingBlockSize的倍数。
pdu_2d_pos_y[p]字段指示当前阿特拉斯拼块组(或拼块)(tileGroupIdx)中具有索引p的拼块的拼块边界框的左上角的y坐标(或上偏移)。tileGroupIdx可以表示为PatchPackingBlockSize的倍数。
pdu_2d_size_x_minus1[p]字段加1指定当前阿特拉斯拼块组(或拼块)tileGroupIdx中索引为p的补片的量化宽度值。
pdu_2d_size_y_minus1[p]字段加1指定当前阿特拉斯拼块组(或拼块)tileGroupIdx中索引为p的补片的量化高度值。
pdu_3d_pos_x[p]字段指定要应用于当前阿特拉斯拼块组(或拼块)的索引为p的补片中的重构补片点沿切线轴的偏移。
pdu_3d_pos_y[p]字段指定要应用于当前阿特拉斯拼块组(或拼块)的索引为p的补片中的重构补片点沿双切轴的偏移。
pdu_3d_pos_min_z[p]字段指定要应用于当前阿特拉斯拼块组(或拼块)的索引为p的补片中的重构补片点沿法线轴的偏移。
当包括在ASPS中的asps_normal_axis_max_delta_value_enabled_flag字段的值等于1时,pdu_3d_pos_delta_max_z[patchIdx]字段可以包括在补片数据单元中。
如果存在,pdu_3d_pos_delta_max_z[p]字段指定在转换为它们的标称表示后,在当前阿特拉斯拼块组(或拼块)的索引p的补片中的重构bitdepth补片几何样本中预期存在的沿法线轴的移位的标称最大值。
pdu_projection_id[p]字段指定当前阿特拉斯拼块组(或拼块)的索引为p的补片的投影模式和投影平面的法线的索引的值。
pdu_orientation_index[p]字段指示当前阿特拉斯拼块组(或拼块)的索引为p的补片的补片取向索引。pdu_orientation_index[p]字段将参照图57进行描述。
当AFPS中包括的afps_lod_mode_enabled_flag字段的值等于1时,pdu_lod_enabled_flag[patchIndex]可以包括在补片数据单元中。
当pdu_lod_enabled_flag[patchIndex]字段大于0时,pdu_lod_scale_x_minus1[patchIndex]字段和pdu_lod_scale_y[patchIndex]字段可以包括在补片数据单元中。
当pdu_lod_enabled_flag[patchIndex]字段等于1且patchIndex为p时,它指定具有索引p的当前补片存在LOD参数。如果pdu_lod_enabled_flag[p]字段等于0,则当前补片不存在LOD参数。
pdu_lod_scale_x_minus1[p]字段加1指定在将其添加到补片坐标Patch3dPosX[p]之前要应用于当前阿特拉斯拼块组(或拼块)的索引为p的补片中的点的本地x坐标的LOD缩放因子。
pdu_lod_scale_y[p]字段指定在将其添加到补片坐标Patch3dPosY[p]之前要应用于当前阿特拉斯拼块组(或拼块)的索引为p的补片中的点的本地y坐标的LOD缩放因子。
当包括在ASPS中的asps_point_local_reconstruction_enabled_flag字段的值等于1时,可以在补片数据单元中包括point_local_reconstruction_data(patchIdx)。
根据实施方式,point_local_reconstruction_data(patchIdx)可以包含允许解码器恢复由于压缩损失等而丢失的点的信息。
图57示出根据实施方式的相对于补片取向的旋转和偏移。
图57示出指派给图56的补片取向索引(pdu_orientation_index[p]字段)的旋转矩阵和偏移。
根据实施方式的方法/装置可以对点云数据执行取向操作。该操作可以使用图57所示的标识符、旋转和偏移来执行。
根据实施方式,NAL单元可以包括SEI信息。例如,可以根据nal_unit_type将非必要补充增强信息或必要补充增强信息包括在NAL单元中。
图58示例性地示出根据实施方式的包括sei_message()的SEI信息的语法结构。
SEI消息有助于与解码、重构、显示或其它目的相关的过程。根据实施方式,可以存在两种类型的SEI消息:必要和非必要。
解码过程可能不需要非必要SEI消息。可能不需要一致性解码器来处理此信息以用于输出顺序一致性。
必要SEI消息可以是V-PCC比特流的整数部分,并且不应从比特流中去除。必要SEI消息可以分类为以下两种类型:
类型A必要SEI消息包含检查比特流一致性和输出定时解码器一致性所需的信息。每个符合点A的V-PCC解码器可以不丢弃任何类型A必要SEI消息,并且为了比特流一致性和输出定时解码器一致性而考虑它们。
类型B必要SEI消息:符合特定重构简档的V-PCC解码器可以不丢弃任何类型B必要SEI消息,并且为了3D点云重构和一致性目的而考虑它们。
根据实施方式,SEI消息由SEI消息头和SEI消息有效载荷组成。SEI消息头包括sm_payload_type_byte字段和sm_payload_size_byte字段。
sm_payload_type_byte字段指示SEI消息的有效载荷类型。例如,可以基于sm_payload_type_byte字段的值来标识SEI消息是前缀SEI消息还是后缀SEI消息。
sm_payload_size_byte字段指示SEI消息的有效载荷大小。
根据实施方式,sm_payload_type_byte字段被设置为SEI消息有效载荷中的PayloadType的值,并且sm_payload_size_byte字段被设置为SEI消息有效载荷中的PayloadSize的值。
图59示出根据实施方式的SEI消息有效载荷(sei_payload(payloadType,payloadSize))的语法结构的示例。
在实施方式中,当nal_unit_type是NAL_PREFIX_NSEI或NAL_PREFIX_ESEI时,根据PayloadType,SEI消息有效载荷可以包括sei(payloadSize)。
在另一实施方式中,当nal_unit_type为NAL_SUFFIX_NSEI或NAL_SUFFIX_ESEI时,根据PayloadType,SEI消息有效载荷可包括sei(payloadSize)。
此外,具有图25所示的结构的V-PCC比特流(也称为V3C比特流)可以按原样发送到接收侧,也可以由图1、图20或图21的文件/片段封装器封装成ISOBMFF文件格式并发送到接收侧。
在后一种情况下,V-PCC比特流可以通过文件中的多个轨道发送,也可以通过单个轨道发送。在这种情况下,文件可以通过图1、图20或图22的接收装置的文件/片段解封装器解封装成V-PCC比特流。
例如,载送V-PCC参数集、几何比特流、占用图比特流、属性比特流和/或阿特拉斯比特流的V-PCC比特流可以被图1、图20或图21的文件/片段封装器封装成基于ISOBMFF(ISO基础媒体文件格式)的文件格式。在这种情况下,根据实施方式,V-PCC比特流可以存储在基于ISOBMFF的文件中的单个轨道或多个轨道中。
根据实施方式,基于ISOBMFF的文件可以被称为容器、容器文件、媒体文件、V-PCC文件等。具体地,文件可以由可以称为ftyp、meta、moov或mdat的盒和/或信息组成。
ftyp盒(文件类型盒)可以提供与文件的文件兼容性或文件类型有关的信息。接收侧可以参考ftyp盒来识别文件。
meta盒可以包括vpcg{0,1,2,3}盒(V-PCC组盒)。
mdat盒,也称为媒体数据盒,包括实际媒体数据。根据实施方式,视频编码的几何比特流、视频编码的属性比特流、视频编码的占用图比特流和阿特拉斯比特流被包含在文件的mdat盒的样本中。根据实施方式,样本可以称为V-PCC样本。
也称为电影盒的moov盒可以包含关于文件的媒体数据(例如,几何比特流、属性比特流、占用图比特流等)的元数据。例如,它可以包含解码和播放媒体数据所需的信息,以及关于文件的样本的信息。moov盒可以用作所有元数据的容器。moov盒可以是元数据相关盒当中的最高层的盒。根据实施方式,文件中可以仅存在一个moov盒。
根据实施方式的盒可以包括提供与文件的轨道有关的信息的轨道(trak)盒。轨道盒可以包括提供关于轨道的媒体信息的媒体(mdia)盒和用于参考轨道和对应于轨道的文件的样本的轨道参考容器(tref)盒。
mdia盒可以包括提供关于对应的媒体数据的信息的媒体信息容器(minf)盒以及指示流的类型的处置器(hdlr)盒(HandlerBox)。
minf盒可以包括提供与mdat盒的样本相关的元数据的样本表(stbl)盒。
stbl盒可以包括样本描述(stsd)盒,该样本描述(stsd)盒提供关于所采用的编码类型的信息和该编码类型所需的初始化信息。
根据实施方式,stsd盒可以包括用于存储V-PCC比特流的轨道的样本条目。
本文使用的术语V-PCC具有与术语基于视觉体积视频的编码(V3C)相同的含义。这两个术语可以用于彼此互补。
在本公开中,为了将根据实施方式的V-PCC比特流存储在文件中的单个轨道或多个轨道、体积视觉轨道、体积视觉媒体头、体积视觉样本条目、体积视觉样本、V-PCC轨道的样本和样本条目(或称为V3C轨道)中,V-PCC视频分量轨道(或称为V3C视频分量轨道)的样本和样本条目等可以如下定义。
体积视觉轨道(或被称为体积轨道)是具有被预留用于描述体积视觉轨道的处置器类型的轨道。也就是说,体积视觉轨道可以由被包括在MediaBox的HandlerBox中的体积视觉媒体处置器类型‘volv’和/或媒体盒(MediaBox)的minf盒中的体积视觉媒体头(vvhd)标识。
V3C轨道是指V3C比特流轨道、V3C阿特拉斯轨道和V3C阿特拉斯拼块轨道。
在单轨道容器的情况下,V3C比特流轨道是包含V3C比特流的体积视觉轨道。
在多轨道容器的情况下,V3C阿特拉斯轨道是包含V3C阿特拉斯比特流的体积视觉轨道。
在多轨道容器的情况下,V3C阿特拉斯拼块轨道是包含与一个或更多个拼块相对应的V3C阿特拉斯比特流的一部分的体积视觉轨道。
V3C视频分量轨道是载送与V3C比特流中的占用视频比特流、几何视频比特流和属性视频比特流中的一者相对应的2D视频编码数据的视频轨道。
根据实施方式,基于视频的点云压缩(V-PCC)表示点云视觉信息的体积编码。
也就是说,moov盒的trak盒中的minf盒还可以包括体积视觉媒体头盒。体积视觉媒体头盒包含关于包含体积视觉场景的体积视觉轨道的信息。
每个体积视觉场景可以由唯一的体积视觉轨道来表示。ISOBMFF文件可以包含多个场景,因此ISOBMFF文件中可以存在多个体积视觉轨道。
根据实施方式,体积视觉轨道可以由MediaBox的HandlerBox中的体积视觉媒体处置器类型'volv'和/或mdia盒(MediaBox)的minf盒中的体积视觉媒体头(vvhd)来标识。minf盒可以称为媒体信息容器或媒体信息盒。minf盒被包括在mdia盒中。mdia盒被包括在trak盒中。trak盒被包括在文件的moov盒中。文件中可以存在单个体积视觉轨道或多个体积视觉轨道。
根据实施方式,体积视觉轨道可以使用MediaInformationBox中的VolumetricVisualMediaHeaderBox。MediaInformationBox被称为minf盒,而VolumetricVisualMediaHeaderBox被称为vvhd盒。
根据实施方式,体积视觉媒体头(vvhd)盒的语法可以定义如下。
盒类型:'vvhd'
容器:MediaInformationBox
强制性:是
数量:正好一个
根据实施方式的体积视觉媒体头盒(即,vvhd类型盒)的语法如下所示。
aligned(8)class VolumetricVisualMediaHeaderBox
extends FullBox('vvhd',version=0,1){
}
version可以是指示该盒的版本的整数。
根据实施方式,体积视觉轨道可以使用VolumetricVisualSampleEntry来发送信令信息,并且可以使用VolumetricVisualSample来发送实际数据。
根据实施方式,体积视觉样本条目可称为样本条目或V-PCC样本条目,并且体积视觉样本可称为样本或V-PCC样本。
根据实施方式,单个体积视觉轨道或多个体积视觉轨道可以存在于文件中。根据实施方式,单个体积视觉轨道可以被称为单个轨道或V-PCC单个轨道,并且多个体积视觉轨道可以被称为多个轨道或多个V-PCC轨道。
VolumetricVisualSampleEntry的语法结构的示例如下所示。
Class VolumetricVisualSampleEntry(codingname)extends SampleEntry(codingname){
unsigned int(8)[32]compressor_name;
}
compressor_name字段是用于信息目的的压缩器的名称。它被格式化为固定的32字节字段,其中第一个字节设置为要显示的字节的数量,然后是使用UTF-8编码的可显示数据的字节数,然后填充以完成总共32个字节(包括大小字节)。该字段可以设置为0。
根据实施方式,体积视觉样本的格式可以由编码系统定义。
根据实施方式,包括V-PCC单元头的V-PCC单元头盒可以存在于V-PCC轨道的样本条目和包括在方案信息中的所有视频编码的V-PCC分量轨道中的样本条目。V-PCC单元头盒可以包含如下的用于由各个轨道载送的数据的V-PCC单元头。
aligned(8)类VPCCUnitHeaderBox扩展FullBox('vunt',version=0,0){
vpcc_unit_header()unit_header;
}
也就是说,VPCCUnitHeaderBox可以包括vpcc_unit_header()。
图30示出vpcc_unit_header()的语法结构的示例。
根据实施方式,从其继承VolumetricVisualSampleEntry的样本条目(即,VolumetricVisualSampleEntry的上类)包括VPCC解码器配置盒(VPCCConfigurationBox)。
根据实施方式,VPCCConfigurationBox可以包括如下所示的VPCCDecoderConfigurationRecord。
类VPCCConfigurationBox extends Box(‘VpcC’){
VPCCDecoderConfigurationRecord()VPCCConfig;
}
根据实施方式,VPCCDDecoderConfigurationRecord()的语法可以定义如下。
aligned(8)类VPCCDDecoderConfigurationRecord{
unsigned int(8)configurationVersion=1;
unsigned int(2)lengthSizeMinusOne;
bit(1)reserved=1;
unsigned int(5)numOfVPCCParameterSets;
for(i=0;i<numOfVPCCParameterSets;i++){
unsigned int(16)VPCCParameterSetLength;
vpcc_unit(VPCCParameterSetLength)vpccParameterSet;
}
unsigned int(8)numOfSetupUnitArrays;
for(j=0;j<numOfSetupUnitArrays;j++){
bit(1)array_completeness;
bit(1)reserved=0;
unsigned int(6)NAL_unit_type;
unsigned int(8)numNALUnits;
for(i=0;i<numNALUnits;i++){
unsigned int(16)SetupUnitLength;
nal_unit(SetupUnitLength)setupUnit;
}
}
}
configurationVersion是版本字段。对记录的不兼容更改由版本号的更改指示。
当lengthSizeMinusOne字段的值加1时,可以指示包括在VPCCDecoderConfigurationRecord或应用了VPCCDecoderConfigurationRecord的流的V-PCC样本中的NALUnitLenght字段的长度(以字节为单位)。例如,1个字节的大小由“0”指示。该字段的值与阿特拉斯子流的sample_stream_nal_header()中的ssnh_unit_size_precision_bytes_minus1字段的值相同。图36示出包括ssnh_unit_size_precision_bytes_minus1字段的sample_stream_nal_header()的语法结构示例。ssnh_unit_size_precision_bytes_minus1字段的值加1可以指示所有样本流NAL单元中的ssnu_vpcc_unit_size元素的精度,以字节为单位。
numOfVPCCParameterSets指定在VPCCDecoderConfigurationRecord中发信号通知的V-PCC参数集(VPS)的数量。
VPCC参数集是VPCC_VPS类型的V-PCC单元的sample_stream_vpcc_unit()示例。V-PCC单元可以包括vpcc_parameter_set()。也就是说,VPCCParameterSet阵列可以包括vpcc_parameter_set()。图28示出sample_stream_vpcc_unit()的语法结构示例。
numOfSetupUnitArrays指示指定类型的阿特拉斯NAL单元的阵列的数量。
重复次数与numOfSetupUnitArrays的值一样多的n迭代语句可以包含array_completeness。
array_completeness等于1指示给定类型的所有阿特拉斯NAL单元都在以下阵列中,并且没有在流中。array_completeness等于0指示指定类型的附加阿特拉斯NAL单元可以在流中。默认值和允许值受样本条目名称的约束。
NAL_unit_type指示以下阵列中的阿特拉斯NAL单元的类型。NAL_unit_type被约束为采用指示NAL_ASPS、NAL_AFPS、NAL_AAPS、NAL_PREFIX_ESEI、NAL_SUFFIX_ESEI、NAL_PREFIX_NSEI或NAL_SUFFIX_NSEI阿特拉斯NAL单元的值之一。
numNALUnits字段指示包括在VPCCDDecoderConfigurationRecord应用到的流的VPCCDDecoderConfigurationRecord中的指定类型的阿特拉斯NAL单元的数量。SEI阵列应仅包含SEI消息。
SetupUnitLength字段指示setupUnit字段的大小(以字节为单位)。该字段包括NAL单元头和NAL单元有效载荷二者的大小,但不包括长度字段本身。
setupUnit是包含NAL_ASPS、NAL_AFPS、NAL_AAPS、NAL_PREFIX_ESEI、NAL_PREFIX_NSEI、NAL_SUFFIX_ESEI或NAL_SUFFIX_NSEI类型的NAL单元的sample_stream_nal_unit()示例。
根据实施方式,SetupUnit阵列可以包括阿特拉斯参数集,其对于其中存在VPCCDDecoderConfigurationRecord的样本条目引用的流是恒定的,并且包括阿特拉斯子流必要或非必要SEI消息。根据实施方式,阿特拉斯设置单元可以简称为设置单元。
根据实施方式,本公开的文件/片段封装器可以执行样本的分组、轨道的分组、V-PCC比特流的单轨道封装或V-PCC比特流的多轨道封装。此外,文件/片段封装器可以将包括SEI消息的信令信息、与拼块和对象相关的信令信息和/或用于支持空间访问的信令信息以盒或FullBox的形式添加到样本条目或单独元数据轨道。下面将详细描述每个盒。
接下来,将给出包括在文件的至少一个轨道中的样本、样本条目、样本组或轨道组中发信号通知或在单独元数据轨道中发信号通知的信令信息中的与3D区域相关的信息、包括SEI消息的信令信息和/或与拼块和对象相关的信息的描述。
SEI信息结构
根据实施方式,SEI信息结构(称为VPCCSEIInfoStruct或V3CSEIInfoStruct)如下所示包括必要SEI阿特拉斯NAL单元和/或非必要SEI阿特拉斯NAL单元。
aligned(8)class VPCCSEIInfoStruct(){
unsigned int(16)numEssentialSEIs;
for(i=0;i<numEssentialSEIs;i++){
unsigned int(16)ESEI_type;
unsigned int(16)ESEI_length
nal_unit(ESEI_length)ESEI_byte;
}
unsigned int(16)numNonEssentialSEIs;
for(i=0;i<numNonEssentialSEIs;i++){
unsigned int(16)NSEI_type;
unsigned int(16)NSEI_length
nal_unit(NSEI_length)NSEI_byte;
}
}
numEssentialSEIs字段指示在该结构中发信号通知的必要SEI消息的数量。
ESEI_type字段指示以下必要SEI消息的类型。
ESEI_length字段指示以下必要SEI消息的字节长度。
ESEI_byte字段包含具有等于NAL_PREFIX_ESEI或NAL_SUFFIX_ESEI的nal_unit_type的必要SEI阿特拉斯NAL单元。
numNonEssentialSEIs指示在该结构中发信号通知的非必要SEI消息的数量。
NSEI_type字段指示以下非必要SEI消息的类型。
NSEI_length字段指示以下非必要SEI消息的字节长度。
NSEI_byte字段包含具有等于NAL_PREFIX_NSEI或NAL_SUFFIX_NSEI的nal_unit_type的非必要SEI阿特拉斯NAL单元。
SEI信息盒
根据实施方式的SEI信息盒(称为VPCCSEIInfoBox或V3CSEIInfoBox)可以包括上文所描述的SEI信息结构(VPCCSEIInfo Struct())。
aligned(8)class VPCCSEIInfoBox extends Box(‘vsei’){
VPCCSEIInfoStruct();
}
空间区域信息结构
根据实施方式,3D空间区域信息结构(3DSpatialRegionStruct)和3D边界框信息结构(3DBoundingBoxStruct)提供关于体积媒体的空间区域的信息。关于体积媒体的空间区域的信息包括空间区域的x、y和z偏移以及3D空间中的区域的宽度、高度和深度,以及关于体积媒体的边界框信息。
3D点信息结构
根据实施方式,3D点信息可以包括如下关于每个点的位置信息。
aligned(8)class 3DPoint(){
unsigned int(16)x;
unsigned int(16)y;
unsigned int(16)z;
}
3DPoint()可以包含x字段、y字段和z字段。
x字段、y字段和z字段可以指示笛卡尔坐标中的x、y和z坐标值。
立方体区域信息结构
根据实施方式,立方体区域信息可以包括与在笛卡尔坐标系中发信号通知的锚点相关的立方体区域信息,如下所述。
aligned(8)class CuboidRegionStruct(){
unsigned int(16)cuboid_dx;
unsigned int(16)cuboid_dy;
unsigned int(16)cuboid_dz;
}
CuboidRegionStruct()可以包括cuboid_dx字段、cuboid_dy字段和cuboid_dz字段。
cuboid_dx字段、cuboid_dy字段和cuboid_dz字段可以分别指示笛卡尔坐标中相对于锚点沿x、y和z轴的立方体子区域的维度。
3D空间区域信息结构
根据实施方式,3D空间区域信息(3DSpatialRegionStruct)可以包括如下的3D点信息和立方体区域信息。
aligned(8)class 3DSpatialRegionStruct(dimensions_included_flag){
unsigned int(16)3d_region_id;
3DPoint anchor;
if(dimensions_included_flag){
CuboidRegionStruct();
}
}
在3DSpatialRegionStruct(dimensions_included_flag)中,dimensions_included_flag是指示是否发信号通知3D空间区域的维度的标志。也就是说,当dimensions_included_flag字段的值为“真”时,3D空间区域信息包括CuboidRegionStruct()。
3d_region_id是用于标识3D空间区域的标识符。
anchor指示笛卡尔坐标系中的用作3D空间区域(也称为空间区域或3D区域)的锚点的3D点。例如,当3D区域为立方体类型时,锚点可以是立方体的原点,并且cuboid_dx字段、cuboid_dy字段和cuboid_dz字段可以表示x坐标、y坐标和z坐标的值。
3D边界框结构
aligned(8)class 3DBoundingBoxStruct(){
unsigned int(16)bb_dx;
unsigned int(16)bb_dy;
unsigned int(16)bb_dz;
}
3DBoundingBoxStruct()可以包括bb_dx字段、bb_dy字段和bb_dz字段。
这里,bb_dx、bb_dy和bb_dz可以与原点(0,0,0)相关,并且分别指示沿着笛卡尔坐标系中的X轴、Y轴和Z轴的整个体积媒体的3D边界框的扩展(或大小)。
接下来,将描述与阿特拉斯、阿特拉斯拼块和对象相关的信令信息。
阿特拉斯参数集信息结构
根据实施方式,可以如下定义与阿特拉斯参数集相关的阿特拉斯参数集信息结构的语法(称为VPCCAPSStruct或V3CAPSStruct)。
aligned(8)class VPCCAPSStruct(){
unsigned int(8)numOfAPSArrays;
for(j=0;j<numOfAPSArrays;j++){
unsigned int(8)aps_id;
unsigned int(6)aps_NAL_unit_type;
unsigned int(8)aps_numNALUnits;
for(i=0;i<aps_numNALUnits;i++){
unsigned int(16)apsLength;
nal_unit(APSLength)apsUnit;
}
}
}
numOfAPSArrays字段指示阿特拉斯参数集NAL单元的数量。
aps_id字段指示以下阿特拉斯参数集的标识符。
aps_NAL_unit_type字段指示阿特拉斯NAL单元的类型。例如,aps_NAL_unit_type字段可以具有指示NAL_ASPS、NALS_AFPS和NAL_AAPS阿特拉斯NAL单元的值。
aps_numNALUnits字段指示由aps_NAL_unit_type字段指示的类型的阿特拉斯NAL单元的数量。
apsLength字段以字节为单位指示以下apsUnit字段的大小。
apsUnit字段可以包含根据由NAL_unit_type字段指示的类型的类型NAL_ASPS、NAL_AFPS、NAL_AAPS的NAL单元。
阿特拉斯参数集盒
根据实施方式,阿特拉斯参数集盒(称为VPCCAPSBox或V3CAPSBox)可以包括上述阿特拉斯参数集信息结构(VPCCAPSStruct())。
aligned(8)class VPCCAPSBox extends Box(‘vpap’){
VPCCAPSStruct();
}
对象阿特拉斯信息结构
根据实施方式,可以如下定义发信号通知对象与阿特拉斯拼块之间的关系(或映射信息)的对象阿特拉斯信息结构的语法(称为V3CObjAtlasIInfoStruct或VPCCObjAtlasIInfoStruct)。根据实施方式,对象阿特拉斯信息结构可以称为关于一个或更多个对象与一个或更多个阿特拉斯拼块之间的映射的信息。
aligned(8)class V3CObjAtlasIInfoStruct(){
unsigned int(16)numObjects;
for(i=0;i<numObjects;i++){
unsigned int(32)object_idx[i];
unsigned int(16)num_atlases[i];
for(j=0;j<num_atlases;;j++){
unsigned int(8)atlas_id[i][j];
unsigned int(8)num_atlas_tiles[i][j];
for(k=0;k<num_atlas_tiles[j];k++)
unsigned(16)atlas_tile_id[i][j][k];
}
}
}
numObjects字段指示在该结构中发信号通知的对象的数量。
object_idx[i]字段指示用于标识第i对象的标识符。
num_atlas[i]字段指示与第i对象相关的阿特拉斯比特流(或阿特拉斯或阿特拉斯流)的数量。
atlas_id[i][j]字段指示用于标识与第i对象相关的第j阿特拉斯比特流的标识符。
num_atlas_tiles[i][j]字段指示与第i对象相关的第j阿特拉斯比特流中的阿特拉斯拼块的数量。
atlas_tile_id[i][j][k]字段指示用于标识与第i对象相关的第j阿特拉斯比特流中的第k阿特拉斯拼块的标识符。
阿特拉斯拼块信息结构
根据实施方式,可以如下定义发信号通知阿特拉斯拼块与对象之间的关系(或映射信息)的阿特拉斯拼块信息结构的语法(称为V3CAtlasTileInfoStruct或VPCCAtlasTileInfoStruct)。
aligned(8)class V3CAtlasTileInfoStruct(){
unsigned int(16)num_atlas;
for(j=0;j<num_atlas;;j++){
unsigned int(8)atlas_id[j];
unsigned int(8)num_atlas_tiles[j];
for(k=0;k<num_atlas_tiles[j];k++)
unsigned int(15)atlas_tile_id[j][k];
unsigned int(1)object_info_present;
if(object_info_present)
unsigned int(16)object_id;
}
}
num_atlas字段指示在该结构中发信号通知的阿特拉斯(或阿特拉斯比特流、阿特拉斯流或阿特拉斯子流)的数量。
atlas_id[j]字段指示用于标识第j阿特拉斯的标识符。
num_atlas_tiles[j]字段指示第j阿特拉斯中的阿特拉斯拼块的数量。
atlas_tile_id[j][k]字段指示用于标识第j阿特拉斯的第k阿特拉斯拼块的标识符。
object_info_present字段指示是否包括与第j阿特拉斯的第k阿特拉斯拼块相关的对象信息。例如,object_info_present字段等于1可以指示包括与第j阿特拉斯的第k阿特拉斯拼块相关的对象信息,并且object_info_present字段等于0可以指示不包括该信息。
object_id字段指示用于标识与第j阿特拉斯的第k阿特拉斯拼块相关的对象的标识符。
对象信息结构
根据实施方式,可以如下定义发信号通知与对象相关的信息的对象信息结构的语法(称为V3CObjectInfoStruct或VPCCObjectInfoStruct)。
aligned(8)class V3CObjectInfoStruct(){
unsigned int(16)num_objects;
for(j=0;j<num_objects;;j++){
unsigned int(8)objects_id[j];
}
}
num_objects字段指示在该结构中发信号通知的对象的数量。
object_id[j]字段指示用于标识第j对象的标识符。
对象映射信息结构
根据实施方式,可以如下定义发信号通知与对象相关的映射信息的对象映射信息结构(称作V3CObjectMappingStruct或VPCCObjectMappingStruct)的语法。
aligned(8)class V3CObjectMappingStruct(){
unsigned int(16)num_objects;
for(i=0;j<num_objects;;i++){
unsigned int(8)objects_id[i];
bit(1)obj_atlas_tile_mapping_flag[i];
bit(1)obj_patch_mapping_flag[i];
bit(1)obj_2d_region_mapping_flag[i];
bit(1)obj_3d_region_mapping_flag[i];
if(obj_atlas_tile_mapping_flag[i]){
unsigned int(16)num_atlas;
for(j=0;j<num_atlas;j++){
unsigned int(8)atlas_id[j];
unsigned int(8)num_atlas_tiles[j];
for(k=0;k<num_atlas_tiles[j];k++)
unsigned int(16)atlas_tile_id[j][k];
}
}
if(obj_patch_mapping_flag[i]){
unsigned int(16)num_atlas;
for(j=0;j<num_atlas;j++){
unsigned int(8)atlas_id[j];
unsigned int(8)num_patches[j];
for(k=0;k<num_patches[j];k++){
unsigned int(15)patch_id[j][k];
}
}
}
if(obj_2d_region_mapping_flag[i]){
unsigned int(8)num_2d_regions;
for(j=0;j<num_2d_regions;j++){
unsigned int(16)2d_region_id[j];
unsigned int(16)2d_region_left[j];
unsigned int(16)2d_region_top[j];
unsigned int(16)2d_region_width[j];
unsigned int(16)2d_region_height[j];
}
}
if(obj_3d_region_mapping_flag[i]){
unsigned int(8)num_3d_regions;
for(j=0;j<num_3d_regions;j++){
3DSpatialRegionStruct 3d_region[j];
}
}
}
}
num_objects字段指示在该结构中发信号通知的对象的数量。
object_id[i]字段指示用于标识第i对象的标识符。
obj_atlas_tile_mapping_flag[i]字段可以指示是否包括与第i对象相关的阿特拉斯拼块信息。例如,obj_atlas_tile_mapping_flag[i]字段在等于1时可以指示包括与第i对象相关的阿特拉斯拼块信息(例如,关于阿特拉斯的数量的信息、阿特拉斯标识信息、关于阿特拉斯拼块数量的信息、阿特拉斯拼块标识信息等),并且obj_atlas_tile_mapping_flag[i]字段在等于0时可以指示不包括该信息。
obj_patch_mapping_flag[i]字段可以指示是否包括与第i对象相关的阿特拉斯补片信息。例如,obj_patch_mapping_flag[i]字段等于1可以指示包括与第i对象相关的阿特拉斯补片信息(例如,关于阿特拉斯的数量的信息、阿特拉斯标识信息、关于补片数量的信息、补片标识信息等),并且obj_patch_mapping_flag[i]字段等于0可以指示不包括该信息。
obj_2d_region_mapping_flag[i]字段可以指示是否包括与第i对象相关的阿特拉斯帧中的2D区域信息。例如,obj_2d_region_mapping_flag[i]字段等于1可以指示包括与第i对象相关的阿特拉斯帧中的2D区域信息(例如,关于2D区域的数量的信息、与每个2D区域相关的信息等),并且obj_2d_region_mapping_flag[i]字段等于0可以指示不包括该信息。
obj_3d_region_mapping_flag[i]字段可以指示是否包括与第i对象相关的3D区域信息。例如,obj_3d_region_mapping_flag[i]字段等于1可以指示包括与第i对象相关的3D区域信息(例如,关于3D区域的数量的信息、与每个3D区域相关的信息等),并且obj_3d_region_mapping_flag[i]字段等于0可以指示不包括该信息。
与第i对象相关的阿特拉斯拼块信息可以包括num_atlas字段、atlas_id[j]字段、num_atlas_tiles[j]字段和atlas_tile_id[j][k]字段。
num_atlas字段指示与第i对象相关的阿特拉斯(或阿特拉斯比特流、阿特拉斯流或阿特拉斯子流)的数量。
atlas_id[j]字段指示用于标识与第i对象相关的第j阿特拉斯的标识符。
num_atlas_tiles[j]字段指示与第i对象相关的第j阿特拉斯中的阿特拉斯拼块的数量。
atlas_tile_id[j][k]字段指示用于标识与第i对象相关的第j阿特拉斯的第k阿特拉斯拼块的标识符。
与第i对象相关的阿特拉斯补片信息可以包括num_atlas字段、atlas_id[j]字段、num_patches[j]字段和patch_id[j][k]字段。
num_atlas字段指示与第i对象相关的阿特拉斯(或阿特拉斯比特流、阿特拉斯流或阿特拉斯子流)的数量。
atlas_id[j]字段指示用于标识与第i对象相关的第j阿特拉斯的标识符。
num_patches[j]字段指示与第i对象相关的第j阿特拉斯中的补片(或阿特拉斯补片)的数量。
patche_id[j][k]字段指示用于标识与第i对象相关的第j阿特拉斯的第k补片的标识符。
与第i对象相关的阿特拉斯帧中的2D区域信息可以包括num_2d_regions字段、2d_region_id[j]字段、2d_region_left[j]字段、2d_region_top[j]字段、2d_region_width[j]字段和2d_region_height[j]字段。
num_2d_regions字段指示与第i对象相关的阿特拉斯帧中的2D区域信息的数量。
2d_region_id[j]字段指示用于标识与第i对象相关联的阿特拉斯帧中的第j 2D区域信息的标识符。
2d_region_left[j]字段指示与第i对象相关联的阿特拉斯帧中的第j 2D区域信息的左侧信息。
2d_region_top[j]字段指示与第i对象相关联的阿特拉斯帧中的第j 2D区域信息的顶部信息。
2d_region_width[j]字段指示关于与第i对象相关联的阿特拉斯帧中的第j 2D区域信息的宽度信息。
2d_region_height[j]字段指示关于与第i对象相关联的阿特拉斯帧中的第j 2D区域信息的高度信息。
与第i对象相关的3D区域信息可以包括num_3d_regions字段和3DSpatialRegionStruct。
num_3d_regions字段指示与第i对象相关的3D区域信息的数量。
3d_region[j]字段指示与第i对象相关的第j 3D区域信息。上文已在“3D空间区域信息结构(3DSpatialRegionStruct)”中详细描述了3D区域信息,因此将跳过3D区域信息的详细描述以避免冗余描述。
样本组
根据实施方式,图20或图21的文件/片段封装器可以通过对一个或更多个样本进行分组来生成样本组。根据实施方式,图20或图21的文件/片段封装器或元数据处理器可以发信号通知与样本中的样本组、样本组或样本条目相关的信令信息。也就是说,可以将与样本组相关的样本组信息添加到样本、样本组或样本条目。样本组信息将在下面与对应样本组一起详细描述。根据实施方式,样本组信息可以包括阿特拉斯参数集样本组信息、SEI样本组信息、阿特拉斯拼块样本组信息和对象阿特拉斯样本组信息。
阿特拉斯参数集样本组
相同的阿特拉斯参数集信息可应用于的一个或更多个样本可以被分组为样本组,其可以称为阿特拉斯参数集样本组。
根据实施方式,用于样本分组的‘vaps’grouping_type表示将轨道中的样本指派给在阿特拉斯参数集样本组中载送的阿特拉斯参数集。这里,样本为载送阿特拉斯子比特流的轨道(例如,V-PCC轨道或V-PCC比特流轨道)或载送V-PCC分量的轨道的样本。
根据实施方式,当存在具有等于‘vaps’的grouping_type的SampleToGroupBox时,存在具有相同分组类型的伴随SampleGroupDescriptionBox,并且包含样本所属的组的ID。
根据实施方式,V-PCC轨道可以包括至多一个具有等于‘vaps’的grouping_type的SampleToGroupBox。
根据实施方式,可以如下定义与阿特拉斯参数集样本组相关的阿特拉斯参数集样本组信息的语法(称为VPCCAtlasParamSampleGroupDescriptionEntry或V3CAtlasParamSampleGroupDescriptionEntry)。
aligned(8)class VPCCAtlasParamSampleGroupDescriptionEntry()extendsSampleGroupDescriptionEntry(‘vaps’){
unsigned int(8)numOfSetupUnits;
for(i=0;i<numOfSetupUnits;i++){
unsigned int(16)setupUnitLength;
nal_unit(setupUnitLength)setupUnit;
}
}
numOfSetupUnits字段指示在样本组描述中发信号通知的设置单元的数量。
SetupUnitLength字段以字节为单位指示以下setupUnit字段的大小。长度字段包括NAL单元头和NAL单元有效载荷两者的大小,但不包括长度字段本身。
setupUnit为载送与该样本组相关联的数据的类型NAL_ASPS、NAL_AFPS、NAL_AAPS、NAL_PREFIX_ESEI、NAL_PREFIX_NSEI、NAL_SUFFIX_ESEI或NAL_SUFFIX_NSEI的NAL单元。
根据实施方式,可以如下替换阿特拉斯参数集样本组信息的语法(VPCCAtlasParamSampleGroupDescription Entry)。
aligned(8)class VPCCAtlasParamSampleGroupDescriptionEntry()extendsSampleGroupDescriptionEntry(‘vaps’){
VPCCAPSStruct();
}
VPCCAPSStruct包含载送应用于该样本组的样本的阿特拉斯参数集(即,阿特拉斯序列参数集、阿特拉斯帧参数集、阿特拉斯适配参数集)的阿特拉斯NAL单元。
在上面的“阿特拉斯参数集信息结构”中详细描述了阿特拉斯参数集(即,包括在VPCCAPSStruct()中的字段),因此将跳过其描述以避免冗余描述。
SEI样本组
可以将相同SEI消息适用的一个或更多个样本分组到样本组中,该样本组可以称作SEI样本组。
根据实施方式,用于样本分组的‘vsei’grouping_type表示将轨道中的样本指派给SEI样本组中载送的SEI消息。这里,样本是载送阿特拉斯子比特流的轨道(例如,V-PCC轨道或V-PCC比特流轨道)中的样本。
根据实施方式,当存在具有等于‘vsei’的grouping_type的SampleToGroupBox时,存在具有相同分组类型的伴随SampleGroupDescriptionBox,并且包含样本所属的组的ID。
根据实施方式,V-PCC轨道可以包含至多一个具有等于‘vsei’的grouping_type的SampleToGroupBox。
根据实施方式,可以如下定义与SEI样本组相关的SEI样本组信息的语法(称为VPCCSEISampleGroupDescriptionEntry或V3CSEISampleGroupDescriptionEntry)。
aligned(8)class VPCCSEISampleGroupDescriptionEntry()extendsSampleGroupDescriptionEntry(‘vsei’){
VPCCSEIInfoStruct();
}
VPCCSEIInfoStruct包含载送应用于该样本组的样本的必要或非必要SEI消息的阿特拉斯NAL单元。
上文已在“SEI信息结构”中详细描述包含在VPCCSEIInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
阿特拉斯拼块样本组
相同阿特拉斯拼块适用于的一个或更多个样本可以被分组为样本组,其可以称为阿特拉斯拼块样本组。
根据实施方式,用于样本分组的‘vati’grouping_type表示将载送阿特拉斯数据(例如,补片、分割)的轨道中的样本指派给阿特拉斯拼块样本组中的某些阿特拉斯子比特流的阿特拉斯拼块。
根据实施方式,当存在具有等于‘vati’grouping_type的SampleToGroupBox时,存在具有相同分组类型的伴随SampleGroupDescriptionBox,并且包含样本所属的样本组的ID。
根据实施方式,可以如下定义与阿特拉斯拼块样本组相关联的阿特拉斯拼块样本组信息的语法(称为V3CAtlasInfoSampleGroupDescriptionEntry或VPCCAtlasInfoSampleGroupDescriptionEntry)。
aligned(8)class V3CAtlasInfoSampleGroupDescriptionEntry()
extends SampleGroupDescriptionEntry(‘vati’){
V3CAtlasTileInfoStruct();
V3CObjectInfoStruct();
}
V3CAtlasTileInfoStruct可以包含与包括在样本组中的样本相关联的阿特拉斯子比特流、阿特拉斯拼块的标识符和对象标识符。包含在V3CAtlasTileInfoStruct()中的信息(即,字段)已在上文的“阿特拉斯拼块信息结构”中详细描述,因此将跳过其描述以避免冗余描述。
V3CObjectInfoStruct可以包含与包括在样本组中的样本相关联的对象标识符。在上面的“对象信息结构”中已经详细描述了包含在V3CObjectInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
如上所述,可以通过阿特拉斯拼块样本分组发信号通知与一个或更多个样本相关联的阿特拉斯拼块标识符、阿特拉斯子比特流的标识符、附加的关联对象标识符等。
对象阿特拉斯样本组
相同对象和阿特拉斯适用于的一个或更多个样本可以被分组为样本组,其可以称为对象阿特拉斯样本组。
根据实施方式,用于样本分组的‘voai’grouping_type表示将载送阿特拉斯子比特流的轨道(例如,V3C轨道)中的样本指派给在对象阿特拉斯样本组中载送的对象阿特拉斯信息。
根据实施方式,当存在具有等于‘voai’grouping_type的SampleToGroupBox时,存在具有相同分组类型的伴随SampleGroupDescriptionBox,并且包含样本所属的样本组的ID。
根据实施方式,V-PCC轨道可以包含至多一个具有等于‘voai’的grouping_type的SampleToGroupBox。
根据实施方式,可以如下定义与对象阿特拉斯样本组相关联的对象阿特拉斯样本组信息的语法(称为V3CObjectAtlasInfoSampleGroupDescriptionEntry或VPCCObjectAtlasInfoSampleGroupDescriptionEntry)。
aligned(8)class V3CObjectAtlasInfoSampleGroupDescriptionEntry()
extends SampleGroupDescriptionEntry(‘voai’){
V3CObjAtlasIInfoStruct();
}
V3CobjAtlasIInfoStruct包含应用于该样本组的样本的对象与阿特拉斯比特流之间的关联。包含在V3CObjAtlasIInfoStruct()中的信息(即,字段)已经在上面的‘对象阿特拉斯信息结构’中详细描述,因此将跳过其描述以避免冗余描述。
轨道组
根据实施方式,图20或图21的文件/片段封装器可以通过对一个或更多个轨道进行分组来生成轨道组。根据实施方式,图20或图21的文件/片段封装器或元数据处理器可以发信号通知与样本中的轨道组、轨道组或样本条目相关的信令信息。也就是说,可以将与轨道组相关联的轨道组信息添加到样本、轨道组或样本项目。轨道组信息将在下面与轨道组一起详细描述。根据实施方式,轨道组信息可以包括空间区域轨道组信息、对象轨道组信息、对象实体组信息、阿特拉斯相关轨道组信息、阿特拉斯相关实体组信息、对象阿特拉斯轨道组信息、对象阿特拉斯实体组信息、SEI轨道组信息和SEI实体组信息。
空间区域轨道组
根据实施方式,可以将相同空间区域信息可应用于的一个或更多个轨道分组成轨道组,其可以称为空间区域轨道组。
根据实施方式,具有等于‘3drg’的track_group_type的TrackGroupTypeBox指示该轨道属于与3D空间区域相对应的一组V3C分量轨道。
根据实施方式,属于同一空间区域的轨道具有track_group_type‘3drg’的track_group_id的相同值,并且来自一个空间区域的轨道的track_group_id不同于来自任何其它空间区域的轨道的track_group_id。
根据实施方式,具有等于‘3drg’的track_group_type的TrackGroupTypeBox内的track_group_id的相同值的轨道属于相同的空间区域区域。因此,具有等于‘3drg’的track_group_type的TrackGroupTypeBox内的track_group_id可以用作空间区域的标识符。
可以如下定义与具有等于‘3drg’的分组类型的空间区域轨道组相关联的盒类型空间区域轨道组信息的语法(Spatial Region Group Box)。
aligned(8)class SpatialRegionGroupBox extends TrackGroupTypeBox(‘3drg’){
V3CAtlasTileInfoStruct();
V3CObjectInfoStruct();
}
V3CAtlasTileInfoStruct可以包含与包括在轨道组中的轨道相关联的阿特拉斯子比特流、阿特拉斯拼块的标识符和对象标识符。包含在V3CAtlasTileInfoStruct()中的信息(即,字段)已在上文的“阿特拉斯拼块信息结构”中详细描述,因此将跳过其描述以避免冗余描述。
V3CObjectInfoStruct可以包含与包括在轨道组中的轨道相关联的对象标识符。在上面的“对象信息结构”中已经详细描述了包含在V3CObjectInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
对象轨道组
根据实施方式,可以将相同对象适用于的一个或更多个轨道分组成轨道组,其可以称作对象轨道组。也就是说,可以对包含与同一对象相关联的数据的一个或更多个轨道进行分组。该轨道组可以包括包含与点云相关联的V3C分量视频的轨道。
根据实施方式,具有等于‘vobj’的track_group_type的TrackGroupTypeBox可以指示该轨道属于与对象信息相关联的轨道组。
根据实施方式,属于相同对象信息的轨道具有等于‘vobj’的track_group_type的track_group_id的相同值。此外,来自对象信息的轨道的track_group_id不同于来自其它对象信息的轨道的track_group_id。
根据实施方式,与相同对象信息相关联的轨道具有等于‘vobj’的track_group_type的track_group_id的相同值。
可以如下定义与具有‘vobj’的轨道组类型的对象轨道组相关联的盒型对象轨道组信息(Object Info Group Box)的语法。
aligned(8)class ObjectInfoGroupBox extends TrackGroupTypeBox(“vobj’){
V3CObjectInfoStruct();
}
V3CObjectInfoStruct可以包含与包括在轨道组中的轨道相关联的对象标识符。在上面的“对象信息结构”中已经详细描述了包含在V3CObjectInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
对象实体组
根据实施方式,相同对象信息可应用于的一个或更多个实体(例如,轨道或项目)可以被分组为实体组,其可以称为对象实体组。
根据实施方式,与对象实体组相关联的对象实体组信息(称为V3CObjectEntityInfoGroupBox或VPCCObjectEntityInfoGroupBox)可以存储在盒形式的样本、实体组或样本条目中。
根据实施方式,对象实体组信息(V3CObjectEntityInfoGroupBox)可以如下定义。
盒类型:‘vobj’
容器:GroupsListBox
强制性:否
数量:零或更多
根据实施方式,具有等于‘vobj’的盒类型值的V3CObjectEntityInfoGroupBox可以包含在组列表盒(GroupListBox)中。
根据实施方式,V3CObjectEntityInfoGroupBox可以为静态对象信息,并且可以在V-PCC轨道样本条目或V-PCC比特流轨道样本条目中发信号通知。如果V3CObjectEntityInfoGroupBox为动态对象信息,那么其可以在单独元数据轨中发信号通知。
根据实施方式,具有‘vobj’的track_group_type的EntityToGroupBox可以指示轨道或项目属于与对象信息相关联的组。发信号通知的对象信息可以应用于该实体组的定时轨道或非定时项目。
根据实施方式,可以如下定义V3CObjectEntityInfoGroupBox的语法。
aligned(8)class V3CObjectEntityInfoGroupBox(version,flags)
extends EntityToGroupBox(‘vobj’,version,flags){
for(i=0;i<num_entities_in_group;i++){
V3CObjectInfoStruct();
}
}
num_entities_in_group字段指示该实体组中的实体的数量。
V3CObjectInfoStruct()可以包含与包括在实体组中的实体相关联的对象标识符。例如,可以包括用于标识与实体组中的第i实体相关联的对象的信息。在上面的“对象信息结构”中已经详细描述了包含在V3CObjectInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
阿特拉斯关联轨道组
根据实施方式,相同的阿特拉斯拼块或阿特拉斯子比特流适用于的一个或更多个轨道可以被分组成轨道组,其可以称为阿特拉斯关联轨道组。也就是说,轨道组可以将包含与使用包含在相同阿特拉斯拼块或阿特拉斯子比特流中的数据重构的点云相关联的视频(例如,占用视频、几何视频、属性视频)的轨道分组。
具有等于‘apse’的track_group_type的TrackGroupTypeBox可以指示该轨道属于与在V3C轨道或阿特拉斯拼块轨道中载送的相同阿特拉斯拼块或阿特拉斯子比特流相关联的一组轨道。
根据实施方式,与相同阿特拉斯拼块相关联的轨道具有track_group_type‘apse’的track_group_id的相同值。
可以如下定义与具有等于‘apse’的track_group_type的阿特拉斯关联轨道组相关联的盒型阿特拉斯关联轨道组信息的语法(AtlasAssociationGroupBox)。
aligned(8)class AtlasAssociationGroupBox extends TrackGroupTypeBox(‘apse’){
unsigned int(16)num_tiles;
for(i=0;i<num_tiles;i++){
unsigned int(16)tile_id;
}
}
num_tiles字段指示与该轨道组的成员相关联的阿特拉斯拼块的数量。
tile_id字段指示用于标识与该轨道组相关联的阿特拉斯拼块的标识符。例如,可以包括用于标识轨道组的第i阿特拉斯拼块的信息。
阿特拉斯关联实体组
根据实施方式,相同的阿特拉斯拼块或阿特拉斯子比特流适用于的一个或更多个实体(例如,轨道或项目)可以被分组为实体组,其可以称为阿特拉斯关联实体组。也就是说,实体组可以将包括与使用包含在相同阿特拉斯拼块或阿特拉斯子比特流中的数据重构的点云相关联的视频(即,占用视频、几何视频、属性视频)的轨道或项目分组。
根据实施方式,与阿特拉斯关联实体组相关联的阿特拉斯关联实体组信息(AtlasAssociationEntityGroupBox)可以以盒的形式存储在样本、实体组或样本条目中。
根据实施方式,AtlasAssociationEntityGroupBox可以如下定义。
盒类型:‘apse’
容器:GroupsListBox
强制性:否
数量:零或更多
根据实施方式,具有等于‘apse’的盒类型值的AtlasAssociationEntityGroupBox可以包含在组列表盒(GroupListBox)中。
根据实施方式,具有等于‘apse’的track_group_type的EntityToGroupBox可以指示这些轨道或项目属于与相同的阿特拉斯拼块或阿特拉斯子比特流相关联的组。与发信号通知的阿特拉斯拼块标识信息相关的阿特拉斯数据可以应用于该实体组的定时轨道或非定时项目。
根据实施方式,可以如下定义AtlasAssociationEntityGroupBox的语法。
aligned(8)class AtlasAssociationEntityGroupBox(version,flags)
extends EntityToGroupBox(‘apse’,version,flags){
for(i=0;i<num_entities_in_group;i++){
unsigned int(16)num_tiles;
for(j=0;j<num_tiles;j++){
unsigned int(16)tile_id;
}
}
}
num_entities_in_group字段指示该条目组中的实体的数量。
num_tiles字段指示与该实体组的成员相关联的阿特拉斯拼块的数量。例如,可以指示与该实体组中的第i实体相关联的阿特拉斯拼块的数量。
tile_id字段指定应用于该实体组的阿特拉斯拼块的拼块地址(或拼块标识符)。例如,可以包括用于标识与实体组中的第i实体相关联的第j阿特拉斯拼块的信息。
对象阿特拉斯轨道组
根据实施方式,相同对象阿特拉斯信息可应用于的一个或更多个轨道可以被分组成轨道组,其可以称为对象阿特拉斯信息轨道组。
根据实施方式,具有等于‘voai’的track_group_type的TrackGroupTypeBox可以指示该轨道属于与对象阿特拉斯信息相关联的轨道组。
根据实施方式,与对象阿特拉斯信息相关联的轨道具有track_group_type‘voai’的track_group_id的相同值。
可以如下定义与具有等于‘voai’的track_group_type的对象阿特拉斯轨道组相关联的盒型对象阿特拉斯轨道组信息的语法(Object Atlas Info Group Box)。
aligned(8)class ObjectAtlasInfoGroupBox extends TrackGroupTypeBox(‘voai’){
V3CObjAtlasIInfoStruct();
}
V3CObjAtlasIInfoStruct()包含应用于该轨道组的轨道的对象与阿特拉斯比特流之间的关联。V3CObjAtlasIInfoStruct()中包含的信息(即,字段)已经在上面的“对象阿特拉斯信息结构”中详细描述,因此将跳过其描述以避免冗余描述。
对象阿特拉斯实体组
根据实施方式,相同对象阿特拉斯信息可应用于的一个或更多个实体(例如,轨道或项目)可以被分组为实体组,其可以称为对象阿特拉斯实体组。
根据实施方式,与对象阿特拉斯实体组相关联的对象阿特拉斯实体组信息(称为V3CObjectAtlasEntityInfoGroupBox或VPCCObjectAtlasEntityInfoGroupBox)可以以盒的形式存储在样本、实体组或样本条目中。
根据实施方式,V3CObjectAtlasEntityInfoGroupBox可以如下定义。
盒类型:‘voai’
容器:GroupsListBox
强制性:否
数量:零或更多
根据实施方式,具有等于‘voai’的盒类型值的V3CObjectAtlasEntityInfoGroupBox可以包括在组列表盒(GroupListBox)中。
根据实施方式,具有等于‘voai’的track_group_type的EntityToGroupBox可以指示轨道或项目属于与对象阿特拉斯信息相关联的组。发信号通知的对象阿特拉斯可以应用于该实体组的定时轨道或非定时项目。
根据实施方式,可以如下定义V3CObjectAtlasEntityInfoGroupBox的语法。
aligned(8)class V3CObjectAtlasEntityInfoGroupBox(version,flags)
extends EntityToGroupBox(‘voai’,version,flags){
for(i=0;i<num_entities_in_group;i++){
V3CObjAtlasIInfoStruct();
}
}
num_entities_in_group字段指示该条目组中的实体的数量。
V3CObjAtlasIInfoStruct()包含应用于该组的轨道或项目的对象与阿特拉斯比特流之间的关联。例如,可以发信号通知阿特拉斯比特流与该实体组的第i实体相关联的对象之间的关联。包含在V3CObjAtlasIInfoStruct()中的信息(即,字段)已经在上面的“对象阿特拉斯信息结构”中详细描述,因此将跳过其描述以避免冗余描述。
SEI轨道组
根据实施方式,可以将相同SEI消息适用于的一个或更多个轨道分组成轨道组,其可以称作SEI轨道组。
根据实施方式,具有等于‘vpse’的track_group_type的TrackGroupTypeBox可以指示该轨道属于与SEI消息相关联的轨道组。
根据实施方式,与相同SEI消息相关联的轨道具有track_group_type‘vpse’的track_group_id的相同值。
与具有等于‘vpse’的track_group_type的SEI轨道组相关联的盒型SEI轨道组信息的语法(SEIGroup Box)可以如下定义。
aligned(8)class SEIGroupBox extends TrackGroupTypeBox(‘vpse’){
VPCCSEIInfoStruct();
}
VPCCSEIInfoStruct()包含载送应用于该轨道组的轨道的必要或非必要SEI消息的阿特拉斯NAL单元。上文已在“SEI信息结构”中详细描述包含在VPCCSEIInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
SEI实体组
根据实施方式,可以将相同SEI消息适用于的一个或更多个实体(例如,轨道或项目)分组成实体组,其可以称为SEI实体组。
根据实施方式,与SEI实体组相关联的SEI实体组信息(SEIEntityGroupBox)可以以盒的形式存储在样本、实体组或样本条目中。
根据实施方式,SEIEntityGroupBox可以如下定义。
盒类型:‘vpse’
容器:GroupsListBox
强制性:否
数量:零或更多
根据实施方式,具有等于‘vpse’的盒类型值的SEIEntityGroupBox可以包含在组列表盒(GroupListBox)中。
根据实施方式,具有等于‘vpse’的track_group_type的EntityToGroupBox可以指示轨道或项目属于与SEI消息相关联的组。发信号通知的SEI消息可以应用于该实体组的定时轨道或非定时项目。
根据实施方式,可以如下定义SEIEntityGroupBox的语法。
aligned(8)class SEIEntityGroupBox(version,flags)
extends EntityToGroupBox(‘vpse’,version,flags){
for(i=0;i<num_entities_in_group;i++){
VPCCSEIInfoStruct();
}
}
num_entities_in_group字段指示该条目组中的实体的数量。
VPCCSEIInfoStruct()包含载送应用于该组的轨道或项目的必要或非必要SEI消息的阿特拉斯NAL单元。例如,可以包括载送与该实体组中的第i实体相关联的必要或非必要SEI消息的阿特拉斯NAL单元。上文已经在“SEI信息结构”中详细描述了包含在VPCCSEIInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
如上文所描述的,V-PCC比特流(或称为V3C比特流)可以存储在单个轨道或多个轨道中并在单个轨道或多个轨道中发送。
在下文中,将描述与多个轨道相关的V-PCC比特流的多轨道容器。
根据实施方式,在多轨道容器(也称为多轨道ISOBMFF V-PCC容器)的一般布局中,V-PCC基本流中的V-PCC单元可以基于它们的类型映射到容器文件内的各个轨道。在根据实施方式的多轨道ISOBMFF V-PCC容器中存在两种类型的轨道。其中一种类型是V-PCC轨道,另一种类型是V-PCC分量轨道。
根据实施方式的V-PCC轨道是载送V-PCC比特流中的体积视觉信息的轨道,其包括阿特拉斯子比特流和序列参数集(或V-PCC参数集)。
根据实施方式的V-PCC分量轨道是受限制的视频方案轨道,其载送用于V-PCC比特流的占用图、几何和属性子比特流的2D视频编码数据。此外,V-PCC分量轨道可以满足以下条件:
a)在样本条目中,在V-PCC系统中插入了新盒,其记录了该轨道中包含的视频流的作用;
b)从V-PCC轨道向V-PCC分量轨道引入轨道参考,以建立V-PCC分量轨道在由V-PCC轨道表示的特定点云中的成员资格;
c)轨道头标志设置为0,以指示该轨道不直接影响电影的整体布局,但对V-PCC系统有贡献。
属于同一V-PCC序列的轨道可以是时间对齐的。跨不同视频编码的V-PCC分量轨道和V-PCC轨道对相同点云帧有贡献的样本具有相同的呈现时间。用于此类样本的V-PCC阿特拉斯序列参数集和阿特拉斯帧参数集的解码时间等于或早于点云帧的合成时间。此外,属于同一V-PCC序列的所有轨道都具有相同的隐式或显式编辑列表。
组件轨道中的基本流之间的同步由ISOBMFF轨道定时结构(stts、ctts和cslg)或电影片段中的等同机制处置。
根据实施方式,V-PCC轨道和V-PCC分量轨道中的同步样本可以是时间对齐的,也可以不是时间对齐的。在没有时间对齐的情况下,随机访问可以涉及从不同的同步开始时间预轮询各种轨道,以使得能够在所需时间开始。在时间对齐的情况下(例如,诸如基本工具集简档之类的V-PCC简档所需的),应将V-PCC轨道的同步样本视为V-PCC内容的随机访问点,并且随机访问应当仅需要参考V-PCC轨道的同步样本信息来完成。
基于此布局,V-PCC ISOBMFF容器可以包括以下内容:
-包含V-PCC参数集和阿特拉斯子比特流参数集(在样本条目中)和载送阿特拉斯子比特流NAL单元的样本的V-PCC轨道。该轨道还包括对载送视频压缩的V-PCC单元(即,单元类型VPCC_OVD、VPCC_GVD和VPCC_AVD)的有效载荷的其它轨道的轨道参考。
-受限视频方案轨道,其中样本包含用于占用图数据的视频编码基本流的访问单元(即,类型为VPCC_OVD的V-PCC单元的有效载荷)。
-一个或更多个受限视频方案轨道,其中样本包含用于几何数据的视频编码基本流的访问单元(即,类型为VPCC_GVD的V-PCC单元的有效载荷)。
-零个或多个受限视频方案轨道,其中样本包含用于属性数据的视频编码基本流的访问单元(即,类型为VPCC_AVD的V-PCC单元的有效载荷)。
在下文中,将描述V3C轨道(或称为V-PCC轨道)。
根据实施方式,V3C轨道是指V3C比特流轨道、V3C阿特拉斯轨道或V3C阿特拉斯拼块轨道。
在单轨道容器的情况下,V3C比特流轨道是包含V3C比特流的体积视觉轨道。
在多容器的情况下,V3C阿特拉斯轨道是包含V3C阿特拉斯比特流的体积视觉轨道。
在多容器的情况下,V3C阿特拉斯拼块轨道是包含与一个或更多个拼块相对应的V3C阿特拉斯比特流的一部分的体积视觉轨道。
V3C比特流由一个或更多个编码的V3C序列(CVS)组成。CVS开始于包括在至少一个V3C单元中或通过外部装置提供的VPS。CVS包括载送V3C子比特流的一个或更多个V3C单元。这里,每个V3C子比特流与V3C分量(例如,阿特拉斯、占用、几何或属性)相关联。
根据实施方式,可以通过如图60所示的样本条目类型来划分(或标识)V3C轨道的样本条目。
图60是示出根据本说明书的样本条目类型的样本条目结构和样本格式的示例的表。也就是说,样本条目、样本组和样本格式根据如图60所示的每个样本条目类型而变化。
具有样本条目类型v3c1的V3C轨道
样本条目类型‘v3c1’可以指示在V3C比特流中存在一个阿特拉斯比特流。在这种情况下,阿特拉斯比特流可以存储在具有样本条目类型‘v3c1’的一个V3C轨道中。
VPS可以包括在具有样本条目类型‘v3c1’的V3C轨道的样本条目中。具体地,阿特拉斯参数集(ASPS、AAPS、AFPS)和SEI消息可以包括在setupUnit阵列中。V3C单元头盒可以存在于V3C轨道的样本条目中。
可以存在包含适用于V3C轨道中的一个或更多个样本的阿特拉斯参数集和SEI消息的‘vaps’样本组。
V3C轨道中的样本可以包括非ACL单元或ACL单元。
具有样本条目类型v3sb的V3C轨道
具有样本条目类型v3sb的V3C轨道可以包含适用于一个或更多个阿特拉斯拼块轨道的公共阿特拉斯参数集和SEI消息。
样本条目类型v3sb可以指示在V3C比特流中存在一个阿特拉斯比特流。在这种情况下,阿特拉斯比特流可以被划分成一个或更多个阿特拉斯拼块轨道并存储在其中。
VPS可以包括在具有样本条目类型v3sb的V3C轨道的样本条目中。具体地,阿特拉斯参数集(ASPS、AAPS、AFPS)和SEI消息可以包括在setupUnit阵列中。V3C单元头盒可以存在于V3C轨道的样本条目中。
V3C轨道中的样本可以包括非ACL单元。非ACL单元可以包括在应用一个或更多个阿特拉斯拼块轨道的样本时可以共同应用的阿特拉斯参数集和SEI消息。
具有样本条目类型v3cb的V3C轨道
具有样本条目类型v3cb的V3C轨道可以包括适用于一个或更多个V3C轨道的参数集、阿特拉斯参数集和SEI消息。
样本条目类型v3cb可以指示在V3C比特流中存在多个阿特拉斯比特流。在这种情况下,每个阿特拉斯比特流可以被划分并存储在每个V3C轨道中。
VPS可以包括在V3C轨道的样本条目中。具体地,可以共同应用于阿特拉斯比特流的阿特拉斯参数集(ASPS、AAPS、AFPS)和SEI消息可以在setupUnit阵列中。
V3C轨道中的样本可以包括非ACL单元。非ACL单元可以包括在应用一个或更多个V3C轨道样本时可以共同应用的阿特拉斯参数集和SEI消息。
具有样本条目类型v3a1的V3C轨道
样本条目类型v3a1可以指示在V3C比特流中存在多个阿特拉斯比特流。
V3C单元头盒可以存在于V3C轨道的样本条目中。此外,与包括在V3C单元头盒中的阿特拉斯ID相同的阿特拉斯参数集(ASPS、AAPS、AFPS)和SEI消息可以包括在样本条目的setupUnit阵列中。
可以存在包含可以应用于V3C轨道中的一个或更多个样本的阿特拉斯参数集和SEI的‘vaps’样本组。
V3C轨道中的样本可以包括非ACL单元或ACL单元。
具有样本条目类型v3ab的V3C轨道
具有样本条目类型v3ab的V3C轨道可以包括适用于一个或更多个阿特拉斯拼块轨道的公共阿特拉斯参数集和SEI消息。
样本条目类型v3b可以指示在V3C比特流中存在一个阿特拉斯比特流。在这种情况下,可以划分与相同阿特拉斯id相关联的阿特拉斯比特流并将其存储在一个或更多个阿特拉斯拼块轨道中。
V3C单元头盒可以存在于V3C轨道的样本条目中。另外,与包括在V3C单元头盒中的阿特拉斯ID相同的阿特拉斯参数集(ASPS、AAPS、AFPS)和SEI消息可以包括在样本条目的setupUnit阵列中。
V3C轨道中的样本可以包括非ACL单元。非ACL单元可以包括在应用一个或更多个阿特拉斯拼块轨道的样本时可以共同应用的阿特拉斯参数集和SEI消息。
具有样本条目类型v3t1的V3C轨道
具有样本条目类型v3t1的V3C轨道称为V3C阿特拉斯拼块轨道(或阿特拉斯拼块轨道)。ACL单元可以包含在V3C阿特拉斯拼块轨道中的样本中。此外,V3C阿特拉斯拼块轨道的样本条目不包含VPS、阿特拉斯参数集(ASPS、AAPS、AFPS)、SEI消息和V3C单元头盒中的任一者。
根据实施方式,V3C轨道的样本条目的语法结构可以如下定义。
样本条目类型:‘v3c1’、‘v3cg’、‘v3sb’、‘v3cb’、‘v3ab’、‘v3a1’或‘v3ag’
容器:SampleDescriptionBox
强制性:‘v3c1’或‘v3cg’或‘v3sb’样本条目是强制的。
数量:可以存在一个或更多个样本条目。
根据实施方式,V3C轨道使用扩展(或继承)具有‘v3c1’、‘v3cg’、‘v3sb’、‘v3cb’、‘v3ab’、‘v3a1’或‘v3ag’的样本条目类型的VolumetricVisualSampleEntry的V3CsampleEntry。V3C轨道不应载送属于超过一个阿特拉斯的ACL NAL单元。
根据实施方式,当V3C比特流包含单个阿特拉斯时,将不使用具有样本条目‘v3c1’、’v3sb’或’v3cg’的V3C轨道。
根据实施方式,当V3C比特流包含多个阿特拉斯时,每个阿特拉斯比特流被封装在单独的V3C轨道中。轨道中的一个轨道使用样本条目类型‘v3cb’,而其它轨道将使用样本条目类型‘v3a1’、’v3ab’或’v3ag’。在这种情况下,具有样本条目类型‘v3cb’的V3C轨道不包括任何ACL NAL单元。
在‘v3c1’样本条目下,所有阿特拉斯子比特流参数集和SEI消息在setupUnit阵列(即,样本条目)中。
在‘v3cg’和‘v3cb’样本条目下,阿特拉斯子比特流参数集和SEI消息可以存在于setupUnit阵列中或阿特拉斯子比特流中。
在‘v3a1’样本条目下,与V3C单元头盒中所指示的相同atlas_id相关联的阿特拉斯子比特流参数集可以在setupUnit阵列中。
在‘v3ag’样本条目下,与V3C单元头盒中所指示的相同atlas_id相关联的阿特拉斯子比特流参数集可以存在于setupUnit阵列中或阿特拉斯子比特流中。
根据实施方式,V3C样本条目包含V-PCC配置盒(VPCCConfigurationBox)和V-PCC单元头盒(VPCCUnitHeaderBox)。VPCCConfigurationBox包含VPCCDecoderConfigurationRecord。
aligned(8)class V3CSampleEntry()extends VolumetricVisualSampleEntry(‘vpc1’){
VPCCConfigurationBox config;
VPCCUnitHeaderBox unit_header;
}
接下来,将描述V3C阿特拉斯拼块轨道。
根据实施方式的V3C阿特拉斯拼块轨道的样本条目的语法结构可以如下定义。
样本条目类型:‘v3t1’
容器:SampleDescriptionBox
强制性:是
数量:可以存在一个或更多个样本条目
V3C阿特拉斯拼块轨道的样本条目类型为‘v3t1’。
根据实施方式,V3C阿特拉斯拼块轨道使用扩展(或继承)具有‘v3t1’的样本条目类型的VolumetricVisualSampleEntry的AtlasTileSampleEntry。V3C阿特拉斯拼块轨道仅包含属于相同阿特拉斯的ACL NAL单元。V3C阿特拉斯拼块轨道包含至少一个阿特拉斯拼块的ACL NAL单元。
根据实施方式,可以如下定义具有样本条目类型‘v3t1’的V3C阿特拉斯拼块轨道的样本条目的语法(AtlasTileSample Entry)。
aligned(8)class AtlasTileSampleEntry()extendsVolumetricVisualSampleEntry(‘v3t1’){
unsigned int(8)configurationVersion=1;
unsigned int(2)lengthSizeMinusOne;
unsigned int(6)reserved=0;
unsigned int(16)num_tiles;
for(i=0;i<num_tiles;i++){
unsigned int(16)tile_id;
}
}
lengthSizeMinusOne加1指示该样本条目适用的流中的V3C样本中的nalUnit.ssnu_nal_unit_size字段的以字节为单位的长度。例如,1字节的大小可以由值0指示。该字段的值等于用于阿特拉斯子流的sample_stream_nal_header()中的ssnh_unit_size_precision_bytes_minus1。
num_tile字段指示包括在该轨道中的阿特拉斯拼块的数量。
tile_id字段指定存在于该轨道中的阿特拉斯的拼块地址(或拼块标识符)。例如,可以发信号通知关于第i阿特拉斯拼块的标识信息。
根据实施方式,基础类VolumetricVisualSampleEntry中的compressorname指示与推荐的阿特拉斯拼块的值一起使用的压缩器的名称。
根据实施方式,可以如下定义具有样本条目类型的‘v3t1’的V3C阿特拉斯拼块轨道的样本(VPCCSample)的语法。
aligned(8)class VPCCSample{
unsigned int PointCloudPictureLength=sample_size;//size of sample(e.g.,from SampleSizeBox)
for(i=0;i<PointCloudPictureLength;){
sample_stream_nal_unit nalUnit;
i+=(VPCCDecoderConfigurationRecord.lengthSizeMinusOne+1)+nalUnit.ssnu_nal_unit_size;
}
}
根据实施方式,V3C轨道或V3C阿特拉斯拼块轨道中的每个样本与单个编码的阿特拉斯访问单元相对应。根据实施方式,各种分量轨道中的与该帧相对应的样本将具有与V-PCC轨道样本相同的组成时间。
根据实施方式,V3C轨道(或称为V-PCC轨道)或V3C阿特拉斯拼块轨道中的每个样本与单个编码的阿特拉斯访问单元(或称为点云帧)相对应。根据实施方式,各种分量轨道中的与该帧相对应的样本将具有与V-PCC轨道样本相同的组成时间。每个V-PCC样本应当仅包含类型为VPCC_AD的一个V-PCC单元有效载荷。这里,V-PCC单元有效载荷可以包括一个或更多个阿特拉斯NAL单元。在上述语法中,nalUnit包含NAL单元样本流格式的单个阿特拉斯NAL单元。
接下来,将描述用于发送与一个或更多个对象相关的一个或更多个阿特拉斯拼块的轨道结构。
例如,假设点云内容(或点云数据)被划分为三个对象(对象#1、对象#2、对象#3),并且阿特拉斯帧由五个阿特拉斯拼块(阿特拉斯拼块#1、阿特拉斯拼块#2、阿特拉斯拼块#3、阿特拉斯拼块#4、阿特拉斯拼块#5)组成,其中,对象#1与阿特拉斯拼块#1和阿特拉斯拼块#2相关联,对象#2与阿特拉斯拼块#3相关联,并且对象#3与阿特拉斯拼块#4和阿特拉斯拼块#5相关联。
图61是示出根据实施方式的通过一个V3C轨道发送一个或更多个阿特拉斯拼块的示例的图。
例如,如果一个阿特拉斯帧由5个阿特拉斯拼块(阿特拉斯拼块#1、阿特拉斯拼块#2、阿特拉斯拼块#3、阿特拉斯拼块#4和阿特拉斯拼块#5)组成,则5个阿特拉斯拼块(阿特拉斯拼块#1、阿特拉斯拼块#2、阿特拉斯拼块#3、阿特拉斯拼块#4和阿特拉斯拼块#5)可以在具有样本条目类型‘v3c1’的V3C轨道(或称为V3C阿特拉斯轨道)中存储和发送。
图62是示出根据实施方式的通过多个V3C轨道发送一个或更多个阿特拉斯拼块的示例的图。
例如,与对象#1相关联的阿特拉斯拼块#1和阿特拉斯拼块#2可以在具有样本条目类型‘v3t1’的第一V3C轨道(或V3C阿特拉斯拼块轨道)中存储和发送,与对象#2相关联的阿特拉斯拼块#3可以在具有样本条目类型‘v3t1’的第二V3C轨道(或称为V3C阿特拉斯拼块轨道)中存储和发送,并且与对象#3相关联的阿特拉斯拼块#4和阿特拉斯拼块#5可以在具有样本条目类型‘v3t1’的第三V3C轨道(或称为V3C阿特拉斯拼块轨道)中存储和发送。
图63是示出根据实施方式的用于存储具有单个阿特拉斯拼块的单个阿特拉斯(或单个阿特拉斯比特流)的示例性轨道结构的图。
当V3C比特流包含一个阿特拉斯比特流时,可以存在存储阿特拉斯比特流的一个或更多个轨道(称为V3C轨道或V3C阿特拉斯轨道)和分别存储点云的占用视频、几何视频和属性视频的多个轨道(称为V3C分量轨道)。图63示出存在一个V3C轨道、占用视频分量轨道、几何视频分量轨道和属性视频分量轨道的情况。
根据实施方式,存储阿特拉斯比特流的一个或更多个轨道是具有样本条目类型‘v3c1’或’v3cg’的V3C轨道。这些V3C轨道可以称为V3C阿特拉斯轨道。
在图63的情况下,部分访问可以仅由渲染器执行。在实施方式中,渲染器可以基于SEI消息来执行基于对象的选择渲染。
图64是示出根据实施方式的用于存储具有多个阿特拉斯拼块的单个阿特拉斯(或单个阿特拉斯比特流)的示例性轨道结构的图。
具体地,在一个文件中,一个阿特拉斯比特流可以被划分为一个V3C轨道和一个或更多个V3C阿特拉斯拼块轨道并存储在其中。V3C阿特拉斯拼块轨道可以包括诸如一个或更多个阿特拉斯拼块的阿特拉斯子比特流。在图64中,具有样本条目类型‘v3sb’的V3C轨道可以称为‘v3sb’V3C轨道或V3C阿特拉斯轨道。‘v3sb’V3C轨道可以包括样本条目、样本、样本组中的被包括在V3C阿特拉斯拼块轨道中的阿特拉斯数据和阿特拉斯参数集以及SEI等。当包括在V3C阿特拉斯拼块轨道中的阿特拉斯数据被解码或使用时,可以共同应用包括在‘v3sb’V3C轨道的样本条目、样本组或样本中的阿特拉斯参数集和SEI消息。‘v3sb’V3C轨道和V3C阿特拉斯拼块轨道可以使用轨道参考等来发信号通知关系(或映射关系)。稍后将描述‘v3sb’V3C轨道与V3C阿特拉斯拼块轨道之间的链接的轨道参考。另外,占用视频分量轨道、几何视频分量轨道和属性视频分量轨道可以基于每V3C阿特拉斯拼块轨道来引用。
图65是示出根据实施方式的用于存储多个阿特拉斯(或多个阿特拉斯比特流)的示例性轨道结构的图。
根据实施方式,一个或更多个阿特拉斯比特流可以包括在一个V3C比特流中以支持3DOF+服务等。在这种情况下,如图65所示,可以将与相同阿特拉斯标识符相关联的阿特拉斯比特流存储在每个V3C轨道中。在图65中,具有样本条目类型‘v3cb’的V3C轨道可以称为‘v3cb’V3C轨道或V3C阿特拉斯轨道,并且具有样本条目类型‘v3a1’的V3C轨道可以称为‘v3a1’V3C轨道或V3C阿特拉斯轨道。另外,可以在一个或更多个阿特拉斯比特流中共同使用的SEI消息、阿特拉斯参数集和参数集(VPS等)可以包括在‘v3cb’V3C轨道的样本条目或样本中。此外,多个阿特拉斯比特流可以分别包括在多个‘v3a1’V3C轨道中。根据实施方式,当包括在‘v3a1’V3C轨道中的阿特拉斯数据被解码或使用时,可以共同应用参数集、阿特拉斯参数集和SEI消息(例如,包含在‘v3cb’V3C轨道的样本条目、样本组或样本中的VPS)。‘v3cb’V3C轨道和包括每个阿特拉斯比特流的‘v3a1’V3C轨道可以使用轨道参考等来发信号通知关系(或映射关系)。后面将描述‘v3cb’V3C轨道与‘v3a1’V3C轨道之间的链接的轨道参考。
图66是示出根据实施方式的用于存储多个阿特拉斯(或多个阿特拉斯比特流)的示例性轨道结构的图。
根据实施方式,一个或更多个阿特拉斯比特流可以包括在一个V3C比特流中以支持3DOF+服务等。在这种情况下,如图66所示,可以将与相同阿特拉斯标识符相关联的阿特拉斯比特流划分并存储在一个V3C轨道和一个或更多个V3C阿特拉斯拼块轨道中。在图66中,具有样本条目类型‘v3cb’的V3C轨道可以称为‘v3cb’V3C轨道或V3C阿特拉斯轨道,并且具有样本条目类型‘v3ab’的V3C轨道可以称为‘v3ab’V3C轨道或V3C阿特拉斯轨道。另外,可以在一个或更多个阿特拉斯比特流中共同使用的SEI消息、阿特拉斯参数集和参数集(VPS等)可以包括在‘v3cb’V3C轨道的样本条目或样本中。根据实施方式,当包括在‘v3ab’V3C轨道中的阿特拉斯数据被解码或使用时,可以共同应用参数集、阿特拉斯参数集和SEI消息(例如,包含在‘v3cb’V3C轨道的样本条目、样本组或样本中的VPS)。根据实施方式,‘v3ab’V3C轨道可以在样本条目、样本、样本组等中包括在V3C阿特拉斯拼块轨道中的SEI消息、阿特拉斯数据和阿特拉斯参数集。当包括在V3C阿特拉斯拼块轨道中的阿特拉斯数据被解码或使用时,可以共同应用包括在‘v3ab’V3C轨道的样本条目、样本组或样本中SEI消息和阿特拉斯参数集。‘v3cb’V3C轨道和‘v3ab’V3C轨道可以使用轨道参考等来发信号通知关系。‘v3ab’V3C轨道和V3C阿特拉斯拼块轨道可以使用轨道参考等来发信号通知关系。稍后将描述‘v3cb’V3C轨道与‘v3ab’V3C轨道之间的链接的轨道参考和/或‘v3ab’V3C轨道与V3C阿特拉斯拼块轨道之间的链接的轨道参考。
根据实施方式的V-PCC轨道中的同步样本包括IRAP(帧内随机存取点)编码的阿特拉斯访问单元。如果必要,则可以在同步样本中重复阿特拉斯参数集(例如,ASPS、AAPS、AFPS)和SEI消息以允许随机访问。
接下来,将描述视频编码的V-PCC分量轨道。
在不重构点云的情况下,播放侧显示从属性轨道、几何轨道或占用图轨道解码的帧可能没有意义,因此可以针对这些视频编码的轨道定义受限的视频方案类型。
在下文中,将描述受限制的视频方案。
V-PCC分量视频轨道可以在文件中表示为受限制的视频。V-PCC分量视频轨道可以由受限制的视频样本条目的RestrictedSchemeInfoBox的SchemeTypeBox的scheme_type字段中的‘pccv’的值标识。
对用于对属性V-PCC分量、几何V-PCC分量和占用图V-PCC分量进行编码的视频编解码器没有限制。此外,可以使用不同视频编解码器来编码这些分量。
根据实施方式的方案信息(SchemeInformationBox)可以存在并且包含VPCCUnitHeaderBox。
在下文中,将参考V3C(或称为V-PCC)轨道、V3C阿特拉斯轨道、V3C阿特拉斯拼块轨道和V3C分量轨道给出描述。
为了将V3C轨道链接到其它V3C轨道,将V3C轨道链接到V3C阿特拉斯轨道,将V3C阿特拉斯轨道链接到其它V3C阿特拉斯轨道,将V3C阿特拉斯轨道链接到V3C阿特拉斯拼块轨道,或者将V3C轨道链接到V3C分量视频轨道,需要轨道参考信息(或称为链接信息)。根据实施方式,轨道参考信息可以包括指定待链接的轨道的track_ID或track_ID的阵列。根据实施方式,轨道参考信息可以包含在对应轨道的TrackBox中的TrackReferenceBox中。
图67是示出根据实施方式的样本条目类型与轨道参考之间的关系的示例的表。
例如,轨道参考类型‘v3cs’指示所参考的轨道是V3C阿特拉斯轨道,轨道参考类型‘v3ct’指示所参考的轨道是V3C阿特拉斯拼块轨道。此外,轨道参考类型‘v3vo’指示所参考的轨道是载送占用数据的V3C视频分量轨道,轨道参考类型‘v3vg’指示所参考的轨道是载送几何数据的V3C视频分量轨道,并且轨道参考类型‘v3va’指示所参考的轨道是载送属性数据的V3C视频分量轨道。
参照图63至图66作为示例,为了将具有样本条目类型‘v3cb’的V3C轨道(或称为V3C阿特拉斯轨道)与具有样本条目类型‘v3a1’、‘v3ag’、‘v3c1’、‘v3cg’或‘v3ab’的V3C轨道(或称为V3C阿特拉斯轨道)链接,使用‘v3cs’轨道参考。也就是说,这些轨道参考类型的4CC是‘v3cs’。此外,为了将具有样本条目类型‘v3sb’、‘v3ab’、‘v3c1’、‘v3cg’、‘v3c1’或‘v3cg’的V3C轨道(或称为V3C阿特拉斯轨道)与具有样本条目类型‘v3t1’的V3C阿特拉斯拼块轨道链接,使用‘v3ct’轨道参考。也就是说,这些轨道参考类型的4CC是‘v3ct’。
此外,V3C轨道、V3C阿特拉斯轨道和V3C阿特拉斯拼块轨道可以分别链接到V3C分量视频轨道。
根据实施方式,为了将具有样本条目类型‘v3c1’、‘v3cg’、‘v3a1’或‘v3ag’的V3C轨道(或称为V3C阿特拉斯轨道)或具有样本条目类型‘v3t1’的V3C阿特拉斯拼块轨道链接到V3C分量视频轨道,使用轨道参考工具。换言之,可以将一个或更多个TrackReferenceTypeBoxes添加到V3C轨道或V3C阿特拉斯拼块轨道的TrackBox内的TrackReferenceBox,每个分量一个。TrackReferenceTypeBox将包含指定V3C轨道参考的视频轨道的track_ID的阵列。TrackReferenceTypeBox的reference_type标识分量的类型(例如,几何或属性或占用图)。这些轨道参考类型的4CC是:
‘v3vo’:参考轨道包含视频编码的占用图V3C(或V-PCC)分量;
‘v3vg’:参考轨道包含视频编码的几何V3C(或V-PCC)分量;
‘v3va’:参考轨道包含视频编码的属性V3C(或V-PCC)分量。
接下来,下面描述V-PCC比特流(或V3C比特流)的单个轨道容器。
V-PCC数据的单轨道封装需要V-PCC编码的基本比特流由单轨道声明来表示。
在V-PCC编码比特流的简单ISOBMFF封装的情况下,可以使用PCC数据的单轨道封装。这样的比特流可以直接存储为单个轨道而无需进一步处理。V-PCC单元头数据结构可以保存在比特流中。可以将V-PCC数据的单个轨道容器提供给媒体工作流以进行进一步处理(例如,多轨道文件生成、转码、DASH分段等)。
包含单轨道封装的V-PCC数据的ISOBMFF文件可以在FileTypeBox的compatible_brands[]列表中包含“pcst”。
根据实施方式,V-PCC比特流(或基本流)轨道的样本条目的语法结构可以定义如下
样本条目类型:“vpe1”、“vpeg”
容器:SampleDescriptionBox
强制性:“vpe1”或“vpeg”样本条目是强制性的数量:可以存在一个或更多个样本条目
V-PCC比特流轨道使用样本条目类型为“vpe1”或“vpeg”的VolumetricVisualSampleEntry。
V-PCC比特流样本条目包括VPCCConfigurationBox。
在“vpe1”样本条目下,所有的阿特拉斯序列参数集、阿特拉斯适配参数集、阿特拉斯帧参数集、V-PCC必要SEI或V-PCC非必要SEI可以在setupUnit阵列中。在“vpeg”样本条目下,阿特拉斯序列参数集、阿特拉斯帧参数集、阿特拉斯适配参数集、V-PCC必要SEI或V-PCC非必要SEI可以存在于该阵列或流中。
如下所示,V-PCC比特流轨道使用继承(或扩展)VolumetricVisualSampleEntry的V-PCC比特流样本条目(VPCCBitstreamSampleEntry)。VPCCBitstreamSampleEntry包括V-PCC配置盒(VPCCConfigurationBox)、SEI信息盒(VPCCSEIInfoBox)和/或阿特拉斯参数集盒(VPCCAPSBox)。VPCCConfigurationBox包括V-PCC解码器配置记录(VPCCDecoderConfigurationRecord)。
aligned(8)class VPCCBitStreamSampleEntry()extendsVolumetricVisualSampleEntry(‘vpe1’){
VPCCConfigurationBox config;
VPCCSEIInfoBox vpcc_sei;
VPCCAPSBox vpcc_aps;
}
vpcc_sei包含载送应用于由样本条目参考的样本的必要或非必要SEI消息的阿特拉斯NAL单元。
vpcc_aps包含载送包括阿特拉斯序列参数集、阿特拉斯帧参数集、阿特拉斯适配参数集的阿特拉斯参数集的阿特拉斯NAL单元,该阿特拉斯参数集应用于由样本条目参考的样本。
在下文中,将描述V-PCC比特流样本格式。
V-PCC比特流样本可以包含属于同一呈现时间的一个或更多个V-PCC单元(即,一个V-PCC访问单元)。样本可以是自包含的(例如,同步样本)或者可以是依赖于其它V-PCC比特流样本来进行解码。
接下来,下面描述V-PCC比特流同步样本。
V-PCC比特流同步样本可以满足以下所有条件:
-它是可独立解码的;
-在解码顺序中,在同步样本之后的样本对同步样本之前的任何样本没有任何解码依赖性;以及
-在解码顺序中出现在同步样本之后的所有样本都是可成功解码的。
接下来,下面描述V-PCC比特流子样本。
V-PCC比特流子样本是包含在V-PCC比特流样本中的V-PCC单元。
V-PCC比特流轨道在其SampleTableBox或每个MovieFragmentBoxes的TrackFragmentBox中包含一个SubSampleInformationBox,其中列出了V-PCC比特流子样本。
可以将表示子样本的V-PCC单元的32比特单元头复制到SubSampleInformationBox中的子样本条目的32比特codec_specific_parameters字段。每个子样本的V-PCC单元类型通过解析SubSampleInformationBox中的子样本条目的codec_specific_parameters字段来标识。
接下来,将描述对V3C数据的部分访问。
根据实施方式,在V3CSNalRegionsBox中发信号通知体积媒体中的静态3D空间区域以及其相应关联轨道。根据实施方式,3D空间区域彼此不重叠。根据实施方式,不随时间改变的空间区域信息称为静态空间区域信息。根据实施方式,静态空间区域信息可以包括空间区域盒(V3CSpatialRegionsBox)。
当V3CSpatialRegionsBox存在时,NALUMapEntry存在于V3C轨道中。在实施方式中,本公开使用具有以下附加规范的NALUMapEntry:
NALUMapEntry(当存在时)用于将称为groupID的标识符指派给每个阿特拉斯NAL单元;以及
NALUMapEntry(当存在时)可以或可以不链接到设定类型‘nalm’的SampleToGroupBox的grouping_type_parameter字段的样本组描述。因此,类型‘nalm’的SampleToGroupBox可以使用或可以不使用盒的版本0。
根据实施方式,当3D空间区域与轨道组、阿特拉斯拼块或对象之间的关联信息(或映射信息)不改变而在流中是静态的时,V3CSpatialRegionsBox可以存在于V3C轨道的样本条目中。
根据实施方式的V3CSpatialRegionsBox可以如下定义。
盒类型:‘vpsr’
容器:V3CSampleEntry(‘v3c1’或‘v3cg’)
强制性:否
数量:零或一
根据实施方式,可以如下定义V3CSpatialRegionsBox的语法结构。
aligned(8)class V3CSpatialRegionsBox extends FullBox(‘vpsr’,0,0){
unsigned int(16)num_regions;
for(i=0;i<num_regions;i++){
3DSpatialRegionStruct(1);
unsigned int(8)num_track_groups;
for(j=0;j<num_track_groups;j++){
unsigned int(32)track_group_id;
unsigned int(8)num_tg_atlas_tiles;
for(k=0;k<num_tg_atlas_tiles;k++){
unsigned int(16)tg_atlas_tile_id;
}
}
unsigned int(8)num_objects;
unsigned int(8)obj_idx_length;
for(j=0;j<num_objects;j++)
unsigned int(obj_idx_length*8)soi_object_idx;
unsigned int(8)num_atlas_tiles;
for(k=0;k<num_atlas_tiles;k++){
unsigned int(16)atlas_tile_id;
}
}
}
}
num_regions字段指示体积媒体中的3D空间区域的数量。
针对每个3D空间区域的V3CSpatialRegionsBox包含3DSpatialRegionStruct(),其在体积媒体中的对应空间区域上提供信息。
根据实施方式,3DSpatialRegionStruct()提供空间区域的x、y和z偏移以及关于空间区域的宽度、高度和深度的信息。在上面的“空间区域信息结构”中已经详细描述了包含在3DSpatialRegionStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
num_track_groups字段指示与3D空间区域(例如,第i 3D空间区域)相关联的轨道组的数量。
track_group_id字段指示用于标识针对关联3D空间区域(例如,第i 3D空间区域)载送V3C分量(或称为V3C分量视频)的轨道的轨道组的标识符。
num_tg_atlas_tiles字段可以指示与包括对应3D空间区域的点云数据的轨道组的轨道数据相关联的阿特拉斯拼块的数量。在这种情况下,轨道组(例如,与第i 3D空间区域相关联的第j轨道组)可以包括包含V3C分量的轨道。也就是说,它可以指示载送关联3D空间区域的V3C分量的轨道的关联轨道组的阿特拉斯拼块的数量。例如,它可以指示与和第i3D空间区域相关联的轨道组当中的第j轨道组相关联的阿特拉斯拼块的数量。
tg_atlas_tile_id指示用于标识与第j轨道组相关联的第k阿特拉斯拼块的标识符。也就是说,tg_atlas_tile_id可以指示与包括对应3D空间区域的点云数据的轨道组相关联的阿特拉斯拼块的标识符,并且可以用于区分包括对应阿特拉斯拼块数据的阿特拉斯NAL单元。这里,轨道组可以包括包含V3C分量(或称为V3C分量视频)的轨道。换句话说,tg_atlas_tile_id字段可以标识包含与载送轨道组(例如,第j轨道组)的V3C分量的轨道相关联的阿特拉斯拼块数据的阿特拉斯NAL单元。
num_objects字段指示与3D空间区域(例如,第i 3D空间区域)相关的对象的数量。例如,num_objects字段可以指示与3D空间区域相关联的轨道组中的对象的总数。
obj_idx_length字段以字节的数量指示对象索引的长度。
soi_object_idx字段可以指示如由场景对象信息SEI消息定义的每个对象索引的值。
num_atlas_tiles字段可以指示与对象(例如,第j对象)的点云数据相关联的阿特拉斯拼块的数量。例如,它可以指示与和第i 3D空间区域相关联的对象当中的第j对象相关联的阿特拉斯拼块的数量。
atlas_tile_id字段指示用于标识与第j对象相关联的第k阿特拉斯拼块的标识符。也就是说,atlas_tile_id字段可以指示与对象(例如,由soi_object_idx字段的值标识的对象)的点云数据相关联的阿特拉斯拼块的标识符。基于该字段,可以区分包含阿特拉斯拼块数据的阿特拉斯NAL单元。换言之,atlas_tile_id字段可以标识包含与对象(例如,第j对象)相关联的阿特拉斯拼块数据的阿特拉斯NAL单元。
随时间改变的空间区域信息可以称为动态空间区域信息。
如果V3C轨道包括具有样本条目类型‘dyvm’的关联定时元数据轨道,则针对由V3C轨道载送的针对体积媒体流定义的3D空间区域可以被认为是动态区域。也就是说,空间区域信息可以随时间动态改变。例如,如果在比特流的中间添加或移除对象并且样本条目中存在V3CSpatialRegionsBox,则DynamicVolumetricMetadataSample可以存在于该轨道的样本中。
根据实施方式,当单个阿特拉斯流包括在文件中时,‘v3c1’V3C轨道或‘v3sb’V3C轨道可以使用cdsc轨道参考被参考。当多个阿特拉斯比特流包括在文件中时,‘v3cb’V3C轨道、‘v3a1’V3C轨道和‘v3ab’V3C轨道可以使用cdsc轨道参考被参考。也可以使用cdsc轨道参考来参考其它轨道。另选地,可以通过cdtg轨道参考来参考包括一个或更多个轨道的轨道组。
这里,对象可以是V3C数据的一部分或全部。例如,点云数据可以被划分成一个或更多个对象。
根据实施方式,可以如下定义与特定对象(例如,样本的对象更新列表中的对象)相关的V3CObjectInformationStruct信令信息的语法结构。
aligned(8)class V3CObjectInformationStruct(){
unsigned int(8)obj_idx_length;
unsigned int(obj_idx_length*8)soi_object_idx;
bit(1)obj_spatial_region_mapping_flag;
bit(1)obj_track_group_mapping_flag;
bit(1)obj_atlas_tile_mapping_flag;
bit(1)obj_dependencies_present_flag;
bit(1)obj_bounding_box_present_flag;
bit(1)obj_priority_update_flag;
bit(1)obj_hidden_present_flag;
bit(1)obj_visibility_cone_present_flag;
bit(1)obj_collision_shape_present_flag;
bit(1)obj_point_style_present_flag;
bit(1)obj_material_id_present_flag;
if(obj_bounding_box_present_flag){
3DBoundingBoxStruct(1);
}
if(obj_spatial_region_mapping_flag){
//将对象映射到空间区域
unsigned int(8)num_spatial_regions;
for(j=0;j<num_spatial_regions;j++){
3DSpatialRegionStruct region_id[j];
}
}
if(obj_track_group_mapping_flag){
unsigned int(8)num_track_groups;
for(j=0;j<num_track_groups;j++){
unsigned int(32)track_group_id[j];
}
}
if(obj_atlas_tile_mapping_flag){
unsigned int(8)num_atlas_tiles;
for(j=0;j<num_atlas_tiles;j++){
unsigned int(32)atlas_id[j];
unsigned int(32)atlas_tile_id[j];
}
}
if(obj_hidden_present_flag){
unsigned int(1)obj_hidden_flag;
}
if(obj_visibility_cone_present_flag){
unsigned int(32)direction_x;
unsigned int(32)direction_y;
unsigned int(32)direction_z;
unsigned int(16)angle;
}
if(obj_collision_shape_present_flag){
unsigned int(16)collision_shape;
}
if(obj_material_id_present_flag){
unsigned int(16)material_id;
}
if(obj_priority_update_flag){
unsigned int(4)obj_priority_value;
}
if(obj_dependencies_present_flag){
unsigned int(8)num_obj_dependencies;
for(j=0;j<num_obj_dependencies;j++){
unsigned int(8)obj_dep_idx_length[j];
unsigned int(obj_dep_idx_length[j]*8)soi_object_idx[j];
}
}
}
obj_idx_length字段以字节数量为单位指示针对发信号通知的对象更新列表中的对象的对象索引的长度。
soi_object_idx字段指示对象索引的值。
obj_spatial_region_mapping_flag字段可以指示在针对样本的对象更新列表中的对象的该对象信息结构中是否发信号通知到空间区域的映射。例如,obj_spatial_region_mapping_flag等于0可以指示对象被映射到拼块轨道组,obj_spatial_region_mapping_flag等于1可以指示对象被映射到3D空间区域。
obj_track_group_mapping_flag字段可以指示该对象信息结构是否包含关于包含与对象相关联的数据(例如,阿特拉斯数据、V3C分量数据等)的轨道组的信息。
obj_atlas_tile_mapping_flag字段可以指示该对象信息结构是否包含与对象相关联的阿特拉斯拼块信息。
obj_depdendencies_present_flag字段可以指示对象依赖性信息是否可用于样本的对象更新列表中的对象。例如,obj_depdendencies_present_flag字段等于0指示对象不依赖于其它对象,并且obj_depdendencies_present_flag字段等于1指示对象依赖于体积媒体场景内的一个或更多个对象。
obj_bounding_box_present_flag字段可以指示3D边界框信息是否可用于样本的对象更新列表中的对象。obj_bounding_box_present_flag等于0可以指示没有针对对象给出3D边界框信息,并且obj_bounding_box_present_flag等于1可以指示存在对象的3D边界框信息。
obj_priority_update_flag字段可以指示优先级信息是否可用于样本的对象更新列表中的对象。
obj_priority_update_flag等于0可以指示不针对对象给出优先级信息,并且obj_priority_update_flag等于1可以指示存在针对对象的优先级信息。
obj_hidden_present_flag字段可以指示指示对象是否被隐藏的信息是否包括在该对象信息结构中。
obj_visibility_cone_present_flag字段可以指示关于对象的可见性锥体信息是否包括在该对象信息结构中。
obj_collision_shape_present_flag字段可以指示关于对象的碰撞(collision)形状信息是否包括在该对象信息结构中。
obj_material_id_present_flag字段可以指示关于对象的材料信息是否包括在该对象信息结构中。
根据实施方式,当obj_bounding_box_present_flag字段的值为真时,该对象信息结构包含3DBoundingBoxStruct()。
3DBoundingBoxStruct()可以包含关于对象的3D边界框信息。在上面的“3D边界框信息结构”中已经详细描述了包含在3DBoundingBoxStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
根据实施方式,当obj_spatial_region_mapping_flag字段的值为真时,该对象信息结构还可以包括num_spatial_regions字段。
num_spatial_regions字段可以指示与样本的对象更新列表中的对象相关联的3D空间区域的数量。
region_id[j]字段指示用于标识与样本的对象更新列表中的对象相关联的第j3D空间区域的标识符。根据实施方式,region_id[j]字段的值可以从3DSpatialRegionStruct()获得,上面已经详细描述了3DSpatialRegionStruct(),因此将跳过其描述。
根据实施方式,当obj_track_group_mapping_flag字段的值为真时,该对象信息结构还可以包括num_track_groups字段。
num_track_groups字段可以指示包含与对象相关联的数据(例如,阿特拉斯数据、V3C分量数据等)的轨道组的数量。
track_group_id[j]字段可以指示用于标识包含与对象相关联的数据(阿特拉斯数据、V3C分量数据等)的第j轨道组的标识符。
根据实施方式,当obj_atlas_tile_mapping_flag字段的值为真时,该对象信息结构还可以包括num_atlas_tiles字段。
num_atlas_tiles字段可以指示与对象相关联的阿特拉斯拼块的数量。
atlas_id[j]字段可以指示用于标识与对象相关联的第j阿特拉斯比特流(或称为阿特拉斯)的标识符。
atlas_tile_id[j]字段可以指示用于标识与对象相关联的第j阿特拉斯拼块的标识符。
根据实施方式,当obj_hidden_present_flag字段的值为真时,该对象信息结构还可以包括obj_hidden_flag字段。
obj_hidden_flag字段等于1可以指示对象未被渲染但处于隐藏状态。obj_hidden_flag字段等于0可以指示对象被渲染并显示。
根据实施方式,当obj_visibility_cone_present_flag字段的值为真时,对象信息结构还可以包括direction_x字段、direction_y字段、direction_z字段以及角度字段。
direction_x字段、direction_y字段和direction_z字段可以指示由与对象相关联的可见性锥体的三维空间中的x、y和z的值表示的可见性锥体的中心位置的值。
角度场可以指示施加与对象相关联的可见性锥体的角度。也就是说,它可以指示对象在由direction_x字段、direction_y字段和direction_z字段指示的位置处和/或在施加角度场的区域中非常可见。
根据实施方式,当obj_collision_shape_present_flag字段的值为真时,对象信息结构还可以包括collision_shape字段。
collision_shape字段可以指示关于对象碰撞的形状的信息。
根据实施方式,当obj_material_id_present_flag字段的值为真时,对象信息结构还可以包括material_id字段。
material_id字段可以指示材料信息或与对象相关联的标识符。
根据实施方式,当obj_priority_update_flag字段的值为真时,对象信息结构还可以包括obj_priority_value字段。
obj_priority_value字段可以指示样本的对象更新列表中的对象的优先级值。优先级值越低,对象的优先级越高。
根据实施方式,当obj_dependencies_present_flag字段的值为真时,对象信息结构还可以包括num_obj_dependencies字段。
num_obj_dependencies字段指示样本的对象更新列表中的对象所依赖的对象的数量。
obj_dep_index_length[j]字段指示样本的对象更新列表中的对象所依赖的第j对象的索引的以字节数量为单位的长度。
obj_index[j]字段指示样本的对象更新列表中的对象所依赖的第j对象的索引。
num_obj_cancelled字段可以指示该样本中的消除对象的数量。
如果上面的V3C轨道包括具有样本条目类型‘dyvm’的关联定时元数据轨道,则针对由V3C轨道载送的体积媒体流定义的3D空间区域可以被认为是动态区域。
根据实施方式,可以如下定义具有样本条目类型‘dyvm’的关联定时元数据轨道的样本条目(DynamicVolumetricMetadataSampleEntry)的语法结构。
aligned(8)class DynamicVolumetricMetadataSampleEntry extendsMetaDataSampleEntry(‘dyvm’){
V3CSpatialRegionsBox();
unsigned int(16)num_init_obj;
for(j=0;j<num_init_obj;j++)
V3CObjectInformationStruct init_obj[j];
}
}
样本条目可以包括V3CSpatialRegionsBox()。V3CSpatialRegionsBox()包含关于体积媒体中的动态3D空间区域以及其各自相关联的轨道的信息。在上面的“空间区域盒”中详细描述了包含在V3CSpatialRegionsBox()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
num_init_obj字段可以指示在该样本条目中发信号通知的对象的数量。
Init_obj[i]字段可以指示默认应用的关于对象的信息中的关于第j对象的信息。
根据实施方式,可以如下定义具有样本条目类型‘dyvm’的关联定时元数据轨道的样本(V3CVoumetricMetadataSample)的语法结构。
aligned(8)class V3CVoumetricMetadataSample(){
bit(1)region_updates_flag;
bit(1)object_updates_flag;
bit(1)object_add_flag;
bit(6)reserved=0;
if(region_updates_flag){
unsigned int(16)num_regions;
for(i=0;i<num_regions;i++){
3DSpatialRegionStruct(dimensions_included_flag);
}
}
if(object_updates_flag){
unsigned int(8)num_obj_updates;
for(i=0;i<num_obj_updates;i++){
V3CObjectInformationStruct obj_update[i];
}
unsigned int(8)num_obj_cancelled;
for(i=0;i<num_obj_cancelled;i++){
unsigned int(8)obj_idx_length;
unsigned int(obj_idx_length*8)soi_object_idx;
}
}
if(object_add_flag){
unsigned int(8)num_obj_add;
for(i=0;i<num_obj_add;i++){
V3CObjectInformationStruct obj_add[i];
}
}
}
region_updates_flag字段可以指示样本是否包括对3D空间区域的更新。
object_updates_flag字段可以指示样本是否包括对体积媒体场景对象的更新。
object_add_flag字段可以指示添加的对象信息是否存在于样本中。
根据实施方式,当region_updates_flag字段的值为真时,样本还可以包括num_regions字段。
num_regions字段指示样本中发信号通知的3D空间区域的数量。这可能不一定等于可用区域的总数。样本中仅存在位置和/或尺寸正被更新的空间区域。
3DSpatialRegionStruct()提供关于第i空间区域的信息。如果dimensions_included_flag被设置为0,则这意味着先前在先前样本中或样本条目中在具有相同3d_region_id的3DSpatialRegionStruct的先前实例中发信号通知的区域的尺寸。
根据实施方式,3DSpatialRegionStruct()提供空间区域的x、y和z偏移以及关于空间区域的宽度、高度和深度的信息。在上面的“空间区域信息结构”中已经详细描述了包含在3DSpatialRegionStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
根据实施方式,当object_updates_flag字段的值为真时,样本还可以包括num_obj_updates字段。
num_obj_updates字段可以指示在样本中更新的对象信息的数量。
obj_update[i]可以指示更新的对象信息中的第i更新的对象信息。在这种情况下,可以更新关于在样本条目中发信号通知的对象当中的与同一对象标识符相关联的对象的详细信息。由obj_update[i]发信号通知的第i更新对象信息可以从V3CObjectInformationStruct()获取。在上面的“对象信息结构”中详细描述了包含在V3CObjectInformationStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
根据实施方式,当object_add_flag字段的值为真时,样本还可以包括num_obj_add字段。
num_obj_add字段可以指示该样本中添加的对象信息的数量。
obj_add[i]可以指示添加的对象信息中的第i添加的对象信息。在obj_add[i]中发信号通知的第i添加的对象信息可以从V3CObjectInformationStruct()获取。在上面的“对象信息结构”中详细描述了包含在V3CObjectInformationStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
上面已经描述了用于动态空间区域信息的定时元数据轨道。
在下文中,将描述VPCC SEI定时元数据轨道。
根据实施方式,动态VPCC SEI定时元数据轨道指示必要SEI消息或非必要SEI消息可以随时间动态地改变。根据实施方式,VPCC SEI定时元数据轨道通过利用‘cdsc’轨道参考而链接到载送阿特拉斯子比特流或V-PCC分量比特流的相应轨道(V-PCC轨道或V-PCC比特流轨道)。
根据实施方式的具有样本条目类型‘dyse’的VPCC SEI定时元数据轨的样本条目(VPCCSEISampleEntry)的语法结构可以如下定义。
aligned(8)class VPCCSEISampleEntry extends MetadataSampleEntry(‘dyse’){
VPCCSEIInfoStruct();
}
根据实施方式的VPCC SEI定时元数据轨道的样本条目可以包括VPCCSEIInfoStruct(),其包括应用于V-PCC内容的默认SEI消息。VPCCSEIInfoStruct()包含载送随时间动态改变的必要SEI消息的阿特拉斯NAL单元和/或载送非必要SEI消息的阿特拉斯NAL单元。上文已经在“SEI信息结构”中详细描述包含在VPCCSEIInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
根据实施方式的具有样本条目类型‘dyse’的VPCC SEI定时元数据轨道的样本(VPCCSEISample)的语法结构(即,样本格式)可以如下定义。
aligned(8)class VPCCSEISample{
unsigned int(14)num_active_sei;
unsigned int(1)addl_active_sei;
for(i=0;i<num_active_sei;i++){
unsigned int(1)essential_flag;
unsigned int(16)active_sei_type;
}
if(addl_active_sei)
VPCCSEIInfoStruct();}
num_active_sei字段指示从在VPCCSEISampleEntry中发信号通知的VPCCSEIInfoStruct获取的活动SEI消息的数量。num_active_sei字段等于0指示来自样本条目的SEI消息不活动。
addl_active_sei等于1指示在样本中直接发信号通知附加活动SEI消息。addl_active_sei等于0指示在样本中不直接发信号通知附加活动SEI消息。
essential_flag字段等于1指示该SEI消息是必要SEI消息。essential_flag字段等于0指示该SEI消息是非必要SEI消息。
active_sei_type字段指示活动SEI消息的类型。也就是说,active_sei_type字段提供从当前活动的样本条目发信号通知的必要SEI消息或非必要SEI消息的类型。
VPCCSEIInfoStruct()包含在样本中直接发信号通知的附加活动SEI消息。另选地,VPCCSEIInfoStruct()可以包含载送直接在样本中发信号通知的附加活动SEI消息的阿特拉斯NAL单元。
接下来,将描述V3C对象映射信息定时元数据轨道。
根据实施方式,动态V3C对象映射信息定时元数据轨道指示对象阿特拉斯信息可以随时间动态地改变。
根据实施方式,V3C对象映射信息定时元数据轨道通过利用‘cdsc’轨道参考而链接到载送阿特拉斯子比特流或V-PCC分量比特流的相应轨道(例如,V-PCC轨道或V-PCC比特流轨道)。
根据实施方式的具有样本条目类型‘dyom’的V3C对象映射信息定时元数据轨道的样本条目(V3CObjectMappingSampleEntry)的语法结构可以如下定义。
aligned(8)class V3CObjectMappingSampleEntry extendsMetadataSampleEntry(‘dyom’){
V3CObjectMappingStruct();
}
根据实施方式,VPCC V3C对象映射信息定时元数据轨道的样本条目包含V3CObjectMappingStruct,V3CObjectMappingStruct包括应用于对应V-PCC内容的默认对象映射。已经在上文的“对象映射信息结构”中详细描述了包含在V3CObjectMappingStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
根据实施方式,可以如下定义具有样本条目类型‘dyom’的V3C对象映射信息定时元数据轨道的样本(V3CObjectMappingSample)的语法结构。
aligned(8)class V3CObjectMappingSample{
V3CObjectMappingStruct();
}
根据实施方式,当V3CObjectMappingStruct()具有在该轨道的样本条目中发信号通知的相同对象标识符时,可以更新与在样本条目中发信号通知的对象相关联的信息。
在V3CObjectMappingStruct()中,当在该轨道的样本条目中不发信号通知的对象标识符包含在轨道的样本中时,其可以为关于添加到轨道的样本的对象的关联信息。
根据其它实施方式,可以如下定义具有样本条目类型‘dyom’的V3C对象映射信息定时元数据轨道的样本(V3CObjectMappingSample)的语法结构。
aligned(8)class V3CObjectMappingSample{
unsigned int(1)num_update_object;
for(i=0;i<num_update_object;i++){
unsigned int(30)object_idx[i];
bit(1)obj_atlas_tile_mapping_flag[i];
bit(1)obj_patch_mapping_flag[i];
bit(1)obj_2d_region_mapping_flag[i];
bit(1)obj_3d_region_mapping_flag[i];
if(obj_atlas_tile_mapping_flag[i]){
unsigned int(16)num_atlas;
for(j=0;j<num_atlas;j++){
unsigned int(8)atlas_id[j];
unsigned int(8)num_atlas_tiles[j];
for(k=0;k<num_atlas_tiles[j];k++)
unsigned int(16)atlas_tile_id[j][k];
}
}
if(obj_patch_mapping_flag[i]){
unsigned int(16)num_atlas;
for(j=0;j<num_atlas;j++){
unsigned int(8)atlas_id[j];
unsigned int(8)num_patches[j];
for(k=0;k<num_patches[j];k++){
unsigned int(15)patch_id[j][k];
}
}
}
if(obj_2d_region_mapping_flag[i]){
unsigned int(8)num_2d_regions;
for(j=0;j<num_2d_regions;j++){
unsigned int(16)2d_region_id[j];
unsigned int(16)2d_region_left[j];
unsigned int(16)2d_region_top[j];
unsigned int(16)2d_region_width[j];
unsigned int(16)2d_region_height[j];
}
}
if(obj_3d_region_mapping_flag[i]){
unsigned int(8)num_3d_regions;
for(j=0;j<num_3d_regions;j++){
3DSpatialRegionStruct 3d_region[j];
}
}
}
unsigned int(1)add_object_flag;
if(add_object_flag)
V3CObjectMappingStruct();
}
num_update_object字段可以指示在该轨道的样本条目中发信号通知的对象信息中更新的对象的数量。
object_idx[i]字段指示用于标识更新的对象当中的第i对象的标识符。
obj_atlas_tile_mapping_flag[i]字段可以指示与更新的对象当中的第i对象相关联的阿特拉斯拼块信息是否包含在该样本中。
obj_patch_mapping_flag[i]字段可以指示与更新的对象当中的第i对象相关联的阿特拉斯补片信息是否包含在样本中。
obj_2d_region_mapping_flag[i]字段可以指示与更新的对象当中的第i对象相关联的阿特拉斯帧中的2D区域信息是否包含在样本中。
obj_3d_region_mapping_flag[i]字段可以指示与更新的对象当中的第i对象相关联的3D区域信息是否包含在样本中。
根据实施方式,当obj_atlas_tile_mapping_flag[i]字段的值为真时,样本还可以包括num_atlas字段。
num_atlas字段指示与更新的对象当中的第i对象相关联的阿特拉斯子比特流(或称为阿特拉斯)的数量。
atlas_id[j]字段指示用于标识与第i对象相关联的阿特拉斯子比特流当中的第j阿特拉斯子比特流的标识符。
num_atlas_tile[j]字段可以指示与第i对象相关联的第j阿特拉斯子比特流中的阿特拉斯拼块的数量。
atlas_tile_id[j][k]字段指示用于标识与第i对象相关联的第j阿特拉斯子比特流中的第k阿特拉斯拼块的标识符。
根据实施方式,当obj_patch_mapping_flag[i]字段的值为真时,样本还可以包括num_atlas字段。
num_atlas字段指示与更新的对象当中的第i对象相关联的阿特拉斯子比特流(或称为阿特拉斯)的数量。
atlas_id[j]字段指示用于标识与第i对象相关联的阿特拉斯子比特流当中的第j阿特拉斯子比特流的标识符。
num_patches[j]字段可以指示与第i对象相关联的第j阿特拉斯子比特流中的阿特拉斯补片的数量。
patch_id[j][k]字段指示用于标识与第i对象相关联的第j阿特拉斯子比特流中的第k阿特拉斯补片的标识符。
根据实施方式,当obj_2d_region_mapping_flag[i]字段的值为真时,样本还可以包括num_2d_regions字段。
num_2d_regions字段可以指示与第i对象相关联的阿特拉斯帧中的2D区域信息的数量。
2d_region_id[j]字段指示用于标识与第i对象相关联的阿特拉斯帧中的第j 2D区域信息的标识符。
2d_region_left[j]字段指示与第i对象相关联的阿特拉斯帧中的第j 2D区域信息的左侧信息。
2d_region_top[j]字段指示与第i对象相关联的阿特拉斯帧中的第j 2D区域信息的顶部信息。
2d_region_width[j]字段指示关于与第i对象相关联的阿特拉斯帧中的第j 2D区域信息的宽度信息。
2d_region_height[j]字段指示关于与第i对象相关联的阿特拉斯帧中的第j 2D区域信息的高度信息。
根据实施方式,当obj_3d_region_mapping_flag[i]字段的值为真时,样本还可以包括num_3d_regions字段。
num_3d_regions字段指示与第i对象相关的3D区域信息的数量。
3d_region[j]字段指示与第i对象相关的第j 3D区域信息。上文已经在“3D空间区域信息结构(3DSpatialRegionStruct)”中详细描述了3D区域信息,因此将跳过3D区域信息的详细描述以避免冗余描述。
add_object_flag字段可以指示除了在轨道的样本条目中发信号通知的对象信息之外是否在该轨道的样本中发信号通知附加对象信息。例如,add_object_flag等于1指示可以在当前样本中以V3CObjectMappingStruct()的形式发信号通知附加对象映射信息。已经在上文的“对象映射信息结构”中详细描述了包含在V3CObjectMappingStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
接下来,将描述V3C对象阿特拉斯信息定时元数据轨道。
根据实施方式,动态V3C对象阿特拉斯信息定时元数据轨道指示对象阿特拉斯信息可以随时间动态地改变。
根据实施方式,V3C对象阿特拉斯信息定时元数据轨道通过利用‘cdsc’轨道参考链接到载送阿特拉斯子比特流或V-PCC分量比特流的相应轨道(例如,V-PCC轨道或V-PCC比特流轨道)。
根据实施方式,可以如下定义具有样本条目类型‘dyoi’的V3C对象阿特拉斯信息定时元数据轨道的样本条目(V3CObjectAtlasSampleEntry)的语法结构。
aligned(8)class V3CObjectAtlasSampleEntry extends MetadataSampleEntry(‘dyoi’){
V3CObjAtlasIInfoStruct();
}
根据实施方式,V3C对象阿特拉斯信息定时元数据轨道的样本条目包含V3CObjAtlasIInfoStruct(),V3CObjAtlasIInfoStruct()包括应用于对应V-PCC内容的默认对象阿特拉斯关联信息。已经在上面的“对象阿特拉斯信息结构”中详细描述了包含在V3CObjAtlasIInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
根据实施方式,可以如下定义具有样本条目类型‘dyoi’的V3C对象阿特拉斯信息定时元数据轨道的样本(V3CObjectAtlasSample)的语法结构。
aligned(8)class V3CObjectAtlasSample{
V3CObjAtlasIInfoStruct();
}
当V3CObjAtlasIInfoStruct()具有在该轨道的样本条目中发信号通知的相同对象标识符时,可以通过轨道的样本来更新关于与在该轨道的样本条目中发信号通知的阿特拉斯相关联的信息。
V3CObjAtlasIInfoStruct()可以发信号通知与在该轨道的样本条目中未发信号通知的对象标识符相关联的阿特拉斯比特流的标识符。
根据其它实施方式,可以如下定义具有样本条目类型‘dyoi’的V3C对象阿特拉斯信息定时元数据轨道的样本(V3CObjectAtlasSample)的语法结构。
aligned(8)class V3CObjectAtlasSample{
unsigned int(1)num_update_object;
for(i=0;i<num_update_object;i++){
unsigned int(30)object_idx[i];
unsigned int(1)atlas_update_flag;
unsigned int(1)atlas_tile_update_flag;
if(atlas_update_flag||atlas_tile_update_flag){
unsigned int(16)num_atlases[i];
for(j=0;j<num_atlases;;j++){
unsigned int(8)atlas_id[i][j];
unsigned int(8)num_atlas_tiles[i][j];
for(k=0;k<num_atlas_tiles[j];k++)
unsigned(16)atlas_tile_id[i][j][k];
}
}
}
unsigned int(1)add_object_flag;
if(add_object_flag)
V3CObjAtlasIInfoStruct();
}
num_update_object字段可以指示在该轨道的样本条目中发信号通知的对象信息中更新的对象的数量。
object_idx[i]字段指示用于标识更新的对象当中的第i对象的标识符。
atlas_update_flag字段指示是否在该样本中更新与第i对象相关联的阿特拉斯流的标识符。
atlas_tile_update_flag字段指示是否在该样本中更新与第i对象相关联的阿特拉斯拼块的标识符。
根据实施方式,当atlas_update_flag字段和atlas_tile_update_flag字段的值都为真时,样本还可以包括num_atlas[i]字段。
num_atlas[i]字段可以指示与第i对象相关联的阿特拉斯比特流(或阿特拉斯)的数量。
atlas_id[i][j]字段指示用于标识与第i对象相关联的第j阿特拉斯比特流的标识符。
num_atlas_tiles[i][j]字段可以指示与第i对象相关联的第j阿特拉斯比特流中的阿特拉斯拼块的数量。
atlas_tile_id[i][j][k]字段指示用于标识与第i对象相关联的第j阿特拉斯比特流中的第k阿特拉斯拼块的标识符。
add_object_flag字段可以指示除了在轨道的样本条目中发信号通知的对象信息之外是否在该轨道的样本中发信号通知附加对象信息。例如,add_object_flag等于1指示可以在当前样本中以V3CObjAtlasIInfoStruct()的形式发信号通知附加对象阿特拉斯信息。已经在上面的“对象阿特拉斯信息结构”中详细描述了包含在V3CObjAtlasIInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
在根据实施方式的接收装置中,点云数据可以由图1的渲染器10009、图19的点云渲染器19007、图20的渲染器20009或图22的点云渲染器22004渲染。根据实施方式,点云数据可以基于元数据在3D空间中渲染。用户可以通过VR/AR显示器或通用显示器观看渲染结果的全部或部分。根据实施方式,点云数据可以基于前述的空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息和必要或非必要SEI消息来渲染。可以根据变化的属性通过样本条目、样本组、轨道组、实体组或单独的元数据轨道发送/接收空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息以及必要或非必SEI消息。
根据实施方式的接收装置的点云视频解码器基于空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息、必要或非必要SEI消息高效地从文件中仅提取特定区域的媒体数据,或者可以对其进行解码。根据实施方式的发送装置的点云视频编码器可以基于空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息和必要或非必要SEI消息仅对特定区域的媒体数据进行编码,或者可以将编码的媒体数据封装到文件中并发送。
根据实施方式,发送装置的文件/片段封装器(例如,图1的文件/片段封装模块、图4的复用器、图18的复用器、图20的文件/片段封装器或图21的文件/片段封装器)可以基于空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息和必要或非必要SEI消息将所有点云数据封装到文件/片段中或者将点云数据的一部分封装到文件/片段中。
根据实施方式,接收装置的文件/片段解封装器(例如,图1的文件/片段解封装模块、图16的解复用器、图19的解复用器以及图20的文件/片段解封装或图22的文件/片段解封装器)可以基于空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息以及必要或非必要SEI消息对包含所有点云数据的文件进行解封装或对仅包含点云数据的一部分的文件进行解封装。
上文已经详细描述了空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息以及必要或非必要SEI消息,因此将跳过其描述。
根据实施方式,空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息和必要或非必要SEI消息可以由发送装置的文件/片段封装器、元数据编码器、点云预处理器或视频/图像编码器生成/编码,并且由接收装置的文件/片段解封装器、元数据解码器、视频/图像解码器22001和22002或点云后处理器获取/解码。
根据实施方式,发送装置的文件/片段封装器可以生成空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息和必要或非必要SEI消息,并且根据改变的程度将其存储在文件中的轨道或图像项目中。
根据实施方式的接收装置的文件/片段解封装器可以从文件中的轨道或图像项目获取空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息以及必要或非必要SEI消息,并且可以基于此高效地提取文件中的轨道数据或图像数据,并且对所提取的数据进行解码和后处理。
接下来,下面描述非定时V-PCC数据的载送。
图68是示出根据实施方式的用于封装非定时V-PCC数据的示例性结构的图。
根据实施方式的非定时V-PCC数据可以作为图像项目存储在文件中。
根据实施方式,定义称为V-PCC项目和V-PCC单元项目的两种项目类型用于封装非定时V-PCC数据。
根据实施方式,新的处置器类型4CC码'vpcc'被定义并存储在MetaBox的HandlerBox中,以指示V-PCC项目、V-PCC单元项目和其它V-PCC编码的内容呈现信息。
V-PCC项目是表示可独立解码的V-PCC访问单元的项目。
根据实施方式,新的处置器类型4CC码'vpcc'被定义并存储在MetaBox的HandlerBox中,以便指示V-PCC项目的存在。根据实施方式,V-PCC项目可以存储阿特拉斯子比特流的V-PCC单元有效载荷。
如果存在PrimaryItemBox,则设置该盒中的item_id以指示V-PCC项目。
根据实施方式的V-PCC单元项目是表示V-PCC单元数据的项目。根据实施方式,V-PCC单元项目可以存储占用、几何和属性视频数据单元的V-PCC单元有效载荷。
根据实施方式的V-PCC单元项目应存储仅一个V-PCC访问单元相关数据。
根据实施方式,可以根据用于编码对应视频数据单元的编解码器来设置用于V-PCC单元项目的项目类型。
根据实施方式,V-PCC单元项目可以与对应的V-PCC单元头项目属性和编解码器特定配置项目属性相关联。
根据实施方式,V-PCC单元项目可以被标记为隐藏项目。这是因为独立地显示是没有意义的。
根据实施方式,为了指示V-PCC项目和V-PCC单元项目之间的关系,定义了具有4CC码“pcco”、“pccg”和“pcca”的三个新项目参考类型。根据实施方式的项目参考被定义为“从”V-PCC项目“到”相关的V-PCC单元项目。
根据实施方式的项目参考类型的4CC码如下:
在类型“pcco”中,参考的V-PCC单元项目包含占用视频数据单元。
在类型“pccg”中,参考的V-PCC单元项目包含几何视频数据单元。
在类型“pcca”中,参考的V-PCC单元项目包含属性视频数据单元。
接下来,下面描述V-PCC相关项目属性。
根据实施方式,描述性项目属性被定义为分别载送V-PCC参数集信息和V-PCC单元头信息:
以下是V-PCC配置项目属性的语法结构的示例。
盒类型:'vpcp'
属性类型:描述性项目属性
容器:ItemPropertyContainerBox
强制性(每个项目):是,对于“vpci”类型的V-PCC项目
数量(每个项目):一个或更多个,对于“vpci”类型的V-PCC项目
根据实施方式,V-PCC参数集被存储为描述性项目属性并且与V-PCC项目相关联。
根据实施方式,对于'vpcp'项目属性,essential被设置为1。
aligned(8)类vpcc_unit_payload_struct(){
unsigned int(16)vpcc_unit_payload_size;
vpcc_unit_payload();
}
vpcc_unit_payload_size字段指定vpcc_unit_paylod()大小(以字节为单位)。
vpcc_unit_paylod()包括类型为VPCC_VPS的V-PCC单元。
aligned(8)类VPCCConfigurationProperty extends ItemProperty('vpcc'){
vpcc_unit_payload_Struct()[];
}
以下是V-PCC单元头项目属性的语法结构的示例。
盒类型:'vunt'
属性类型:描述性项目属性
容器:ItemPropertyContainerBox
强制性(每个项目):是,对于“vpci”类型的V-PCC项目和V-PCC单元项目数量(每个项目):一个
根据实施方式,V-PCC单元头被存储为描述性项目属性并且与V-PCC项目和V-PCC单元项目相关联。
根据实施方式,对于'vunt'项目属性,essential被设置为1。
aligned(8)class VPCCUnitHeaderProperty()extends ItemFullProperty('vunt',version=0,0){
vpcc_unit_header();
}
根据实施方式,V-PCC SEI项目属性可以如下定义。
盒类型:‘vsei’
属性类型:描述性项目属性
容器:ItemPropertyContainerBox
强制性(每个项目):无
数量(每个项目):一个
根据实施方式,具有等于‘vsei’的盒类型值的V-PCC SEI属性信息(VPCCSEItemProperty)可以包括在项目属性容器盒(ItemPropertyContainerBox)中。
根据实施方式,VVPCCSEIItemProperty的语法可以如下定义。
aligned(8)class VPCCSEIItemProperty()extends ItemFullProperty(‘vsei’,version=0,0){
VPCCSEIInfoStruct();
}
根据实施方式,VPCCSEIInfoStruct()包含与该V-PCC项目相关联的必要SEI消息或非必要SEI消息,并存储为项目属性。也就是说,VPCCSEIInfoStruct()与V-PCC项目和V-PCC单元项目相关联。在另一实施方式中,VPCCSEIInfoStruct()可以包含载送与该V-PCC项目相关联的必要或非必要SEI消息的阿特拉斯NAL单元。上文已经在“SEI信息结构”中详细描述了包含在VPCCSEIInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
根据实施方式,V-PCC对象映射项目属性可以如下定义。
盒类型:‘dyom’
属性类型:描述性项目属性
容器:ItemPropertyContainerBox
强制性(每个项目):无
数量(每个项目):一个
根据实施方式,具有等于‘dyom’的盒类型值的V-PCC对象映射属性信息(VPCCObjectMappingItemProperty)可以包含在项目属性容器盒(ItemPropertyContainerBox)中。
根据实施方式,可以如下定义VPCCObjectMappingItemProperty的语法。
aligned(8)class VPCCObjectMappingItemProperty()extendsItemFullProperty(‘dyom’,version=0,0){
V3CObjectMappingStruct();
}
根据实施方式,V3CObjectMappingStruct()包含对象映射信息并且存储为项目属性。也就是说,V3CObjectMappingStruct()与V-PCC项目和V-PCC单元项目相关。
根据实施方式,V3CObjectMappingStruct()可以包含与对象相关联的阿特拉斯数据(例如,阿特拉斯子比特流、阿特拉斯拼块、阿特拉斯补片)、2D区域或3D区域信息等。已经在上文的“对象映射信息结构”中详细描述了包含在V3CObjectMappingStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
根据实施方式,V-PCC对象阿特拉斯项目属性可以如下定义。
盒类型:‘vpoa’
属性类型:描述性项目属性
容器:ItemPropertyContainerBox
强制性(每个项目):无
数量(每个项目):根据一个实施方式,具有等于‘vpoa’的盒类型值的V-PCC对象阿特拉斯属性信息(VPCCObjectAtlasItemProperty)可以被包括在项目属性容器盒(ItemPropertyContainerBox)中。
根据实施方式,VPCCObjectAtlasItemProperty的语法可以如下定义。
aligned(8)class VPCCObjectAtlasItemProperty()extends ItemFullProperty(‘vpoa’,version=0,0){
V3CObjAtlasIInfoStruct();
}
根据实施方式,将包含阿特拉斯与和该V-PCC项目相关联的对象之间的关联的V3CObjAtlasIInfoStruct()存储为项目属性。也就是说,V3CObjAtlasIInfoStruct()与V-PCC项目和V-PCC单元项目相关联。已经在上面的“对象阿特拉斯信息结构”中详细描述了包含在V3CObjAtlasIInfoStruct()中的信息(即,字段),因此将跳过其描述以避免冗余描述。
图69示出根据实施方式的发送点云数据的方法。
根据实施方式的发送点云数据的方法可以包括对点云数据进行编码的步骤(71001),和/或发送包括点云数据和信令信息的比特流的步骤(71002)。
根据实施方式,在操作71001中,点云数据可以被编码。在操作71001中,根据实施方式,可以基于上述空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息、SEI信息等仅对特定区域的媒体数据进行编码。以上已经充分描述了空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息和SEI信息,因此将跳过其描述。空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息、SEI信息等可以通过轨道中的样本、样本条目、样本组、轨道组、实体组或文件中的单独元数据轨道来发送。例如,图1的发送装置10000和/或点云视频编码器10002可以执行编码。根据实施方式,可以对如图3所示的点云数据进行编码。点云数据可以通过图4的V-PCC编码过程编码。基于如图5至图14所示的方法,点云数据可以被编码。点云数据可以由图15的编码器编码。根据实施方式,在操作71002中,点云数据或包括点云数据和信令信息的比特流可以被发送。包括点云数据的比特流可以由图1的发送装置10000和发送器10004发送。信令信息可以称为元数据,并且可以包括上述语法。此外,点云数据(或包括点云数据的比特流)可以由文件/片段封装器10003以文件/片段的形式发送。
根据实施方式,在操作71002中,可以基于空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息、SEI信息等将所有点云数据封装到文件/片段中,或者可以将点云数据的一部分封装到文件/片段中。发送点云数据的过程可以由图18的发送装置执行。另外,点云数据可以由图20至图22的V-PCC系统发送。此外,点云数据可以通过与各种装置组合的图23的网络提供给用户。
根据实施方式的点云数据发送方法/装置可以与上述实施方式的全部/部分组合以提供点云内容。
图70是示出根据实施方式的接收点云数据的方法的流程图。
根据实施方式的接收点云数据的方法可以包括接收包括点云数据和信令信息的比特流(81001)、对点云数据进行解码(81002)和/或渲染点云数据(81003)。
根据实施方式,在操作81001中,可以接收包括点云数据的比特流。在点云数据接收方法中,可以以文件/片段的形式接收包括点云数据的比特流。根据实施方式,在操作81001中,可以基于空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息、SEI信息等对包括所有点云数据的文件或包括点云数据的一部分的文件进行解封装。根据实施方式,可以从文件中的单独元数据轨道或轨道中的实体组、样本、样本条目、样本组或轨道组获取空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息、SEI信息等。以上已经充分描述了空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息、SEI信息等,因此将省略其描述。图1的接收装置10005和接收器10006可以接收比特流(或包括比特流的文件/片段)。图1的文件/片段解封装器10007可以对上述文件/片段形式的点云数据和/或信令信息进行解封装。上面已经描述了根据实施方式的接收装置执行从接收过程到渲染过程的图19的接收过程。
根据实施方式,在操作81002中,点云数据被解码。根据实施方式,在操作81002中,可以基于空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息、SEI信息等从文件提取或解码点云数据的全部或部分。图1的点云视频解码器10008可以对点云数据进行解码。解码器可以通过图16所示的过程执行V-PCC解码过程。包括点云数据的比特流可以由图17所示的解码器解码。点云数据可以如图20至图22所示由用于处理点云数据的系统处理。此外,如图23所示,点云数据可以通过网络经由各种装置/环境提供给用户。
根据实施方式,在操作81003中,点云数据被渲染/显示。
根据实施方式,在操作81003中渲染点云数据的步骤可以由图1的渲染器10009、图19的点云渲染器19007、图20的渲染器20009或图22的点云渲染器22004来执行。根据实施方式,点云数据可以基于元数据在3D空间中渲染。根据实施方式,在操作81003中,点云数据的全部或部分可以基于空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息、SEI信息等来渲染。因此,用户可以通过VR/AR显示器或通用显示器观看渲染结果的全部或部分。
根据实施方式的点云数据接收方法/装置可以与上述实施方式的全部/部分组合以提供点云内容。
如上所述,根据实施方式的文件封装或文件封装器可以将关于V-PCC视频或图像的空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息、SEI信息等存储在文件中的轨道或图像项目中。
根据实施方式的文件解封装或文件解封装器可以基于文件中的轨道或图像项目中包括的空间区域信息、对象信息、阿特拉斯关联信息、对象阿特拉斯信息、SEI信息等来获取点云数据的全部或部分,并且可以基于所获取的数据高效地提取、解码和渲染文件中的轨道数据或图像数据。
如上所述,根据本公开,可以在每V-PCC单元的基础上高效地支持对点云数据的访问,并且可以在文件中的轨道中高效地存储和发送V-PCC比特流中的阿特拉斯流。
根据本公开,当用于对V-PCC比特流中的阿特拉斯子流进行解码和处理的阿特拉斯参数集高效地存储并传送到文件中的轨道或项目中时,V-PCC解码器/播放器可以高效地解码和渲染V-PCC比特流和V-PCC阿特拉斯子流。
根据本公开,即使当阿特拉斯比特流被划分成一个或更多个阿特拉斯拼块轨道并存储时,必要的阿特拉斯数据和关联视频(例如,占用图视频、几何视频、属性视频)也可以被高效地选择和解码。
根据本公开,可以发信号通知一个或更多个对象与一个或更多个阿特拉斯比特流之间的关联。由此,接收装置可以高效地提取与对象相关联的阿特拉斯比特流。
根据本公开,用于V-PCC比特流中的数据处理以及渲染的SEI消息/信息可以存储在文件的轨道或项目中并传送。因此,V-PCC解码器/播放器可以适当地操作以解码V-PCC比特流或存取、解码和/或渲染轨道/项目中的比特流。
根据本公开,可以有效地访问点云比特流的数据的处理和渲染所需的信息。例如,发送装置或编码器可以存储并发送文件或项目中的3D空间区域信息、阿特拉斯或阿特拉斯拼块(其是静态的或随时间变化)与对象之间的关联信息(或称为映射信息)以及SEI信息,并且接收装置或解码器可以高效地获取信息。由此,可以高效地支持对点云数据的空间访问或部分访问。另外,发送装置或编码器可以存储和发送文件或项目中的阿特拉斯帧(其是静态的或随时间变化)的补片和/或拼块与2D区域和3D区域之间的关联信息(或映射信息),并且接收装置或解码器可以高效地获取该信息。由此,可以高效地支持对点云数据的空间访问或部分访问。
上述V-PCC和V-PCC系统的数据可以由根据实施方式的发送装置的封装器(可以称为生成器)生成,也可以由发送装置的发送器发送。另外,V-PCC和V-PCC系统的数据可以由根据实施方式的接收装置的接收器接收,并且可以由接收装置的解封装器(可以称为解析器)获取。接收装置的解码器、渲染器等可以基于V-PCC和V-PCC系统的数据向用户提供适当的点云数据。
上述各个部分、模块或单元可以是执行存储在存储器(或存储单元)中的连续过程的软件、处理器或硬件部分。在上述实施方式中描述的各个步骤可由处理器、软件或硬件部分执行。在上述实施方式中描述的各个模块/块/单元可作为处理器、软件或硬件操作。另外,实施方式所提出的方法可作为代码执行。该代码可被写在处理器可读存储介质上,因此由设备所提供的处理器读取。
尽管为了简单参照各个附图说明了实施方式,但是可通过将附图所示的实施方式合并来设计新的实施方式。如果本领域技术人员设计了记录有用于执行以上描述中提及的实施方式的程序的计算机可读记录介质,则其可落在所附权利要求及其等同物的范围内。
设备和方法可不限于上述实施方式的配置和方法。上述实施方式可通过选择性地彼此完全或部分地组合来配置,以实现各种修改。
尽管参照附图描述了优选实施方式,但本领域技术人员将理解,在不脱离所附权利要求中描述的本公开的精神或范围的情况下,可对实施方式进行各种修改和变化。这些修改不应从实施方式的技术思想或观点方面单独地理解。
本领域技术人员将理解,在不脱离本公开的范围的情况下,可对实施方式进行各种修改和变化。因此,本公开旨在涵盖实施方式的修改和变化,只要它们落在所附权利要求及其等同物的范围内。
本说明书中描述了设备和方法公开二者,并且设备和方法公开二者的描述互补地适用。
在本文档中,术语“/”和“、”应该被解释为指示“和/或”。例如,表达“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二者。换言之,在本文档中术语“或”应该被解释为“另外地或另选地”。
实施方式的设备的各种元件可由硬件、软件、固件或其组合实现。实施方式中的各种元件可由单个芯片(例如,单个硬件电路)实现。根据实施方式,根据实施方式的组件可分别被实现为单独的芯片。根据实施方式,根据实施方式的设备的至少一个或更多个组件可包括能够执行一个或更多个程序的一个或更多个处理器。一个或更多个程序可执行根据实施方式的任一个或更多个操作/方法,或者包括用于执行其的指令。用于执行根据实施方式的设备的方法/操作的可执行指令可被存储在被配置为由一个或更多个处理器执行的非暂时性CRM或其它计算机程序产品中,或者可被存储在被配置为由一个或更多个处理器执行的暂时性CRM或其它计算机程序产品中。另外,根据实施方式的存储器可用作不仅涵盖易失性存储器(例如,RAM),而且涵盖非易失性存储器、闪存和PROM的概念。另外,其还可按照载波的形式实现(例如,经由互联网的传输)。另外,处理器可读记录介质可分布到经由网络连接的计算机系统,使得处理器可读代码可按照分布式方式存储和执行。
诸如第一和第二之类的术语可用于描述实施方式的各种元件。然而,根据实施方式的各种组件不应受上述术语限制。这些术语仅用于将一个元件与另一元件相区分。例如,第一用户输入信号可被称为第二用户输入信号。类似地,第二用户输入信号可被称为第一用户输入信号。这些术语的使用应该被解释为不脱离各种实施方式的范围。第一用户输入信号和第二用户输入信号均是用户输入信号,但除非上文清楚地另外规定,否则并不意味着相同的用户输入信号。
用于描述实施方式的术语仅用于描述特定实施方式的目的,并非旨在限制实施方式。如在实施方式的描述和权利要求中使用的,除非上文清楚地另外规定,否则单数形式包括复数指称物。表达“和/或”用于包括术语的所有可能组合。诸如“包括”或“具有”的术语旨在指示存在图形、数量、步骤、元件和/或组件,应该被理解为不排除存在附加图形、数量、步骤、元件和/或组件的可能性。
如本文所使用的,诸如“如果”和“当”的条件表达不限于可选情况,旨在被解释为当满足特定条件时执行相关操作或根据该特定条件解释相关定义。
本发明的实现形式
如上所述,在用于执行这些实施方式的最佳模式下描述了相关内容。
工业适用性
如上所述,实施方式可以完全或部分地应用于点云数据发送/接收装置和系统。
对于本领域技术人员将显而易见的是,可以在实施方式的范围内对实施方式做出各种改变或修改。
因此,只要落入所附权利要求及其等同物的范围内,实施方式旨在覆盖本公开的修改和变型。
Claims (20)
1.一种点云数据发送方法,所述点云数据发送方法包括以下步骤:
对点云数据进行编码;
将包括编码的点云数据的比特流封装到文件中;以及
发送所述文件,
其中,所述比特流被存储在所述文件的一个或更多个轨道中,
其中,所述文件还包括信令数据,
其中,所述点云数据由一个或更多个对象组成,并且
其中,所述信令数据包括至少一个参数集和用于所述点云数据的部分访问的信息。
2.根据权利要求1所述的点云数据发送方法,其中,所述点云数据包括通过基于视频的编码方案编码的几何数据、属性数据和占用图数据。
3.根据权利要求1所述的点云数据发送方法,
其中,用于部分访问的所述信息是不随时间改变的静态信息或随时间动态改变的动态信息中的至少一者。
4.根据权利要求1所述的点云数据发送方法,
其中,所述一个或更多个对象与一个或更多个阿特拉斯拼块相关联,
其中,所述一个或更多个阿特拉斯拼块构成阿特拉斯帧,并且
其中,用于部分访问的所述信息包括所述一个或更多个对象与所述一个或更多个阿特拉斯拼块之间的映射信息。
5.根据权利要求4所述的点云数据发送方法,
其中,所述映射信息包括用于标识所述一个或更多个对象中的每一个的对象索引信息、用于标识与由所述对象索引信息指示的对象相关联的阿特拉斯拼块的数量的数量信息以及用于标识与所述对象相关联的所述阿特拉斯拼块中的每一个的阿特拉斯标识信息。
6.一种点云数据发送设备,所述点云数据发送设备包括:
编码器,所述编码器对点云数据进行编码;
封装器,所述封装器将包括编码的点云数据的比特流封装到文件中;以及
发送器,所述发送器发送所述文件,
其中,所述比特流被存储在所述文件的一个或更多个轨道中,
其中,所述文件还包括信令数据,
其中,所述点云数据由一个或更多个对象组成,并且
其中,所述信令数据包括至少一个参数集和用于所述点云数据的部分访问的信息。
7.根据权利要求6所述的点云数据发送设备,其中,所述点云数据包括通过基于视频的编码方案编码的几何数据、属性数据和占用图数据。
8.根据权利要求6所述的点云数据发送设备,
其中,用于部分访问的所述信息是不随时间改变的静态信息或随时间动态改变的动态信息中的至少一者。
9.根据权利要求6所述的点云数据发送设备,
其中,所述一个或更多个对象与一个或更多个阿特拉斯拼块相关联,
其中,所述一个或更多个阿特拉斯拼块构成阿特拉斯帧,并且
其中,用于部分访问的所述信息包括所述一个或更多个对象与所述一个或更多个阿特拉斯拼块之间的映射信息。
10.根据权利要求9所述的点云数据发送设备,
其中,所述映射信息包括用于标识所述一个或更多个对象中的每一个的对象索引信息、用于标识与由所述对象索引信息指示的对象相关联的阿特拉斯拼块的数量的数量信息以及用于标识与所述对象相关联的所述阿特拉斯拼块中的每一个的阿特拉斯标识信息。
11.一种点云数据接收方法,所述点云数据接收方法包括以下步骤:
接收文件;
将所述文件解封装成包括点云数据的比特流,其中,所述比特流被存储在所述文件的一个或更多个轨道中,并且其中,所述文件还包括信令数据;
基于所述信令数据对所述点云数据的全部或一部分进行解码;以及
基于所述信令数据渲染解码的点云数据的全部或一部分,
其中,所述点云数据由一个或更多个对象组成,并且
其中,所述信令数据包括至少一个参数集和用于所述点云数据的部分访问的信息。
12.根据权利要求11所述的点云数据接收方法,其中,所述点云数据包括通过基于视频的编码方案解码的几何数据、属性数据和占用图数据。
13.根据权利要求11所述的点云数据接收方法,
其中,用于部分访问的所述信息是不随时间改变的静态信息或随时间动态改变的动态信息中的至少一者。
14.根据权利要求11所述的点云数据接收方法,
其中,所述一个或更多个对象与一个或更多个阿特拉斯拼块相关联,
其中,所述一个或更多个阿特拉斯拼块构成阿特拉斯帧,并且
其中,用于部分访问的所述信息包括所述一个或更多个对象与所述一个或更多个阿特拉斯拼块之间的映射信息。
15.根据权利要求14所述的点云数据接收方法,
其中,所述映射信息包括用于标识所述一个或更多个对象中的每一个的对象索引信息、用于标识与由所述对象索引信息指示的对象相关联的阿特拉斯拼块的数量的数量信息以及用于标识与所述对象相关联的所述阿特拉斯拼块中的每一个的阿特拉斯标识信息。
16.一种点云数据接收设备,所述点云数据接收设备包括:
接收器,所述接收器接收文件;
解封装器,所述解封装器将所述文件解封装成包括点云数据的比特流,其中,所述比特流被存储在所述文件的一个或更多个轨道中,并且其中,所述文件还包括信令数据;
解码器,所述解码器基于所述信令数据对所述点云数据的全部或一部分进行解码;以及
渲染器,所述渲染器基于所述信令数据渲染解码的点云数据的全部或一部分,
其中,所述点云数据由一个或更多个对象组成,并且
其中,所述信令数据包括至少一个参数集和用于所述点云数据的部分访问的信息。
17.根据权利要求16所述的点云数据接收设备,其中,所述点云数据包括通过基于视频的编码方案解码的几何数据、属性数据和占用图数据。
18.根据权利要求16所述的点云数据接收设备,
其中,用于部分访问的所述信息是不随时间改变的静态信息或随时间动态改变的动态信息中的至少一者。
19.根据权利要求16所述的点云数据接收设备,
其中,所述一个或更多个对象与一个或更多个阿特拉斯拼块相关联,
其中,所述一个或更多个阿特拉斯拼块构成阿特拉斯帧,并且
其中,用于部分访问的所述信息包括所述一个或更多个对象与所述一个或更多个阿特拉斯拼块之间的映射信息。
20.根据权利要求19所述的点云数据接收设备,
其中,所述映射信息包括用于标识所述一个或更多个对象中的每一个的对象索引信息、用于标识与由所述对象索引信息指示的对象相关联的阿特拉斯拼块的数量的数量信息以及用于标识与所述对象相关联的所述阿特拉斯拼块中的每一个的阿特拉斯标识信息。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063041982P | 2020-06-21 | 2020-06-21 | |
US63/041,982 | 2020-06-21 | ||
US202063042500P | 2020-06-22 | 2020-06-22 | |
US63/042,500 | 2020-06-22 | ||
PCT/KR2021/007763 WO2021261865A1 (ko) | 2020-06-21 | 2021-06-21 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115918093A true CN115918093A (zh) | 2023-04-04 |
Family
ID=79167995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180044178.4A Pending CN115918093A (zh) | 2020-06-21 | 2021-06-21 | 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11601634B2 (zh) |
EP (1) | EP4171038A4 (zh) |
CN (1) | CN115918093A (zh) |
WO (1) | WO2021261865A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021206365A1 (ko) * | 2020-04-11 | 2021-10-14 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
US11706497B1 (en) * | 2022-02-11 | 2023-07-18 | Microsoft Technology Licensing, Llc | Ultra-low latency video streaming |
EP4300984A1 (en) * | 2022-06-29 | 2024-01-03 | Nokia Technologies Oy | A method, an apparatus and a computer program product for mapping media bitstream partitions in real-time streaming |
WO2024094540A1 (en) * | 2022-11-04 | 2024-05-10 | Interdigital Ce Patent Holdings, Sas | Coding format for optimized encoding of volumetric video |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3474562A1 (en) * | 2017-10-20 | 2019-04-24 | Thomson Licensing | Method, apparatus and stream for volumetric video format |
CN111133476A (zh) * | 2017-09-18 | 2020-05-08 | 苹果公司 | 点云压缩 |
CN111316331A (zh) * | 2017-11-09 | 2020-06-19 | 三星电子株式会社 | 使用非正交投影的点云压缩 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10186024B2 (en) * | 2015-12-29 | 2019-01-22 | Texas Instruments Incorporated | Method and system for real time structure from motion in a computer vision system |
CN118314303A (zh) * | 2017-10-16 | 2024-07-09 | 索尼公司 | 编码装置、编码方法、解码装置及解码方法 |
WO2019243663A1 (en) | 2018-06-21 | 2019-12-26 | Nokia Technologies Oy | An apparatus, a method and a computer program for volumetric video |
WO2020071703A1 (ko) * | 2018-10-01 | 2020-04-09 | 엘지전자 주식회사 | 포인트 클라우드 데이터 전송 장치, 포인트 클라우드 데이터 전송 방법, 포인트 클라우드 데이터 수신 장치 및/또는 포인트 클라우드 데이터 수신 방법 |
WO2020141248A1 (en) * | 2019-01-02 | 2020-07-09 | Nokia Technologies Oy | An apparatus, a method and a computer program for video coding and decoding |
US11711544B2 (en) * | 2019-07-02 | 2023-07-25 | Apple Inc. | Point cloud compression with supplemental information messages |
-
2021
- 2021-06-21 US US17/353,438 patent/US11601634B2/en active Active
- 2021-06-21 EP EP21828874.4A patent/EP4171038A4/en active Pending
- 2021-06-21 WO PCT/KR2021/007763 patent/WO2021261865A1/ko unknown
- 2021-06-21 CN CN202180044178.4A patent/CN115918093A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111133476A (zh) * | 2017-09-18 | 2020-05-08 | 苹果公司 | 点云压缩 |
EP3474562A1 (en) * | 2017-10-20 | 2019-04-24 | Thomson Licensing | Method, apparatus and stream for volumetric video format |
CN111316331A (zh) * | 2017-11-09 | 2020-06-19 | 三星电子株式会社 | 使用非正交投影的点云压缩 |
Also Published As
Publication number | Publication date |
---|---|
US11601634B2 (en) | 2023-03-07 |
WO2021261865A1 (ko) | 2021-12-30 |
EP4171038A4 (en) | 2024-07-10 |
US20220006999A1 (en) | 2022-01-06 |
EP4171038A1 (en) | 2023-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11631158B2 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
CN114930863B (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
EP3926960A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
CN114930813B (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
CN115443652B (zh) | 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法 | |
US11968393B2 (en) | Point cloud data transmitting device, point cloud data transmitting method, point cloud data receiving device, and point cloud data receiving method | |
CN114946178B (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
CN115398890B (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
CN115380528B (zh) | 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法 | |
CN114503587A (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
CN114946179B (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
US20210409767A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US11601634B2 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
CN115804096A (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
CN115428442B (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |