CN117221551A - 点云处理方法、装置、存储介质及电子设备 - Google Patents
点云处理方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN117221551A CN117221551A CN202311234799.6A CN202311234799A CN117221551A CN 117221551 A CN117221551 A CN 117221551A CN 202311234799 A CN202311234799 A CN 202311234799A CN 117221551 A CN117221551 A CN 117221551A
- Authority
- CN
- China
- Prior art keywords
- attribute
- point cloud
- parameter
- point
- decoding
- 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 40
- 238000003860 storage Methods 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 claims abstract description 81
- 238000013139 quantization Methods 0.000 claims description 155
- 238000002310 reflectometry Methods 0.000 claims description 52
- 238000012545 processing Methods 0.000 claims description 33
- 238000007906 compression Methods 0.000 claims description 17
- 230000006835 compression Effects 0.000 claims description 16
- 125000004122 cyclic group Chemical group 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 10
- 230000001502 supplementing effect Effects 0.000 claims description 7
- 238000011426 transformation method Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 27
- 230000009466 transformation Effects 0.000 description 25
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000007654 immersion Methods 0.000 description 12
- 230000003044 adaptive effect Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 239000000463 material Substances 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000010365 information processing Effects 0.000 description 3
- 238000002595 magnetic resonance imaging Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000002591 computed tomography Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 210000000056 organ Anatomy 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 108091026890 Coding region Proteins 0.000 description 1
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Abstract
本申请公开了一种点云处理方法、装置、存储介质及电子设备,该方法包括:获取点云码流的解码指示信息,解码指示信息包括第一指示参数和第二指示参数中至少一种,第一指示参数设置于点云序列的序列级别的参数信息中,第二指示参数设置于点云序列的帧级别或片级别的参数信息中,第一指示参数用于进行序列级别的解码指示,第二指示参数用于进行帧级别或片级别的解码指示;根据第一指示参数或第二指示参数对点云码流进行解码。通过序列级别的第一指示参数,统一对整个点云序列中的各个点云帧进行解码指示,根据帧级别或片级别的第二指示参数进行解码时,可在解析点云帧或点云片时快速获取到,解码效率较高。
Description
技术领域
本申请属于计算机技术领域,尤其涉及一种点云处理方法、装置、存储介质及电子设备。
背景技术
点云是采用测量仪器对物体表面进行数据采集所得到的点集合。点云在自动驾驶、高精度地图及虚拟现实等方面应用广泛,但由于点云往往是由数万个点到数亿个三维点组成,对数据存储、处理及传输显示都带来了严峻的挑战,对于目前的存储资源和传输带宽都难以承受,因此对点云进编码压缩得到点云码流,通过点云码流代替点云进行存储或传输是必不可少的。
目前比较常见的点云编码压缩方法包括基于几何模型的点云压缩(Geometry-based Point Cloud Compression,GPCC),一般通过序列头对逐帧变化的参数进行解码指示,序列头中需要定义每个点云帧对应的指示信息,每一个点云帧解码时均需要去解析序列头获取到对应的指示信息,解码效率较低。
发明内容
本申请旨在至少解决现有技术中存在的技术问题之一。为此,本申请提出一种点云处理方法、装置、存储介质及电子设备,能提高解码效率。
第一方面,本申请提供了一种点云处理方法,包括获取点云码流的解码指示信息,所述解码指示信息包括第一指示参数和第二指示参数中至少一种,所述第一指示参数设置于点云序列的序列级别的参数信息中,所述第二指示参数设置于所述点云序列的帧级别或片级别的参数信息中,所述第一指示参数用于进行序列级别的解码指示,所述第二指示参数用于进行帧级别或片级别的解码指示;根据所述第一指示参数或所述第二指示参数对所述点云码流进行解码。
在一些实施例中,所述序列级别的参数信息包括序列头,所述序列头还包括第三指示参数,所述根据所述第一指示参数或所述第二指示参数对所述点云码流进行解码,包括:在所述第三指示参数的取值为第一预设数值的情况下,根据所述第一指示参数对所述点云序列的每个所述点云帧进行解码;在所述第三指示参数的取值为第二预设数值的情况下,根据各个所述点云帧的所述第二指示参数对各个所述点云帧进行解码,所述第一预设数值和所述第二预设数值不同。
在一些实施例中,所述第一指示参数和所述第二指示参数均包括包围盒原点坐标字段、所述包围盒尺寸字段、和量化参数字段中至少一种。
在一些实施例中,所述第一指示参数根据所述点云序列的各个点云帧的所述第二指示参数确定;或者,所述第一指示参数为预设值。
在一些实施例中,所述解码指示信息还包括第四指示参数,所述第四指示参数用于指示所述点云序列的各个点云帧的分组方式,所述方法还包括:根据所述第四指示参数确定各个所述点云帧的解码方式,所述解码方式包括直接预测方法和预测变换方法中至少一种。
在一些实施例中,所述分组方式包括以下方式中至少一种:根据预设分组阈值,将各个分组中的点分为多个子分组,在分组时,前一个所述子分组的点的数量达到所述预设分组阈值后,进行后一个所述子分组的分组;在进行分组的当前点为重复点的情况下,使用所述当前点补齐当前子分组,直至所述当前子分组的点的数量达到所述预设分组阈值后,将剩余的所述重复点各自分为一个所述子分组;其中,所述重复点为与所在所述分组中的任一个点或者前N个点中的任一个点相同的点,所述N为正整数;在进行分组的当前点为重复点的情况下,使用当前点补齐当前子分组,直至所述当前子分组的点的数量达到所述预设分组阈值后,停止对剩余重复点继续进行分组;在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并按所述预设分组阈值,对剩余的点继续进行分组;在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并将剩余的所述重复点各自分为一个所述子分组;在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并停止对剩余重复点继续进行分组。
在一些实施例中,所述根据所述第四指示参数确定各个所述点云帧的解码方式,包括:在待解码的所述当前子分组包含重复点的情况下,根据所述第四指示参数确定所述当前子分组的解码方式。
在一些实施例中,所述点云处理方法还包括根据所述点云帧的量化参数的相关参数或者各个所述子分组中的点的最大数量确定是否进行动态分组;若是,则根据连续的前M个所述子分组中的点的数量平均值,调整当前右移位数,所述M为正整数;根据调整后的所述当前右移位数,确定进行分组的点对应的编码的目标位数;根据所述目标位数内的数值重新进行分组。
在一些实施例中,所述点云处理方法还包括在当前待解码点为重复点的情况下,确定所述当前待解码点的各个属性类型的预测值分别为所述当前待解码点的前一个点的各个属性类型的重建值,且确定所述当前待解码点的属性类型的当前残差值为非负数或非正数。
在一些实施例中,所述属性类型包括颜色属性,所述确定所述当前待解码点的各个属性类型的预测值分别为所述当前待解码点的前一个点的各个属性类型的重建值,包括:在当前待解码点为重复点的情况下,确定所述当前待解码点的颜色属性的第K分量的预测值为所述当前待解码点的前一个点的第K分量的重建值,且确定所述当前待解码点的颜色属性的当前残差值的第K分量为非负数或非正数,所述K为1至3的任一整数;或者在当前待解码点为重复点的情况下,确定所述当前待解码点的颜色属性的各个分量的预测值分别为所述当前待解码点的前一个点的各个分量的重建值,且确定所述当前待解码点的颜色属性的当前残差值的各个分量为非负数或非正数。
在一些实施例中,所述颜色属性通过RGB编码格式或YUV编码格式表示,RGB编码格式包括R、G、B三个分量,或者,所述YUV编码格式包括Y、U、V三个分量,所述第K分量为R、G、B三个分量中的任一个,或者Y、U、V三个分量中的任一个。
在一些实施例中,所述点云处理方法还包括在所述当前待解码点为重复点的情况下,确定所述当前待解码点的反射率属性的预测值为所述当前待解码点的前一个点的反射率属性的重建值,且确定所述当前待解码点的反射率属性的当前残差值的符号位为非负数或非正数。
在一些实施例中,所述序列级别的参数信息包括序列头,所述解码指示信息还包括第五指示参数,所述第五指示参数设置于所述序列头,所述第五指示参数的取值包括多个预设值中的任一个,所述第五指示参数的取值为不同所述预设值的情况下,对应的解码帧率不同。
在一些实施例中,所述解码指示信息还包括设置于点云帧的属性头,所述属性头包括属性量化参数字段,所述属性量化参数字段用于控制点云的属性量化参数,所述属性量化参数用于对所述点云帧进行关于属性量化的属性解码指示。
在一些实施例中,所述属性头包括多个属性类型,每个所述属性类型均存在所述属性量化参数字段,目标属性类型下的所述属性量化参数字段用于控制点云在所述目标属性类型下的属性量化参数,所述目标属性类型下的属性量化参数用于对所述点云帧进行关于所述目标属性类型下属性量化的属性解码指示,所述目标属性类型为多个所述属性类型中的任一者。
在一些实施例中,所述点云序列包括点云帧,所述点云帧包括点云片,所述点云片包括属性片头,所述解码指示信息还包括设置在所述属性片头的属性量化参数字段。
在一些实施例中,当所述属性量化参数字段的属性类型为反射率属性时,所述属性量化参数字段包括反射率属性量化参数和反射率属性量化参数偏移量中至少一种;当所述属性量化参数字段的属性类型为颜色属性时,所述属性量化参数字段包括以下任一种:颜色属性量化参数、各个颜色分量的属性量化参数偏移量。
在一些实施例中,所述解码指示信息包括设置于所述点云序列的循环语句,所述点云序列包括点云帧,所述点云帧包括点云片,所述点云片包括属性片,所述属性片位于所述循环语句中,所述循环语句通过所述属性片头起始码遍历各个所述属性片。
在一些实施例中,所述点云序列包括点云帧,所述点云帧包括点云片,所述点云片包括属性片,所述解码指示信息包括设置于所述属性片的循环语句,所述属性片包括属性片头和属性数据位流;所述属性片头和属性数据位流均位于所述循环语句内,所述循环语句通过所述属性片头起始码遍历各个所述属性片头和属性数据位流,所述属性片头和属性数据位流一一对应;或者,所述属性数据位流位于所述循环语句内,所述循环语句通过所述属性数据起始码遍历各个所述属性数据位流,所述属性片头对应一个或多个所述属性数据位流。
第二方面,本申请提供了一种点云处理方法,包括获取点云数据;对所述点云数据进行编码压缩,得到点云码流,所述点云码流的解码指示信息包括第一指示参数和第二指示参数中至少一种,所述第一指示参数设置于点云序列的序列级别的参数信息中,所述第二指示参数设置于所述点云序列的帧级别或片级别的参数信息中,所述第一指示参数用于进行序列级别的解码指示,所述第二指示参数用于进行帧级别或片级别的解码指示,所述点云码流根据所述第一指示参数或所述第二指示参数解码。
第三方面,本申请提供了一种点云处理装置,包括第一获取模块和解码模块。所述第一获取模块用于获取点云码流的解码指示信息,所述解码指示信息包括第一指示参数和第二指示参数中至少一种,所述第一指示参数设置于点云序列的序列级别的参数信息中,所述第二指示参数设置于所述点云序列的帧级别或片级别的参数信息中,所述第一指示参数用于进行序列级别的解码指示,所述第二指示参数用于进行帧级别或片级别的解码指示;所述解码模块用于根据所述第一指示参数或所述第二指示参数对所述点云码流进行解码。
第四方面,本申请提供了一种点云处理装置,包括第二获取模块和编码压缩模块。所述第二获取模块用于获取点云数据;所述编码压缩模块用于对所述点云数据进行编码压缩,得到点云码流,所述点云码流的解码指示信息包括第一指示参数和第二指示参数中至少一种,所述第一指示参数设置于点云序列的序列级别的参数信息中,所述第二指示参数设置于所述点云序列的帧级别或片级别的参数信息中,所述第一指示参数用于进行序列级别的解码指示,所述第二指示参数用于进行帧级别或片级别的解码指示,所述点云码流根据所述第一指示参数或所述第二指示参数解码。
第五方面,本申请提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述任一项所述的点云处理方法。
第六方面,本申请提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述任一项所述的点云处理方法。
本申请实施例提供的点云处理方法、装置、存储介质及电子设备,通过获取点云码流的解码指示信息,并在解码指示信息中定义了序列级别的第一指示参数和帧级别或片级别的第二指示参数,然后根据第一指示参数或第二指示参数进行解码。在根据序列级别的第一指示参数解码时,点云序列的各个点云帧都使用统一的第一指示参数解码进行解码,无需针对每个点云帧解析对应的指示参数来解码,解码效率较高。在根据帧级别或片级别的第二指示参数解码时,根据第二指示参数可实现帧级别或片级别的解码,从而使得每个点云帧或点云片都存在适配的第二指示参数,实现第二指示参数的逐帧变化或逐片变化,相较于每次解析点云帧时,还需要去解析序列头获取到该点云帧对应的指示参数,以进行解码,解码效率较低而言,无需每个点云帧都到序列头去解析对应的指示参数,可快速获取到对应的第二指示参数,解码效率相对较高。
附图说明
本申请的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1a是是本申请实施例提供的一种3DoF的自由度展示示意图;
图1b是本申请实施例提供的一种3DoF+的自由度展示示意图;
图1c是本申请实施例提供的一种6DoF的自由度展示示意图;
图2是本申请实施例提供的点云媒体的点云处理系统的框架示意图;
图3是本申请实施例提供的点云编码的编码框架示意图;
图4是本申请实施例提供的点云处理方法的流程示意图;
图5是本申请实施例提供的点云处理方法的流程示意图;
图6是本申请实施例提供的点云处理方法的流程示意图;
图7是本申请实施例提供的另一点云处理方法的流程示意图;
图8是本申请实施例提供的点云处理装置的结构示意图;
图9是本申请实施例提供的另一点云处理装置的结构示意图;
图10是本申请实施例提供的电子设备的结构示意图;
图11是本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。
下面对本申请中涉及的部分技术术语进行介绍:
一、点云
点云是指空间中一组无规则分布的、表达三维物体或场景的空间结构及表面属性的离散点集。点云中的每个点至少包括几何数据,该几何数据用于表示点的三维位置信息。根据应用场景的不同,点云中的点还可以包括一组或多组属性数据,每一组属性数据用于反映点所具备的一种属性,该属性例如可以是色彩、材质或其他信息。通常,点云中的每个点都具有相同组数的属性数据。
点云可以灵活方便地表达三维物体或场景的空间结构及表面属性,因而应用广泛,可以应用于虚拟现实(Virtual Reality,VR)游戏、计算机辅助设计(Computer AidedDesign,CAD)、地理信息系统(Geography Information System,GIS)、自动导航系统(Autonomous Navigation System,ANS)、数字文化遗产、自由视点广播、三维沉浸远程呈现、生物组织器官三维重建等场景中。
点云的获取主要有以下途径:计算机生成、三维(3Dimension,3D)激光扫描、3D摄影测量等。具体来说,点云可以是通过采集设备(一组摄像机或具有多个镜头和传感器的摄像机设备)对现实世界的视觉场景进行采集得到的,通过3D激光扫描可以获得静态现实世界三维物体或场景的点云,每秒可以获取百万级点云;通过3D摄影可以获得动态现实世界三维物体或场景的点云,每秒可以获取千万级点云;此外,在医学领域,可以通过磁共振成像(Magnetic Resonance Imaging,MRI)、电子计算机断层扫描(Computed Tomography,CT)、电磁定位信息获得生物组织器官的点云。又如,点云还可以由计算机根据虚拟三维物体及场景直接生成,如计算机可以生成虚拟三维物体及场景的点云。伴随着大规模的点云数据不断积累,点云数据的高效存储、传输、发布、共享和标准化,成为点云应用的关键。
二、点云媒体
点云媒体是一种典型的6DoF沉浸媒体。沉浸媒体是指能够提供沉浸式的媒体内容,使沉浸于该媒体内容中的观看者能够获得现实世界中视觉、听觉等感官体验的媒体文件。沉浸式媒体按照观看者在消费媒体内容时的自由度,可以分为:6DoF(Degree ofFreedom)沉浸媒体,3DoF沉浸媒体,3DoF+沉浸媒体。其中,请参见图1a,图1a是本申请实施例提供的一种3DoF的自由度展示示意图,3DoF是指三自由度,即沉浸媒体的观看者在一个三维空间的中心点固定,沉浸媒体的观看者头部沿着X轴、Y轴和Z轴旋转来观看媒体内容提供的画面。请参见图1b,图1b是本申请实施例提供的一种3DoF+的自由度展示示意图,3DoF+是指在三自由度的基础上,沉浸媒体的观看者头部还拥有沿着X轴、Y轴和Z轴有限运动的自由度。请参见图1c,图1c是本申请实施例提供的一种6DoF的自由度展示示意图,6DoF是指在三自由度的基础上,沉浸媒体的观看者头部还拥有沿着X轴、Y轴和Z轴自由运动的自由度。
需要说明的是,本申请实施例提供的点云处理方法可应用于点云媒体的点云处理系统中,该点云处理系统可以包括内容制作设备(对应编码设备)和内容呈现设备(对应解码设备),内容制作设备可以是指点云媒体的提供者(例如点云媒体的内容制作者)所使用的计算机设备,该计算机设备可以是终端(如PC(Personal Computer,个人计算机)、智能移动设备(如智能手机)等)或服务器。其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。内容呈现设备可以是指点云媒体的使用者(例如点云媒体的观看者,即业务对象)所使用的计算机设备,该计算机设备可以是终端(如PC(Personal Computer,个人计算机)、智能移动设备(如智能手机)、VR设备(如VR头盔、VR眼镜等)、智能家电、车载终端、飞行器等),该计算机设备集成有客户端。其中,这里的客户端可以为具有显示文字、图像、音频以及视频等数据信息功能的客户端,包括但不限于多媒体客户端(例如,视频客户端)、社交类客户端(例如,即时通信客户端)、资讯类应用(例如,新闻客户端)、娱乐客户端(例如,游戏客户端)、购物客户端、车载客户端、浏览器等。其中,该客户端可以为独立的客户端,也可以为集成在某客户端(例如,社交客户端)中的嵌入式子客户端,在此不做限定。
内容制作设备和内容呈现设备可以是同一设备,也可以是不同设备,其均包括多个模块,不同的模块用于实现不同功能,这些模块可以集成于同一电子设备中,也可以位于不同电子设备中。内容制作设备可以用于实现点云媒体的采集、编码和封装等功能,相应地,内容呈现设备可以用于实现对封装文件的解封装、解码、渲染和显示等功能。请参见图2,图2是本申请实施例提供的点云媒体的点云处理系统的数据处理框架示意图。
在图2中,在内容制作设备侧,真实世界的视觉场景A由一组相机或一个具有多个镜头和传感器的相机设备捕获采集,采集结果为点云媒体B,点云媒体B是由大量点云帧组成的帧序列。一个或多个点云帧被编码为点云码流E,包括编码的几何位流和属性位流,之后,根据特定的媒体容器文件格式(如ISOBMFF)对点云码流E进行封装处理,得到用于流化传输的初始化片段和媒体片段的序列(Fs)或用于文件回放的媒体文件(F)。在封装过程中,还将元数据包含到文件F或媒体片段中Fs,之后,可使用传输机制将片段Fs传送给内容呈现设备。该传输机制可包括但不限于:DASH协议、HLS协议、SMTP协议、TCP协议等。
在内容呈现设备侧,对序列(Fs)或媒体文件(F)进行解封装,得到点云码流E'并解析元数据,然后再对点云码流E'解码生成点云媒体D',之后,再对点云媒体D'进行渲染,并呈现相应的视觉场景A'。在内容呈现设备侧的数据处理过程中,可以根据当前观看者的观看位置、观看方向或由各种类型的传感器(例如头部、位置或眼动跟踪传感器)确定的视窗,将解码的点云媒体D'渲染并显示到头戴式显示器或任何其他显示设备的屏幕上。通过当前观看位置或观看方向来部分访问解码的点云媒体,可用于优化点云媒体的处理过程。
可以理解的是,本申请涉及的点云处理技术(主要包括编码技术和解码技术)可以依托于云技术进行实现;例如,将云服务器作为内容制作设备。云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
三、点云数据(Point Cloud Data)。点云中各个点具备的几何信息和属性信息共同组成点云数据。其中,几何信息也可以称为三维位置信息,点云中某个点的几何信息是指该点的空间坐标(x,y,z),可以包括该点在三维坐标系统的各个坐标轴方向上的坐标值,例如,X轴方向上的坐标值x,Y轴方向上的坐标值y和Z轴方向上的坐标值z。点云中某个点的属性信息可以包括以下至少一种:颜色信息、材质信息、激光反射强度信息(也可以称为反射率);通常,点云中的每个点具有相同数量的属性信息,例如,点云中的每个点都可以具有颜色信息和激光反射强度两种属性信息,又如,点云中的每个点都可以具有颜色信息、材质信息和激光反射强度信息三种属性信息。
四、点云编码(Point Cloud Compression,PCC)。点云编码是指对点云中各点的几何信息和属性信息进行编码,得到压缩码流(也可以称为点云码流)的过程。点云编码可以包括几何信息编码和属性信息编码两个主要过程。目前主流的点云编码技术,针对点云的不同类型,可以分为基于几何结构的点云编码以及基于投影的点云编码,在此以MPEG(Moving Picture Expert Group,国际视音频编解码标准)中的G-PCC(Geometry-BasedPoint Cloud Compression,基于几何结构的点云编码),以及AVS(Audio Video CodingStandard,中国国家视频编解码标准)中的点云编码标准AVS-PCC为例进行介绍。
G-PCC及AVS-PCC的编码框架大致相同,以G-PCC为例,图3示出了GPCC的编码框架,可以分为几何信息编码过程以及属性信息编码过程。在几何信息编码过程中,对点云中各点的几何信息进行编码,得到几何比特流;在属性信息编码过程中,对点云中各点的属性信息进行编码,得到属性比特流;几何比特流和属性比特流共同组成点云的压缩码流。
对于几何信息编码过程,主要操作和处理可以参见如下描述:
①预处理(Pre-Processing):可以包括坐标变换(Transform Coordinates)和体素化(Voxelize)。通过缩放和平移的操作,将三维空间中的点云数据转换成整数形式,并将其最小几何位置移至坐标原点处。
②几何编码:几何编码中可以包括两种模式,分别是基于八叉树的几何编码(Octree)和基于三角表示的几何编码(Trisoup),这两种编码模式可以在不同的条件下使用。
其中:
基于八叉树的几何编码:八叉树是一种树形数据结构,在三维空间划分中,对预先设定的包围盒进行均匀划分,每个节点都具有八个子节点。通过对八叉树各个子节点的占用与否采用“1”和“0”指示,获得占用码信息(Occupancy Code)作为点云几何信息的码流。
基于三角表示的几何编码:将点云划分为一定大小的块(block),定位点云表面在块的边缘的交点并构建三角形。通过编码交点位置实现几何信息的压缩。
③几何量化(Geometry Quantization):量化的精细程度通常由量化参数(Quantization Parameter,QP)来决定,QP取值越大,表示更大取值范围的系数将被量化为同一个输出,因此通常会带来更大的失真,及较低的码率;相反,QP取值越小,表示较小取值范围的系数将被量化为同一个输出,因此通常会带来较小的失真,同时对应较高的码率。
④几何熵编码(Geometry Entropy Encoding):针对八叉树的占用码信息,进行统计压缩编码,最后输出二值化(0或者1)的压缩码流。统计编码是一种无损编码方式,可以有效的降低表达同样的信号所需要的码率。常用的统计编码方式是基于上下文的二值化算术编码(Content Adaptive Binary Arithmetic Coding,CABAC)。
对于属性信息编码过程,主要操作和处理可以参见如下描述:
①属性重上色(Recoloring):有损编码情况下,在几何坐标信息编码后,需编码端解码并重建几何信息,即恢复点云中各点的几何信息。在原始的点云中寻找对应一个或多个邻近点的属性信息,作为该重建点的属性信息。
②属性信息处理:属性信息处理可以包括三种属性编码模式,分别是属性预测(Prediction)、属性变换(Transform)、属性预测变换(Prediction&Transform),这三种属性编码模式可以在不同的条件下使用。
其中:
属性预测:根据距离或空间关系等信息,在已编码点中确定待编码点的邻居预测点,基于设定的准则,根据邻居预测点的属性信息计算待编码点的属性预测信息。计算待编码点的真实属性信息与预测属性信息之间的差值作为属性残差信息,对属性残差信息进行量化、以及熵编码。
属性变换:利用DCT(Discrete Cosine Transform,离散余弦变换)、Haar(HaarTransform,哈尔变换)等变换方法,对属性信息进行分组、变换得到变换系数,对变换系数进行量化、以及熵编码。
属性预测变换:前序步骤与属性预测相同,在得到待编码点的属性残差信息之后,利用变换算法对待编码点的属性残差信息进行变换得到变换系数后,对变换系数进行量化、以及熵编码。
在属性预测变换之前,需要对几何解码点进行分组,下面分别通过颜色属性和反射率属性来说明分组过程。
对于颜色属性而言:对重排序之后的点云几何点依次分组,通过计算得到初始右移位数Lbase,根据Lbase获取当前右移位数,根据当前右移位数进行分组,设定最大变换阶数为colorMaxTransNum,具体的分组规则如下:
a、初始右移位数Lbase的计算公式如下:
b、将希尔伯特码右移L位后相同的点,划分为同一个组,若当前块内的点数小于等于最大变换阶数colorMaxTransNum,则确定为一组;若当前块内的点大于colorMaxTransNum个点,则对该块内的点进行细分组,细分组的规则如下:
细分组时,获取当前右移位数L,当前细分组的右移位数L1=L-1,然后将希尔伯特码右移L1位后相同的点归为新的一组,继续判断该新的一组内的点数是否大于colorMaxTransNum,若大于colorMaxTransNum,则继续重复该操作,直至每个分组内的点数都小于等于colorMaxTransNum。
c、同时动态调整L的大小,具体的规则为,统计8个连续分组组内几何点个数的平均值B,如果B的值小于2,则L=L+1;如果B的值大于8,则L=L-1;否则,L不变。L为大于等于3的整数,每32个分组调整一次L的值。
d、判断与上一个已分组的点是否为重复点,若有重复点则采用重复点补齐该组至colorMaxTransNum个点。之后的重复点依次按colorMaxTransNum进行分组,剩下的点自动成为一组。
对于反射率属性而言:对重排序之后的几何点依次分组,通过计算得到初始右移位数,根据获取当前右移位数,根据当前右移位数进行分组,设定最大变换阶数为refMaxTransNum。具体的分组规则如下:
a、refMaxTransNum不等于4时,初始右移位数Lbase=3;refMaxTransNum等于4时,初始右移位数Lbase的计算公式如下:
其中最大比特数maxBits为点云bounding box的体积取log2对数:
minBits=log2(xyz)
最小比特数minBits为点云点数voxelCount取log2对数:
minBits=log2(voxelCount)
初始偏移shift通过判断sps中的attrQuantParam大小获得,如果attrQuantParam大于等于32则shift等于12,否则shift等于-6:
shift=(sps.attrQuantParam>=32)?12∶-6
b、将希尔伯特码右移位Lbase位后相同的的点划分到同一个宏块。对每个宏块中的点进行分组,若当前点为重复点,则采用重复点补齐该组至refMaxTransNum个点。
若第j个块内点的个数Kj大于refMaxTransNum,则通过以下方法将第j个块进一步分组:依次取refMaxTransNum个点,直至该块内各个分组中的点数都小于等于refMaxTransNum。
c、refMaxTransNum>2时,动态调整右移位数L。
设定L的初始值设为Lbase,统计前序N组的总几何点个数(N=8),计算N组的平均点数,如果平均点数小于2,则L=L+1;如果平均点数大于refMaxTransNum,则L=L-1;否则,L不变。L为大于等于1的整数,每8个分组调整一次L的值。
③属性信息量化(Attribute Quantization):量化的精细程度通常由量化参数来决定。对属性信息处理得到的变换系数和/或属性残差信息进行量化,并对量化后的结果进行熵编码,例如,在属性预测中,是对量化后的属性残差信息进行熵编码;在属性变换和属性预测变换中,是对量化后的变换系数进行熵编码。
④属性熵编码(Attribute Entropy Coding):量化后的属性残差信息和/或变换系数一般使用行程编码(Run Length Coding)及算数编码(Arithmetic Coding)等熵编码方法实现最终的压缩。相应的属性编码模式,量化参数等信息也同样采用熵编码器进行编码。
五、点云解码。点云解码是指对点云编码得到的压缩码流进行解码,以重建点云的过程;详细地说,对点云流码进行解码主要涉及两部分内容:对点云媒体的几何位流(即目标几何数据)进行解码、以及对点云媒体的属性位流(即目标属性数据)进行解码。点云码流的解码过程和编码压缩过程是相逆的。在对点云码流进行解码后,内容呈现设备还可以进一步对解码数据进行渲染显示,以向用户呈现点云媒体(可参见上述图2)。
在此详细介绍属性预测模式和属性预测变换模式下的点云解码过程:
在属性预测模式下,可以从属性比特流中通过熵解码,得到待解码点量化后的属性残差信息,对量化后的属性残差信息反量化得到待解码点的属性残差信息;根据距离或空间关系等信息,在已解码点中确定待解码点的邻居预测点,基于设定的准则,根据邻居预测点的属性重建信息计算待解码点的属性预测信息;然后,可以根据待解码点的属性残差信息和待解码点的属性预测信息,重建待解码点的属性信息(可以称为属性重建信息)。
在属性预测变换模式下,可以从属性比特流中通过熵解码,得到待解码点量化后的变换系数,对量化后的变换系数反量化得到变换系数,对变换系数进行反变换得到待解码点的属性残差信息;根据距离或空间关系等信息,在已解码点中确定待解码点的邻居预测点,基于设定的准则,根据邻居预测点的属性重建信息计算待解码点的属性预测信息;然后,可以根据待解码点的属性残差信息和待解码点的属性预测信息,重建待解码点的属性信息(可以称为属性重建信息)。
基于上述基础概念的介绍,本申请实施例提供一种点云处理方法、装置、存储介质及电子设备。
为支持本申请实施例中的点云处理方法,本申请实施例在现有技术的基础上,在系统层添加了若干描述性字段,定义了相应的高层语法数据结构。在后续内容中,将结合各种语法表对上述点云处理方法进行详细介绍。
在本申请实施例中,点云序列中存在起始码,起始码是一组特定的位串,可以通过起始码提取点云序列中各部分的对应内容。在符合本申请实施例的点云码流中,除起始码外的任何情况下都不应出现这些位串。
起始码由起始码前缀和起始码值构成,起始码前缀是位串‘0000 0000 0000 000000000001’,所有的起始码都应字节对齐。
起始码值是一个8位整数,用来表示起始码的类型,请参见下表1,表1是本申请实施例提供的起始码的类型表。
起始码类型 | 起始码值(十六进制) |
点云序列起始码(sequence_start_code) | 00 |
点云序列结束码(sequence_end_code) | 01 |
几何序列起始码(geometry_start_code) | 02 |
属性序列起始码(attribute_start_code) | 03 |
点云帧起始码(frame_start_code) | 04 |
用户数据起始码(user_data_start_code) | 05 |
点云几何片头起始码(gometry_slice_header_start_code) | 06 |
点云属性片头起始码(attribute_slice_header_start_code) | 07 |
几何数据起始码(geometry_slice_payload_start_code) | 08 |
属性数据起始码(attribute_slice_payload_start_code) | 09 |
颜色数据起始码(color_slice_payload_start_code) | 0A |
反射率数据起始码(refl_slice_payload_start_code) | 0B |
保留 | 0C~FF |
本申请实施例中,点云序列(PCC_sequence)是点云码流的最高层语法结构,点云序列由序列头(sequence_header)开始,后面跟着一个或多个点云帧。每个点云帧之前应有几何头(geometry_header),属性头(attribute_header)和一个或多个点云片数据,点云片数据包括片头和数据位流。当成功解析序列头时,继续解析点云码流中的其他数据。
或者,点云序列由序列头、几何头、属性头开始,后面跟着一个或多个点云帧。每个点云帧之前应有帧头和一个或多个点云片数据。当成功解析序列头、几何头、属性头时,继续解析码流中的其他数据。
序列头包括点云序列解码所需的参数集合。几何头包括点云的几何数据解码所需的参数集合。属性头包括点云的属性数据(比如本点云码流中的目标属性数据)解码所需的参数集合。
这里的点云片可以包括几何片信息(可简称几何片,geometry_slice),还可以包括属性片信息(可简称属性片,attribute_slice),每个点云片由片头和数据位流(geometry_data_bitstream)组成。
几何片包括几何片头和几何数据位流两个部分,几何数据位流包括相应几何片的几何数据。属性片包括属性片头和属性数据位流(general_attribute_data_bitstream)两个部分,属性数据位流包括相应属性片的属性数据。也即是说,片头包括几何片头和属性片头,数据位流包括几何数据位流和属性数据位流。
需要指出的是,针对上述点云序列的各个部分,均可包括解码指示信息,本申请实施例主要针对序列头、帧头、属性头和属性片头添加了若干描述性字段,作为解码指示信息,以支持本申请的点云处理方法的实时步骤。
请参见图4,图4是本申请实施例提供的点云处理方法的流程示意图,该点云处理方法可以应用于内容呈现设备,具体包括:
步骤011:获取点云码流的解码指示信息,解码指示信息包括第一指示参数和第二指示参数中至少一种,第一指示参数设置于点云序列的序列级别的参数信息中,第二指示参数设置于点云序列的帧级别或片级别的参数信息中,第一指示参数用于进行序列级别的解码指示,第二指示参数用于进行帧级别或片级别的解码指示;
步骤012:根据第一指示参数或第二指示参数对点云码流进行解码。
其中,点云码流是对点云媒体编码压缩后的位流结构,其可以是内容呈现设备对封装文件进行解封装后提取出来的,点云媒体包括属性数据和几何数据,属性数据可以包括多种类型,比如颜色属性和反射率属性。编码压缩方法可以包括基于几何模型的点云压缩(Geometry-based Point Cloud Compression,GPCC)。
其中,点云序列由多个连续的点云帧形成,点云帧的帧序号为点云帧在点云序列中的序号。
其中,解码指示信息用于对点云码流中不同的数据进行解码指示。解码指示信息可以设置于序列头、帧头、属性头及属性片头等。
一个点云序列可使用同样的属性头和几何头,即序列级别的参数信息可包括序列头、属性头、几何头、点云码流等,帧级别的参数信息可包括帧头;或者,各个点云帧具有对应的属性头和几何头,此时序列级别的参数信息可包括序列头、点云码流等,帧级别的参数信息可包括属性头、几何头、帧头等。片级别的参数信息可包括几何片、属性片、几何数据位流、属性数据位流等。
序列级别的解码指示信息可以用于点云序列的各个点云帧进行解码指示;帧级别的解码指示信息可以用于对对应的点云帧(如解码指示信息所在的点云帧)进行解码指示;片级别的解码指示信息可以用于对对应的点云片(如解码指示信息所在的点云片)进行解码指示。
例如,设置于序列头中的解码指示信息可以用于对点云序列的各个点云帧进行解码指示;设置于帧头中的解码指示信息可以用于对对应的点云帧进行解码指示;设置于属性头中的解码指示信息可以用于对点云序列的各个点云帧进行属性解码指示;设置于属性片头中的解码指示信息可以用于对对应的点云片进行解码指示。
下面分别对设置于序列头、属性头、帧头及属性片头中的解码指示信息进行介绍:
(1)设置于序列头的解码指示信息
点云码流可以包括多个点云帧,连续的多个点云帧形成点云序列,解码指示信息可以设置于点云序列的序列头,设置于点云序列的序列头的解码指示信息,可以用于对各个点云帧进行解码指示。
在介绍设置于序列头的解码指示信息之前,在此先对通用序列头的语法元素进行介绍,通用序列头的语法元素如下表2:
/>
下面对上述表2所示的通用序列头中的语法元素进行解释:
档次标号(profile_id):8位无符号整数。表示位流符合的档次。
级别标号(level_id):8位无符号整数。表示位流符合的级别。
帧率(frameRate):无符号整数。表示点云序列的帧率(帧/每秒)。
包围盒原点x坐标高16位部分(bounding_box_offset_x_upper):16位数。表示包围盒x坐标32位有符号整数的高16位。
包围盒原点x坐标低16位部分(bounding_box_offset_x_lower):16位数。表示包围盒原点x坐标32位有符号整数的低16位。
包围盒原点x坐标即为:Bounding_box_offset_x=(bounding_box_offset_x_upper)<<16+bounding_box_offset_x_lower。
包围盒原点y坐标高16位部分(bounding_box_offset_y_upper):16位数。表示包围盒y坐标32位有符号整数的高16位。
包围盒原点y坐标低16位部分(bounding_box_offset_y_lower):16位数。表示包围盒原点y坐标32位有符号整数的低16位。
包围盒原点y坐标即为:Bounding_box_offset_y=(bounding_box_offset_y_upper)<<16+bounding_box_offset_y_lower。
包围盒原点z坐标高16位部分(bounding_box_offset_z_upper):16位数。表示包围盒z坐标32位有符号整数的高16位。
包围盒原点z坐标低16位部分(bounding_box_offset_z_lower):16位数。表示包围盒原点z坐标32位有符号整数的低16位。
包围盒原点z坐标即为:Bounding_box_offset_z=(bounding_box_offset_z_upper)<<16+bounding_box_offset_z_lower。
包围盒宽度高16位部分(bounding_box_size_width_upper):16位数。表示包围盒宽度32位无符号整数的高16位。
包围盒宽度低16位部分(bounding_box_size_width_lower):16位数。表示包围盒宽度32位无符号整数的低16位。
包围盒宽度即为:bounding_box_size_width=(bounding_box_size_width_upper)<<16+bounding_box_size_width_lower。
包围盒高度高16位部分(bounding_box_size_height_upper):16位数。表示包围盒高度32位无符号整数的高16位。
包围盒高度低16位部分(bounding_box_size_height_lower):16位数。表示包围盒高度32位无符号整数的低16位。
包围盒高度即为:bounding_box_size_height=(bounding_box_size_height_upper)<<16+bounding_box_size_height_lower。
包围盒深度高16位部分(bounding_box_size_depth_upper):16位数。表示包围盒深度32位无符号整数的高16位。
包围盒深度低16位部分(bounding_box_size_depth_lower):16位数。表示包围盒深度32位无符号整数的低16位。
包围盒深度即为:bounding_box_size_depth=(bounding_box_size_depth_upper)<<16+bounding_box_size_depth_lower。
几何量化步长高16位部分(geometry_quant_step_upper):16位数。表示几何量化步长32位浮点数的高16位。
几何量化步长低16位部分(geometry_quant_step_lower):16位数。表示几何量化步长32位浮点数的低16位。
量化步长即为:geometry_quant_step=(float)((geometry_quant_step_upper<<16)+geometry_quant_step_lower)。
几何移除重复点标志(geomRemoveDuplicateFlag):二值变量。值为‘1’表示几何编码前去除重复点,即几何位置相同的点;值为‘0’表示不去除重复点。
属性存在标志(attribute_present_flag):二值变量。值为‘1’表示本码流包含属性编码;值为‘0’表示本码流不包含属性编码,即不包含属性头,属性片头,和属性信息。
多属性信息开启标志(sps_multi_set_flag):二值变量。值为‘1’表明开启支持同一属性数据可以使用多套属性信息;值为‘0’表明关闭支持同一属性数据可以使用多套属性信息,同一属性数据只可以使用一套属性信息。当sps_multi_set_flag不出现在码流时,其默认值为零。
最大属性数减一(maxNumAttributesMinus1):无符号整数。加1表示本标准码流支持的最大属性种类的编码数目,取值范围为[0,127]。当maxNumAttributesMinus1不出现在码流的时候,maxNumAttributesMinus1默认为-1。
颜色量化参数(colorQuantParam):无符号整数。表示颜色属性量化参数。
反射率量化参数(reflQuantParam):无符号整数。表示反射率属性量化参数。
(2)设置于帧头的解码指示信息
点云码流可以包括多个点云帧,解码指示信息可以设置于点云帧的帧头,设置于点云帧的帧头的解码指示信息,可以用于对帧头对应的点云帧进行解码指示。
在介绍设置于帧头的解码指示信息之前,在此先对通用帧头的语法元素进行介绍,通用帧头的语法元素如下表3:
下面对上述表3所示的通用帧头中的语法元素进行解释:
帧序号(frame_idx):该字段表示点云帧在点云序列中的序号,点云帧序号的取值范围为[0,65535]。每个点云帧的序号为前一个点云帧序号加1,第一个点云帧序号为0。当某个点云帧序号达到65535后,其后一帧点云帧序号重置为0。
帧内点云片数量减一(frame_num_slice_minus_one):该字段取值为当前点云帧内点云片的数量减一。
点云总点数高16位部分(geom_num_points_upper):16位数。表示点云经可能进行的几何量化和去重后点的个数32位无符号整数的高16位。
点云总点数低16位部分(geom_num_points_lower):16位数。表示点云经可能进行的几何量化和去重后点的个数32位无符号整数的低16位。
点的个数即为:geom_num_points=(geom_num_points_upper)<<16+geom_num_points_lower。
(3)设置于属性头的解码指示信息
点云码流可以包括多个点云帧,解码指示信息可以设置于点云帧的属性头,设置于点云帧的属性头的解码指示信息,可以用于对点云帧进行属性解码指示。
在介绍设置于属性头的解码指示信息之前,在此先对通用属性头的语法元素进行介绍,通用属性头的语法元素如下表4:
/>
/>
/>
下面对上述表4所示的通用属性头中的语法元素进行解释:
属性存在标志字段(attributePresentFlag[attrIdx]):二值变量。值为‘1’表示点云码流包含第attrIdx属性编码(即属性索引为attrIdx的属性类型下的属性编码);值为‘0’表示点云码流不包含第attrIdx属性编码。attrIdx表示属性索引,是一个界于0到15的整数。
其含义由下表5解释:
attrIdx | Attribute description(属性描述) |
0 | Color(颜色) |
1 | Reflectance(反射率) |
2..15 | 保留 |
属性数据数目减一字段(attribute_data_num_set_minus1[attrIdx]):无符号整数。加1表示点云码流中由属性索引attrIdx确定的属性支持的该属性多数据集的数目,这是一个0到127间的数字,当attribute_data_num_set_minus1[attrIdx]不出现在点云的时候,其默认值为-1。
属性信息开启标志字段(multi_set_flag[attrIdx]):二值变量。值为‘1’表明开启由属性索引attrIdx确定的属性可以支持使用多套属性信息;值为‘0’表明关闭由属性索引attrIdx确定的属性支持使用多套属性信息,该属性数据只可以使用一套属性信息。当multi_set_flag[attrIdx]不出现在码流时,其默认值为零。
属性信息数目减一字段(attribute_info_num_set_minus1[attrIdx]):无符号整数。加1表示点云码流中由属性索引attrIdx确定的属性支持的属性信息的数目,这是一个0到127间的数字,当attribute_info_num_set_minus1[attrIdx]不出现在码流的时候,其默认值为-1。
属性变换算法标志字段(transform):无符号整数,介于0和2之间。用于控制属性编码模式。值为‘0’时使用属性预测模式对属性编码;值为‘1’时使用多层变换模式对属性编码,值为‘2’时使用属性预测变换模式对属性编码。
属性变换精度值(kFracBits):无符号整数。用于表示属性变换时的定点化运算的移位精度。
属性变换系数量化参数差值字段(attrTransformQpDelta):无符号整数。用于表示与属性残差量化参数的差值。属性变换系数量化参数attrTransformQp=attrQuantParam+attrTransformQpDelta。
属性变换点数字段(attrTransformNumPoints):无符号整数。用于表示属性变换的点数,即使用attrTransformNumPoints点的小波变换。attrTransformNumPoints=0表示使用片中所有的点进行小波变换。
最大搜索的邻居点数对数值减七字段(maxNumOfNeighbour_log2_minus7):无符号整数。用于导出变量maxNumOfNeighbour,表示可用于搜索的最大已编码邻居数目以控制在属性预测时邻居候选点的搜索范围及硬件缓存的点的数目。maxNumOfNeighbour通过如下公式求得maxNumOfNeighbour=2(maxNumOfNeighbor_log2_minus7+7),maxNumOfNeighbour_log2_minus7是一个界于0到3的整数。
属性残差二次预测字段(cross_component_pred):二值变量。值为‘1’表示允许属性残差二次预测;值为‘0’表示不允许属性残差二次预测。
残差编码顺序开关字段(orderSwitch):二值变量。值为‘1’表示残差编码顺序是UYV/GRB顺序;值为‘0’表示残差编码顺序是YUV/RGB顺序。
色度通道Cb量化参数偏移量字段(chromaQpOffsetCb):有符号整数。用于控制Cb通道量化参数,取值范围为-16~16,如果属性头中不存在chromaQpOffsetCb,则chromaQpOffsetCb的值为0。即choramQpCb=Clip3(minQP,maxQP,attribute_qp+chromaQpOffsetCb)。注意亮度通道的量化参数lumaQp=attribute_qp,最小所支持的量化参数为minQP=0,最大所支持的量化参数为maxQP=63。
色度通道Cr量化参数偏移量字段(chromaQpOffsetCr):有符号整数。用于控制Cr通道量化参数,取值范围为-16~16,如果属性头中不存在chromaQpOffsetCr,则chromaQpOffsetCr的值为0。即choramQpCr=Clip3(minQP,maxQP,attribute_qp+chromaQpOffsetCr)。注意亮度通道的量化参数lumaQp=attribute_qp,最小所支持的量化参数为minQP=0,最大所支持的量化参数为maxQP=63。
最近邻点预测参数一字段(nearestPredParam1):无符号整数。用于控制最近邻点预测的阈值。
最近邻点预测参数二字段(nearestPredParam2):无符号整数。用于控制最近邻点预测的阈值。该近邻点预测的阈值表示为attrQuantParam*nearestPredParam1+nearestPredParam2。
空间偏倚系数字段(axisBias):无符号整数。用于控制属性预测信息计算中在Z方向上的偏移量。
属性输出比特深度减一字段(outputBitDepthMinus1):无符号整数。用于控制属性输出比特深度,这一值界于0到15之间。属性输出比特深度outputBitDepth=outputBitDepthMinus1+1。如果该语法元素不在码流里,默认值为零。
颜色重排序模式字段(colorReorderMode):无符号整数。用于表示当前颜色信息选择的重排序模式。‘0’表示原始点云输入顺序,‘1’表示Hilbert(希尔伯特)重排序,‘2’表示Morton(莫顿)重排序。
反射率重排序模式字段(reflReorderMode):无符号整数。用于表示当前反射率信息选择的重排序模式。‘0’表示原始点云输入顺序,‘1’表示Hilbert(希尔伯特)重排序,‘2’表示Morton(莫顿)重排序。
最大缓存限制参数字段(log2maxNumofCoeffMinus8):无符号整数,介于0到16之间。
变换系数的最大缓存限制参数maxNumofCoeff由如下公式计算得到:maxNumofCoeff=1<<(log2maxNumofCoeffMinus8+8)。当log2maxNumofCoeffMinue8不出现在码流的时候,maxNumofCoeff默认为1。
最大延迟限制参数字段(log2coeffLengthControlMinus8):无符号整数。用于限制在属性变换编码中变换参数的最大延迟的个数。其中,具体最大延迟点数计算为maxLatency=maxNumofCoeff*(1<<(log2coeffLengthControlMinus8+8))。maxLatency的最大值为131072。
属性编码顺序字段(attrEncodeOrder):二值变量。用于控制当点云包含多种属性类型时,属性的编码顺序。值为‘0’表示先编码颜色,再编码反射率;值为‘1’表示先编码反射率,再编码颜色。
自适应指数哥伦布编码滑动窗口大小字段(log2_golomb_group_size):无符号整数。表示属性预测残差或变换系数的自适应指数哥伦布编码滑动窗口大小的对数值。自适应指数哥伦布编码滑动窗口大小表示为:golomb_sliding_window_size=2log2_golomb_group_size。
跨类型属性预测字段(crossAttrTypePred):二值变量。值为‘1’表示允许进行跨类型属性预测;值为‘0’表示不允许进行跨类型属性预测。
跨类型的属性预测权重参数1(crossAttrTypePredParam1):15位无符号整数。用于控制跨类型属性预测中,计算几何信息距离和属性信息距离的权重参数1。
跨类型的属性预测权重参数2(crossAttrTypePredParam2):21位无符号整数。用于控制跨类型属性预测中,计算几何信息距离和属性信息距离的权重参数2。
反射率组预测标志字段(refGroupPred):二值变量。用于控制是否开启预测变换的反射率组预测模式,值为‘1’时开启组预测,值为‘0’时关闭组预测。
颜色初始预测变换比例(colorInitPredTransRatio):有符号整数。用于属性压缩的多层变换算法中(transform=1),控制构建预测变换树时颜色所用初始距离阈值的大小。
反射率初始预测变换比例(refInitPredTransRatio):有符号整数。用于属性压缩的多层变换算法中(transform=1),控制构建预测变换树时反射率所用初始距离阈值的大小。
变换残差层标志字段(transResLayer):二值变量。用于属性压缩的多层变换算法中(transform=1),控制是否使用属性残差补偿。当transResLayer=1,使用属性残差补偿;transResLayer=0不使属性残差补偿。
颜色指数哥伦布阶数(ColorGolombNum):无符号整数,介于0到8之间。用以表示当前颜色预测残差或变换系数在进行解码时,采用的K阶指数哥伦布的阶数K=ColorGolombNum。
反射率指数哥伦布阶数(RefGolombNum):无符号整数,介于0到8之间。用以表示当前反射率预测残差或变换系数在进行解码时,采用的K阶指数哥伦布的阶数K=RefGolombNum。
点云自适应量化工具标志字段(colorQPAdjustFlag):二值变量。值为‘0’表示关闭点云自适应量化工具;值为‘1’表示打开点云自适应量化工具。
点云几何量化前后点数比值(colorQPAdjustScalar):无符号整数。用于计算点云自适应量化工具的距离阈值。
反射率属性预测精度值(predFixedPointFracBit):无符号整数。用于表示反射率属性预测时的定点化运算的移位精度。predFixedPointFracBit=0表示不使用定点化运算。
属性值变化统计窗口大小(log2_pred_dist_weight_group_size):无符号整数。用于控制属性值变化统计窗口的大小。窗口大小的计算为N=2log2_pred_dist_weight_group_size。
颜色最大变换阶数(colorMaxTransNum):无符号整数,取值范围为[0,8]。用以表示当前颜色预测变换中的最大变换阶数。
反射率最大变换阶数(refMaxTransNum):无符号整数,取值范围为[0,8]。用以表示当前反射率预测变换中的最大变换阶数。
多属性分组参数(multi_attr_group_id):无符号整数数组。当attribute_data_num_set_minus1[1]大于0时,定义了多反射率属性的分组情况,同组属性需要按组解码属性数据码流。multi_attri_group_id[i]表示第i个属性数据属于第multi_attri_group_id[i]属性分组,取值介于0到127之间。multi_attr_group_id[0]的取值为0,且数组中的后一个元素取值与前一个元素取值相等或大1。定义multi_attri_group_num表示第multi_attri_group_id[i]属性分组内的属性数据个数,可通过累加连续相同multi_attri_group_id[i]的个数得到。
以上内容介绍了点云帧的通用属性头的语法元素。
(4)设置于属性片头的解码指示信息
解码指示信息可以设置于属性片头,设置于属性片头的解码指示信息,可以用于对点云片进行属性解码指示。
在介绍设置于属性片头的解码指示信息之前,在此先对通用属性片头的语法元素进行介绍,通用属性片头的语法元素如下表6:
下面对上述表6所示的通用属性片头中的语法元素进行解释:
片标号(slice_id):无符号整数。表示片的标号。
属性信息索引(attributeID):无符号整数。规定了属性片使用的属性头中相应类型属性的第attributeID组属性信息,这是一个0到attribute_info_num_set_minus1[attrIdx]+1间的数字(当属性片为颜色属性片时,attIdx对应为0,当属性片为反射率属性片时,attIdx对应为1)。当该语法元素在码流中不存在的时候,其默认值为0。
反射率属性量化参数偏移量(reflQPoffset):有符号整数。用于控制反射率属性量化参数,取值范围为[-32,32]。
其中,第一指示参数设置在序列级别的参数信息中,如设置在序列头,用于对点云码流中的各个点云帧进行解码指示。第二指示参数设置在帧级别或片级别的参数信息中,如设置在如帧头,用于对对应的点云帧(即第二指示参数所在的帧头对应的点云帧)进行解码指示;或者,如设置在片头(如几何片头或属性片头),用于对对应的点云片(即第二指示参数所在的片头对应的点云帧)进行解码指示,在片头为几何片头时,对对应的几何片进行几何解码指示,在片头为属性片头时,对对应的属性片进行属性解码指示。
第二指示参数一般为几何或属性逐帧或逐片变化的参数,如每个点云帧由于点云不同,其对应的包围盒相关参数也一般不同;或者,各个点云帧的量化参数之间存在差异;或者,各个点云片的颜色初始预测变换比(colorInitPredTransRatio)之间存在差异。
第一指示参数用于对各个点云帧(如点云序列的每个点云帧)进行统一的解码指示,即每个点云帧都可以使用第一指示参数进行解码,而第二指示参数则仅对帧头所在的点云帧或片头所在的点云片进行解码指示,即每个点云帧可根据帧头中的第二指示参数进行解码,每个点云片可根据片头中的第二指示参数进行解码。
本申请中,在获取到点云码流的解码指示信息后,可以获取解码指示信息中,位于序列头的第一指示参数,及位于帧头或片头的第二指示参数。
在解码时,若解码指示信息仅包括第一指示参数,而不包括第二指示参数,则可以选择序列头的第一指示参数来对点云码流中的每个点云帧进行解码,从而无需逐帧计算每个点云帧对应的参数,如每个点云帧对应的包围盒相关参数、量化参数等,可减少解码所需的计算量,提高解码效率。
或者,在解码时,若解码指示信息仅包括第二指示参数,而不包括第一指示参数,可以选择每个点云帧的帧头中的第二指示参数,来对对应的点云帧进行解码,或者选择每个点云片的片头中的第二指示参数,来对对应的点云片进行解码。为了避免指示冲突,一般同一点云帧中,仅在帧头或片头中定义第二指示参数。如每个帧头或片头的第二指示参数中均包含包围盒相关参数、量化参数等,通过第二指示参数对对应的点云帧进行逐帧或逐片解码,可提高点云的解码准确性。
其中,包围盒相关参数可包括包围盒原点坐标字段和包围盒尺寸字段。
包围盒原点坐标字段包括:包围盒原点x坐标高16位部分(bounding_box_offset_x_upper)、包围盒原点x坐标低16位部分(bounding_box_offset_x_lower)、包围盒原点x坐标、包围盒原点y坐标高16位部分(bounding_box_offset_y_upper)、包围盒原点y坐标低16位部分(bounding_box_offset_y_lower)、包围盒原点y坐标、包围盒原点z坐标高16位部分(bounding_box_offset_z_upper)、包围盒原点z坐标低16位部分(bounding_box_offset_z_lower)、包围盒原点z坐标;
包围盒尺寸字段包括包围盒宽度高16位部分(bounding_box_size_width_upper)、包围盒宽度低16位部分(bounding_box_size_width_lower)、包围盒宽度、包围盒高度高16位部分(bounding_box_size_height_upper)、包围盒高度低16位部分(bounding_box_size_height_lower)、包围盒高度、包围盒深度高16位部分(bounding_box_size_depth_upper)、包围盒深度低16位部分(bounding_box_size_depth_lower)、包围盒深度。
量化参数可包括几何量化参数和属性量化参数等。
例如,请参见下表7、表8和表9,下表7是本申请实施例提供的序列头的语法定义表,包含了第一指示参数,如包围盒的相关参数,表8是本申请实施例提供的帧头的语法定义表,包含了第二指示参数,如包围盒的相关参数和颜色初始预测变换比;表9是本申请实施例提供的片头(具体为属性片头)的语法定义表,包含了第二指示参数,如颜色初始预测变换比。容易理解的是,表7、表8和表9并非限定为完整的语法定义表。
表7
/>
表8
/>
表9
其中,表7、表8和表9中各个字段的解释可参见表2、表3和表6,此处不再赘述。
本申请的点云处理方法通过获取点云码流的解码指示信息,并在解码指示信息中定义了序列级别的第一指示参数和帧级别或片级别的第二指示参数,然后根据第一指示参数或第二指示参数进行解码。在根据序列级别的第一指示参数解码时,点云序列的各个点云帧都使用统一的第一指示参数解码进行解码,无需针对每个点云帧解析对应的指示参数来解码,解码效率较高。在根据帧级别或片级别的第二指示参数解码时,根据第二指示参数可实现帧级别或片级别的解码,从而使得每个点云帧或点云片都存在适配的第二指示参数,实现第二指示参数的逐帧变化或逐片变化,相较于每次解析点云帧时,还需要去解析序列头获取到该点云帧对应的指示参数,以进行解码,解码效率较低而言,无需每个点云帧都到序列头去解析对应的指示参数,可快速获取到对应的第二指示参数,解码效率相对较高。
在一些实施例中,在解码指示信息同时包括第一指示参数和第二指示参数的情况下,可在序列头中设置第三指示参数,第三指示参数用于指示解码时,根据第一指示参数还是第二指示参数进行。
请继续参阅表7和表8,以包围盒相关参数为例,第三指示参数为包围盒标志位(global_bounding_box_flag),在global_bounding_box_flag为第一预设数值(如true)的情况下,可根据第一指示参数对点云序列的每个点云帧进行解码;而在global_bounding_box_flag为第二预设数值(如false)的情况下,可根据第二指示参数对点云序列的每个点云帧进行解码。
在一些实施例中,第一指示参数根据各个点云帧的第二指示参数确定;或者,第一指示参数为预设值。
如第一指示参数根据各个点云帧的第二指示参数中的最大值确定,第一指示参数包括包围盒最大x坐标、y坐标和z坐标,以及最大宽度、最大高度和最大深度。或者,第一指示参数可以为预设值,预设值可为经验值,或者由编码端和解码端事先约定好的值。
在一些实施例中,请参阅图5,解码指示信息还包括第四指示参数,第四指示参数用于指示各个点云帧的分组方式,点云处理方法还包括:
步骤013:根据第四指示参数确定各个点云帧的解码方式,解码方式包括直接预测方法和预测变换方法中至少一种。
其中,解码方式指的是解码端进行解码所使用的方法,主要包括直接预测方法和预测变换方法中至少一种。以解码属性位流为例,直接预测方法主要通过解析获得当前组的各点的残差值,获得各点的预测值,从而确定当前点的重建属性信息;预测变换方法主要通过解析获得当前组的变换系数,经过反变换后获得当前组的残差值,获得各点的预测值,从而确定当前点的重建属性信息。
具体地,不同的分组方式,需要使用对应的解码方式,才可以保证解码效率。而为了让解码端确定以哪种解码方式进行解码,则需要进行解码指示,以使得解码端确定具体的解码方式。
解码指示信息还包括第四指示参数,通过指示点云帧的分组方式的第四指示参数,即可确定与第四指示参数对应的解码方式。
第四指示参数可设置于序列头、帧头、属性头、数据位流(如几何位流或属性位流)等合适的位置,在此不作限制,只需保证解码端能够解析得到分组方式,从而确定对应的解码方式即可。
在一些实施例中,解码指示信息中并不设置第四指示参数,解码端的解码方式为与编码端约定好的默认方式,使用默认方式来实现解码。
在一些实施例中,分组方式包括以下方式中至少一种:
(1)根据预设分组阈值,将各个分组中的点分为多个子分组,在分组时,前一个子分组的点的数量达到预设分组阈值后,进行后一个子分组的分组;
(2)在进行分组的当前点为重复点的情况下,使用当前点补齐当前子分组,直至当前子分组的点的数量达到预设分组阈值后,将剩余的重复点各自分为一个子分组;其中,重复点为与所在分组中的任一个点或者前N个点中的任一个点相同的点,N为正整数;
(3)在进行分组的当前点为重复点的情况下,使用当前点补齐当前子分组,直至当前子分组的点的数量达到预设分组阈值后,停止对剩余重复点继续进行分组;
(4)在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并按预设分组阈值,对剩余的点继续进行分组;
(5)在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并将剩余的重复点各自分为一个子分组;
(6)在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并停止对剩余重复点继续进行分组。
具体地,在进行分组时,会先根据初始右移位数来进行分组,根据初始右移位数对每个点对应的编码(如希尔伯特码)进行右移,得到右移后的数值,如当前点的编码为10位二进制数值,初始右移位数为3,则可得到剩余7位形成的数值(如二进制表示的10位数值,从右往左的7位数值)。然后基于得到右移后的数值,确定数值相同的点为同一分组,从而得到多个分组。
之后再对每个分组进行细分,得到每个分组对应的子分组。上述多种分组方式均为针对每个分组进行细分组的方法。
对于方式(1):在分组时不会区分当前点是否为重复点,将当前分组内的多个点,按照预设分组阈值分组。在分组时,前一个子分组的点的数量达到预设分组阈值后,进行后一个子分组的分组,也即是说,对于每个分组中而言,除了最后一个子分组中的点的数量小于或等于预设分组阈值之外,其他的子分组的点的数量均为预设分组阈值。
其中,对于颜色属性而言,预设分组阈值可以是最大变换阶数colorMaxTransNum;对于反射率属性而言,预设分组阈值可以是最大变换阶数refMaxTransNum。
其中,重复点即为与当前分组中的任一个点相同或者前N个点(如前1个点)中的任一个相同的点。当前点为重复点,即表示在当前分组中存在与当前点相同的点,或者当前点之前的N个点中存在与当前点相同的点,如两点的编码(如几何编码或属性编码)相同时确定两点相同。
对于方式(2)而言:在分组时会考虑当前点是否为重复点,对于非重复点而言,分组方式不变,与方式(1)基本类似,而在当前点为重复点的情况下,会首先使用当前点去补齐当前子分组。在当前子分组被补满达到预设分组阈值之后,在后续进行重复点的分组时,会将每个重复点各自单独分为一个子分组。如当前分组有10个点,预设分组阈值为5,在第一个子分组分完后,剩余5个点中还存在2个重复点,此时则会在对重复点进行分组时,将剩余2个重复点单独分为2个子分组。
对于方式(3)而言:在分组时会考虑当前点是否为重复点,对于非重复点而言,分组方式不变,与方式(1)基本类似,而在当前点为重复点的情况下,会首先使用当前点去补齐当前子分组。在当前子分组被补满达到预设分组阈值之后,在后续不会再对重复点进行分组。如当前分组有10个点,预设分组阈值为5,在第一个子分组分完后,剩余5个点中还存在2个重复点,此时则不再对该2个重复点进行分组。
对于方式(4)而言:在分组时会考虑当前点是否为重复点,对于非重复点而言,分组方式不变,与方式(1)基本类似,而在当前点为重复点的情况下,不会使用当前点补齐当前子分组,而是确定当前子分组已分组完成,无论当前子分组是否达到预设分组阈值,之后则会继续下一个子分组的分组,将当前点放入下一个子分组,若下一个点仍为重复点,则会将该下一个子分组确定为分组完成,然后继续该下一个子分组的下一个子分组的分组过程,如此循环,直至当前分组全部分组完成。
对于方式(5)而言:在分组时会考虑当前点是否为重复点,对于非重复点而言,分组方式不变,与方式(1)基本类似,而在当前点为重复点的情况下,不会使用当前点补齐当前子分组,而是确定当前子分组已分组完成,无论当前子分组是否达到预设分组阈值,之后则会继续下一个子分组的分组,并在后续进行重复点的分组时,会将每个重复点各自单独分为一个子分组。
对于方式(6)而言:在分组时会考虑当前点是否为重复点,对于非重复点而言,分组方式不变,与方式(1)基本类似,而在当前点为重复点的情况下,不会使用当前点补齐当前子分组,而是确定当前子分组已分组完成,无论当前子分组是否达到预设分组阈值,之后则会继续下一个子分组的分组,并在后续分组,不会对剩余的重复点进行分组。
针对不同的分组方式,第四指示参数能够通过设置不同的数值,来进行解码指示,如第四指示参数为1至4中任一整数,第四指示参数为1至4分别对应方分组方式(1)至(4),即第四指示参数为1,表示分组方式为方式(1)。
在一些实施例中,在待解码的当前子分组包含重复点的情况下,根据第四指示参数确定当前子分组的解码方式。
由于分组方式会针对重复点进行设置,因此,在解码时,也可仅针对包含重复点的子分组,来确定该子分组对应的解码方式。在确定待解码的当前子分组包含重复点时,根据解析第四指示参数得到的分组方式,来确定对当前子分组进行解码的解码方式。
在一些实施例中,请参阅图6,在编码和解码时,都需要进行分组,点云处理方法包括:
步骤014:根据点云帧的量化参数的相关参数或者各个子分组中的点的最大数量确定是否进行动态分组;
步骤015:若是,则根据连续的前M个子分组中的点的数量平均值,调整当前右移位数,M为正整数;
步骤016:根据调整后的当前右移位数,确定进行分组的点对应的编码的目标位数;
步骤017:根据目标位数内的数值重新进行分组。
具体地,本申请在分组时,会进行动态分组的判断,以防止分组后的每个分组中的点数量不符合预期,影响编解码性能。
因此,在分组时,会根据点云帧的量化参数的相关参数或者各个子分组中的点的最大数量确定是否进行动态分组。
例如,点云帧的量化参数的相关参数可包括初始偏移shift,在初始偏移大于0的情况下,确定进行动态分组,在初始偏移小于0的情况下,确定不进行动态分组;或者,在初始偏移大于0的情况下,确定不进行动态分组,在初始偏移大于0的情况下,确定进行动态分组。
再例如,通过统计点云帧中的各个子分组中的点的最大数量,判断最大数量是否大于预设数量阈值,若大于预设阈值,则确定进行动态分组,若小于或等于预设阈值,则确定不进行动态分组。或者,判断最大数量是否小于预设数量阈值,若小于预设阈值,则确定进行动态分组,若大于或等于预设阈值,则确定不进行动态分组。
如此,在分组不符合预期的情况下,进行动态分组,以使得分组尽量符合预期。
在进行动态分组时,会获取连续的前M个(如前8个、10个、15个等)子分组的点数量的平均值,并通过平均值来判断是否调整进行分组的当前右移位数,如平均值小于2的情况下,将当前右移位数增加1,在平均值大于8的情况下,将当前右移位数减少1,然后基于调整后的当前右移位数,再次对进行分组的点(如点云帧中的点)进行分组,具体可先确定每个点的编码进行右移后的目标位数(如编码为10位二进制数,当前右移位数为3,则获取右移3位后的剩余七位作为目标位数),将目标位数形成的数值相同的点分到同一组内,以得到点的数量较为合理的多个分组。
在一些实施例中,点云处理方法还包括:
步骤018:在当前待解码点为重复点的情况下,确定当前待解码点的各个属性类型的预测值分别为当前待解码点的前一个点的各个属性类型的重建值,且确定当前待解码点的属性类型的当前残差值为非负数或非正数。
具体地,对于重复点的解码,可在确定当前待解码点为重复点的情况下,根据当前待解码点的前一个点的各个属性类型的重建值来确定当前待解码点的各个属性类型的预测值,如将当前待解码点的前一个点的各个属性类型的重建值,分别作为当前待解码点的各个对应的属性类型的预测值,从而快速解码得到当前待解码点的预测值。
其中,对于反射率属性而言,在当前待解码点为重复点的情况下,确定当前待解码点的反射率属性的预测值为当前待解码点的前一个点的反射率属性的重建值,且确定当前待解码点的反射率属性的当前残差值的符号位为非负数或非正数。
对于颜色属性而言,在当前待解码点为重复点的情况下,确定当前待解码点的颜色属性的第K分量的预测值为当前待解码点的前一个点的第K分量的重建值,且确定当前待解码点的颜色属性的当前残差值的第K分量为非负数或非正数,K为1至3的任一整数;或者在当前待解码点为重复点的情况下,确定当前待解码点的颜色属性的各个分量的预测值分别为当前待解码点的前一个点的各个分量的重建值,且确定当前待解码点的颜色属性的当前残差值的各个分量为非负数或非正数。
且在编码时,对于重复点的残差值进行了相应处理,以使得解码过程无需识别重复点的符号位。编码时对重复点的残差值的处理包括以下方式中的一种:
(1)当重复点的残差值为负数的情况下,将重复点的残差值置为0;
(2)针对颜色属性,当重复点的残差值的第K分量为负数的情况下,将第K分量置为0;
(3)针对颜色属性,当重复点的残差值的任一分量为负数的情况下,将该分量置为0。
此时,对于情况(1),针对颜色属性或反射率属性,在对为重复点的待解码点进行解码时,可无需识别符号位,直接将待解码点的残差值确定为非负数来进行解码即可。对于情况(2),针对颜色属性,在对为重复点的待解码点的颜色属性进行解码时,可无需识别残差值的第K分量的符号位,直接将待解码点的残差值的第K分量确定为非负数来进行解码即可。对于情况(3),针对颜色属性,在对为重复点的待解码点的颜色属性进行解码时,可无需识别残差值的任一分量的符号位,直接将待解码点的残差值的每个分量确定为非负数来进行解码即可。
编码时对重复点的残差值的处理还可包括以下方式中的一种:
(1)当重复点的残差值为正数的情况下,将重复点的残差值置为0;
(2)针对颜色属性,当重复点的残差值的第K分量为正数的情况下,将第K分量置为0;
(3)针对颜色属性,当重复点的残差值的任一分量为正数的情况下,将该分量置为0。
此时,对于情况(1),针对颜色属性或反射率属性,在对为重复点的待解码点进行解码时,可无需识别符号位,直接将待解码点的残差值确定为非正数来进行解码即可。对于情况(2),针对颜色属性,在对为重复点的待解码点的颜色属性进行解码时,可无需识别残差值的第K分量的符号位,直接将待解码点的残差值的第K分量确定为非正数来进行解码即可。对于情况(3),针对颜色属性,在对为重复点的待解码点的颜色属性进行解码时,可无需识别残差值的任一分量的符号位,直接将待解码点的残差值的每个分量确定为非正数来进行解码即可。
如下表10和表11的例子中,上述重复点的颜色属性的残差值的处理方法可定义在颜色属性数据中:
表10
表11
下面上表10和表11中的语法元素进行语义描述:
颜色第一分量残差值为零标志(color_first_comp_zero):二值变量。值为‘1’表示颜色第一分量残差值为0;值为‘0’表示颜色第一分量残差值不为0。当orderSwitch=0,颜色第一分量是Y(颜色空间是YUV)或者R(颜色空间是RGB);否则颜色第一分量是U(颜色空间是YUV)或者G(颜色空间是RGB)。
颜色第二分量残差值为零标志(color_second_comp_zero):二值变量。值为‘1’表示颜色第二分量残差值为0;值为‘0’表示颜色第二分量残差值不为0。当orderSwitch=0,颜色第二分量是U(颜色空间是YUV)或者G(颜色空间是RGB);否则颜色第二分量是Y(颜色空间是YUV)或者R(颜色空间是RGB)。
颜色残差分量(color_component[k]):二值变量。值为‘1’表示颜色第一分量残差值为正;值为‘0’表示颜色第一分量残差值为负。k=0,1,2。
颜色残差分量符号(color_component_sign[k]):二值变量。值为‘1’表示颜色第一分量残差值为正;值为‘0’表示颜色第一分量残差值为负。k=0,1,2。
残差编码顺序开关(orderSwitch):二值变量。值为‘1’表示表示残差编码顺序是UYV/GRB顺序;值为‘0’表示残差编码顺序是YUV/RGB顺序。
重复点标志字段(isDuplicatePoint):表示当前点是否为重复点,值为“true”表示当前点为重复点,值为“false”表示当前点不是重复点。
在一些实施例中,颜色属性通过RGB编码格式或YUV编码格式表示,RGB编码格式包括R、G、B三个分量,或者,YUV编码格式包括Y、U、V三个分量,第K分量为R、G、B三个分量中的任一个,或者Y、U、V三个分量中的任一个。
具体地,RGB和YUV均为颜色编码格式,RGB编码格式中的R分量表示红色分量,G分量表示绿色分量,B分量表示蓝色分量。YUV编码格式中的Y分量表示明度分量,U分量和V分量表示色度。
在颜色属性通过RGB编码格式表示时,第K分量为R、G、B三个分量中的任一个;在颜色属性通过YUV编码格式表示时,第K分量为Y、U、V三个分量中的任一个,从而快速确定待解码点的残差值的第K分量。
在一些实施例中,解码指示信息还包括第五指示参数,第五指示参数设置于序列头,第五指示参数的取值包括多个预设值中的任一个,第五指示参数的取值为不同预设值的情况下,对应的解码帧率不同。
具体地,在实际解码时,解码端一般只支持一个或多个解码帧率,因此,为了进行解码指示,可在序列头中设置第五指示参数,以指示解码帧率。第五指示参数为不同的预设值时,对应解码端支持的多个解码帧率中的一个。如下表12所示,为设置了第五指示参数的序列头。
其中,第五指示参数为frameRateCode,为4位无符号整数,用于规定帧率。
帧率和第五指示参数的取值的映射关系如下表13:
frameRateCode的值 | 帧率 |
0000 | 禁止 |
0001 | 10 |
0010 | 20 |
0011 | 30 |
0100 | 60 |
0101-1111 | 保留 |
可以理解,上表13仅为第五指示参数的取值和帧率的映射关系的其中一个示例,并不作为对第五指示参数的取值的限制。
在一些实施例中,属性头包括属性量化参数字段,属性量化参数字段用于控制点云的属性量化参数,属性量化参数用于对点云帧进行关于属性量化的属性解码指示。
具体地,通过在属性头中设置属性量化参数,可实现各个属性类型的属性量化参数的定义。具体设置如下表14,为定义了属性量化参数的属性头:
其中,属性量化参数字段为attributeQuantParam[attrIdx]。上表中的其它语法元素具体可参阅表4的描述,在此不再赘述。
在一些实施例中,属性头包括多个属性类型,每个属性类型均存在属性量化参数字段,目标属性类型下的属性量化参数字段用于控制点云在目标属性类型下的属性量化参数,目标属性类型下的属性量化参数用于对点云帧进行关于目标属性类型下属性量化的属性解码指示,目标属性类型为多个属性类型中的任一者。
具体地,在存在多个属性类型的情况下,可分别对每个属性类型对应的属性量化参数进行定义。具体如下表15,为对每个属性类型分别定义了其对应的属性量化参数的属性头:
其中,属性量化参数定义在基于属性信息数目减一字段(attribute_info_num_set_minus1[attrIdx])的循环语句中,可针对每个属性类型设置不同的属性量化参数,并通过循环语句将每个属性类型对应的属性量化参数解析得到。
除了属性量化参数的定义之外,还可为每个属性类型定义对应的属性量化参数偏移量。具体如下表16或17,为设置了每个属性类型对应的属性量化参数偏移量的属性头:
表16:
其中,表16中针对每个属性类型,分别定义了其对应的属性量化参数偏移量(attributeQuantParamOffset[attrIdx][i])。
表17:
其中,表17中针对每个属性类型,分别针对颜色属性和反射率属性定义了其对应的颜色属性量化参数偏移量(colorQuantParamOffset[i])和反射率属性量化参数偏移量(reflQuantParamOffset[i])。
可以理解,表16和表17中的语法元素的解释请参阅表4的描述,在此不再赘述。
在一些实施例中,当目标属性类型为反射率属性时,目标属性类型下的属性量化参数字段包括反射率属性量化参数和反射率属性量化参数偏移量中至少一种;当目标属性类型为颜色属性时,目标属性类型下的属性量化参数字段包括以下任一种:颜色属性量化参数、各个颜色分量的属性量化参数偏移量。
在一些实施例中,片头包括属性片头,解码指示信息还包括设置在属性片头的属性量化参数字段。
具体地,在定义属性量化参数字段时,除了定义在属性头中,还可以将属性量化参数字段定义到属性片头中,从而使得每个属性片存在对应的属性量化参数,在解码时,通过解析每个属性片对应的属性量化参数,来实现片级别的属性量化控制。
如下表18,为定义了属性量化参数字段的属性片头:
其中,reflQPoffset为反射率属性量化参数偏移量。可以理解,当属性量化参数字段的属性类型为反射率属性时,属性量化参数字段可包括反射率属性量化参数和反射率属性量化参数偏移量中至少一种;当属性量化参数字段的属性类型为颜色属性时,属性量化参数字段包括以下任一种:颜色属性量化参数、各个颜色分量的属性量化参数偏移量。
在一些实施例中,解码指示信息包括设置于点云序列的循环语句,点云帧包括点云片,点云片包括属性片,属性片位于循环语句中,属性片包括属性片头和属性数据位流,循环语句通过属性片头起始码遍历各个属性片。
具体地,为了实现对多个属性片的遍历解析,解码指示信息还可包括设置于点云序列的循环语句,通过将属性片设于循环语句中,然后循环语句通过属性片头起始码依次遍历解析各个属性片,保证所有属性片能够被解析。
如下表19,为定义了该循环语句的点云序列:
其中,循环语句如表19中的属性片(attribute_slice())所在的循环,通过属性片头起始码(attribute_slice_header_start_code)进行循环遍历,以遍历每个属性片。
在一些实施例中,点云帧包括点云片,点云片包括属性片,解码指示信息包括设置于属性片的循环语句,属性片包括属性片头和属性数据位流;
属性片头和属性数据位流均位于循环语句内,循环语句通过属性片头起始码遍历各个属性片头和属性数据位流,属性片头和属性数据位流一一对应。
具体地,还可通过在属性片内进行循环语句的定义,将属性片的属性片头和属性数据位流定义到循环语句中,并使得循环语句通过属性片头起始码遍历各个属性片头和属性数据位流,从而实现各个属性片的属性片头和属性数据位流的遍历解析。
如下表20所示,为定义了循环语句的属性片:
其中,属性片头(attribute_slice_header())和属性数据位流(general_attribute_data_bitstream())所在的循环语句,根据属性片头起始码进行遍历解析。
或者,将属性数据位流位于循环语句内,将属性片头设于循环语句外,使得属性片头能够对应一个或多个属性数据位流,循环语句通过属性数据起始码遍历各个属性数据位流。
如下表21所示,定义了循环语句的属性片:
其中,属性片头(attribute_slice_header())位于循环语句外,属性数据位流(general_attribute_data_bitstream())位于循环语句内,根据属性数据起始码进行遍历,解析属性片头对应的一个或多个属性数据位流。
根据上述实施例描述的方法,本申请实施例还提供了另一种点云处理方法,请参见图7,图7是本申请实施例提供的另一点云处理方法的流程示意图,该点云处理方法可以应用于内容制作设备,具体包括:
步骤021:获取点云数据;
步骤022:对点云数据进行编码压缩,得到点云码流,点云码流的解码指示信息包括第一指示参数和第二指示参数中至少一种,第一指示参数设置于点云序列的序列级别的参数信息中,第二指示参数设置于点云序列的帧级别或片级别的参数信息中,第一指示参数用于进行序列级别的解码指示,第二指示参数用于进行帧级别或片级别的解码指示,点云码流根据第一指示参数或第二指示参数解码。
在一些实施例中,序列头还包括第三指示参数,在第三指示参数的取值为第一预设数值的情况下,根据第一指示参数对点云序列的每个点云帧进行编码;
在第三指示参数的取值为第二预设数值的情况下,根据各个点云帧的第二指示参数对各个点云帧进行编码,第一预设数值和第二预设数值不同。
在一些实施例中,第一指示参数和第二指示参数均包括包围盒原点坐标字段、包围盒尺寸字段、和量化参数字段中至少一种。
在一些实施例中,第一指示参数根据各个点云帧的第二指示参数确定;或者,第一指示参数为预设值。
在一些实施例中,解码指示信息还包括第四指示参数,第四指示参数用于指示各个点云帧的分组方式。
在一些实施例中,分组方式包括以下方式中至少一种:
根据预设分组阈值,将各个分组中的点分为多个子分组,在分组时,前一个子分组的点的数量达到预设分组阈值后,进行后一个子分组的分组;
在进行分组的当前点为重复点的情况下,使用当前点补齐当前子分组,直至当前子分组的点的数量达到预设分组阈值后,将剩余的重复点各自分为一个子分组;其中,重复点为与所在分组中的任一个点或者前N个点中的任一个点相同的点,N为正整数;
在进行分组的当前点为重复点的情况下,使用当前点补齐当前子分组,直至当前子分组的点的数量达到预设分组阈值后,停止对剩余重复点继续进行分组;
在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并按预设分组阈值,对剩余的点继续进行分组;
在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并将剩余的重复点各自分为一个子分组;
在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并停止对剩余重复点继续进行分组。
在一些实施例中,根据点云帧的量化参数的相关参数或者各个子分组中的点的最大数量确定是否进行动态分组;若是,则根据连续的前M个子分组中的点的数量平均值,调整当前右移位数,M为正整数;根据调整后的当前右移位数,确定进行分组的点对应的编码的目标位数;根据目标位数内的数值重新进行分组。
在一些实施例中,序列头还包括第五指示参数,第五指示参数的取值包括多个预设值中的任一个,第五指示参数的取值为不同预设值的情况下,对应的编码帧率不同。
在一些实施例中,解码指示信息还包括设置于点云帧的属性头,属性头包括属性量化参数字段,属性量化参数字段用于控制点云的属性量化参数,属性量化参数用于对点云帧进行关于属性量化的属性编码指示。
在一些实施例中,属性头包括多个属性类型,每个属性类型均存在属性量化参数字段,目标属性类型下的属性量化参数字段用于控制点云在目标属性类型下的属性量化参数,目标属性类型下的属性量化参数用于对点云帧进行关于目标属性类型下属性量化的属性编码指示,目标属性类型为多个属性类型中的任一者。
在一些实施例中,片头包括属性片头,解码指示信息还包括设置在属性片头的属性量化参数字段。
在一些实施例中,当属性量化参数字段的属性类型为反射率属性时,属性量化参数字段包括反射率属性量化参数和反射率属性量化参数偏移量中至少一种;当属性量化参数字段的属性类型为颜色属性时,属性量化参数字段包括以下任一种:颜色属性量化参数、各个颜色分量的属性量化参数偏移量。
在一些实施例中,解码指示信息包括设置于点云序列的循环语句,点云帧包括点云片,点云片包括属性片,属性片位于循环语句中,循环语句通过属性片头起始码遍历各个属性片。
在一些实施例中,点云片包括属性片,解码指示信息包括设置于属性片的循环语句,属性片包括属性片头和属性数据位流;
属性片头和属性数据位流均位于循环语句内,循环语句通过属性片头起始码遍历各个属性片头和属性数据位流,属性片头和属性数据位流一一对应;或者,
属性数据位流位于循环语句内,循环语句通过属性数据起始码遍历各个属性数据位流,属性片头对应一个或多个属性数据位流。
需要指出的是,点云的编码过程和解码过程是可逆的,故本申请实施例提供的应用于内容制作设备的点云处理方法中涉及的语法定义可以参见上述应用于内容呈现设备的点云处理方法的实施例,此处不再赘述。
根据上述实施例描述的方法,本申请实施例还提供了一种点云处理装置,用于执行上述应用于内容呈现设备的点云处理方法中的步骤。请参见图8,图8是本申请实施例提供的点云处理装置的结构示意图。该点云处理装置300应用于内容制作设备,其包括第一获取模块301和解码模块302,其中:
第一获取模块301,用于获取点云码流的解码指示信息,解码指示信息包括第一指示参数和第二指示参数中至少一种,第一指示参数设置于点云序列的序列级别的参数信息中,第二指示参数设置于点云序列的帧级别或片级别的参数信息中,第一指示参数用于进行序列级别的解码指示,第二指示参数用于进行帧级别或片级别的解码指示;
解码模块302,用于根据第一指示参数或第二指示参数对点云码流进行解码。
需要说明的是,上述点云处理装置300中各模块单元的具体细节已经在上述应用于内容呈现设备的点云处理方法的实施例中进行了详细描述,这里不再赘述。
根据上述实施例描述的方法,本申请实施例还提供了一种点云处理装置,用于执行上述应用于内容制作设备的点云处理方法中的步骤。请参见图9,图9是本申请实施例提供的另一点云处理装置的结构示意图。该点云处理装置400应用于内容制作设备,包括第二获取模块401和编码压缩模块402,其中:
第二获取模块401,用于获取点云数据;
编码压缩模块402,用于对点云数据进行编码压缩,得到点云码流,点云码流包括多个点云帧,点云码流的解码指示信息包括第一指示参数和第二指示参数中至少一种,第一指示参数设置于点云序列的序列级别的参数信息中,第二指示参数设置于点云序列的帧级别或片级别的参数信息中,第一指示参数用于进行序列级别的解码指示,第二指示参数用于进行帧级别或片级别的解码指示,点云码流根据第一指示参数或第二指示参数解码。。
需要说明的是,上述点云处理装置400中各模块单元的具体细节已经在上述应用于内容制作设备的点云处理方法的实施例中进行了详细描述,这里不再赘述。
在一些实施例中,本申请实施例中的点云处理装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digitalassistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
在一些实施例中,如图10所示,本申请实施例还提供一种电子设备500,包括处理器501、存储器502及存储在存储器502上并可在处理器501上运行的计算机程序,该程序被处理器501执行时实现上述点云处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述的移动电子设备和非移动电子设备。
图11为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备600包括但不限于:射频单元601、网络模块602、音频输出单元603、输入单元604、传感器605、显示单元606、用户输入单元607、接口单元608、存储器609以及处理器610等部件。
本领域技术人员可以理解,电子设备600还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器610逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图11中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
应理解的是,本申请实施例中,输入单元604可以包括图形处理器(GraphicsProcessing Unit,GPU)6041和麦克风6042,图形处理器6041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元606可包括显示面板6061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板6061。用户输入单元607包括触控面板6071以及其他输入设备6072中的至少一种。触控面板6071,也称为触摸屏。触控面板6071可包括触摸检测装置和触摸控制器两个部分。其他输入设备6072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器609可用于存储软件程序以及各种数据。存储器609可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器609可以包括易失性存储器或非易失性存储器,或者,存储器609可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器609包括但不限于这些和任意其它适合类型的存储器。
处理器610可包括一个或多个处理单元;处理器610集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器610中。
本申请实施例还提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述点云处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,处理器为上述实施例中的电子设备中的处理器。可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述点云处理方法。
其中,处理器为上述实施例中的电子设备中的处理器。可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
在本申请的描述中,“多个”的含义是两个或两个以上。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
尽管已经示出和描述了本申请的实施例,本领域的普通技术人员可以理解:在不脱离本申请的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本申请的范围由权利要求及其等同物限定。
Claims (24)
1.一种点云处理方法,其特征在于,包括:
获取点云码流的解码指示信息,所述解码指示信息包括第一指示参数和第二指示参数中至少一种,所述第一指示参数设置于点云序列的序列级别的参数信息中,所述第二指示参数设置于所述点云序列的帧级别或片级别的参数信息中,所述第一指示参数用于进行序列级别的解码指示,所述第二指示参数用于进行帧级别或片级别的解码指示;
根据所述第一指示参数或所述第二指示参数对所述点云码流进行解码。
2.根据权利要求1所述的方法,其特征在于,所述序列级别的参数信息包括序列头,所述序列头还包括第三指示参数,所述根据所述第一指示参数或所述第二指示参数对所述点云码流进行解码,包括:
在所述第三指示参数的取值为第一预设数值的情况下,根据所述第一指示参数对所述点云序列的每个点云帧进行解码;
在所述第三指示参数的取值为第二预设数值的情况下,根据各个所述点云帧的所述第二指示参数对各个所述点云帧进行解码,所述第一预设数值和所述第二预设数值不同。
3.根据权利要求1或2所述的方法,其特征在于,所述第一指示参数和所述第二指示参数均包括包围盒原点坐标字段、所述包围盒尺寸字段、和量化参数字段中至少一种。
4.根据权利要求1所述的方法,其特征在于,所述第一指示参数根据所述点云序列的各个点云帧的所述第二指示参数确定;或者,所述第一指示参数为预设值。
5.根据权利要求1所述的方法,其特征在于,所述解码指示信息还包括第四指示参数,所述第四指示参数用于指示所述点云序列的各个点云帧的分组方式,所述方法还包括:
根据所述第四指示参数确定各个所述点云帧的解码方式,所述解码方式包括直接预测方法和预测变换方法中至少一种。
6.根据权利要求5所述的方法,其特征在于,所述分组方式包括以下方式中至少一种:
根据预设分组阈值,将各个分组中的点分为多个子分组,在分组时,前一个所述子分组的点的数量达到所述预设分组阈值后,进行后一个所述子分组的分组;
在进行分组的当前点为重复点的情况下,使用所述当前点补齐当前子分组,直至所述当前子分组的点的数量达到所述预设分组阈值后,将剩余的所述重复点各自分为一个所述子分组;其中,所述重复点为与所在所述分组中的任一个点或者前N个点中的任一个点相同的点,所述N为正整数;
在进行分组的当前点为重复点的情况下,使用当前点补齐当前子分组,直至所述当前子分组的点的数量达到所述预设分组阈值后,停止对剩余重复点继续进行分组;
在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并按所述预设分组阈值,对剩余的点继续进行分组;
在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并将剩余的所述重复点各自分为一个所述子分组;
在进行分组的当前点为重复点的情况下,确定当前子分组已分组完成,并停止对剩余重复点继续进行分组。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第四指示参数确定各个所述点云帧的解码方式,包括:
在待解码的所述当前子分组包含重复点的情况下,根据所述第四指示参数确定所述当前子分组的解码方式。
8.根据权利要求6所述的方法,其特征在于,还包括:
根据点云帧的量化参数的相关参数或者各个所述子分组中的点的最大数量确定是否进行动态分组;
若是,则根据连续的前M个所述子分组中的点的数量平均值,调整当前右移位数,所述M为正整数;
根据调整后的所述当前右移位数,确定进行分组的点对应的编码的目标位数;
根据所述目标位数内的数值重新进行分组。
9.根据权利要求1所述的方法,其特征在于,还包括:
在当前待解码点为重复点的情况下,确定所述当前待解码点的各个属性类型的预测值分别为所述当前待解码点的前一个点的各个属性类型的重建值,且确定所述当前待解码点的属性类型的当前残差值为非负数或非正数。
10.根据权利要求9所述的方法,其特征在于,所述属性类型包括颜色属性,所述确定所述当前待解码点的各个属性类型的预测值分别为所述当前待解码点的前一个点的各个属性类型的重建值,包括:
在当前待解码点为重复点的情况下,确定所述当前待解码点的颜色属性的第K分量的预测值为所述当前待解码点的前一个点的第K分量的重建值,且确定所述当前待解码点的颜色属性的当前残差值的第K分量为非负数或非正数,所述K为1至3的任一整数;或者
在当前待解码点为重复点的情况下,确定所述当前待解码点的颜色属性的各个分量的预测值分别为所述当前待解码点的前一个点的各个分量的重建值,且确定所述当前待解码点的颜色属性的当前残差值的各个分量为非负数或非正数。
11.根据权利要求10所述的方法,其特征在于,所述颜色属性通过RGB编码格式或YUV编码格式表示,RGB编码格式包括R、G、B三个分量,或者,所述YUV编码格式包括Y、U、V三个分量,所述第K分量为R、G、B三个分量中的任一个,或者Y、U、V三个分量中的任一个。
12.根据权利要求9所述的方法,其特征在于,还包括:
在所述当前待解码点为重复点的情况下,确定所述当前待解码点的反射率属性的预测值为所述当前待解码点的前一个点的反射率属性的重建值,且确定所述当前待解码点的反射率属性的当前残差值的符号位为非负数或非正数。
13.根据权利要求1所述的方法,其特征在于,所述序列级别的参数信息包括序列头,所述解码指示信息还包括第五指示参数,所述第五指示参数设置于所述序列头,所述第五指示参数的取值包括多个预设值中的任一个,所述第五指示参数的取值为不同所述预设值的情况下,对应的解码帧率不同。
14.根据权利要求1所述的方法,其特征在于,所述解码指示信息还包括设置于点云帧的属性头,所述属性头包括属性量化参数字段,所述属性量化参数字段用于控制点云的属性量化参数,所述属性量化参数用于对所述点云帧进行关于属性量化的属性解码指示。
15.根据权利要求14所述的方法,其特征在于,所述属性头包括多个属性类型,每个所述属性类型均存在所述属性量化参数字段,目标属性类型下的所述属性量化参数字段用于控制点云在所述目标属性类型下的属性量化参数,所述目标属性类型下的属性量化参数用于对所述点云帧进行关于所述目标属性类型下属性量化的属性解码指示,所述目标属性类型为多个所述属性类型中的任一者。
16.根据权利要求1所述的方法,其特征在于,所述点云序列包括点云帧,所述点云帧包括点云片,所述点云片包括属性片头,所述解码指示信息还包括设置在所述属性片头的属性量化参数字段。
17.根据权利要求15或16所述的方法,其特征在于,当所述属性量化参数字段的属性类型为反射率属性时,所述属性量化参数字段包括反射率属性量化参数和反射率属性量化参数偏移量中至少一种;当所述属性量化参数字段的属性类型为颜色属性时,所述属性量化参数字段包括以下任一种:颜色属性量化参数、各个颜色分量的属性量化参数偏移量。
18.根据权利要求1所述的方法,其特征在于,所述解码指示信息包括设置于所述点云序列的循环语句,所述点云序列包括点云帧,所述点云帧包括点云片,所述点云片包括属性片,所述属性片位于所述循环语句中,所述循环语句通过所述属性片头起始码遍历各个所述属性片。
19.根据权利要求1所述的方法,其特征在于,所述点云序列包括点云帧,所述点云帧包括点云片,所述点云片包括属性片,所述解码指示信息包括设置于所述属性片的循环语句,所述属性片包括属性片头和属性数据位流;
所述属性片头和属性数据位流均位于所述循环语句内,所述循环语句通过所述属性片头起始码遍历各个所述属性片头和属性数据位流,所述属性片头和属性数据位流一一对应;或者,
所述属性数据位流位于所述循环语句内,所述循环语句通过所述属性数据起始码遍历各个所述属性数据位流,所述属性片头对应一个或多个所述属性数据位流。
20.一种点云处理方法,其特征在于,包括:
获取点云数据;
对所述点云数据进行编码压缩,得到点云码流,所述点云码流的解码指示信息包括第一指示参数和第二指示参数中至少一种,所述第一指示参数设置于点云序列的序列级别的参数信息中,所述第二指示参数设置于所述点云序列的帧级别或片级别的参数信息中,所述第一指示参数用于进行序列级别的解码指示,所述第二指示参数用于进行帧级别或片级别的解码指示,所述点云码流根据所述第一指示参数或所述第二指示参数解码。
21.一种点云处理装置,其特征在于,包括:
第一获取模块,用于获取点云码流的解码指示信息,所述解码指示信息包括第一指示参数和第二指示参数中至少一种,所述第一指示参数设置于点云序列的序列级别的参数信息中,所述第二指示参数设置于所述点云序列的帧级别或片级别的参数信息中,所述第一指示参数用于进行序列级别的解码指示,所述第二指示参数用于进行帧级别或片级别的解码指示;
解码模块,用于根据所述第一指示参数或所述第二指示参数对所述点云码流进行解码。
22.一种点云处理装置,其特征在于,包括:
第二获取模块,用于获取点云数据;
编码压缩模块,用于对所述点云数据进行编码压缩,得到点云码流,所述点云码流的解码指示信息包括第一指示参数和第二指示参数中至少一种,所述第一指示参数设置于点云序列的序列级别的参数信息中,所述第二指示参数设置于所述点云序列的帧级别或片级别的参数信息中,所述第一指示参数用于进行序列级别的解码指示,所述第二指示参数用于进行帧级别或片级别的解码指示,所述点云码流根据所述第一指示参数或所述第二指示参数解码。
23.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-20中任一项所述的点云处理方法。
24.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-20中任一项所述的点云处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311234799.6A CN117221551A (zh) | 2023-09-21 | 2023-09-21 | 点云处理方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311234799.6A CN117221551A (zh) | 2023-09-21 | 2023-09-21 | 点云处理方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117221551A true CN117221551A (zh) | 2023-12-12 |
Family
ID=89035107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311234799.6A Pending CN117221551A (zh) | 2023-09-21 | 2023-09-21 | 点云处理方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117221551A (zh) |
-
2023
- 2023-09-21 CN CN202311234799.6A patent/CN117221551A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102609776B1 (ko) | 포인트 클라우드 데이터 처리 방법 및 장치 | |
US11601488B2 (en) | Device and method for transmitting point cloud data, device and method for processing point cloud data | |
US11910017B2 (en) | Method for predicting point cloud attribute, encoder, decoder, and storage medium | |
CN115396645A (zh) | 一种沉浸媒体的数据处理方法、装置、设备及存储介质 | |
WO2022133753A1 (zh) | 点云编解码方法与系统、及点云编码器与点云解码器 | |
JP2023543752A (ja) | 点群コーデック方法及びシステム、並びに点群エンコーダ及び点群デコーダ | |
EP4307661A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
KR20240032912A (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
CN117221551A (zh) | 点云处理方法、装置、存储介质及电子设备 | |
WO2020061149A1 (en) | Patch orientation derivation and prediction | |
CN115474041B (zh) | 点云属性的预测方法、装置及相关设备 | |
WO2024065270A1 (zh) | 点云编解码方法、装置、设备及存储介质 | |
WO2024065406A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2024065269A1 (zh) | 点云编解码方法、装置、设备及存储介质 | |
CN115086716B (zh) | 点云中邻居点的选择方法、装置及编解码器 | |
US20230412837A1 (en) | Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device | |
WO2023024840A1 (zh) | 点云编解码方法、编码器、解码器及存储介质 | |
WO2022257143A1 (zh) | 帧内预测、编解码方法及装置、编解码器、设备、介质 | |
WO2023103565A1 (zh) | 点云属性信息的编解码方法、装置、设备及存储介质 | |
WO2024065271A1 (zh) | 点云编解码方法、装置、设备及存储介质 | |
WO2022257145A1 (zh) | 点云属性的预测方法、装置及编解码器 | |
US20230345008A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
WO2022140937A1 (zh) | 点云编解码方法与系统、及点云编码器与点云解码器 | |
WO2024082152A1 (zh) | 编解码方法及装置、编解码器、码流、设备、存储介质 | |
US20230412849A1 (en) | Mesh vertex displacements coding |
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 |