CN115866274A - 一种点云媒体的数据处理方法及相关设备 - Google Patents
一种点云媒体的数据处理方法及相关设备 Download PDFInfo
- Publication number
- CN115866274A CN115866274A CN202211137844.1A CN202211137844A CN115866274A CN 115866274 A CN115866274 A CN 115866274A CN 202211137844 A CN202211137844 A CN 202211137844A CN 115866274 A CN115866274 A CN 115866274A
- Authority
- CN
- China
- Prior art keywords
- point cloud
- frame
- current
- attribute
- field
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 238000000034 method Methods 0.000 claims abstract description 61
- 238000012545 processing Methods 0.000 claims description 79
- 238000004590 computer program Methods 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 22
- 238000013139 quantization Methods 0.000 description 33
- 238000004519 manufacturing process Methods 0.000 description 21
- 238000002310 reflectometry Methods 0.000 description 20
- 230000009466 transformation Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 12
- 230000036961 partial effect Effects 0.000 description 12
- 238000007654 immersion Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 108091026890 Coding region Proteins 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 9
- 230000006835 compression Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 8
- 238000005070 sampling Methods 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 6
- 239000003550 marker Substances 0.000 description 5
- 230000000670 limiting effect Effects 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000002591 computed tomography Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 210000000056 organ Anatomy 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000002595 magnetic resonance imaging Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- 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
-
- 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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请实施例提供了一种点云媒体的数据处理方法及相关设备,其中方法包括:获取点云媒体的点云码流,该点云码流包含一个或多个点云帧,以及各点云帧的参数信息;根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体。本申请实施例能够组织点云码流中的参数信息,指导点云媒体的解码及呈现,优化解码端的资源的开销。
Description
技术领域
本申请涉及互联网技术领域,具体涉及一种点云媒体的数据处理方法、一种点云媒体的数据处理装置、一种计算机设备、一种计算机可读存储介质以及一种计算机程序产品。
背景技术
随着点云技术的不断发展,点云媒体的压缩编码成为重要的研究问题。在现有点云压缩编码技术中,尽管对于序列头等参数信息、点云片信息等进行定义,但是,目前点云压缩编码技术还存在一些问题,例如,无法组织点云码流中的参数信息,易造成解码侧资源浪费等问题。因此,如何改进点云编码技术领域的热门问题。
发明内容
本申请实施例提供了一种点云媒体的数据处理方法及相关设备,能够组织点云码流中的参数信息,指导点云媒体的解码及呈现,优化解码端的资源的开销。
一方面,本申请实施例提供一种点云媒体的数据处理方法,该方法包括:
获取点云媒体的点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息;其中,点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体。
一方面,本申请实施例提供一种点云媒体的数据处理方法,该方法包括:
获取点云媒体;
对点云媒体进行编码处理,得到点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息,其中,点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
传输点云码流。
一方面,本申请实施例提供一种点云媒体的数据处理装置,该装置包括:
获取单元,用于获取点云媒体的点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息;其中,点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
处理单元,用于根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体。
在一个实施例中,点云帧的参数信息用于指示帧序号;点云码流中的一个或多个点云帧按序构成点云序列;
当前点云帧的参数信息包括帧序号字段,帧序号字段用于指示当前点云帧在点云序列中的序号;
其中,当前点云帧是指点云码流中正在解码的点云帧。
在一个实施例中,点云帧的参数信息用于指示帧时间戳信息;当前点云帧的参数信息包括以下至少一个字段:时间戳标志字段、时间戳数量字段、时间戳类型字段和时间戳字段;
时间戳标志字段用于指示当前点云帧是否包含时间戳,当时间戳标志字段为第一预设值时,指示当前点云帧不包含时间戳;当时间戳标志字段为第二预设值时,指示当前点云帧包含时间戳;
时间戳数量字段用于指示当前点云帧包含的时间戳数量;
时间戳类型字段用于指示当前时间戳的类型,若时间戳类型字段为第一预设值,则指示当前时间戳的类型为解码时间;若时间戳类型字段为第二预设值,则指示当前时间戳的类型为呈现时间;若时间戳类型字段为第三预设值,则指示当前时间戳的类型为采集时间;
时间戳字段用于指示当前点云帧的采集时间、呈现时间和解码时间中的任意一种或多种;时间戳字段用于指示世界协调时间,或者时间戳字段按照预设格式进行指示,预设格式包括以下至少一个字段:年时间戳字段、小时时间戳字段、秒时间戳字段、帧时间戳字段;
其中,当前点云帧是指点云码流中正在解码的点云帧,当前时间戳是指当前点云帧正在使用的时间戳。
在一个实施例中,点云帧的参数信息用于指示帧空间信息;当前点云帧的参数信息包括空间信息标志字段;
空间信息标志字段表示是否指示当前点云帧的空间信息,当空间信息标志字段为第一取值时,指示当前点云帧的空间信息;当空间信息标志字段为第二取值时,不指示当前点云帧的空间信息;
空间信息包括以下至少一种:当前点云帧的包围盒原点的坐标信息,当前点云帧的包围盒宽度信息,当前点云帧的包围盒深度信息。
在一个实施例中,点云帧的参数信息用于指示帧内数据单元的信息;一个点云帧包含一个或多个数据单元,数据单元包括点云片;当前点云帧的参数信息包括点云片数量字段或点云片数量减一字段;
点云片数量字段用于指示当前点云帧包含的点云片数量;
点云片数量减一字段用于间接指示当前点云帧包含的点云片数量;
其中,当前点云帧是指点云码流中正在解码的点云帧。
在一个实施例中,点云帧的参数信息还用于指示点云帧内是否包含参数集合,参数集合包括以下任一种:几何头参数集合、属性头参数集合、几何头参数集合和属性头参数集合;
当前点云帧的参数信息包括以下任一个字段:几何头标志字段、属性头标志字段和属性数量减一字段;
几何头标志字段用于指示当前点云帧是否包含几何头参数集合;若几何头标志字段为第一预设值,则指示当前点云帧包含几何头参数集合;若几何头标志字段为第二预设值,则指示当前点云帧不包含几何头参数集合;
属性头标志字段用于指示当前点云帧是否包含属性头参数集合,若属性头标志字段为第一设定值,则指示当前点云帧包含属性头参数集合;若属性头标志字段为第二设定值,则指示当前点云帧不包含属性头参数集合;
属性数量减一字段用于指示当前点云帧包含的属性头参数集合对应的属性数据组的数量。
在一个实施例中,点云码流中的一个或多个点云帧按序构成点云序列;
当当前点云帧为点云序列中的第一帧时,几何头标志字段被设置为第一预设值,属性头标志字段被设置为第一设定值;属性数量减一字段的取值为点云序列包含的属性数据组的最大数量;
当当前点云帧并非点云序列中的第一帧时,若几何头标志字段被设置为第一预设值,则指示点云序列中的几何头参数集合发生更新;
当当前点云帧并非点云序列中的第一帧时,若属性头标志字段被设置为第一设定值,则指示点云序列中的属性头参数集合发生更新。
在一个实施例中,在点云媒体中,一组属性数据对应一个属性头参数集合;
属性头参数集合包括属性存在标志字段,属性存在标志字段用于指示当前属性头参数集合中是否包含第x组属性数据的编码参数,x为大于等于0且小于等于15的整数;
若属性存在标志字段为第一取值,则指示当前属性头参数集合中包含第x组属性数据的编码参数;
若属性存在标志字段为第二取值,则指示当前属性头参数集合中不包含第x组属性数据的编码参数。
在一个实施例中,属性头参数集合包括属性类型字段和属性数据标识符字段,通过属性类型字段和属性数据标识符字段来表示属性头参数集合和属性数据之间的对应关系。
在一个实施例中,点云帧的参数信息用于指示帧内数据单元的信息;
若数据单元包括点云帧,则当前点云帧的参数信息包括当前点云帧的起始码和结束码;当前点云帧是指点云码流中正在被解码的点云帧;
若数据单元包括点云片,则当前点云帧的参数信息包括当前点云帧中的当前点云片的起始码和结束码,当前点云片是指点云码流中正在被解码的点云片;
若数据单元包括点云片的几何数据,则当前点云帧的参数信息包括当前点云片的几何数据的起始码和结束码;
若数据单元包括点云片的属性数据,则当前点云帧的参数信息包括当前点云片的当前属性数据的起始码和结束码,当前点云片的当前属性数据是指当前点云片中正在被解码的属性数据。
在一个实施例中,当前点云帧的起始码为预设的特定位串,或者当前点云帧的起始码为当前点云帧的上一点云帧的结束码;当前点云帧的起始码用于指示当前点云帧开始解码的位置,当前点云帧的结束码用于指示当前点云帧结束解码的位置;
当前点云片的起始码为预设的特定位串,或者当前点云片的起始码为当前点云片的上一点云片的结束码;当前点云片的起始码用于指示当前点云片开始解码的位置,当前点云片的结束码用于指示当前点云片结束解码的位置;
当前点云片的几何数据的起始码为预设的特定位串,或者,当前点云片的几何数据的起始码为当前点云片的上一点云片的结束码;当前点云片的几何数据的起始码用于指示当前点云片的几何数据开始解码的位置,当前点云片的几何数据的结束码用于指示当前点云片的几何数据结束解码的位置;
当前点云片的当前属性数据的起始码为预设的特定位串,或者当前点云片的当前属性数据的起始码为当前点云片的几何数据的结束码,或者,当前点云片的当前属性数据的起始码为当前点云片中当前属性数据的上一属性数据的结束码;当前点云片的当前属性数据的起始码用于指示当前点云片的当前属性数据开始解码的位置,当前点云片的当前属性数据的结束码用于指示当前点云片的当前属性数据结束解码的位置。
在一个实施例中,当前点云片的当前属性数据的起始码还用于指示当前点云片的当前属性数据的类型。
在一个实施例中,各点云帧的参数信息分别设置于各点云帧的帧头,一个点云帧包括一个或多个数据单元,处理单元在根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体时,可具体用于:
从点云码流中确定需要解码的目标点云帧;
按照目标点云帧的参数信息,在目标点云帧中定位需要解码的数据单元;
对目标点云帧中需要解码的数据单元进行解码呈现。
一方面,本申请实施例提供一种点云媒体的数据处理装置,该装置包括:
获取单元,用于获取点云媒体;
处理单元,用于对点云媒体进行编码处理,得到点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息,其中,所述点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
处理单元,还用于传输点云码流。
在一个实施例中,各点云帧的参数信息分别设置于各点云帧的帧头;
点云帧的参数信息还用于指示点云帧内是否包含参数集合,参数集合包括以下任一种:几何头参数集合、属性头参数集合、几何头参数集合和属性头参数集合。
在一个实施例中,点云帧的参数信息用于指示帧内数据单元的信息;
若数据单元包括点云帧,则当前点云帧的参数信息包括当前点云帧的起始码和结束码;当前点云帧是指点云码流中正在被编码的点云帧;
若数据单元包括点云片,则当前点云帧的参数信息包括当前点云帧中的当前点云片的起始码和结束码,当前点云片是指点云码流中正在被编码的点云片;
若数据单元包括点云片的几何数据,则当前点云帧的参数信息包括当前点云片的几何数据的起始码和结束码;
若数据单元包括点云片的属性数据,则当前点云帧的参数信息包括当前点云片的当前属性数据的起始码和结束码,当前点云片的当前属性数据是指当前点云片中正在被编码的属性数据。
一方面,本申请实施例提供一种计算机设备,该计算机设备包括:
处理器,适用于执行计算机程序;
计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时,实现如上述点云媒体的数据处理方法。
一方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器加载并执行如上述点云媒体的数据处理方法。
一方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行上述点云媒体的数据处理方法。
在本申请实施例中,获取点云媒体的点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息;根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体,能够灵活组织点云码流中的参数信息,指导点云媒体的解码及呈现,从而优化解码端的资源的开销。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请一个示例性实施例提供的一种6DoF的示意图;
图1b是本申请一个示例性实施例提供的一种3DoF的示意图;
图1c是本申请一个示例性实施例提供的一种3DoF+的示意图;
图2a是本申请一个示例性实施例提供的一种点云媒体的数据处理系统的架构图;
图2b是本申请一个示例性实施例提供的一种点云媒体的数据处理的流程图;
图3是本申请一个示例性实施例提供的一种点云媒体的数据处理方法的流程示意图;
图4是本申请一个示例性实施例提供的一种点云帧包含的数据单元的示意图;
图5是本申请另一个示例性实施例提供的一种点云媒体的数据处理方法的流程示意图;
图6是本申请实施例一个示例性实施例提供的一种点云媒体的数据处理装置的结构示意图;
图7是本申请实施例另一个示例性实施例提供的一种点云媒体的数据处理装置的结构示意图;
图8是本申请实施例一个示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上;同理,术语“至少一组”是指一组或多组,“多组”的含义是指两组或两组以上,例如:点云中的某个点具备多组属性数据是指该点具备两组或两组以上的属性数据。
下面对本申请中涉及的其他技术术语进行介绍:
一、沉浸媒体
沉浸媒体是指能够提供沉浸式的媒体内容,使沉浸于该媒体内容中的观看者能够获得现实世界中视觉、听觉等感官体验的媒体文件。沉浸式媒体按照观看者在消费媒体内容时的自由度,可以分为:6DoF(Degree of Freedom)沉浸媒体,3DoF沉浸媒体,3DoF+沉浸媒体。其中,如图1a所示,6DoF是指沉浸媒体的观看者可以沿着X轴、Y轴、Z轴自由平移,例如,沉浸媒体的观看者可以在三维的360度VR内容中自由的走动。与6DoF相类似的,还有3DoF和3DoF+制作技术。图1b为本申请实施例提供的一种3DoF的示意图;如图1b所示,3DoF是指沉浸媒体的观看者在一个三维空间的中心点固定,沉浸媒体的观看者头部沿着X轴、Y轴和Z轴旋转来观看媒体内容提供的画面。图1c为本申请实施例提供的一种3DoF+的示意图,如图1c所示,3DoF+是指当沉浸媒体提供的虚拟场景具有一定的深度信息,沉浸媒体的观看者头部可以基于3DoF在一个有限的空间内移动来观看媒体内容提供的画面。
二、点云
点云是指空间中一组无规则分布的、表达三维物体或场景的空间结构及表面属性的离散点集。点云中的每个点至少包括几何数据,该几何数据用于表示点的三维位置信息。根据应用场景的不同,点云中的点还可以包括一组或多组属性数据,每一组属性数据用于反映点所具备的一种属性,该属性例如可以是色彩、材质或其他信息。通常,点云中的每个点都具有相同组数的属性数据。
点云可以灵活方便地表达三维物体或场景的空间结构及表面属性,因而应用广泛,可以应用于虚拟现实(Virtual Reality,VR)游戏、计算机辅助设计(Computer AidedDesign,CAD)、地理信息系统(Geography Information System,GIS)、自动导航系统(Autonomous Navigation System,ANS)、数字文化遗产、自由视点广播、三维沉浸远程呈现、生物组织器官三维重建等场景中。
点云的获取主要有以下途径:计算机生成、三维(3-Dimension,3D)激光扫描、3D摄影测量等。具体来说,点云可以是通过采集设备(一组摄像机或具有多个镜头和传感器的摄像机设备)对现实世界的视觉场景进行采集得到的,通过3D激光扫描可以获得静态现实世界三维物体或场景的点云,每秒可以获取百万级点云;通过3D摄影可以获得动态现实世界三维物体或场景的点云,每秒可以获取千万级点云;此外,在医学领域,可以通过磁共振成像(Magnetic Resonance Imaging,MRI)、电子计算机断层扫描(Computed Tomography,CT)、电磁定位信息获得生物组织器官的点云。又如,点云还可以由计算机根据虚拟三维物体及场景直接生成,如计算机可以生成虚拟三维物体及场景的点云。伴随着大规模的点云数据不断积累,点云数据的高效存储、传输、发布、共享和标准化,成为点云应用的关键。
三、点云媒体
点云媒体是一种典型的6DoF沉浸媒体。点云媒体包括由一帧或多帧点云帧按序构成的点云序列,每帧点云帧由点云中的一个或多个点具备的几何数据和属性数据共同组成。其中,几何数据也可以称为三维位置信息,点云中某个点的几何数据是指该点的空间坐标(x,y,z),即包括该点在三维坐标系统的各个坐标轴方向上的坐标值,例如,X轴方向上的坐标值x,Y轴方向上的坐标值y和Z轴方向上的坐标值z。每帧点云帧均可由一个包围盒进行包围,该包围盒可以是包围点云帧的最小长方体,因此,每帧点云帧的空间信息可以包括以下至少一种:点云帧的包围盒原点的坐标信息,当前点云帧的包围盒宽度信息,当前点云帧的包围盒深度信息。该点云帧的包围盒原点的坐标信息可以包括点云帧包围盒原点x坐标、点云帧包围盒原点y坐标以及点云帧包围盒原点z坐标。
点云中的某个点可以包括一组或多组属性数据,每一组属性数据用于反映点所具备的一种属性,例如,点云中某个点具备一组颜色属性数据,该颜色属性数据用于反映该点的颜色属性(如红色、黄色等等);再如,点云中的某个点具备一组反射率属性数据,该反射率属性数据用于反映该点的激光反射强度属性。当点云中某个点具备多组属性数据时,该多组属性数据的类型可以相同,也可以不同,例如,点云中某个点可以具有一组颜色属性数据和一组反射率属性数据;再如,点云中某个点可以具有两组颜色属性数据,这两组颜色属性数据分别用于反映该点在不同时刻下的颜色属性。
四、点云帧内的数据单元
一个点云帧可包括一个或多个数据单元,在一种实现中,当点云帧内仅包括一个数据单元时,该数据单元就是点云帧本身。在另一种实现中,一个点云帧可以划分为多个点云片,每个点云片就是该点云帧的一个数据单元,此处,所谓点云片代表一个点云帧被部分或全部编码后的数据的一系列语法元素(例如几何点云片、属性点云片)集合。也就是说,点云片可以包括点云帧中的几何数据,或者点云片可以包括点云帧的一组或多组属性数据,或者,点云片中可以包括点云帧中的几何数据以及一组或多组属性数据。在再一种实现中,可以将点云片中包含的一类数据作为一个独立的数据单元,例如:一个点云片的几何数据可以被看作是一个数据单元;一个点云片中的一组属性数据可以被看作是一个数据单元。
五、点云编码(Point Cloud Compression,PCC)
点云编码是指对点云中各点的几何数据和属性数据进行编码,得到点云码流的过程。点云编码可以包括几何数据编码和属性数据编码两个主要过程。在编码过程中可以采用G-PCC(Geometry-based Point Cloud Compression,基于几何结构的点云编码)对点云媒体中各点的几何数据进行编码,得到几何码流;采用G-PCC对点云媒体中各点的属性数据进行编码,得到属性码流;几何码流和属性码流共同组成点云媒体的点云码流。
其中,在点云码流中可以包括元数据信息,元数据信息可以包括以下一种或多种信息:序列头参数集合(Sequence Header)、几何头参数集合(Geometry Header)、属性头参数集合(Attribute Header)、点云片信息。接下来分别对序列头参数集合、几何头参数集合、属性头参数集合以及点云片信息分别进行相关阐述:
(1)序列头参数集合
该序列头参数集合包含点云码流对应的点云序列解码所需的解码参数,该序列头参数集合的语法如表1所示:
表1
其中,上述表1涉及的各个字段的含义如下:
档次标号字段(profile_id):该档次标号字段为8位无符号整数,用于表示位流符合的档次。
级别标号字段(level_id):该级别标号字段为8位无符号整数,用于表示位流符合的级别。
序列参数集表示字段(sequence_parameter_set_id),该序列参数集表示字段提供一个SPS(序列参数集合,Sequence Parameter Set)识别符,供其它语法元素参考,该识别符是一个界于0到31的整数。
包围盒原点x坐标高位部分字段(bounding_box_offset_x_upper):该字段为无符号整数,用于表示包围盒x坐标高于16位的位数。
包围盒原点x坐标低位部分字段(bounding_box_offset_x_lower):该字段为无符号整数,用于表示包围盒原点x坐标低16位。此时,包围盒原点x坐标即为:Bounding_box_offset_x=(bounding_box_offset_x_upper)<<16+bounding_box_offset_x_lower。
包围盒原点y坐标高位部分字段(bounding_box_offset_y_upper),该字段为无符号整数,用于表示包围盒y坐标高于16位的位数。
包围盒原点y坐标低位部分字段(bounding_box_offset_y_lower):该字段为无符号整数,用于表示包围盒原点y坐标低16位。此时,包围盒原点y坐标即为:Bounding_box_offset_y=(bounding_box_offset_y_upper)<<16+bounding_box_offset_y_lower。
包围盒原点z坐标高位部分字段(bounding_box_offset_z_upper):该字段为无符号整数,用于表示包围盒z坐标高于16位的位数。
包围盒原点z坐标低位部分字段(bounding_box_offset_z_lower):该字段为无符号整数,用于表示包围盒原点z坐标低16位。此时,包围盒原点z坐标即为:Bounding_box_offset_z=(bounding_box_offset_z_upper)<<16+bounding_box_offset_z_lower。
包围盒宽度高位部分字段(bounding_box_size_width_upper):该字段为无符号整数,用于表示包围盒宽度高于16位的位数。
包围盒宽度低位部分字段(bounding_box_size_width_lower):该字段为无符号整数,用于表示包围盒宽度低16位。包围盒宽度即为:bounding_box_size_width=(bounding_box_size_width_upper)<<16+bounding_box_size_width_lower。
包围盒高度高位部分字段(bounding_box_size_height_upper):该字段为无符号整数,用于表示包围盒高度高于16位的位数。
包围盒高度低位部分字段(bounding_box_size_height_lower):该字段为无符号整数,用于表示包围盒高度低16位。包围盒高度即为:bounding_box_size_height=(bounding_box_size_height_upper)<<16+bounding_box_size_height_lower。
包围盒深度高位部分字段(bounding_box_size_depth_upper):该字段为无符号整数,用于表示包围盒深度高于16位的位数。
包围盒深度低位部分字段(bounding_box_size_depth_lower):该字段为无符号整数,用于表示包围盒深度低16位。包围盒深度即为:bounding_box_size_depth=(bounding_box_size_depth_upper)<<16+bounding_box_size_depth_lower。
量化步长高位部分字段(quant_step_lower):该字段为16位数,用于表示量化步长32位浮点数的高16位。
量化步长低位部分字段(quant_step_upper):该字段为16位数,用于表示量化步长32位浮点数的低16位。量化步长即为:quant_step=(float)((quant_step_upper<<16)+quant_step_lower)。
几何移除重复点标志字段(geomRemoveDuplicateFlag):该字段为二值变量,用于指示在几何编码前是否去除重复点。当几何移除重复点标志字段为第一取值(如‘1’)时,表示在几何编码前去除重复点,即去除几何位置相同的点;当几何移除重复点标志字段为第二取值(如‘0’)时,表示在几何编码前不去除重复点。
属性存在标志字段(attribute_present_flag):该属性存在标志字段为二值变量。当属性存在标志字段为第一取值(如‘1’)时,表示本码流包含属性编码;当属性存在标志字段为第二取值(如‘0’)时,表示本码流不包含属性编码。
最大属性数减一字段(maxNumAttributesMinus1):该字段为无符号整数,当该最大属性数减一字段加1时,表示本标准码流支持的最大属性编码数目。最大属性数减一字段的数值是一个界于0到15之间的整数。当最大属性数减一字段不出现在码流的时候,maxNumAttributesMinus1默认为0。
属性自适应预测标志字段(attribute_adapt_pred):该属性自适应预测标志字段为二值变量。当属性自适应预测标志字段的值为第一取值(如‘0’)时,表示无自适应选择预测值方法;当属性自适应预测标志字段的值为第二取值(如‘1’)时,表示允许从基于几何位置的预测值方法切换到基于属性值的预测值方法。
属性量化参数字段(attribute_qp):该属性量化参数字段为无符号整数,用于表示属性量化参数。
(2)几何头参数集合
该几何头参数集合包含点云码流中各点云帧的几何数据解码所需要的解码参数。该几何头参数集合的语法可如表2所示:
表2
其中,上述表2中的语法的语义如下:
几何参数集字段(geometry_parameter_set_id):该几何参数集字段提供一个几何参数识别符,供其它语法元素参考,该几何参数识别符是一个界于0到31的整数。
几何序列参数集字段(geometry_sequence_parameter_set_id):该字段确定一个SPS识别符供当前几何参数集合使用。该SPS识别符是一个界于0到31的整数,对同一点云下所有几何参数集合该值保持一致。
几何宏块的节点大小字段(gps_lcu_node_size_log2_minus_one):该字段为无符号整数,用于表示是否打开块结构编码。当几何宏块的节点大小字段的值为目标预设值(如‘0’)时,表示关闭块结构编码;当几何宏块的节点大小字段的值大于目标预设值(如几何宏块的节点大小字段的值大于‘0’)时,表示打开块结构编码,并且定义了宏块的几何节点大小,即gps_lcu_node_size_log2=gps_lcu_node_size_log2_minus_one+1。
几何隐式划分标志字段(gps_implicit_geom_partition_flag):该字段为二值变量,用于指示是否关闭几何隐式划分。若几何隐式划分标志字段为第一设定值(如‘0’),则表示关闭几何隐式划分;若几何隐式划分标志字段为第二设定值(如‘1’),则表示打开几何隐式划分。
在八叉树划分前最大四叉树/二叉树划分数量字段(gps_max_num_implicit_qtbt_before_ot):该字段为无符号整数,该字段用于表示在几何隐式划分中,在八叉树划分之前,最大被允许的四叉树或者二叉树划分数量。
四叉树/二叉树划分的最小尺寸字段(gps_min_size_implicit_qtbt):该字段为无符号整数,该字段用于表示在几何隐式划分中,四叉树或者二叉树划分最小被允许的划分尺寸。
几何孤立点编码模式标志字段(gps_single_mode_flag):该字段为二值变量。当几何孤立点编码模式标志字段为第一设定值(如‘0’)时,表示关闭几何孤立点编码模式;当几何孤立点编码模式标志字段为第二设定值(如‘1’)时,表示打开几何孤立点编码模式。
其中,当上述几何隐式划分标志字段为第二设定值(‘1’)时,gps_max_num_implicit_qtbt_before_ot和gps_min_size_implicit_qtbt需要根据根节点对数尺寸进行限制,具体过程如表3所示:
表3
几何编码状态存储标志字段(gps_save_stat_flag):该字段为二值变量,用于指示是否存储编码状态。当几何编码状态存储标志字段为第一设定值(如‘0’)时,表示不存储编码状态,即不存储熵编码上下文和几何编码的哈希表信息;当几何编码状态存储标志字段为第二设定值(如‘1’)时,表示存储编码状态。
(3)属性头参数集合
属性头参数集合包含点云码流中各点云帧的属性数据进行解码时所需要的解码参数。该属性头参数集合的语法如表4所示:
表4
其中,上述表4涉及的各个字段的含义如下:
属性存在标志字段(attributePresentFlag[attrIdx]):该属性存在标志字段为二值变量。当属性存在标志字段的取值为第一设定值(如1),该属性存在标志字用于表示本点云码流包含第attrIdx属性编码;当属性存在标志字段的取值为第二设定值(如0)时,该属性存在标志字段用于表示本点云码流不包含第attrIdx属性编码。attrIdx是一个界于0到15的整数。该属性存在标志字段的含义可由参见下述表5的解释:
表5,x属性编码映射表
属性索引attr_idx | 属性描述(Attribute description) |
0 | 颜色(Color) |
1 | 反射率(Reflectance) |
2..15 | 保留 |
属性变换算法标志字段(transform):该属性变换算法标志字段为二值变量。该属性变换算法标志字段用于控制是否使用小波变换对属性数据进行编码;当属性变换算法标志字段的取值为第一设定值(如1)时,该属性变换算法标志字段用于控制使用小波变换对属性数据进行编码;当属性变换算法标志字段的取值为第二设定值(如0)时,该属性变换算法标志字段用于控制使用预测方法对属性数据进行编码。
属性变换系数量化参数差值(attrTransformQpDelta):该属性变换系数量化参数差值是无符号整数,用于表示与属性残差量化参数的差值。属性变换系数量化参数attrTransformQp=attrQuantParam(属性量化参数)+attrTransformQpDelta。
属性变换点数(attrTransformNumPoints):属性变换点数是无符号整数,用于表示属性变换的点数,即使用attrTransformNumPoints点的小波变换;当attrTransformNumPoints的取值为目标设定值(如0)时,表示使用片中所有的点进行小波变换。
最大搜索的邻居点数对数值减七(maxNumOfNeighbour_log2_minus7):该最大搜索的邻居点数对数值减七是无符号整数,用于导出变量maxNumOfNeighbour(最大邻居点数),表示可用于搜索的最大已编码邻居数目以控制在属性预测时邻居候选点的搜索范围及硬件缓存的点的数目。maxNumOfNeighbour通过如下公式求得:
maxNumOfNeighbour=2(maxNumOfNeighbor_log2_minus7+7)maxNumOfNeighbour_log2_minus7。
属性残差二次预测字段(cross_component_pred):该属性残差二次预测字段为二值变量,用于指示是否允许属性残差二次预测;当属性残差二次预测字段的取值为第一设定值(如1)时,表示允许属性残差二次预测;当属性残差二次预测字段的取值为第二设定值(如0)时,表示不允许属性残差二次预测。
残差编码顺序开关字段(orderSwitch):该残差编码顺序开关字段为二值变量;当残差编码顺序开关字段的取值为第一设定值(如1)时,表示残差编码顺序是UYV/GRB顺序;当残差编码顺序开关字段的取值为第二设定值(如0)时,表示残差编码顺序是RGB/YUV顺序。
零游程值减半打开标志字段(half_zero_runlength_enable):该零游程值减半打开标志字段为二值变量;当零游程值减半打开标志字段为第一设定值(如1)时,表示使用零游程减半;当零游程值减半打开标志字段的值为第二设定值(如0)时,表示不使用零游程减半。
色度通道Cb量化参数偏移量(chromaQpOffsetCb):该色度通道Cb量化参数偏移量为有符号整数,用于控制Cb通道量化参数,该色度通道Cb量化参数偏移量的取值范围为-16~16。如果当前属性头信息中不存在chromaQpOffsetCb,则chromaQpOffsetCb的值为0,即choramQpCb=Clip3(minQP,maxQP,attribute_qp+chromaQpOffsetCb)。注意亮度通道的量化参数lumaQp=attribute_qp,最小所支持的量化参数为minQP=0,最大所支持的量化参数为maxQP=63。
色度通道Cr量化参数偏移量(chromaQpOffsetCr):该色度通道Cr量化参数偏移量为有符号整数,用于控制Cr通道量化参数;该色度通道Cr量化参数偏移量的取值范围为-16~16。如果当前属性头信息中不存在chromaQpOffsetCr,则chromaQpOffsetCr的值为0,即choramQpCr=Clip3(minQP,maxQP,attribute_qp+chromaQpOffsetCr)。注意亮度通道的量化参数lumaQp=attribute_qp,最小所支持的量化参数为minQP=0,最大所支持的量化参数为maxQP=63。
最近邻点预测参数一(nearestPredParam1):该最近邻点预测参数一为无符号整数,用于控制最近邻点预测的阈值。
最近邻点预测参数二(nearestPredParam2):该最近邻点预测参数二为无符号整数,用于控制最近邻点预测的阈值;该阈值表示为attrQuantParam*nearestPredParam1+nearestPredParam1。
空间偏倚系数(axisBias):该空间偏倚系数为无符号整数,用于控制属性预测值计算中在Z方向上的偏移量。
属性输出比特深度减一(outputBitDepthMinus1):该属性输出比特深度减一为无符号整数,用于控制属性输出比特深度,该属性输出比特深度减一界于0到15之间。其中,属性输出比特深度(outputBitDepth)=outputBitDepthMinus1+1。如果该语法元素不在点云码流里,默认值为零。
LoD层数(numOflevelOfDetail):该LoD层数为无符号整数,用于控制在属性预测时划分的LOD的层数。其中,符合本部分的码流中numOflevelOfDetail不应大于32。
最大选取的用于预测的邻居点数(maxNumOfPredictNeighbours):该最大选取的用于预测的邻居点数为无符号整数,用于限制在属性预测时所选邻居点的点数。其中,符合本部分的码流中maxNumOfPredictNeighbours不应大于16。
LoD层内预测标志字段(intraLodFlag):LoD层内预测标志字段为二值变量,用于控制是否开启层内预测。当LoD层内预测标志字段的取值为第一预设值(如1)时,表示开启层内预测;当LoD层内预测标志字段的取值为第二预设值(如0)时,表示关闭层内预测。
颜色重排序模式字段(colorReorderMode):颜色重排序模式字段为无符号整数,用于表示当前颜色信息选择的重排序模式。当颜色重排序模式字段为第一预设值(如0)时,表示原始点云输入顺序;当颜色重排序模式字段为第二预设值(如“1”)时,表示Hilbert重排序;当颜色重排序模式字段为第三预设值(如“2”)时,表示Morton重排序。
反射率重排序模式字段(colorReorderMode):反射率重排序模式字段为无符号整数。当反射率重排序模式字段为第一预设值(如0)时,表示原始点云输入顺序;当反射率重排序模式字段为第二预设值(如1)时,表示Hilbert重排序;当反射率重排序模式字段为第三预设值(如2)时,表示Morton重排序。
最大缓存限制参数(maxNumofCoeff):该最大缓存限制参数为无符号整数,用于计算限制在属性变换编码中最大缓存的变换参数的个数。
最大延迟限制参数(coeffLengthControl):该最大延迟限制参数为无符号整数,用于限制在属性变换编码中变换参数的最大延迟的个数。其中,具体最大延迟点数计算为maxNumofCoeff*coeffLengthControl。
属性编码顺序字段(attrEncodeOrder):该属性编码顺序字段为二值变量,用于控制当点云包含多种属性类型时属性的编码顺序。当属性编码顺序字段为第一设定值(如0)时,表示先编码颜色,再编码反射率;当属性编码顺序字段为第二设定值(如1)时,表示先编码反射率,再编码颜色。
跨类型的属性预测字段(crossAttrTypePred):该跨类型的属性预测字段二值变量。当跨类型的属性预测字段的取值为第一设定值(如1)时,表示允许跨类型的属性预测;当跨类型的属性预测字段的取值为第二设定值(如0)时,表示不允许跨类型的属性预测。
跨类型的属性预测权重参数1(crossAttrTypePredParam1):跨类型的属性预测权重参数1为15位无符号整数,用于控制跨类型的属性预测中,计算几何信息距离和属性信息距离的权重参数1。
跨类型的属性预测权重参数2(crossAttrTypePredParam2):跨类型的属性预测权重参数2为21位无符号整数,用于控制跨类型的属性预测中,计算几何信息距离和属性信息距离的权重参数2。
反射率组预测标志字段(refGroupPred):该反射率组预测标志字段为二值变量,用于控制是否开启预测变换的反射率组预测模式;当反射率组预测标志字段为第一设定值(如1)时,表示开启组预测;当反射率组预测标志字段为第二设定值(如0)时,表示关闭组预测。
初始预测变换比例(initPredTransRatio):该初始预测变换比例为有符号整数,用于属性压缩的多层变换算法中(transform=1),控制构建预测变换树时所用初始距离阈值的大小。
变换残差层标志字段(transResLayer):该变换残差层标志字段为二值变量,用于属性压缩的多层变换算法中(transform=1),控制是否使用属性残差补偿。当transResLayer为第一设定值(如1)时,表示使用属性残差补偿;当transResLayer为第二设定值(如0)时,表示不使属性残差补偿。
颜色指数哥伦布阶数(ColorGolombNum):该颜色指数哥伦布阶数为无符号整数,用以表示当前颜色预测残差或变换系数在进行解码时,采用的K阶指数哥伦布的阶数K,K=ColorGolombNum。
反射率指数哥伦布阶数(RefGolombNum):该反射率指数哥伦布阶数为无符号整数,用以表示当前反射率预测残差或变换系数在进行解码时,采用的K阶指数哥伦布的阶数K,K=ColorGolombNum。
当前待解码系数的解码模式标志字段(coeffEncodeModeFlag):该当前待解码系数的解码模式标志字段为二值变量;当当前待解码系数的解码模式标志字段为第一设定值(如1)时,表示按照9.3.16.3解码点云属性变换系数;当当前待解码系数的解码模式标志字段为第二设定值(如0)时,表示按照9.3.12解码点云属性变换系数。
(4)点云片信息
点云片中可以仅包含点云帧中的几何数据,此时该点云片可以称为几何点云片;点云片中也可以仅包含点云帧中的一组或多组属性数据,此时该点云片可以称为属性点云片;点云片中可以既包含点云帧的几何数据,也包含点云帧的一组或多组属性数据。
①当点云片信息包含几何点云片时,该几何点云片的语法如表6所示:
表6
其中,上述表6中的各个字段含义如下:
片标号字段(slice_id):该片标号字段为无符号整数,用于表示点云片的标号。
片几何上下文模式标志字段(gsh_context_mode):该字段为二值变量,点云片根据片几何上下文模式标志字段的取值选择不同的几何八叉树编码中的上下文模式。
片几何孤立点编码模式标志字段(gsh_single_mode_flag):该字段为二值变量,该字段用于指示是否关闭当前点云片几何孤立点编码模式;当片几何孤立点编码模式标志字段为第一取值(如‘0’)时,表示关闭当前点云片几何孤立点编码模式;当片几何孤立点编码模式标志字段为第二取值(如‘1’)时,表示打开当前点云片几何孤立点编码模式。当点云码流中没有该符号时,其默认值为0。
片几何平面模式标志字段(gsh_planar_mode):该字段为二值变量,该字段用于指示是否关闭当前点云片平面编码模式;当片几何平面模式标志字段为第一取值(如‘0’)时,表示关闭当前点云片平面编码模式;当片几何平面模式标志字段为第二取值(如‘1’)时,表示打开当前点云片几何平面模式。
片包围盒原点x坐标高16位部分字段(gsh_bounding_box_offset_x_upper):该字段为16位数,该字段表示片包围盒x坐标32位有符号整数的高16位。
片包围盒原点x坐标低16位部分字段(gsh_bounding_box_offset_x_lower):该字段为16位数,该字段表示片包围盒原点x坐标32位有符号整数的低16位。片包围盒原点x坐标即为:
gsh_bounding_box_offset_x=(gsh_bounding_box_offset_x_upper)<<16+gsh_bounding_box_offset_x_lower。
片包围盒原点y坐标高16位部分字段(gsh_bounding_box_offset_y_upper),该字段为16位数,该字段表示片包围盒y坐标32位有符号整数的高16位。
片包围盒原点y坐标低16位部分字段(gsh_bounding_box_offset_y_lower),该字段为16位数,该字段表示片包围盒原点y坐标32位有符号整数的低16位。片包围盒原点y坐标即为:
gsh_bounding_box_offset_y=(gsh_bounding_box_offset_y_upper)<<16+gsh_bounding_box_offset_y_lower。
片包围盒原点z坐标高16位部分字段(gsh_bounding_box_offset_z_upper):该字段为16位数,该字段表示片包围盒z坐标32位有符号整数的高16位。
片包围盒原点z坐标低16位部分字段(gsh_bounding_box_offset_z_lower):该字段为16位数,该字段表示片包围盒原点z坐标32位有符号整数的低16位。片包围盒原点z坐标即为:
gsh_bounding_box_offset_z=(gsh_bounding_box_offset_z_upper)<<16+gsh_bounding_box_offset_z_lower。
片包围盒X方向对数尺寸高位部分字段(gsh_bounding_box_nodeSizeXLog2_upper):该字段为无符号整数,该字段表示片包围盒X方向对数尺寸高于16位的位数。
片包围盒X方向对数尺寸低位部分字段(gsh_bounding_box_nodeSizeXLog2_lower):该字段为无符号整数,该字段表示片包围盒X方向对数尺寸低16位。片包围盒X方向对数尺寸即为:
gsh_bounding_box_nodeSizeXLog2=(gsh_bounding_box_nodeSizeXLog2_upper)<<16+gsh_bounding_box_nodeSizeXLog2_lower。
片包围盒Y方向对数尺寸高位部分字段(gsh_bounding_box_nodeSizeYLog2_upper):该字段为无符号整数,该字段表示片包围盒Y方向对数尺寸高于16位的位数。
片包围盒Y方向对数尺寸低位部分字段(gsh_bounding_box_nodeSizeYLog2_lower):该字段为无符号整数,该字段表示片包围盒Y方向对数尺寸低16位。片包围盒Y方向对数尺寸即为:
gsh_bounding_box_nodeSizeYLog2=(gsh_bounding_box_nodeSizeYLog2_upper)<<16+gsh_bounding_box_nodeSizeYLog2_lower。
片包围盒Z方向对数尺寸高位部分字段(gsh_bounding_box_nodeSizeZLog2_upper):该字段为无符号整数,该字段表示片包围盒Z方向对数尺寸高于16位的位数。
片包围盒Z方向对数尺寸低位部分字段(gsh_bounding_box_nodeSizeLog2_lower):该字段为无符号整数,该字段表示片包围盒Z方向对数尺寸低16位。片包围盒Z方向对数尺寸即为:
gsh_bounding_box_nodeSizeZLog2=(gsh_bounding_box_nodeSizeZLog2_upper)<<16+gsh_bounding_box_nodeSizeZLog2_lower。
片所含点数高位部分字段(num_points_upper):该字段为无符号整数,该字段表示片所含点数高于16位的位数。
片所含点数低位部分字段(num_points_upper):该字段为无符号整数,该字段表示片所含点数低16位。片所含点数即为:num_points=((num_points_upper<<16)+num_points_lower)。
可选地,针对几何数据流,还可定义通用几何数据流语法,该通用几何数据流语法可如表7所示:
表7通用几何语法定义
②当点云片信息包含属性点云片时,该属性点云片的语法如表8所示:
表8
其中,上述表8中的各个字段含义如下:
片标号字段(slice_id):该片标号字段为点云片的标号。
反射率属性量化参数偏移量字段(reflQPoffset):该字段为有符号整数,用于控制反射率属性量化参数,该字段的取值范围为-32~32。
可选的,针对属性数据流,还可定义通用属性数据流语法,该通用属性数据流语法可如表9所示:
表9属性数据流定义
六、点云解码
点云解码是指对点云编码得到的点云码流进行解码,以重建点云的过程;详细地说,是指基于点云码流中的几何码流和属性码流,重建点云中各点的几何数据和属性数据的过程。在解码侧获得点云码流之后,对于几何码流,首先进行熵解码,得到点云中各点量化后的几何数据,然后进行反量化,重建点云中各点的几何数据。而对于属性码流,首先进行熵解码,得到点云中各点量化后的预测残差信息或量化后的变换系数;然后对量化后的预测残差信息进行反量化得到重建残差信息,对量化后的变换系数进行反量化得到重建变换系数,重建变换系数经反变换后得到重建残差信息,根据点云中各点的重建残差信息可以重建点云中各点的属性数据。将点云中各点重建的属性数据,按顺序与重建的几何数据一一对应,以重建点云。
基于上述相关描述,本申请实施例提供了一种点云媒体的数据处理方案,该方案大致原理如下:在编码侧可对点云媒体进行编码处理,得到点云码流,并对点云码流中的各个点云帧:①定义帧级别的参数信息,该参数信息可以包括但不限于:帧序号、帧时间戳、帧空间信息、帧内数据单元的信息;②在各个点云帧的参数信息中可灵活指示各个点云帧内是否包含几何头参数集合或者属性头参数集合;③根据各个点云帧的编码过程,可在各个点云帧内的数据单元中添加相应的起始码和结束码以实现解码侧快速定位数据单元。其中,起始码可用于指示数据单元开始编码的位置,结束码可用于指示数据单元结束编码的位置。在解码侧对点云码流进行解码时,可根据点云码流包含的各个点云帧的参数信息快速定位各个点云帧需要解码的数据单元,从而实现部分解码;同时可根据参数信息所指示的点云帧内是否包含几何头参数集合或者属性头参数集合获取相应的几何头参数集合或者属性头参数集合实现正确解码。另外,根据参数信息中的帧序号和帧时间戳也可以保证在合适时间以合适的顺序进行解码和呈现,优化解码侧的资源开销。
本申请实施例所提供的点云媒体的数据处理方案还可以与车联网技术相结合。具体的,该点云媒体的数据处理方案可以获取每一个点云帧的采集时间,可以在自动驾驶过程中根据采集时间实时更新高精地图;该高精地图可用于定位,或者利用该高精地图可实现自动导航。
基于上述描述,下面结合图2a对适于实现本申请实施例提供的点云媒体的数据处理系统进行介绍。如图2a所示,点云媒体的数据处理系统20中可以包括内容制作设备201和媒体处理设备202,内容制作设备201位于点云媒体的编码侧;该内容制作设备201可以是终端设备,也可以是服务器。媒体处理设备202位于点云媒体的解码侧,该媒体处理设备202可以是终端设备,也可以是服务器。内容制作设备201和媒体处理设备202之间可以建立通信连接。其中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端、智能电视等,但并不局限于此。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,内容制作设备201与媒体处理设备202之间涉及点云媒体的传输过程,该传输过程可以基于各种传输协议(或者传输信令)来进行,此处的传输协议可包括但不限于:DASH(Dynamic Adaptive Streaming over HTTP,动态自适应流媒体传输)协议、HLS(HTTPLive Streaming,动态码率自适应传输)协议、SMTP(Smart Media Transport Protocol,智能媒体传输协议)、TCP(Transmission Control Protocol,传输控制协议)等。
下面对点云媒体的数据处理过程进行详细描述:
(1)点云媒体的获取过程。
内容制作设备201可以获取点云媒体,点云媒体可以通过场景捕获或设备生成两种方式获取得到。场景捕获点云媒体是指通过内容制作设备201关联的捕获设备采集真实世界的视觉场景得到点云媒体;其中,捕获设备用于为内容制作设备201提供点云媒体的获取服务,捕获设备可以包括但不限于以下任一种:摄像设备、传感设备、扫描设备;其中,摄像设备可以包括普通摄像头、立体摄像头、以及光场摄像头等。传感设备可以包括激光设备、雷达设备等。扫描设备可以包括三维激光扫描设备等。内容制作设备201关联的捕获设备可以是指设置于内容制作设备201中的硬件组件,例如捕获设备是终端的摄像头、传感器等,内容制作设备关联的捕获设备也可以是指与内容制作设备201相连接的硬件装置,例如与内容制作设备201相连接的摄像头等。设备生成点云媒体是指内容制作设备201根据虚拟对象(例如通过三维建模得到的虚拟三维物体及虚拟三维场景)生成点云媒体。
(2)点云媒体的编码过程。
内容制作设备201可以采用点云编码方式对获取的点云媒体中的几何数据和属性数据进行编码处理,得到点云码流(包括编码的几何码流和属性码流)。在该点云码流中可以包括一个或多个点云帧以及各点云帧的参数信息,其中,点云帧的参数信息可以用于指示帧序号、帧时间戳、帧空间信息、帧内数据单元的信息中的一种或多种。当点云帧的参数信息用于指示帧内数据单元时,该点云帧的参数信息还可以包括该帧内数据单元开始编码的位置以及结束编码的位置。此外,点云帧的参数信息还可用于指示点云帧内是否包含几何头参数集合或者属性头参数集合,以便于媒体处理设备202在对点云帧进行解码时,能够正确获取相应的几何头参数集合或者属性头参数集合进行解码。
在得到点云码流之后,内容制作设备201可向媒体处理设备202发送该点云码流。
(3)点云媒体的解码过程。
媒体处理设备202可以通过内容制作设备201获得点云媒体的点云码流和相应的媒体呈现描述信息。点云码流和媒体呈现描述信息通过传输信令(如DASH、SMT)由内容制作设备201传输给媒体处理设备202。其中,媒体处理设备202的解码过程与内容制作设备201的编码过程是相逆的,媒体处理设备202对点云码流进行解码,从而还原出点云媒体。
其中,在解码过程中,媒体处理设备202可以获取点云码流中的各点云帧的参数信息,然后根据点云码流中包括的各点云帧的参数信息,对点云码流进行解码处理,以呈现点云媒体。
在一个实施例中,在解码过程中,可从点云码流中确定需要解码的目标点云帧,并根据目标点云帧的参数信息所指示的目标点云帧内是否包含几何头参数集合和属性头参数集合,来获取正确的几何头参数集合和属性头参数集合,并基于获取到的几何头参数集合和属性头参数集合对目标点云帧进行解码处理。
可选地,目标点云帧的参数信息中可包括帧内数据单元开始解码的位置和结束解码的位置,根据该参数信息可以从目标点云帧内定位需要解码的数据单元,并对该需要解码的数据单元进行解码呈现,实现部分解码。
(4)点云媒体的渲染过程。
媒体处理设备202根据媒体呈现描述信息中与渲染、视窗相关的元数据对解码得到的点云媒体进行渲染,得到点云媒体的点云帧,并根据点云帧的呈现时间呈现点云媒体。
在一个实施例中,本申请实施例还提供一种点云媒体的数据处理方法的流程示意图。请参见图2b,内容制作设备端:首先通过采集设备对真实世界的视觉场景A进行采样,得到与真实世界的视觉场景对应的点云媒体的点云源数据B,点云源数据B是由大量点云帧组成的帧序列;然后对获取的点云媒体进行编码处理,得到点云码流E(包括编码的几何码流和属性码流),该点云媒体中包含一个或多个点云帧以及各点云帧的参数信息;接着对点云码流E进行封装得到点云媒体对应的媒体文件,具体地,内容制作设备201根据特定媒体容器文件格式,将一个或多个编码比特流合成为用于文件回放的媒体文件F,或用于流式传输的初始化片段和媒体片段的序列(FS);其中,媒体容器文件格式可以是指在国际标准化组织(International Organization for Standardization,ISO)/国际电工委员会(International Electrotechnical Commission,IEC)14496-12中规定的ISO基本媒体文件格式。在一种实施方式中,内容制作设备还将元数据封装到媒体文件或初始化/媒体片段的序列中,并通过传输信令(如动态自适应流媒体传输接口)将初始化/媒体片段的序列传送给媒体处理设备202。
在媒体处理设备端:首先接收内容制作设备201发送的媒体文件,该媒体文件可以包括:用于文件回放的媒体文件F',或用于流式传输的初始化片段和媒体片段的序列Fs';然后对媒体文件进行解封装处理,得到点云码流E',应理解的是,媒体处理设备202的文件解封装的过程与内容制作设备201的文件封装过程是相逆的,媒体处理设备202可按照点云媒体的文件格式要求对媒体文件资源进行解封装,得到点云码流;接着根据点云码流中包括的各点云帧的参数信息,解码点云码流,得到点云媒体D';在具体实现中,媒体处理设备基于当前对象的观看位置/观看方向确定呈现点云媒体所需的媒体文件,或者媒体片段序列;并对呈现点云媒体所需的媒体文件,或者媒体片段序列进行解码处理,得到呈现所需的点云媒体。最后基于当前对象的观看(视窗)方向,对解码后的点云媒体进行渲染,得到点云媒体的点云帧A',并按照点云帧的呈现时间在媒体处理设备携带的头戴式显示器或任何其他显示设备的屏幕上呈现点云媒体。需要说明的是,当前对象的观看位置/观看方向由头部跟随以及可能还有视觉跟随功能确定。除了通过渲染器用来渲染当前对象的观看位置/观看方向的点云媒体外,还可以通过音频解码器来对当前对象的观看(视窗)方向的音频进行解码优化。其中,在基于视窗的传输过程中,当前的观看位置和观看方向也被传递给策略模块,用于确定要接收的轨道。
可以理解的是,本申请涉及点云媒体的数据处理技术可以依托于云技术进行实现;例如,将云服务器作为内容制作设备。云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。本申请所提供的点云媒体的数据处理技术可应用于点云压缩相关产品以及沉浸式系统中的各个环节。
在本申请实施例中,内容制作设备可以获取点云媒体,并对点云媒体进行编码处理,得到点云码流,该点云码流中包括一个或多个点云帧以及各点云帧的参数信息,并对点云码流进行封装,得到点云媒体的媒体文件;然后媒体处理设备可以获取媒体文件,并对媒体文件进行解封装处理,得到点云码流,并根据各点云帧的参数信息对点云码流进行解码处理。可灵活组织点云码流中的各点云帧的参数信息,指导点云媒体解码及呈现,实现解码端部分解码,从而优化解码端的资源开销。
应理解的是,可在点云码流中可添加若干描述性字段,包括码流高层语法层面的字段扩展,以支持本申请的实施步骤。接下来结合码流高层语法层面的字段扩展为例对本申请实施例提供的点云媒体的数据处理方法进行相关描述。请参见图3,图3为本申请实施例提供的一种点云媒体的数据处理方法的流程示意图,该点云媒体的数据处理方法可以由点云媒体的数据处理系统中的媒体处理设备202来执行,该方法包括以下步骤S301-S302:
S301、获取点云媒体的点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息。
其中,点云码流中的一个或多个点云帧按序构成点云序列,点云帧的参数信息属于帧级别的参数信息,点云帧的参数信息可以用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息。帧序列是指点云帧在点云序列中的序号,帧时间戳信息可以包括点云帧的采集时间、呈现时间、解码时间中的任一种或多种,帧空间信息是指点云帧的空间信息,该空间信息包括以下至少一种:点云帧的包围盒原点的坐标信息,点云帧的包围盒宽度信息,点云帧的包围盒深度信息。帧内数据单元可以包括点云帧、点云片、点云片的几何数据、点云片的属性数据等等。
在一个实施例中,各个点云帧的参数信息可分别设置于各点云帧的帧头(frame_header),该各点云帧的帧头的语法如表10所示:
表10
接下来结合表10所示的帧头的语法来详细描述点云帧的参数信息如何指示相应信息,在本申请实施例中以当前点云帧为例进行描述,该当前点云帧是指点云码流中正在解码的点云帧:
(1)点云帧的参数信息用于指示帧序号。
当前点云帧的参数信息可包括帧序号字段(frameIdx),该帧序号字段可以指示当前点云帧在点云序列中的序号。
(2)点云帧的参数信息用于指示帧内数据单元的信息。
一个点云帧可以包含一个或多个数据单元,在一种实现中,数据单元可以是点云帧中的点云片,当前点云帧的参数信息包括点云片数量字段(numSlice)或点云片数量减一字段(numSliceMinus1)。上述点云片数量字段用于指示当前点云帧包含的点云片数量;点云片数量减一字段用于间接指示当前点云帧包含的点云片数量,即当前点云帧包含的点云片数量为numSliceMinus1+1。
(3)点云帧的参数信息用于指示帧时间戳信息。
其中,根据该帧时间戳信息可以确定点云帧的采样时间、解码时间或者呈现时间,有效保障在合适时间内对点云帧进行解码。当前点云帧的参数信息包括以下至少一个字段:时间戳标志字段(timestampFlag)、时间戳数量字段(numTimestamp)、时间戳类型字段(timestampType)和时间戳字段(Timestamp)。
时间戳标志字段(Timestamp)用于指示当前点云帧是否包含时间戳,当时间戳标志字段为第一预设值(如0)时,指示当前点云帧不包含时间戳;当时间戳标志字段为第二预设值(如1)时,指示当前点云帧包含时间戳。
时间戳数量字段(numTimestamp)用于指示当前点云帧包含的时间戳数量。
时间戳类型字段(timestampType)用于指示当前时间戳的类型,若时间戳类型字段为第一预设值(如0),则指示当前时间戳的类型为解码时间;若时间戳类型字段为第二预设值(如1),则指示当前时间戳的类型为呈现时间;若时间戳类型字段为第三预设值(如2),则指示当前时间戳的类型为采集时间。上述当前时间戳是指当前点云帧正在使用的时间戳。
时间戳字段(Timestamp)用于指示当前点云帧的采集时间、呈现时间和解码时间中的任意一种或多种。作为一种实现方式,时间戳字段用于指示世界协调时间(如UTC时间);作为另一种实现方式,时间戳字段按照预设格式进行指示,该预设格式可以是32位位串,该预设格式包括以下至少一个字段:年时间戳字段(TimestampYear)、小时时间戳字段(TimestampHours)、秒时间戳字段(TimestampMinutes)、帧时间戳字段(TimestampFrames)。其中,年时间戳字段、小时时间戳字段、秒时间戳字段、帧时间戳字段均为无符号整形字段。例如,以时间戳字段指示当前点云帧的采集时间为例,该时间戳字段的预设格式可如表11所示:
表11
(4)点云帧的参数信息用于指示帧空间信息。
当前点云帧的参数信息包括空间信息标志字段(spatialInfoFlag),该空间信息标志字段表示是否指示当前点云帧的空间信息。当空间信息标志字段为第一取值(如1)时,指示当前点云帧的空间信息;当空间信息标志字段为第二取值(如0)时,不指示当前点云帧的空间信息。
上述空间信息包括以下至少一种:当前点云帧的包围盒原点的坐标信息,当前点云帧的包围盒宽度信息,当前点云帧的包围盒深度信息。当前点云帧的包围盒原点的坐标信息可以包括点云帧包围盒原点x坐标、点云帧包围盒原点y坐标以及点云帧包围盒原点z坐标。
其中,点云帧包围盒原点x坐标高位部分字段(frame_bounding_box_offset_x_upper):该字段为无符号整数,该字段表示包围盒x坐标高于16位的位数。
点云帧包围盒原点x坐标低位部分字段(frame_bounding_box_offset_x_lower):该字段为无符号整数,该字段表示包围盒原点x坐标低16位。此时,点云帧包围盒原点x坐标即为:
frame_bounding_box_offset_x=(frame_bounding_box_offset_x_upper)<<16+frame_bounding_box_offset_x_lower。
点云帧包围盒原点y坐标高位部分字段(frame_bounding_box_offset_y_upper):该字段为无符号整数,该字段表示包围盒y坐标高于16位的位数。
点云帧包围盒原点y坐标低位部分字段(frame_bounding_box_offset_y_lower):该字段为无符号整数,表示包围盒原点y坐标低16位。点云帧包围盒原点y坐标即为:
frame_bounding_box_offset_y=(frame_bounding_box_offset_y_upper)<<16+frame_bounding_box_offset_y_lower。
点云帧包围盒原点z坐标高位部分字段(frame_bounding_box_offset_z_upper):该字段为无符号整数,表示包围盒z坐标高于16位的位数。
点云帧包围盒原点z坐标低位部分字段(frame_bounding_box_offset_z_lower):该字段为无符号整数,表示包围盒原点z坐标低16位。点云帧包围盒原点z坐标即为:
frame_bounding_box_offset_z=(frame_bounding_box_offset_z_upper)<<16+frame_bounding_box_offset_z_lower。
点云帧包围盒宽度高位部分字段(frame_bounding_box_size_width_upper):该字段为无符号整数,用于表示包围盒宽度高于16位的位数。
点云帧包围盒宽度低位部分字段(frame_bounding_box_size_width_lower):该字段为无符号整数,该字段表示包围盒宽度低16位。点云帧包围盒宽度即为:
frame_bounding_box_size_width=(frame_bounding_box_size_width_upper)<<16+frame_bounding_box_size_width_lower。
点云帧包围盒高度高位部分字段(frame_bounding_box_size_height_upper):该字段为无符号整数,表示包围盒高度高于16位的位数。
点云帧包围盒高度低位部分字段(frame_bounding_box_size_height_lower):该字段为无符号整数,表示包围盒高度低16位。点云帧包围盒高度即为:
frame_bounding_box_size_height=(frame_bounding_box_size_height_upper)<<16+frame_bounding_box_size_height_lower。
点云帧包围盒深度高位部分字段(frame_bounding_box_size_depth_upper):该字段为无符号整数,表示包围盒深度高于16位的位数。
点云帧包围盒深度低位部分字段(frame_bounding_box_size_depth_lower):该字段为无符号整数,表示包围盒深度低16位。点云帧包围盒深度即为:
frame_bounding_box_size_depth=(frame_bounding_box_size_depth_upper)<<16+frame_bounding_box_size_depth_lower。
(5)点云帧的参数信息还可用于指示点云帧内是否包含参数集合。
其中,参数集合包括以下任一种:几何头参数集合、属性头参数集合、几何头参数集合和属性头参数集合;此时,当前点云帧的参数信息可以包括以下任一个字段:几何头标志字段、属性头标志字段和属性数量减一字段。上述点云帧的参数信息的语法可如表12所示:
表12
其中,上述表12中各个字段的含义如下:
几何头标志字段(geo_header_flag):该几何头标志字段用于指示当前点云帧是否包含几何头参数集合。若几何头标志字段为第一预设值(如1),则指示当前点云帧包含几何头参数集合;若几何头标志字段为第二预设值(如0),则指示当前点云帧不包含几何头参数集合。
在一种实施方式中,当当前点云帧为点云序列中的第一帧时,该几何头标志字段必须被设置为第一预设值。也就说,当点云帧为点云序列中的第一帧时,当前点云帧必须包含几何头参数集合,而当当前点云帧并非点云序列中的第一帧时,当前点云帧可以不包含几何头参数集合,那么第一帧包含的几何头参数可对当前点云帧生效,即在对当前点云帧中的几何数据进行解码时可以使用点云序列中的第一帧包含的几何头参数集合。在另一种实施方式中,当当前点云帧并非点云序列中的第一帧时,当前点云帧也可以包含几何头参数集合,即若几何头标志字段被设置为第一预设值,则指示点云序列中的几何头参数集合发生更新,此时,在进行解码时,点云序列中序号位于当前点云帧后面的点云帧均使用更新之后的几何头参数集合。
例如,点云序列中按序依次为点云帧1、点云帧2、点云帧3,即点云帧1为点云序列中的第一帧,此时,针对点云帧1:几何头标志字段必须被设置为第一预设值,即点云帧1内必须包含几何头参数集合。针对点云帧2:点云帧2并非点云序列中的第一帧(即为点云序列中的第二帧),当几何头标志字段为第一预设值时,指示点云帧2包含几何头参数集合,意味着点云序列中的几何头参数集合发生更新。针对点云帧3:点云帧3为点云序列中的第三帧,当几何头标志字段为第二预设值时,指示点云帧3不包含几何头参数集合,在对点云帧3进行解码处理时,需要使用更新后的几何头参数集合。
属性头标志字段(attr_header_flag):该属性头标志字段用于指示当前点云帧是否包含属性头参数集合,若属性头标志字段为第一设定值(如1),则指示当前点云帧包含属性头参数集合;若属性头标志字段为第二设定值(如0),则指示当前点云帧不包含属性头参数集合。
在一种实施方式中,当当前点云帧为点云序列中的第一帧时,该属性头标志字段必须被设置为第一设定值。也就说,当点云帧为点云序列中的第一帧时,当前点云帧必须包含属性头参数集合,而当当前点云帧并非点云序列中的第一帧时,当前点云帧可以不包含属性头参数集合,那么第一帧包含的属性头参数对当前点云帧生效,即在对当前点云帧中的属性数据进行解码时可以使用点云序列中的第一帧包含的属性头参数集合。在另一种实施方式中,当当前点云帧并非点云序列中的第一帧时,当前点云帧也可以包含属性头参数集合,即若属性头标志字段被设置为第一设定值,则指示点云序列中的属性头参数集合发生更新,点云序列中序号位于当前点云帧后面的点云帧均使用更新之后的属性头参数集合。
例如,点云序列中按序依次为点云帧1、点云帧2、点云帧3,即点云帧1为点云序列中的第一帧,此时,针对点云帧1:属性头标志字段必须被设置为第一设定值,即点云帧1内必须包含属性头参数集合。针对点云帧2:点云帧2并非点云序列中的第一帧(即为点云序列中的第二帧),当属性头标志字段为第一设定值时,指示点云帧2包含属性头参数集合,意味着点云序列中的属性头参数集合发生更新。针对点云帧3:点云帧3为点云序列中的第三帧,当属性头标志字段为第二设定值时,指示点云帧3不包含属性头参数集合,在对点云帧3进行解码处理时,需要使用更新后的属性头参数集合。
属性数量减一字段(numAttributesMinus1):该字段用于指示当前点云帧包含的属性头参数集合对应的属性数据组的数量。当当前点云帧为点云序列中的第一帧时,该属性数量减一字段的取值等于点云序列包含的属性数据组的最大数量。其中,点云序列包含的属性数据组的最大数量可理解为点云序列中所有的属性数据组的数量。例如,如果点云序列最大包含5组属性数据,那么,当当前点云帧为点云序列中的第一帧时,该属性数量减一字段的取值为5;又例如,如果点云序列最大包含10组属性数据,那么,当当前点云帧为点云序列中的第一帧时,该属性数量减一字段的取值为10。
在一个实施例中,当非第一帧的点云帧中包含几何头参数集合或者属性头参数集合时,表示几何头参数集合或者属性头参数集合发生了更新,更新后的几何头参数集合或者属性头参数集合可替换点云序列中相应的几何头参数集合和属性头参数集合。在点云媒体中,一组属性数据对应一个属性头参数集合;一个点云帧可以包含一个或多个属性头参数集合,一个属性头参数集合可对应一组或多组属性数据。特别的,对于属性头参数集合来说,由于不同的属性数据组会对应不同的属性头参数集合,属性头参数集合中的参数可能存在部分更新的情况,因此,针对这种情况本申请实施例可至少采用以下三种方式(即方式A、方式B和方式C)建立属性头参数集合和属性数据之间的对应关系:
方式A:当一个点云帧仅包含一个属性头参数集合时,即在点云帧内的属性头参数集合的数量仅为一个,此时,点云媒体中的属性数据组在解码时均参考该属性头参数集合。属性头参数集合可以包括属性存在标志字段,此时,该属性头参数集合的语法如表13所示:
表13
其中,属性存在标志字段(attributePresentFlag[attrIdx]):该字段为二值变量,该属性存在标志字段用于指示当前属性头参数集合中是否包含第x(或attrIdx)组属性数据的编码参数。若属性存在标志字段为第一取值(如1),则指示当前属性头参数集合中包含第x组属性数据的编码参数;若属性存在标志字段为第二取值(如0),则指示当前属性头参数集合中不包含第x组属性数据的编码参数。其中,x(或attrIdx)为大于等于0且小于等于15的整数,该x其含义由下表14所示:
表14 x属性编码映射表
attrIdx(或x) | Attribute description(属性描述) |
0 | Color(颜色) |
1 | Reflectance(反射率) |
2..15 | 保留 |
方式B:当一个点云帧仅包含一个属性头参数集合时,即在点云帧内的属性头参数集合的数量仅为一个,可通过属性类型字段和属性数据标识符建立属性编码参数和属性数据之间的对应关系。属性头参数集合包括属性类型字段和属性数据标识符字段,通过属性类型字段和属性数据标识符字段来表示属性头参数集合和属性数据之间的对应关系。此时,属性头参数集合的语法可如表15所示:
表15
其中,表15中各个字段的含义如下:
属性数量减一字段(numAttributesMinus1):该字段用于指示当前点云帧包含的属性头参数集合对应的属性数据组的数量,其中,当当前点云帧为点云序列中的第一帧时,属性数量减一字段的取值为点云序列包含的属性数据组的最大数量。
属性编码参数类型字段(attributeType):该字段可用于指示属性头参数集合的类型。
属性数据标识符字段(attributeID):该字段用于指示属性数据。
方式C:当一个点云帧存在多个属性头参数集合时,如点云帧内包含numAttributesMinus1个属性头参数集合,点云帧中不同的属性数据在解码时可能会参考不同的属性头参数集合,例如,numAttributesMinus1=2,点云帧内包含2个属性头参数集合,点云帧存在属性头参数集合1和属性头参数集合2,点云帧中的属性数据1在解码时参考属性头参数集合1,点云帧中的属性数据2在解码时参考属性头参数集合2。此时,可通过属性类型字段和属性数据标识符字段建立属性编码参数和属性数据之间的对应关系。属性头参数集合包括属性类型字段和属性数据标识符字段,通过属性类型字段和属性数据标识符字段来表示属性头参数集合和属性数据之间的对应关系。一个属性头参数集合的语法可如表16所示:
表16
(6)点云帧的参数信息还可用于指示帧内数据单元的起始码和结束码,实现快速定位。
其中,点云帧可以包括一个或多个数据单元,该数据单元可以包括点云帧、点云片、点云片的几何数据、点云片的属性数据,等等。例如,如图4所示,图4为本申请示例性提供的一种点云帧包括的数据单元。在图4中,点云帧可以包括数据单元41、数据单元42、数据单元43、数据单元421、数据单元422、数据单元423、数据单元431、数据单元432、数据单元433。数据单元41为点云帧本身,具体的,数据单元41包含点云帧的头部、几何头参数集合、属性头参数集合及点云片。数据单元42是指点云片1。数据单元43是指点云片2。数据单元421是指点云片1的几何数据;数据单元422是指点云片1的属性数据1(attr1);数据单元423是指点云片1的属性数据2(attr2)。数据单元431是指点云片2的几何数据;数据单元432是指点云片2的属性数据1(attr1);数据单元433是指点云片2的属性数据2(attr2)。
接下来对点云帧的参数信息如何指示帧内数据单元的起始码和结束码进行相关阐述:
①若数据单元包括点云帧,则当前点云帧的参数信息可以包括当前点云帧的起始码和结束码;当前点云帧是指点云码流中正在被解码的点云帧;其中,当前点云帧的起始码为预设的特定位串,或者当前点云帧的起始码为当前点云帧的上一点云帧的结束码;当前点云帧的起始码用于指示当前点云帧开始解码的位置,当前点云帧的结束码用于指示当前点云帧结束解码的位置。
②若数据单元包括点云片,则当前点云帧的参数信息包括当前点云帧中的当前点云片的起始码和结束码,当前点云片是指点云码流中正在被解码的点云片。当前点云片的起始码用于指示当前点云片开始解码的位置,当前点云片的结束码用于指示当前点云片结束解码的位置。
其中,当前点云片的起始码为预设的特定位串,或者当前点云片的起始码为当前点云片的上一点云片的结束码。例如,在图4中,当前点云片为点云片2,点云片2的起始码可以是点云片2的上一点云片的结束码(即图4中点云片1的结束码)。
③点云片中可包括点云帧的几何数据。若数据单元包括点云片的几何数据,则当前点云帧的参数信息包括当前点云片的几何数据的起始码和结束码,当前点云片的几何数据是指当前点云片正在被解码的几何数据。上述当前点云片的几何数据的起始码用于指示当前点云片的几何数据开始解码的位置,当前点云片的几何数据的结束码用于指示当前点云片的几何数据结束解码的位置。
作为一种可选的实现方式,当前点云片的几何数据的起始码可以为预设的特定位串。作为另一种可选的实现方式,当前点云片的几何数据的起始码可以为当前点云片的上一点云片的结束码。例如,如图4所示,当前点云片的几何数据为点云片2的几何数据,当前点云片的几何数据的起始码可以是点云片2的上一点云片(即点云片1)的结束码(即图4中点云片1的结束码)。
④点云片中还可包括点云帧的一组或多组属性数。若数据单元包括点云片的属性数据,则当前点云帧的参数信息包括当前点云片的当前属性数据的起始码和结束码,其中,当前点云片的当前属性数据是指当前点云片中正在被解码的属性数据。上述当前点云片的当前属性数据的起始码用于指示当前点云片的当前属性数据开始解码的位置,当前点云片的当前属性数据的结束码用于指示当前点云片的当前属性数据结束解码的位置。
作为一种可选的方式,当前点云片的当前属性数据的起始码可以为预设的特定位串。作为另一种可选的方式,当前点云片的当前属性数据的起始码可以为当前点云片中当前属性数据的上一属性数据的结束码。例如,如图4所示,若当前点云片为点云片1,当前点云片的当前属性数据为点云片1中的属性数据2,那么上一属性数据可以为点云片1中的属性数据1;相应的,当前点云片的当前属性数据的起始码为点云片1中的属性数据1的结束码。
作为再一种可选的方式,当前点云片的当前属性数据的起始码可以为当前点云片的几何数据的结束码。例如,如图4所示,若当前点云片为点云片1,当前点云片的当前属性数据为点云片1中的属性数据1,那么当前点云片的当前属性数据的起始码为点云片1中几何数据的结束码。
应理解的是,在符合本码流的位流中,上述①-④中除起始码外的任何情况下都不应该出现上述预设的特定位串。上述起始码是由起始码前缀和起始码值构成的特定位串,所有的起始码都应字节对齐。其中,起始码前缀可以是位串‘0000 0000 0000 0000 00000001’,起始码值是一个8位整数,用来表示起始码的类型,例如,点云片的起始码可以是0000 0000 0000 0000 0000 000100;又例如,点云片的几何数据起始码可以是0000 00000000 0000 0000 000180。起始码值可表17所示:
表17起始码值
起始码类型 | 起始码值(十六进制) |
点云片起始码(slice_start_code) | 00~7F |
点云片的几何数据起始码 | 80~87 |
点云片的属性数据起始码 | 88~8E |
点云片结束码(slice_end_code) | 8F |
保留 | 90~AF |
点云序列起始码(sequence_start_code) | B0 |
点云序列结束码(sequence_end_code) | B1 |
点云帧起始码(frame_start_code) | B2 |
点云帧结束码(frame_end_code) | B3 |
点云片的几何数据结束码 | B4 |
点云片的属性数据结束码 | B5 |
保留 | B6~FF |
可选地,当前点云片的当前属性数据的起始码可以用于指示当前点云片的当前属性数据的类型。例如,当前点云片的当前属性数据的起始码88,用于指示当前点云片的当前属性数据的类型为颜色;当前点云片的当前属性数据的起始码89,用于指示当前点云片片的当前属性数据的类型为反射率;当前点云片的当前属性数据的起始码8A,用于指示当前点云片的当前属性数据的类型为开启跨属性预测的颜色;当前点云片的当前属性数据的起始码8B,用于指示当前点云片的当前属性数据的类型为开启跨属性预测的反射率。
S302、根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体。
其中,一个点云帧包括一个或多个数单元,根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体可以包括:从点云码流中确定需要解码的目标点云帧;按照目标点云帧的参数信息,在目标点云帧中定位需要解码的数据单元;对目标点云帧中需要解码的数据单元进行解码呈现。具体的,该目标点云帧的参数信息包括帧内数据单元的起始码和结束码,根据帧内数据单元的起始码和结束码可以快速定位需要解码的数据单元从而可以实现部分解码。
在一个实施例中,目标点云帧的参数信息用于指示时间戳信息和帧序号,可以根据帧序号从点云码流中确定需要解码的目标点云帧,并根据该目标点云帧的参数信息所指示的时间戳信息对目标点云帧进行解码处理,从而实现在合适的时间按照顺序进行解码呈现点云媒体。
在一个实施例中,目标点云帧的参数信息用于指示目标点云帧是否包含参数集合,根据该目标点云帧的参数信息获取相应的参数集合,然后根据该参数集合对目标点云帧进行解码,通过灵活指示数集合可有效保障对点云帧进行正确解码,同时也可减少参数集合较为固定时每个点云帧中均携带几何头参数集合和属性头参数集合对解码侧造成不必要的负担。
在本申请实施例中,获取点云媒体的点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息;根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体,能够灵活组织点云码流中的参数信息,指导点云媒体的解码及呈现,从而优化解码端的资源的开销。
请参阅图5,图5为本申请实施例提供的另一种点云媒体的数据处理方法的流程示意图,该点云媒体的数据处理方法可由上述点云媒体的数据处理系统中的内容制作设备201执行。本实施例中所描述的点云媒体的数据处理方法,可以包括以下步骤S501-S503:
S501、获取点云媒体。
其中,步骤S501的具体实现方式可参见上述相应部分描述,在此不再赘述。
S502、对点云媒体进行编码处理,得到点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息。
在对点云媒体进行编码处理时,各点云帧的参数信息可以分别设置于各点云帧的帧头,点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息。接下来以当前点云帧为例阐述参数信息所指示的信息,当前点云帧是指正在被编码的点云帧。
(1)点云帧的参数信息用于指示帧序号。
点云码流中的一个或多个点云帧按序构成点云序列,当前点云帧的参数信息包括帧序号字段,帧序号字段指示当前点云帧在点云序列中的序号。
(2)点云帧的参数信息用于指示帧时间戳信息。
当前点云帧的参数信息包括以下至少一个字段:时间戳标志字段、时间戳数量字段、时间戳类型字段和时间戳字段。
时间戳标志字段用于指示当前点云帧是否包含时间戳。当当前点云帧不包含时间戳时,将时间戳标志字段设置为第一预设值(如0);当当前点云帧包含时间戳时,将时间戳标志字段设置为第二预设值(如1)。
时间戳数量字段用于指示当前点云帧包含的时间戳数量。
时间戳类型字段用于指示当前时间戳的类型。若当前时间戳的类型为编码时间,则将时间戳类型字段设置为第一预设值(如0);若当前时间戳的类型为呈现时间,则将时间戳类型字段为第二预设值(如1);若当前时间戳的类型为采集时间,则将时间戳类型字段为第三预设值(如2)。
时间戳字段用于指示当前点云帧的采集时间、呈现时间和编码时间中的任意一种或多种。作为一种实现方式,时间戳字段用于指示世界协调时间(Universal TimeCoordinated,UTC时间)。作为另一种实现方式,时间戳字段按照预设格式进行指示,该预设格式包括以下至少一个字段:年时间戳字段、小时时间戳字段、秒时间戳字段、帧时间戳字段。当前时间戳是指当前点云帧正在使用的时间戳。
(3)点云帧的参数信息用于指示帧空间信息。
当前点云帧的参数信息包括空间信息标志字段;空间信息标志字段表示是否指示当前点云帧的空间信息。当空间信息标志字段指示当前点云帧的空间信息时,将空间信息标志字段设置为第一取值(如1);当空间信息标志字段不指示当前点云帧的空间信息时,将空间信息标志字段设置为第二取值(如0)。其中,空间信息包括以下至少一种:当前点云帧的包围盒原点的坐标信息,当前点云帧的包围盒宽度信息,当前点云帧的包围盒深度信息。
(4)点云帧的参数信息用于指示帧内数据单元的信息。
一个点云帧包含一个或多个数据单元,该数据单元包括点云片;当前点云帧的参数信息包括点云片数量字段或点云片数量减一字段;其中,点云片数量字段用于指示当前点云帧包含的点云片数量;该点云片数量减一字段用于间接指示当前点云帧包含的点云片数量。
(5)点云帧的参数信息用于指示帧内数据单元的起始码和结束码。数据单元可包括点云帧本身、点云片、点云片的几何数据、点云片的属性数据等等。点云片的几何数据是指点云片包含的几何数据,点云片的属性数据可理解为点云片的属性数据。
①若该数据单元包括点云帧,则当前点云帧的参数信息可以包括当前点云帧的起始码和结束码;当前点云帧是指点云码流中正在被编码的点云帧;其中,当前点云帧的起始码为预设的特定位串,或者当前点云帧的起始码为当前点云帧的上一点云帧的结束码;其中,当前点云帧的起始码用于指示当前点云帧开始编码的位置,当前点云帧的结束码用于指示当前点云帧结束编码的位置。
②若数据单元包括点云片,则当前点云帧的参数信息包括当前点云帧中的当前点云片的起始码和结束码,当前点云片是指点云码流中正在被编码的点云片。其中,当前点云片的起始码为预设的特定位串,或者当前点云片的起始码为当前点云片的上一点云片的结束码;当前点云片的起始码用于指示当前点云片开始编码的位置,当前点云片的结束码用于指示当前点云片结束编码的位置。
③若数据单元包括点云片的几何数据,则当前点云帧的参数信息包括当前点云片的几何数据的起始码和结束码,当前点云片的几何数据是指当前点云片正在被编码的几何数据。当前点云片的几何数据的起始码用于指示当前点云片的几何数据开始编码的位置,当前点云片的几何数据的结束码用于指示当前点云片的几何数据结束编码的位置。
作为一种可选的实现方式,当前点云片的几何数据的起始码可以为预设的特定位串。作为另一种可选的实现方式,当前点云片的几何数据的起始码可以为当前点云片的上一点云片的结束码。
④点云片中可包含一组或多组属性数据。若数据单元包括点云片的属性数据,则当前点云帧的参数信息包括当前点云片的属性数据的起始码和结束码,当前点云片的属性数据是指点前点云片中正在被编码的属性数据。当前点云片的当前属性数据的起始码用于指示当前点云片的当前属性数据开始编码的位置,当前点云片的当前属性数据的结束码用于指示当前点云片的当前属性数据结束编码的位置。
作为一种可选的实现方式,当前点云片的当前属性数据的起始码为预设的特定位串。作为另一种可选的实现方式,当前点云片的当前属性数据的起始码为当前点云片中当前属性数据的上一属性数据的结束码。作为再一种可选的实现方式,当前点云片的当前属性数据的起始码为当前点云片的几何数据的结束码。
在一个实施例中,当前点云片的当前属性数据的起始码还用于指示当前点云片的当前属性数据的类型。
(6)点云帧的参数信息还用于指示点云帧内是否包含参数集合。
该参数集合可以包括以下任一种:几何头参数集合、属性头参数集合、几何头参数集合和属性头参数集合。当前点云帧的参数信息可以包括以下任一个字段:几何头标志字段、属性头标志字段和属性数量减一字段。
几何头标志字段用于指示当前点云帧是否包含几何头参数集合。若当前点云帧包含几何头参数集合,则将几何头标志字段设置为第一预设值(如1);若当前点云帧不包含几何头参数集合,则将几何头标志字段为第二预设值(如0)。
在一个实施例中,当当前点云帧为点云序列中的第一帧时,将该几何头标识字段设置为第一预设值。在另一个实施例中,当当前点云帧并非点云序列中的第一帧,且点云序列中的几何头参数集合发生更新时,则将几何头标志字段设置为第一预设值。再一个实施例中,当当前点云帧并非点云序列中的第一帧,且点云序列中的几何头参数集合未发生更新时,则将几何头标志字段设置为第二预设值。
属性头字段用于指示当前点云帧是否包含属性头参数集合,若当前点云帧包含属性头参数集合,则将属性头标志字段设置为第一设定值(如1);若当前点云帧不包含属性头参数集合,则将属性头标志字段设置为第二设定值(如0)。
在一个实施例中,当当前点云帧为点云序列中的第一帧时,将该属性头标识字段设置为第一设定值。在另一个实施例中,当当前点云帧并非点云序列中的第一帧,且点云序列中的属性头参数集合发生更新时,则将属性头标志字段设置为第一设定值。再一个实施例中,当当前点云帧并非点云序列中的第一帧,且点云序列中的属性头参数集合未发生更新时,则将属性头标志字段设置为第二设定值。
属性数量减一字段用于指示当前点云帧包含的属性头参数集合对应的属性数据组的数量,当当前点云帧为点云序列中的第一帧时,将属性数量减一字段的取值设置为点云序列包含的属性数据组的最大数量。
在点云媒体中,一组属性数据对应一个属性头参数集合;一个点云帧可以包含一个或多个属性头参数集合,一个属性头参数集合可对应一组或多组属性数据。其中,对于属性头参数集合来说,由于不同的属性数据组会对应不同的属性头参数集合,属性头参数集合中的参数可能存在部分更新的情况,因此,针对这种情况本申请实施例可至少采用以下三种方式(即方式A、方式B和方式C)建立属性头参数集合和属性数据之间的对应关系:
方式A:当一个点云帧仅包含一个属性头参数集合时,即在点云帧内的属性头参数集合的数量仅为一个,此时,点云媒体中的属性数据组在编码时均参考该属性头参数集合。在点云媒体中,一组属性数据对应一个属性头参数集合,一个点云帧包含一个或多个属性头参数集合。当一个点云帧内仅包含一个属性头参数集合时,即该点云帧内的属性头参数集合的数量仅为一个,在该属性头参数集合包括属性存在标志字段,该属性存在标志字段用于指示当前属性头参数集合中是否包含第x组属性数据的编码参数,x为大于等于0且小于等于15的整数;若当前属性头参数集合中包含第x组属性数据的编码参数,则将属性存在标志字段设置为第一取值;若当前属性头参数集合中不包含第x组属性数据的编码参数,则将属性存在标志字段设置为第二取值。
方式B:当一个点云帧内仅包含一个属性头参数集合时,即该点云帧内的属性头参数集合的数量仅为一个,该属性头参数集合包括属性类型字段和属性数据标识符字段,通过属性类型字段和属性数据标识符字段表示属性头参数集合和属性数据之间的对应关系;属性数量减一字段用于指示当前点云帧包含的属性头参数集合对应的属性数据组的数量;其中,当当前点云帧为点云序列中的第一帧时,将属性数量减一字段的取值设置为点云序列包含的属性数据组的最大数量。
方式C:当一个点云帧存在多个属性头参数集合时,此时点云帧内包含numAttributesMinus1个属性头参数集合,可通过属性类型字段和属性数据标识符字段建立属性编码参数和属性数据之间的对应关系。任意一个属性头参数集合包括属性类型字段和属性数据标识符字段,通过属性类型字段和属性数据标识符字段来表示属性头参数集合和属性数据之间的对应关系。
S503、传输点云码流。
在本申请实施例中,获取点云媒体,并对点云媒体进行编码处理,得到点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息,传输点云码流,能够灵活组织点云码流中的参数信息,指导点云媒体的解码及呈现,优化解码端的资源的开销。
下面通过一个完整的例子对本申请提供的点云媒体的数据处理方法进行详细说明:
1.内容制作设备可以获取点云媒体,并对点云媒体进行编码处理,得到点云码流,该点云码流中包括一个或多个点云帧,对于点云码流中的各点云帧:
1)定义帧级别的参数信息,包括帧号、帧时间戳、帧空间信息、帧内数据单元的信息;2)在帧级别的参数信息中指示当前帧内是否包含几何头或者属性头参数集合;3)对点云帧内的数据单元添加相应的起始码和结束码。例如,假设点云码流中各个点云帧的参数信息如下:
Frame1:frameIdx=1;numSlice=2;timestampFlag=1;numTimestamp=1;timestampType=2;Timestamp=2022-09-05T16:24:05.023Z;spatialInfoFlag=0;geo_header_flag=1;attr_header_flag=1;numAttributesMinus1=1。
其中,frameIdx=1表示点云帧1在点云序列中的序号为1(即为点云序列中的第一帧),numSlice=2表示点云帧1包含2个点云片,timestampFlag=1表示点云帧1包含时间戳,numTimestamp=1表示点云帧1包含的时间戳的数量为1,timestampType=2表示点云帧1包含的时间戳为采样时间,该采样时间为2022-09-05T16:24:05.023Z;spatialInfoFlag=0表示不指示点云帧1的空间信息;geo_header_flag=1表示点云帧1内包含几何头参数集合;attr_header_flag=1表示点云帧1内包含属性头参数集合,numAttributesMinus1=1表示点云序列包含的属性数据组的最大数量为1。
Frame2~Frame99:frameIdx取值对应为2~99,numSlice=2;timestampFlag=1;numTimestamp=1;timestampType=2;Timestamp为对应UTC时间;spatialInfoFlag=0;geo_header_flag=0;attr_header_flag=0。
其中,点云帧2~点云帧99(即Frame2~Frame99)在点云序列中的序号依次2~99。针对点云帧2~点云帧99中的任意一个点云帧:numSlice=2表示该点云帧包含2个点云片,timestampFlag=1表示点云帧包含时间戳,numTimestamp=1表示点云帧包含的时间戳的数量为1,spatialInfoFlag=0表示不指示点云帧的空间信息;geo_header_flag=0表示点云帧内不包含几何头参数集合;attr_header_flag=0表示点云帧内不包含属性头参数集合,此时,在解码Frame2~Frame99中的任一点云帧时,可获取点云帧1(Frame1)内的几何头参数集合或者属性头参数集合。
Frame100:frameIdx=100;numSlice=2;timestampFlag=1;numTimestamp=1;timestampType=2;Timestamp为对应UTC时间;spatialInfoFlag=0;geo_header_flag=1;attr_header_flag=1;numAttributesMinus1=0。
其中,frameIdx=100表示点云帧100在点云序列中的序号为100,numSlice=2表示点云帧100包含2个点云片,timestampFlag=1表示点云帧100包含时间戳,numTimestamp=1表示点云帧100包含的时间戳的数量为1,timestampType=2表示点云帧100包含的时间戳为采样时间;spatialInfoFlag=0表示不指示点云帧100的空间信息;geo_header_flag=1表示点云帧100内包含几何头参数集合;attr_header_flag=1表示点云帧100内包含属性头参数集合,numAttributesMinus1=0表示点云帧100包含的属性头参数集合对应的属性数据组的数量,即点云帧100内包含的属性头参数集合对应的属性数据组的数量为1。此时,点云序列中的属性头参数集合和几何头参数集合发生更新。
Frame101~Frame200:frameIdx取值对应为101~200,numSlice=2;timestampFlag=1;numTimestamp=1;timestampType=2;Timestamp为对应UTC时间;spatialInfoFlag=0;geo_header_flag=0;attr_header_flag=0。
其中,点云帧101~点云帧200(即Frame101~Frame200)在点云序列中的序号依次101~200。针对点云帧101~点云帧200中的任意一个点云帧:numSlice=2表示该点云帧包含2个点云片,timestampFlag=1表示点云帧包含时间戳,numTimestamp=1表示点云帧包含的时间戳的数量为1,spatialInfoFlag=0表示不指示点云帧的空间信息;geo_header_flag=0表示点云帧内不包含几何头参数集合;attr_header_flag=0表示点云帧内不包含属性头参数集合,此时,在解码Frame101~Frame200中的任一点云帧时,可获取点云帧100(Frame100)内的几何头参数集合或者属性头参数集合(即使用更新后的几何头参数集合和属性头参数集合)。
2.内容制作设备可将点云码流传输给媒体处理设备。
3.媒体处理设备在对点云码流进行解码时:①可根据frame1中指示的几何头参数集合和属性头参数集合来正确解码点云帧1-点云帧99的几何数据和属性数据。然后frame1中包含的几何头参数集合和属性头参数集合一直生效直至frame100更新了几何头参数集合以及一组属性数据的属性参数集合,然后可根据frame100中更新后的几何头参数集合和更新后的一组属性数据的属性参数集合来正确解码点云帧100~点云帧200。
②可从点云码流中获取各点云帧的参数信息所指示的时间戳信息,然后根据每个点云帧frame中携带的时间戳信息获得每一个点云帧的采集时间,并根据每个点云帧的采样时间可以在合适的时间显示每个点云帧,通过每个点云帧的采样时间可以在如自动驾驶场景中实时更新点云地图。
③各点云帧的参数信息可以指示帧内数据单元的起始码和结束码,媒体处理设备可根据各点云帧的参数信息所指示的帧内数据单元的起始码和结束码快速定位所需的数据单元,从而达到部分解码的目的。例如,在每一个点云帧中,存在2个点云片,点云帧的参数信息可指示每个点云片的起始码和结束码。当只需要消费一个点云片对应的空间区域时,可根据各个点云帧的参数信息所指示的点云片的起始码和结束码选择相应的点云片进行部分解码,如点云片的起始码00~7F来选择相应的点云片进行部分解码。又例如,当数据单元包括点云片的属性数据时,该点云片的属性数据的起始码为88,该点云片的属性数据的起始码88用于指示该点云片的属性数据的类型为颜色。当只需要呈现颜色属性数据时,则可以根据点云片的属性数据的起始码88来选择颜色属性数据进行部分解码。
在本申请实施例中,内容制作设备可以获取点云媒体,并对点云媒体进行编码处理,得到点云码流;并对点云码流进行封装,得到点云媒体的媒体文件;然后媒体处理设备可以获取媒体文件,并对媒体文件进行解码处理,得到点云码流,可灵活组织点云码流中的各点云帧的参数信息,指导点云媒体的传输、解码及呈现,实现解码端部分解码,从而优化解码端资源开销。
请参见图6,图6是本申请实施例提供的一种点云媒体的数据处理装置的结构示意图,该点云媒体的数据处理装置可以设置于本申请实施例提供的计算机设备中,计算机设备可以是上述方法实施例中提及的媒体处理设备。图6所示的点云媒体的数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),该点云媒体的数据处理装置可以用于执行图3所示的方法实施例中的部分或全部步骤。请参见图6,该点云媒体的数据处理装置可以包括如下单元:
获取单元601,用于获取点云媒体的点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息;其中,点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
处理单元602,用于根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体。
在一个实施例中,点云帧的参数信息用于指示帧序号;点云码流中的一个或多个点云帧按序构成点云序列;
当前点云帧的参数信息包括帧序号字段,帧序号字段用于指示当前点云帧在点云序列中的序号;
其中,当前点云帧是指点云码流中正在解码的点云帧。
在一个实施例中,点云帧的参数信息用于指示帧时间戳信息;当前点云帧的参数信息包括以下至少一个字段:时间戳标志字段、时间戳数量字段、时间戳类型字段和时间戳字段;
时间戳标志字段用于指示当前点云帧是否包含时间戳,当时间戳标志字段为第一预设值时,指示当前点云帧不包含时间戳;当时间戳标志字段为第二预设值时,指示当前点云帧包含时间戳;
时间戳数量字段用于指示当前点云帧包含的时间戳数量;
时间戳类型字段用于指示当前时间戳的类型,若时间戳类型字段为第一预设值,则指示当前时间戳的类型为解码时间;若时间戳类型字段为第二预设值,则指示当前时间戳的类型为呈现时间;若时间戳类型字段为第三预设值,则指示当前时间戳的类型为采集时间;
时间戳字段用于指示当前点云帧的采集时间、呈现时间和解码时间中的任意一种或多种;时间戳字段用于指示世界协调时间,或者时间戳字段按照预设格式进行指示,预设格式包括以下至少一个字段:年时间戳字段、小时时间戳字段、秒时间戳字段、帧时间戳字段;
其中,当前点云帧是指点云码流中正在解码的点云帧,当前时间戳是指当前点云帧正在使用的时间戳。
在一个实施例中,点云帧的参数信息用于指示帧空间信息;当前点云帧的参数信息包括空间信息标志字段;
空间信息标志字段表示是否指示当前点云帧的空间信息,当空间信息标志字段为第一取值时,指示当前点云帧的空间信息;当空间信息标志字段为第二取值时,不指示当前点云帧的空间信息;
空间信息包括以下至少一种:当前点云帧的包围盒原点的坐标信息,当前点云帧的包围盒宽度信息,当前点云帧的包围盒深度信息。
在一个实施例中,点云帧的参数信息用于指示帧内数据单元的信息;一个点云帧包含一个或多个数据单元,数据单元包括点云片;当前点云帧的参数信息包括点云片数量字段或点云片数量减一字段;
点云片数量字段用于指示当前点云帧包含的点云片数量;
点云片数量减一字段用于间接指示当前点云帧包含的点云片数量;
其中,当前点云帧是指点云码流中正在解码的点云帧。
在一个实施例中,点云帧的参数信息还用于指示点云帧内是否包含参数集合,参数集合包括以下任一种:几何头参数集合、属性头参数集合、几何头参数集合和属性头参数集合;
当前点云帧的参数信息包括以下任一个字段:几何头标志字段、属性头标志字段和属性数量减一字段;
几何头标志字段用于指示当前点云帧是否包含几何头参数集合;若几何头标志字段为第一预设值,则指示当前点云帧包含几何头参数集合;若几何头标志字段为第二预设值,则指示当前点云帧不包含几何头参数集合;
属性头标志字段用于指示当前点云帧是否包含属性头参数集合,若属性头标志字段为第一设定值,则指示当前点云帧包含属性头参数集合;若属性头标志字段为第二设定值,则指示当前点云帧不包含属性头参数集合;
属性数量减一字段用于指示当前点云帧包含的属性头参数集合对应的属性数据组的数量。
在一个实施例中,点云码流中的一个或多个点云帧按序构成点云序列;
当当前点云帧为点云序列中的第一帧时,几何头标志字段被设置为第一预设值,属性头标志字段被设置为第一设定值;属性数量减一字段的取值为点云序列包含的属性数据组的最大数量;
当当前点云帧并非点云序列中的第一帧时,若几何头标志字段被设置为第一预设值,则指示点云序列中的几何头参数集合发生更新;
当当前点云帧并非点云序列中的第一帧时,若属性头标志字段被设置为第一设定值,则指示点云序列中的属性头参数集合发生更新。
在一个实施例中,在点云媒体中,一组属性数据对应一个属性头参数集合;
属性头参数集合包括属性存在标志字段,属性存在标志字段用于指示当前属性头参数集合中是否包含第x组属性数据的编码参数,x为大于等于0且小于等于15的整数;
若属性存在标志字段为第一取值,则指示当前属性头参数集合中包含第x组属性数据的编码参数;
若属性存在标志字段为第二取值,则指示当前属性头参数集合中不包含第x组属性数据的编码参数。
在一个实施例中,属性头参数集合包括属性类型字段和属性数据标识符字段,通过属性类型字段和属性数据标识符字段来表示属性头参数集合和属性数据之间的对应关系。
在一个实施例中,点云帧的参数信息用于指示帧内数据单元的信息;
若数据单元包括点云帧,则当前点云帧的参数信息包括当前点云帧的起始码和结束码;当前点云帧是指点云码流中正在被解码的点云帧;
若数据单元包括点云片,则当前点云帧的参数信息包括当前点云帧中的当前点云片的起始码和结束码,当前点云片是指点云码流中正在被解码的点云片;
若数据单元包括点云片的几何数据,则当前点云帧的参数信息包括当前点云片的几何数据的起始码和结束码;
若数据单元包括点云片的属性数据,则当前点云帧的参数信息包括当前点云片的当前属性数据的起始码和结束码,当前点云片的当前属性数据是指当前点云片中正在被解码的属性数据。
在一个实施例中,当前点云帧的起始码为预设的特定位串,或者当前点云帧的起始码为当前点云帧的上一点云帧的结束码;当前点云帧的起始码用于指示当前点云帧开始解码的位置,当前点云帧的结束码用于指示当前点云帧结束解码的位置;
当前点云片的起始码为预设的特定位串,或者当前点云片的起始码为当前点云片的上一点云片的结束码;当前点云片的起始码用于指示当前点云片开始解码的位置,当前点云片的结束码用于指示当前点云片结束解码的位置;
当前点云片的几何数据的起始码为预设的特定位串,或者,当前点云片的几何数据的起始码为当前点云片的上一点云片的结束码;当前点云片的几何数据的起始码用于指示当前点云片的几何数据开始解码的位置,当前点云片的几何数据的结束码用于指示当前点云片的几何数据结束解码的位置;
当前点云片的当前属性数据的起始码为预设的特定位串,或者当前点云片的当前属性数据的起始码为当前点云片的几何数据的结束码,或者,当前点云片的当前属性数据的起始码为当前点云片中当前属性数据的上一属性数据的结束码;当前点云片的当前属性数据的起始码用于指示当前点云片的当前属性数据开始解码的位置,当前点云片的当前属性数据的结束码用于指示当前点云片的当前属性数据结束解码的位置。
在一个实施例中,当前点云片的当前属性数据的起始码还用于指示当前点云片的当前属性数据的类型。
在一个实施例中,所述各点云帧的参数信息分别设置于各点云帧的帧头;一个点云帧包括一个或多个数据单元,处理单元602在根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体时,可具体用于:
从点云码流中确定需要解码的目标点云帧;
按照目标点云帧的参数信息,在目标点云帧中定位需要解码的数据单元;
对目标点云帧中需要解码的数据单元进行解码呈现。
在本申请实施例中,获取点云媒体的点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息;根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体,能够灵活组织点云码流中的参数信息,指导点云媒体的解码及呈现,从而优化解码端的资源的开销。
请参见图7,图7是本申请实施例提供的一种点云媒体的数据处理装置的结构示意图,该点云媒体的数据处理装置可以设置于本申请实施例提供的计算机设备中,计算机设备可以是上述方法实施例中提及的内容制作设备。图7所示的点云媒体的数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),该点云媒体的数据处理装置可以用于执行图5所示的方法实施例中的部分或全部步骤。请参见图7,该点云媒体的数据处理装置可以包括如下单元:
获取单元701,用于获取点云媒体;
处理单元702,用于对点云媒体进行编码处理,得到点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息,其中,所述点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
处理单元702,还用于传输点云码流。
在一个实施例中,各点云帧的参数信息分别设置于各点云帧的帧头;点云帧的参数信息还用于指示点云帧内是否包含参数集合,参数集合包括以下任一种:几何头参数集合、属性头参数集合、几何头参数集合和属性头参数集合。
在一个实施例中,点云帧的参数信息用于指示帧内数据单元的信息;
若数据单元包括点云帧,则当前点云帧的参数信息包括当前点云帧的起始码和结束码;当前点云帧是指点云码流中正在被编码的点云帧;
若数据单元包括点云片,则当前点云帧的参数信息包括当前点云帧中的当前点云片的起始码和结束码,当前点云片是指点云码流中正在被编码的点云片;
若数据单元包括点云片的几何数据,则当前点云帧的参数信息包括当前点云片的几何数据的起始码和结束码;
若数据单元包括点云片的属性数据,则当前点云帧的参数信息包括当前点云片的当前属性数据的起始码和结束码,当前点云片的当前属性数据是指当前点云片中正在被编码的属性数据。
在本申请实施例中,获取点云媒体,并对点云媒体进行编码处理,得到点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息,传输点云码流,能够灵活组织点云码流中的参数信息,指导点云媒体的解码及呈现,优化解码端的资源的开销。
进一步地,本申请实施例还提供了一种计算机设备的结构示意图,该计算机设备的结构示意图可参见图8;该计算机设备可以是上述媒体处理设备或者内容制作设备;该计算机设备可以包括:处理器801、输入设备802,输出设备803和存储器804。上述处理器801、输入设备802、输出设备803和存储器804通过总线连接。存储器804用于存储计算机程序,计算机程序包括程序指令,处理器801用于执行存储器804存储的程序指令。
当计算机设备为上述媒体处理设备时,在本申请实施例中,处理器801通过运行存储器804中的可执行程序代码,执行如下操作:
获取点云媒体的点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息;其中,点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体。
在一个实施例中,点云帧的参数信息用于指示帧序号;点云码流中的一个或多个点云帧按序构成点云序列;
当前点云帧的参数信息包括帧序号字段,帧序号字段用于指示当前点云帧在点云序列中的序号;
其中,当前点云帧是指点云码流中正在解码的点云帧。
在一个实施例中,点云帧的参数信息用于指示帧时间戳信息;当前点云帧的参数信息包括以下至少一个字段:时间戳标志字段、时间戳数量字段、时间戳类型字段和时间戳字段;
时间戳标志字段用于指示当前点云帧是否包含时间戳,当时间戳标志字段为第一预设值时,指示当前点云帧不包含时间戳;当时间戳标志字段为第二预设值时,指示当前点云帧包含时间戳;
时间戳数量字段用于指示当前点云帧包含的时间戳数量;
时间戳类型字段用于指示当前时间戳的类型,若时间戳类型字段为第一预设值,则指示当前时间戳的类型为解码时间;若时间戳类型字段为第二预设值,则指示当前时间戳的类型为呈现时间;若时间戳类型字段为第三预设值,则指示当前时间戳的类型为采集时间;
时间戳字段用于指示当前点云帧的采集时间、呈现时间和解码时间中的任意一种或多种;时间戳字段用于指示世界协调时间,或者时间戳字段按照预设格式进行指示,预设格式包括以下至少一个字段:年时间戳字段、小时时间戳字段、秒时间戳字段、帧时间戳字段;
其中,当前点云帧是指点云码流中正在解码的点云帧,当前时间戳是指当前点云帧正在使用的时间戳。
在一个实施例中,点云帧的参数信息用于指示帧空间信息;当前点云帧的参数信息包括空间信息标志字段;
空间信息标志字段表示是否指示当前点云帧的空间信息,当空间信息标志字段为第一取值时,指示当前点云帧的空间信息;当空间信息标志字段为第二取值时,不指示当前点云帧的空间信息;
空间信息包括以下至少一种:当前点云帧的包围盒原点的坐标信息,当前点云帧的包围盒宽度信息,当前点云帧的包围盒深度信息。
在一个实施例中,点云帧的参数信息用于指示帧内数据单元的信息;一个点云帧包含一个或多个数据单元,数据单元包括点云片;当前点云帧的参数信息包括点云片数量字段或点云片数量减一字段;
点云片数量字段用于指示当前点云帧包含的点云片数量;
点云片数量减一字段用于间接指示当前点云帧包含的点云片数量;
其中,当前点云帧是指点云码流中正在解码的点云帧。
在一个实施例中,点云帧的参数信息还用于指示点云帧内是否包含参数集合,参数集合包括以下任一种:几何头参数集合、属性头参数集合、几何头参数集合和属性头参数集合;
当前点云帧的参数信息包括以下任一个字段:几何头标志字段、属性头标志字段和属性数量减一字段;
几何头标志字段用于指示当前点云帧是否包含几何头参数集合;若几何头标志字段为第一预设值,则指示当前点云帧包含几何头参数集合;若几何头标志字段为第二预设值,则指示当前点云帧不包含几何头参数集合;
属性头标志字段用于指示当前点云帧是否包含属性头参数集合,若属性头标志字段为第一设定值,则指示当前点云帧包含属性头参数集合;若属性头标志字段为第二设定值,则指示当前点云帧不包含属性头参数集合;
属性数量减一字段用于指示当前点云帧包含的属性头参数集合对应的属性数据组的数量。
在一个实施例中,点云码流中的一个或多个点云帧按序构成点云序列;
当当前点云帧为点云序列中的第一帧时,几何头标志字段被设置为第一预设值,属性头标志字段被设置为第一设定值;属性数量减一字段的取值为点云序列包含的属性数据组的最大数量;
当当前点云帧并非点云序列中的第一帧时,若几何头标志字段被设置为第一预设值,则指示点云序列中的几何头参数集合发生更新;
当当前点云帧并非点云序列中的第一帧时,若属性头标志字段被设置为第一设定值,则指示点云序列中的属性头参数集合发生更新。
在一个实施例中,在点云媒体中,一组属性数据对应一个属性头参数集合;
属性头参数集合包括属性存在标志字段,属性存在标志字段用于指示当前属性头参数集合中是否包含第x组属性数据的编码参数,x为大于等于0且小于等于15的整数;
若属性存在标志字段为第一取值,则指示当前属性头参数集合中包含第x组属性数据的编码参数;
若属性存在标志字段为第二取值,则指示当前属性头参数集合中不包含第x组属性数据的编码参数。
在一个实施例中,属性头参数集合包括属性类型字段和属性数据标识符字段,通过属性类型字段和属性数据标识符字段来表示属性头参数集合和属性数据之间的对应关系。
在一个实施例中,点云帧的参数信息用于指示帧内数据单元的信息;
若数据单元包括点云帧,则当前点云帧的参数信息包括当前点云帧的起始码和结束码;当前点云帧是指点云码流中正在被解码的点云帧;
若数据单元包括点云片,则当前点云帧的参数信息包括当前点云帧中的当前点云片的起始码和结束码,当前点云片是指点云码流中正在被解码的点云片;
若数据单元包括点云片的几何数据,则当前点云帧的参数信息包括当前点云片的几何数据的起始码和结束码;
若数据单元包括点云片的属性数据,则当前点云帧的参数信息包括当前点云片的当前属性数据的起始码和结束码,当前点云片的当前属性数据是指当前点云片中正在被解码的属性数据。
在一个实施例中,当前点云帧的起始码为预设的特定位串,或者当前点云帧的起始码为当前点云帧的上一点云帧的结束码;当前点云帧的起始码用于指示当前点云帧开始解码的位置,当前点云帧的结束码用于指示当前点云帧结束解码的位置;
当前点云片的起始码为预设的特定位串,或者当前点云片的起始码为当前点云片的上一点云片的结束码;当前点云片的起始码用于指示当前点云片开始解码的位置,当前点云片的结束码用于指示当前点云片结束解码的位置;
当前点云片的几何数据的起始码为预设的特定位串,或者,当前点云片的几何数据的起始码为当前点云片的上一点云片的结束码;当前点云片的几何数据的起始码用于指示当前点云片的几何数据开始解码的位置,当前点云片的几何数据的结束码用于指示当前点云片的几何数据结束解码的位置;
当前点云片的当前属性数据的起始码为预设的特定位串,或者当前点云片的当前属性数据的起始码为当前点云片的几何数据的结束码,或者,当前点云片的当前属性数据的起始码为当前点云片中当前属性数据的上一属性数据的结束码;当前点云片的当前属性数据的起始码用于指示当前点云片的当前属性数据开始解码的位置,当前点云片的当前属性数据的结束码用于指示当前点云片的当前属性数据结束解码的位置。
在一个实施例中,当前点云片的当前属性数据的起始码还用于指示当前点云片的当前属性数据的类型。
在一个实施例中,所述各点云帧的参数信息分别设置于各点云帧的帧头;一个点云帧包括一个或多个数据单元,处理器801在根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体时,可具体用于:
从点云码流中确定需要解码的目标点云帧;
按照目标点云帧的参数信息,在目标点云帧中定位需要解码的数据单元;
对目标点云帧中需要解码的数据单元进行解码呈现。
在本申请实施例中,获取点云媒体的点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息;根据各点云帧的参数信息,对点云码流进行解码处理以呈现点云媒体,能够灵活组织点云码流中的参数信息,指导点云媒体的解码及呈现,从而优化解码端的资源的开销。
可选地,当计算机设备为上述内容制作设备时,在本申请实施例中,处理器801通过运行存储器804中的可执行程序代码,执行如下操作:
获取点云媒体;
对点云媒体进行编码处理,得到点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息,其中,所述点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
传输点云码流。
在一个实施例中,各点云帧的参数信息分别设置于各点云帧的帧头;
点云帧的参数信息还用于指示点云帧内是否包含参数集合,参数集合包括以下任一种:几何头参数集合、属性头参数集合、几何头参数集合和属性头参数集合。
在一个实施例中,点云帧的参数信息用于指示帧内数据单元的信息;
若数据单元包括点云帧,则当前点云帧的参数信息包括当前点云帧的起始码和结束码;当前点云帧是指点云码流中正在被编码的点云帧;
若数据单元包括点云片,则当前点云帧的参数信息包括当前点云帧中的当前点云片的起始码和结束码,当前点云片是指点云码流中正在被编码的点云片;
若数据单元包括点云片的几何数据,则当前点云帧的参数信息包括当前点云片的几何数据的起始码和结束码;
若数据单元包括点云片的属性数据,则当前点云帧的参数信息包括当前点云片的当前属性数据的起始码和结束码,当前点云片的当前属性数据是指当前点云片中正在被编码的属性数据。
在本申请实施例中,获取点云媒体,并对点云媒体进行编码处理,得到点云码流,点云码流包含一个或多个点云帧,以及各点云帧的参数信息,传输点云码流,能够灵活组织点云码流中的参数信息,指导点云媒体的解码及呈现,优化解码端的资源的开销。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有计算机程序,且该计算机程序包括程序指令,当处理器执行上述程序指令时,能够执行前文图3和图5所对应实施例中的方法,因此,这里将不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可以被部署在一个计算机设备上,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备可以执行前文图3和图5所对应实施例中的方法,因此,这里将不再进行赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本申请权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (20)
1.一种点云媒体的数据处理方法,其特征在于,包括:
获取点云媒体的点云码流,所述点云码流包含一个或多个点云帧,以及各点云帧的参数信息;其中,点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
根据所述各点云帧的参数信息,对所述点云码流进行解码处理以呈现所述点云媒体。
2.如权利要求1所述的方法,其特征在于,点云帧的参数信息用于指示帧序号;所述点云码流中的一个或多个点云帧按序构成点云序列;
当前点云帧的参数信息包括帧序号字段,所述帧序号字段用于指示所述当前点云帧在所述点云序列中的序号;
其中,所述当前点云帧是指所述点云码流中正在解码的点云帧。
3.如权利要求1所述的方法,其特征在于,点云帧的参数信息用于指示帧时间戳信息;当前点云帧的参数信息包括以下至少一个字段:时间戳标志字段、时间戳数量字段、时间戳类型字段和时间戳字段;
所述时间戳标志字段用于指示所述当前点云帧是否包含时间戳,当所述时间戳标志字段为第一预设值时,指示所述当前点云帧不包含时间戳;当所述时间戳标志字段为第二预设值时,指示所述当前点云帧包含时间戳;
所述时间戳数量字段用于指示所述当前点云帧包含的时间戳数量;
所述时间戳类型字段用于指示当前时间戳的类型,若所述时间戳类型字段为第一预设值,则指示所述当前时间戳的类型为解码时间;若所述时间戳类型字段为第二预设值,则指示所述当前时间戳的类型为呈现时间;若所述时间戳类型字段为第三预设值,则指示所述当前时间戳的类型为采集时间;
所述时间戳字段用于指示所述当前点云帧的采集时间、呈现时间和解码时间中的任意一种或多种;所述时间戳字段用于指示世界协调时间,或者所述时间戳字段按照预设格式进行指示,所述预设格式包括以下至少一个字段:年时间戳字段、小时时间戳字段、秒时间戳字段、帧时间戳字段;
其中,所述当前点云帧是指所述点云码流中正在解码的点云帧,所述当前时间戳是指所述当前点云帧正在使用的时间戳。
4.如权利要求1所述的方法,其特征在于,点云帧的参数信息用于指示帧空间信息;当前点云帧的参数信息包括空间信息标志字段;
所述空间信息标志字段表示是否指示所述当前点云帧的空间信息,当所述空间信息标志字段为第一取值时,指示所述当前点云帧的空间信息;当所述空间信息标志字段为第二取值时,不指示所述当前点云帧的空间信息;
所述空间信息包括以下至少一种:所述当前点云帧的包围盒原点的坐标信息,所述当前点云帧的包围盒宽度信息,所述当前点云帧的包围盒深度信息。
5.如权利要求1所述的方法,其特征在于,点云帧的参数信息用于指示帧内数据单元的信息;一个点云帧包含一个或多个数据单元,所述数据单元包括点云片;当前点云帧的参数信息包括点云片数量字段或点云片数量减一字段;
所述点云片数量字段用于指示所述当前点云帧包含的点云片数量;
所述点云片数量减一字段用于间接指示所述当前点云帧包含的点云片数量;
其中,所述当前点云帧是指所述点云码流中正在解码的点云帧。
6.如权利要求1所述的方法,其特征在于,点云帧的参数信息还用于指示点云帧内是否包含参数集合,所述参数集合包括以下任一种:几何头参数集合、属性头参数集合、几何头参数集合和属性头参数集合;
当前点云帧的参数信息包括以下任一个字段:几何头标志字段、属性头标志字段和属性数量减一字段;
所述几何头标志字段用于指示所述当前点云帧是否包含几何头参数集合;若所述几何头标志字段为第一预设值,则指示所述当前点云帧包含几何头参数集合;若所述几何头标志字段为第二预设值,则指示当前点云帧不包含几何头参数集合;
所述属性头标志字段用于指示当前点云帧是否包含属性头参数集合,若所述属性头标志字段为第一设定值,则指示所述当前点云帧包含属性头参数集合;若所述属性头标志字段为第二设定值,则指示所述当前点云帧不包含属性头参数集合;
所述属性数量减一字段用于指示当前点云帧包含的属性头参数集合对应的属性数据组的数量。
7.如权利要求6所述的方法,其特征在于,所述点云码流中的一个或多个点云帧按序构成点云序列;
当所述当前点云帧为所述点云序列中的第一帧时,所述几何头标志字段被设置为第一预设值,所述属性头标志字段被设置为第一设定值;所述属性数量减一字段的取值为所述点云序列包含的属性数据组的最大数量;
当所述当前点云帧并非所述点云序列中的第一帧时,若所述几何头标志字段被设置为第一预设值,则指示所述点云序列中的几何头参数集合发生更新;
当所述当前点云帧并非所述点云序列中的第一帧时,若所述属性头标志字段被设置为第一设定值,则指示所述点云序列中的属性头参数集合发生更新。
8.如权利要求6或7所述的方法,其特征在于,在所述点云媒体中,一组属性数据对应一个属性头参数集合;
所述属性头参数集合包括属性存在标志字段,所述属性存在标志字段用于指示当前属性头参数集合中是否包含第x组属性数据的编码参数,x为大于等于0且小于等于15的整数;
若所述属性存在标志字段为第一取值,则指示所述当前属性头参数集合中包含第x组属性数据的编码参数;
若所述属性存在标志字段为第二取值,则指示所述当前属性头参数集合中不包含第x组属性数据的编码参数。
9.如权利要求6或7所述的方法,其特征在于,所述属性头参数集合包括属性类型字段和属性数据标识符字段,通过所述属性类型字段和所述属性数据标识符字段来表示属性头参数集合和属性数据之间的对应关系。
10.如权利要求1所述的方法,其特征在于,点云帧的参数信息用于指示帧内数据单元的信息;
若所述数据单元包括点云帧,则当前点云帧的参数信息包括所述当前点云帧的起始码和结束码;所述当前点云帧是指所述点云码流中正在被解码的点云帧;
若所述数据单元包括点云片,则当前点云帧的参数信息包括所述当前点云帧中的当前点云片的起始码和结束码,所述当前点云片是指所述点云码流中正在被解码的点云片;
若所述数据单元包括点云片的几何数据,则当前点云帧的参数信息包括当前点云片的几何数据的起始码和结束码;
若所述数据单元包括点云片的属性数据,则当前点云帧的参数信息包括当前点云片的当前属性数据的起始码和结束码,所述当前点云片的当前属性数据是指所述当前点云片中正在被解码的属性数据。
11.如权利要求10所述的方法,其特征在于,所述当前点云帧的起始码为预设的特定位串,或者所述当前点云帧的起始码为所述当前点云帧的上一点云帧的结束码;所述当前点云帧的起始码用于指示所述当前点云帧开始解码的位置,所述当前点云帧的结束码用于指示所述当前点云帧结束解码的位置;
所述当前点云片的起始码为预设的特定位串,或者所述当前点云片的起始码为所述当前点云片的上一点云片的结束码;所述当前点云片的起始码用于指示所述当前点云片开始解码的位置,所述当前点云片的结束码用于指示所述当前点云片结束解码的位置;
所述当前点云片的几何数据的起始码为预设的特定位串,或者,所述当前点云片的几何数据的起始码为所述当前点云片的上一点云片的结束码;所述当前点云片的几何数据的起始码用于指示所述当前点云片的几何数据开始解码的位置,所述当前点云片的几何数据的结束码用于指示所述当前点云片的几何数据结束解码的位置;
所述当前点云片的当前属性数据的起始码为预设的特定位串,或者所述当前点云片的当前属性数据的起始码为所述当前点云片的几何数据的结束码,或者,所述当前点云片的当前属性数据的起始码为所述当前点云片中当前属性数据的上一属性数据的结束码;所述当前点云片的当前属性数据的起始码用于指示所述当前点云片的当前属性数据开始解码的位置,所述当前点云片的当前属性数据的结束码用于指示所述当前点云片的当前属性数据结束解码的位置。
12.如权利要求10或11所述的方法,其特征在于,所述当前点云片的当前属性数据的起始码还用于指示所述当前点云片的当前属性数据的类型。
13.如权利要求1所述的方法,其特征在于,所述各点云帧的参数信息分别设置于各点云帧的帧头;一个点云帧包括一个或多个数据单元,所述根据所述各点云帧的参数信息,对所述点云码流进行解码处理以呈现所述点云媒体,包括:
从所述点云码流中确定需要解码的目标点云帧;
按照所述目标点云帧的参数信息,在所述目标点云帧中定位需要解码的数据单元;
对所述目标点云帧中需要解码的数据单元进行解码呈现。
14.一种点云媒体的数据处理方法,其特征在于,包括:
获取点云媒体;
对所述点云媒体进行编码处理,得到点云码流,所述点云码流包含一个或多个点云帧,以及各点云帧的参数信息,其中,所述点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
传输所述点云码流。
15.如权利要求14所述的方法,其特征在于,所述各点云帧的参数信息分别设置于各点云帧的帧头;
点云帧的参数信息还用于指示点云帧内是否包含参数集合,所述参数集合包括以下任一种:几何头参数集合、属性头参数集合、几何头参数集合和属性头参数集合。
16.如权利要求14所述的方法,其特征在于,点云帧的参数信息用于指示帧内数据单元的信息;
若所述数据单元包括点云帧,则当前点云帧的参数信息包括所述当前点云帧的起始码和结束码;所述当前点云帧是指所述点云码流中正在被编码的点云帧;
若所述数据单元包括点云片,则当前点云帧的参数信息包括所述当前点云帧中的当前点云片的起始码和结束码,所述当前点云片是指所述点云码流中正在被编码的点云片;
若所述数据单元包括点云片的几何数据,则当前点云帧的参数信息包括当前点云片的几何数据的起始码和结束码;
若所述数据单元包括点云片的属性数据,则当前点云帧的参数信息包括当前点云片的当前属性数据的起始码和结束码,所述当前点云片的当前属性数据是指所述当前点云片中正在被编码的属性数据。
17.一种点云媒体的数据处理装置,其特征在于,包括:
获取单元,用于获取点云媒体的点云码流,所述点云码流包含一个或多个点云帧,以及各点云帧的参数信息;其中,点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
处理单元,用于根据所述各点云帧的参数信息,对所述点云码流进行解码处理以呈现所述点云媒体。
18.一种点云媒体的数据处理装置,其特征在于,包括:
获取单元,用于获取点云媒体;
处理单元,用于对所述点云媒体进行编码处理,得到点云码流,所述点云码流包含一个或多个点云帧,以及各点云帧的参数信息,其中,点云帧的参数信息用于指示以下至少一种信息:帧序号、帧时间戳信息、帧空间信息、帧内数据单元的信息;
所述处理单元,还用于传输所述点云码流。
19.一种计算机设备,其特征在于,包括:
处理器,适用于执行计算机程序;
计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,执行如权利要求1-16任一项所述的点云媒体的数据处理方法。
20.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时,执行如权利要求1-16任一项所述的点云媒体的数据处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211137844.1A CN115866274A (zh) | 2022-09-19 | 2022-09-19 | 一种点云媒体的数据处理方法及相关设备 |
PCT/CN2023/106340 WO2024060793A1 (zh) | 2022-09-19 | 2023-07-07 | 一种点云媒体的数据处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211137844.1A CN115866274A (zh) | 2022-09-19 | 2022-09-19 | 一种点云媒体的数据处理方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115866274A true CN115866274A (zh) | 2023-03-28 |
Family
ID=85660965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211137844.1A Pending CN115866274A (zh) | 2022-09-19 | 2022-09-19 | 一种点云媒体的数据处理方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115866274A (zh) |
WO (1) | WO2024060793A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023172703A1 (en) * | 2022-03-09 | 2023-09-14 | Innopeak Technology, Inc. | Geometry point cloud coding |
WO2024060793A1 (zh) * | 2022-09-19 | 2024-03-28 | 腾讯科技(深圳)有限公司 | 一种点云媒体的数据处理方法及相关设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10909725B2 (en) * | 2017-09-18 | 2021-02-02 | Apple Inc. | Point cloud compression |
CN114097229A (zh) * | 2019-07-03 | 2022-02-25 | Lg 电子株式会社 | 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法 |
US11743501B2 (en) * | 2020-04-07 | 2023-08-29 | Qualcomm Incorporated | High-level syntax design for geometry-based point cloud compression |
US12026922B2 (en) * | 2020-06-26 | 2024-07-02 | Qualcomm Incorporated | Attribute parameter coding for geometry-based point cloud compression |
CN112583803A (zh) * | 2020-12-04 | 2021-03-30 | 上海交通大学 | 数据处理方法、装置、通信节点和存储介质 |
CN115866274A (zh) * | 2022-09-19 | 2023-03-28 | 腾讯科技(深圳)有限公司 | 一种点云媒体的数据处理方法及相关设备 |
-
2022
- 2022-09-19 CN CN202211137844.1A patent/CN115866274A/zh active Pending
-
2023
- 2023-07-07 WO PCT/CN2023/106340 patent/WO2024060793A1/zh unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023172703A1 (en) * | 2022-03-09 | 2023-09-14 | Innopeak Technology, Inc. | Geometry point cloud coding |
WO2024060793A1 (zh) * | 2022-09-19 | 2024-03-28 | 腾讯科技(深圳)有限公司 | 一种点云媒体的数据处理方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2024060793A1 (zh) | 2024-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106464906B (zh) | 基于高效率视频编码标准的3d视频编码中深度查找表发讯方法 | |
CN115866274A (zh) | 一种点云媒体的数据处理方法及相关设备 | |
CN115379189B (zh) | 一种点云媒体的数据处理方法及相关设备 | |
US20230421810A1 (en) | Encapsulation and decapsulation methods and apparatuses for point cloud media file, and storage medium | |
CN115396645B (zh) | 一种沉浸媒体的数据处理方法、装置、设备及存储介质 | |
CN114095737B (zh) | 媒体文件封装及解封装方法、装置、设备及存储介质 | |
CN115396646B (zh) | 一种点云媒体的数据处理方法及相关设备 | |
CN115396647B (zh) | 一种沉浸媒体的数据处理方法、装置、设备及存储介质 | |
CN113949829B (zh) | 媒体文件封装及解封装方法、装置、设备及存储介质 | |
WO2023226504A1 (zh) | 一种媒体数据处理方法、装置、设备以及可读存储介质 | |
WO2023024839A1 (zh) | 媒体文件封装与解封装方法、装置、设备及存储介质 | |
CN115086635B (zh) | 多视角视频的处理方法、装置、设备及存储介质 | |
CN115733576B (zh) | 点云媒体文件的封装与解封装方法、装置及存储介质 | |
WO2023169004A1 (zh) | 点云媒体的数据处理方法、装置、设备及介质 | |
WO2021102953A1 (en) | Multi-view video processing method and apparatus | |
WO2023169001A1 (zh) | 一种沉浸媒体的数据处理方法、装置、设备及存储介质 | |
CN115379188B (zh) | 点云数据处理方法、装置、设备及存储介质 | |
EP4394718A1 (en) | Media file encapsulation method and device, media file decapsulation method and device, and storage medium | |
CN115834857B (zh) | 点云数据处理方法、装置、设备及存储介质 | |
US20240129485A1 (en) | Edge Feature-Assisted Processing of Multiview Images | |
US20240236305A1 (en) | Vertices grouping in mesh motion vector coding | |
CN115426502A (zh) | 点云媒体的数据处理方法、装置、设备及存储介质 | |
CN116743722A (zh) | 点云媒体的数据处理方法、装置、存储介质及电子设备 | |
CN117615136A (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: 40083088 Country of ref document: HK |