CN117082262A - 点云文件封装与解封装方法、装置、设备及存储介质 - Google Patents
点云文件封装与解封装方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117082262A CN117082262A CN202311055895.4A CN202311055895A CN117082262A CN 117082262 A CN117082262 A CN 117082262A CN 202311055895 A CN202311055895 A CN 202311055895A CN 117082262 A CN117082262 A CN 117082262A
- Authority
- CN
- China
- Prior art keywords
- attribute
- attribute data
- point cloud
- information
- track
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 130
- 238000005538 encapsulation Methods 0.000 title claims abstract description 74
- 238000003860 storage Methods 0.000 title claims abstract description 18
- 238000004806 packaging method and process Methods 0.000 claims description 101
- 238000012545 processing Methods 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 22
- 230000008569 process Effects 0.000 description 52
- 238000007654 immersion Methods 0.000 description 44
- 238000010586 diagram Methods 0.000 description 21
- 230000005540 biological transmission Effects 0.000 description 12
- 230000006978 adaptation Effects 0.000 description 11
- 210000003128 head Anatomy 0.000 description 11
- 238000004519 manufacturing process Methods 0.000 description 11
- 238000013507 mapping Methods 0.000 description 11
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000002310 reflectometry Methods 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 6
- 230000033001 locomotion Effects 0.000 description 6
- 230000011664 signaling Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012856 packing Methods 0.000 description 5
- 238000009877 rendering Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 210000000056 organ Anatomy 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000004424 eye movement Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000012092 media component Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000002864 sequence alignment Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/128—Adjusting depth or disparity
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请提供了一种点云文件封装与解封装方法、装置、设备及存储介质,该解封装方法包括:确定点云文件中待解码的第一属性数据,确定该第一属性数据的依赖指示信息,该依赖指示信息用于指示第一属性数据与第二属性数据之间是否存在第一关系,第一关系包括解码依赖关系和呈现关联关系中的至少一个,进而基于该依赖指示信息,对第一属性数据进行解码。即本申请通过依赖指示信息指示不同点云属性数据之间的编解码依赖关系或者呈现关联关系,以支持点云位流的部分访问、正确解码以及个性化呈现。
Description
技术领域
本申请实施例涉及视频处理技术领域,尤其涉及一种点云文件封装与解封装方法、装置、设备及存储介质。
背景技术
沉浸式媒体指能为消费者带来沉浸式体验的媒体内容,沉浸式媒体按照用户在消费媒体内容时的自由度,可以分为3DoF媒体、3DoF+媒体以及6DoF媒体。
沉浸式媒体包括点云媒体,目前的点云媒体可以通过定义子样本或多轨封装的方式的,实现对点云位流的部分访问。但是,无法实现对点云位流中属性信息的部分访问。
发明内容
本申请提供一种点云文件封装与解封装方法、装置、设备及存储介质,通过对依赖指示信息来指示属性数据之间的关联关系,进而实现对点云位流中部分属性数据的访问、正确解码和个性化呈现。
第一方面,本申请提供一种文件解封装方法,包括:
确定点云文件中待解码的第一属性数据,所述点云文件是对点云位流进行封装得到的文件;
确定所述第一属性数据的依赖指示信息,所述依赖指示信息用于指示所述第一属性数据与第二属性数据之间是否存在第一关系,所述第一关系包括解码依赖关系和呈现关联关系中的至少一个;
基于所述依赖指示信息,对所述第一属性数据进行解码。
第二方面,本申请提供一种文件封装方法,包括:
获取点云位流,所述点云位流包括N组属性数据,所述N为正整数;
对于所述N组属性数据中待封装的第一属性数据,基于所述第一属性数据与第二属性数据之间的第一关系,对所述第一属性数据进行封装,且确定所述第一属性数据的依赖指示信息,得到点云文件,所述依赖指示信息用于指示所述第一属性数据与所述第二属性数据之间是否存在第一关系,所述第一关系包括编码依赖关系和呈现关联关系中的至少一个。
第三方面,本申请提供一种文件解封装装置,包括:
数据确定单元,用于确定点云文件中待解码的第一属性数据,所述点云文件是对点云位流进行封装得到的文件;
信息确定单元,用于确定所述第一属性数据的依赖指示信息,所述依赖指示信息用于指示所述第一属性数据在解码或呈现时是否依赖于第二属性数据;
解码单元,用于基于所述依赖指示信息,对所述第一属性数据进行解码。
第四方面,本申请提供一种文件封装装置,包括:
获取单元,用于获取点云位流,所述点云位流包括N组属性数据,所述N为正整数;
封装单元,用于对于所述N组属性数据中待封装的第一属性数据,基于所述第一属性数据与第二属性数据之间的第一关系,对所述第一属性数据进行封装,且确定所述第一属性数据的依赖指示信息,得到点云文件;
其中,所述依赖指示信息用于指示所述第一属性数据与所述第二属性数据之间是否存在第一关系,所述第一关系包括编码依赖关系和呈现关联关系中的至少一个。
第四方面,提供了一种电子设备,包括处理器和存储器。所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行上述第一方面或第二方面的方法。
第五方面,提供了一种芯片,用于实现上述第一方面中任一方面或其各实现方式中的方法。具体地,所述芯片包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如上述上述第一方面或第二方面的方法。
第六方面,提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序使得计算机执行上述上述第一方面或第二方面的方法。
第七方面,提供了一种计算机程序产品,包括计算机程序指令,所述计算机程序指令使得计算机执行上述上述第一方面或第二方面的方法。
第八方面,提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述上述第一方面或第二方面的方法。
综上,在本申请中,通过确定点云文件中待解码的第一属性数据,确定该第一属性数据的依赖指示信息,该依赖指示信息用于指示第一属性数据与第二属性数据之间是否存在第一关系,所述第一关系包括解码依赖关系和呈现关联关系中的至少一个,进而基于该依赖指示信息,对第一属性数据进行解码。即本申请通过依赖指示信息指示不同点云属性数据之间的编解码依赖关系或者呈现关联关系,以支持点云位流的部分访问、正确解码以及个性化呈现。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出了三自由度的示意图;
图2示意性示出了三自由度+的示意图;
图3示意性示出了六自由度的示意图;
图4A为本申请一实施例提供的一种沉浸媒体***的架构图;
图4B为本申请一实施例提供的点云***框架示意图;
图5A为存储在单轨道中的几何点云的样本结构示意图;
图5B为基于组件的多轨封装结构示意图;
图5C为基于分片的多轨封装结构示意图;
图5D为基于点云片的多轨封装结构示意图;
图6为本申请实施例提供的一种点云文件解封装方法的流程图;
图7A为本申请实施例涉及的多轨封装示意图;
图7B为本申请实施例涉及的单轨封装示意图;
图8为本申请实施例提供的一种点云文件封装方法的流程图;
图9为本申请一实施例提供的文件解封装装置的结构示意图;
图10为本申请一实施例提供的文件封装装置的结构示意图;
图11是本申请实施例提供的电子设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例涉及沉浸媒体的数据处理技术。
在介绍本申请技术方案之前,下面先对本申请相关知识进行介绍:
多视角/多视点视频:指采用多组摄像机阵列,从多个角度拍摄的带有深度信息的视频。多视角/多视点视频也叫自由视角/自由视点视频,是一种提供六自由度体验的沉浸式媒体。
点云:点云是空间中一组无规则分布的、表达三维物体或场景的空间结构及表面属性的离散点集。点云中的每个点至少具有三维位置信息,根据应用场景的不同,还可能具有色彩、材质或其他信息。通常,点云中的每个点都具有相同数量的附加属性。
PCC:Point Cloud Compression,点云压缩。
G-PCC:Geometry-based Point Cloud Compression,基于几何模型的点云压缩。
V-PCC:Video-based Point Cloud Compression,基于传统视频编码的点云压缩。
Slice:点云片/点云条,代表部分或全部编码后点云帧数据的一系列语法元素(比如几何slice、属性slice)集合。
Sequence Header:点云序列头参数集,点云序列解码所需的参数集合。(AVS定义)
Geometry Header:点云帧几何头参数集,点云几何数据解码所需的参数集合。
Attribute Header:点云帧属性头参数集,点云属性数据解码所需的参数集合。
SPS:Sequence Parameter Set,序列参数集,点云序列解码所需的参数集合。(MPEG定义)
GPS:Geometry Parameter Set,几何参数集,点云几何数据解码所需的参数集合。
APS:Attribute Parameter Set,属性参数集,点云属性数据解码所需的参数集合。
图集:指示2D平面帧上的区域信息,3D呈现空间的区域信息,以及二者之间的映射关系和映射所需的必要参数信息。
Track:轨道,轨道是媒体文件封装过程中的媒体数据集合,由多个时序的样本组成。一个媒体文件可由一个或多个轨道组成,例如常见的:一个媒体文件可以包含一个视频媒体轨道、一个音频媒体轨道及一个字幕媒体轨道。特别地,元数据信息也可以作为一种媒体类型,以元数据媒体轨道的形式包含于文件中
Sample:样本,样本是媒体文件封装过程中的封装单位,一个轨道由很多个样本组成,每个样本对应特定的时间戳信息,例如:一个视频媒体轨道可以由很多个样本组成,一个样本通常为一个视频帧。在本申请实施例中,点云媒体轨道中的一个样本可以为一个点云帧。
Sample Number:特定样本的序号。轨道中第一个样本的序号为1。
Sample Entry:样本入口,用于指示轨道中所有样本相关的元数据信息。比如在视频轨道的样本入口中,通常会包含解码器初始化相关的元数据信息。
Sample Group:样本群组,用于将轨道中部分样本按照特定的规则进行群组划分。
Item:数据项,数据项是静态媒体文件封装过程中的媒体数据集合。比如一张静态图片被封装为一个item。
Slice:点云片/点云条,代表部分或全部编码后点云帧数据的一系列语法元素(比如几何slice、属性slice)集合。一个点云片对应一定空间区域内的点。
DASH:dynamic adaptive streaming over HTTP,基于HTTP的动态自适应流是一种自适应比特率流技术,使高质量流媒体可以通过传统的HTTP网络服务器以互联网传递。
MPD:media presentation description,DASH中的媒体演示描述信令,用于描述媒体片段信息。
Representation:DASH中,一个或多个媒体成分的组合,比如某种分辨率的视频文件可以看做一个Representation。
Adaptation Sets:DASH中,一个或多个视频流的集合,一个Adaptation Sets中可以包含多个Representation。
Media Segment:媒体片段。符合一定的媒体格式、可播放的片段。播放时可能需要与其前面的0个或多个片段以及初始化片段配合。
DoF:Degree of Freedom,自由度。力学***中是指独立坐标的个数,除了平移的自由度外,还有转动及振动自由度。本申请实施例中指用户在观看沉浸式媒体时,支持的运动并产生内容交互的自由度。
3DoF:即三自由度,指用户头部围绕XYZ轴旋转的三种自由度。图1示意性示出了三自由度的示意图。如图1所示,就是在某个地方、某一个点在三个轴上都可以旋转,可以转头,也可以上下低头,也可以摆头。通过三自由度的体验,用户能够360度地沉浸在一个现场中。如果是静态的,可以理解为是全景的图片。如果全景的图片是动态,就是全景视频,也就是VR视频。但是VR视频是有一定局限性的,用户是不能够移动的,不能选择任意的一个地方去看。
3DoF+:即在三自由度的基础上,用户还拥有沿XYZ轴做有限运动的自由度,也可以将其称之为受限六自由度,对应的媒体码流可以称之为受限六自由度媒体码流。图2示意性示出了三自由度+的示意图。
6DoF:即在三自由度的基础上,用户还拥有沿XYZ轴***的自由度,对应的媒体码流可以称之为六自由度媒体码流。图3示意性示出了六自由度的示意图。其中,6DoF媒体是指的6自由度视频,是指视频可以提供用户在三维空间的XYZ轴方向自由移动视点,以及围绕XYX轴自由旋转视点的高自由度观看体验。6DoF媒体是以摄像机阵列采集得到的空间不同视角的视频组合。为了便于6DoF媒体的表达、存储、压缩和处理,将6DoF媒体数据表达为以下信息的组合:多摄像机采集的纹理图,多摄像机纹理图所对应的深度图,以及相应的6DoF媒体内容描述元数据,元数据中包含了多摄像机的参数,以及6DoF媒体的拼接布局和边缘保护等描述信息。在编码端,把多摄像机的纹理图信息和对应的深度图信息进行拼接处理,并且把拼接方式的描述数据根据所定义的语法和语义写入元数据。拼接后的多摄像机深度图和纹理图信息通过平面视频压缩方式进行编码,并且传输到终端解码后,进行用户所请求的6DoF虚拟视点的合成,从而提供用户6DoF媒体的观看体验。
AVS:Audio Video Coding Standard,中国国家视频编码标准AVS
MPEG:Moving Picture Experts Group,动态图像专家组,是ISO(InternationalStandardization Organization,国际标准化组织)与IEC(InternationalElectrotechnical Commission,国际电工委员会)成立的专门针对运动图像和语音压缩制定国际标准的组织。
ISOBMFF:ISO Based Media File Format,基于ISO标准的媒体文件格式。ISOBMFF是媒体文件的封装标准,最典型的ISOBMFF文件即MP4文件。
SMT(Smart Media Transport):智能媒体传输标准,规定了涵盖封装格式、传输协议及信令消息的智能媒体传输技术,以应用于多媒体数据的传输和发送。
Asset:媒体资源,任何与唯一标识符相关的用作构建一个多媒体呈现的多媒体数据实体。
沉浸式媒体指能为消费者带来沉浸式体验的媒体内容,沉浸式媒体按照用户在消费媒体内容时的自由度,可以分为3DoF媒体、3DoF+媒体以及6DoF媒体。其中常见的6DoF媒体包括多视角视频以及点云媒体。
点云是空间中一组无规则分布的、表达三维物体或场景的空间结构及表面属性的离散点集。点云中的每个点至少具有三维位置信息,根据应用场景的不同,还可能具有色彩、材质或其他信息。通常,点云中的每个点都具有相同数量的附加属性。
点云可以灵活方便地表达三维物体或场景的空间结构及表面属性,因而应用广泛,包括虚拟现实(Virtual Reality,VR)游戏、计算机辅助设计(Computer Aided Design,CAD)、地理信息***(Geography Information System,GIS)、自动导航***(AutonomousNavigation System,ANS)、数字文化遗产、自由视点广播、三维沉浸远程呈现、生物组织器官三维重建等。
点云的获取主要有以下途径:计算机生成、3D激光扫描、3D摄影测量等。计算机可以生成虚拟三维物体及场景的点云。3D扫描可以获得静态现实世界三维物体或场景的点云,每秒可以获取百万级点云。3D摄像可以获得动态现实世界三维物体或场景的点云,每秒可以获取千万级点云。此外,在医学领域,由MRI、CT、电磁定位信息,可以获得生物组织器官的点云。这些技术降低了点云数据获取成本和时间周期,提高了数据的精度。点云数据获取方式的变革,使大量点云数据的获取成为可能。伴随着大规模的点云数据不断积累,点云数据的高效存储、传输、发布、共享和标准化,成为点云应用的关键。
在对点云内容进行编码后,需要对编码后的数据流进行封装并传输给用户。相对应地,在点云媒体播放器端,需要先对点云文件进行解封装,然后再进行解码,最后将解码后的数据流呈现。因此,在解封装环节,获取到特定的信息之后,能够在一定程度上提升解码环节的效率,从而为点云媒体的呈现带来更好的体验。
图4A为本申请一实施例提供的一种沉浸媒体***的架构图。如图4A所示,沉浸媒体***包括编码设备和解码设备,编码设备可以是指沉浸媒体的提供者所使用的计算机设备,该计算机设备可以是终端(如PC(Personal Computer,个人计算机)、智能移动设备(如智能手机)等)或服务器。解码设备可以是指沉浸媒体的使用者所使用的计算机设备,该计算机设备可以是终端(如PC(Personal Computer,个人计算机)、智能移动设备(如智能手机)、VR设备(如VR头盔、VR眼镜等))。沉浸媒体的数据处理过程包括在编码设备侧的数据处理过程及在解码设备侧的数据处理过程。
在编码设备端的数据处理过程主要包括:
(1)沉浸媒体的媒体内容的获取与制作过程;
(2)沉浸媒体的编码及文件封装的过程。在解码设备端的数据处理过程主要包括:
(3)沉浸媒体的文件解封装及解码的过程;
(4)沉浸媒体的渲染过程。
另外,编码设备与解码设备之间涉及沉浸媒体的传输过程,该传输过程可以基于各种传输协议来进行,此处的传输协议可包括但不限于:DASH(Dynamic AdaptiveStreaming over HTTP,动态自适应流媒体传输)协议、HLS(HTTP Live Streaming,动态码率自适应传输)协议、SMTP(Smart Media Transport Protocaol,智能媒体传输协议)、TCP(Transmission Control Protocol,传输控制协议)等。
下面将结合图4A,分别对沉浸媒体的数据处理过程中涉及的各个过程进行详细介绍。
一、在编码设备端的数据处理过程:
(1)沉浸媒体的媒体内容的获取与制作过程。
1)沉浸媒体的媒体内容的获取过程。
在一种实现中,捕获设备可以是指设于编码设备中的硬件组件,例如捕获设备是指终端的麦克风、摄像头、传感器等。另一种实现中,该捕获设备也可以是与编码设备相连接的硬件装置,例如与服务器相连接摄像头。
该捕获设备可以包括但不限于:音频设备、摄像设备及传感设备。其中,音频设备可以包括音频传感器、麦克风等。摄像设备可以包括普通摄像头、立体摄像头、光场摄像头等。传感设备可以包括激光设备、雷达设备等。
捕获设备的数量可以为多个,这些捕获设备被部署在现实空间中的一些特定位置以同时捕获该空间内不同角度的音频内容和视频内容,捕获的音频内容和视频内容在时间和空间上均保持同步。通过捕获设备采集到的媒体内容称作沉浸媒体的原始数据。
2)沉浸媒体的媒体内容的制作过程。
捕获到的音频内容本身就是适合被执行沉浸媒体的音频编码的内容。捕获到的视频内容进行一系列制作流程后才可成为适合被执行沉浸媒体的视频编码的内容,该制作流程包括:
①拼接。由于捕获到的视频内容是捕获设备在不同角度下拍摄得到的,拼接就是指对这些各个角度拍摄的视频内容拼接成一个完整的、能够反映现实空间360度视觉全景的视频,即拼接后的视频是一个在三维空间表示的全景视频(或球面视频)。
②投影。投影就是指将拼接形成的一个三维视频映射到一个二维(3-Dimension,2D)图像上的过程,投影形成的2D图像称为投影图像;投影的方式可包括但不限于:经纬图投影、正六面体投影。
③区域封装。投影图像可以被直接进行编码,也可以对投影图像进行区域封装之后再进行编码。实践中发现,在沉浸媒体的数据处理过程中,对于二维投影图像进行区域封装之后再进行编码能够大幅提升沉浸媒体的视频编码效率,因此区域封装技术被广泛应用到沉浸媒体的视频处理过程中。所谓区域封装是指将投影图像按区域执行转换处理的过程,区域封装过程使投影图像被转换为封装图像。区域封装的过程具体包括:将投影图像划分为多个映射区域,然后再对多个映射区域分别进行转换处理得到多个封装区域,将多个封装区域映射到一个2D图像中得到封装图像。其中,映射区域是指执行区域封装前在投影图像中经划分得到的区域;封装区域是指执行区域封装后位于封装图像中的区域。
转换处理可以包括但不限于:镜像、旋转、重新排列、上采样、下采样、改变区域的分辨率及移动等处理。
需要说明的是,由于采用捕获设备只能捕获到全景视频,这样的视频经编码设备处理并传输至解码设备进行相应的数据处理后,解码设备侧的用户只能通过执行一些特定动作(如头部旋转)来观看360度的视频信息,而执行非特定动作(如移动头部)并不能获得相应的视频变化,VR体验不佳,因此需要额外提供与全景视频相匹配的深度信息,来使用户获得更优的沉浸度和更佳的VR体验,这就涉及6DoF(Six Degrees of Freedom,六自由度)制作技术。当用户可以在模拟的场景中较自由的移动时,称为6DoF。采用6DoF制作技术进行沉浸媒体的视频内容的制作时,捕获设备一般会选用光场摄像头、激光设备、雷达设备等,捕获空间中的点云数据或光场数据,并且在执行上述制作流程①-③的过程中还需要进行一些特定处理,例如对点云数据的切割、映射等过程,深度信息的计算过程等。
(2)沉浸媒体的编码及文件封装的过程。
捕获到的音频内容可直接进行音频编码形成沉浸媒体的音频码流。经过上述制作流程①-②或①-③之后,对投影图像或封装图像进行视频编码,得到沉浸媒体的视频码流,例如,将打包图片(D)被编码为编码图像(Ei)或编码视频比特流(Ev)。捕获的音频(Ba)被编码为音频比特流(Ea)。然后,根据特定的媒体容器文件格式,将编码的图像、视频和/或音频组合成用于文件回放的媒体文件(F)或用于流式传输的初始化段和媒体段的序列(Fs)。编码设备端还将元数据,例如投影和区域信息,包括到文件或片段中,有助于呈现解码的打包图片。
此处需要说明的是,如果采用6DoF制作技术,在视频编码过程中需要采用特定的编码方式(如点云编码)进行编码。将音频码流和视频码流按照沉浸媒体的文件格式(如ISOBMFF(ISO Base Media File Format,ISO基媒体文件格式))封装在文件容器中形成沉浸媒体的媒体文件资源,该媒体文件资源可以是媒体文件或媒体片段形成沉浸媒体的媒体文件;并按照沉浸媒体的文件格式要求采用媒体呈现描述信息(Media presentationdescription,MPD)记录该沉浸媒体的媒体文件资源的元数据,此处的元数据是对与沉浸媒体的呈现有关的信息的总称,该元数据可包括对媒体内容的描述信息、对视窗的描述信息以及对媒体内容呈现相关的信令信息等等。如图4A所示,编码设备会存储经过数据处理过程之后形成的媒体呈现描述信息和媒体文件资源。
沉浸媒体***支持数据盒(Box),数据盒是指包括元数据的数据块或对象,即数据盒中包含了相应媒体内容的元数据。沉浸媒体可以包括多个数据盒,例如包括球面区域缩放数据盒(Sphere Region Zooming Box),其包含用于描述球面区域缩放信息的元数据;2D区域缩放数据盒(2DRegionZoomingBox),其包含用于描述2D区域缩放信息的元数据;区域封装数据盒(Region Wise PackingBox),其包含用于描述区域封装过程中的相应信息的元数据,等等。
二、在解码设备端的数据处理过程:
(3)沉浸媒体的文件解封装及解码的过程;
解码设备可以通过编码设备的推荐或按照解码设备端的用户需求自适应动态从编码设备获得沉浸媒体的媒体文件资源和相应的媒体呈现描述信息,例如解码设备可根据用户的头部/眼睛/身体的移动信息确定用户的朝向和位置,再基于确定的朝向和位置动态向编码设备请求获得相应的媒体文件资源。媒体文件资源和媒体呈现描述信息通过传输机制(如DASH、SMT)由编码设备传输给解码设备。解码设备端的文件解封装的过程与编码设备端的文件封装过程是相逆的,解码设备按照沉浸媒体的文件格式要求对媒体文件资源进行解封装,得到音频码流和视频码流。解码设备端的解码过程与编码设备端的编码过程是相逆的,解码设备对音频码流进行音频解码,还原出音频内容。
另外,解码设备对视频码流的解码过程包括如下:
①对视频码流进行解码,得到平面图像;根据媒体呈现描述信息提供的元数据,如果该元数据指示沉浸媒体执行过区域封装过程,该平面图像是指封装图像;如果该元数据指示沉浸媒体未执行过区域封装过程,则该平面图像是指投影图像;
②如果元数据指示沉浸媒体执行过区域封装过程,解码设备就将封装图像进行区域解封装得到投影图像。此处区域解封装与区域封装是相逆的,区域解封装是指将封装图像按照区域执行逆转换处理的过程,区域解封装使封装图像被转换为投影图像。区域解封装的过程具体包括:按照元数据的指示对封装图像中的多个封装区域分别进行逆转换处理得到多个映射区域,将该多个映射区域映射至一个2D图像从而得到投影图像。逆转换处理是指与转换处理相逆的处理,例如:转换处理是指逆时针旋转90度,那么逆转换处理是指顺时针旋转90度。
③根据媒体呈现描述信息将投影图像进行重建处理以转换为3D图像,此处的重建处理是指将二维的投影图像重新投影至3D空间中的处理。
(4)沉浸媒体的渲染过程。
解码设备根据媒体呈现描述信息中与渲染、视窗相关的元数据对音频解码得到的音频内容及视频解码得到的3D图像进行渲染,渲染完成即实现了对该3D图像的播放输出。特别地,如果采用3DoF和3DoF+的制作技术,解码设备主要基于当前视点、视差、深度信息等对3D图像进行渲染,如果采用6DoF的制作技术,解码设备主要基于当前视点对视窗内的3D图像进行渲染。其中,视点指用户的观看位置点,视差是指用户的双目产生的视线差或由于运动产生的视线差,视窗是指观看区域。
沉浸媒体***支持数据盒(Box),数据盒是指包括元数据的数据块或对象,即数据盒中包含了相应媒体内容的元数据。沉浸媒体可以包括多个数据盒,例如包括球面区域缩放数据盒(Sphere Region Zooming Box),其包含用于描述球面区域缩放信息的元数据;2D区域缩放数据盒(2DRegionZoomingBox),其包含用于描述2D区域缩放信息的元数据;区域封装数据盒(Region Wise PackingBox),其包含用于描述区域封装过程中的相应信息的元数据等。
图4B为本申请一实施例提供的点云***框架示意图,如图4B所示,点云***包括文件封装设备和文件解封装设备。在一些实施例中,文件封装设备器可以理解为上述编码设备,文件解封装设备可以理解为上述解码设备。
真实世界的视觉场景A由一组相机或一个具有多个镜头和传感器的相机设备捕获。采集结果为点云源数据B,点云源数据B是由大量点云帧组成的帧序列。一个或多个点云帧被编码为编码的点云位流E,包括编码的几何位流和属性位流,根据特定的媒体容器文件格式(如ISOBMFF)进行封装处理,得到一个或多个编码的比特流被组合成用于流化传输的初始化片段和媒体片段的序列(Fs)或用于文件回放的媒体文件(F)。同时,文件封装还将元数据包含到文件F或媒体片段中Fs,使用传输机制将片段Fs传送给播放器。
文件解封装处理接收到的文件F'或片段Fs',提取编码的比特流E'并解析元数据,然后再解码生成点云数据D'。媒体处理过程中,根据当前的观看位置、观看方向或由各种类型的传感器(例如头部、位置或眼动传感器)确定的视窗,将点云数据渲染并显示到头戴式显示器或任何其他显示设备的屏幕上。通过当前观看位置或观看方向来部分访问、解码的点云数据,可用于优化媒体处理过程。在基于视窗的传输过程中,当前的观看位置和观看方向也被传递给策略模块,用于确定要接收的轨道。
上述过程适用于实时和按需用例。
图4B中的各参数定义如下:E/E':为编码的G-PCC比特流;F/F':为包括轨道格式规范的媒体文件,其中可能包含对轨道样本中包含的基本流的约束。
点云码流在封装时,存在三种封装模式:单轨封装、基于组件的多轨封装和基于分片的多轨封装。
图5A为存储在单轨道中的几何点云的样本结构示意图,如图5A所示,整个点云位流的属性数据和几何数据均封装在一个轨道中,该轨道中包括一个多个样本。
图5B为基于组件的多轨封装结构示意图。如图5B所示,将点云位流的几何数据封装在几个组件轨道中,将点云位流的属性1数据封装在属性组件轨道1中,将点云位流的属性2数据封装在属性组件轨道2中。其中每一个组件轨道中包括多个样本。
图5C为基于分片的多轨封装结构示意图。如图5C所示,在基于点云片封装时,包括一个点云片基础轨道,以及一个或多个点云片轨道,例如将点云片1和点云片2对应的点云位流封装在点云片轨道1中,将点云片3UI有的点云位流封装在点云片轨道2中。
图5D为基于点云片的多轨封装结构示意图。当一个点云片轨道的点云片中包含部分组件数据时,点云片轨道样本结构示例如图5D所示,包括一个点云片基础轨道、点云片1和点云片2的几何组件轨道、点云片1和点云片2的属性组件轨道、点云片3的几何组件轨道、点云片3的属性组件轨道。
每个点云样本可被划分为一个或多个点云子样本,在点云数据的封装中使用SubSampleInformationBox,根据子样本信息数据的标志字段(flags)的值定义子样本。标志字段指定此数据盒中的子样本信息的类型,如下所示:
0:基于点云数据类型的子样本。一个子样本只包含一种由AVSPCCPayloadType定义数据类型。
1:基于点云片的子样本。一个子样本仅包含一个点云片的相关信息。当相应轨道包含组件信息数据盒时,相应轨道的子样本中仅包含相应组件信息数据盒对应的组件数据。当相应轨道不包含组件信息数据盒时,相应轨道的子样本包含所有的组件数据。
保留其他标志值。
SubsampleInformationBox的codec_specific_parameters字段定义如下:
AVSPCCPayloadType指示子样本中包含点云的数据类型,取值含义如下表1所示:
表1点云数据类型
payloadType值 | 描述 |
0 | 序列头 |
1 | 几何头 |
2 | 点云片几何数据 |
3 | 属性头 |
4 | 点云片属性数据 |
5..31 | 保留 |
attr_type指示子样本中包含的属性数据的类型。取值为0表示颜色属性;取值为1表示反射率属性。
slice_data指示子样本中是否包含点云片的数据,取值为1时表示包含点云片几何和/或属性类型数据;值为0时表示包含点云的参数信息。
slice_id指示子样本中包含的数据对应的点云片的标识。
由上述可知,目前虽然通过定义子样本,访问点云帧的部分数据单元,或者通过多轨道封装方式,访问特定类型或者特定点云片的数据。但是,当点云位流中包含多组同类型的属性数据,或者属性数据之间存在编解码或呈现关联关系时,已有技术无法准确地指示这些属性数据之间的关联关系,进而无法对部分属性数据进行正确的解码和个性化呈现。
为了解决上述技术问题,本申请实施例提出一种点云文件封装和解封装方法,针对点云位流,将具有编解码或呈现关联关系的属性数据封装在同一个轨道或同一个属性组,且通过依赖指示信息指示不同点云属性数据之间的编解码依赖关系或者关联关系,以支持点云位流的部分访问、正确解码以及个性化呈现。
下面通过一些实施例对本申请实施例的技术方案进行详细说明。下面这几个实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图6为本申请实施例提供的一种点云文件解封装方法的流程图。本申请实施例可以由上述的文件解封装设备或解码器完成,下面以执行主体为文件解封装设备为例进行说明。
如图6所示,该方法包括如下步骤:
S101、确定点云文件中待解码的第一属性数据。
其中,点云文件是对点云位流进行封装得到的文件。
在本申请实施例中,对点云数据进行编码,得到点云位流,在一些实施例中,点云位流也称为点云码流。在点云包括几何信息和属性信息,对几何信息进行编码,得到几何码流(或称为几何位流),对属性信息进行编码,得到属性码流(或称为属性位流)。本申请实施例的点云位流至少包括属性位流,例如本申请实施例的点云位流包括几何位流和属性位流,或者本申请实施例的点云位流只包括属性位流。
在一些实施例中,本申请实施例的点云位流包括几何数据和N组属性数据,其中N为正整数,N组属性数据也可以理解为N个属性组件,例如点云中的每一个点包括N个属性数据,这样整个点云包括N组属性数据或N个属性组件,一组属性数据或一个属性组件包括该点云中所有点的该属性数据。其中几何数据可以理解为上述几何位流,属性数据可以理解为属性位流。
在本申请实施例中,点云封装设备(例如服务器)获取点云位流后,对点云位流进行封装,得到点云文件。
由上述可知,点云封装设备对点云位流进行封装的方式至少包括单轨道封装、基于组件的多轨道封装和基于点云片的多轨道封装。
在一些实施例中,若点云封装设备采用单轨道封装时,则可以对点云属性数据进行封装,即将具有第一关系的点云属性数据划分在同一个属性组中。这样解码端在解码时,可以只对同一个属性组中的属性数据进行解码,实现对点云属性数据的部分访问,以及正确解码,进而实现点云属性数据的个性化呈现。
在一些实施例中,若点云封装设备采用基于组件的多轨道封装时,则可以将点云位流中具有第一关系的点云属性数据封装在同一个组件轨道中。这样解码端在解码时,可以只对同一个组件轨道中的属性数据进行解码,实现对点云属性数据的部分访问,以及正确解码,进而实现点云属性数据的个性化呈现。例如,点云位流包括几何数据和N组属性数据,点云封装设备可以将几何数据封装至一个单独的组件轨道中,将N组属性数据中互相之间存在第一关系的M组属性数据,封装至同一个属性组件轨道中,将N组属性数据中与其他属性数据不存第一关系的1组属性数据,封装至一个单独的属性组件轨道中。
在一些实施例中,若点云封装设备采用基于点云片的多轨道封装时,则对于特定的点云片,可以将其对应的几何和属性数据封装在同一个点云片轨道中。或者,可以将点云位流中具有第一关系的点云属性数据封装在同一个点云片轨道中。这样解码端在解码时,可以只对同一个点云片轨道中的属性数据进行解码,实现对点云属性数据的部分访问,以及正确解码,进而实现点云属性数据的个性化呈现。例如,对于特定的点云片,其对应的几何和属性数据位于多个不同的点云片轨道,例如将几何数据封装至一个单独的点云片轨道中,将N组属性数据中互相之间存在第一关系的M组属性数据封装至一个点云片轨道中,将N组属性数据中与其他属性数据不存在第一关系的1组属性数据,封装至一个单独的点云片轨道中。
本申请实施例对第一关系的具体类型不做限制,例如可以为任一关联关系。在一些实施例中,该第一关系包括解码依赖关系和呈现关联关系中的至少一个。
进一步的,文件封装设备根据采取的具体封装方式,添加相应的元数据信息以指示解码文件轨道所需的必要信息。例如,指示不同点云属性数据之间的第一关系,例如编解码依赖关系、呈现关联关系,以及指示文件轨道中包含的属性信息,即属性类型数和属性数目等。
接着,文件封装设备根据文件封装设备(例如服务器)和文件解封装设备(例如客户端)之间的传输方式,将点云文件F直接传输给客户端。或者,将点云文件F切片后得到Fs集合,根据用户的需求,将相应切片中用户所需的文件轨道数据传输给用户。
文件解封装设备对接收到的文件进行解封装、解码和呈现。
在本申请实施例中,文件解封装设备确定点云文件中待解码的第一属性数据的方式至少包括如下几种方式:
方式1,文件解码封装设备接收到完整的点云文件F,基于点云文件的相关元数据和指示信息,确定待解码的第一属性数据。
方式2,文件解码封装设备接收到切片文件Fs,基于接收到的文件切片的相关元数据和指示信息,确定待解码的第一属性数据。
方式3,文件解封装设备获取点云文件的点云组件描述信息,点云组件描述信息用于描述点云文件的各轨道所包括的点云组件的类型、属性组件的类型列表和不同类型的属性组件的数量列表、属性组件所属的属性组标识、属性组的描述信息中的至少一个;文件解封装设备基于点云组件描述信息,确定点云中待解码的第一属性数据。
在该方式3中,点云组件描述信息也称为点云组件描述子(AVS PCC componentdescriptor),可识别Component Adaptation Set(组件自适应集)中点云组件的类型。点云组件描述子是一个EssentialProperty(本质属性)元素,其@schemeIdUri属性设置为"urn:avs:pccs:2022:component"。
在Adaptation Set(自适应集)层级,存在于Component Adaptation Set(组件自适应集)的Representation(代表)中的每个点云组件应由一个点云组件描述子来表述。
示例性的,点云组件描述子应包括表2中定义的元素和属性。
表2点云组件描述子属性
由上述表2可知,在本申请实施例中,对DASH信令扩展,具体对点云组件描述子进行扩展,当点云组件的类型为属性组件时,增加了指示不同类型的属性组件的数量列表、属性组件所属的属性组标识、属性组的描述信息。也就是说,在本申请实施例中,若component@type的取值为‘attr’时,则点云组件描述子不仅包括component@attr_type,用于指示属性组件的类型列表,还包括component@attr_num指示相应类型的属性组件的数量列表,component@attr_group_id指示点云属性组件所属的属性组标识符,以及component@attr_group_label指示点云属性组件所属的属性组的描述信息中的至少一个。
基于此,文件解封装设备基于接收到的点云组件描述信息(即点云组件描述子),确定点云中待解码的第一属性数据。例如,基于点云组件描述信息,确定点云文件中各轨道所包括的组件的类型,若轨道包括的组件为属性组件时,则继续根据轨道所包括的属性组件的类型列表和不同类型的属性组件的数量列表,以及属性组件所属的属性组标识和属性组的描述信息,确定待解码的第一属性数据。
在一些实施例中,若点云数据包括N组属性数据时,则上述第一属性数据可以包括N组属性数据中的至少一组属性数据,或者一组属性数据中的部分属性数据。
点云解封装设备基于上述步骤,确定出点云文件中待解码的第一属性数据后,执行如下S102的步骤。
S102、确定第一属性数据的依赖指示信息。
其中,依赖指示信息用于指示第一属性数据与第二属性数据之间是否存在第一关系,第一关系包括解码依赖关系和呈现关联关系中的至少一个。
由上述可知,本申请实施例中,点云数据中的一些属性数据在编解码或呈现时,依赖其他属性数据。基于此,文件解封装设备在对第一属性数据进行解码之前,首先需要确定该第一属性数据在是否与其他属性数据存在第一关系,若确定该第一属性数据与其他属性数据之间存在第一关系时,例如第一属性数据与第二属性数据存在解码依赖关系时,则还需要从点云文件中解封装出该第二属性数据,进而基于第二属性数据对第一属性数据进行解码,进而实现对第一属性数据的正确解码和个性化呈现的同时,减少解封装和解码的数据量,进而提高了点云的解码效率。
因此,文件解封装设备在确定出点云文件中待解码的第一属性数据后,还需要确定第一属性数据的依赖指示信息,该依赖指示信息用于指示第一属性数据与第二属性数据之间是否存在第一关系。
本申请实施例对确定第一属性数据的依赖指示信息的具体方式不做限制。
在一些实施例中,若点云位流采用基于组件的多轨道封装时,则依赖指示信息包括第一信息和第二信息中的至少一个,此时上述S102包括如下S102-A1至S102-A2的步骤:
S102-A1、确定第一属性数据所在的第一轨道;
S102-A2、确定第一轨道对应的第一信息和第二信息中的至少一个,第一信息用于指示第一轨道所包括的属性组件的数目,第二信息用于指示第一轨道是否包括属性组。
由上述可知,在基于组件的多轨封装中,文件封装设备将具有第一关系的属性数据封装在一个轨道中。基于此,在该实施例中,若点云位流采用多轨封装时,则首先确定第一属性数据所在的轨道,为了便于描述,将第一属性数据所在的轨道记为第一轨道。例如,若点云位流采用基于组件的多轨道封装时,则将第一属性数据所在的组件轨道,确定为第一轨道。再例如,若点云位流采用基于点云片的多轨道封装时,则将第一属性数据所在的点云片轨道,确定为第一轨道。
接着,确定第一轨道对应的第一信息和第二信息中的至少一个。
本申请实施例中,上述第一轨道对应的第一信息和第二信息中的至少一个包括在点云文件中,通过解析点云文件,可以的第一轨道对应的第一信息和第二信息中的至少一个。
这样,文件解封装设备可以基于第一轨道对应的第一信息和第二信息中的至少一个,确定出第一属性数据与第二属性数据之间是否存在第一关系。
例如,若第一信息指示第一轨道所包括的属性组件的数目大于1,则表示第一属性数据与第二属性数据之间存在解码依赖关系;
若第一信息指示第一轨道所包括的属性组件的数目等于1时,则表示第一属性数据与第二属性数据之间不存在解码依赖关系;
若第二信息指示第一轨道包括属性组时,则表示第一属性数据与第二属性数据之间存在呈现关联关系;
若第二信息指示第一轨道不包括属性组时,则表示第一属性数据与第二属性数据之间不存在呈现关联关系。
由上述可知,基于第一信息和第二信息中的至少一个,确定第一属性数据与第二属性数据之间的第一关系,具体包括如下几种:
示例1,若第一属性数据的依赖指示信息只包括第一信息且不包括第二信息时,文件解封装设备可以基于第一信息可以确定出第一属性数据与第二属性数据之间是否存在解码依赖关系。例如,若第一信息指示第一轨道所包括的属性组件的数目大于1,则表示第一属性数据与第二属性数据之间存在解码依赖关系;若第一信息指示第一轨道所包括的属性组件的数目等于1时,则表示第一属性数据与第二属性数据之间不存在解码依赖关系。
示例2,若第一属性数据的依赖指示信息只包括第二信息且不包括第一信息时,文件解封装设备可以基于第二信息可以确定出第一属性数据与第二属性数据之间是否存在呈现关联关系。例如,若第二信息指示指示第一轨道包括属性组时,则表示第一属性数据与第二属性数据之间存在呈现关联关系;若第二信息指示第一轨道不包括属性组时,则表示第一属性数据与第二属性数据之间不存在呈现关联关系。
示例3,若第一属性数据的依赖指示信息包括第一信息和第二信息时,文件解封装设备可以基于第一信息可以确定出第一属性数据与第二属性数据之间是否存在解码依赖关系,以及基于第二信息可以确定出第一属性数据与第二属性数据之间是否存在呈现关联关系。例如,若第一信息指示第一轨道所包括的属性组件的数目大于1,且第二信息指示指示第一轨道包括属性组时,则表示第一属性数据与第二属性数据之间存在解码依赖关系和呈现关系关系。若第一信息指示第一轨道所包括的属性组件的数目大于1,且第二信息指示指示第一轨道不包括属性组时,则表示第一属性数据与第二属性数据之间存在解码依赖关系和不存在呈现关系关系。
也就是说,在该实施例中,文件解封装设备在解码第一属性数据时,若确定点云位流采用基于组件的多轨道封装时,则确定第一属性数据所在的第一轨道,确定第一轨道对应的第一信息和第二信息中的至少一个,进而基于该第一信息和第二信息中的至少一个,确定出第一属性数据与第二属性数据之间是否存在第一关系。例如,若第一信息指示第一轨道所包括的属性组件的数目大于1,则确定第一轨道中的第一属性数据与第二属性数据之间存在解码依赖关系,若第一信息指示第一轨道所包括的属性组件的数目等于1,则确定第一属性数据与第二属性数据之间不存在解码依赖关系。
本申请实施例对第一信息和第二信息的具体表现形式不做限制。
在一些实施例中,第一信息包括第一属性组件数目指示信息attr_num,用于指示第一轨道中包含的属性组件的个数。
在一些实施例中,第一信息包括属性组件类型数量指示信息、第二属性组件类型指示信息attr_type_num和第二属性组件数目指示信息attr_num,其中,属性组件类型数量指示信息attr_type_num用于指示第一轨道所包括的属性组件的不同类型数量,第二属性组件数目指示信息attr_num用于指示每一种类型的属性组件的个数。
在一些实施例中,第二信息包括属性组信息标志,该属性组信息标志表示是否指示属性组信息。
本申请实施例对第一信息和第二信息在点云文件中的具***置不做限制。
在一些实施例中,第一信息和第二信息中的至少一个位于第一轨道中。
在一些实施例中,第一轨道包括组件信息数据盒,该第一信息和第二信息中的至少一个可以包括于该组件信息数据盒中。也就是说,在解码第一属性数据时,确定第一属性数据所在的第一轨道,从该第一轨道的组件信息数据盒中确定出第一轨道对应的第一信息和第二信息中的至少一个,进而确定出第一属性数据与第二属性数据之间是否存在第一关系。
在本申请实施例中,为了支持本申请的实施步骤对组件信息数据盒进行扩展,具体如下。
扩展组件信息数据盒
数据盒类型:'acif'
包含于:样本入口
是否强制:否
数量:0个或1个
组件信息数据盒指示点云组件的数据类型,即几何、属性等。当该数据盒包含于轨道的样本入口时,该数据盒指示对应轨道中携带的点云组件的类型。该数据盒同时提供属性组件轨道中属性数据相关的信息。而当点云位流以单轨形式存储时,其样本入口中不应包含组件信息数据盒。
在一种示例中,组件信息数据盒的扩展如下所示:
其中,上述avs_pcc_type指示轨道中组件的类型,取值如下表3所示。
表3组件类型
avs_pcc_type值 | 描述 |
0,1 | 保留 |
2 | 几何数据 |
3 | 保留 |
4 | 属性数据 |
5..31 | 保留. |
attr_num指示轨道中包含的属性组件的个数。
multi_attr_type取值为0时表示组件轨道中包含的属性组件均为同一种属性类型。取值为1时表示组件轨道中包含的属性组件为不同的属性类型。
attr_type指示轨道中包含的属性组件的类型。取值为0表示颜色属性;取值为1表示反射率属性。
attr_group_info_flag取值为0时表示不指示属性组信息。取值为1时表示指示属性组信息,且当前组件轨道包含的属性组件属于相应的属性组。
attr_group_id指示属性组的标识符。同属于一个属性组的不同属性数据存在编解码或者呈现上的依赖关系。
上述attr_group_info_flag可以理解为属性组信息标志,attr_num可以理解为第一属性组件数目指示信息。
在另一种示例中,组件信息数据盒的扩展如下所示:
其中,attr_type_num指示轨道中包含的属性组件的类型数量。
attr_type[i]指示轨道中包含的属性组件的类型。取值为0表示颜色属性;取值为1表示反射率属性。
attr_num[i]指示轨道中包含的相应类型的属性组件的个数。
上述attr_type_num可以理解为属性组件类型数量指示信息,attr_num[i]可以理解为第二属性组件数目指示信息。
在一些实施例中,若属性组信息标志指示属性组信息,且第一轨道所包括的属性组件属于相应的第二属性组时,则文件解封装设备确定第二属性组的标识,基于第二属性组的标识,获得第二属性组中的属性数据,第二属性组包括第一属性数据和第二属性数据;对第二属性组中的属性数据进行解码和一起呈现。
即在该实施例中,若attr_group_info_flag=1时,则表示第一轨道包括属性组,且第一轨道所包括的属性组件均属于第二属性组,此时说明第二属性组中的属性数据存在呈现关联关系。文件解封装设备继续解析上述组件信息数据盒,得到第二属性组的标识attr_group_id。基于第二属性组的标识attr_group_id可以得到第二属性组所包括的属性数据,该属性数据包括第一属性数据和第二属性数据。进而对该第二属性组所包括的属性数据进行解码,并一起呈现。
本申请实施例扩展后的组件信息数据盒,在指示轨道所包括属性组件中每一个属性组件的类型时,不是逐一指示轨道所包括的每一个属性组件的类型。而是指示该轨道所包括的属性组件的类型数量,以及每一种类型所包括的属性组件的个数,进而为了简化指示信息。
在一些实施例中,若点云位流中的属性组件被封装在一个第二轨道中时,依赖指示信息包括第三信息和第四信息中的至少一个,此时上述S102包括如下S102-B1至S102-B2的步骤:
S102-B1、确定第一属性数据所属的第一属性组,第二轨道为采用单轨封装方式封装点云位流的轨道,或者为封装点云位流的特定点云片的所有组件的点云片轨道;
S102-B2、确定第一属性组对应的第三信息和第四信息中的至少一个,第三信息用于指示第一属性组中的属性组件之间是否存在解码依赖关系,第四信息用于指示第一属性组中的属性组件之间是否存在呈现关联关系。
在该实施例中,若点云位流采用单轨封装,即点云位流的几何数据和属性数据均封装在一个轨道中,或者点云位流采用基于点云片的多轨封装,且点云位流中的特定点云片的所有组件封装在一个点云片轨道中时,为了便于描述,将该轨道称为第二轨道中。此时,由上述可知,在单轨封装或将点云位流的属性数据封装在一个轨道中时,将点云位流中具有第一关系的属性数据被划分在同一个属性组中。基于此,若点云位流中的属性组件被封装在一个第二轨道中时,则首先确定第一属性数据所属的第一属性组。
本申请实施例对确定第一属性数据所属的第一属性组的具体方式不做限制。
在一些实施例中,第二轨道中包括属性组的描述信息,该属性组的描述信息包括描述该第二轨道所包括的每一个属性组的标识和数据类型等信息,进而基于属性组的描述信息,确定出第一属性数据所在的属性组。
在一些实施例中,上述S102-B1包括如下S102-B11至S102-B13步骤:
S102-B11、确定第一属性数据所在的第一子样本对应的属性组标志,属性组标志用于指示第一子样本是否属于属性组;
S102-B12若属性组标志指示第一子样本属于属性组时,则确定第一子样本所属的第一属性组的标识;
S102-B13、基于第一属性组的标识,确定第一属性组。
在该实现方式中,通过确定第一属性数据所在的第一子样本对应的属性组标志,该属性组标志用于指示第一子样本是否属于属性组。若第一子样本属性属性组时,则确定第一子样本所属的第一属性组的标识,进而基于第一属性组的标识,确定第一属性组。
可选的,属性组标志可以用字段attr_group_flag表示。
可选的,属性组的标识可以用字段attr_group_id表示。
本申请实施例对属性组标志和属性组的标识在点云文件中的具***置不做限制。在一些实施例中,属性组标志和第一属性组的标识中的至少一个,包括于第一子样本的子样本信息数据盒中。
在本申请实施例中,扩展子样本定义。每个点云样本可被划分为一个或多个点云子样本,在点云数据的封装中使用SubSampleInformationBox(子样本信息数据盒),根据子样本信息数据的标志字段(flags)的值定义子样本。标志字段指定此数据盒中的子样本信息的类型,如下所示:
0:基于点云数据类型的子样本。一个子样本只包含一种由AVSPCCPayloadType定义数据类型。
1:基于点云片的子样本。一个子样本仅包含一个点云片的相关信息。当相应轨道包含组件信息数据盒时,相应轨道的子样本中仅包含相应组件信息数据盒对应的组件数据。当相应轨道不包含组件信息数据盒时,相应轨道的子样本包含所有的组件数据。
保留其他标志值。
扩展子样本定义如下所示:
SubsampleInformationBox的codec_specific_parameters字段定义如下:
/>
其中,AVSPCCPayloadType指示子样本中包含点云的数据类型,取值含义如下表4所示:
表4点云数据类型
payloadType值 | 描述 |
0 | 序列头 |
1 | 几何头 |
2 | 点云片几何数据 |
3 | 属性头 |
4 | 点云片属性数据 |
5..31 | 保留 |
attr_type指示子样本中包含的属性数据的类型。取值为0表示颜色属性;取值为1表示反射率属性。
slice_data指示子样本中是否包含点云片的数据,取值为1时表示包含点云片几何和/或属性类型数据;值为0时表示包含点云的参数信息。
slice_id指示子样本中包含的数据对应的点云片的标识。
attr_group_flag取值为0时表示子样本不属于属性组。取值为1时表示子样本属于属性组。
attr_group_id指示属性组的标识符。同属于一个属性组的不同属性数据存在编解码或者呈现上的依赖关系。
也就是说,在单轨封装或将点云属性数据封装在一个轨道中时,文件解封装设备通过解析第二轨道中第一属性数据所在的第一子样本的子样本信息数据盒,得到第一子样本对应的属性组标志,若该属性组标志指示第一子样本属于属性组时,则继续解析该子样本信息数据盒,得到第一子样本所属的第一属性组的标识,进而基于该标识,确定出第一属性组。
接着,确定该第一属性组对应的第三信息和第四信息中的至少一个。
本申请实施例对第三信息和第四信息的具体表现形式不做限制。
在一些实施例中,第三信息包括属性依赖组标志attr_dependency_group_flag,第四信息包括默认属性标志default_attr_flag,属性依赖组标志attr_dependency_group_flag用于指示第一属性组对应的属性组件之间是否存在解码依赖关系,默认属性标志default_attr_flag用于指示第一属性组对应的属性组件是否为默认呈现的属性组件。
本申请实施例对第三信息和第四信息在点云文件中的具***置不做限制。
在一些实施例中,该第三信息和第四信息中的至少一个可以包括于第一子样本的子样本信息数据盒中。
在一些实施例中,本申请实施例在第二轨道中添加属性组信息数据盒,该属性组信息数据盒用于指示属性组相关的信息。
示例性的,属性组信息数据盒的定义如下所示:
数据盒类型:'agin'
包含于:SampleEntry
是否强制:否
数量:0个或1个
attr_group_num指示当前轨道对应的点云码流中包含的属性组的数量。
attr_group_id指示相应属性组的标识符。
default_attr_flag该字段取值为1时表示当前属性组对应的属性组件为相应类型属性组件中默认呈现的属性组件;该字段取值为0时表示当前属性组对应的属性组件不是多个同类型属性组件中默认呈现的属性组件。
attr_dependency_group_flag取值为1时表示当前属性组对应的属性组件之间存在编解码依赖;取值为0时表示当前属性组对应的属性组件之间不存在编解码依赖。
attr_group_label_flag取值为1时指示当前属性组对应的描述性标签;取值为0时不指示当前属性组对应的描述性标签。
attr_group_label指示当前属性组的描述信息。
其中,default_attr_flag可以理解为上述的呈现依赖标志,attr_dependency_group_flag可以理解为上述的解码依赖标志。
在一些实施例中,对于属性数据位于不同轨道的场景,也可以不使用属性组信息数据盒,直接将属性组信息数据盒中的字段包含于组件信息数据盒中,扩展如下。
在本申请实施例中,文件解封装设备确定出第三信息和第四信息中的至少一个,进而可以确定出第一属性数据与第二属性数据之间是否存在第一关系。例如,若第三信息指示第一属性组中的属性组件之间存在解码依赖关系,例如attr_dependency_group_flag=1,则确定第一属性数据在解码时依赖第二属性数据。再例如,若第三信息指示第一属性组中的属性组件之间不存在解码依赖关系,例如attr_dependency_group_flag=0,则确定第一属性数据在解码时不依赖第二属性数据。
文件解封装设备基于上述步骤,确定出第一属性数据的依赖指示信息后,执行如下S103的步骤。
S103、基于依赖指示信息,对第一属性数据进行解码。
本申请实施例中,文件封装设备将具有第一关系的属性数据封装在一个轨道中,或划分在一个属性组中。这样文件解封装设备在对第一属性数据进行解码时,首先基于上述步骤,确定第一属性数据的依赖指示信息,以确定第一属性数据在解码时是否依赖第二属性数据。
在一些实施例中,若上述依赖指示信息指示第一属性数据与第二数据之间具有解码依赖关系时,则文件解封装设备确定第二属性数据,并基于第二属性数据对第一属性数据进行解码。
其中,确定第二属性数据的方式至少包括如下几种情况:
情况1,若点云位流采用多轨道封装时,则确定第一属性数据所在的第一轨道,并将第一轨道中除第一属性数据之外的其中属性数据,确定为第二属性数据。例如,若点云位流采用基于组件的多轨道封装时,则将第一属性数据所在的组件轨道中除第一属性数据外的其他属性数据,确定为第二属性数据。再例如,若点云位流采用基于点云片的多轨道封装时,则将第一属性数据所在的点云片轨道中除第一属性数据外的其他属性数据,确定为第二属性数据。
示例性的,如图7A所示,若采用基于组件的多轨封装时,可以将点云位流封装为多个组件轨道,例如封装为一个几何组件轨道和N个属性组件轨道。每一个组件轨道中包括一个组件信息数据盒。文件解封装设备首先确定第一属性数据所在的第一轨道,例如为属性组件轨道1,进而从属性组件轨道1的组件信息数据盒中确定出第一信息中的至少一个,进而基于该第一信息确定出该属性组件轨道1所包括的属性组件的数量。若属性组件轨道1所包括的属性组件的数量大于1时,则确定第一属性数据在解码时,依赖于第二属性数据,进而对整个属性组件轨道1进行解码,得到解码后的第一属性数据。若属性组件轨道1所包括的属性组件的数量等于1时,则确定第一属性数据在解码时,不依赖于第二属性数据,可以对第一属性数据进行单独解码,得到解码后的第一属性数据。
情况2,若所述点云位流中的属性组件被封装在一个第二轨道中时,则确定第一属性数据所属的第一属性组,并将第一属性组中除第一属性数据外的其他属性数据,确定为第二属性数据。例如若点云位流采用单轨封装时,在该单轨中确定第一属性数据所属的第一属性组,且第一属性组将中除第一属性数据外的其他属性数据,确定为第二属性数据。再例如,若点云位流采用基于点云片的多轨道封装,且将点云位流的特定点云片的所有组件封装在一个点云片轨道中时,在该点云片轨道中确定第一属性数据所属的第一属性组,且第一属性组将中除第一属性数据外的其他属性数据,确定为第二属性数据。
示例性的,如图7B所示,若采用基于组件的单轨封装时,可以将点云位流的几何数据和属性数据封装在一个轨道中,具体的,将点云位流的不同区域封装在不同的子样本中。例如,将点云位流的几何组件数据、属性组件数据1、属性组件数据2、属性组件数据4和属性组件数据5封装在一个样本1中,且样本1中属性组件数据2和属性组件数据3之间具有第一关系,进而划分在同一个属性组中,例如将属性组件数据2和属性组件数据3划分在属性组1中,且将属性组件数据2和属性组件数据3标识为属于属性组1,即标识为attr_group_id=1。文件解封装设备在对第一属性数据进行解码时,首先确定第一属性数据所在的第一子样本,进而确定该第一子样本中是否属于属性组,若属于属性组时,则确定第一子样本所包括的第一属性组的标识,假设确定第一属性组的标识为attr_group_id=1。接着,从属性组信息数据盒所包括的各属性组的描述信息中,确定第一属性组对应的第三信息和第四信息中的至少一个,进而基于第一属性组对应的第三信息和第四信息中的至少一个,确定第一属性数据与第二属性数据之间是否存在第一关系。例如,第三信息包括attr_dependency_group_flag,若attr_dependency_group_flag=1,则确定第一属性数据在解码时依赖第二属性数据,进而从第一属性组中确定出第二属性数据,基于第二属性数据对第一属性数据进行解码。再例如,若第二信息指示第一属性组中的属性组件之间不存在解码依赖,例如attr_dependency_group_flag=0,则确定第一属性数据在解码时不依赖第二属性数据,进而对第一属性数据进行单独解码。
在一些实施例中,若依赖指示信息指示第一属性数据与第二属性数据之间不存在解码依赖关系时,则对第一属性数据信息进行单独解码。例如,由上述可知,若第一属性数据与第二属性数据之间不存在编码依赖关系时,在多轨封装的情况下,则文件封装设备将该第一属性数据单独封装在一个轨道中,在单轨封装的情况下,则文件封装设备将该第一属性数据作为一个单独的属性组件,不划分到属性组中。这样,文件解封装设备在解封装时,在多轨封装的情况下,对第一属性数据所在的轨道进行解封装和解码,得到解码后的第一属性数据,在单轨封装的情况下,对第一属性数据进行单独解码,可以得到解码后的第一属性数据。
在一些实施例中,若依赖指示信息指示第一属性数据与第二属性数据之间存在呈现关联关系时,则确定第二属性数据,对第一属性数据和第二属性数据一起解码和呈现。
在一些实施例中,若依赖指示信息指示第一属性数据与第二属性数据之间不存在呈现关联关系时,则对第一属性数据进行单独呈现。
本申请实施例,通过确定第一属性数据的依赖指示信息,实现对第一属性数据进行正确解码,并对解码后的第一属性数据进行呈现。进而实现对点云位流中部分属性数据的准确解码和个性化呈现。
本申请实施例提供的点云文件解封装方法,通过确定点云文件中待解码的第一属性数据,确定该第一属性数据的依赖指示信息,该依赖指示信息用于指示第一属性数据与第二属性数据之间是否存在第一关系,所述第一关系包括解码依赖关系和呈现关联关系中的至少一个,进而基于该依赖指示信息,对第一属性数据进行解码。即本申请通过依赖指示信息指示不同点云属性数据之间的编解码依赖关系或者呈现关联关系,以支持点云位流的部分访问、正确解码以及个性化呈现。
上文对点云文件的解封装方法进行介绍,下面对点云文件的封装方法进行介绍。
图8为本申请实施例提供的一种点云文件封装方法的流程图,如图8所示,该方法包括如下步骤:
S201、获取点云位流。
其中点云位流包括N组属性数据,所述N为正整数。
在本申请实施例中,对点云数据进行编码,得到点云位流,在一些实施例中,点云位流也称为点云码流。在点云包括几何信息和属性信息,对几何信息进行编码,得到几何码流(或称为几何位流),对属性信息进行编码,得到属性码流(或称为属性位流)。本申请实施例的点云位流至少包括属性位流,例如本申请实施例的点云位流包括几何位流和属性位流,或者本申请实施例的点云位流只包括属性位流。
在一些实施例中,本申请实施例的点云位流包括几何数据和N组属性数据,其中N为正整数。其中几何数据可以理解为上述几何位流,属性数据可以理解为属性位流。
S202、对于N组属性数据中待封装的第一属性数据,基于第一属性数据与第二属性数据之间的第一关系,对第一属性数据进行封装,且确定第一属性数据的依赖指示信息,得到点云文件。
其中,依赖指示信息用于指示第一属性数据与第二属性数据之间是否存在第一关系,第一关系包括编码依赖关系和呈现关联关系中的至少一个。
在本申请实施例中,点云封装设备(例如服务器)获取点云位流后,对点云位流进行封装,得到点云文件。
本申请实施例对N组属性数据中待封装的第一属性数据进行封装时,基于该第一属性数据与第二属性数据是否存在第一关系,来对第一属性数据进行封装。其中第一属性数据可以为N组属性数据中的任意待封装的至少一组属性数据或一组属性数据中的部分属性数据。
本申请实施例中,基于第一属性数据与第二属性数据之间是否存在第一关系,对第一属性数据进行封装的具体方式不做限制。
在一些实施例中,若第一属性数据与第二属性数据具有呈现依赖关系时,则将第一属性数据和第二属性数据封装在同一个属性轨道中,或者划分在同一个属性组中。
在一些实施例中,若第一属性数据与第二属性数据不具有呈现依赖关系,则可以将第一属性数据和第二属性数据封装在不同的属性轨道,例如将第一属性数据单独封装在一个属性轨道中,或者将第一属性数据单独作为属性组件不标识属于那一个属性组。
在一些实施例中,若依赖指示信息指示第一属性数据与第二属性数据之间不存在编码依赖关系时,则对第一属性数据信息进行单独封装。例如,在多轨封装的情况下,将该第一属性数据单独封装在一个轨道中,在单轨封装的情况下,则将该第一属性数据作为一个单独的属性组件,不划分到属性组中。
在一些实施例中,若第一属性数据与第二属性数据之间具有编码依赖关系时,则上述S202包括如下S202-A1至S202-A2的步骤:
S202-A1、获取第二属性数据;
S202-A2、基于该第二属性数据,对第一属性数据进行封装。
由上述可知,点云封装设备对点云位流进行封装的方式至少包括单轨道封装、基于组件的多轨道封装和基于点云片的多轨道封装。此时,上述S202-A2包括如下几种方式:
在一些实施例中,若点云位流采用基于组件的多轨道封装时,则将第二属性数据和第一属性数据封装在第一轨道中。
也就是说,在该实施例中,若点云封装设备采用基于组件的多轨道封装时,则可以将点云位流中具有第一关系的点云属性数据封装在同一个组件轨道中。这样解码端在解码时,可以只对同一个组件轨道中的属性数据进行解码,实现对点云属性数据的部分访问,以及正确解码,进而实现点云属性数据的个性化呈现。例如,点云位流包括几何数据和N组属性数据,点云封装设备可以将几何数据封装至一个单独的组件轨道中,将N组属性数据中互相之间存在第一关系的M组属性数据,封装至同一个属性组件轨道中,将N组属性数据中与其他属性数据不存在第一关系的1组属性数据,封装至一个单独的属性组件轨道中。
或者,若点云封装设备采用基于点云片的多轨道封装时,则对于特定的点云片,可以将点云位流中具有第一关系的点云属性数据封装在同一个点云片轨道中。这样解码端在解码时,可以只对同一个点云片轨道中的属性数据进行解码,实现对点云属性数据的部分访问,以及正确解码,进而实现点云属性数据的个性化呈现。例如,对于特定的点云片,其对应的几何和属性数据位于多个不同的点云片轨道,例如将几何数据封装至一个单独的点云片轨道中,将N组属性数据中互相之间存在第一关系的M组属性数据封装至一个点云片轨道中,将N组属性数据中与其他属性数据不存在第一关系的1组属性数据,封装至一个单独的点云片轨道中。
在多轨封装中,将具有第一关系的属性数据封装在一个轨道。例如,若点云位流采用基于组件的多轨道封装时,则将第二属性数据和第一属性数据封装在第一组件轨道中。再例如,若点云位流采用基于点云片的多轨道封装时,则将第二属性数据和第一属性数据封装在第一点云片轨道中。
在本申请实施例中,在将第一属性数据和第二属性数据封装在第一轨道后,还需要确定第一属性数据的依赖指示信息。
本申请实施例对确定第一属性数据的依赖指示信息的具体方式不做限制。
在一些实施例中,单独设置一个标志,用于指示第一属性数据在编码或呈现时是否依赖第二属性数据。
在一些实施例中,若点云位流采用基于组件的多轨道封装时,则依赖指示信息包括第一信息和第二信息中的至少一个,此时,上述S202中确定第一属性数据的依赖指示信息,包括如下S202-B1的步骤:
S202-B1、确定第一轨道对应的第一信息和第二信息中的至少一个,该第一信息用于指示第一轨道所包括的属性组件的数目,第二信息用于指示第一轨道是否包括属性组。
例如,若第一属性数据与第二属性数据之间存在编码依赖关系时,则确定第一信息指示第一轨道所包括的属性组件的数目大于1;
若第一属性数据与第二属性数据之间不存在编码依赖关系,则确定第一信息指示第一轨道所包括的属性组件的数目等于1;
若第一属性数据与第二属性数据之间存在呈现关联关系时,则确定第二信息指示第一轨道包括属性组;
若第一属性数据与第二属性数据之间不存在呈现关联关系,则确定第二信息指示第一轨道不包括属性组。
本申请实施例对第一信息的具体表现形式不做限制。
在一些实施例中,第一信息包括第一属性组件数目指示信息,其中,第一属性组件数目指示信息用于指示第一轨道所包括的属性组件的个数。
在一些实施例中,第一信息包括属性组件类型数量指示信息和第二属性组件数目指示信息,其中,属性组件类型数量指示信息用于指示第一轨道所包括的属性组件的不同类型数量,第二属性组件数目指示信息用于指示每一种类型的属性组件的个数。
在一些实施例中,第二信息包括属性组信息标志,属性组信息标志表示是否指示属性组信息。
在一些实施例中,若第一属性数据和第二属性数据之间存在呈现关联关系,且第一属性数据和第二属性数据被划分在第二属性组中时,则文件封装设备还确定第二属性组的标识;进而将第二属性组的标识添加至点云文件。
本申请实施例对第一信息和第二信息在点云文件中的具***置不做限制。
在一些实施例中,第一信息和第二信息包括于第一轨道中的组件信息数据盒中。
在本申请实施例中,为了支持本申请的实施步骤对组件信息数据盒进行扩展,具体如下。
扩展组件信息数据盒
数据盒类型:'acif'
包含于:样本入口
是否强制:否
数量:0个或1个
组件信息数据盒指示点云组件的数据类型,即几何、属性等。当该数据盒包含于轨道的样本入口时,该数据盒指示对应轨道中携带的点云组件的类型。该数据盒同时提供属性组件轨道中属性数据相关的信息。而当点云位流以单轨形式存储时,其样本入口中不应包含组件信息数据盒。
在一种示例中,组件信息数据盒的扩展如下所示:
其中,上述avs_pcc_type指示轨道中组件的类型,取值如下表3所示。
attr_num指示轨道中包含的属性组件的个数。
multi_attr_type取值为0时表示组件轨道中包含的属性组件均为同一种属性类型。取值为1时表示组件轨道中包含的属性组件为不同的属性类型。
attr_type指示轨道中包含的属性组件的类型。取值为0表示颜色属性;取值为1表示反射率属性。
attr_group_info_flag取值为0时表示不指示属性组信息。取值为1时表示指示属性组信息,且当前组件轨道包含的属性组件属于相应的属性组。
attr_group_id指示属性组的标识符。同属于一个属性组的不同属性数据存在编解码或者呈现上的依赖关系。
上述attr_num可以理解为第一属性组件数目指示信息,attr_group_info_flag可以理解为属性组信息标志。
在另一种示例中,组件信息数据盒的扩展如下所示:
其中,attr_type_num指示轨道中包含的属性组件的类型数量。
attr_type[i]指示轨道中包含的属性组件的类型。取值为0表示颜色属性;取值为1表示反射率属性。
attr_num[i]指示轨道中包含的相应类型的属性组件的个数。
上述attr_type_num可以理解为属性组件类型数量指示信息,attr_num[i]可以理解为第二属性组件数目指示信息。
在本申请实施例中,基于组件的多轨道封装时,当点云位流通过多轨方式进行文件封装时,点云位流中的不同组件被封装为多个文件轨道,即组件轨道。组件轨道包括点云几何轨道和点云属性轨道。组件轨道中的每个样本包含一个或多个同类型的点云片。
多轨封装模式下,组件轨道需满足如下约束:
a)必须包含一个几何组件轨道且该几何组件轨道作为接入点。
b)可能包含0个或多个属性组件轨道,组件轨道中的track_in_movie字段应置为0。
c)每个组件轨道的样本入口中,需包含一个组件信息数据盒AVSPCCComponentInfoBox,用以指示组件轨道中包含的点云组件数据类型。
d)几何组件轨道通过轨道索引关联至相应的属性组件轨道。
e)存在编解码依赖关系的多个属性组件必须包含于同一个属性组件轨道。
同一点云序列的不同组件轨道之间时序对齐。对应同一点云帧的不同组件轨道样本应具备相同的呈现时间。当轨道样本中存在参数集合时,参数集合的解码时间应等于或者早于相应的点云组件数据的解码时间。当所有组件轨道的所有参数集合均包含于轨道样本中时,包含序列头参数集合的样本应等于或者早于包含几何头参数集合或属性头参数集合的样本。此外,同一点云序列的所有组件轨道应具备相同的隐含或明确指示的编辑列表。
当点云位流中包含多个点云片时,点云位流可以基于点云片封装为多个轨道,包括点云片基础轨道和点云片轨道。
在基于点云片的多轨封装模式下,点云片基础轨道和点云片轨道需满足如下约束:
a)必须包含一个点云片基础轨道,该点云片基础轨道包含点云位流中的所有几何头与属性头参数集合且该点云片基础轨道作为接入点。
b)包含一个或多个点云片轨道。
c)点云片基础轨道通过轨道参考关联至相应的点云片轨道。
当点云片的不同组件通过不同点云片轨道进行封装时,必然存在一个或多个包含几何组件数据的点云片轨道,可能存在0个,1个或多个包含属性组件数据的点云片轨道。且包含属性组件数据的点云片轨道的track_in_movie字段应取值为0。同时,存在编解码依赖关系的多个属性组件必须包含于同一个包含属性组件数据的点云片轨道。
示例性的,如图7A所示,若采用基于组件的多轨封装时,可以将点云位流封装为多个组件轨道,例如封装为一个几何组件轨道和N个属性组件轨道。每一个组件轨道中包括一个组件信息数据盒,该组件信息数据盒用于指示当前轨道所包括的点云组件类型、若为属性组件时,指示属性组件的数量、类型等信息。
在多轨道封装中,每一个属性组件轨道在编解码时都不依赖其他的属性组件轨道。通过组件信息数据盒中信息,可以获取不同属性组件轨道的标签信息。可选的,在轨道样本入口中包含属性组信息数据盒,进一步得到属性组的标签信息,即不同属性组件在呈现上的关系。这样解码器依据这些元数据信息可以选择需要的属性组件轨道进行呈现。
在一些实施例中,若点云位流中的属性组件被封装在一个第二轨道中时,则将第二属性数据和第一属性数据封装标识为属于第一属性组,第二轨道为采用单轨封装方式封装点云位流的轨道,或者为封装点云位流的特定点云片的所有组件的点云片轨道。
也就是说,在本申请实施例中,若点云封装设备采用单轨道封装,或者将点云位流的特定点云片的所有组件的封装在一个点云片轨道中时,则可以将具有第一关系的点云属性数据划分在同一个属性组中。这样解码端在解码时,可以只对属于同一个属性组中的属性数据进行解码,实现对点云属性数据的部分访问,以及正确解码,进而实现点云属性数据的个性化呈现。
在一些实施例中,本申请实施例还包括:确定第一属性数据所在的第一子样本对应的属性组标志,属性组标志用于指示第一子样本是否属于属性组;若属性组标志指示第一子样本属于属性组时,则确定第一子样本所属的第一属性组的标识;将属性组标志和第一属性组的标识,封装在第二轨道中。
可选的,属性组标志可以用字段attr_group_flag表示。
可选的,属性组的标识可以用字段attr_group_id表示。
本申请实施例对属性组标志和属性组的标识在点云文件中的具***置不做限制。在一些实施例中,属性组标志和第一属性组的标识中的至少一个,包括于第一子样本的子样本信息数据盒中。
在本申请实施例中,扩展子样本定义。每个点云样本可被划分为一个或多个点云子样本,在点云数据的封装中使用SubSampleInformationBox(子样本信息数据盒),根据子样本信息数据的标志字段(flags)的值定义子样本。标志字段指定此数据盒中的子样本信息的类型,如下所示:
0:基于点云数据类型的子样本。一个子样本只包含一种由AVSPCCPayloadType定义数据类型。
1:基于点云片的子样本。一个子样本仅包含一个点云片的相关信息。当相应轨道包含组件信息数据盒时,相应轨道的子样本中仅包含相应组件信息数据盒对应的组件数据。当相应轨道不包含组件信息数据盒时,相应轨道的子样本包含所有的组件数据。
保留其他标志值。
扩展子样本定义如下所示:
SubsampleInformationBox的codec_specific_parameters字段定义如下:
其中,AVSPCCPayloadType指示子样本中包含点云的数据类型,取值含义如下表4所示。
attr_type指示子样本中包含的属性数据的类型。取值为0表示颜色属性;取值为1表示反射率属性。
slice_data指示子样本中是否包含点云片的数据,取值为1时表示包含点云片几何和/或属性类型数据;值为0时表示包含点云的参数信息。
slice_id指示子样本中包含的数据对应的点云片的标识。
attr_group_flag取值为0时表示子样本不属于属性组。取值为1时表示子样本属于属性组。
attr_group_id指示属性组的标识符。同属于一个属性组的不同属性数据存在编解码或者呈现上的依赖关系。
也就是说,在单轨封装或将点云属性数据封装在一个轨道中时,文件封装设备对第二轨道中第一属性数据所在的第一子样本的子样本信息数据盒进行扩展,具体是增加第一子样本对应的属性组标志,若该属性组标志指示第一子样本属于属性组时,则继续增加第一子样本所属的第一属性组的标识。
文件封装设备将第一属性数据和第二属性数据封装在第二轨道,且在第一属性数据和第二属性数据标识属于第一属性组中后,还需要确定第一属性数据的依赖指示信息。
在一些实施例中,通过一个标志位来指示第一属性数据与第二属性数据之间是否存在第一关系。
在一些实施例中,若点云位流中的属性组件被封装在一个第二轨道中时,依赖指示信息包括第三信息和第四信息中的至少一个,此时上述S202中确定第一属性数据的依赖指示信息,包括如下S202-C1的步骤:
S202-C1、确定第一属性组对应的第三信息和第四信息中的至少一个,第三信息用于指示第一属性组中的属性组件之间是否存在编码依赖关系,第四信息用于指示第一属性组中的属性组件之间是否存在呈现关联关系。
例如,若第一属性数据在编码时依赖于第二属性数据,则确定第二信息指示第一属性组中的属性组件在编码时存在依赖关系;若第一属性数据在编码时不依赖于第二属性数据,则确定第二信息指示第一属性组中的属性组件在编码时不存在依赖关系。
本申请实施例对第三信息和第四信息的具体表现形式不做限制。
在一些实施例中,第三信息包括属性依赖组标志,第四信息包括默认属性标志,属性依赖组标志用于指示第一属性组对应的属性组件之间是否存在编码依赖关系,默认属性标志用于指示第一属性组对应的属性组件是否为默认呈现的属性组件。
本申请实施例对第三信息和第四信息在点云文件中的具***置不做限制。
在一些实施例中,本申请实施例在第二轨道中添加属性组信息数据盒,该属性组信息数据盒用于指示属性组相关的信息。第三信息和第四信息中的至少一个包括于第二轨道中的属性组件信息数据盒中。
示例性的,属性组信息数据盒的定义如下所示:
数据盒类型:'agin'
包含于:SampleEntry
是否强制:否
数量:0个或1个
attr_group_num指示当前轨道对应的点云码流中包含的属性组的数量。
attr_group_id指示相应属性组的标识符。
default_attr_flag该字段取值为1时表示当前属性组对应的属性组件为相应类型属性组件中默认呈现的属性组件;该字段取值为0时表示当前属性组对应的属性组件不是多个同类型属性组件中默认呈现的属性组件。
attr_dependency_group_flag取值为1时表示当前属性组对应的属性组件之间存在编解码依赖;取值为0时表示当前属性组对应的属性组件之间不存在编解码依赖。
attr_group_label_flag取值为1时指示当前属性组对应的描述性标签;取值为0时不指示当前属性组对应的描述性标签。
attr_group_label指示当前属性组的描述信息。
其中,default_attr_flag可以理解为上述的呈现依赖标志,attr_dependency_group_flag可以理解为上述的解码依赖标志。
也就是说,本申请实施例引入了属性组件信息数据盒,用于指示属性组件信息。
在一些实施例中,对于属性数据位于不同轨道的场景,也可以不使用属性组信息数据盒,直接将属性组信息数据盒中的字段包含于组件信息数据盒中,扩展如下。
/>
在本申请实施例中,若点云位流中的属性组件被封装在一个第二轨道中时,则将第一属性数据所在的第一属性组中除第一属性数据外的其他属性数据,确定为第二属性数据。例如若点云位流采用单轨封装时,在该单轨中确定第一属性数据所在的第一属性组,且第一属性组将中除第一属性数据外的其他属性数据,确定为第二属性数据。再例如,若点云位流采用基于点云片的多轨道封装,且将点云位流的属性数据封装在一个点云片轨道中时,在该点云片轨道中确定第一属性数据所在的第一属性组,且第一属性组将中除第一属性数据外的其他属性数据,确定为第二属性数据。进而,将第一属性数据和第二属性数据划分在同一个属性组中。
示例性的,如图7B所示,若采用基于组件的单轨封装时,可以将点云位流的几何数据和属性数据封装在一个轨道中,具体的,将点云位流的不同区域封装在不同的子样本中。例如,将点云位流的几何组件数据、属性组件数据1、属性组件数据2、属性组件数据4和属性组件数据5封装在一个样本1中,且样本1中属性组件数据2和属性组件数据3之间存在第一关系,可以划分在同一个属性组中,例如划分在属性组1,且在属性组件数据2和属性组件数据3中均添加属性组1的标识attr_group_id=1。
也就是说,在单轨封装或将点云位流中的属性数据封装在一个点云片轨道中时,可以通过上述子样本定义的方式,将不同属性组件分组。例如,在轨道样本入口中包含属性组信息数据盒,这样可以得到属性组的编解码依赖关系、属性标签等信息。因此可以得到不同属性组件在编解码、呈现上的关系。解码器依据这些元数据信息可以选择需要的子样本进行解码。
文件封装设备根据采取的具体封装方式,添加相应的元数据信息以指示解码文件轨道所需的必要信息。
接着,文件封装设备根据文件封装设备(例如服务器)和文件解封装设备(例如客户端)之间的传输方式,将点云文件F直接传输给客户端。或者,将点云文件F切片后得到Fs集合,根据用户的需求,将相应切片中用户所需的文件轨道数据传输给用户。
在一些实施例中,本申请实施例对DASH信令进行扩展,具体是扩展点云组件描述子。即本申请实施例还包括确定点云文件的点云组件描述信息,点云组件描述信息用于描述点云文件的各轨道所包括的点云组件的类型、属性组件的类型列表和不同类型的属性组件的数量列表、属性组件所属的属性组标识、属性组的描述信息中的至少一个。
点云组件描述信息也称为点云组件描述子(AVS PCC component descriptor),可识别Component Adaptation Set(组件自适应集)中点云组件的类型。点云组件描述子是一个EssentialProperty(本质属性)元素,其@schemeIdUri属性设置为"urn:avs:pccs:2022:component"。
在Adaptation Set(自适应集)层级,存在于Component Adaptation Set(组件自适应集)的Representation(代表)中的每个点云组件应由一个点云组件描述子来表述。
示例性的,点云组件描述子应包括表2中定义的元素和属性。
由上述表2可知,在本申请实施例中,对DASH信令扩展,具体对点云组件描述子进行扩展,当点云组件的类型为属性组件时,增加了指示不同类型的属性组件的数量列表、属性组件所属的属性组标识、属性组的描述信息。也就是说,在本申请实施例中,若component@type的取值为‘attr’时,则点云组件描述子不仅包括component@attr_type,用于指示属性组件的类型列表,还包括component@attr_num,用于指示相应类型的属性组件的数量列表,component@attr_group_id指示点云属性组件所属的属性组标识符,以及component@attr_group_label指示点云属性组件所属的属性组的描述信息中的至少一个。
基于此,文件解封装设备基于接收到的点云组件描述信息(即点云组件描述子),确定点云中待解码的第一属性数据。
本申请实施例提供的点云文件封装方法,通过将点云位流中具有第一关系的属性数据封装在同一个轨道或划分在同一个属性组中,且通过确定依赖指示信息指示属性数据之间是否存在第一关系,以支持对点云位流中属性数据的部分访问、正确解码以及个性化呈现。
应理解,图6至图8仅为本申请的示例,不应理解为对本申请的限制。
以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。
上文结合图6至图8,详细描述了本申请的方法实施例,下文结合图9至图10,详细描述本申请的装置实施例。
图9为本申请一实施例提供的文件解封装装置的结构示意图,文件解封装装置10包括:
数据确定单元11,用于确定点云文件中待解码的第一属性数据,所述点云文件是对点云位流进行封装得到的文件;
信息确定单元12,用于确定所述第一属性数据的依赖指示信息,所述依赖指示信息用于指示所述第一属性数与第二属性数据之间是否存在第一关系,所述第一关系包括解码依赖关系和呈现关联关系中的至少一个;
解码单元13,用于基于所述依赖指示信息,对所述第一属性数据进行解码。
在一些实施例中,解码单元13,具体用于若所述依赖指示信息指示所述第一属性数据与所述第二属性数据之间存在解码依赖关系时,则确定所述第二属性数据;基于所述第二属性数据,对所述第一属性数据进行解码;若所述依赖指示信息指示所述第一属性数据与所述第二属性数据之间不存在解码依赖关系时,则对所述第一属性数据进行单独解码。
在一些实施例中,解码单元13,具体用于若所述点云位流采用基于组件的多轨道封装时,则确定所述第一属性数据所在的第一轨道,并将所述第一轨道中除所述第一属性数据外的其他属性数据,确定为所述第二属性数据;若所述点云位流中的属性组件被封装在一个第二轨道中时,则确定所述第一属性数据所属的第一属性组,并将所述第一属性组中除所述第一属性数据外的其他属性数据,确定为所述第二属性数据,其中所述第二轨道为采用单轨封装方式封装所述点云位流的轨道,或者为封装所述点云位流的特定点云片的所有组件的点云片轨道。
在一些实施例中,若所述点云位流采用基于组件的多轨道封装时,则所述依赖指示信息包括第一信息和第二信息中的至少一个,信息确定单元12,具体用于确定所述第一属性数据所在的第一轨道;确定所述第一轨道对应的第一信息和第二信息中的至少一个,所述第一信息用于指示所述第一轨道所包括的属性组件的数目,所述第二信息用于指示所述第一轨道是否包括属性组。
在一些实施例中,若所述第一信息指示所述第一轨道所包括的属性组件的数目大于1,则表示所述第一属性数据与所述第二属性数据之间存在解码依赖关系;
若所述第一信息指示所述第一轨道所包括的属性组件的数目等于1时,则表示所述第一属性数据与所述第二属性数据之间不存在解码依赖关系;
若所述第二信息指示所述第一轨道包括所述属性组时,则表示所述第一属性数据与所述第二属性数据之间存在呈现关联关系;
若所述第二信息指示所述第一轨道不包括所述属性组时,则表示所述第一属性数据与所述第二属性数据之间不存在呈现关联关系。
在一些实施例中,所述第一信息包括第一属性组件数目指示信息,其中,所述第一属性组件数目指示信息用于指示所述第一轨道所包括的属性组件的个数;或者,所述第一信息包括属性组件类型数量指示信息和第二属性组件数目指示信息,其中,所述属性组件类型数量指示信息用于指示所述第一轨道所包括的属性组件的不同类型数量,所述第二属性组件数目指示信息用于指示每一种类型的属性组件的个数;所述第二信息包括属性组信息标志,所述属性组信息标志表示是否指示属性组信息。
在一些实施例中,若所述属性组信息标志指示属性组信息,且所述第一轨道所包括的属性组件属于相应的第二属性组时,则解码单元13,还用于确定所述第二属性组的标识;基于所述第二属性组的标识,获得所述第二属性组中的属性数据,所述第二属性组包括所述第一属性数据和所述第二属性数据;对所述第二属性组中的属性数据进行解码和一起呈现。
在一些实施例中,若所述点云位流中的属性组件被封装在一个第二轨道中时,所述依赖指示信息包括第三信息和第四信息中的至少一个,则信息确定单元12,具体用于确定所述第一属性数据所属的第一属性组,所述第二轨道为采用单轨封装方式封装所述点云位流的轨道,或者为封装所述点云位流的特定点云片的所有组件的点云片轨道;确定所述第一属性组对应的第三信息和第四信息中的至少一个,所述第三信息用于指示所述第一属性组中的属性组件之间是否存在解码依赖关系,所述第四信息用于指示所述第一属性组中的属性组件之间是否存在呈现关联关系。
在一些实施例中,信息确定单元12,具体用于确定所述第一属性数据所在的第一子样本对应的属性组标志,所述属性组标志用于指示所述第一子样本是否属于属性组;若所述属性组标志指示所述第一子样本属于属性组时,则确定所述第一子样本所属的第一属性组的标识;基于所述第一属性组的标识,确定所述第一属性组。
在一些实施例中,所述第三信息包括属性依赖组标志,所述第四信息包括默认属性标志,所述属性依赖组标志用于指示所述第一属性组对应的属性组件之间是否存在解码依赖关系,所述默认属性标志用于指示所述第一属性组对应的属性组件是否为默认呈现的属性组件。
在一些实施例中,数据确定单元11,具体用于获取所述点云文件的点云组件描述信息,所述点云组件描述信息用于描述所述点云文件的各轨道所包括的点云组件的类型、属性组件的类型列表和不同类型的属性组件的数量列表、属性组件所属的属性组标识、属性组的描述信息中的至少一个;基于所述点云组件描述信息,确定所述点云中待解码的第一属性数据。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图9所示的装置10可以执行文件解封装设备对应的方法实施例,并且装置9中的各个模块的前述和其它操作和/或功能分别为了实现文件解封装设备对应的方法实施例,为了简洁,在此不再赘述。
图10为本申请一实施例提供的文件封装装置的结构示意图,该文件封装装置20包括:
获取单元21,用于获取点云位流,所述点云位流包括N组属性数据,所述N为正整数;
封装单元22,用于对于所述N组属性数据中待封装的第一属性数据,基于所述第一属性数据与第二属性数据之间的第一关系,对所述第一属性数据进行封装,且确定所述第一属性数据的依赖指示信息,得到点云文件;
其中,所述依赖指示信息用于指示所述第一属性数据与所述第二属性数据之间是否存在第一关系,所述第一关系包括编码依赖关系和呈现关联关系中的至少一个。
在一些实施例中,封装单元22,具体用于若所述第一属性数据与所述第二属性数据之间存在编码依赖关系时,则获取所述第二属性数据;基于所述第二属性数据,对所述第一属性数据进行封装;若所述第一属性数据与所述第二属性数据之间不存在编码依赖关系时,则对所述第一属性数据进行单独封装。
在一些实施例中,封装单元22,具体用于若所述点云位流采用基于组件的多轨道封装时,则将所述第一属性数据和所述第二属性数据封装在所述第一轨道中;若所述点云位流中的属性组件被封装在一个第二轨道中时,则将所述第二轨道中的所述第一属性数据和所述第二属性数据标识为属于第一属性组,其中所述第二轨道为采用单轨封装方式封装所述点云位流的轨道,或者为封装所述点云位流的特定点云片的所有组件的点云片轨道。
在一些实施例中,若所述点云位流采用基于组件的多轨道封装时,则所述依赖指示信息包括第一信息和第二信息中的至少一个,封装单元22,具体用于确定第一轨道对应的第一信息和第二信息中的至少一个,所述第一信息用于指示所述第一轨道所包括的属性组件的数目,所述第二信息用于指示所述第一轨道是否包括属性组,所述第一轨道用于封装所述第一属性数据和所述第二属性数据。
在一些实施例中,若所述第一属性数据与所述第二属性数据之间存在编码依赖关系时,则确定所述第一信息指示所述第一轨道所包括的属性组件的数目大于1;
若所述第一属性数据与所述第二属性数据之间不存在编码依赖关系,则确定所述第一信息指示所述第一轨道所包括的属性组件的数目等于1;
若所述第一属性数据与所述第二属性数据之间存在呈现关联关系时,则确定所述第二信息指示所述第一轨道包括所述属性组;
若所述第一属性数据与所述第二属性数据之间不存在呈现关联关系,则确定所述第二信息指示所述第一轨道不包括所述属性组。
在一些实施例中,所述第一信息包括第一属性组件数目指示信息,其中,所述第一属性组件数目指示信息用于指示所述第一轨道所包括的属性组件的个数;或者,
所述第一信息包括属性组件类型数量指示信息和第二属性组件数目指示信息,其中,所述属性组件类型数量指示信息用于指示所述第一轨道所包括的属性组件的不同类型数量,所述第二属性组件数目指示信息用于指示每一种类型的属性组件的个数;
所述第二信息包括属性组信息标志,所述属性组信息标志表示是否指示属性组信息。
在一些实施例中,若所述第一属性数据和所述第二属性数据之间存在呈现关联关系,且所述第一属性数据和所述第二属性数据被划分在第二属性组中时,则封装单元22,还用于确定所述第二属性组的标识;将所述第二属性组的标识添加至所述点云文件。
在一些实施例中,若所述第一属性数据和所述第二属性数据被标识为属于所述第一属性组时,封装单元22,还用于确定所述第一属性数据所在的第一子样本对应的属性组标志,所述属性组标志用于指示所述第一子样本是否属于属性组;若所述属性组标志指示所述第一子样本属于属性组时,则确定所述第一子样本所属的第一属性组的标识;将所述属性组标志和所述第一属性组的标识,封装在所述第二轨道中。
在一些实施例中,若所述点云位流中的属性组件被封装在一个第二轨道中时,所述依赖指示信息包括第三信息和第四信息中的至少一个,封装单元22,具体用于确定所述第一属性组对应的第三信息和第四信息中的至少一个,所述第三信息用于指示所述第一属性组中的属性组件之间是否存在编码依赖关系,所述第四信息用于指示所述第一属性组中的属性组件之间是否存在呈现关联关系。
在一些实施例中,所述第三信息包括属性依赖组标志,所述第四信息包括默认属性标志,所述属性依赖组标志用于指示所述第一属性组对应的属性组件之间是否存在编码依赖关系,所述默认属性标志用于指示所述第一属性组对应的属性组件是否为默认呈现的属性组件。
在一些实施例中,封装单元22,还用于确定所述点云文件的点云组件描述信息,所述点云组件描述信息用于描述所述点云文件的各轨道所包括的点云组件的类型、属性组件的类型列表和不同类型的属性组件的数量列表、属性组件所属的属性组标识、属性组的描述信息中的至少一个。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图10所示的装置20可以执行文件封装设备对应的方法实施例,并且装置20中的各个模块的前述和其它操作和/或功能分别为了实现文件封装设备对应的方法实施例,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图11是本申请实施例提供的电子设备的示意性框图,该电子设备可以为上述的文件解封装设备或文件封装设备。
如图11所示,该电子设备30可包括:
存储器31和处理器32,该存储器31用于存储计算机程序33,并将该程序代码33传输给该处理器32。换言之,该处理器32可以从存储器31中调用并运行计算机程序33,以实现本申请实施例中的方法。
例如,该处理器32可用于根据该计算机程序33中的指令执行上述方法中的步骤。
在本申请的一些实施例中,该处理器32可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器31包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序33可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器31中,并由该处理器32执行,以完成本申请提供的录制页面的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序33在该电子设备中的执行过程。
如图11所示,该电子设备30还可包括:
收发器34,该收发器34可连接至该处理器32或存储器31。
其中,处理器32可以控制该收发器34与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器34可以包括发射机和接收机。收发器34还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该电子设备30中的各个组件通过总线***相连,其中,总线***除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
根据本申请的一个方面,提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
根据本申请的另一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方法实施例的方法。
换言之,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。
Claims (20)
1.一种点云文件解封装方法,其特征在于,包括:
确定点云文件中待解码的第一属性数据,所述点云文件是对点云位流进行封装得到的文件;
确定所述第一属性数据的依赖指示信息,所述依赖指示信息用于指示所述第一属性数与第二属性数据之间是否存在第一关系,所述第一关系包括解码依赖关系和呈现关联关系中的至少一个;
基于所述依赖指示信息,对所述第一属性数据进行解码。
2.根据权利要求1所述的方法,其特征在于,所述基于所述依赖指示信息,对所述第一属性数据进行解码,包括:
若所述依赖指示信息指示所述第一属性数据与所述第二属性数据之间存在解码依赖关系时,则确定所述第二属性数据,并基于所述第二属性数据,对所述第一属性数据进行解码;
若所述依赖指示信息指示所述第一属性数据与所述第二属性数据之间不存在解码依赖关系时,则对所述第一属性数据进行单独解码。
3.根据权利要求2所述的方法,其特征在于,所述确定所述第二属性数据,包括:
若所述点云位流采用基于组件的多轨道封装时,则确定所述第一属性数据所在的第一轨道,并将所述第一轨道中除所述第一属性数据外的其他属性数据,确定为所述第二属性数据;
若所述点云位流中的属性组件被封装在一个第二轨道中时,则确定所述第一属性数据所属的第一属性组,并将所述第一属性组中除所述第一属性数据外的其他属性数据,确定为所述第二属性数据,其中所述第二轨道为采用单轨封装方式封装所述点云位流的轨道,或者为封装所述点云位流的特定点云片的所有组件的点云片轨道。
4.根据权利要求1-3任一项所述的方法,其特征在于,若所述点云位流采用基于组件的多轨道封装时,则所述依赖指示信息包括第一信息和第二信息中的至少一个,所述确定所述第一属性数据的依赖指示信息,包括:
确定所述第一属性数据所在的第一轨道;
确定所述第一轨道对应的第一信息和第二信息中的至少一个,所述第一信息用于指示所述第一轨道所包括的属性组件的数目,所述第二信息用于指示所述第一轨道是否包括属性组。
5.根据权利要求4所述的方法,其特征在于,
若所述第一信息指示所述第一轨道所包括的属性组件的数目大于1,则表示所述第一属性数据与所述第二属性数据之间存在解码依赖关系;
若所述第一信息指示所述第一轨道所包括的属性组件的数目等于1时,则表示所述第一属性数据与所述第二属性数据之间不存在解码依赖关系;
若所述第二信息指示所述第一轨道包括所述属性组时,则表示所述第一属性数据与所述第二属性数据之间存在呈现关联关系;
若所述第二信息指示所述第一轨道不包括所述属性组时,则表示所述第一属性数据与所述第二属性数据之间不存在呈现关联关系。
6.根据权利要求4所述的方法,其特征在于,
所述第一信息包括第一属性组件数目指示信息,其中,所述第一属性组件数目指示信息用于指示所述第一轨道所包括的属性组件的个数;或者,
所述第一信息包括属性组件类型数量指示信息和第二属性组件数目指示信息,其中,所述属性组件类型数量指示信息用于指示所述第一轨道所包括的属性组件的不同类型数量,所述第二属性组件数目指示信息用于指示每一种类型的属性组件的个数;
所述第二信息包括属性组信息标志,所述属性组信息标志表示是否指示属性组信息。
7.根据权利要求6所述的方法,其特征在于,若所述属性组信息标志指示属性组信息,且所述第一轨道所包括的属性组件属于相应的第二属性组时,则所述方法还包括:
确定所述第二属性组的标识;
基于所述第二属性组的标识,获得所述第二属性组中的属性数据,所述第二属性组包括所述第一属性数据和所述第二属性数据;
对所述第二属性组中的属性数据进行解码和一起呈现。
8.根据权利要求1-3任一项所述的方法,其特征在于,若所述点云位流中的属性组件被封装在一个第二轨道中时,所述依赖指示信息包括第三信息和第四信息中的至少一个,所述确定所述第一属性数据的依赖指示信息,包括:
确定所述第一属性数据所属的第一属性组,所述第二轨道为采用单轨封装方式封装所述点云位流的轨道,或者为封装所述点云位流的特定点云片的所有组件的点云片轨道;
确定所述第一属性组对应的第三信息和第四信息中的至少一个,所述第三信息用于指示所述第一属性组中的属性组件之间是否存在解码依赖关系,所述第四信息用于指示所述第一属性组中的属性组件之间是否存在呈现关联关系。
9.根据权利要求8所述的方法,其特征在于,所述确定所述第一属性数据所在的第一属性组,包括:
确定所述第一属性数据所在的第一子样本对应的属性组标志,所述属性组标志用于指示所述第一子样本是否属于属性组;
若所述属性组标志指示所述第一子样本属于属性组时,则确定所述第一子样本所属的第一属性组的标识;
基于所述第一属性组的标识,确定所述第一属性组。
10.根据权利要求9所述的方法,其特征在于,所述第三信息包括属性依赖组标志,所述第四信息包括默认属性标志,所述属性依赖组标志用于指示所述第一属性组对应的属性组件之间是否存在解码依赖关系,所述默认属性标志用于指示所述第一属性组对应的属性组件是否为默认呈现的属性组件。
11.根据权利要求1-3、5-7、9-10任一项所述的方法,其特征在于,所述确定点云文件中待解码的第一属性数据,包括:
获取所述点云文件的点云组件描述信息,所述点云组件描述信息用于描述所述点云文件的各轨道所包括的点云组件的类型、属性组件的类型列表和不同类型的属性组件的数量列表、属性组件所属的属性组标识、属性组的描述信息中的至少一个;
基于所述点云组件描述信息,确定所述点云中待解码的第一属性数据。
12.一种点云文件封装方法,其特征在于,包括:
获取点云位流,所述点云位流包括N组属性数据,所述N为正整数;
对于所述N组属性数据中待封装的第一属性数据,基于所述第一属性数据与第二属性数据之间的第一关系,对所述第一属性数据进行封装,且确定所述第一属性数据的依赖指示信息,得到点云文件;
其中,所述依赖指示信息用于指示所述第一属性数据与所述第二属性数据之间是否存在第一关系,所述第一关系包括编码依赖关系和呈现关联关系中的至少一个。
13.根据权利要求12所述的方法,其特征在于,所述基于所述第一属性数据与第二属性数据之间的第一关系,对所述第一属性数据进行封装,包括:
若所述第一属性数据与所述第二属性数据之间存在编码依赖关系时,则获取所述第二属性数据,则基于所述第二属性数据,对所述第一属性数据进行封装;
若所述第一属性数据与所述第二属性数据之间不存在编码依赖关系时,则对所述第一属性数据进行单独封装。
14.根据权利要求13所述的方法,其特征在于,所述基于所述第二属性数据,对所述第一属性数据进行封装,包括:
若所述点云位流采用基于组件的多轨道封装时,则将所述第一属性数据和所述第二属性数据封装在第一轨道中;
若所述点云位流中的属性组件被封装在一个第二轨道中时,则将所述第二轨道中的所述第一属性数据和所述第二属性数据标识为属于第一属性组,其中所述第二轨道为采用单轨封装方式封装所述点云位流的轨道,或者为封装所述点云位流的特定点云片的所有组件的点云片轨道。
15.根据权利要求14所述的方法,其特征在于,若所述第一属性数据和所述第二属性数据之间存在呈现关联关系,且所述第一属性数据和所述第二属性数据被划分在第二属性组中时,则所述方法还包括:
确定所述第二属性组的标识;
将所述第二属性组的标识添加至所述点云文件。
16.根据权利要求14所述的方法,其特征在于,若所述第一属性数据和所述第二属性数据被标识为属于所述第一属性组时,所述方法还包括:
确定所述第一属性数据所在的第一子样本对应的属性组标志,所述属性组标志用于指示所述第一子样本是否属于属性组;
若所述属性组标志指示所述第一子样本属于属性组时,则确定所述第一子样本所属的第一属性组的标识;
将所述属性组标志和所述第一属性组的标识,封装在所述第二轨道中。
17.一种点云文件解封装装置,其特征在于,包括:
数据确定单元,用于确定点云文件中待解码的第一属性数据,所述点云文件是对点云位流进行封装得到的文件;
信息确定单元,用于确定所述第一属性数据的依赖指示信息,所述依赖指示信息用于指示所述第一属性数与第二属性数据之间是否存在第一关系,所述第一关系包括解码依赖关系和呈现关联关系中的至少一个;
解码单元,用于基于所述依赖指示信息,对所述第一属性数据进行解码。
18.一种点云文件封装装置,其特征在于,包括:
获取单元,用于获取点云位流,所述点云位流包括N组属性数据,所述N为正整数;
封装单元,用于对于所述N组属性数据中待封装的第一属性数据,基于所述第一属性数据与第二属性数据之间的第一关系,对所述第一属性数据进行封装,且确定所述第一属性数据的依赖指示信息,得到点云文件;
其中,所述依赖指示信息用于指示所述第一属性数据与所述第二属性数据之间是否存在第一关系,所述第一关系包括解码依赖关系和呈现关联关系中的至少一个。
19.一种电子设备,其特征在于,包括:
处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1至11或12至16中任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1至11或12至16中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311055895.4A CN117082262A (zh) | 2023-08-21 | 2023-08-21 | 点云文件封装与解封装方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311055895.4A CN117082262A (zh) | 2023-08-21 | 2023-08-21 | 点云文件封装与解封装方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117082262A true CN117082262A (zh) | 2023-11-17 |
Family
ID=88709240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311055895.4A Pending CN117082262A (zh) | 2023-08-21 | 2023-08-21 | 点云文件封装与解封装方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117082262A (zh) |
-
2023
- 2023-08-21 CN CN202311055895.4A patent/CN117082262A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109691094A (zh) | 发送全向视频的方法、接收全向视频的方法、发送全向视频的装置和接收全向视频的装置 | |
CN109644262A (zh) | 发送全向视频的方法、接收全向视频的方法、发送全向视频的装置和接收全向视频的装置 | |
US20230421810A1 (en) | Encapsulation and decapsulation methods and apparatuses for point cloud media file, and storage medium | |
CN114095737B (zh) | 媒体文件封装及解封装方法、装置、设备及存储介质 | |
WO2023061131A1 (zh) | 媒体文件封装方法、装置、设备及存储介质 | |
CN113891117B (zh) | 沉浸媒体的数据处理方法、装置、设备及可读存储介质 | |
CN115396647B (zh) | 一种沉浸媒体的数据处理方法、装置、设备及存储介质 | |
JP7467647B2 (ja) | ボリュメトリックメディア処理方法および装置 | |
CN115002470A (zh) | 一种媒体数据处理方法、装置、设备以及可读存储介质 | |
CN114581631A (zh) | 沉浸式媒体的数据处理方法、装置和计算机可读存储介质 | |
CN117082262A (zh) | 点云文件封装与解封装方法、装置、设备及存储介质 | |
WO2023024839A1 (zh) | 媒体文件封装与解封装方法、装置、设备及存储介质 | |
CN115733576B (zh) | 点云媒体文件的封装与解封装方法、装置及存储介质 | |
WO2023024843A1 (zh) | 媒体文件封装与解封装方法、设备及存储介质 | |
CN115086635B (zh) | 多视角视频的处理方法、装置、设备及存储介质 | |
WO2023024841A1 (zh) | 点云媒体文件的封装与解封装方法、装置及存储介质 | |
CN115102932B (zh) | 点云媒体的数据处理方法、装置、设备、存储介质及产品 | |
CN114374675B (zh) | 媒体文件的封装方法、媒体文件的解封装方法及相关设备 | |
CN114554243B (zh) | 点云媒体的数据处理方法、装置、设备及存储介质 | |
CN116137664A (zh) | 点云媒体文件封装方法、装置、设备及存储介质 | |
WO2023016293A1 (zh) | 自由视角视频的文件封装方法、装置、设备及存储介质 | |
CN115061984A (zh) | 点云媒体的数据处理方法、装置、设备、存储介质 | |
CN116939290A (zh) | 媒体数据处理方法、装置、设备及存储介质 | |
CN116643643A (zh) | 一种沉浸媒体的数据处理方法、装置、设备及存储介质 | |
CN116781675A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40099879 Country of ref document: HK |