CN115668938A - 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 - Google Patents

点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 Download PDF

Info

Publication number
CN115668938A
CN115668938A CN202180035883.8A CN202180035883A CN115668938A CN 115668938 A CN115668938 A CN 115668938A CN 202180035883 A CN202180035883 A CN 202180035883A CN 115668938 A CN115668938 A CN 115668938A
Authority
CN
China
Prior art keywords
point cloud
information
data
cloud data
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180035883.8A
Other languages
English (en)
Inventor
李晋源
吴世珍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LG Electronics Inc
Original Assignee
LG Electronics Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LG Electronics Inc filed Critical LG Electronics Inc
Publication of CN115668938A publication Critical patent/CN115668938A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/161Encoding, multiplexing or demultiplexing different image signal components
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows

Abstract

根据实施方式的点云数据发送方法可以包括以下步骤:对点云数据进行编码;将包括编码的点云数据和信令数据的比特流封装到文件中;以及发送文件,其中,比特流包括几何数据、属性数据、占用图数据和阿特拉斯数据,并且被存储在文件的单个轨道或多个轨道中,并且信令数据可以包括关于点云数据的空间区域信息。

Description

点云数据发送装置、点云数据发送方法、点云数据接收装置和 点云数据接收方法
技术领域
实施方式提供了一种提供点云内容以向用户提供诸如虚拟现实(VR)、增强现实(AR)、混合现实(MR)和自主驾驶服务之类的各种服务的方法。
背景技术
点云是三维(3D)空间中的点集合。因为3D空间中的点的数量大,所以难以生成点云数据。
需要大吞吐量以发送和接收点云的数据。
发明内容
技术问题
本公开的目的在于提供一种用于高效地发送和接收点云的点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法。
本公开的另一目的在于提供一种用于解决时延和编码/解码复杂度的点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法。
本公开的另一目的在于提供一种用于通过发信号通知点云数据的视口相关信令来向用户提供优化的点云内容的点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法。
本公开的另一目的在于提供一种用于通过允许在比特流中发送用于V-PCC比特流中的数据处理和渲染的视口信息、推荐视口信息和初始观看取向(即,视口)来向用户提供优化的点云内容的点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法。
本公开的附加优点、目的和特征将在以下描述中部分地阐述,并且对于本领域普通技术人员而言在考察以下内容后将部分地变得显而易见或者可从本公开的实践学习。本公开的目的和其它优点可通过所撰写的说明书及其权利要求以及附图中具体指出的结构来实现和获得。
技术方案
为了实现这些目的和其它优点并且根据本公开的目的,如本文中具体实现并广义描述的,一种发送点云数据的方法可以包括以下步骤:对点云数据进行编码;将包括编码的点云数据的比特流封装到文件中;以及发送文件。
根据实施方式,点云数据可以至少包括几何数据、属性数据或占用图数据,比特流可以存储在文件的多个轨道中,文件还可以包括信令数据,并且信令数据可以包括点云数据的空间区域信息。
根据实施方式,可以将点云数据划分为一个或更多个3维(3D)空间区域,并且空间区域信息可以至少包括用于标识每个3D空间区域的标识信息或者每个3D空间区域的锚点的位置信息。
根据实施方式,空间区域信息可以至少在载送信令信息中的一些或全部的轨道的样本条目中或与轨道相关联的元数据轨道的样本中被发信号通知。
根据实施方式,在样本条目中发信号通知的空间区域信息还可以包括用于标识与每个3D空间区域相关的一个或更多个拼块的拼块标识信息。
根据实施方式,样本还可以包括与3D空间区域相关的优先级信息和依赖性信息。
根据实施方式,点云数据发送设备可以包括:编码器,其对点云数据进行编码;封装器,其将包括编码的点云数据的比特流封装到文件中;以及发送器,其发送文件。
根据实施方式,点云数据可以至少包括几何数据、属性数据或占用图数据,比特流可以存储在文件的多个轨道中,文件还可以包括信令数据,并且信令数据可以包括点云数据的空间区域信息。
根据实施方式,可以将点云数据划分为一个或更多个3维(3D)空间区域,并且空间区域信息可以至少包括用于标识每个3D空间区域的标识信息或者每个3D空间区域的锚点的位置信息。
根据实施方式,空间区域信息可以至少在载送信令信息中的一些或全部的轨道的样本条目中或与轨道相关联的元数据轨道的样本中被发信号通知。
根据实施方式,在样本条目中发信号通知的空间区域信息还可以包括用于标识与每个3D空间区域相关的一个或更多个拼块的拼块标识信息。
根据实施方式,样本还可以包括与3D空间区域相关的优先级信息和依赖性信息。
根据实施方式,点云数据接收设备可以包括:接收文件的接收器;将文件解封装成包括点云数据的比特流的解封装器,比特流存储在文件的多个轨道中并且文件还包括信令数据;基于信令数据解码点云数据的解码器;以及基于信令数据渲染解码的点云数据的渲染器。
根据实施方式,点云数据可以至少包括几何数据、属性数据或占用图数据,并且信令数据可以包括点云数据的空间区域信息。
根据实施方式,可以将点云数据划分为一个或更多个3维(3D)空间区域,并且空间区域信息可以至少包括用于标识每个3D空间区域的标识信息或者每个3D空间区域的锚点的位置信息。
根据实施方式,空间区域信息可以至少在载送信令信息中的一些或全部的轨道的样本条目中或与轨道相关联的元数据轨道的样本中被发信号通知。
根据实施方式,在样本条目中发信号通知的空间区域信息还可以包括用于标识与每个3D空间区域相关的一个或更多个拼块的拼块标识信息。
根据实施方式,样本还可以包括与3D空间区域相关的优先级信息和依赖性信息。
有益效果
根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置可提供良好质量的点云服务。
根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置可实现各种视频编解码方法。
根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置可提供诸如自主驾驶服务之类的通用点云内容。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,可以配置V-PCC比特流,并且文件可以被发送、接收和存储。因此,可以提供最佳的点云内容服务。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,用于V-PCC比特流中的数据处理和渲染的元数据可以在V-PCC比特流中发送和接收。因此,可以提供最佳的点云内容服务。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,播放器等可以实现根据用户视口的点云对象/内容的空间或部分访问。因此,可以根据用户视口高效地访问和处理点云比特流。
利用根据实施方式的点云数据发送方法、点云数据发送装置、点云数据接收方法和点云数据接收装置,用于对点云内容和及其信令信息进行部分访问和/或空间访问的边界框可以被提供。因此,可以考虑到播放器环境或用户环境在接收侧以各种方式访问点云内容。
根据实施方式的点云数据发送方法和发送装置可以提供关于点云内容的3D区域信息和与其相关联的视频或阿特拉斯帧中的2D区域相关元数据,以支持根据用户视口对点云内容的空间/部分访问。
根据实施方式的点云数据发送方法和发送装置可以处理关于点云比特流中的点云的3D区域信息和与其相关联的视频或阿特拉斯帧中的2D区域相关元数据的信令。
利用根据实施方式的点云数据接收方法和接收装置,可以基于关于点云比特流中的点云的3D区域信息和与其相关联的视频或阿特拉斯帧中的2D区域相关元数据的存储和信令来高效地访问点云内容。
利用根据实施方式的点云数据接收方法和接收装置,可以基于关于与文件中的图像项目相关联的点云的3D区域信息和与其相关联的视频或阿特拉斯帧中的2D区域相关信息考虑用户环境来提供点云内容。
根据实施方式的点云数据发送方法和装置以及点云数据接收方法和装置通过将空间分割为多个3D空间区域来处理点云数据,由此实时地在发送侧执行编码和发送操作并且在接收侧之下解码和渲染操作,并且以低时延处理这些操作。
根据实施方式的点云数据发送方法独立地或依赖地对空间分割的3D块(例如,3D空间区域)进行编码,由此使得能够在点云数据所占据的3D空间中进行并行编码和随机访问。
根据实施方式的点云数据发送方法和装置以及点云数据接收方法和装置以空间分割的3D块(例如,3D空间区域)为单位独立地或依赖地执行点云数据的编码和解码,由此防止错误累积在编码和解码过程中。
附图说明
附图被包括以提供本公开的进一步理解,并且被并入本申请中并构成本申请的一部分,附图示出本公开的实施方式并与说明书一起用于说明本公开的原理。附图中:
图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示出根据实施方式的点云数据的部分3D区域与视频帧中的一个或更多个2D区域之间的示例性关联;
图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单元有效载荷的示例性语法结构;
图33示出根据实施方式的V-PCC参数集的示例性语法结构;
图34示出根据实施方式的阿特拉斯子流的示例性结构;
图35示出根据实施方式的包括在阿特拉斯子流中的样本流NAL头的示例性语法结构;
图36示出根据实施方式的样本流NAL单元的示例性语法结构;
图37示出根据实施方式的阿特拉斯序列参数集的示例性语法结构;
图38示出根据实施方式的阿特拉斯帧参数集的示例性语法结构;
图39示出根据实施方式的阿特拉斯帧拼块信息的示例性语法结构;
图40示出根据实施方式的补充增强信息(SEI)的示例性语法结构;
图41示出根据实施方式的3D边界框信息SEI的示例性语法结构;
图42示出根据实施方式的3D区域映射信息SEI的示例性语法结构;
图43示出根据实施方式的体积拼块信息SEI的示例性语法结构;
图44示出根据实施方式的体积拼块信息标签信息的示例性语法结构;
图45示出根据实施方式的体积拼块信息对象信息的示例性语法结构;
图46示出根据实施方式的V-PCC样本条目的示例性结构;
图47示出根据实施方式的moov盒的示例性结构和样本条目的示例性结构;
图48示出根据实施方式的示例性轨道备选和轨道分组;
图49示出根据实施方式的封装非定时V-PCC数据的示例性结构;
图50示出根据实施方式的样本流V-PCC单元的整体结构;
图51是根据实施方式的文件级信令方法的流程图;
图52是根据实施方式的接收装置中的信令信息获取方法的流程图;
图53是根据实施方式的点云数据发送方法的流程图;以及
图54是根据实施方式的点云数据接收方法的流程图。
具体实施方式
现在将详细参考本公开的优选实施方式,其示例示出于附图中。下面将参照附图给出的详细描述旨在说明本公开的示例性实施方式,而非示出可根据本公开实现的仅有实施方式。以下详细描述包括具体细节以便提供本公开的彻底理解。然而,对于本领域技术人员而言将显而易见的是,本公开可在没有这些具体细节的情况下实践。
尽管本公开中使用的大多数术语选自本领域中广泛使用的通用术语,但是一些术语由申请人任意选择并且在以下描述中根据需要详细说明其含义。因此,本公开应该基于术语的预期含义而非其简单名称或含义来理解。
图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可以对点云(称作点云数据或点)和/或与点云相关的信令数据进行编码。
本文使用的表示基于视频的点云压缩的术语V-PCC与基于视觉体积视频的编码(V3C)具有相同的含义,并且它们可以相互补充使用。
根据实施方式的文件/片段封装模块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中,中图示出几何图像,并且右图示出纹理图像(非填充)。也就是说,3D边界框可以指定定义为立方体的体积,该立方体具有以直角放置的六个矩形面。在本说明书中,几何图像也称为几何补片帧/图片或几何帧/图片。此外,纹理图像也被称为属性补片帧/图片或属性帧/图片。
根据实施方式的基于视频的点云压缩(V-PCC)是一种基于诸如高效视频编码(HEVC)或多功能视频编码(VVC)的2D视频编解码器来压缩3D点云数据的方法。V-PCC压缩处理中可以生成的数据和信息如下:
占用图:这是在将构成点云的点分成补片并将其映射到2D平面时使用值0或1指示在2D平面中的对应位置是否存在数据的二值图。占用图可以表示与阿特拉斯(atlas)对应的2D阵列,并且占用图的值可以指示阿特拉斯中的每个样本位置是否对应3D点。
阿特拉斯由补片组成,并且指代包括关于每个点云帧的2D补片的信息的对象。例如,阿特拉斯可以包括补片的2D布置和大小、对应的3D区域在3D点内的位置、投影平面和细节级别参数。也就是说,可以将阿特拉斯分割为相同大小的补片打包块。
此外,阿特拉斯是2D边界框和与其相关联的信息的集合,信息被放置在矩形帧中并且对应于在其中渲染体积数据的3D空间中的3D边界框(即,体积)。
阿特拉斯比特流是形成构成阿特拉斯的一个或更多个阿特拉斯帧的表示的比特序列。
阿特拉斯帧是阿特拉斯样本的2D矩形阵列,补片被投影到阿特拉斯样本上。
阿特拉斯样本是与阿特拉斯相关的补片被投影到其上的矩形帧的位置。
阿特拉斯序列是阿特拉斯帧的集合。
根据实施方式,阿特拉斯帧可以被分割为拼块。拼块是分割2D帧的单位。也就是说,拼块是用于分割称为阿特拉斯的点云数据的信令信息的单位。
补片是构成点云的点的集合。属于同一补片的点在3D空间中彼此相邻,并在映射到2D图像的过程中在六个边界框平面当中沿相同方向映射。补片是分割拼块的单位。也就是说,补片是关于点云数据的构造的信令信息。
拼块表示阿特拉斯帧的独立可解码的矩形区域。
根据实施方式的接收装置可以基于阿特拉斯(拼块或补片)来恢复属性视频数据、几何视频数据和占用视频数据,它们是具有相同呈现时间的实际视频数据。
几何图像:这是逐补片呈现关于构成点云的各个点的位置信息(几何)的深度图形式的图像。几何图像可由一个通道的像素值组成。几何表示与点云帧相关联的坐标的集合。
纹理图像:这是逐补片表示关于构成点云的各个点的颜色信息的图像。纹理图像可由多个通道(例如,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可以分别压缩输入的几何帧、属性帧和/或占用图帧,以输出几何图像的视频比特流、纹理图像的视频比特流、占用图的视频比特流。视频压缩可以对几何信息、纹理信息和占用信息进行编码。
熵压缩或熵压缩器14012可以基于熵方案来压缩占用图。
根据实施方式,熵压缩和/或视频压缩可以根据点云数据是无损的和/或有损的而对占用图帧执行。
复用器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所示,构成点云的各个点被投影到围绕点云的边界框的六个面之一上。初始分段是确定各个点要投影至的边界框的平坦面之一的处理。
Figure BDA0003947873910000191
其是与六个平坦面中的每一个对应的法向值,如下定义:
(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)。
如下式所示,在法向值计算处理中获得的各个点的法向量
Figure BDA0003947873910000192
Figure BDA0003947873910000193
的点积的值最大的面被确定为对应点的投影平面。即,法向量与点的法向量的方向最相似的平面被确定为点的投影平面。
Figure BDA0003947873910000194
所确定的平面可由一个集群索引(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]
Figure BDA0003947873910000251
图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内容。对象可以根据空间参考被划分为若干对象,并且在本说明书中,每个划分的对象被称为子对象或简称为对象。根据实施方式,3D边界框可以是表示对象在3D空间中的位置信息的信息,并且2D边界框可以表示在2D帧中对应于一个对象的补片周围的矩形区域。也就是说,在将对象投影到2D平面上的过程(其是对一个对象进行编码的一个过程)之后生成的数据是补片,并且围绕补片的框可以称为2D边界框。也就是说,由于一个对象在编码过程中可以由若干补片组成,因此一个对象与补片相关。3D空间中的对象表示为对象周围的3D边界框信息。由于阿特拉斯帧包括与每个对象对应的补片信息和3D空间中的3D边界框信息,因此该对象与3D边界框或拼块或3D空间区域相关。
根据实施方式,当以文件格式封装V-PCC比特流时,可以将点云数据的3D边界框分割为一个或更多个3D区域,并且每个划分的3D区域可以包括一个或更多个对象。当补片被打包成阿特拉斯帧时,补片以对象为单位收集并打包(映射到)阿特拉斯帧中的一个或更多个阿特拉斯拼块区域。也就是说,一个3D区域(即,文件级)可以与一个或更多个对象(即,比特流级)相关联,并且一个对象可以与一个或更多个3D区域相关联。由于每个对象与一个或更多个阿特拉斯拼块相关联,因此一个3D区域可以与一个或更多个阿特拉斯拼块相关联。例如,对象#1可以对应于阿特拉斯拼块#1和阿特拉斯拼块#2,对象#2可以对应于阿特拉斯拼块#3,并且对象#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)。
对于点云数据的部分访问,需要根据3D(空间)区域或对象访问点云数据的部分。为此,本说明书发信号通知3D区域与拼块之间或对象与拼块之间的关联。下文将详细描述3D区域与拼块之间或对象与拼块之间的关联信令。
根据实施方式,阿特拉斯数据是包括阿特拉斯序列参数集(ASPS)、阿特拉斯帧参数集(AFPS)、阿特拉斯拼块组信息(或阿特拉斯拼块信息)和SEI消息的信令信息,并且可以被称为关于阿特拉斯的元数据。
根据实施方式,阿特拉斯表示2D边界框的集合并且可以是投影到矩形帧上的补片。
根据实施方式,阿特拉斯帧是补片被投影到其上的阿特拉斯样本的2D矩形阵列。阿特拉斯样本是与阿特拉斯相关的补片被投影到其上的矩形帧的位置。
根据实施方式,阿特拉斯帧可以被分割为一个或更多个矩形拼块。也就是说,拼块是用于分割2D帧的单位。换句话说,拼块是用于分割点云数据的信令信息(称为阿特拉斯)的单位。根据实施方式,拼块在阿特拉斯帧中不重叠,并且一个阿特拉斯帧可以包括与拼块无关的区域。此外,一个阿特拉斯中包括的每个拼块的高度和宽度对于每个拼块可以是不同的。
根据实施方式,一个3D区域可以对应于一个阿特拉斯帧,因此一个3D区域可以与多个2D区域相关联。
根据实施方式,补片是构成点云的点的集合。属于同一补片的点在3D空间中彼此相邻,并在映射到2D图像的过程中在六个边界框平面当中沿相同方向映射。补片是关于点云数据的构造的信令信息。
根据实施方式的接收装置可以基于阿特拉斯(拼块或补片)来恢复属性视频数据、几何视频数据和占用视频数据,它们是具有相同呈现时间的实际视频数据。
此外,当用户放大或改变视口时,除了整体点云对象/数据之外的部分的点云对象/数据可以被渲染或显示在用户视口上。在这种情况下,对于PCC解码器/播放器,解码或处理与在用户视口上渲染或显示的部分的点云数据相关联的视频或阿特拉斯数据,而不解码或处理与未渲染或显示的部分/区域的点云数据相关联的视频或阿特拉斯数据,是高效的。
为此,需要支持点云数据的部分访问。
在这种情况下,对应于整体点云数据的特定3D空间区域的部分点云数据可以与一个或更多个2D区域相关。根据实施方式,2D区域指代包括与对应3D区域内的点云数据相关的数据的一个或更多个视频帧或阿特拉斯帧。
图24示出根据实施方式的点云数据的部分3D区域与视频帧中的一个或更多个2D区域之间的示例性关联。
如图24所示,与点云数据的部分3D区域相关联的数据可以与视频帧中的一个或更多个2D区域的视频数据相关联。也就是说,与点云数据的对象24010(或边界框)的部分3D区域24020相关联的数据可以与视频帧24030中的一个或更多个2D区域24040、24050和24060的视频数据相关联。
在动态点云数据(即,点云的点数或点云的位置随时间变化的数据)的情况下,显示在同一3D区域中的点云数据可以随时间变化。
因此,为了能够在接收装置的PCC解码器/播放器中实现在用户视口上渲染/显示的点云数据的空间或部分访问,发送装置可以通过V-PCC比特流发送关于视频帧中的与能够随时间变化的点云的3D区域相关的一个或更多个2D区域的信息,或者以文件中的信令或元数据的形式发送它。在本说明书中,通过V-PCC比特流或在文件中以信令或元数据的形式发送的信息称为信令信息。
根据实施方式的方法/装置可以编码随时间变化的点云数据(即,动态点云数据),发送和接收动态点云数据,以及解码动态点云数据。在这种情况下,显示在同一3D区域中的点云数据可以随时间变化。
当用户放大或改变视口时,根据实施方式的接收装置和渲染器可以在用户视口上渲染或显示点云对象/数据的一部分。
对于高效的过程,根据实施方式的PCC解码器/播放器可以解码或处理与在用户视口上渲染或显示的部分点云数据相关联的视频或阿特拉斯数据。
对于高效的过程,根据实施方式的PCC解码器/播放器可以不解码或处理与未渲染或显示的部分/区域的点云数据相关联的视频或阿特拉斯数据。
换句话说,需要信令信息以便接收装置从文件中提取全部点云数据当中的与特定3D空间区域相对应的部分点云数据,并对提取的部分点云数据进行解码和/或渲染。也就是说,需要用于支持接收装置的部分访问的信令信息。
此外,当接收装置基于用户视口渲染点云数据时,需要用于从文件中提取整体点云数据中的部分点云数据并解码和/或渲染部分点云数据的信令信息。
根据实施方式,从文件中提取全部点云数据当中的仅部分点云数据并解码部分点云数据所需的信令信息(即,用于部分访问的信令信息)可以包括3D边界框信息、3D空间区域信息、2D区域信息和3D区域映射信息。信令信息可以存储在轨道内的样本、轨道内的样本条目、轨道内的样本组、轨道组或单独的元数据轨道中。具体地,可以将一些信令信息以盒或整盒的形式存储在样本条目中。后面将详细描述包括在信令信息中的3D边界框信息、3D空间区域信息、2D区域信息和3D区域映射信息的存储和信令。
根据实施方式,用于支持部分访问的信令信息可以由发送装置的元数据生成单元(例如,图18的元数据编码单元18005)生成,然后由文件/片段封装模块或单元在轨道内的样本、轨道内的样本条目、轨道内的样本组、轨道组或单独的元数据轨道中发信号通知。另选地,信令信息可以由文件/片段封装模块生成,然后在轨道内的样本、轨道内的样本条目、轨道内的样本组、轨道组或单独的元数据轨道中发信号通知。在本说明书中,信令信息可以包括关于点云数据的元数据(例如,设置值)。取决于应用,信令信息也可以在系统侧(诸如,文件格式、HTTP上的动态自适应流传输(DASH)或MPEG媒体传输(MMT))定义,或者在有线接口侧(诸如高清多媒体接口(HDMI)、显示端口、视频电子标准协会(VESA)或CTA)定义。
根据实施方式的方法/装置可以将3D区域信息或与3D区域信息相关联的视频阿特拉斯帧中的2D区域相关信息发信号通知到V-PCC比特流(例如,参见图25)以执行发送和接收。
根据实施方式的方法/装置可以将3D区域信息或者与3D区域信息相关联的视频或阿特拉斯帧中的2D区域相关信息发信号通知到文件以执行发送和接收。
根据实施方式的方法/装置可以将与图像项目相关联的3D区域信息或者与3D区域信息相关联的视频或阿特拉斯帧中的2D区域相关信息发信号通知到文件以执行发送和接收。
根据实施方式的方法/装置可以对包括与3D区域相关联的数据的轨道进行分组并且生成与轨道相关的信令信息以执行发送和接收。
根据实施方式的方法/装置可以对包括与2D区域相关联的数据的轨道进行分组并且生成与轨道相关的信令信息以执行发送和接收。
图25示出了根据本公开的其它实施方式的V-PCC比特流结构的示例。在实施方式中,图25的V-PCC比特流由图1、图4、图18、图20或图21的基于V-PCC的点云视频编码器生成和输出。
根据实施方式的包含编码点云序列(CPCS)的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单元的集合。
样本流V-PCC头40010可以指定所有样本流V-PCC单元中的ssvu_vpcc_unit_size元素的精度(以字节为单位)。
每个样本流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)。这两个术语可以互换使用。
图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头的语法结构的示例。
根据实施方式的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())和V-PCC单元有效载荷(vpcc_unit_payload())组成。根据实施方式的V-PCC单元可以包含更多数据。在这种情况下,它还可以包括trailing_zero_8bits字段。根据实施方式的trailing_zero_8bits字段是对应于0x00的字节。
图30示出根据实施方式的V-PCC单元头的语法结构的示例。在实施方式中,图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-PCCVPS的vps_vpcc_parameter_set_id的值。
vuh_atlas_id字段指定对应于当前V-PCC单元的阿特拉斯的索引(或标识符)。
当vuh_unit_type字段指示VPCC_AVD时,根据实施方式的V-PCC单元头还可以包括vuh_attribute_index字段、vuh_attribute_dimension_index字段、vuh_map_index字段和vuh_raw_video_flag字段。
vuh_attribute_index字段指示属性视频数据单元中载送的属性数据的索引。
vuh_attribute_dimension_index字段指示属性视频数据单元中载送的属性维度组的索引。
当存在时,vuh_map_index字段可以指示当前几何或属性流的图索引。
vuh_raw_video_flag字段可以指示是否包含RAW编码点。例如,设置为1的vuh_raw_video_flag字段可以指示相关联的属性视频数据单元仅包含RAW编码点。作为另一示例,设置为0的vuh_raw_video_flag字段可以指示相关联的属性视频数据单元可以包含RAW编码点。当vuh_raw_video_flag字段不存在时,其值可被推断为等于0。根据实施方式,RAW编码点也被称为脉冲编码调制(PCM)编码点。
当vuh_unit_type字段指示VPCC_GVD时,根据实施方式的V-PCC单元头还可以包括vuh_map_index字段、vuh_raw_video_flag字段和vuh_reserved_zero_12bits字段。
当存在时,vuh_map_index字段指示当前几何流的索引。
vuh_raw_video_flag字段可以指示是否包含RAW编码点。例如,设置为1的vuh_raw_video_flag字段可以指示相关的几何视频数据单元仅包含RAW编码点。作为另一示例,设置为0的vuh_raw_video_flag字段可以指示相关联的几何视频数据单元可以包含RAW编码点。当vuh_raw_video_flag字段不存在时,其值可被推断为等于0。根据实施方式,RAW编码点也被称为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())的示例性语法结构。
也就是说,V-PCC比特流是V-PCC分量(例如,阿特拉斯、占用图、几何图形和属性)的集合。阿特拉斯分量(或阿特拉斯帧)可以划分为一个或更多个拼块(或拼块组),并且可以封装在NAL单元中。在实施方式中,阿特拉斯帧中的一个或更多个拼块的集合可以称为拼块组。在另一实施方式中,阿特拉斯帧中的一个或更多个拼块的集合也可以称为拼块。例如,阿特拉斯帧可以被划分为一个或更多个矩形分区并且一个或更多个矩形分区可以被称为拼块。
根据实施方式,编码的V-PCC视频分量被称为视频比特流并且阿特拉斯分量被称为阿特拉斯比特流。视频比特流可以被拆分成更小的单元,例如,视频子比特流,并且阿特拉斯比特流也可以被拆分成更小的单元,例如,阿特拉斯子比特流。
图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参数集(VPS)的示例性语法结构。
根据实施方式,VPS可以包括profile_tier_level()、vps_vpcc_parameter_set_id字段和sps_bounding_box_present_flag字段。
profile_tier_level()指定对比特流的限制。例如,profile_tier_level()指定对解码比特流所需的能力的限制。配置文件(profile)、层和级别也可用于指示各个解码器实现之间的互操作性点。
vps_vpcc_parameter_set_id字段可以为V-PCC VPS提供标识符以供其它语法元素参考。
sps_bounding_box_present_flag字段表示标志,该标志指示比特流中是否存在关于点云对象/内容的整体(整个)边界框的信息(整体边界框可以是包括随时间变化的所有边界框的边界框)。例如,sps_bounding_box_present_flag字段等于1可以表示该比特流中载送的点云内容的整体边界框偏移和大小信息。
根据实施方式,当sps_bounding_box_present_flag字段等于1时,VPS还可以包括sps_bounding_box_offset_x字段,sps_bounding_box_offset_y字段,sps_bounding_box_offset_z字段,sps_bounding_box_size_width字段,sps_bounding_box_size_height字段,sps_bounding_box_size_depth字段,sps_bounding_box_changed_flag字段,和sps_bounding_box_info_flag字段。
sps_bounding_box_offset_x字段指示整体边界框偏移的x偏移,作为笛卡尔坐标中比特流中载送的点云内容的大小信息。当不存在时,sps_bounding_box_offset_x的值可以被推断为0。
sps_bounding_box_offset_y字段指示整体边界框偏移的y偏移,作为笛卡尔坐标中比特流中载送的点云内容的大小信息。当不存在时,sps_bounding_box_offset_y的值可以被推断为0。
sps_bounding_box_offset_z字段指示整体边界框偏移的z偏移,作为笛卡尔坐标中比特流中载送的点云内容的大小信息。当不存在时,sps_bounding_box_offset_z的值可以被推断为0。
sps_bounding_box_size_width字段指示整体边界框偏移的宽度,作为笛卡尔坐标中比特流中载送的点云内容的大小信息。当不存在时,sps_bounding_box_size_width的值可以被推断为1。
sps_bounding_box_size_height字段指示整体边界框偏移的高度,作为笛卡尔坐标中比特流中载送的点云内容的大小信息。当不存在时,sps_bounding_box_size_height的值可以被推断为1。
sps_bounding_box_size_depth字段指示整体边界框偏移的深度,作为笛卡尔坐标中比特流中载送的点云内容的大小信息。当不存在时,sps_bounding_box_size_depth的值可以被推断为1。
sps_bounding_box_changed_flag字段可以指示包括在比特流中的点云数据的边界框是否随时间变化。例如,sps_bounding_box_changed_flag字段等于1可以指示点云数据的边界框随时间变化。
sps_bounding_box_info_flag字段可以指示是否存在比特流中的包括点云数据的边界框信息的SEI。例如,sps_bounding_box_info_flag字段等于1可以指示包括点云数据的边界框信息的SEI(3D边界框SEI)被包括在比特流中。在这种情况下,这可以指示对应于根据实施方式的方法/装置的PCC播放器获取并使用包括在对应的SEI中的信息。
根据实施方式的VPS还可以包括vps_atlas_count_minus1字段。vps_atlas_count_minus1字段加1指示当前比特流中支持的阿特拉斯的总数量。
根据实施方式的VPS可以包括重复与vps_atlas_count_minus1字段的值一样多的第一迭代语句。第一迭代语句可以包括vps_frame_width[j]字段、vps_frame_height[j]字段、vps_map_count_minus1[j]字段和vps_raw_patch_enabled_flag[j]字段。在实施方式中,索引j被初始化为0并在每次执行第一迭代语句时递增1,并且重复第一迭代语句直到j的值变为vps_atlas_count_minus1字段的值。
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_multiple_map_streams_present_flag[j]字段并且vps_map_absolute_coding_enabled_flag[j][0]=1。
vps_multiple_map_streams_present_flag[j]字段等于0指示具有索引j的阿特拉斯的所有几何或属性图分别放置在单个几何或属性视频流中。vps_multiple_map_streams_present_flag[j]字段等于1指示具有索引j的阿特拉斯的所有几何或属性图放置在单独的视频流中。
根据实施方式,第一迭代语句包括重复与vps_map_count_minus1[j]字段的值一样多的第二迭代语句。在实施方式中,索引i被初始化为0并在每次执行第二迭代语句时递增1,并且重复第二迭代语句直到i的值变为vps_map_count_minus1字段的值。
根据vps_multiple_map_streams_present_flag[j]字段的值,第二迭代语句还可以包括vps_map_absolute_coding_enabled_flag[j][i]字段和/或vps_map_predictor_index_diff[j][i]字段。
根据实施方式,如果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_raw_patch_enabled_flag[j]字段。
vps_raw_patch_enabled_flag[j]字段等于1指示具有索引为j的阿特拉斯的原始编码点的补片可以存在于比特流中。
根据实施方式,如果vps_raw_patch_enabled_flag[j]字段的值为真(True),则第二迭代语句还可以包括vps_raw_separate_video_present_flag[j]字段、occupancy_information(j)、geometry_information(j)和attribute_information(j)。
vps_raw_separate_video_present_flag[j]字段等于1指示具有索引j的阿特拉斯的原始编码的几何和属性信息可以存储在单独的视频流中。
occupancy_information(j)包括与索引为j的阿特拉斯的占用视频相关的参数集。
geometry_information(j)包括与索引为j的阿特拉斯的几何视频相关的参数集。
attribute_information(j)包括与索引为j的阿特拉斯的属性视频相关的参数集。
图34示出根据实施方式的阿特拉斯子流的示例性结构。在实施方式中,图34的阿特拉斯子流符合HEVC NAL单元的格式。
根据实施方式的阿特拉斯子流41000可以包括样本流NAL头41010以及一个或更多个样本流NAL单元41020。
根据实施方式的一个或更多个样本流NAL单元41020可以包括:包括ASPS的样本流NAL单元41030、包括AFPS的样本流NAL单元41040、包括关于一个或更多个阿特拉斯拼块(或拼块组)的信息的一个或更多个样本流NAL单元41050、和/或包括一个或更多个SEI消息的一个或更多个样本流NAL单元41060。
图35示出根据实施方式的包含在阿特拉斯子流中的样本流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字段是预留字段以供将来使用。
图36示出根据实施方式的样本流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)、阿特拉斯拼块组信息和SEI消息之一。也就是说,每个样本流NAL单元可以包含ASPS、AFPS、阿特拉斯拼块组信息或SEI消息。根据实施方式,ASPS、AFPS、阿特拉斯拼块组信息和SEI消息被称为阿特拉斯数据(或阿特拉斯元数据)。
根据实施方式的SEI消息可以辅助与解码、重构、显示或其它目的相关的处理。
根据实施方式的每个SEI消息由SEI消息头和SEI消息有效载荷(sei_payload)组成。SEI消息头可以包含有效载荷类型信息(payloadType)和有效载荷大小信息(payloadSize)。
有效载荷类型指示SEI消息的有效载荷类型。例如,可以基于payloadType来识别SEI消息是前缀SEI消息还是后缀SEI消息。
有效载荷大小指示SEI消息的有效载荷大小。
图37示出根据实施方式的atlas_sequence_parameter_set()的示例性语法结构。当NAL单元的类型是阿特拉斯序列参数时,图37的ASPS可以包括在符合HEVC NAL单元格式的样本流NAL单元中。
ASPS可以包括应用于由ASPS中的语法元素的内容确定的零个或一个或更多个完整编码的阿特拉斯序列(CAS)的语法元素,其被引用为每个拼块组(或拼块)头中的语法元素。
根据实施方式,ASPS可以包括asps_atlas_sequence_parameter_set_id字段、asps_frame_width字段、asps_frame_height字段、asps_log2_patch_packing_block_size字段、asps_log2_max_atlas_frame_order_cnt_lsb_minus4字段、asps_max_dec_atlas_frame_buffering_minus1字段、asps_long_term_ref_atlas_frames_flag字段、asps_num_ref_atlas_frame_lists_in_asps字段、asps_use_eight_orientations_flag字段、asps_45degree_projection_patch_present_flag字段、asps_normal_axis_limits_quantization_enabled_flag字段、asps_normal_axis_max_delta_value_enabled_flag字段、asps_remove_duplicate_point_enabled_flag字段、asps_pixel_deinterleaving_flag字段、asps_patch_precedence_order_flag字段、asps_patch_size_quantizer_present_flag字段、asps_enhanced_occupancy_map_for_depth_flag字段、asps_point_local_reconstruction_enabled_flag字段、和asps_vui_parameters_present_flagfield。
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)语法结构的数量。
ref_list_struct(i)可以根据asps_num_ref_atlas_frame_lists_in_asps字段的值而被包括在阿特拉斯序列参数集中。
asps_use_eight_orientations_flag字段等于0指定在具有索引i的帧中具有索引j的补片的补片取向索引pdu_orientation_index[i][j]字段在0到1的范围内(包括0和1)。asps_use_eight_orientations_flag字段等于1指定在具有索引i的帧中具有索引j的补片的补片取向索引pdu_orientation_index[i][j]字段在0到7的范围内(包括0和7)。
asps_45degree_projection_patch_present_flag字段等于0指定不针对当前阿特拉斯拼块(或阿特拉斯拼块组)发信号通知拼块投影信息。asps_45degree_projection_present_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_enhanced_occupancy_map_for_depth_flag字段等于1指示当前阿特拉斯的解码的占用图视频包含与两个深度图之间的中间深度位置是否被占用相关的信息。asps_eom_patch_enabled_flag字段等于0指示解码的占用图视频不包含与两个深度图之间的中间深度位置是否被占用相关的信息。
asps_point_local_reconstruction_enabled_flag字段等于1指示点局部重构模式信息可以存在于当前阿特拉斯的比特流中。asps_point_local_reconstruction_enabled_flag字段等于0指示当前阿特拉斯的比特流中不存在与点局部重构模式相关的信息。
当asps_enhanced_occupancy_map_for_depth_flag字段或asps_point_local_reconstruction_enabled_flag字段等于1时,asps_map_count_minus1字段可以包括在ASPS中。
asps_map_count_minus1字段加1指示可以用于编码当前阿特拉斯的几何和属性数据的图的数量。
当asps_enhanced_occupancy_map_for_depth_flag字段和asps_map_count_minus1字段被设置为0时,asps_enhanced_occupancy_map_fix_bit_count_minus1字段可以包括在ASPS中。
asps_enhanced_occupancy_map_fix_bit_count_minus1字段加1指示EOM码字的比特大小。
当asps_point_local_reconstruction_enabled_flag字段等于1时,ASPS可以包括ASPS点局部重构信息(asps_point_local_reconstruction_information(asps_map_count_minus1))。
当asps_pixel_deinterleaving_flag字段(或asps_pixel_interleaving_flag字段)或asps_point_local_reconstruction_enabled_flag字段等于1时,asps_surface_thickness_minus1字段可以包括在ASPS中。
asps_surface_thickness_minus1字段加1指定显式编码的深度值和插值深度值之间的最大绝对差。
asps_vui_parameters_present_flag字段等于1指定vui_parameters()语法结构存在于ASPS中。asps_vui_parameters_present_flag字段等于0指定vui_parameters()语法结构不存在于ASPS中。也就是说,如果asps_vui_parameters_present_flag字段的值为1,则vui_parameters()语法被包括在ASPS中。
图38示出根据实施方式的阿特拉斯帧参数集(AFPS)的示例性语法结构。当NAL单元的类型是阿特拉斯帧参数时,图38的AFPS可以包括在符合HEVC NAL单元格式的样本流NAL单元中。
AFPS包括语法结构,该语法结构包括应用于零个或一个或更多个完整编码的阿特拉斯帧的语法元素。
根据实施方式,AFPS可以包括afps_atlas_frame_parameter_set_id字段、afps_atlas_sequence_parameter_set_id字段、atlas_frame_tile_information()、afps_num_ref_idx_default_active_minus1字段、afps_additional_lt_afoc_lsb_len字段、afps_2d_pos_x_bit_count_minus1字段、afps_2d_pos_y_bit_count_minus1字段、afps_3d_pos_x_bit_count_minus1字段、afps_3d_pos_y_bit_count_minus1字段、afps_lod_bit_count字段、afps_override_eom_for_depth_flag字段和afps_raw_3d_pos_bit_count_explicit_mode_flag字段。
afps_atlas_frame_parameter_set_id字段指定用于标识AFPS的标识符,以供其它语法元素参考。
afps_atlas_sequence_parameter_set_id字段指定活动ASPS的asps_atlas_sequence_parameter_set_id的值。
将参照图39详细描述atlas_frame_tile_information()。
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_2d_pos_x_bit_count_minus1字段加1指定在引用afps_atlas_frame_parameter_set_id的阿特拉斯拼块(或拼块组)中具有索引j的补片的pdu_2d_pos_x[j]的固定长度表示中的比特数量。
afps_2d_pos_y_bit_count_minus1字段加1指定在引用afps_atlas_frame_parameter_set_id的阿特拉斯拼块(或拼块组)中具有索引j的补片的pdu_2d_pos_y[j]的固定长度表示中的比特数量。
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_bit_count字段指定在引用afps_atlas_frame_parameter_set_id字段的阿特拉斯拼块(或拼块组)中具有索引j的补片的pdu_lod[j]的固定长度表示中的比特数量。
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字段的拼块组头中。
图39示出根据实施方式的阿特拉斯帧拼块信息(atlas_frame_tile_information)的示例性语法结构。
图39示出图38的AFPS中包括的阿特拉斯帧拼块信息(AFTI)的语法的实施方式。
根据实施方式,AFTI可以包括afti_single_tile_in_atlas_frame_flag字段、afti_num_tiles_in_atlas_frame_minus1字段、afti_num_tile_groups_in_atlas_frame_minus1字段或afti_signalled_tile_group_id_flag字段。
afti_single_tile_in_atlas_frame_flag字段等于1指定在引用AFPS的每个阿特拉斯帧中只有一个拼块。afti_single_tile_in_atlas_frame_flag字段等于0指定在引用AFPS的每个阿特拉斯帧中存在多个拼块。
如果afti_single_tile_in_atlas_frame_flag字段的值为假(False)(例如,0),则afti_uniform_tile_spacing_flag字段可以包括在AFTI中。
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_uniform_tile_spacing_flag字段的值为真(例如,1),则afti_tile_cols_width_minus1字段和afti_tile_rows_height_minus1字段可以包括在AFTI中。
afti_tile_cols_width_minus1字段的值加1指定以64个样本为单位的阿特拉斯帧的不包括最右拼块列的拼块列的宽度。
afti_tile_rows_height_minus1字段的值加1指定以64个样本为单位的阿特拉斯帧的不包括最下拼块行的拼块行的高度。
如果afti_uniform_tile_spacing_flag字段的值为假(例如,0),则afti_num_tile_columns_minus1字段和afti_num_tile_rows_minus1字段可以包括在AFTI中。
afti_num_tile_columns_minus1字段的值加1指定分割阿特拉斯帧的拼块列数。
afti_num_tile_rows_minus1字段的值加1指定了分割阿特拉斯帧的拼块行数。
AFTI中可以包括与afti_num_tile_columns_minus1字段的值一样多的afti_tile_column_width_minus1[i]字段,并且可以在AFTI中包括与afti_num_tile_rows_minus1字段的值一样多的afti_tile_row_height_minus1[i]字段。
afti_tile_column_width_minus1[i]字段的值加1指定以64个样本为单位的第i个拼块列的宽度。
afti_tile_row_height_minus1[i]字段的值加1可以指定以64个样本为单位的第i个拼块行的高度。
afti_num_tiles_in_atlas_frame_minus1字段的值加1指定引用AFPS的每个阿特拉斯帧中的拼块的数量。
AFTI中可以包括与afti_num_tiles_in_atlas_frame_minus1字段的值一样多的afti_tile_idx[i]字段。
afti_tile_idx[i]字段指定引用AFPS的每个阿特拉斯帧中的第i个拼块的拼块索引。
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中。
afti_num_tile_groups_in_atlas_frame_minus1字段的值加1指定引用AFPS的每个阿特拉斯帧中的拼块组(或拼块)的数量。afti_num_tile_groups_in_atlas_frame_minus1字段的值可以在0到NumTilesInAtlasFrame-1的范围内(包括0和NumTilesInAtlasFrame-1)。如果afti_num_tile_groups_in_atlas_frame_minus1字段不存在且afti_single_tile_per_tile_group_flag等于1,则可以推断afti_num_tile_groups_in_atlas_frame_minus1的值等于NumTilesInAtlasFrame-1。
AFTI中可以包括与afti_num_tile_groups_in_atlas_frame_minus1字段的值一样多的afti_top_left_tile_idx[i]字段和afti_bottom_right_tile_idx_delta[i]字段。
afti_top_left_tile_idx[i]字段可以指定位于第i个拼块组(或拼块)左上角的拼块的拼块索引。对于任何不等于j的i,afti_top_left_tile_idx[i]字段的值不等于afti_top_left_tile_idx[j]字段的值。如果afti_top_left_tile_idx[j]字段不存在,则afti_top_left_tile_idx[i]的值可以被推断为等于i。afti_top_left_tile_idx[i]字段的长度可以是Ceil(Log2(NumTilesInAtlasFrame))个比特。
afti_bottom_right_tile_idx_delta[i]字段可以指定位于第i个拼块组(或拼块)的右下角的拼块的拼块索引与afti_top_left_tile_idx[i]字段之间的差异。如果afti_single_tile_per_tile_group_flag字段等于1,则afti_bottom_right_tile_idx_delta[i]字段的值可以推断为等于0。afti_bottom_right_tile_idx_delta[i]字段的长度可以是Ceil(Log2(NumTilesInAtlasFrame-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中。
afti_signalled_tile_group_id_length_minus1字段的值加1指定用于表示语法元素afti_tile_group_id[i]的比特数量。如果存在afti_tile_group_id[i]字段,则在拼块(或拼块组)头中可以存在语法元素atgh_address。
AFTI中可以包括与afti_signalled_tile_group_id_length_minus1字段的值一样多的afti_tile_group_id[i]字段。
afti_tile_group_id[i]字段指定第i个拼块组的拼块组(或拼块)ID。afti_tile_group_id[i]字段的长度是afti_signalled_tile_group_id_length_minus1+1个比特。
图40示出根据实施方式的补充增强信息(SEI)的示例性语法结构。图40的SEI可以包括在符合HEVC NAL单元的样本流NAL单元中。
根据实施方式的接收方法/装置和系统可以被配置为基于SEI消息解码、恢复和显示点云数据。
根据实施方式的SEI消息可以包括前缀SEI消息或后缀SEI消息。每个SEI消息的有效载荷通过SEI消息有效载荷(sei_payload(payloadType,payloadSize))发信号通知与有效载荷类型信息(payloadType)和有效载荷大小信息(payloadSize)相对应的信息。
例如,当payloadType指示13时,有效载荷可以包括3D区域映射(3d_region_mapping(payloadSize))信息。
根据实施方式,当psd_unit_type字段指示前缀(PSD_PREFIX_SEI)时,SEI可以包括buffering_period(payloadSize)、pic_timing(payloadSize)、filler_payload(payloadSize)、user_data_registered_itu_t_t35(payloadSize)、user_data_unregistered(payloadSize)、recovery_point(payloadSize)、no_display(payloadSize)、time_code(payloadSize)、regional_nesting(payloadSize)、sei_manifest(payloadSize)、sei_prefix_indication(payloadSize)、geometry_transformation_params(payloadSize)、3d_bounding_box_info(payloadSize)和3d_region_mapping(payloadSize)、reserved_sei_message(payloadSize)。
根据实施方式,当psd_unit_type字段指示后缀(PSD_SUFFIX_SEI)时,SEI可以包括filler_payload(payloadSize)、user_data_registered_itu_t_t35(payloadSize)、user_data_unregistered(payloadSize)、decoded_pcc_hash(payloadSize)和reserved_sei_message(payloadSize)。
图41示出根据实施方式的3D边界框信息(3d_bounding_box_info(payloadSize))SEI的示例性语法结构。
根据实施方式,如果psd_unit_type字段指示前缀(PSD_PREFIX_SEI)并且有效载荷类型(payloadType)是12,则SEI消息(或SEI)的有效载荷可以包括3D边界框信息(3d_bounding_box_info(payloadSize))。为12的有效载荷类型(payloadType)是一个示例,并且本公开不限于此,因为payloadType的值容易被本领域技术人员改变。
根据实施方式,3D边界框信息可以包括3dbi_cancel_flag字段。如果3dbi_cancel_flag字段的值为假,则3D边界框信息还可以包括object_id字段、3d_bounding_box_x字段、3d_bounding_box_y字段、3d_bounding_box_z字段、3d_bounding_box_delta_x字段、3d_bounding_box_delta_y字段和3d_bounding_box_delta_z字段。
3dbi_cancel_flag字段等于1指示3D边界框信息SEI消息取消在输出顺序中的任何先前的3D边界框信息SEI消息的持久性。
object_id字段指定比特流中载送的点云对象/内容的标识符。
3d_bounding_box_x字段指示对象的3D边界框的原点位置的X坐标值。
3d_bounding_box_y字段指示对象的3D边界框的原点位置的Y坐标值。
3d_bounding_box_z字段指示对象的3D边界框的原点位置的Z坐标值。
3d_bounding_box_delta_x字段指示对象的X轴上的边界框的大小。
3d_bounding_box_delta_y字段指示对象的Y轴上的边界框的大小。
3d_bounding_box_delta_z字段指示对象的Z轴上的边界框的大小。
图42示出根据实施方式的3D区域映射信息(3d_region_mapping(payloadSize))SEI的示例性语法结构。
根据实施方式,如果psd_unit_type字段指示前缀(PSD_PREFIX_SEI)并且有效载荷类型(payloadType)是13,则SEI消息(或SEI)的有效载荷可以包括3D区域映射信息(3d_region_mapping(payloadSize))。为13的有效载荷类型(payloadType)是一个示例,并且本公开不限于此,因为payloadType的值容易被本领域技术人员改变。
根据实施方式,3D区域映射信息可以包括3dmi_cancel_flag字段。如果3dmi_cancel_flag字段的值为假,则3D边界框信息还可以包括num_3d_regions字段。
3dmi_cancel_flag字段等于1指示3D区域映射信息SEI消息取消在输出顺序上的任何先前的3D区域映射信息SEI消息的持久性。
num_3d_regions字段可以指示在相应的SEI中发信号通知的3D区域的数量。
根据实施方式,3D区域映射信息可以包括重复与num_3d_regions字段的值一样多的迭代语句。在实施方式中,索引i被初始化为0并在每次执行迭代语句时递增1,并且迭代语句被重复直到i的值变为num_3d_regions字段的值。该迭代语句可以包括3d_region_idx[i]字段、3d_region_anchor_x[i]字段、3d_region_anchor_y[i]字段、3d_region_anchor_z[i]字段、3d_region_type[i]字段和num_2d_regions[i]字段。
3d_region_idx[i]字段可以指示第i个3D区域的标识符。
3d_region_anchor_x[i]字段、3d_region_anchor_y[i]字段和3d_region_anchor_z[i]字段可以分别指示第i个3D区域的锚点的x、y和z坐标值。例如,当3D区域为立方体类型时,锚点可以是立方体的原点。也就是说,3d_region_anchor_x[i]字段、3d_region_anchor_y[i]字段和3d_region_anchor_z[i]字段可以分别指示第i个3D区域的立方体的原点位置的x、y和z坐标值。
3d_region_type[i]字段可以指示第i个3D区域的类型并且具有从0x01到立方体的类型值。
3d_region_type[i]字段等于1可以指示3D区域的类型是立方体。如果3d_region_type[i]字段的值为1,则3d_region_delta_x[i]字段、3d_region_delta_y[i]字段和3d_region_delta_z[i]字段可以包括在3D区域映射信息中。
3d_region_delta_x[i]字段、3d_region_delta_y[i]字段和3d_region_delta_y[i]字段可以分别指示第i个3D区域的x、y和z轴上的差值。
num_2d_regions[i]字段可以指示其中存在与第i个3D区域相关联的视频或阿特拉斯数据的帧的2D区域的数量。根据实施方式,2D区域可以对应于阿特拉斯帧。
根据实施方式,3D区域映射信息可以包括重复与num_2d_regions[i]字段的值一样多的迭代语句。在实施方式中,索引j被初始化为0并在每次执行迭代语句时递增1,并且重复迭代语句直到j的值变为num_2d_regions[i]字段的值。该迭代语句可以包括2d_region_idx[j]字段、2d_region_top[j]字段、2d_region_left[j]字段、2d_region_width[j]字段、2d_region_height[j]字段和num_tiles[j]字段。
2d_region_idx[j]字段可以指示第i个3D区域的第j个2D区域的标识符。
2d_region_top[j]字段和2d_region_left[j]字段可以分别指示第i个3D区域的第j个2D区域的左上位置的帧中的垂直坐标值和水平坐标值。
2d_region_width[j]字段和2d_region_height[j]字段可以分别包括第i个3D区域的第j个2D区域的帧中的水平宽度和垂直高度。
num_tiles[j]字段可以指示与第i个3D区域的第j个2D区域相关联的阿特拉斯拼块或视频拼块的数量。
根据实施方式,3D区域映射信息可以包括重复与num_tiles[j]字段的值一样多的迭代语句。在实施方式中,索引k被初始化为0并且每次执行迭代语句时递增1,并且迭代语句被重复直到k的值变为num_tiles[j]字段的值。该迭代语句可以包括tile_idx[k]字段和num_tile_groups[k]字段。
tile_idx[k]字段可以指示与第j个2D区域相关联的第k个阿特拉斯拼块或视频拼块的标识符。
num_tile_groups[k]字段可以指示与第j个2D区域相关联的第k个阿特拉斯拼块组或视频拼块组的数量。该值可以对应于阿特拉斯拼块或视频拼块的数量。
根据实施方式,3D区域映射信息可以包括重复与num_tile_groups[k]字段的值一样多的迭代语句。在实施方式中,索引k被初始化为0并在每次执行迭代语句时递增1,并且迭代语句被重复直到k的值变为num_tile_groups[k]字段的值。该迭代语句可以包括tile_group_idx[m]字段。
tile_group_idx[m]字段可以指示与第j个2D区域相关联的第m个阿特拉斯拼块组或视频拼块组的标识符。该值可以对应于拼块索引。
由于根据实施方式的信令方法,接收方法/装置可以监测3D区域与一个或更多个阿特拉斯拼块(2D区域)之间的映射关系并获取相应的数据。
图43示出根据实施方式的体积拼块信息(volumetric_tiling_info(payloadSize))SEI消息的示例性语法结构。根据实施方式,体积拼块信息可以包括每个空间区域的标识信息、3D边界框信息和/或2D边界框信息。体积拼块信息还可以包括优先级信息、依赖性信息和隐藏信息。因此,在渲染点云数据时,接收装置可以在显示装置上以适合于对应信息的形式显示每个空间区域(或空间对象)。
根据实施方式,如果psd_unit_type字段指示前缀(PSD_PREFIX_SEI)并且有效载荷类型(payloadType)是14,则SEI消息(或SEI)的有效载荷可以包括体积拼块信息(volumetric_tiling_info(payloadSize))。为14的有效载荷类型(payloadType)是一个示例,并且本公开不限于此,因为payloadType的值容易被本领域技术人员改变。
根据实施方式,体积拼块信息SEI消息可以指示V-PCC解码器(例如,点云视频解码器)应该避免解码的点云的不同特性,这些特性包括2D阿特拉斯和3D空间内的与对象的关联、区域的关联、区域的标记和关系、以及区域的对应关系。
此SEI消息的持久性范围可以是比特流的剩余部分,或者直到遇到新的体积拼块SEI消息。只有在SEI消息中指定的相应参数可以被更新。如果未修改参数并且如果vti_cancel_flag的值不等于1,则来自较早SEI消息的先前定义的参数可以是持久的。
根据实施方式,体积拼块信息可以包括vti_cancel_flag字段。如果vti_cancel_flag字段的值为假,则体积拼块信息可以包括vti_object_label_present_flag字段、vti_3d_bounding_box_present_flag字段、vti_object_priority_present_flag字段、vti_object_hidden_present_flag字段、vti_object_collision_shape_present_flag字段、vti_object_dependency_present_flag字段以及volumetric_tiling_info_objects()字段。
vti_cancel_flag字段等于1指示体积拼块信息SEI消息取消在输出顺序上的任何先前的体积拼块信息SEI消息的持久性。
vti_object_label_present_flag字段等于1指示对象标签信息存在于当前体积拼块信息SEI消息中。vti_object_label_present_flag字段等于0指示对象标签信息不存在。
vti_3d_bounding_box_present_flag字段等于1指示3D边界框信息存在于当前体积拼块信息SEI消息中。vti_3d_bounding_box_present_flag字段等于0指示不存在3D边界框信息。
vti_object_priority_present_flag字段的值等于1指示对象优先级信息存在于当前体积拼块信息SEI消息中。vti_object_priority_present_flag字段等于0指示对象优先级信息不存在。
vti_object_hidden_present_flag字段等于1指示隐藏对象信息存在于当前体积拼块信息SEI消息中。vti_object_hidden_present_flag字段等于0指示隐藏对象信息不存在。
vti_object_collision_shape_present_flag字段等于1指示对象碰撞形状信息存在于当前体积拼块信息SEI消息中。vti_object_collision_shape_present_flag字段等于0指示不存在对象碰撞形状信息。
vti_object_dependency_present_flag字段等于1指示对象依赖性信息存在于当前体积拼块信息SEI消息中。vti_object_dependency_present_flag字段等于1指示对象依赖性信息不存在。
如果vti_object_label_present_flag字段的值为1,则体积拼块信息SEI消息包括体积拼块信息标签(volumetric_tiling_info_labels())。
将参照图44详细描述体积拼块信息标签(volumetric_tiling_info_labels())。
如果vti_3d_bounding_box_present_flag字段的值为1,则体积拼块信息SEI消息可以包括vti_bounding_box_scale_log2字段、vti_3d_bounding_box_scale_log2字段和vti_3d_bounding_box_precision_minus8字段。
vti_bounding_box_scale_log2字段指示要应用于可以为对象指定的2D边界框参数的比例。
vti_3d_bounding_box_scale_log2字段指示要应用于可以为对象指定的3D边界框参数的比例。
vti_3d_bounding_box_precision_minus8字段的值加8指示可以为对象指定的3D边界框参数的精度。
当vti_object_label_present_flag字段、vti_3d_bounding_box_present_flag字段、vti_object_priority_present_flag字段、vti_object_hidden_present_flag字段、vti_object_collision_shape_present_flag字段和vti_object_dependency_present_flag字段的每个值为1时,volumetric_tiling_info_objects()指定附加信息。
将参照图45详细描述volumetric_tiling_info_objects(vti_object_label_present_flag、vti_3d_bounding_box_present_flag、vti_object_priority_present_flag、vti_object_hidden_present_flag、vti_object_collision_shape_present_flag和vti_object_dependency_present_flag)
图44示出根据实施方式的体积拼块信息标签(volumetric_tiling_info_labels())信息的示例性语法结构。在实施方式中,如果vti_object_label_present_flag字段的值是1,如图43所示,则体积拼块信息标签(volumetric_tiling_info_labels())可以被包括在体积拼块信息SEI消息中。在另一实施方式中,可以将单独的有效载荷类型(payloadType)分配给体积拼块信息标签(volumetric_tiling_info_labels())信息,从而可以将volumetric_tiling_info_labels()信息以独立的SEI消息的形式包括在样本流NAL单元中。
根据实施方式,体积拼块信息标签(volumetric_tiling_info_labels())信息可以包括vti_object_label_language_present_flag字段和vti_num_object_label_updates字段。
vti_object_label_language_present_flag字段等于1指示对象标签语言信息存在于当前体积拼块信息SEI消息中。vti_object_label_language_present_flag字段等于0指示对象标签语言信息不存在。
如果vti_object_label_language_present_flag字段的值为1,则volumetric_tiling_info_labels()信息可以包括vti_bit_equal_to_zero字段和vti_object_label_language字段。
vti_bit_equal_to_zero字段的值等于0。
vti_object_label_language字段包含语言标签,该语言标签后跟随等于0x00的空终止字节。vti_object_label_language字段的长度可以小于或等于255个字节(不包括空终止字节)。
vti_num_object_label_updates字段指示要由当前SEI更新的对象标签的数量。
与vti_num_object_label_updates字段的值一样多的vti_label_idx[i]字段、vti_label_cancel_flag字段、vti_bit_equal_to_zero字段和/或vti_label[i]字段可以包括在volumetric_tiling_info_labels()信息中。
vti_label_idx[i]字段指示要更新的第i个标签的标签索引。
vti_label_cancel_flag字段等于1指示与vti_label_idx[i]字段索引相同的标签被取消并且被设置为空字符串。vti_label_cancel_flag等于0指示与vti_label_idx[i]字段具有相同索引的标签用跟随在该元素之后的信息进行更新。
vti_bit_equal_to_zero字段的值等于0。
vti_label[i]字段指示第i个标签的标签。vti_label[i]字段的长度可以小于或等于255个字节(不包括空终止字节)。
图45示出根据实施方式的体积拼块信息对象(volumetric_tiling_info_objects())信息的示例性语法结构。在实施方式中,体积拼块信息对象(volumetric_tiling_info_objects())信息包括根据图43的vti_object_label_present_flag字段、vti_3d_bounding_box_present_flag字段、vti_object_priority_present_flag字段、vti_object_hidden_present_flag字段、vti_present_flag_collision_shape_present_flag字段和vti_object_dependency_present_flag的值的附加信息。
根据实施方式,volumetric_tiling_info_objects()信息包括vti_num_object_updates字段。
vti_num_object_updates字段指示要由当前SEI更新的对象的数量。
根据实施方式,volumetric_tiling_info_objects()信息包括与vti_num_object_updates字段的值一样多的vti_object_idx[i]字段、vti_num_object_tile_groups[i]字段和vti_object_cancel_flag[i]字段。
vti_object_idx[i]字段指示要更新的第i个对象的对象索引。
vti_num_object_tile_groups[i]字段指示与由vti_object_idx[i]字段标识的对象(即,具有索引i的对象)相关联的阿特拉斯拼块组(或拼块)的数量。
根据实施方式,volumetric_tiling_info_objects()信息包括与vti_num_object_tile_groups[i]字段的值一样多的vti_num_object_tile_group_id[k]字段。
vti_num_object_tile_group_id[k]字段指示具有索引i的对象的第k个阿特拉斯拼块组(或拼块)的标识符。
在实施方式中,vti_num_object_tile_group_id字段的值等于在AFPS的阿特拉斯帧拼块信息(atlas_frame_tile_information())中发信号通知的相关联的阿特拉斯拼块组的标识符(即,图39的afti_tile_group_id字段的值)。
vti_object_cancel_flag[i]字段等于1指示取消索引为i的对象,并且参数ObjectTracked[i]设置为0。对象的2D和3D边界框参数可以设置为0。vti_object_cancel_flag[i]字段等于0指示索引等于vti_object_idx[i]的对象用跟随在该字段之后的信息进行更新,并且参数ObjectTracked[i]设置为1。
如果vti_object_cancel_flag[i]字段的值为假(即,0),则根据vti_object_label_present_flag字段、vti_3d_bounding_box_present_flag字段、vti_object_priority_present_flag字段、vti_object_hidden_present_flag字段、vti_object_collision_shape_present_flag字段和vti_object_dependency_present_flag字段的值更新的对象的数量被添加到对象相关信息。
也就是说,vti_bounding_box_update_flag[vti_object_idx[i]]字段等于1指示存在针对具有索引i的对象的2D边界框信息。vti_bounding_box_update_flag[vti_object_idx[i]]字段等于0指示不存在2D边界框信息。
如果vti_bounding_box_update_flag[vti_object_idx[i]]字段的值为1,则vti_bounding_box_top[vti_object_idx[i]]字段、vti_bounding_box_left[vti_object_idx[i]]字段、vti_bounding_box_width[vti_object_idx[i]]字段和vti_bounding_box_height[vti_object_idx[i]]字段可以包括在volumetric_tiling_info_objects()信息中。
vti_bounding_box_top[vti_object_idx[i]]字段指示当前阿特拉斯帧中的索引为i的对象的边界框的左上位置的垂直坐标值。
vti_bounding_box_left[vti_object_idx[i]]字段指示当前阿特拉斯帧中的索引为i的对象的边界框的左上位置的水平坐标值。
vti_bounding_box_width[vti_object_idx[i]]字段指示索引为i的对象的边界框的宽度。
vti_bounding_box_height[vti_object_idx[i]]字段指示索引为i的对象的边界框的高度。
根据实施方式,如果vti3dBoundingBoxPresentFlag(即,图43的vti_3d_bounding_box_present_flag字段)的值是1,则vti_3d_bounding_box_update_flag[vti_object_idx[i]]字段可以包括在volumetric_tiling_info_objects())信息中,并且如果vti_3d_bounding_box_update_flag[vti_object_idx[i]]字段为1,则vti_3d_bounding_box_x[vti_object_idx[i]]字段,vti_3d_bounding_box_y[vti_object_idx[i]]字段,vti_3d_bounding_box_z[vti_object_idx[i]]字段,vti_3d_bounding_box_delta_x[vti_object_idx[i]]字段,vti_3d_bounding_box_delta_y[vti_object_idx[i]]字段和vti_3d_bounding_box_delta_z[vti_object_idx[i]]字段可以包括在volumetric_tiling_info_objects())信息中。
vti_3d_bounding_box_update_flag[vti_object_idx[i]]字段等于1指示存在索引为i的对象的3D边界框信息。vti_3d_bounding_box_update_flag[vti_object_idx[i]]字段等于0指示不存在3D边界框信息。
vti_3d_bounding_box_x[vti_object_idx[i]]字段指示索引为i的对象的3D边界框的原点位置的X坐标值。
vti_3d_bounding_box_y[vti_object_idx[i]]字段指示索引为i的对象的3D边界框的原点位置的Y坐标值。
vti_3d_bounding_box_z[vti_object_idx[i]]字段指示索引为i的对象的3D边界框的原点位置的Z坐标值。
vti_3d_bounding_box_delta_x[vti_object_idx[i]]字段指示具有索引i的对象在X轴上的边界框的大小。
vti_3d_bounding_box_delta_y[vti_object_idx[i]]字段表示索引为i的对象在Y轴上的边界框大小。
vti_3d_bounding_box_delta_z[vti_object_idx[i]]字段表示索引为i的对象在Z轴上的边界框的大小。
根据实施方式,如果vtiObjectPriorityPresentFlag(即,图43的vti_object_priority_present_flag字段)的值是1,则vti_object_priority_update_flag[vti_object_idx[i]]字段可以包括在volumetric_tiling_info_objects()信息中,并且如果vti_object_priority_update_flag[vti_object_idx[i]]字段为1,则vti_object_priority_value[vti_object_idx[i]]字段可以包括在volumetric_tiling_info_objects()信息中。
vti_object_priority_update_flag[vti_object_idx[i]]字段等于1指示存在针对具有索引i的对象的对象优先级更新信息。vti_object_priority_update_flag[vti_object_idx[i]]字段等于0指示不存在对象优先级更新信息。
vti_object_priority_value[vti_object_idx[i]]字段指示索引为i的对象的优先级。优先级值越低,优先级越高。
根据实施方式,如果vtiObjectHiddenPresentFlag(即,图43的vti_object_hidden_present_flag字段)的值是1,则vti_object_hidden_flag[vti_object_idx[i]]字段可以包括在volumetric_tiling_info_objects()信息中。
vti_object_hidden_flag[vti_object_idx[i]]字段等于1指示索引为i的对象是隐藏的。vti_object_hidden_flag[vti_object_idx[i]]字段等于0指示存在具有索引i的对象。
根据实施方式,如果vtiObjectLabelPresentFlag(即,图43的vti_object_label_present_flag字段)为1,则vti_object_label_update_flag[vti_object_idx[i]]字段可以被包括在volumetric_tiling_info_objects()信息中,并且如果vti_object_label_update_flag[vti_object_idx[i]字段的值为1,则vti_object_label_idx[vti_object_idx[i]]字段可以包括在volumetric_tiling_info_objects()信息中。
vti_object_label_update_flag[vti_object_idx[i]]字段等于1指示存在针对具有索引i的对象的对象标签更新信息。vti_object_label_update_flag[vti_object_idx[i]]字段等于0指示不存在对象标签更新信息。
vti_object_label_idx[vti_object_idx[i]]字段指示索引为i的对象的标签索引。
根据实施方式,如果vtiObjectCollisionShapePresentFlag(即,图43的vti_object_collision_shape_present_flag字段)的值为1,则vti_object_collision_shape_update_flag[vti_object_idx[i]]字段可以包括在volumetric_tiling_info_objects()信息中,并且如果vti_object_collision_shape_update_flag[vti_object_[i]]字段为1,则vti_object_collision_shape_id[vti_object_idx[i]]字段可以包括在volumetric_tiling_info_objects()信息中。
vti_object_collision_shape_update_flag[vti_object_idx[i]]字段等于1指示针对具有索引i的对象存在对象碰撞形状更新信息。vti_object_collision_shape_update_flag[i]等于0指示不存在对象碰撞形状更新信息。
vti_object_collision_shape_id[vti_object_idx[i]]字段指示具有索引i的对象的碰撞形状ID。
根据实施方式,如果vtiObjectDependencyPresentFlag(即,图43的vti_object_dependency_present_flag字段)为1,则vti_object_dependency_update_flag[vti_object_idx[i]]字段可以包括在volumetric_tiling_info_objects()信息中,并且如果vti_object_dependency_update_flag[vti_object_idx[i]的值]字段为1,则vti_object_num_dependencies[vti_object_idx[i]]字段可以包括在volumetric_tiling_info_objects()信息中。
vti_object_dependency_update_flag[vti_object_idx[i]]字段等于1指示针对具有索引i的对象存在对象依赖性更新信息。vti_object_dependency_update_flag[vti_object_idx[i]]字段等于0表示不存在对象依赖性更新信息。
vti_object_num_dependencies[vti_object_idx[i]]字段指示索引为i的对象的依赖性的数量。
与vti_object_num_dependencies[vti_object_idx[i]]字段的值一样多的vti_object_dependency_idx[vti_object_idx[i]][j]字段可以包括在volumetric_tiling_info_objects()信息中。
vti_object_dependency_idx[vti_object_idx[i]][j]字段指示对具有索引i的对象具有依赖性的第j个对象的索引。
此外,具有如图25所示的结构的V-PCC比特流可以被发送到接收侧,或者可以由图1、图18、图20或图21的文件/片段封装模块或单元以ISOBMFF文件格式封装,然后发送到接收侧。
在后者中,V-PCC流可以通过文件的多个轨道或单个轨道来发送。在这种情况下,可以通过图20或图22的接收装置的文件/片段解封装模块将文件解封装为V-PCC比特流。
例如,载送V-PCC参数集、几何比特流、占用图比特流、属性比特流和/或阿特拉斯数据比特流的V-PCC比特流可以通过图20或图21的文件/片段封装模块进行封装。在实施方式中,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)盒以及指示流的类型的处置器盒(HandlerBox)。
minf盒可以包括提供与mdat盒的样本相关的元数据的样本表(stbl)盒。
stbl盒可以包括样本描述(stsd)盒,该样本描述(stsd)盒提供关于所采用的编码类型的信息和该编码类型所需的初始化信息。
根据实施方式,stsd盒可以包括用于存储V-PCC比特流的轨道的样本条目。
在本公开中,文件中的载送一些或全部的V-PCC比特流的轨道可以称为V-PCC轨道或体积轨道。
为了将根据实施方式的V-PCC比特流存储在文件中的单个轨道或多个轨道中,本公开定义了体积视觉轨道、体积视觉媒体头、体积样本条目、体积样本、以及V-PCC轨道的样本和简单条目。
本文使用的术语V-PCC与基于视觉体积视频的编码(V3C)相同。这两个术语可以用来相互补充。
根据实施方式,基于视频的点云压缩(V-PCC)表示点云视觉信息的体积编码。
也就是说,moov盒的trak盒中的minf盒还可以包括体积视觉媒体头盒。体积视觉媒体头盒包含关于包含体积视觉场景的体积视觉轨道的信息。
每个体积视觉场景可以由唯一的体积视觉轨道来表示。ISOBMFF文件可以包含多个场景,因此ISOBMFF文件中可以存在多个体积视觉轨道。
根据实施方式的体积视觉轨道可以由包括在媒体盒(MediaBox)的处置器盒中的体积视觉媒体处置器类型'volv'和/或由在MediaBox的minf盒中的体积视觉媒体头(vvhd)来标识。minf盒被称为媒体信息容器或媒体信息盒。minf盒被包括在mdia盒中,mdia盒被包括在trak盒中,trak盒被包括在文件的moov盒中。文件中可以存在单个体积视觉轨道或多个体积视觉轨道。
根据实施方式,体积视觉轨道可以使用媒体信息盒(MediaInformationBox)中的体积视觉媒体头盒(VolumetricVisualMediaHeaderBox)。MediaInformationBox被称为minf盒,并且VolumetricVisualMediaHeaderBox被称为vvhd盒。根据实施方式,可以如下定义vvhd盒。
盒类型:'vvhd'
容器:MediaInformationBox
强制:是
数量:正好一个
体积视觉媒体头盒(即,vvhd类型的盒)的语法如下。
aligned(8)类VolumetricVisualMediaHeaderBox
扩展FullBox('vvhd',version=0,1){
}
version可以是指示该盒的版本的整数。
根据实施方式的体积视觉轨道可以如下使用体积视觉样本条目(VolumetricVisualSampleEntry)来进行信令信息的传输。
类VolumetricVisualSampleEntry(codingname)
扩展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单元头。
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可以包括如下所示的VPCC解码器配置记录(VPCCDecoderConfigurationRecord)。
aligned(8)类VPCCDDecoderConfigurationRecord{
unsigned int(8)configurationVersion=1;
unsigned int(3)sampleStreamSizeMinusOne;
unsigned int(5)numOfVPCCParameterSets;
for(i=0;i<numOfVPCCParameterSets;i++){
sample_stream_vpcc_unit VPCCParameterSet;
}
unsigned int(8)numOfAtlasSetupUnits;
for(i=0;i<numOfAtlasSetupUnits;i++){
sample_stream_vpcc_unit atlas_setupUnit;
}
}
VPCCDDecoderConfigurationRecord中包括的configurationVersion指示版本字段。对记录的不兼容更改由版本号的更改指示。
sampleStreamSizeMinusOne加1可以指示该配置记录中的所有样本流V-PCC单元或者该配置记录适用的流中的V-PCC样本中的ssvu_vpcc_unit_size元素的精度。
numOfVPCCParameterSets指定在VPCCDecoderConfigurationRecord中发信号通知的V-PCC参数集(VPS)的数量。
VPCCParameterSet是类型VPCC_VPS的V-PCC单元的sample_stream_vpcc_unit()实例。V-PCC单元可以包括vpcc_parameter_set()(参见图33)。也就是说,VPCCParameterSet阵列可以包括vpcc_parameter_set()。图28示出样本流V-PCC单元(sample_stream_vpcc_unit())的语法结构的示例。
numOfAtlasSetupUnits指示在VPCCDecoderConfigurationRecord中发信号通知的阿特拉斯流的设置阵列的数量。
Atlas_setupUnit是包含阿特拉斯序列参数集、阿特拉斯帧参数集、阿特拉斯拼块(或拼块组)、或SEI阿特拉斯NAL单元的sample_stream_vpcc_unit()实例(参见图34至图45)。图28示出样本流V-PCC单元(sample_stream_vpcc_unit())的语法结构的示例。
具体地,atlas_setupUnit阵列可以包括阿特拉斯参数集,这些参数集对于存在VPCCDecoderConfigurationRecord的样本条目所指的流以及阿特拉斯流SEI消息是恒定的(参见图40至图45)。根据实施方式,atlas_setupUnit可以简称为设置单元。
根据其它实施方式,VPCCDDecoderConfigurationRecord可以表示如下。
aligned(8)类VPCCDDecoderConfigurationRecord{
unsigned int(8)configurationVersion=1;
unsigned int(3)sampleStreamSizeMinusOne;
bit(2)reserved=1;
unsigned int(3)lengthSizeMinusOne;
unsigned int(5)numOfVPCCParameterSets;
for(i=0;i<numOfVPCCParameterSets;i++){
sample_stream_vpcc_unit 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++){
sample_stream_nal_unit setupUnit;
}
}
}
configurationVersion是版本字段。对记录的不兼容更改由版本号的更改指示。
lengthSizeMinusOne加1的值可以指示VPCCDecoderConfigurationRecord或VPCCDecod erConfigurationRecord应用到的流中的V-PCC样本中的所有样本流NAL单元中的ssnu_nal_unit_size元素的精度(以字节为单位)。图36示出包括ssnu_nal_unit_size字段的样本流NAL单元(sample_stream_nal_unit())的语法结构的示例。
numOfVPCCParameterSets指定在VPCCDecoderConfigurationRecord中发信号通知的V-PCC参数集(VPS)的数量。
VPCCParameterSet是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的值一样多的迭代语句可以包含array_completeness。
array_completeness等于1指示给定类型的所有阿特拉斯NAL单元都在以下阵列中,并且没有一个在流中。array_completeness等于0指示指定类型的附加阿特拉斯NAL单元可以在流中。默认值和允许值受样本条目名称的限制。
NAL_unit_type指示以下阵列中的阿特拉斯NAL单元的类型。NAL_unit_type被限制为采用指示NAL_ASPS、NAL_PREFIX_SEI或NAL_SUFFIX_SEI阿特拉斯NAL单元的值之一。
numNALUnits指示包含在VPCCDecoderConfigurationRecord中用于VPCCDecoderConfigurationRecord应用到的流的指示类型的阿特拉斯NAL单元的数量。SEI阵列应仅包含“声明性”性质的SEI消息,即提供有关整个流的信息的SEI消息。这种SEI的一个示例可以是用户数据SEI
setupUnit是sample_stream_nal_unit()实例,包含阿特拉斯序列参数集、或阿特拉斯帧参数集、或声明性SEI阿特拉斯NAL单元。
样本组
根据实施方式,图20或图21的文件/片段封装单元可以通过对一个或更多个样本进行分组来生成样本组。根据实施方式,图20或图21的文件/片段封装单元或元数据处理单元可以将与样本组相关联的信令信息发信号通知给样本、样本组或样本条目。也就是说,可以将与样本组相关联的样本组信息添加到样本、样本组或样本条目。下面将一起描述样本组信息以及对应样本组的描述。根据实施方式,样本组信息可以包括V-PCC阿特拉斯参数集样本组信息、V-PCC SEI样本组信息、V-PCC边界框样本组信息和V-PCC 3D区域映射样本组信息。
V-PCC阿特拉斯参数集样本组
根据实施方式,可以对可应用相同的V-PCC阿特拉斯参数集的一个或更多个样本进行分组,并且可以将该样本组称为V-PCC阿特拉斯参数样本组。
根据实施方式,与V-PCC阿特拉斯参数样本组相关联的V-PCC阿特拉斯参数样本组信息(VPCCAtlasParamSampleGroupDescriptionEntry)的语法可以定义如下。
aligned(8)类VPCCAtlasParamSampleGroupDescriptionEntry()扩展SampleGroupDescriptionEntry('vaps'){
unsigned int(8)numOfAtlasParameterSets;
for(i=0;i<numOfAtlasParameterSets;i++){
sample_stream_vpcc_unit atlasParameterSet;
}
}
根据实施方式,用于样本分组的“vaps”的grouping_type表示V-PCC轨道中的样本到V-PCC阿特拉斯参数样本组中载送的阿特拉斯参数集的指派。
根据实施方式,V-PCC轨道最多可以包含一个grouping_type等于'vaps'的SampleToGroupBox。
根据实施方式,如果存在具有等于'vaps'的grouping_type的SampleToGroupBox,则具有相同分组类型的伴随SampleGroupDescriptionBox存在并且包含该组样本的ID。
分组类型为“vaps”的VPCCAtlasParamSampleGroupDescriptionEntry可以包括numOfAtlasParameterSets。
numOfAtlasParameterSets指示在样本组描述中发信号通知的atlas参数集的数量。
与numOfAtlasParameterSets的值对应的atlasParameterSet可以包括在VPCCAtlasParamSampleGroupDescriptionEntry中。
atlasParameterSet是包括与该组样本相关联的ASPS或AFPS的样本流VPCC单元(sample_stream_vpcc_unit())实例。
根据另一实施方式,与V-PCC阿特拉斯参数样本组相关联的VPCCAtlasParamSampleGroupDescriptionEntry的语法可以定义如下。
aligned(8)类VPCCAtlasParamSampleGroupDescriptionEntry()扩展SampleGroupDescriptionEntry('vaps'){
unsigned int(3)lengthSizeMinusOne;
unsigned int(5)numOfAtlasParameterSets;
for(i=0;i<numOfAtlasParameterSets;i++){
sample_stream_nal_unit atlasParameterSetNALUnit;
}
}
lengthSizeMinusOne加1指示包括在相应样本组描述中发信号通知的所有样本流NAL单元中的ssnu_nal_unit_size元素的精度(以字节为单位)。
numOfAtlasParameterSets指示在样本组描述中发信号通知的阿特拉斯参数集的数量。
与numOfAtlasParameterSets的值对应的atlasParameterSetNALUnit可以包括在VPCCAtlasParamSampleGroupDescriptionEntry中。
atlasParameterSetNALUnit是包括与该组样本相关联的ASPS或AFPS的sample_stream_nal_unit()实例。
V-PCC SEI样本组
根据实施方式,可以对可应用相同V-PCC SEI的一个或更多个样本进行分组,并且可以将该样本组称为V-PCC SEI样本组。
根据实施方式,与V-PCC SEI样本组相关联的V-PCC SEI样本组信息(VPCCSEISampleGroupDescriptionEntry)的语法可以定义如下。
aligned(8)类VPCCSEISampleGroupDescriptionEntry()扩展SampleGroupDescriptionEntry('vsei'){
unsigned int(8)numOfSEIs;
for(i=0;i<numOfSEISets;i++){
sample_stream_vpcc_unit_sei;
}
}
根据实施方式,用于样本分组的“vsei”的grouping_type表示V-PCC轨道中的样本到V-PCC SEI样本组中载送的SEI的指派。
根据实施方式,V-PCC轨道可以包含最多一个grouping_type等于'vsei'的SampleToGroupBox。
根据实施方式,如果存在具有等于'vsei'的grouping_type的SampleToGroupBox,则具有相同分组类型的伴随SampleGroupDescriptionBox存在并且包含该组样本的ID。
numOfSEI指示在相应样本组描述中发信号通知的V-PCC SEI的数量。
与numOfSEI的值对应的“sei”可以包括在VPCCSEISampleGroupDescriptionEntry中。
'sei'是包括与该组样本相关联的SEI的sample_stream_vpcc_unit()实例。
根据另一实施方式,与V-PCC SEI样本组相关联的VPCCSEISampleGroupDescriptionEntry的语法可以定义如下。
aligned(8)类VPCCSEISampleGroupDescriptionEntry()扩展SampleGroupDescriptionEntry('vsei'){
unsigned int(3)lengthSizeMinusOne;
unsigned int(5)numOfSEIs;
for(i=0;i<numOfSEIs;i++){
sample_stream_nal_unit seiNALUnit;
}
}
lengthSizeMinusOne加1指示包括在此样本组描述中发信号通知的所有样本流NAL单元中的ssnu_nal_unit_size元素的精度(以字节为单位)。
numOfSEI指示在相应样本组描述中发信号通知的V-PCC SEI的数量。
与numOfSEI的值对应的atlasParameterSetNALUnit可以包括在VPCCSEISampleGroupDescriptionEntry中。
seiNALUnit是与该组样本相关联的SEI的sample_stream_nal_unit()实例。
V-PCC边界框样本组
根据实施方式,可以对可应用相同V-PCC边界框的一个或更多个样本进行分组,并且可以将该样本组称为V-PCC边界框样本组。
根据实施方式,与V-PCC边界框样本组相关联的V-PCC边界框样本组信息(VPCC3DBoundingBoxSampleGroupDescriptionEntry)的语法可以定义如下。
aligned(8)类VPCC3DBoundingBoxSampleGroupDescriptionEntry()扩展SampleGroupDescriptionEntry('vpbb'){
3DBoundingBoxInfoStruct();
}
根据实施方式,用于样本分组的“vpbb”的grouping_type表示V-PCC轨道中的样本到V-PCC边界框样本组中载送的3D边界框信息的指派。
根据实施方式,V-PCC轨道可以包含至多一个grouping_type等于'vpbb'的SampleToGroupBox。
根据实施方式,如果存在grouping_type等于'vpbb'的SampleToGroupBox,则具有相同分组类型的伴随SampleGroupDescriptionBox存在并且包含该组样本的ID。
在上述语法中,3DBoundingBoxInfoStruct()中包括的详细信息将在下面描述。
V-PCC 3D区域映射样本组
根据实施方式,可以对可应用相同V-PCC 3D区域映射的一个或更多个样本进行分组,并且可以将该样本组称为V-PCC 3D区域映射样本组。
根据实施方式,与V-PCC 3D区域映射样本组相关联的V-PCC 3D区域映射样本组信息(VPCC3DRegionMappingSampleGroupDescriptionEntry)的语法可以定义如下。
aligned(8)类VPCC3DRegionMappingSampleGroupDescriptionEntry()扩展SampleGroupDescriptionEntry('vpsr'){
VPCC3DRegionMappingBox3d_region_mapping;
}
根据实施方式,用于样本分组的“vpsr”的grouping_type表示V-PCC轨道中的样本到该样本组中载送的3D区域映射信息的指派。
根据实施方式,V-PCC轨道可以包含最多一个grouping_type等于'vpsr'的SampleToGroupBox。
根据实施方式,如果存在grouping_type等于'vpsr'的SampleToGroupBox,则具有相同分组类型的伴随SampleGroupDescriptionBox存在并且包含该组样本的ID。
在上述语法中,VPCC3DRegionMappingBox中包括的详细信息将在下面描述。
轨道组
根据实施方式,图20或图21的文件/片段封装单元可以通过对一个或更多个轨道进行分组来生成轨道组。根据实施方式,图20或图21的文件/片段封装单元或元数据处理单元可以将与轨道组相关联的信令信息发信号通知给样本、轨道组或样本条目。也就是说,可以将与轨道组相关联的轨道组信息添加到样本、轨道组或样本条目。下面将一起描述轨道组信息以及对应的轨道组的描述。根据实施方式,轨道组信息可以包括3D区域轨道组信息和2D区域轨道组信息。
3D区域轨道组
根据实施方式,可以对可应用相同3D空间区域的一个或更多个轨道进行分组,并且该轨道组可以被称为3D区域轨道组。
根据实施方式,与3D区域轨道组相关联的3D区域轨道组信息(SpatialRegionGroupBox)的语法可以定义如下。
aligned(8)类SpatialRegionGroupBox扩展TrackGroupTypeBox('3drg'){
3DRegionInfoStruct()
}
根据实施方式,track_group_type等于“3drg”的TrackGroupTypeBox指示该轨道属于对应于3D空间区域的一组V-PCC分量轨道。
根据实施方式,属于同一3D空间区域的轨道对于“3drg”的track_group_type具有相同值的track_group_id,并且一个3D空间区域中的轨道的track_group_id与另一3D空间区域中的轨道的track_group_id不同。
根据实施方式,在track_group_type等于“3drg”的TrackGroupTypeBox内具有相同track_group_id值的轨道属于相同的3D空间区域,因此track_group_type等于“3drg”的TrackGroupTypeBox中的track_group_id用作3D空间区域的标识符。
SpatialRegionGroupBox可以包括3DSpatialRegionStruct()而不是上面的3DRegionInfoStruct()。
3DRegionInfoStruct()和3DSpatialRegionStruct()包括应用于3D区域轨道组的轨道的3D区域信息。下面将描述3DRegionInfoStruct()和3DSpatialRegionStruct()中包括的详细信息。
2D区域轨道组
根据实施方式,可以对可应用相同2D区域的一个或更多个轨道进行分组,并且可以将该轨道组称为2D区域轨道组。
根据实施方式,与2D区域轨道组相关联的2D区域轨道组信息(RegionGroupBox)的语法可以定义如下。
aligned(8)类RegionGroupBox扩展TrackGroupTypeBox('2drg'){
2DRegionInfoStruct()
}
根据实施方式,track_group_type等于“2drg”的TrackGroupTypeBox可以指示该轨道属于对应于2D区域的一组V-PCC分量轨道。
根据实施方式,属于同一2D区域的轨道对于“2drg”的track_group_type具有相同值的track_group_id,并且一个2D区域中的轨道的track_group_id与另一2D区域中的轨道的track_group_id不同。
根据实施方式,在track_group_type等于“2drg”的TrackGroupTypeBox内具有相同值的track_group_id的轨道属于相同的2D区域。因此,track_group_type等于“2drg”的TrackGroupTypeBox中的track_group_id用作2D区域的标识符。
2DRegionInfoStruct()包括应用于2D区域轨道组的轨道的2D区域信息。下面将描述2DRegionInfoStruct()中包括的详细信息。
如上所述,V-PCC比特流可以被存储在单个轨道或多个轨道中然后被发送。
接下来,将描述与多个轨道相关的V-PCC比特流的多轨道容器。
根据实施方式,在多轨道容器(也称为多轨道ISOBMFFV-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 ISOBMFF容器可包括以下内容:
-V-PCC轨道,它包含V-PCC参数集(在样本条目中)和载送V-PCC参数集V-PCC单元(单元类型VPCC_VPS)和阿特拉斯V-PCC单元(单元类型VPCC_AD)的有效载荷的样本。该轨道还包括对载送视频压缩的V-PCC单元(即,单元类型VPCC_OVD、VPCC_GVD和VPCC_AVD)的有效载荷的其它轨道的轨道参考。
-受限视频方案轨道,其中样本包含用于占用图数据的视频编码基本流的访问单元(即,类型为VPCC_OVD的V-PCC单元的有效载荷)。
-一个或更多个受限视频方案轨道,其中样本包含用于几何数据的视频编码基本流的访问单元(即,类型为VPCC_GVD的V-PCC单元的有效载荷)。
-零个或多个受限视频方案轨道,其中样本包含用于属性数据的视频编码基本流的访问单元(即,类型为VPCC_AVD的V-PCC单元的有效载荷)。
接下来,下面将描述V-PCC轨道。
根据实施方式的V-PCC轨道样本条目的语法结构配置如下。
样本条目类型:“vpc1”、“vpcg”
容器:SampleDescriptionBox
强制性:“vpc1”或“vpcg”样本条目是强制性的。
数量:可以存在一个或更多个样本条目。
样本条目类型为“vpc1”或“vpcg”。
在“vpc1”样本条目下,所有阿特拉斯序列参数集、阿特拉斯帧参数集或V-PCC SEI都在setupUnit阵列(即,样本条目)中。
在“vpcg”样本条目下,阿特拉斯序列参数集、阿特拉斯帧参数集、V-PCC SEI可以存在于该阵列(即,样本条目)中或流(即,样本)中。
VPCC体积样本条目中可以存在可选的BitRateBox,以发信号通知V-PCC轨道的比特率信息。
如下面所述,V-PCC轨道使用继承VolumetricVisualSampleEntry的V-PCC样本条目(VPCCSampleEntry)。VPCCSampleEntry包括V-PCC配置盒(VPCCConfigurationBox)、V-PCC单元头盒(VPCCUnitHeaderBox)和/或VPCCBoundingInformationBox()。VPCCConfigurationBox包括V-PCC解码器配置记录(VPCCDecoderConfigurationRecord)。
体积序列:
类VPCCConfigurationBox扩展Box('vpcC'){
VPCCDecoderConfigurationRecord()VPCCConfig;
}
aligned(8)类VPCCSampleEntry()扩展VolumetricVisualSampleEntry('vpc1'){
VPCCConfigurationBox config;
VPCCUnitHeaderBox unit_header;
VPCCBoundingInformationBox();
}
图46示出根据实施方式的V-PCC样本条目的示例性结构。在图46中,V-PCC样本条目可以包括一个VPS,并且可选地包括ASPS、AFPS或SEI。也就是说,根据样本条目类型(即,vpc1或vpcg),可以将ASPS、AFPS或SEI包括在样本条目或样本中。
根据实施方式的V-PCC样本条目还可以包括样本流V-PCC头、样本流NAL头和V-PCC单元头盒。
图47示出根据实施方式的moov盒的示例性结构和样本条目的示例性结构。具体地,示出了样本条目类型为vpc1时的样本条目的结构。
在图47的moov盒中,stbl盒可以包括样本描述(stsd)盒,并且stsd盒可以包括用于存储V-PCC比特流的轨道的样本条目。在实施方式中,当样本条目类型为vpc1时,样本条目可以包括V-PCC配置盒(VPCCConfigurationBox,('vpcC'))、V-PCC单元头盒(V-PCC单元头盒('vunt'))和V-PCC 3D区域映射盒(VPCC3DRegionMappingBox('vpcr'))。根据另一实施方式,当样本条目类型为vpc1时,样本条目可以包括vpcC、vunt和V-PCC空间区域盒(VPCCSpatialRegionsBox('vpsr'))。
V-PCC配置盒(VPCCConfigurationBox,vpcC)可以包括VPCCDecoderConfigurationRecord(),VPCCDecoderConfigurationRecord()可以包括ASPS、AFPS或V-PCC SEI。
接下来,下面描述V-PCC轨道样本格式。
V-PCC轨道中的每个样本对应于单个点云帧。各种分量轨道中与该帧对应的样本与V-PCC轨道样本具有相同的合成时间。每个V-PCC样本包括一个或更多个阿特拉斯NAL单元,如下所示。
aligned(8)类VPCCSample{
unsigned int PointCloudPictureLength=sample_size;//样本的大小(例如,来自SampleSizeBox)
for(i=0;i<PointCloudPictureLength;){
sample_stream_nal_unit nalUnit
i+=(VPCCDecoderConfigurationRecord.lengthSizeMinusOne+1)+
nalUnit.ssnu_nal_unit_size;
}
}
aligned(8)类VPCCSample{
unsigned int PictureLength=sample_size;//样本的大小(例如,来自SampleSizeBox)
for(i=0;i<PictureLength;)//发信号通知直至画面的结束
{
unsigned int((VPCCDDecoderConfigurationRecord.LengthSizeMinusOne+1)*8)
NALUnitLength;
位(NALUnitLength*8)NALUnit;
i+=(VPCCDDecoderConfigurationRecord.LengthSizeMinusOne+1)+NALUnitLength;
}
}
V-PCC轨道中的同步样本(随机访问点)是V-PCC IRAP编码的补片数据访问单元的V-PCC轨道。如果需要,可以在同步样本处重复阿特拉斯参数集以允许随机访问。
接下来,下面描述视频编码的V-PCC分量轨道。
使用MPEG指定的编解码器的编码视频轨道的载送可以符合ISOBMFF推导的规范。例如,对于AVC和HEVC编码的视频的载送,可以参考ISO/IEC 14496-15。如果需要其它编解码器类型,ISOBMFF也可以提供扩展机制。
由于显示来自属性、几何或占用图轨道的解码帧而不在播放器侧重构点云是没有意义的,因此可以为这些视频编码轨道定义受限视频方案类型。
接下来,下面描述受限视频方案。
V-PCC分量视频轨道可以在文件中表示为受限视频,并且可以通过受限视频样本条目的RestrictedSchemeInfoBox的SchemeTypeBox的scheme_type字段中的'pccv'来标识。
应当注意,对用于属性、几何和占用图V-PCC分量的编码的视频编解码器没有限制。此外,可以使用不同的视频编解码器对这些分量进行编码。
根据实施方式的方案信息(SchemeInformationBox)可以存在于对应轨道的样本条目中并且包含VPCCUnitHeaderBox。
接下来,参考V-PCC分量轨道在下面描述。
为了将V-PCC轨道链接到分量视频轨道,可以将三个TrackReferenceTypeBox添加到V-PCC轨道的样本条目的TrackBox内的TrackReferenceBox,每个分量一个。TrackReferenceTypeBox包含指定V-PCC轨道参考的视频轨道的track_ID的阵列。TrackReferenceTypeBox的reference_type标识分量的类型,诸如占用图、几何或属性。轨道参考类型如下。
在“pcco”中,参考轨道包含视频编码的占用图V-PCC分量。
在“pccg”中,参考轨道包含视频编码的几何V-PCC分量。
在“pcca”中,参考的轨道包含视频编码的属性V-PCC分量。
由参考的受限视频轨道载送并在轨道的RestrictedSchemeInfoBox中发信号通知的V-PCC分量的类型应与来自V-PCC轨道的轨道参考的参考类型相匹配。
图48示出根据实施方式的示例性轨道备选和轨道分组。在图48中,应用了ISOBMFF文件结构的轨道备选或轨道分组。
根据实施方式,具有相同值的alternate_group的V-PCC分量轨道是相同V-PCC分量的不同编码版本。体积视觉场景可以被另选地编码。在这种情况下,所有备选V-PCC轨道在TrackHeaderBox内具有相同值的alternate_group。
类似地,当表示V-PCC分量之一的2D视频轨道被编码为备选时,可以存在此类备选和形成备选组的备选之一的轨道参考。
参照图48,示出构成基于文件结构的V-PCC内容的V-PCC分量轨道。阿特拉斯组ID可以相等,或者可以是10、11或12。可以另选地使用与属性视频对应的轨道2和轨道5。轨道3和轨道6可以另选地用作几何视频,并且轨道4和轨道7可以另选地用作占用视频。
如上所述,V-PCC比特流可以被存储在单个轨道或多个轨道中然后被发送。
接下来,将描述与单个轨道相关的V-PCC比特流的单个轨道容器。
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”。V-PCC基本流轨道使用继承VolumetricVisualSampleEntry的V-PCC基本流样本条目(VPCCElementaryStreamSampleEntry)。样本条目类型为“vpe1”的V-PCC基本流样本条目包括V-PCC配置盒(VPCCConfigurationBox)和VPCC边界框信息盒(VPCCBoundingInformationBox)。VPCCConfigurationBox包括V-PCC解码器配置记录(VPCCDecoderConfigurationRecord)。在“vpe1”样本条目下,所有的ASPS、AFPS和SEI可以存在于setupUnit阵列(即,样本阵列)内。在“vpeg”样本阵列下,ASPS、AFPS和SEI存在于该阵列(即,样本阵列)或流(即,样本)中。
体积序列:
类VPCCConfigurationBox扩展Box('vpcC'){
VPCCDecoderConfigurationRecord()VPCCConfig;
}
aligned(8)类VPCCElementaryStreamSampleEntry()扩展VolumetricVisualSampleEntry('vpe1'){
VPCCConfigurationBox config;
VPCCBoundingInformationBox 3d_bb;
}
接下来,下面描述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基本流轨道的样本条目包括每个MovieFragmentBox的TrackFragmentBox内或SampleTableBox内的SubSampleInformationBox,其列出了V-PCC基本流子样本。
可以将表示子样本的V-PCC单元的32比特单元头复制到SubSampleInformationBox内的子样本条目的32比特codec_specific_parameters字段。每个子样本的V-PCC单元类型可以通过解析SubSampleInformationBox内的子样本条目的codec_specific_parameters字段来标识。
根据实施方式,需要信令信息以便从文件中仅提取全部点云数据当中的部分点云数据并对部分点云数据进行解码,即,以便支持点云数据的部分访问。
根据实施方式,用于支持点云数据的部分访问的信令信息可以包括3D边界框信息、3D空间区域信息、2D区域信息和3D区域映射信息。信令信息可以存储在轨道内的样本、轨道内的样本条目、轨道内的样本组、轨道组或单独的元数据轨道中。具体地,信令信息的一部分可以以盒或完整盒的形式存储在样本条目中。
接下来,将描述支持点云数据的部分访问所需的信令信息。
3D边界框信息结构
根据实施方式,3D边界框信息(3DBoundingBoxInfoStruct)提供点云数据的3D边界框信息,其包括点云数据的3D边界框的x、y和z偏移以及点云数据的3D边界框的宽度、高度和深度。
根据实施方式,3DBoundingBoxInfoStruct的语法可以定义如下。
aligned(8)类3DBoundingBoxInfoStruct(){
unsigned int(16)bb_x;
unsigned int(16)bb_y;
unsigned int(16)bb_z;
unsigned int(16)bb_delta_x;
unsigned int(16)bb_delta_y;
unsigned int(16)bb_delta_z;
}
bb_x字段、bb_y字段和bb_z字段分别指定笛卡尔坐标中的点云数据的3D边界框的原点位置的x、y和z坐标值。
bb_delta_x字段、bb_delta_y字段和bb_delta_z字段分别指示笛卡尔坐标中的点云数据的3D边界框沿着x、y和z轴相对于原点位置的扩展。
3D区域信息结构
根据实施方式,3D区域信息(3DRegionInfoStruct或3DSpatialRegionStruct)可以包括关于点云数据的部分区域的3D区域信息。
根据实施方式,3DRegionInfoStruct()的语法可以定义如下。
aligned(8)类3DRegionInfoStruct(dimensions_included_flag){
unsigned int(16)3d_region_id;
unsigned int(16)3d_anchor_x;
unsigned int(16)3d_anchor_y;
unsigned int(16)3d_anchor_z;
if(3d_dimension_included_flag){
unsigned int(8)3d_region_type;
if(3d_region_type==‘1’){//立方体
unsigned int(16)3d_region_delta_x;
unsigned int(16)3d_region_delta_y;
unsigned int(16)3d_region_delta_z;
}
}
}
3d_region_id字段可以指示3D区域的标识符。
3d_region_anchor_x字段、3d_region_anchor_y字段和3d_region_anchor_z字段可以分别指示3D区域的锚点的x、y和z坐标值。例如,当3D区域为立方体类型时,锚点可以是立方体的原点。3d_region_anchor_x字段、3d_region_anchor_y字段和3d_region_anchor_z字段可以指示3D区域的立方体的原点位置的x、y和z坐标值。
3d_region_type字段可以指示3D区域的类型。可以将0x01到立方体分配为3d_region_type字段的值。
3d_dimension_included_flag字段指示3D区域的详细信息(例如,3d_region_type字段、3d_region_delta_x字段、3d_region_delta_y字段和3d_region_delta_z字段)是否包括在相应的3D区域信息中。
当3D区域的类型是立方体时,3d_region_delta_x字段、3d_region_delta_y字段和3d_region_delta_z字段可以分别指示x、y和z轴上的差值。
根据另一实施方式,3DSpatialRegionStruct()的语法可以定义如下。
aligned(8)类3DSpatialRegionStruct(dimensions_included_flag){
unsigned int(16)3d_region_id;
3DPoint anchor;
if(dimensions_included_flag){
CuboidRegionStruct();
}
}
3d_region_id字段可以指示3D区域的标识符。
3DPoint锚字段可以指示3D区域的锚点的x、y和z坐标值。例如,当3D区域为立方体类型时,锚点可以是立方体的原点。在这种情况下,3D点锚字段可以指示3D区域的立方体的原点位置的x、y和z坐标值。
dimensions_included_flag字段可以指示空间区域的维度是否被发信号通知。
dimensions_included_flag字段指示CuboidRegionStruct()是否包括在相应的3D区域信息中。
当3D区域是立方体时,CuboidRegionStruct()可以包括x、y和z轴上的差值。
二维区域信息结构
根据实施方式,2D区域信息(2DRegionInfoStruct)可以包括3D空间区域的部分区域的2D区域信息。
根据实施方式,2DRegionInfoStruct()的语法可以定义如下。
aligned(8)class 2DRegionInfoStruct(2d_dimension_included_flag){
unsigned int(8)2d_region_type;
unsigned int(16)2d_region_id;
if(2d_dimension_included_flag){
unsigned int(16)2d_region_top;
unsigned int(16)2d_region_left;
unsigned int(16)2d_region_width;
unsigned int(16)2d_region_height;
}
}
2d_region_type字段可以指示2D区域的类型。也就是说,2d_region_type字段可以指示2D区域的类型,例如,2D区域指示矩形,或者2D区域是否指示视频拼块(或拼块组),或者阿特拉斯帧中的阿特拉斯拼块(或拼块组)的标识符。
2d_region_id字段可以指示2D区域的标识符。在一些情况下,2d_region_id字段可以等于视频拼块(或拼块组)的标识符或阿特拉斯帧中的阿特拉斯拼块(或拼块组)的标识符。
2d_dimension_included_flag字段可以指示2D区域的水平坐标、垂直坐标、宽度和高度值是否包括在对应的2D区域信息中。
2d_region_top字段和2d_region_left字段可以分别指示在2D区域的左上位置的帧中的垂直坐标值和水平坐标值。
2d_region_width字段和2d_region_height字段可以分别指示2D区域的帧中的宽度值和高度值。
V-PCC 3D区域映射信息结构
根据实施方式,V-PCC 3D区域映射信息(VPCC3DRegionMappingInfoStruct)可以包括一个或更多个几何、占用图、属性视频或阿特拉斯帧的2D区域信息,其中关联数据被包括在点云数据的3D区域中并且在视频或阿特拉斯帧中。根据实施方式,VPCC3DRegionMappingInfoStruct可以包括包含3D区域数据的轨道组的标识符(轨道组可以指代包括相同3D区域的数据的轨道的集合)。
根据实施方式,VPCC3DRegionMappingInfoStruct()的语法可以定义如下。
aligned(8)类VPCC3DRegionMappingInfoStruct(){
unsigned int(16)num_3d_regions;
for(i=0;i<num_3d_regions;i++){
3DRegionInfoStruct(1);
unsigned int(8)num_2d_regions[i];
for(j=0;j<num_2d_regions[i];j++){
2DRegionInfoStruct(1);
}
unsigned int(8)num_track_groups[i];
for(k=0;k<num_track_groups[i];k++)
unsigned int(32)track_group_id;
}
}
num_3d_regions字段可以指示在VPCC3DRegionMappingInfoStruct()中发信号通知或包括在点云数据的边界框中的3D区域的数量。
VPCC3DRegionMappingInfoStruct()可以包括重复与num_3d_regions字段的值一样多的第一迭代语句。在实施方式中,i被初始化为0并在每次执行第一迭代语句时递增1,并且重复第一迭代语句直到i的值变为num_3d_regions字段的值。
第一迭代语句可以包括3DRegionInfoStruct(1)字段、num_2d_regions[i]字段和num_track_groups[i]字段。
3DRegionInfoStruct(1)可以指示3D区域信息。对于3DRegionInfoStruct(1)中包括的信息,即,字段,将参见上述“3D区域信息结构”的详细说明以避冗余描述,并且本文将省略该信息的描述。
num_2d_regions[i]字段可以指示包括与第i个3D区域中的点云数据相关联的数据的一个或更多个视频或阿特拉斯帧的2D区域的数量。
VPCC3DRegionMappingInfoStruct()可以包括重复次数与num_2d_regions[i]字段的值一样多的第二迭代语句。在实施方式中,索引j被初始化为0并在每次执行第二迭代语句时递增1,并且重复第二迭代语句直到j的值变为num_2d_regions[i]字段的值。
第二迭代语句可以包括2DRegionInfoStruct(1)。2DRegionInfoStruct(1)可以指示包括与第i个3D区域中的点云数据相关联的数据的几何、占用图、属性视频或阿特拉斯帧的2D区域信息。
对于2DRegionInfoStruct(1)中包括的信息,即,字段,将参考上述“2D区域信息结构”的详细描述以避免冗余描述,并且本文将省略该信息的描述。
num_track_groups[i]字段可以指示与第i个3D区域相关的轨道组的数量。
VPCC3DRegionMappingInfoStruct()可以包括重复次数与num_track_groups[i]字段的值一样多的第三迭代语句。在实施方式中,索引k被初始化为0并在每次执行第三迭代语句时递增1,并且重复第三迭代语句直到k的值变为num_track_groups[i]字段的值。第三迭代语句可以包括track_group_id字段。
track_group_id字段可以指示用于标识与载送第i个3D空间区域的V-PCC分量的轨道相对应的轨道组的标识符。
VPCC3DRegionMappingInfoStruct()可以包括3DSpatialRegionStruct(1)而非3DRegionInfoStruct(1)。对于3DSpatialRegionStruct(1)中包括的信息,即,字段,已参考上文对“3D区域信息结构”的详细描述以避免冗余描述,并且本文将省略该信息的描述。
V-PCC 3D区域映射信息盒结构
根据实施方式,V-PCC 3D区域映射信息盒(VPCC3DRegionMappingBox)可以包括点云数据的部分或全部3D空间中的3D区域信息、包括对应3D区域的数据的轨道组的标识符(轨道组可以指代包括相同3D区域的数据的轨道的集合)、包括与相应3D区域中的点云数据相关联的数据的一个或更多个视频或阿特拉斯帧的2D区域信息、以及关于与每个2D区域相关联的视频拼块(或拼块组)或阿特拉斯拼块(或拼块组)的信息。根据实施方式,VPCC3DRegionMappingBox还可以包括包含2D区域数据的轨道组的标识符(轨道组可以指代包括相同2D区域的轨道的集合)。
根据实施方式,可以将VPCC3DRegionMappingBox以如下完整盒的形式添加到轨道的样本条目中。
aligned(8)类VPCC3DRegionMappingBox扩展FullBox('vpsr',0,0){
VPCC3DRegionMappingInfoStruct();
unsigned int(8)num_2d_regions;
for(j=0;j<num_2d_regions;j++){
unsigned int(8)2d_region_id[j];
unsigned int(8)num_tiles[j];
for(k=0;k<num_tiles[j];k++)
unsigned int(32)tile_id[k];
unsigned int(8)num_tile_groups[j];
for(k=0;k<num_groups[j];k++)
unsigned int(32)tile_group_id[k];
unsigned int(8)num_track_groups[j];
for(k=0;k<num_track_groups[j];k++)
unsigned int(32)track_group_id;
}
}
VPCC3DRegionMappingInfoStruct()可以包括在VPCC3DRegionMappingBox中。VPCC3DRegionMappingBox还可以包括num_2d_regions字段。
VPCC3DRegionMappingInfoStruct()提供关于3D区域和2D区域之间的映射的信息。对于VPCC3DRegionMappingInfoStruct()中包括的信息,即,字段,已参考上述“V-PCC3D区域映射信息”的详细描述以避免冗余描述,并且将省略对该信息的描述。
num_2d_regions字段可以指示在VPCC3DRegionMappingBox中发信号通知的2D区域的数量。
VPCC3DRegionMappingBox可以包括重复与num_2d_regions字段的值一样多的第一迭代语句。在实施方式中,索引j被初始化为0并在每次执行第一迭代语句时递增1,并且重复第一迭代语句直到j的值变为num_2d_regions字段的值。
第一迭代语句可以包括2d_region_id[j]字段、num_tiles[j]字段、num_tile_groups[j]字段或num_track_groups[j]字段。
2d_region_id[j]字段可以指示几何、占用图、属性视频或阿特拉斯帧的第j个2D区域的标识符。
num_tiles[j]字段可以指示与几何、占用图、属性视频或阿特拉斯帧的第j个2D区域相关联的视频帧的拼块数量。
VPCC3DRegionMappingBox可以包括重复次数与num_tiles[j]字段的值一样多的第二迭代语句。在实施方式中,索引k被初始化为0并在每次执行第二迭代语句时递增1,并且重复第二迭代语句直到k的值变为num_tiles[i]字段的值。
第二迭代语句可以包括tile_id[k]字段。tile_id[k]字段可以指示与几何、占用图、属性视频或阿特拉斯帧的第j个2D区域相关联的视频帧的第k个拼块或阿特拉斯帧的第k个拼块的标识符。
num_tile_groups[j]字段可以指示与几何、占用图、属性视频或阿特拉斯帧的第j个2D区域相关联的视频帧的拼块组(或拼块)的数量。
VPCC3DRegionMappingBox可以包括重复次数与num_tile_groups[j]字段的值一样多的第三迭代语句。在实施方式中,索引k被初始化为0并在每次执行第三迭代语句时递增1,并且重复第三迭代语句直到k的值变为num_tile_groups[j]字段的值。
第三迭代语句可以包括tile_group_id[k]字段。tile_group_id[k]字段可以指示与几何、占用图、属性视频或阿特拉斯帧的第j个2D区域相关联的视频帧的第k个拼块组(或拼块)或阿特拉斯帧的第k个拼块组(或拼块)的标识符。
num_track_groups[j]字段可以指示与第j个2D空间区域相关的轨道组的数量。
VPCC3DRegionMappingBox可以包括重复次数与num_track_groups[j]字段的值一样多的第四迭代语句。在实施方式中,索引k被初始化为0并在每次执行第四迭代语句时递增1,并且重复第四迭代语句直到k的值变为num_track_groups[j]字段的值。
第四迭代语句可以包括track_group_id字段。
track_group_id字段可以指示用于标识与载送第j个2D区域的V-PCC分量的轨道相对应的第k个轨道组的标识符。
根据实施方式,3D区域信息可以分为静态3D区域信息和动态3D区域信息。也就是说,静态3D区域信息指代不随时间变化的信息,而动态3D区域信息指代随时间动态变化的信息。
接下来,将描述静态3D区域信息和动态3D区域信息。
静态V-PCC空间区域盒结构
根据实施方式,V-PCC空间区域盒(VPCCSpatialRegionsBox)可以包括关于点云数据的部分或整体3D空间中的3D区域(或称为空间区域)的信息、包括3D区域的数据的轨道组的标识信息、关于与每个3D区域相关联的拼块(或拼块组)的信息、或者关于3D区域的优先级信息、依赖性信息和隐藏信息。轨道组可以指代包括相同3D区域的数据的轨道的集合。
根据实施方式,可以将VPCCSpatialRegionsBox以完整盒的形式添加到轨道的样本条目。
aligned(8)类VPCCSpatialRegionsBox扩展FullBox('vpsr',0,0){
unsigned int(16)num_regions;
for(i=0;i<num_regions;i++){
3DSpatialRegionStruct(1);
RegionInfoStruct();
unsigned int(16)num_region_tile_groups[i];
for(k=0;k<num_region_tile_groups;k++){
unsigned int(16)region_tile_group_id;
}
unsigned int(8)num_track_groups[i];
for(j=0;j<num_track_groups;j++){
unsigned int(32)track_group_id;
}
}
}
num_regions字段指示在VPCCSpatialRegionsBox中发信号通知的3D区域(即,空间区域)的数量。
VPCCSpatialRegionsBox可以包括重复与num_regions字段的值一样多次的第一迭代语句。在实施方式中,索引i被初始化为0并在每次执行第一迭代语句时递增1,并且重复第一迭代语句直到i的值变为num_regions字段的值。
第一迭代语句可以包括3DSpatialRegionStruct(1)、RegionInfoStruct()、num_region_tile_groups[i]字段或num_track_groups[i]字段。
根据实施方式,3DSpatialRegionStruct(1)包括静态3D区域信息。对于3DSpatialRegionStruct(1)中包括的3D信息,即,字段,已参考上述“3D区域信息结构”的详细描述以避免冗余描述,并且本文将省略该信息的描述。
RegionInfoStruct()指代区域信息,并且将在后面详细描述。
num_region_tile_groups[i]字段指示与第i个3D区域相关的拼块组(或拼块)的数量。
num_track_groups[i]字段指示与第i个3D区域相关的轨道组的数量。
VPCCSpatialRegionsBox可以包括重复次数与num_region_tile_groups[i]字段的值一样多的第二迭代语句。在实施方式中,索引k被初始化为0并在每次执行第二迭代语句时递增1,并且重复第二迭代语句直到k的值变为num_region_tile_groups[i]字段的值。
第二迭代语句可以包括region_tile_group_id字段。region_tile_group_id字段可以指示与第i个3D区域相关的第k个拼块组(或拼块)的标识符。根据实施方式,region_tile_group_id字段的值可以等于包括在阿特拉斯帧中的阿特拉斯拼块(或拼块组)的阿特拉斯拼块(或拼块组)ID的值。
VPCCSpatialRegionsBox可以包括重复次数与num_track_groups[i]字段的值一样多的第三迭代语句。在实施方式中,索引j被初始化为0并在每次执行第三迭代语句时递增1,并且重复第三迭代语句直到j的值变为num_track_groups[i]字段的值。
第三迭代语句可以包括track_group_id字段。track_group_id字段可以指示用于标识与载送第i个3D区域的V-PCC分量的轨道相对应的第k个轨道组的标识符。
VPCCSpatialRegionsBox可以包括3DRegionInfoStruct(1)而不是3DSpatialRegionStruct(1)。对于3DRegionInfoStruct(1)中包括的3D信息,即,字段,已参考上述“3D区域信息结构”的详细说明以避免冗余描述,并且本文将省略该信息的描述。
动态V-PCC 3D区域信息
根据实施方式,在将V-PCC比特流封装在文件中时,图20或图21的文件/片段封装模块可以生成载送包括在V-PCC比特流中的元数据的元数据轨道。根据实施方式,元数据轨道可以被称为定时元数据轨道。
根据实施方式,由定时元数据轨道载送的元数据可以包括动态3D区域信息。根据实施方式,载送3D区域信息的定时元数据轨道可以被称为3D区域定时元数据轨道。
如果V-PCC轨道具有与样本条目类型“dyvm”相关联的定时元数据轨道,则为由V-PCC轨道载送的点云流(即,体积媒体流)定义的3D空间区域可以被视为动态区域(即,空间区域信息可以随时间动态变化)。
根据实施方式,相关联的定时元数据轨道包括用于载送阿特拉斯流的V-PCC轨道的“cdsc”轨道参考。内容描述参考“cdsc”将描述性或元数据轨道链接到内容描述参考描述的内容。根据实施方式,元数据轨道可以链接到元数据轨道使用“cdsc”轨道参考描述的轨道。
根据实施方式,3D区域定时元数据轨道中的样本条目(Dynamic3DSpatialRegionSampleEntry)的语法可以定义如下。
aligned(8)类Dynamic3DSpatialRegionSampleEntry扩展MetaDataSampleEntry('dyvm'){
VPCC3DRegionBox();
}
当3D区域信息随时间变化时,VPCC3DRegionBox()可以包括初始3D区域信息。
根据实施方式,3D区域定时元数据轨道中的样本(DynamicSpatialRegionSample)的语法可以定义如下。也就是说,该样本是对应于样本条目类型为“dyvm”的样本条目的样本。
aligned(8)DynamicSpatialRegionSample(){
unsigned int(16)num_regions;
for(i=0;i<num_regions;i++){
3DSpatialRegionStruct(dimensions_included_flag);
RegionInfoStruct();
}
}
num_regions字段可以指示在样本中发信号通知的3D区域(即,空间区域)的数量。
样可以包括重复次数与num_regions字段的值一样多的迭代语句。在实施方式中,索引i被初始化为0并在每次执行迭代语句时递增1,并且重复迭代语句直到i的值变为num_regions字段的值。
迭代语句可以包括3DSpatialRegionStruct(dimensions_included_flag)和RegionInfoStruct()。
根据实施方式,3DSpatialRegionStruct(dimensions_included_flag)包括随时间动态变化的3D区域信息。对于包括在3DSpatialRegionStruct(dimensions_included_flag)中的3D区域信息,即,字段,已参考上述“3D区域信息结构”的详细描述以避免冗余描述,并且本文将省略该信息的描述。
dimensions_included_flag字段可以指示是否发信号通知3D区域(即,空间区域)的维度。
如果dimensions_included_flag设置为0,则这暗示该区域的维度先前已在具有相同值的3d_region_id的3DSpatialRegionStruct的先前实例(无论是在先前样本中还是在样本条目中)中发信号通知。
RegionInfoStruct()称为区域信息并且将在下面详细描述。
区域信息结构(RegionInfoStruct())
根据实施方式,RegionInfoStruct()可以包括关于3D区域的优先级信息、依赖性信息和隐藏信息。
根据实施方式,RegionInfoStruct()可以定义如下。
aligned(8)类RegionInfoStruct(){
unsigned int(4)priority;
unsigned int(8)numOfDependencies;
bool(1)hidden;
for(i=0;i<numOfDependencies;i++){
unsigned int(8)dependency_id;
}//附加字段
}
priority字段可以指示与对应的3D区域相关联的对象的优先级值。根据实施方式,优先级值越低,优先级越高。
hidden字段可以指示对应的3D区域被隐藏。
numOfDependencies字段指定具有依赖性的3D空间区域的数量。
RegionInfoStruct()包括与numOfDependencies字段的值一样多的dependency_id字段。
dependency_id字段指示具有依赖性的3D空间区域(即,3d_region_id)的标识信息。
根据实施方式,RegionInfoStruct()也可以被包括在上述V-PCC 3D区域映射信息盒(VPCC3DRegionMappingBox)中。
以此方式,区域信息(RegionInfoStruct())可以被包括在文件格式的样本条目中。在实施方式中,当对应的空间区域是静态空间区域时,RegionInfoStruct())可以被包括在V-PCC空间区域盒(VPCCSpatialRegionBox)中,并且当对应的空间区域是动态空间区域时,RegionInfoStruct())可以被包括在单独的定时元数据轨道的样本(DynamicSpatialRegionSample)中。根据另一实施方式,当对应的空间区域是静态空间区域时,RegionInfoStruct()可以被包括在VPCC3DRegionMappingBox中,并且当对应的空间区域是动态空间区域时,RegionInfoStruct()可以被包括在单独的定时元数据轨道的DynamicSpatialRegionSample中。
RegionInfoStruct()可以发信号通知用于标识空间区域的优先级、依赖性和/或隐藏状态的信息。
根据实施方式,包括在RegionInfoStruct()中的优先级信息可以是关于空间区域的渲染优先级信息,并且点云接收装置可以基于该优先级信息确定是否在显示装置上显示相应的空间区域。
根据实施方式,包括在RegionInfoStruct()中的依赖性信息可以是关于空间区域的渲染依赖性信息,并且点云接收装置可以基于依赖性信息确定是否在显示装置上显示相关联的空间区域。
根据实施方式,当点云接收装置确定是否在显示装置上显示相应的空间区域时,可以使用包括在RegionInfoStruct()中的隐藏信息。
根据实施方式,3D区域映射信息可以分为静态3D区域映射信息和动态3D区域映射信息。也就是说,静态3D区域映射信息指代随时间不变的信息,而动态3D区域映射信息指代随时间动态变化的信息。
接下来,将描述静态3D区域映射信息和动态3D区域映射信息。
静态V-PCC 3D区域映射信息
当关联数据被包括在点云数据的3D区域以及视频或阿特拉斯帧中的一个或更多个视频或阿特拉斯帧的2D区域信息以及关于与每个2D区域相关联的视频或阿特拉斯拼块(或拼块组)的信息在点云序列中是不变的时,VPCC3DRegionMappingBox(即,静态3D区域映射信息)可以被包括在V-PCC轨道或V-PCC基本流轨道的样本条目中。
根据实施方式,可以如下定义V-PCC轨道或V-PCC基本流轨道的具有样本条目类型“vpc1”的样本条目(VPCCSampleEntry())的语法。
aligned(8)类VPCCSampleEntry()扩展VolumetricVisualSampleEntry('vpc1'){
VPCCConfigurationBox config;
VPCCUnitHeaderBoxunit_header;
VPCC3DRegionMappingBox3d_region_mapping;
}
根据实施方式,具有样本条目类型“vpc1”的样本条目可以包括VPCCConfigurationBox、VPCCUnitHeaderBox和/或VPCC3DRegionMappingBox。
所有的ASPS、AFPS、帧参数集或V-PCC参数集可以在VPCCConfigurationBox中被发信号通知。
包括在样本流V-PCC单元中的V-PCC单元的V-PCC单元头的信息可以在VPCCUnitHeaderBox中被发信号通知。
在VPCC3DRegionMappingBox中发信号通知的阿特拉斯帧的2D区域信息可以是包括在V-PCC轨道中的样本中的阿特拉斯帧的2D区域信息。
在VPCC3DRegionMappingBox中发信号通知的视频(几何、属性或占用)帧的2D区域信息可以是通过V-PCC轨道的轨道参考引用的视频帧的2D区域信息。
根据实施方式,V-PCC轨道或V-PCC基本流轨道的具有样本条目类型'vpe1'的样本条目(VPCCSampleEntry())的语法可以定义如下。
aligned(8)类VPCCElementaryStreamSampleEntry()扩展VolumetricVisualSampleEntry('vpe1'){
VPCCConfigurationBox config;
VPCC3DRegionMappingBox3d_region_mapping;
}
根据实施方式,具有样本条目类型“vpe1”的样本条目可以包括VPCCConfigurationBox和VPCC3DRegionMappingBox。
根据实施方式,如果样本条目类型是“vpe1”,则可以在样本条目的VPCCConfigurationBox中发信号通知ASPS、AFPS和V-PCC参数集,或者可以在相应轨道的样本中发信号通知ASPS、AFPS和V-PCC参数集。
根据实施方式,在VPCC3DRegionMappingBox中发信号通知的视频(几何、属性或占用)帧或阿特拉斯帧的2D区域信息可以是包括在V-PCC基本流轨道中的子样本中的视频或阿特拉斯帧的2D区域信息。
动态V-PCC 3D区域映射信息
根据实施方式,在将V-PCC比特流封装在文件中时,图20或图21的文件/片段封装模块可以生成载送包括在V-PCC比特流中的元数据的元数据轨道。根据实施方式,元数据轨道可以被称为定时元数据轨道。
根据实施方式,由定时元数据轨道载送的元数据可以包括动态3D区域映射信息。根据实施方式,载送3D区域映射信息的定时元数据轨道可以称为3D区域映射定时元数据轨道。
如果V-PCC轨道具有与样本条目类型“dysr”相关联的定时元数据轨道,则为由V-PCC轨道载送的点云流定义的3D空间区域可以被视为动态区域(即,空间区域信息可能随时间动态变化)。
根据实施方式,相关联的定时元数据轨道包括用于载送阿特拉斯流的V-PCC轨道的“cdsc”轨道参考。内容描述参考“cdsc”将描述性或元数据轨道链接到内容描述参考描述的内容。根据实施方式,元数据轨道可以使用“cdsc”轨道参考链接到“cdsc”轨道参考描述的轨道。
根据实施方式,在VPCC3DRegionMappingBox中发信号通知的阿特拉斯帧的2D区域信息可以是包括在V-PCC轨道中的样本中的阿特拉斯帧的2D区域信息。
根据实施方式,在VPCC3DRegionMappingBox中发信号通知的视频(几何、属性或占用)帧的2D区域信息可以是通过V-PCC轨道的轨道参考引用的视频(几何、属性或占用)帧的样本中包括的视频帧的2D区域信息。
如果V-PCC基本流轨道具有与样本条目类型“dysr”相关联的定时元数据轨道,则为由V-PCC基本流轨道载送的点云流定义的3D空间区域可以被视为动态区域(即,空间区域信息可以随时间动态变化)。
根据实施方式,相关联的定时元数据轨道包括用于V-PCC基本流轨道的'cdsc'轨道参考。
根据实施方式,在VPCC3DRegionMappingBox中发信号通知的视频(几何、属性或占用)帧或阿特拉斯帧的2D区域信息可以是包括在V-PCC基本流轨道中的子样本中的视频或阿特拉斯帧的2D区域信息。
根据实施方式,3D区域映射定时元数据轨道中的样本条目(Dynamic3DSpatialRegionSampleEntry)的语法可以定义如下。
aligned(8)类Dynamic3DSpatialRegionSampleEntry扩展MetaDataSampleEntry('dysr'){
VPCC3DRegionMappingBoxinit_3d_region_mapping;
}
当3D区域的映射信息随时间变化时,init_3d_region_mapping可以包括初始3D区域的映射信息。
根据实施方式,3D区域映射定时元数据轨道中的样本(DynamicSpatialRegionSample)的语法可以定义如下。也就是说,该样本是对应于样本条目类型为“dysr”的样本条目的样本。
aligned(8)DynamicSpatialRegionSample(){
VPCC3DRegionMappingBox3d_region_mapping;
}
3d_region_mapping包括随时间动态变化的3D区域映射信息。
点云边界框信息
根据实施方式,VPCCBoundingInformationBox可以被包括在V-PCC轨道或V-PCC基本流轨道的样本条目中。
如果VPCCBoundingInformationBox被包括在V-PCC轨道或V-PCC基本流轨道的样本条目中,则VPCCBoundingInformationBox提供关联的或载送的点云数据的整体边界框信息。
根据实施方式,VPCCBoundingInformationBox可以如下以完整盒的形式添加到V-PCC轨道或V-PCC基本流轨道的样本条目。
aligned(8)类VPCCBoundingInformationBox扩展FullBox('vpbb',0,0){
3DBoundingBoxInfoStruct();
}
对于3DBoundingBoxInfoStruct()中包括的详细信息,即字段,已参考上述“3D边界框信息结构”的详细描述以避免冗余描述,并且本文将省略该信息的描述。
如果V-PCC轨道具有样本条目类型为“dybb”的关联的定时元数据轨道,则定时元数据轨道提供动态变化的点云数据的3D边界框信息。也就是说,定时元数据轨道所载送的元数据可以包括动态3D边界框信息。根据实施方式,载送3D边界框信息的定时元数据轨道可以被称为3D边界框定时元数据轨道。
根据实施方式,相关联的定时元数据轨道包括用于载送阿特拉斯流的V-PCC轨道的“cdsc”轨道参考。内容描述参考“cdsc”将描述性或元数据轨道链接到内容描述参考“cdsc”描述的内容。根据实施方式,元数据轨道可以使用“cdsc”轨道参考链接到“cdsc”轨道参考元数据轨道描述的轨道。
根据实施方式,3D边界框定时元数据轨道中的样本条目(Dynamic3DBoundingBoxSampleEntry)的语法可以定义如下。
aligned(8)类Dynamic3DBoundingBoxSampleEntry扩展MetaDataSampleEntry('dybb'){
VPCCBoundingInformationBoxall_bb;
}
all_bb提供整体3D边界框信息,其包括原点位置的x、y和z坐标以及点云数据的整体3D边界框在笛卡尔坐标中相对于原点分别沿着x、y和z轴的扩展。
由该轨道中的样本载送的3D边界框是该整体3D边界框的空间部分。
根据实施方式,3D边界框定时元数据轨道中的样本(Dynamic3DBoundingBoxSample)的语法可以定义如下。也就是说,该样本是对应于样本条目类型为“dybb”的样本条目的样本。
aligned(8)Dynamic3DBoundingBoxSample(){
VPCCBoundingInformationBox3dBB;
}
3dBB包括随时间动态变化的3D边界框信息。
接下来,将描述非定时V-PCC数据的载送。
图49示出根据实施方式的封装非定时V-PCC数据的示例性结构。
根据实施方式的非定时V-PCC数据可以作为图像项目存储在文件中。
根据实施方式,新的处置器类型4CC代码'vpcc'被定义并存储在MetaBox的HandlerBox中。这用于指示是否存在V-PCC项目、V-PCC单元项目或其它V-PCC编码内容表示信息。
根据实施方式的V-PCC项目是表示可独立解码的V-PCC访问单元的项目。
根据实施方式,定义新项目类型的4CC代码“vpci”以标识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单元项目的项目类型4CC代码根据用于编码对应视频数据单元的编解码器来设置。
根据实施方式,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”,基本设置为1。
根据实施方式,V-PCC单元有效载荷结构(vpcc_unit_payload_struct)的语法可以定义如下。
aligned(8)类vpcc_unit_payload_struct(){
unsigned int(16)vpcc_unit_payload_size;
vpcc_unit_payload();
}
根据实施方式,V-PCC单元有效载荷结构(vpcc_unit_payload_struct)可以包括V-PCC单元有效载荷大小(vpcc_unit_payload_size)和V-PCC单元有效载荷(vpcc_unit_payload())。
vpcc_unit_payload_size指示vpcc_unit_payload()的大小(以字节为单位)。
根据实施方式,V-PCC配置性质(VPCCConfigurationProperty)的语法可以定义如下。
aligned(8)类VPCCConfigurationProperty
扩展ItemProperty('vpcc'){
vpcc_unit_payload_struct()[];
}
根据实施方式,VPCCConfigurationProperty可以包括V-PCC单元有效载荷结构(vpcc_unit_payload_struct)。下面描述V-PCC单元头项目性质的语法结构。
盒类型:'vunt'
性质类型:描述性项目性质
容器:ItemPropertyContainerBox
强制性(每项目):是,对于“vpci”类型的V-PCC项目以及对于V-PCC单元项目数量(每项目):一个
根据实施方式,V-PCC单元头被存储为描述性项目性质并且与V-PCC项目和V-PCC单元项目相关联。
根据实施方式,对于“vunt”的项目性质,essential被设置为1。
根据实施方式,V-PCC单元头性质(VPCCUnitHeaderProperty)的语法可以定义如下。
对齐(8)类VPCCUnitHeaderProperty()
扩展ItemFullProperty('vunt',version=0,0){
vpcc_unit_header();
}
根据实施方式,VPCCUnitHeaderProperty可以包括V-PCC单元头(vpcc_unit_header())。
下面描述了V-PCC 3D边界框项目性质。
盒类型:'v3dd'
性质类型:描述性项目性质
容器:ItemPropertyContainerBox
强制性(每项目):是,对于“vpci”类型的V-PCC项目以及对于V-PCC单元项目数量(每项目):一个
根据实施方式,3D边界框信息被存储为描述性项目性质并且与V-PCC项目和V-PCC单元项目相关联。
根据实施方式的3D边界框信息属性(VPCC3DBoundingBoxInfoProperty())的语法可以定义如下。
对齐(8)类VPCC3DBoundingBoxInfoProperty()
扩展ItemFullProperty('v3dd',version=0,0){
3DBoundingBoxInfoStruct();
}
对于3DBoundingBoxInfoStruct()中包含的详细信息,即,字段,已参考上述“3D边界框信息结构”的详细描述避免冗余描述,并且本文将省略该信息的描述。
下面描述V-PCC 3D区域映射信息项目性质。
盒类型:'dysr'
性质类型:描述性项目性质
容器:ItemPropertyContainerBox
强制性(每项目):是,对于“vpci”类型的V-PCC项目以及对于V-PCC单元项目数量(每项目):一个
根据实施方式,3D区域映射信息被存储为描述性项目性质并且与V-PCC项目和V-PCC单元项目相关联。
根据实施方式,3D区域映射盒信息属性(VPCC3DRegionMappingBoxInforoperty())的语法可以定义如下。
对齐(8)类VPCC3DRegionMappingBoxInforoperty()
扩展ItemFullProperty('v3dd',version=0,0){
VPCC3DRegionMappingInfoStruct();
}
对于VPCC3DRegionMappingInfoStruct()中包含的详细信息,即,字段,已参考上述“3D区域映射信息结构”的详细描述避免冗余描述,并且本文将省略该信息的描述。
下面描述V-PCC视图项目性质的语法结构。
盒类型:'vpvi'
性质类型:描述性项目性质
容器:ItemPropertyContainerBox
强制性(每项目):是,对于“vpci”类型的V-PCC项目以及对于V-PCC单元项目数量(每项目):一个
根据实施方式,V-PCC视图信息被存储为描述性项目性质并且与V-PCC项目和V-PCC单元项目相关联。
对齐(8)类VPCCViewInfoproperty()
扩展ItemFullProperty('vpvi',version=0,0){
ViewInfoStruct();
}
下面描述V-PCC渲染参数项目性质的语法结构。
盒类型:'vprp'
性质类型:描述性项目性质
容器:ItemPropertyContainerBox
强制性(每项目):是,对于“vpci”类型的V-PCC项目以及对于V-PCC单元项目数量(每项目):一个
根据实施方式,V-PCC渲染参数被存储为描述性项目性质并且与V-PCC项目和V-PCC单元项目相关联。
对齐(8)类VPCCRenderingParamsproperty()
扩展ItemFullProperty('vprp',version=0,0){
RenderingParamStruct();
}
下面描述V-PCC对象渲染信息项目性质的语法结构。
盒类型:'vpri'
性质类型:描述性项目性质
容器:ItemPropertyContainerBox
强制性(每项目):是,对于“vpci”类型的V-PCC项目以及对于V-PCC单元项目数量(每项目):一个
根据实施方式,V-PCC对象渲染信息被存储为描述性项目性质并且与V-PCC项目和V-PCC单元项目相关联。
对齐(8)类VPCCObjRenderingInfoproperty()
扩展ItemFullProperty('vpri',version=0,0){
ObjectRenderingInfoStruct();
}
如上所述,根据实施方式的点云数据发送装置可以根据用户的视口提供V-PCC内容的3D区域信息以支持V-PCC内容的部分空间访问,并提供与3D区域信息相关联的视频或阿特拉斯帧中的2D区域相关元数据。
根据实施方式的点云数据发送装置可以处理点云比特流中的点云的3D区域信息的信令,并处理与3D区域信息相关联的视频或阿特拉斯帧中的2D区域相关信息的信令。
根据实施方式的点云数据接收装置可以基于文件中的点云的3D区域信息的存储和信令以及与3D区域信息相关联的视频或阿特拉斯帧中的2D区域相关信息的存储和信令来高效地访问点云内容。
根据实施方式的点云数据接收装置可以基于与文件中的图像项目相关联的点云的3D区域信息以及与3D区域信息相关联的视频或阿特拉斯帧中的2D区域相关信息来提供考虑用户环境的点云内容。
图50示出根据实施方式的V-PCC比特流的示例性总体结构和用于部分访问的示例性比特流级信令。在本说明书的实施方式中,比特流级的信令信息由图20或图21的点云预处理单元生成。
在图50中,对于包括样本流V-PCC头以及一个或更多个样本流V-PCC单元的V-PCC比特流49010以及每个样本流V-PCC中的V-PCC单元49020单元的详细描述,已参照图25的描述。另外,对于当V-PCC单元头中的vuh_unit_type字段指示阿特拉斯数据(VPCC_AD)时配置在对应的V-PCC单元有效载荷中的阿特拉斯子帧49030的详细描述,已参照图34。此外,对于包括在阿特拉斯数据当中的AFPS中的atlas_frame_tile_information()信息49040的详细描述,已参照图39,并且对于包括在阿特拉斯数据当中的SEI消息中的volumetric_tiling_info_objects()信息49060的详细描述,已参照图45。
根据实施方式,包括在阿特拉斯子帧49030中的样本流NAL单元中的至少一个可以包括阿特拉斯拼块(或拼块组)信息(TSA)。TSA(即,atlas_tile_group_layer_rbsp()或atlas_tile_layer_rbsp())可以包括阿特拉斯拼块(或拼块组)头(atlas_tile_group_header())49050和阿特拉斯拼块(或拼块组)数据单元((atlas_tile_group_data_unit)())。
atlas_tile_group_header()49050可以包括atgh_atlas_frame_parameter_set_id字段、atgh_address字段或atgh_type字段。
atgh_atlas_frame_parameter_set_id字段表示当前阿特拉斯拼块的活动AFPS的afps_atlas_frame_parameter_set_id字段的值。
atgh_address字段指定与当前拼块相关的拼块标识符(或地址)。atgh_address字段可以表示为atgh_id字段。
atgh_type字段可以指示当前阿特拉斯拼块(或拼块组)的编码类型。例如,atgh_type字段可以指示当前阿特拉斯拼块(或拼块组)是阿特拉斯拼块间(P_TILE)、阿特拉斯拼块内(I_TILE)还是跳过阿特拉斯拼块(SKIP_TILE)。
另一方面,在图50中,AFPS中的atlas_frame_tile_information()信息49040的atfi_tile_group_id字段和阿特拉斯拼块(或拼块组)中的atlas_tile_group_header()49050的atgh_address字段可以彼此映射。也就是说,可以参考与atgh_address字段的值和AFPS中包括的atlas_frame_tile_information()信息49040的atfi_tile_group_id字段的值相匹配的atlas_tile_group_header()相对应的atlas_tile_group_data_unit()来处理特定的阿特拉斯拼块(或拼块组)。在另一实施方式中,SEI消息中volumetric_tiling_info_objects()49060的vti_num_object_tile_group_id字段可以映射到AFPS中atlas_frame_tile_information()49040的afti_tile_group_id字段。
此外,SEI消息中包括的volumetric_tiling_info_objects()49060包括与通过阿特拉斯子流发送的一个或更多个对象相关的3D边界框信息和2D边界框信息。
在这种情况下,可以使用包括在volumetric_tiling_info_objects()49060中的2D边界框信息来参考阿特拉斯拼块(或拼块组)信息。根据实施方式,如果一个或更多个对象与一个或更多个阿特拉斯拼块(或拼块组)相关联),则可以参考与对象(例如,vti_object_idx[i]字段)相关联的阿特拉斯拼块(或拼块组)信息(例如,vti_object_tile_group_id[k]字段)。
在本说明书的实施方式中,在图20或图21的文件/片段封装模块中执行文件级信令。也就是说,文件/片段封装模块通过将对象划分为一个或更多个空间区域来将一个或若干对象存储在文件中,或者定义流式信令(称为文件级信令)。在实施方式中,文件/片段封装模块使用比特流级信令信息(例如,VPS、ASPS、AFPS或SEI消息)来生成文件级信令信息(3D空间区域盒、3D边界框信息盒或3D映射盒)。
根据实施方式,基于比特流级信令信息,可以在文件级在包括在V-PCC轨道的样本条目中的V-PCC空间区域盒(VPCCSpatialRegionsBox)结构中发信号通知阿特拉斯拼块(或拼块组)信息(例如,region_tile_group_id字段),诸如图47的文件格式结构,即,在'vpsr'盒中。
也就是说,region_tile_group_id字段表示相关阿特拉斯拼块(或拼块组)的标识信息。例如,region_tile_group_id字段可以指示与第i个3D区域相关的第k个拼块组(或拼块)的标识信息。根据实施方式,region_tile_group_id字段的值可以与包括在阿特拉斯帧中的阿特拉斯拼块(或拼块组)的阿特拉斯拼块(或拼块组)ID的值(即,图39的afti_tile_group_id字段的值)相同。
根据实施方式,可以将包括在VPCCSpatialRegionsBox中的3D区域信息(3DspatialRegionStruct())的3d_region_id字段映射到阿特拉斯子流中载送的volumetric_tiling_info_objects()的vti_object_idx[i]字段。在这种情况下,点云接收装置可以在文件级处知道与3d_region_id字段相关的VPCCSpatialRegionsBox中的num_region_tile_groups字段和region_tile_group_id字段的值。因此,接收装置可以接收V-PCC轨道的阿特拉斯子流,解析atlas_tile_group_header()的atgh_address,只选择与region_tile_group_id字段匹配的atlas_tile_group_data_unit(),并使用atlas_tile_group_data_unit()来重构点云数据。也就是说,点云接收装置可以在文件级处选择和接收空间区域。
图51是根据实施方式的文件级信令方法的流程图。在实施方式中,图51的信令方法在图1、图20或图21的文件/片段封装模块中执行。
在实施方式中,在图51中,文件/片段封装模块接收如图25所示的V-PCC比特流的结构。
根据实施方式,文件/片段封装模块在基于ISOBMFF的文件中生成V-PCC轨道(步骤51001)。
文件/片段封装模块在步骤51001中生成的V-PCC轨道中生成样本条目(步骤51002)。文件/片段封装模块从V-PCC比特流中获取V-PCC单元头信息并将V-PCC单元头信息添加到V-PCC轨道的样本条目(步骤51003)。文件/片段封装模块从V-PCC比特流中获取VPS信息并将VPS信息添加到V-PCC轨道的样本条目(步骤51004)。文件/片段封装模块从V-PCC比特流中的阿特拉斯子流中获取样本流NAL头,并将样本流NAL头添加到V-PCC轨道的样本条目(步骤51005)。
文件/片段封装模块从阿特拉斯子流中获取样本流NAL单元(步骤51006)。样本流NAL单元可以包括包含ASPS的样本流NAL单元、包含AFPS的样本流NAL单元、包含一个或更多个阿特拉斯拼块(或拼块组)信息的一个或更多个样本流NAL单元,和/或包含一个或更多个SEI消息的一个或更多样本流NAL单元。
文件/片段封装模块从样本流NAL单元当中的包括一个或更多个SEI消息的一个或更多个样本流NAL单元中提取体积拼块信息(步骤51007)。
在实施方式中,体积拼块信息被包括在SEI消息中。根据实施方式,体积拼块信息包括每个空间区域的标识信息(即,vti_object_idx[i]字段)、3D边界框信息、2D边界框信息、以及与vti_object_idx[i]字段相关的一个或更多个阿特拉斯拼块(或拼块组)的标识信息(即,vti_num_object_tile_group_id字段),如图43至图45所示。此外,体积拼块信息包括每个空间区域的优先级信息、依赖性信息和/或隐藏信息。
文件/片段封装单元使用体积拼块信息生成适合文件格式的V-PCC空间区域盒(VPCCSpatialRegionsBox)结构和/或V-PCC 3D区域映射盒(VPCC3DRegionMappingBox)结构,并将VPCCSpatialRegionsBox和/或VPCC3DRegionMappingBox添加到V-PCC轨道的样本条目(步骤51008)。
文件/片段封装模块根据阿特拉斯NAL类型信息识别样本流NAL单元中包含的ASPS、AFPS和SEI消息,并将识别出的ASPS、AFPS和SEI消息添加到V-PCC轨道的样本条目或样本(步骤51009)。例如,如果样本条目类型为“vpc1”,则所有ASPS、AFPS或SEI被包括在V-PCC轨道的样本条目中,并且如果样本条目类型为“vpcg”,则ASPS、AFPS、或SEI可以被包括在V-PCC轨道的样本条目或样本中。在实施方式中,可以在样本中包括阿特拉斯数据当中的除了ASPS或SEI消息之外的数据(例如,阿特拉斯拼块(或拼块组)信息(TSA))。
文件/片段封装模块将样本添加到V-PCC轨道(步骤51010)。
图52是根据实施方式的接收装置中的信令信息获取方法的流程图。具体地,在图52的实施方式中,接收装置接收基于ISOBMFF的文件。在实施方式中,通过解析存储在接收到的文件的V-PCC轨道中的信令信息来配置V-PCC比特流结构的操作由图1、图20或图22的文件/片段解封装模块执行。
也就是说,接收装置接收文件(步骤55001),并从接收到的文件中的V-PCC轨道的样本条目中获取VPS信息、V-PCC单元头信息和样本流NAL头信息(步骤55002)。在这种情况下,获取的VPS信息、V-PCC单元头信息和样本流NAL头信息可以配置为V-PCC比特流的形式。
接收装置从V-PCC轨道的样本或样本条目中获取阿特拉斯数据(步骤55003)。阿特拉斯数据包括ASPS、AFPS、拼块(或拼块组)信息(TSA)和SEI消息。在实施方式中,V-PCC轨道的样本条目可以包括VPCCConfigurationBox,VPCCConfigurationBox可以包括VPCCDecoderConfigurationRecord(),并且VPCCDecoderConfigurationRecord()可以包括VPS信息、ASPS、AFPS和SEI消息。在实施方式中,V-PCC轨道的样本可以包括拼块(或拼块组)信息(TSA)。
接收装置从在步骤55003中获得的阿特拉斯数据中获取体积拼块信息(步骤55004)。根据实施方式,可以从阿特拉斯数据当中的SEI消息获得体积拼块信息。
如图43至图45所示,体积拼块信息包括每个空间区域的标识信息(即,vti_object_idx[i]字段)、AFPS中的阿特拉斯帧拼块信息的afti_tile_group_id字段,和/或映射到atlas_tile_group_header()的atgh_address字段的拼块(或拼块组)标识信息(即,vti_object_tile_group_id字段)。此外,体积拼块信息包括每个空间区域的优先级信息、依赖性信息和/或隐藏信息。因此,当稍后执行渲染时,点云接收装置可以以适合于每个信息的形式在显示装置上适当地显示每个空间区域(或空间对象)。
接收装置使用在步骤55004中获取的vti_object_tile_group_id字段来仅解析在步骤55003中获取的阿特拉斯数据当中的AFPS的afti_tile_group_id字段和atlas_tile_group_header()的atgh_address字段匹配的拼块(或拼块组)的阿特拉斯数据(步骤55005)。
接收装置使用在步骤55005中解析的阿特拉斯数据来配置样本流NAL单元(即,具有匹配的阿特拉斯拼块(或拼块组)ID的样本流NAL单元)(步骤55006)。
接收装置通过将样本流NAL头添加到在步骤55006中配置的样本流NAL单元来配置用于解码V-PCC比特流的阿特拉斯子流(步骤55007)。
接收装置通过解析在步骤55007中生成的阿特拉斯子流来获取点云数据的重构所需的阿特拉斯拼块(或拼块组)和补片数据(步骤55008)。
对于图51和图52中提到的V-PCC轨道、样本条目、样本、VPS信息、V-PCC单元头信息、阿特拉斯子流、体积拼块信息、V-PCC空间区域盒、和V-PCC 3D区域映射信息,已经参考了上面的详细描述,因此其详细描述可以参考上面的描述。
图53示出根据实施方式的示例性点云数据发送方法。
根据实施方式的点云数据发送方法可以包括对点云数据进行编码(71001)和/或发送包括点云数据和信令信息的比特流(71002)。
在根据实施方式的步骤71001中,可以对点云数据的全部或部分进行编码。根据实施方式,图1的发送装置10000和/或点云视频编码器10002可以执行编码。根据实施方式,可以对如图3所示的点云数据进行编码。根据实施方式,可以通过图4的V-PCC编码过程对点云数据进行编码。可以基于图5至图14中的方法对点云数据进行编码。此外,可以由图15的编码器对点云数据进行编码。
例如,在步骤71001中,可以基于比特流级的信令信息和/或文件级的信令信息对整个空间区域的点云数据或仅特定空间区域的点云数据进行编码。根据实施方式,比特流级信令信息可以由图20或图21的点云预处理单元20001生成,并且文件级信令信息可以由图20或图21的文件/片段封装模块或单元20004或21009生成。由于上面已经充分描述了比特流级信令信息和文件级信令信息,因此本文将省略其详细描述。
在根据实施方式的步骤71002中,可以发送点云数据或者包括点云数据和信令信息的比特流。根据实施方式,包括点云数据的V-PCC比特流可以由图1的发送器10004、图18的发送器18008、图20的传送或图21的传送来发送。点云数据(或者包括点云数据的V-PCC比特流)可以在被文件/片段封装模块10003封装成文件/片段的形式后被发送。此外,点云数据可以通过经由图23的网络与各种装置相组合来提供给用户。
根据实施方式,比特流级信令信息可以包括在V-PCC比特流中,并且文件级信令信息可以存储在文件的单个轨道或多个轨道中。
在根据实施方式的步骤71002中,可以将全部或部分的点云数据封装在文件/片段中。例如,在步骤71002中,可以基于比特流级信令信息和/或文件级信令信息将整个空间区域的点云数据或仅特定空间区域的点云数据封装在文件/片段中。。
根据实施方式的点云数据发送方法/装置可以与上述实施方式中的所有/一些结合以提供点云内容。
图54示出根据实施方式的示例性点云数据接收方法。
根据实施方式的点云数据接收方法包括接收包括点云数据和信令信息的比特流(81001)、解码点云数据(81002)和/或渲染点云数据(81003)。
在根据实施方式的步骤81001中,可以接收包括点云数据的部分或全部的V-PCC比特流。在点云数据接收方法中,可以以文件/片段的形式接收包括点云数据的V-PCC比特流。图1的接收器10006、图19的接收器、图20的传送或图22的传送可以接收V-PCC比特流(或包括V-PCC比特流的文件/片段)。图1、图20或图22的文件/片段解封装模块可以解封装文件/片段格式的点云数据。
在根据实施方式的步骤81001中,可以基于比特流级的信令信息和/或文件级的信令信息对包括全部或部分的点云数据的文件进行解封装。例如,在步骤81001中,可以基于比特流级信令信息和/或文件级信令信息对包括整个空间区域的点云数据的文件或包括特定空间区域的点云数据的文件进行解封装。由于上面已经充分描述了比特流级信令信息和文件级信令信息,因此本文将省略其详细描述。
在根据实施方式的步骤81002中,点云数据被解码。在根据实施方式的步骤81002中,可以基于比特流级信令信息和/或文件级信令信息来解码全部或部分的点云数据。例如,在步骤81002中,可以基于比特流级信令信息和/或文件级信令信息对整个空间区域的点云数据或特定空间区域的点云数据进行解码。根据实施方式,点云数据的全部或部分可以由图1、图16、图18、图20或图22的点云视频解码器解码。如图23所示,点云数据可以通过经由网络连接的各种装置/环境而提供给用户。
在根据实施方式的步骤81003中,点云数据被渲染/显示。在根据实施方式的步骤81003中,可以基于比特流级信令信息和/或文件级信令信息来渲染/显示全部或部分的点云数据。例如,在步骤81003中,可以基于比特流级信令信息和/或文件级信令信息来渲染/显示整个空间区域的点云数据或特定空间区域的点云数据。用户可以通过VR/AR显示器或普通显示器查看渲染结果的整体或部分区域。
在根据实施方式的步骤81003中,点云数据可以由图1的渲染器10009、图19的点云渲染器19007、图20的渲染器2001或图22的点云渲染器22004渲染。
根据实施方式的点云数据接收方法/装置可以与上述实施方式中的所有/一些结合以提供点云内容。
上述各个部分、模块或单元可以是执行存储在存储器(或存储单元)中的连续过程的软件、处理器或硬件部分。在上述实施方式中描述的各个步骤可由处理器、软件或硬件部分执行。在上述实施方式中描述的各个模块/块/单元可作为处理器、软件或硬件操作。另外,实施方式所提出的方法可作为代码执行。该代码可被写在处理器可读存储介质上,因此由设备所提供的处理器读取。
尽管为了简单参照各个附图说明了实施方式,但是可通过将附图所示的实施方式合并来设计新的实施方式。如果本领域技术人员设计了记录有用于执行以上描述中提及的实施方式的程序的计算机可读记录介质,则其可落在所附权利要求及其等同物的范围内。
设备和方法可不限于上述实施方式的配置和方法。上述实施方式可通过选择性地彼此完全或部分地组合来配置,以实现各种修改。
尽管参照附图描述了优选实施方式,但本领域技术人员将理解,在不脱离所附权利要求中描述的本公开的精神或范围的情况下,可对实施方式进行各种修改和变化。这些修改不应从实施方式的技术思想或观点方面单独地理解。
本领域技术人员将理解,在不脱离本公开的范围的情况下,可对实施方式进行各种修改和变化。因此,本公开旨在涵盖实施方式的修改和变化,只要它们落在所附权利要求及其等同物的范围内。
本说明书中描述了设备和方法公开二者,并且设备和方法公开二者的描述互补地适用。
在本文档中,术语“/”和“、”应该被解释为指示“和/或”。例如,表达“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维3D空间区域,并且
其中,所述空间区域信息至少包括用于标识每个3D空间区域的标识信息或者每个3D空间区域的锚点的位置信息。
3.根据权利要求2所述的点云数据发送方法,
其中,所述空间区域信息至少在载送信令信息中的一些或全部的轨道的样本条目或与所述轨道相关联的元数据轨道的样本中被发信号通知。
4.根据权利要求3所述的点云数据发送方法,
其中,在所述样本条目中发信号通知的所述空间区域信息还包括用于标识与所述每个3D空间区域相关的一个或更多个拼块的拼块标识信息。
5.根据权利要求3所述的点云数据发送方法,
其中,所述样本还包括与3D空间区域相关的优先级信息和依赖性信息。
6.一种点云数据发送装置,该点云数据发送装置包括:
编码器,所述编码器对点云数据进行编码;
封装器,所述封装器将包括编码的点云数据的比特流封装到文件中;以及
发送器,所述发送器发送所述文件,
其中,所述点云数据至少包括几何数据、属性数据或占用图数据,
其中,所述比特流被存储在所述文件的多个轨道中,
其中,所述文件还包括信令数据,并且
其中,所述信令数据包括所述点云数据的空间区域信息。
7.根据权利要求6所述的点云数据发送装置,
其中,所述点云数据被划分为一个或更多个3维3D空间区域,并且
其中,所述空间区域信息至少包括用于标识每个3D空间区域的标识信息或者每个3D空间区域的锚点的位置信息。
8.根据权利要求7所述的点云数据发送装置,
其中,所述空间区域信息至少在载送信令信息中的一些或全部的轨道的样本条目或与所述轨道相关联的元数据轨道的样本中被发信号通知。
9.根据权利要求8所述的点云数据发送装置,
其中,在所述样本条目中发信号通知的所述空间区域信息还包括用于标识与所述每个3D空间区域相关的一个或更多个拼块的拼块标识信息。
10.根据权利要求8所述的点云数据发送装置,
其中,所述样本还包括与3D空间区域相关的优先级信息和依赖性信息。
11.一种点云数据接收方法,该点云数据接收方法包括以下步骤:
接收文件;
将所述文件解封装成包括点云数据的比特流,其中,所述比特流被存储在所述文件的多个轨道中,并且其中,所述文件还包括信令数据;
基于所述信令数据对所述点云数据进行解码;以及
基于所述信令数据对解码的点云数据进行渲染,
其中,所述点云数据至少包括几何数据、属性数据或占用图数据,并且
其中,所述信令数据包括所述点云数据的空间区域信息。
12.根据权利要求11所述的点云数据接收方法,
其中,所述点云数据被划分为一个或更多个3维3D空间区域,并且
其中,所述空间区域信息至少包括用于标识每个3D空间区域的标识信息或者每个3D空间区域的锚点的位置信息。
13.根据权利要求12所述的点云数据接收方法,
其中,所述空间区域信息至少在载送信令信息中的一些或全部的轨道的样本条目或与所述轨道相关联的元数据轨道的样本中被发信号通知。
14.根据权利要求13所述的点云数据接收方法,
其中,在所述样本条目中发信号通知的所述空间区域信息还包括用于标识与所述每个3D空间区域相关的一个或更多个拼块的拼块标识信息。
15.根据权利要求13所述的点云数据接收方法,
其中,所述样本还包括与3D空间区域相关的优先级信息和依赖性信息。
16.一种点云数据接收装置,该点云数据接收装置包括:
接收器,所述接收器接收文件;
解封装器,所述解封装器将所述文件解封装成包括点云数据的比特流,其中,所述比特流被存储在所述文件的多个轨道中,并且其中,所述文件还包括信令数据;
解码器,所述解码器基于所述信令数据对所述点云数据进行解码;以及
渲染器,所述渲染器基于所述信令数据对解码的点云数据进行渲染,
其中,所述点云数据至少包括几何数据、属性数据或占用图数据,并且
其中,所述信令数据包括所述点云数据的空间区域信息。
17.根据权利要求16所述的点云数据接收装置,
其中,所述点云数据被划分为一个或更多个3维3D空间区域,并且
其中,所述空间区域信息至少包括用于标识每个3D空间区域的标识信息或者每个3D空间区域的锚点的位置信息。
18.根据权利要求17所述的点云数据接收装置,
其中,所述空间区域信息至少在载送信令信息中的一些或全部的轨道的样本条目或与所述轨道相关联的元数据轨道的样本中被发信号通知。
19.根据权利要求18所述的点云数据接收装置,
其中,在所述样本条目中发信号通知的所述空间区域信息还包括用于标识与所述每个3D空间区域相关的一个或更多个拼块的拼块标识信息。
20.根据权利要求18所述的点云数据接收装置,
其中,所述样本还包括与3D空间区域相关的优先级信息和依赖性信息。
CN202180035883.8A 2020-03-18 2021-01-19 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 Pending CN115668938A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2020-0033414 2020-03-18
KR20200033414 2020-03-18
PCT/KR2021/000694 WO2021187737A1 (ko) 2020-03-18 2021-01-19 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법

Publications (1)

Publication Number Publication Date
CN115668938A true CN115668938A (zh) 2023-01-31

Family

ID=77748304

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180035883.8A Pending CN115668938A (zh) 2020-03-18 2021-01-19 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法

Country Status (5)

Country Link
US (1) US11631158B2 (zh)
EP (1) EP4114005A4 (zh)
KR (1) KR102406846B1 (zh)
CN (1) CN115668938A (zh)
WO (1) WO2021187737A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021000241A1 (zh) * 2019-07-01 2021-01-07 Oppo广东移动通信有限公司 点云模型重建方法、编码器、解码器、及存储介质
WO2021191252A1 (en) * 2020-03-26 2021-09-30 Interdigital Vc Holdings France A method and apparatus for encoding and decoding volumetric video
GB2593897B (en) * 2020-04-06 2024-02-14 Canon Kk Method, device, and computer program for improving random picture access in video streaming
WO2021205061A1 (en) * 2020-04-07 2021-10-14 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
US11770562B2 (en) * 2020-06-23 2023-09-26 Qualcomm Incorporated High-level syntax for geometry-based point cloud compression
US11816868B2 (en) * 2020-08-14 2023-11-14 Tencent America LLC Coding of multiple-component attributes for point cloud coding
US11706450B2 (en) * 2020-09-18 2023-07-18 Samsung Electronics Co., Ltd. Partial decoding and reconstruction of a video-based point cloud compression bitstream
WO2023054932A1 (ko) * 2021-09-29 2023-04-06 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
KR102527798B1 (ko) * 2021-12-23 2023-05-02 경희대학교 산학협력단 3차원 컨텐츠 전송 장치 및 방법
GB2623524A (en) * 2022-10-17 2024-04-24 Canon Kk Method, device, and computer program for improving transmission and/or storage of point cloud data
KR102545445B1 (ko) * 2022-11-22 2023-06-21 헬리오센 주식회사 유니티(unity) 엔진을 이용한 3차원 지구 XR 가시화 장치 및 방법

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2416100B (en) * 2002-03-26 2006-04-12 Imagination Tech Ltd 3D computer graphics rendering system
KR101740259B1 (ko) * 2011-10-07 2017-05-29 한국전자통신연구원 3차원 포인트 클라우드의 공간 분할 방법
US9357199B2 (en) * 2013-01-04 2016-05-31 Qualcomm Incorporated Separate track storage of texture and depth views for multiview coding plus depth
US9712843B2 (en) * 2013-10-23 2017-07-18 Qualcomm Incorporated Multi-layer video file format designs
US10235338B2 (en) * 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US9734595B2 (en) * 2014-09-24 2017-08-15 University of Maribor Method and apparatus for near-lossless compression and decompression of 3D meshes and point clouds
EP3349182A1 (en) * 2017-01-13 2018-07-18 Thomson Licensing Method, apparatus and stream for immersive video format
US10861196B2 (en) * 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US10909725B2 (en) * 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
EP3474562A1 (en) * 2017-10-20 2019-04-24 Thomson Licensing Method, apparatus and stream for volumetric video format
US10607373B2 (en) * 2017-11-22 2020-03-31 Apple Inc. Point cloud compression with closed-loop color conversion
US10783668B2 (en) * 2017-12-22 2020-09-22 Samsung Electronics Co., Ltd. Handling duplicate points in point cloud compression
CN108460791A (zh) * 2017-12-29 2018-08-28 百度在线网络技术(北京)有限公司 用于处理点云数据的方法和装置
EP3547704A1 (en) * 2018-03-30 2019-10-02 Thomson Licensing Method, apparatus and stream for volumetric video format
US10984541B2 (en) * 2018-04-12 2021-04-20 Samsung Electronics Co., Ltd. 3D point cloud compression systems for delivery and access of a subset of a compressed 3D point cloud
MX2021003179A (es) * 2018-09-18 2021-08-11 Vid Scale Inc Metodos y aparatos para formato de flujo de bits de compresion de nube de puntos.
US11245926B2 (en) * 2019-03-19 2022-02-08 Mediatek Singapore Pte. Ltd. Methods and apparatus for track derivation for immersive media data tracks
EP3926959A4 (en) * 2019-03-21 2022-03-23 LG Electronics Inc. POINT CLOUD DATA TRANSMITTER DEVICE, POINT CLOUD DATA TRANSMITTER METHOD, POINT CLOUD DATA RECEIVE DEVICE, AND POINT CLOUD DATA RECEIVE METHOD
US11122102B2 (en) * 2019-07-03 2021-09-14 Lg Electronics Inc. Point cloud data transmission apparatus, point cloud data transmission method, point cloud data reception apparatus and point cloud data reception method
KR102619607B1 (ko) * 2019-08-08 2023-12-29 엘지전자 주식회사 Xr 디바이스 및 그 제어 방법
US20210105313A1 (en) * 2019-10-02 2021-04-08 Mediatek Singapore Pte. Ltd. Methods and apparatus for signaling a region in spatially grouped immersive media data tracks
US11240532B2 (en) * 2020-03-03 2022-02-01 Nokia Technologies Oy Efficient culling of volumetric video atlas bitstreams
US11875539B2 (en) * 2020-03-16 2024-01-16 Samsung Electronics Co., Ltd. Partial access metadata for video-based point cloud compression data

Also Published As

Publication number Publication date
US20210295567A1 (en) 2021-09-23
US11631158B2 (en) 2023-04-18
KR102406846B1 (ko) 2022-06-10
KR20210117142A (ko) 2021-09-28
EP4114005A4 (en) 2023-08-09
WO2021187737A1 (ko) 2021-09-23
EP4114005A1 (en) 2023-01-04

Similar Documents

Publication Publication Date Title
US11017591B2 (en) Point cloud data transmitting apparatus, point cloud transmitting method, point cloud data receiving apparatus, and point cloud receiving method
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) 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
CN114930813B (zh) 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
US20220159261A1 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
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) 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
CN115443652B (zh) 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法
CN115398890B (zh) 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
EP4044603A1 (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
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
CN115380528B (zh) 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法
CN115804096A (zh) 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
CN115428442B (zh) 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
CN117978993A (zh) 对点云数据进行编码/解码的设备
CN117978994A (zh) 对点云数据进行编码/解码的方法和存储介质
CN117978996A (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