CN111699697B - 一种用于点云处理、解码的方法、设备及存储介质 - Google Patents
一种用于点云处理、解码的方法、设备及存储介质 Download PDFInfo
- Publication number
- CN111699697B CN111699697B CN201980012174.0A CN201980012174A CN111699697B CN 111699697 B CN111699697 B CN 111699697B CN 201980012174 A CN201980012174 A CN 201980012174A CN 111699697 B CN111699697 B CN 111699697B
- Authority
- CN
- China
- Prior art keywords
- node
- layer
- point cloud
- nodes
- code stream
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/40—Tree coding, e.g. quadtree, octree
-
- 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/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
Abstract
本发明实施例提供了一种用于点云处理、解码的方法、设备及存储介质,其中,该方法包括:对多叉树的第N层采用广度优先的方式进行编码或者解码;当第N层的第一节点中的全部点云点的数量或者分布满足预设条件时,采用深度优先的方式对第一节点中的点云进行编码或者解码,得到第一节点的码流,第一节点的码流中包含标识符和第一节点中的点云点在多叉树中各层的节点的索引,标识符用于指示第一节点的子节点从广度优先的方式切换至深度优先的方式进行编码或者解码,其中,N为大于或等于1的整数。通过这种实施方式,降低了编码或者解码的复杂度以及在时间上的开销,提高了对点云压缩编码或者解码的并行化处理,提高了编码或者解码效率和性能。
Description
技术领域
本发明涉及数据编解码领域,尤其涉及一种用于点云处理、解码的方法、设备及存储介质。
背景技术
点云是三维物体或场景的一种表现形式,是由空间中一组无规则分布、表达三维物体或场景的空间结构和表面属性的离散点所构成,一个点云的数据可以包括描述坐标信息的三维坐标,以及进一步包括该位置坐标的属性。为了准确反映空间中的信息,所需离散点的数目是巨大的。为了减少点云存储和传输时所占用的带宽,需要对点云进行编码压缩处理。
目前,在对点云进行编码压缩处理时常采用广度优先的逐层多叉树划分编码,然而采用这种方式进行点云编码存在较高复杂度、并行度较低,因此,如何提高对维数据点云的编码或解码性能是一项亟待解决的问题。
发明内容
本发明实施例提供了一种用于点云处理、解码的方法、设备及存储介质,可以降低编码或者解码的复杂度以及在时间上的开销,提高对点云压缩编码或者解码的并行化处理,提高编码或者解码效率和性能。
第一方面,本发明实施例提供了一种用于点云处理的方法,所述点云采用多叉树划分的方式进行位置划分,所述方法包括:
对所述多叉树的第N层采用广度优先的方式进行编码或者解码;
当所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件时,采用深度优先的方式对所述第一节点中的点云进行编码或者解码,得到所述第一节点的码流,所述第一节点的码流中包含标识符和所述第一节点中的点云点在多叉树中各层的节点的索引,所述标识符用于指示所述第一节点的子节点从广度优先的方式切换至深度优先的方式进行编码或者解码,其中,N为大于或等于1的整数。
第二方面,本发明实施例提供了一种用于点云解码的方法,所述点云采用多叉树划分的方式进行位置划分,所述方法包括:
对所述多叉树的第N层采用广度优先的方式进行解码;
当解析到标识符时,采用深度优先的方式对所述第N层的第一节点的码流进行解码,所述第一节点的码流中包含所述标识符和所述第一节点中的点云点在多叉树中各层的节点的索引,所述标识符用于指示所述第一节点的子节点从广度优先的方式切换至深度优先的方式进行解码,其中,N为大于或等于1的整数。
第三方面,本发明实施例提供了一种用于点云处理的设备,所述设备包括:存储器和处理器,
所述存储器,用于存储程序;
所述处理器,用于调用所述程序,当所述程序被执行时,用于执行以下操作:
对多叉树的第N层采用广度优先的方式进行编码或者解码;
当所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件时,采用深度优先的方式对所述第一节点中的点云进行编码或者解码,得到所述第一节点的码流,所述第一节点的码流中包含标识符和所述第一节点中的点云点在多叉树中各层的节点的索引,所述标识符用于指示所述第一节点的子节点从广度优先的方式切换至深度优先的方式进行编码或者解码,其中,N为大于或等于1的整数。
第四方面,本发明实施例提供了一种用于点云解码的设备,所述设备包括:存储器和处理器,
所述存储器,用于存储程序;
所述处理器,用于调用所述程序,当所述程序被执行时,用于执行以下操作:
对多叉树的第N层采用广度优先的方式进行解码;
当解析到标识符时,采用深度优先的方式对所述第N层的第一节点的码流进行解码,所述第一节点的码流中包含所述标识符和所述第一节点中的点云点在多叉树中各层的节点的索引,所述标识符用于指示所述第一节点的子节点从广度优先的方式切换至深度优先的方式进行解码,其中,N为大于或等于1的整数。
第五方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面所述的方法或上述第二方面所述的方法。
本发明实施例,通过多叉树划分的方式对点云进行位置划分,并对多叉树的第N层采用广度优先的方式进行编码或者解码,当第N层的第一节点中的全部点云点的数量或者分布满足预设条件时,采用深度优先的方式对第一节点中的点云进行编码或者解码,得到第一节点的码流,第一节点的码流中包含标识符和第一节点中的点云点在多叉树中各层的节点的索引,该标识符用于指示第一节点的子节点从广度优先的方式切换至深度优先的方式进行编码或者解码,其中,N为大于或等于1的整数。通过这种实施方式,可以避免对多叉树划分中第一节点的每个子节点进行编码或者解码,降低了编码或者解码的复杂度以及在时间上的开销,提高了对点云压缩编码或者解码的并行化处理,提高了编码或者解码效率和性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种现有点云压缩的编码流程示意图;
图2是本发明实施例提供的一种现有点云压缩的解码流程示意图;
图3是本发明实施例提供的一种立方体八叉树划分的示意图;
图4是本发明实施例提供的一种八叉树节点逐层划分的示意图;
图5是本发明实施例提供的一种现有属性编码方案的流程示意图;
图6是本发明实施例提供的另一种现有属性编码方案的流程示意图;
图7是本发明实施例提供的一种层次编码的结构示意图;
图8是本发明实施例提供的一种二值化编码的流程示意图;
图9是本发明实施例提供的一种二值化解码的流程示意图;
图10是本发明实施例提供的一种用于点云处理的方法的流程示意图;
图11是本发明实施例提供的一种点云编码的流程示意图;
图12是本发明实施例提供的另一种点云编码的流程示意图;
图13是本发明实施例提供的一种点云处理设备的结构示意图;
图14是本发明实施例提供的一种点云解码设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本发明实施例针对目前在点云编码过程中复杂度高、开销大、并行度较低的问题,提出了一种用于点云处理的方法。在介绍本发明之前,首先对现有点云编码方案进行如下相关介绍。
在一个实施例中,点云是三维物体或场景的一种表现形式,是由空间中一组无规则分布、表达三维物体或场景空间结构和表面属性的离散点集所构成。为了准确反映空间中的信息,所需离散点的数目是巨大的。为了减少点云存储和传输时所占用的带宽,可以对点云进行编码压缩处理。点云可以由离散的点云构成,每个点云的数据可以包括描述该点云的位置坐标的信息,以及进一步可以包括属性的信息。其中,点云的位置坐标可以为三维位置坐标(x,y,z)。点云的属性可以包括点云的反射率和/或颜色等。
为了准确反映空间的信息,点云包括的点云的数量通常是较大的。为了减少点云数据存储和传输时所占用的带宽,需要对点云数据进行编码压缩处理。以下将结合图1至图2描述如何对点云进行编码和解码处理。
如图1所示,图1是本发明实施例提供的一种现有点云压缩的编码流程示意图,如图1所示的编码方法,通过输入点云数据11,对输入的点云数据的位置坐标进行量化12,例如,可以根据位置坐标在三个轴的最大值、最小值之间的差值,以及根据输入参数确定的量化精度,对每个点云的位置坐标进行量化,将输入的点云的位置坐标转换为大于等于零的整数坐标;去除位置坐标中的重复坐标121,对处理后的位置坐标进行位置编码13,例如使用八叉树编码,然后对输入的点云数据的属性进行属性转换14,并对位置编码后重排序的位置顺序对应的属性进行属性编码15,以及对编码后的二进制码流进行算术编码16,从而得到对点云数据编码后的码流数据17。在某些实施例中,所述码流数据可以输出到存储器中进行存储,或者,可以传送到解码端。
以及,如图2所示,图2是本发明实施例提供的一种现有点云压缩的解码流程示意图,如图2所示的解码方法,通过获取待解码的码流数据21,并对其进行算术解码22,通过八叉树编码23对算术解码后的数据进行逆量化24,得到点云数据的位置坐标,通过对算术解码后的数据进行属性解码25得到点云数据的属性,最后根据点云数据的属性和位置坐标得到解码的点云数据26。
应理解,以上提到了点云数据可以包括属性的信息,但应理解,本发明实施例中,点云数据也可以不包括属性的信息,仅包括位置坐标的信息。
在一个实施例中,对于编码端而言,对点云的空间进行初始化得到初始化空间后,在对初始化空间进行多叉树划分时,每层多叉树的划分可以利用当前节点的中心点的坐标进行子节点的划分,通过中心点将当前节点划分为多个子节点,然后可以判断每个子节点内是否存在点云,对存在点云的子节点会再进一步进行划分,直至子节点划分至预设大小,例如,可以划分到边长为1的子节点时停止划分。其中,该初始化空间可以是立方体、长方体或者其他形状的空间体。
例如,以八叉树划分为例,每层八叉树的划分均利用当前块的中心点的坐标进行子块划分,通过中心点将当前块划分为八个小的子块。对一个编码块进行一次八叉树划分的示意图如图3所示,图3是本发明实施例提供的一种立方体八叉树划分的示意图,即是一个节点划分为8个子节点的划分方式。得到子块划分后,会判断每个子块内是否存在点云,对存在点云的子块会再进一步进行划分,直至子块划分至最小时,即子块边长为1时停止划分,具体八叉树递归划分的示意图如图4所示,图4是本发明实施例提供的一种八叉树节点逐层划分的示意图。
在一个实施例中,在对位置坐标进行了八叉树编码后,接着会按照八叉树编码后位置坐标的顺序所对应的属性进行属性的压缩编码,对属性编码可以采用层次编码方式或二值化编码方式进行编码。
以图5和图6为例,对属性编码的层次编码方式进行说明,其中,图5是本发明实施例提供的一种现有属性编码方案的流程示意图,图6是本发明实施例提供的另一种现有属性编码方案的流程示意图;其中,图5和图6的标记中与图1和图2的相同的标记在此不再赘述,具体可以参考针对图1和图2的描述。
如图5所示,对属性的编码操作可以包括151、152和153;在151中,基于位置坐标编码后的位置坐标,生成层次编码方案(level of detail,LOD);在152中,基于层次编码方案,进行预测编码;在153中,对预测编码的结果进行量化。
如图6所示,对属性的解码操作可以包括251、252和253;在251中,对解码得到的属性码流进行逆量化;在252中,基于位置坐标解码后的位置坐标,生成层次解码方案;在253中,基于层次编码方案,进行预测解码。
在一个实施例中,在实际编码过程中,可以根据LOD配置的参数来进行LOD分层,其中,后面的层会包含有前面层的点。例如,如图7所示,图7是本发明实施例提供的一种层次编码的结构示意图,在LOD0(层0),包含的点云为P0,P5,P4,P2;在LOD1(层1),包含的点云为P0,P5,P4,P2,P1,P6,P3;以及在LOD2(层2)包含的点云为P0,P5,P4,P2,P1,P6,P3,P9,P8,P7。
在一个实施例中,在分层的过程中,先选择点云数据中的第一个点云,将其放在LOD0层的第一个点,接着开始依次遍历点云,计算这个点和当前层里面已经含有的所有点之间的笛卡尔坐标系下的距离,如果最小的距离是大于当前LOD层的设置的距离阈值(dist2)时,这个点就会被划入到当前LOD层。并且在这个过程中,会将计算得到的距离排序,选择出最小的若干个,这个数目是由预测时相邻点的数量(number Of Neighbors InPrediction)确定。其中,一个点云被划入一个LOD层后,后续可以不需要再接着判断其是否还属于下一个LOD层,因为下一层是包含上一层的所以其一定属于下一个LOD层;以及在LOD0层的前面几个点,由于在LOD内的点数比较少所以选择出的参考点数目有可能小于该数量N。
在一个实施例中,在划分结束LOD层之后,可以利用前面选择的最临近的点来分配预测时的权重。具体的,对每个点云,在前面已经得到了按照距离排序的最邻近的X个点之后,接下来可以按照1个参考点,2个参考点一直到X个参考点来分别求出权重分配方案。权重分配方案共有X种,其中,1个参考点时就是距离最小的1个点作为参考点,这时它的权重即为1;2个参考点时就是选择距离最小的2个点作为参考点,这时会根据这两个参考点和待预测点之间的距离来分配权重,具体权重为距离反比,距离越远权重越小,并保证权重和为1;直X个参考点时,就是选择X个参考点,权重分配方法与前面相同。
在一个实施例中,在分配完权重后,可以选择参考点数,在这里需要注意的是,对一个预测点可以选择的临近参考点的数目是小于等于X。具体会遍历限定参考点最大为1个时,这时预测值(权重乘以对应位置的属性值)与实际属性值的残差经过量化后的值得和,这个和即为参考点数目最大为1时的代价,接着会遍历限定参考点数目最大为2个时的代价,直至限定参考点数目最大为X时的代价,最终选择一个代价最小的最大参考点数的方案。并进一步编码这个方案下量化后的残差值。
在一个实施例中,在编码后的码流中关于属性的头信息可以描述关于分层编码属性即LOD的相关信息,具体包括在每个层进行预测时,选择临近参考点(用于计算残差的位置坐标)的点数(numberOfNeighborsInPrediction),LOD的层数(levelOfDetailCount),划分LOD每一层所依据的距离阈值(dist2),LOD每一层量化的步长(quantizationSteps),LOD每一层的死区大小(quantizationDeadZoneSizes)(也即将残差量化为0的残差区间),其中,后面三个属性可以分别对LOD每层均设定,每层的属性均可以写入码流头信息中。
在一个实施例中,对属性的编码还可以采用二值化编码的方式,所述二值化编码的编码方式可以为定长编码方式、截断莱斯编码方式或K阶指数哥伦布编码方式。相应地,二值化解码的解码方式可以为定长解码方式、截断莱斯解码方式或K阶指数哥伦布解码方式。
在一个示例中,以图8为例对二值化编码的方式中的定长编码方式进行说明,图8是本发明实施例提供的一种二值化编码的流程示意图,其中,包括154,通过定长编码方式进行二值化编码,图8的标记中与图1的相同的标记在此不再赘述。
对应地,在另一个示例中,以图9为例对二值化解码的方式中的定长解码方式进行说明,图9是本发明实施例提供的一种二值化解码的流程示意图,其中,包括254,通过定长解码方式进行二值化解码,图9的标记中与图2的相同的标记在此不再赘述。采用二值化编码的方式进行编码可以简化编码方法并降低编解码的时间开销,以及无需在码流中加入较多的编码信息,从而可以提高压缩率。
现有的点云编码方案中对于位置坐标进行八叉树划分编码的过程采用了基于广度优先的顺序进行八叉树的遍历,对存在点云点的八叉树子块再进一步迭代八叉树划分的方案。这种方案,存在较高复杂度,并且在一些只含一个叶子节点的子块的划分表示上存在编码比特的浪费。这样在一定程度上影响了八叉树编码在压缩率这项性能指标上的表现。另外,对位置坐标的八叉树划分过程是基于广度优先的顺序进行八叉树的遍历,这种划分过程是逐层进行,只有当一层划分结束后才可以进行下面一层的划分,这种方案对点云压缩的并行化带来了较大的困难。
本发明实施例针对上述问题提出在对点云进行压缩编码或解码时,在位置坐标编码或解码过程中,采用广度优先、深度优先混合的八叉树点云编码或解码方案。在编码或解码至某个节点中的全部点云点的数量或者分布满足预设条件时(实施例会介绍),会从广度优先的方式切换至深度优先的方式进行编码或解码。通过这种实施方式可以减少编码过程中的开销,降低复杂度,提高点云编码的并行度。
本发明实施例提出的用于点云处理的方法可以应用于点云处理设备,所述点云处理设备可以为点云编码设备或点云解码设备,所述点云编码设备可以设置在智能终端(如手机、平板电脑等)上。本发明实施例提出的用于点云解码的方法可以应用于点云解码设备,所述点云解码设备也可以设置在智能终端(如手机、平板电脑等)上。在某些实施例中,本发明实施例还可应用于飞行器(如无人机)上,在其他实施例中,本发明实施例还可以应用于其他可移动平台(如无人船、无人汽车、机器人等)上,本发明实施例不做具体限定。
下面结合附图对本发明实施例提供的用于点云处理、解码的方法进行示意性说明。
具体请参见图10,图10是本发明实施例提供的一种用于点云处理的方法的流程示意图。所述方法可以应用于点云处理设备,即点云编码设备或点云解码设备,其中,所述点云编码设备或点云解码设备的解释如前所述,此处不再赘述。具体地,本发明实施例的所述方法包括如下步骤。
S1001:对多叉树的第N层采用广度优先的方式进行编码或者解码。
本发明实施例中,点云处理设备在对点云进行编码或者解码时,可以采用多叉树划分的方式对点云进行位置划分;所述点云处理设备在采用多叉树划分的方式对点云进行位置划分时,可以对所述多叉树的第N层采用广度优先的方式进行编码或者解码。
在一些实施例中,点云可以是光探测装置对待探测物体进行光探测(例如激光探测)所得到。该光探测装置诸如可以为光电雷达、或激光雷达、激光扫描仪等设备。本发明实施例中的编码设备可以集成于光探测装置中。
需要说明的是,所述激光雷达是一种感知传感器,可以获得场景的三维信息。其基本原理为主动对被探测对象发射激光脉冲信号,并获得其反射回来的脉冲信号,根据发射信号和接收信号之间的时间差计算被测对象的距离探测器的深度信息;基于激光雷达的已知发射方向,获得被测对象相对激光雷达的角度信息;结合前述深度信息和角度信息得到海量的探测点(称为点云)。
S1002:当所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件时,采用深度优先的方式对所述第一节点中的点云进行编码或者解码,得到所述第一节点的码流,所述第一节点的码流中包含标识符和所述第一节点中的点云点在多叉树中各层的节点的索引,所述标识符用于指示所述第一节点的子节点从广度优先的方式切换至深度优先的方式进行编码或者解码,其中,N为大于或等于1的整数。
在一个实施例中,在对点云的位置坐标进行编码或者解码时,可以采用多叉树的方式进行编码或者解码,所述多叉树划分可以包括以下任意一种或任意两种的结合或三种的结合:八叉树划分、四叉树划分、二叉树划分。例如,多叉树划分可以包括以下任意至少一种:八叉树划分、八叉树四叉树划分、八叉树二叉树划分、八叉树四叉树划分、八叉树四叉树二叉树划分、四叉树划分、二叉树划分、四叉树八叉树划分、二叉树八叉树划分、四叉树二叉树八叉树划分、二叉树八叉树四叉树划分、二叉树八叉树四叉树二叉树划分、二叉树八叉树二叉树划分、四叉树八叉树划分、四叉树八叉树四叉划分、四叉树八叉树二叉树划分、四叉树八叉树四叉树二叉树划分、四叉树二叉树八叉树划分、四叉树二叉树八叉树四叉树划分、四叉树二叉树八叉树二叉树划分、四叉树二叉树八叉树四叉树二叉树划分。
在一个实施例中,所述八叉树四叉树划分是指采用八叉树划分和四叉树划分对点云的位置坐标进行编码或者解码;在一个示例中,第一节点采用八叉树划分方式,对八叉树划分得到的包括点云点的一个或多个子节点采用四叉树划分方式。在一个实施例中,所述八叉树二叉树划分是指采用八叉树划分和二叉树划分对点云的位置坐标进行编码或者解码;在一个示例中,第一节点采用八叉树划分方式,对八叉树划分得到的包括点云点的一个或多个子节点采用二叉树划分方式。在一个实施例中,所述八叉树四叉树二叉树划分是指采用八叉树划分、四叉树和二叉树划分对点云的位置坐标进行编码或者解码;在一个示例中,第一节点采用八叉树划分方式,对八叉树划分得到的包括点云点的一个或多个子节点采用四叉树划分方式,对四叉树划分得到的包括点云点的一个或多个子节点采用二叉树划分方式;在另一个示例中,第一节点采用八叉树划分方式,对八叉树划分得到的包括点云点的一个或多个子节点采用二叉树划分方式,对二叉树划分得到的包括点云点的一个或多个子节点采用四叉树划分方式。在其他实施例中,其他划分方式与上述划分方式相似,此处不再一一赘述。
在一个实施例中,所述第N层是采用八叉树划分得到的,所述标识符为八比特0;或者,所述第N层是采用四叉树划分得到的,所述标识符为四比特0;或者,所述第N层是采用二叉树划分得到的,所述标识符为二比特0。
在一个示例中,在切换时,如果当前的位置划分为八叉树划分,则采用8bit的0即00000000来作为从广度优先的方式切换至深度优先的方式的标识符;如果当前的划分为四叉树,则采用4bit的0即0000来作为从广度优先的方式切换至深度优先的方式的标识符;如果当前的划分为二叉树,采用2bit的0即00来作为从广度优先的方式切换至深度优先的方式的标识符。
在一些实施例中,索引固定用3比特进行表示。在一些实施例中,当所述第N层是采用八叉树划分得到时,所述索引可以为0至7,对应用3比特即000~111表示;当所述第N层是采用四叉树划分得到时,所述索引可以为0至3,对应用2比特即00~11表示;当所述第N层是采用二叉树划分得到时,所述索引可以为0至1,对应用1比特即0~1表示。
在一个实施例中,编码端可以在头信息中加入指示信息,用于指示在切换到深度优先的方式进行编码的第一节点之下的划分方式,例如,该划分方式包括第一节点下至少部分层数所采样的划分叉树,举例来说,该划分方式包括第一节点下的前i层采用几叉树进行划分;或者,该指示信息用于指示在在切换到深度优先的方式进行编码的第一节点之下前i层采用多少比特的索引来指示包含点云的节点。
举例来说,该指示信息用于指示在切换到深度优先的方式进行编码的第一节点之下,前i层用四叉树划分,那么在编码端在对第一节点位置划分时,前面i层均用四叉树划分或者四叉树二叉树划分。在对第一节点下第i+1层中的节点A进行编码时,根据该节点A的边长确定采用几叉树对该节点A进行划分,以及采用对应的位数的索引对该节点A下包含有点云的子节点B进行标识。
例如,判断该节点A在x轴、y轴和z轴三个方向上的边长是否达到最小边长:若三个方向均未达到最小边长,则采用八叉树的方式对该节点A进行划分,以及采用3比特来标识该节点A下包含点云的子节点B;若有1个方向达到最小边长,2个方向未达到最小边长,则采用四叉树的方式对该节点A进行划分,以及采用2比特来标识该节点A下包含点云的子节点B;若有2个方向达到最小边长,1个方向未达到最小边长,则采用二叉树的方向对该节点A进行划分,以及采用1比特来标识该节点A下包含点云的子节点B;若节点A在三个方向上均达到最小边长,则停止对节点A进行划分。
在解码端,当解码到第N层的第一节点中码流中包含标识符时,确定切换到深度优先的方式对第一节点进行解码。解码端根据指示信息确定第一节点下的划分方式,例如,该划分方式包括第一节点下的前i层用几叉树划分。例如,指示信息指示第一节点下的前2层四叉树划分,则采用四叉树或四叉树二叉树对第一节点进行划分。对第一节点下第i+1层上包含点云的节点A,根据该节点A的边长确定采用几叉树对该节点A进行划分,以及采用对应的位数的索引对该节点A下包含有点云的子节点B进行标识。
例如,若该节点A在x轴、y轴和z轴三个方向上的边长均未达到最小边长,则采用八叉树的方式对该节点A进行划分,以及采用3比特来标识该节点A下包含点云的子节点B;若该节点A有1个方向达到最小边长,2个方向未达到最小边长,则采用四叉树的方式对该节点A进行划分,以及采用2比特来标识该节点A下包含点云的子节点B;若该节点A有2个方向达到最小边长,1个方向未达到最小边长,则采用二叉树的方向对该节点A进行划分,以及采用1比特来标识该节点A下包含点云的子节点B;若节点A在三个方向上均达到最小边长,则停止对节点A进行划分。
在一个实施例中,所述第一节点在所述第N层之下的至少一层的码流中,包括所述第一节点在所述一层中含有点云点的子节点的索引,以及第一指示位,所述第一指示位用于指示所述一层是否为所述第一节点下的最底层。在一个示例中,所述第一指示位为0时,确定所述一层为所述第一节点下的最底层;所述第一指示位为1时,确定所述一层不为所述第一节点下的最底层。
在一个实施例中,所述第一指示位位于所述一层中所有含有点云点的子节点的索引之前,或者位于所述一层中所有含有点云点的子节点的索引之后。
以八叉树划分为例,如图11所示,图11是本发明实施例提供的一种点云编码的流程示意图,假设八叉树划分得到的一个节点1101包括点云点,对所述节点1101进行八叉树划分得到第一层的第3个子节点1102包括点云点,再对所述第一层的第3个子节点1102进行八叉树划分得到第二层的第1个子节点1103包括点云点,且所述第二层为底层。
例如,假设所述第一指示位位于所述一层中所有含有点云点的子节点的索引之后,每一层的节点的索引从左到右依次为0至7,则可以确定第一层的第3个子节点1102的索引为2即010,所述第二层的第1个子节点1103的索引为0即000。因此,在对节点1101进行八叉树划分编码时,可以首先编码标识符8比特的0,即00000000,用于表示从广度优先的方式切换至深度优先的方式进行编码,接着对所述节点1101八叉树划分得到的第一层的第3个子节点1102对应的索引2进行编码得到010,然后添加第一指示位1,用于确定所述第一层不为所述节点1101下的最底层,再对所述第一层的第3个子节点1102八叉树划分得到的第二层的第1个子节点1103对应的索引0进行编码得到000,添加第一指示位0,用于指示所述第二层为所述节点1101下的最底层。因此,采用深度优先的方式对所述节点1101进行八叉树划分编码后得到的码流为0000000001010000。
又例如,假设所述第一指示位位于所述一层中所有含有点云点的子节点的索引之前,每一层的节点的索引从左到右依次为0至7,则可以确定第一层的第3个子节点1102的索引为2即010,所述第二层的第1个子节点1103的索引为0即000。因此,在对节点1101进行八叉树划分编码时,可以对节点1101编码为1,然后编码标识符8比特的0,即00000000,用于表示从广度优先的方式切换至深度优先的方式进行编码,然后添加第一指示位1,用于确定所述第一层不为所述节点1101下的最底层,然后对所述节点1101八叉树划分得到的第一层的第3个子节点1102对应的索引2进行编码得到010,再添加第一指示位0,用于指示所述第二层为所述节点1101下的最底层,最后对所述第一层的第3个子节点1102八叉树划分得到的第二层的第1个子节点1103对应的索引0进行编码得到000。因此,采用深度优先的方式对所述节点1101进行八叉树划分编码后得到的码流为10000000010100000。
对于解码端而言,当获取到待解码的码流时,可以先进行算术解码,解码位置信息相关码流,在进行八叉树解码时,依次对位置坐标的码流进行解码,当码流为广度优先时即按照广度优先顺序进行解码,当码流为深度优先时即按照深度优先的顺序进行解码。通过八叉树解码,逆量化,得到重建的位置坐标。在对位置坐标的码流进行多叉树解码时,可以默认以广度优先的顺序进行解码,当解码到用于指示广度优先切换到深度优先的标识符(例如,解码到8比特的0即00000000)时,转换为深度优先进行解码重建,按照这样的顺序进行解码,即可实现对位置坐标的八叉树解码。
在一个实施例中,在对第一节点在所述第N层之下的至少一层的码流进行解码时,当解码到用于指示广度优先切换到深度优先的标识符(例如,解码到8比特的0即00000000)时,接着解码第一节点在第N层之下的一层中含有点云点的子节点的索引,然后解码用于指示所述一层是否为所述第一节点下的最底层的第一指示位,如果第一指示位指示所述一层不为所述第一节点下的最底层,则继续解码第一节点在所述一层之下的一层中含有点云点的子节点的索引,如果解码到用于指示所述一层为所述第一节点下的最底层的第一指示位,则确定解码完成。
结合图11进行举例说明,假设获取到的节点1101八叉树划分编码得到的码流为10000000001010000,则在对节点1101的码流进行八叉树解码时,当解码到用于指示广度优先切换到深度优先的标识符8比特的0即00000000时,采用深度优先的方式接着解码010,得到对节点1101八叉树划分得到的第一层的第3个子节点1102对应的索引2,然后解码第一指示位1,接着解码000,得到第一层的第3个子节点1102八叉树划分得到的第二层的第1个子节点1103对应的索引0,当解码到第一指示位为0时确定节点1101的码流解码结束。
在一个实施例中,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:所述第一节点在所述第N层之下的最底层的叶子节点的数量小于或等于2;或者,所述第一节点的全部点云点的数量小于或等于2。
在一个实施例中,所述第一节点在所述第N层之下的每一层的码流中,包括第二指示位,所述第二指示位用于指示所述一层中含有点云点的节点的数量。可选的,该实施例是在满足以下条件的情况下采用的:第一节点在所述第N层之下的最底层的叶子节点的数量小于或等于2;或者,第一节点的全部点云点的数量小于或等于2,且第一节点多叉树划分得到的层数大于n,n大于或等于2。在一个实施例中,所述第二指示位用于指示所述第一节点在所述一层中含有点云点的节点的数量为1或2。在一个示例中,所述第二指示位为0时,用于指示所述一层中含有点云点的节点的数量为1;所述第二指示位为1时,用于指示所述一层中含有点云点的节点的数量为2。
在一个实施例中,所述第一节点在所述第N层之下的每一层的码流中,在所述第二指示位之后还包括所述一层中所有含有点云点的节点的索引。
以图11为例,在对节点1101进行八叉树划分编码时,可以编码标识符8比特的0,即00000000,用于表示从广度优先的方式切换至深度优先的方式进行编码,然后添加第二指示位0,用于指示第一层有1个节点有点云点,然后再对所述节点1101八叉树划分得到的第一层的第3个子节点1102对应的索引2进行编码得到010,然后再添加第二指示位0,用于指示所述第二层有1个节点有点云点,接着再对所述第一层的第3个子节点1102八叉树划分得到的第二层的第1个子节点1103对应的索引0进行编码得到000。因此,采用深度优先的方式对所述节点1101进行八叉树划分编码后得到的码流为0000000000100000。
对于解码端而言,在一个实施例中,在对第一节点在第N层之下的每一层的码流进行解码时,当解码到用于指示广度优先切换到深度优先的标识符(例如,解码到8比特的0即00000000)时,接着解码用于指示当前层中含有点云点的节点的数量的第二指示位,接着解码当前层含有点云点的子节点的索引,然后解码用于指示下一层中含有点云点的节点的数量的第二指示位,接着解码下一层含有点云点的子节点的索引,如此循环对第一节点在第N层之下的每一层的第二指示位和含有点云点的子节点的索引进行解码,直至对第一节点在第N层之下的每一层的第二指示位和含有点云点的子节点的索引解码完成为止。
结合图11进行举例说明,假设获取到的节点1101八叉树划分编码得到的码流为0000000000100000,则在对节点1101的码流进行八叉树解码时,当解码到用于指示广度优先切换到深度优先的标识符8比特的0即00000000时,采用深度优先的方式接着解码用于指示第一层即当前层中含有点云点的节点的数量的第二指示位0,即确定第一层有一个包含点云点的子节点,接着解码010得到第一层包含点云点的子节点的索引为2,即第一层包含点云点的子节点为第一层的第3个子节点1102,然后解码用于指示第二层中含有点云点的节点的数量的第二指示位0,即确定第二层有一个包含点云点的子节点,接着解码000得到第二层包含点云点的子节点的索引为0,即第二层包含点云点的子节点为第二层的第1个子节点1103。
在一个实施例中,当所述第一节点在所述第N层之下的最底层的叶子节点的数量小于或等于2;或者,所述第一节点的全部点云点的数量小于或等于2,且所述第一节点多叉树划分得到的层数大于n,n大于或等于2时,所述第一节点的码流中,包括第三指示位,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量。在一个实施例中,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量为1或2。在一个实施例中,所述第三指示位为0,用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量为1;所述第三指示位为1,用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量为2。
在一个实施例中,所述第一节点的码流中还包括所述第一节点在所述第N层之下所有含有点云点的节点的索引。
以图11为例,在对节点1101进行八叉树划分编码时,可以编码标识符8比特的0,即00000000,用于表示从广度优先的方式切换至深度优先的方式进行编码,如果对节点1101进行八叉树划分编码得到包括点云点的叶子节点的数量为1,则可以添加第三指示位0,然后再对所述节点1101八叉树划分得到的第一层的第3个子节点1102对应的索引2进行编码得到010,接着再对所述第一层的第3个子节点1102八叉树划分得到的第二层的第1个子节点1103对应的索引0进行编码得到000。因此,采用深度优先的方式对所述节点1101进行八叉树划分编码后得到的码流为000000000010000。
对于解码端而言,在一个实施例中,在对第一节点在第N层之下的每一层的码流进行解码时,当解码到用于指示广度优先切换到深度优先的标识符(例如,解码到8比特的0即00000000)时,接着解码用于指示第一节点在第N层之下含有点云点的叶子节点的数量,接着解码当前层含有点云点的子节点的索引,然后解码在当前层之下的一层含有点云点的子节点的索引,直至对第一节点在第N层之下的每一层含有点云点的子节点的索引解码完成为止。
结合图11进行举例说明,假设获取到的节点1101八叉树划分编码得到的码流为000000000010000,则在对节点1101的码流进行八叉树解码时,当解码到用于指示广度优先切换到深度优先的标识符8比特的0即00000000时,采用深度优先的方式接着解码用于指示节点1101在第二层含有点云点的叶子节点的数量的第三指示位0,即确定节点1101在第二层含有点云点的叶子节点的数量为1,接着解码010得到第一层包含点云点的子节点的索引为2,即第一层包含点云点的子节点为第一层的第3个子节点1102,然后解码000得到第二层包含点云点的叶子节点的索引为0,即第二层包含点云点的叶子节点为第二层的第1个子节点1103。
在一个实施例中,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:所述第一节点在所述第N层之下中至少连续M层中特定节点的分布相同,所述特定节点为包含点云点的节点,所述M为预设的正整数。
在一个实施例中,所述第一节点在所述第N层之下中至少连续M层中特定节点的分布相同是指,所述第一节点在第N层之下中至少连续M层中每层包括点云点的子节点的索引相同。在一个示例中,假设M为2,如果所述第一节点在第N层之下中连续2层中每一层包括点云点的子节点均分布在连续2层的每一层的第3个子节点和第8个子节点中,则可以确定第一节点在第N层之下中连续2层中包括点云点的子节点的分布相同。
在一个实施例中,所述第一节点的码流中,包括所述第一节点在所述第N层之下所述特定节点的分布相同的层数,以及所述特定节点的索引。
在一个实施例中,所述特定节点的分布相同的层数是采用定长编码方式或者变长编码方式进行编码得到的。
以图12为例,图12是本发明实施例提供的另一种点云编码的流程示意图,假设八叉树划分得到第0层的节点1201包括点云点,对所述节点1201进行八叉树划分得到第1层的第3个子节点1202包括点云点以及第8个子节点1203包括点云点,再对所述第1层的第3个子节点1102进行八叉树划分得到第2层的第3个子节点1204包括点云点以及第8个子节点1205包括点云点,接着对所述第1层的第8个子节点1203进行八叉树划分得到第2层的第3个子节点1206以及第8个子节点1207,且所述第二层为底层。
例如,假设每一层的节点的索引从左到右依次为0至7,由于节点1201在第1层和第2层中连续2层的点云点分布相同,即节点1201在第1层的第3个子节点和第8个子节点中包括点云点,以及第1层的第3个子节点在第2层的第3个子节点和第8个子节点中包括点云点,以及和第1层的第8个子节点在第2层的第3个子节点和第8个子节点中包括点云点。因此,在对节点1201进行八叉树划分编码时,可以首先编码标识符8比特的0,即00000000,用于表示从广度优先的方式切换至深度优先的方式进行编码,然后对具有相同点云分布的层数的3比特索引即000-111进行编码,此处对具有相同点云分布的层数的3比特索进行编码即为对索引2-1=1进行编码得到001。在编码了相同点云分布的层数的索引后,如果到达了叶子节点,则停止编码,如果还没有到达叶子节点,则继续进行八叉树划分。此处在编码了层数索引001之后还没有到达叶子节点,则接着再对所述节点1201八叉树划分得到的第1层的第3个子节点1202对应的索引2进行编码得到010,接着再对所述第1层的第8个子节点1203对应的索引7进行编码得到111,接着再对所述第1层的第3个子节点1202八叉树划分得到的第2层的第3个子节点1204对应的索引2进行编码得到010,以及对所述第1层的第3个子节点1202八叉树划分得到的第2层的第8个子节点1205对应的索引7进行编码得到111,再对所述第1层的第8个子节点1203八叉树划分得到的第2层的第3个子节点1206对应的索引2进行编码得到010,以及对所述第1层的第8个子节点1203八叉树划分得到的第2层的第8个子节点1207对应的索引7进行编码得到111。因此,采用深度优先的方式对所述节点1101进行八叉树划分编码后得到的码流为00000000001010111010111010111。
对于解码端而言,在一个实施例中,在对第一节点在第N层之下的每一层的码流进行解码时,当解码到用于指示广度优先切换到深度优先的标识符(例如,解码到8比特的0即00000000)时,接着解码第一节点在所述第N层之下特定节点的分布相同的层数,然后对第一节点在所述第N层之下每一层的特定节点的索引进行解码。
结合图12进行举例说明,假设获取到的节点1201八叉树划分编码得到的码流为00000000 001010111010111010111,则在对节点1201的码流进行八叉树解码时,当解码到用于指示广度优先切换到深度优先的标识符8比特的0即00000000时,采用深度优先的方式接着解码001,得到节点1201在第0层之下具有相同点云分布的层数的索引为1+1=2层即第1层和第2层;接着解码010和111得到节点1201在第1层包含点云点的子节点的索引为2和7,即确定第1层包括点云点的子节点为子节点1202和子节点1203;接着再解码010和111得到子节点1202在第2层包含点云点的子节点的索引为2和7,即确定子节点1202在第2层包括点云点的子节点为子节点1204和子节点1205;然后再解码010和111得到子节点1203在第2层包含点云点的子节点的索引为2和7,即确定子节点1203在第2层包括点云点的子节点为子节点1206和子节点1207。
在一个实施例中,所述第一节点的码流中,在每一个叶子节点的索引之后,还包括所述叶子节点中所包含的点云点的数量。
在一个实施例中,在对叶子节点中所包含的点云点的数量进行编码时,当当前叶子节点内含有一个点云点,则可以直接编码一个0进行表示;当当前叶子节点内含有不止一个点云点时,假设当前叶子节点内含有n个点云点,此时会先编码一个1,接着编码数值(n-1)。
结合上述图11的例子进行说明,节点1101八叉树划分后得到的节点1101的码流为0000000001010000,如果节点1101八叉树划分后得到的第二层的第1个子节点1103(即叶子节点)中包括的点云点的数量为1,则可以在节点1101的码流中,在叶子节点1103的索引之后,对叶子节点1103中所包含的点云点的数量1进行编码得到0,从而得到节点1101的码流为00000000010100000。
可见,通过深度优先的方式对第一节点在第N层以下的每一层中包括点云点的子节点的索引进行编码或解码,可以避免对多叉树划分中第一节点的每个子节点进行编码或解码,从而降低编码或解码的复杂度以及在时间上的开销,提高了对点云压缩编码或解码的并行化处理,提高了编码或解码效率和性能。
在一个实施例中,在对第一节点的各个包括点云点的子节点的索引进行编码时包括多种编码方式。
在一种实施方式中,可以根据对第一节点进行八叉树划分得到的当前子节点的边长确定,其中,各个子节点是划分得到的立方体的子块。假设当前子节点边长为2n,则此时只需要编码当前点云点对应位置坐标的低nbit即可。
在一个实施例中,在对位置坐标的低n bit进行编码时也存在多种编码方式。其中,在一种实施方式中,可以分别连续编码x,y,z三个方向对应的n bit,即n bit x,n bity,n bit z,先后顺序可不做限定;在另一种实施方式中,可以从高位开始编码x,y,z,即先编码x的从低位开始的第n bit,再编码y的从低位开始的第n bit,再编码z的从低位开始的第n bit,其中x,y,z的先后顺序不做限定,每bit的先后顺序也不做限定,只需要编解码一致即可,直至编码到最低比特位;在另一种实施方式中,可以从最低比特位开始编码x,y,z,即先编码x的从低位开始的第0bit,再编码y的从低位开始的第0bit,再编码z的从低位开始的第0bit,其中x,y,z,的先后顺序不做限定,每bit的先后顺序也不做限定,只需要编解码一致即可;在另一种实施方式中,可以不固定从哪一位开始编码,最终只要编码了x,y,z三个方向对应的bit即可。本发明实施例对各个子节点的索引进行编码的编码方式不做具体限定。
在一个示例中,在对索引进行编码时,可以采用旁路(bypass)编码方式对索引中不同方向上的比特进行编码,也即用于指示索引中用于指示不同方向的比特位采用等概率模型进行熵编码。
在一个示例中,在对索引进行编码或解码时,可以对索引中用于指示不同方向的比特位分别采用不同的概率模型进行熵编码或解码。例如,在索引采用3个比特的情况中,所有索引的第一个比特位采用第一上下文模型进行熵编码,并根据编码结果对第一上下文模型进行更新;所有索引的第二个比特位采用第二上下文模型进行熵编码,并根据编码结果对第二上下文模型进行更新;所有索引的第三个比特位采用第三上下文模型进行熵编码,并根据编码结果对第三上下文模型进行更新。
在一个示例中,点云的码流中在头信息内还设置有标识位,用于指示是否使能切换到深度优先的方式进行位置编码或解码。该头信息可以是几何头信息或者序列头信息。解码端在从点云的码流中解析出该标识位时,根据该标识位确定是否使能切换到深度优先的方式进行位置解码。当该标识位指示使能切换到深度优先的方式进行位置解码时,当从第一节点的码流中解析出标识符时,即可确定切换到深度优先的方式对第一节点的码流进行解码。
本发明实施例中,点云处理设备可以对多叉树的第N层采用广度优先的方式进行编码或者解码,当第N层的第一节点中的全部点云点的数量或者分布满足预设条件时,采用深度优先的方式对第一节点中的点云进行编码或者解码,得到第一节点的码流,第一节点的码流中包含标识符和第一节点中的点云点在多叉树中各层的节点的索引,该标识符用于指示第一节点的子节点从广度优先的方式切换至深度优先的方式进行编码或者解码,其中,N为大于或等于1的整数。通过这种实施方式,可以避免对多叉树划分中第一节点的每个子节点进行编码或者解码,降低了编码或者解码的复杂度以及在时间上的开销,提高了对点云压缩编码或者解码的并行化处理,提高了编码或者解码效率和性能。
为方便描述,称第N层的第一节点在三个方向上的边长分别为2的a次幂、2的b次幂和2的c次幂,以及点云的节点的最小边长为2的d次幂。其中,最小边长指的是,在对点云进行多叉树划分时,当一个节点在一个方向上的边长小于或等于最小边长时,停止对该方向的划分,可选的,该最小边长可以是1。其中,a、b、c和d分别为整数。可以理解的是,在点云的初始化空间为立方体,而且对该立方体采用八叉树划分的情况中,a=b=c;在点云的初始化空间为其他形状(例如长方体),或者初始化空间为立方体但划分时采用多种叉树混合划分(例如先八叉树后四叉树)的情况中,a、b和c三个数值可能会不相等。
在一个示例中,第N层的第一节点中的全部点云点的数量或分布满足预设条件,包括:第一节点下包含点云的叶子节点的数量小于或者等于2,且第一节点的(a-d)+(b-d)+(c-d)的和大于等于e的2倍数,其中,e为a、b、c这三个数中取值不等于d的个数。例如,第一节点的a=d,但b和c均不等于d,则e的取值为2;又例如,第一节点的a和b均等于d,但c不等于d,则e的取值为1。举例来说,当第一节点下包含点云的叶子节点的数量为1,且第一节点的(a-d)+(b-d)+(c-d)的和大于等于e的2倍数时,采用深度优先的方式对第一节点中的点云进行编码或解码。
在一个示例中,对点云进行位置编码时,可以是采用从广度优先的方式切换到深度优先的方式对点云的位置进行编码;或者,直接采用深度优先的方式或者从深度优先的方式开始对点云的位置进行编码。在任何一种编码方式中,都可以在码流中采用N比特0或作为标识符来标识接下来的码流是采用深度优先的方式进行编码的。例如,在对当前节点采用八叉树划分的情况下,可以采用8比特0作为标识符,来指示当前节点的码流是采用深度优先的方式进行编码的。又例如,在对当前节点采用四叉树划分的情况下,可以采用4比特0作为标识符,来指示当前节点的码流是采用深度优先的方式进行编码的。又例如,在对当前节点采用二叉树划分的情况下,可以采用2比特0作为标识符,来指示当前节点的码流是采用深度优先的方式进行编码的。
请参见图13,图13是本发明实施例提供的一种点云处理设备的结构示意图,具体的,所述点云处理设备包括:存储器1301、处理器1302以及数据接口1303。
所述存储器1301可以包括易失性存储器(volatile memory);存储器1301也可以包括非易失性存储器(non-volatile memory);存储器1301还可以包括上述种类的存储器的组合。所述处理器1302可以是中央处理器(central processing unit,CPU)。所述处理器1302还可以进一步包括硬件点云处理设备。上述硬件点云处理设备可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。具体例如可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA)或其任意组合。
进一步地,所述存储器1301用于存储程序,当程序被执行时所述处理器1302可以调用存储器1301中存储的程序,用于执行如下步骤:
对多叉树的第N层采用广度优先的方式进行编码或者解码;
当所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件时,采用深度优先的方式对所述第一节点中的点云进行编码或者解码,得到所述第一节点的码流,所述第一节点的码流中包含标识符和所述第一节点中的点云点在多叉树中各层的节点的索引,所述标识符用于指示所述第一节点的子节点从广度优先的方式切换至深度优先的方式进行编码或者解码,其中,N为大于或等于1的整数。
进一步地,所述第一节点在所述第N层之下的至少一层的码流中,包括所述第一节点在所述一层中含有点云点的子节点的索引,以及第一指示位,所述第一指示位用于指示所述一层是否为所述第一节点下的最底层。
进一步地,所述第一指示位位于所述一层中所有含有点云点的子节点的索引之前,或者位于所述一层中所有含有点云点的子节点的索引之后。
进一步地,所述第一节点在所述第N层之下的每一层的码流中,包括第二指示位,所述第二指示位用于指示所述一层中含有点云点的节点的数量。
进一步地,所述第二指示位用于指示所述第一节点在所述一层中含有点云点的节点的数量为1或2。
进一步地,所述第一节点在所述第N层之下的每一层的码流中,在所述第二指示位之后还包括所述一层中所有含有点云点的节点的索引。
进一步地,所述第一节点的码流中,包括第三指示位,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量。
进一步地,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量为1或2。
进一步地,所述第一节点的码流中还包括所述第一节点在所述第N层之下所有含有点云点的节点的索引。
进一步地,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下的最底层的叶子节点的数量小于或等于2;或者,
所述第一节点的全部点云点的数量小于或等于2。
进一步地,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下中至少连续M层中特定节点的分布相同,所述特定节点为包含点云点的节点,所述M为预设的正整数。
进一步地,所述第一节点的码流中,包括所述第一节点在所述第N层之下所述特定节点的分布相同的层数,以及所述特定节点的索引。
进一步地,所述第一节点的码流中,在每一个叶子节点的索引之后,还包括所述叶子节点中所包含的点云点的数量。
进一步地,所述特定节点的分布相同的层数是采用定长编码方式或者变长编码方式进行编码得到的。
进一步地,所述多叉树划分包括以下任意一种或任意两种的结合或三种的结合:
八叉树划分、四叉树划分、二叉树划分。
进一步地,所述第N层是采用八叉树划分得到的,所述标识符为八比特0;或者,
所述第N层是采用四叉树划分得到的,所述标识符为四比特0;或者,
所述第N层是采用二叉树划分得到的,所述标识符为二比特0。
进一步地,所述点云的码流中包含有标识位,用于指示是否使能切换到深度优先的方式进行编码。
本发明实施例中,点云处理设备通过多叉树划分的方式对点云进行位置划分,并对多叉树的第N层采用广度优先的方式进行编码或者解码,当第N层的第一节点中的全部点云点的数量或者分布满足预设条件时,采用深度优先的方式对第一节点中的点云进行编码或者解码,得到第一节点的码流,第一节点的码流中包含标识符和第一节点中的点云点在多叉树中各层的节点的索引,该标识符用于指示第一节点的子节点从广度优先的方式切换至深度优先的方式进行编码或者解码,其中,N为大于或等于1的整数。通过这种实施方式,可以避免对多叉树划分中第一节点的每个子节点进行编码或者解码,降低了编码或者解码的复杂度以及在时间上的开销,提高了对点云压缩编码或者解码的并行化处理,提高了编码或者解码效率和性能。
请参见图14,图14是本发明实施例提供的一种点云解码设备的结构示意图,具体的,所述点云解码设备包括:存储器1401、处理器1402以及数据接口1403。
所述存储器1401可以包括易失性存储器(volatile memory);存储器1401也可以包括非易失性存储器(non-volatile memory);存储器1401还可以包括上述种类的存储器的组合。所述处理器1402可以是中央处理器(central processing unit,CPU)。所述处理器1402还可以进一步包括硬件点云解码设备。上述硬件点云解码设备可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。具体例如可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA)或其任意组合。
进一步地,所述存储器1401用于存储程序,当程序被执行时所述处理器1402可以调用存储器1401中存储的程序,用于执行如下步骤:
对多叉树的第N层采用广度优先的方式进行解码;
当解析到标识符时,采用深度优先的方式对所述第N层的第一节点的码流进行解码,所述第一节点的码流中包含所述标识符和所述第一节点中的点云点在多叉树中各层的节点的索引,所述标识符用于指示所述第一节点的子节点从广度优先的方式切换至深度优先的方式进行解码,其中,N为大于或等于1的整数。
进一步地,所述第一节点在所述第N层之下的至少一层的码流中,包括所述第一节点在所述一层中含有点云点的子节点的索引,以及第一指示位,所述第一指示位用于指示所述一层是否为所述第一节点下的最底层。
进一步地,所述第一指示位位于所述一层中所有含有点云点的子节点的索引之前,或者位于所述一层中所有含有点云点的子节点的索引之后。
进一步地,所述第一节点在所述第N层之下的每一层的码流中,包括第二指示位,所述第二指示位用于指示所述一层中含有点云点的节点的数量。
进一步地,所述第二指示位用于指示所述第一节点在所述一层中含有点云点的节点的数量为1或2。
进一步地,所述第一节点在所述第N层之下的每一层的码流中,在所述第二指示位之后还包括所述一层中所有含有点云点的节点的索引。
进一步地,所述第一节点的码流中,包括第三指示位,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量。
进一步地,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量为1或2。
进一步地,所述第一节点的码流中还包括所述第一节点在所述第N层之下所有含有点云点的节点的索引。
进一步地,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下的最底层的叶子节点的数量小于或等于2;或者,
所述第一节点的全部点云点的数量小于或等于2。
进一步地,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下中至少连续M层中特定节点的分布相同,所述特定节点为包含点云点的节点,所述M为预设的正整数。
进一步地,所述第一节点的码流中,包括所述第一节点在所述第N层之下所述特定节点的分布相同的层数,以及所述特定节点的索引。
进一步地,所述第一节点的码流中,在每一个叶子节点的索引之后,还包括所述叶子节点中所包含的点云点的数量。
进一步地,所述特定节点的分布相同的层数是采用定长编码方式或者变长编码方式进行编码得到的。
进一步地,所述多叉树划分包括以下任意一种或任意两种的结合或三种的结合:
八叉树划分、四叉树划分、二叉树划分。
进一步地,所述第N层是采用八叉树划分得到的,所述标识符为八比特0;或者,
所述第N层是采用四叉树划分得到的,所述标识符为四比特0;或者,
所述第N层是采用二叉树划分得到的,所述标识符为二比特0。
进一步地,所述点云的码流中包含有标识位,用于指示是否使能切换到深度优先的方式进行编码。
本发明实施例中,点云解码设备可以通过多叉树划分的方式对点云进行位置划分,并对多叉树的第N层采用广度优先的方式进行解码,当解析到标识符时,采用深度优先的方式对所述第N层的第一节点的码流进行解码,得到第一节点的码流,第一节点的码流中包含标识符和第一节点中的点云点在多叉树中各层的节点的索引,该标识符用于指示第一节点的子节点从广度优先的方式切换至深度优先的方式进行解码,其中,N为大于或等于1的整数。通过这种实施方式,可以降低解码的复杂度以及在时间上的开销,提高了对点云解码的并行化处理,提高了解码效率和性能。
在本发明的实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例图10中描述的用于点云处理的方法方式,也可实现图13所述本发明所对应实施例的点云处理设备,或图14所述本发明所对应实施例的点云解码设备,在此不再赘述。
所述计算机可读存储介质可以是前述任一项实施例所述的设备的内部存储单元,例如设备的硬盘或内存。所述计算机可读存储介质也可以是所述设备的外部存储设备,例如所述设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述设备所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明部分实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (81)
1.一种用于点云处理的方法,其特征在于,所述点云采用多叉树划分的方式进行位置划分,所述方法包括:
对所述多叉树的第N层采用广度优先的方式进行编码;
当所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件时,采用深度优先的方式对所述第一节点中的点云进行编码,得到所述第一节点的码流,所述第一节点的码流中包含标识符和所述第一节点中的点云点在多叉树中各层的节点的索引,所述标识符用于指示所述第一节点的子节点从广度优先的方式切换至深度优先的方式进行编码,其中,N为大于或等于1的整数。
2.根据权利要求1所述的方法,其特征在于,所述第一节点在所述第N层之下的至少一层的码流中,包括所述第一节点在所述一层中含有点云点的子节点的索引,以及第一指示位,所述第一指示位用于指示所述一层是否为所述第一节点下的最底层。
3.根据权利要求2所述的方法,其特征在于,所述第一指示位位于所述一层中所有含有点云点的子节点的索引之前,或者位于所述一层中所有含有点云点的子节点的索引之后。
4.根据权利要求1所述的方法,其特征在于,所述第一节点在所述第N层之下的每一层的码流中,包括第二指示位,所述第二指示位用于指示所述一层中含有点云点的节点的数量。
5.根据权利要求4所述的方法,其特征在于,所述第二指示位用于指示所述第一节点在所述一层中含有点云点的节点的数量为1或2。
6.根据权利要求5所述的方法,其特征在于,所述第一节点在所述第N层之下的每一层的码流中,在所述第二指示位之后还包括所述一层中所有含有点云点的节点的索引。
7.根据权利要求1所述的方法,其特征在于,所述第一节点的码流中,包括第三指示位,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量。
8.根据权利要求7所述的方法,其特征在于,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量为1或2。
9.根据权利要求7所述的方法,其特征在于,所述第一节点的码流中还包括所述第一节点在所述第N层之下所有含有点云点的节点的索引。
10.根据权利要求1至9任一项所述的方法,其特征在于,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下的最底层的叶子节点的数量小于或等于2;或者,
所述第一节点的全部点云点的数量小于或等于2。
11.根据权利要求1所述的方法,其特征在于,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下中至少连续M层中特定节点的分布相同,所述特定节点为包含点云点的节点,所述M为预设的正整数。
12.根据权利要求11所述的方法,其特征在于,所述第一节点的码流中,包括所述第一节点在所述第N层之下所述特定节点的分布相同的层数,以及所述特定节点的索引。
13.根据权利要求1至9任一项所述的方法,其特征在于,所述第一节点的码流中,在每一个叶子节点的索引之后,还包括所述叶子节点中所包含的点云点的数量。
14.根据权利要求12所述的方法,其特征在于,所述特定节点的分布相同的层数是采用定长编码方式或者变长编码方式进行编码得到的。
15.根据权利要求1所述的方法,其特征在于,所述多叉树划分包括以下任意一种或任意两种的结合或三种的结合:
八叉树划分、四叉树划分、二叉树划分。
16.根据权利要求15所述的方法,其特征在于,
所述第N层是采用八叉树划分得到的,所述标识符为八比特0;或者,
所述第N层是采用四叉树划分得到的,所述标识符为四比特0;或者,
所述第N层是采用二叉树划分得到的,所述标识符为二比特0。
17.根据权利要求1所述的方法,其特征在于,所述点云的码流中包含有标识位,用于指示是否使能切换到深度优先的方式进行编码。
18.根据权利要求1所述的方法,其特征在于,所述方法还包括:
编码指示信息,用于指示所述第一节点下的划分方式。
19.根据权利要求18所述的方法,其特征在于,所述划分方式包括至少部分层数的划分叉树。
20.根据权利要求19所述的方法,其特征在于,所述划分方式包括所述第一节点下前i层采用特定叉树划分,所述特定叉树是八叉树、四叉树、二叉树中的一种;所述方法还包括:
对所述第一节点下第i+1层上的子节点,根据所述子节点的在三个方向上的边长是否达到最小边长,确定采用对应的叉树对所述子节点进行划分,以及采用所述对应的叉树对应的索引比特位数对包含点云的子节点进行编码。
21.一种用于点云解码的方法,其特征在于,所述点云采用多叉树划分的方式进行位置划分,所述方法包括:
默认对所述多叉树的第N层进行解码的方式为广度优先的方式;
当解析到标识符时,采用深度优先的方式对所述第N层的第一节点的码流进行解码,所述第一节点的码流中包含所述标识符和所述第一节点中的点云点在多叉树中各层的节点的索引,所述标识符用于指示所述第一节点的子节点从广度优先的方式切换至深度优先的方式进行解码,其中,N为大于或等于1的整数。
22.根据权利要求21所述的方法,其特征在于,所述第一节点在所述第N层之下的至少一层的码流中,包括所述第一节点在所述一层中含有点云点的子节点的索引,以及第一指示位,所述第一指示位用于指示所述一层是否为所述第一节点下的最底层。
23.根据权利要求22所述的方法,其特征在于,所述第一指示位位于所述一层中所有含有点云点的子节点的索引之前,或者位于所述一层中所有含有点云点的子节点的索引之后。
24.根据权利要求21所述的方法,其特征在于,所述第一节点在所述第N层之下的每一层的码流中,包括第二指示位,所述第二指示位用于指示所述一层中含有点云点的节点的数量。
25.根据权利要求24所述的方法,其特征在于,所述第二指示位用于指示所述第一节点在所述一层中含有点云点的节点的数量为1或2。
26.根据权利要求25所述的方法,其特征在于,所述第一节点在所述第N层之下的每一层的码流中,在所述第二指示位之后还包括所述一层中所有含有点云点的节点的索引。
27.根据权利要求21所述的方法,其特征在于,所述第一节点的码流中,包括第三指示位,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量。
28.根据权利要求27所述的方法,其特征在于,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量为1或2。
29.根据权利要求27所述的方法,其特征在于,所述第一节点的码流中还包括所述第一节点在所述第N层之下所有含有点云点的节点的索引。
30.根据权利要求21至29任一项所述的方法,其特征在于,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下的最底层的叶子节点的数量小于或等于2;或者,
所述第一节点的全部点云点的数量小于或等于2。
31.根据权利要求21所述的方法,其特征在于,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下中至少连续M层中特定节点的分布相同,所述特定节点为包含点云点的节点,所述M为预设的正整数。
32.根据权利要求31所述的方法,其特征在于,所述第一节点的码流中,包括所述第一节点在所述第N层之下所述特定节点的分布相同的层数,以及所述特定节点的索引。
33.根据权利要求21至29任一项所述的方法,其特征在于,所述第一节点的码流中,在每一个叶子节点的索引之后,还包括所述叶子节点中所包含的点云点的数量。
34.根据权利要求32所述的方法,其特征在于,所述特定节点的分布相同的层数是采用定长编码方式或者变长编码方式进行编码得到的。
35.根据权利要求21所述的方法,其特征在于,
所述多叉树划分包括以下任意一种或任意两种的结合或三种的结合:
八叉树划分、四叉树划分、二叉树划分。
36.根据权利要求35所述的方法,其特征在于,
所述第N层是采用八叉树划分得到的,所述标识符为八比特0;或者,
所述第N层是采用四叉树划分得到的,所述标识符为四比特0;或者,
所述第N层是采用二叉树划分得到的,所述标识符为二比特0。
37.根据权利要求21所述的方法,其特征在于,所述点云的码流中包含有标识位,用于指示是否使能切换到深度优先的方式进行解码。
38.根据权利要求21所述的方法,其特征在于,所述方法还包括:
解码指示信息,所述指示信息用于指示所述第一节点下的划分方式。
39.根据权利要求38所述的方法,其特征在于,所述划分方式包括至少部分层数的划分叉树。
40.根据权利要求39所述的方法,其特征在于,所述划分方式包括所述第一节点下前i层采用特定叉树划分,所述特定叉树是八叉树、四叉树、二叉树中的一种;所述方法还包括:
对所述第一节点下第i+1层上的子节点,根据所述子节点的在三个方向上的边长是否达到最小边长,确定采用对应的叉树对所述子节点进行划分,以及根据所述对应的叉树对应的索引比特位数对包含点云的子节点进行解码。
41.一种点云处理设备,其特征在于,所述设备包括:存储器和处理器,
所述存储器,用于存储程序;
所述处理器,用于调用所述程序,当所述程序被执行时,用于执行以下操作:
对多叉树的第N层采用广度优先的方式进行编码;
当所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件时,采用深度优先的方式对所述第一节点中的点云进行编码,得到所述第一节点的码流,所述第一节点的码流中包含标识符和所述第一节点中的点云点在多叉树中各层的节点的索引,所述标识符用于指示所述第一节点的子节点从广度优先的方式切换至深度优先的方式进行编码,其中,N为大于或等于1的整数。
42.根据权利要求41所述的设备,其特征在于,所述第一节点在所述第N层之下的至少一层的码流中,包括所述第一节点在所述一层中含有点云点的子节点的索引,以及第一指示位,所述第一指示位用于指示所述一层是否为所述第一节点下的最底层。
43.根据权利要求42所述的设备,其特征在于,所述第一指示位位于所述一层中所有含有点云点的子节点的索引之前,或者位于所述一层中所有含有点云点的子节点的索引之后。
44.根据权利要求41所述的设备,其特征在于,所述第一节点在所述第N层之下的每一层的码流中,包括第二指示位,所述第二指示位用于指示所述一层中含有点云点的节点的数量。
45.根据权利要求44所述的设备,其特征在于,所述第二指示位用于指示所述第一节点在所述一层中含有点云点的节点的数量为1或2。
46.根据权利要求45所述的设备,其特征在于,所述第一节点在所述第N层之下的每一层的码流中,在所述第二指示位之后还包括所述一层中所有含有点云点的节点的索引。
47.根据权利要求41所述的设备,其特征在于,所述第一节点的码流中,包括第三指示位,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量。
48.根据权利要求47所述的设备,其特征在于,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量为1或2。
49.根据权利要求47所述的设备,其特征在于,所述第一节点的码流中还包括所述第一节点在所述第N层之下所有含有点云点的节点的索引。
50.根据权利要求41至49任一项所述的设备,其特征在于,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下的最底层的叶子节点的数量小于或等于2;或者,
所述第一节点的全部点云点的数量小于或等于2。
51.根据权利要求41所述的设备,其特征在于,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下中至少连续M层中特定节点的分布相同,所述特定节点为包含点云点的节点,所述M为预设的正整数。
52.根据权利要求51所述的设备,其特征在于,所述第一节点的码流中,包括所述第一节点在所述第N层之下所述特定节点的分布相同的层数,以及所述特定节点的索引。
53.根据权利要求41至49任一项所述的设备,其特征在于,所述第一节点的码流中,在每一个叶子节点的索引之后,还包括所述叶子节点中所包含的点云点的数量。
54.根据权利要求52所述的设备,其特征在于,所述特定节点的分布相同的层数是采用定长编码方式或者变长编码方式进行编码得到的。
55.根据权利要求41所述的设备,其特征在于,
所述多叉树的划分包括以下任意一种或任意两种的结合或三种的结合:
八叉树划分、四叉树划分、二叉树划分。
56.根据权利要求55所述的设备,其特征在于,
所述第N层是采用八叉树划分得到的,所述标识符为八比特0;或者,
所述第N层是采用四叉树划分得到的,所述标识符为四比特0;或者,
所述第N层是采用二叉树划分得到的,所述标识符为二比特0。
57.根据权利要求41所述的设备,其特征在于,所述点云的码流中包含有标识位,用于指示是否使能切换到深度优先的方式进行编码。
58.根据权利要求41所述的设备,其特征在于,所述处理器还用于:
编码指示信息,用于指示所述第一节点下的划分方式。
59.根据权利要求58所述的设备,其特征在于,所述划分方式包括至少部分层数的划分叉树。
60.根据权利要求59所述的设备,其特征在于,所述划分方式包括所述第一节点下前i层采用特定叉树划分,所述特定叉树是八叉树、四叉树、二叉树中的一种;所述处理器还用于:
对所述第一节点下第i+1层上的子节点,根据所述子节点的在三个方向上的边长是否达到最小边长,确定采用对应的叉树对所述子节点进行划分,以及采用所述对应的叉树对应的索引比特位数对包含点云的子节点进行编码。
61.一种点云解码设备,其特征在于,所述设备包括:存储器和处理器,
所述存储器,用于存储程序;
所述处理器,用于调用所述程序,当所述程序被执行时,用于执行以下操作:
默认对多叉树的第N层进行解码的方式为广度优先的方式;
当解析到标识符时,采用深度优先的方式对所述第N层的第一节点的码流进行解码,所述第一节点的码流中包含所述标识符和所述第一节点中的点云点在多叉树中各层的节点的索引,所述标识符用于指示所述第一节点的子节点从广度优先的方式切换至深度优先的方式进行解码,其中,N为大于或等于1的整数。
62.根据权利要求61所述的设备,其特征在于,所述第一节点在所述第N层之下的至少一层的码流中,包括所述第一节点在所述一层中含有点云点的子节点的索引,以及第一指示位,所述第一指示位用于指示所述一层是否为所述第一节点下的最底层。
63.根据权利要求62所述的设备,其特征在于,所述第一指示位位于所述一层中所有含有点云点的子节点的索引之前,或者位于所述一层中所有含有点云点的子节点的索引之后。
64.根据权利要求61所述的设备,其特征在于,所述第一节点在所述第N层之下的每一层的码流中,包括第二指示位,所述第二指示位用于指示所述一层中含有点云点的节点的数量。
65.根据权利要求64所述的设备,其特征在于,所述第二指示位用于指示所述第一节点在所述一层中含有点云点的节点的数量为1或2。
66.根据权利要求65所述的设备,其特征在于,所述第一节点在所述第N层之下的每一层的码流中,在所述第二指示位之后还包括所述一层中所有含有点云点的节点的索引。
67.根据权利要求61所述的设备,其特征在于,所述第一节点的码流中,包括第三指示位,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量。
68.根据权利要求67所述的设备,其特征在于,所述第三指示位用于指示所述第一节点在所述第N层之下含有点云点的叶子节点的数量为1或2。
69.根据权利要求67所述的设备,其特征在于,所述第一节点的码流中还包括所述第一节点在所述第N层之下所有含有点云点的节点的索引。
70.根据权利要求61至69任一项所述的设备,其特征在于,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下的最底层的叶子节点的数量小于或等于2;或者,
所述第一节点的全部点云点的数量小于或等于2。
71.根据权利要求61所述的设备,其特征在于,所述第N层的第一节点中的全部点云点的数量或者分布满足预设条件,包括:
所述第一节点在所述第N层之下中至少连续M层中特定节点的分布相同,所述特定节点为包含点云点的节点,所述M为预设的正整数。
72.根据权利要求71所述的设备,其特征在于,所述第一节点的码流中,包括所述第一节点在所述第N层之下所述特定节点的分布相同的层数,以及所述特定节点的索引。
73.根据权利要求61至69任一项所述的设备,其特征在于,所述第一节点的码流中,在每一个叶子节点的索引之后,还包括所述叶子节点中所包含的点云点的数量。
74.根据权利要求72所述的设备,其特征在于,所述特定节点的分布相同的层数是采用定长编码方式或者变长编码方式进行编码得到的。
75.根据权利要求61所述的设备,其特征在于,所述多叉树的划分包括以下任意一种或任意两种的结合或三种的结合:
八叉树划分、四叉树划分、二叉树划分。
76.根据权利要求75所述的设备,其特征在于,
所述第N层是采用八叉树划分得到的,所述标识符为八比特0;或者,
所述第N层是采用四叉树划分得到的,所述标识符为四比特0;或者,
所述第N层是采用二叉树划分得到的,所述标识符为二比特0。
77.根据权利要求61所述的设备,其特征在于,所述点云的码流中包含有标识位,用于指示是否使能切换到深度优先的方式进行解码。
78.根据权利要求61所述的设备,其特征在于,所述处理器还用于:
解码指示信息,所述指示信息用于指示所述第一节点下的划分方式。
79.根据权利要求78所述的设备,其特征在于,所述划分方式包括至少部分层数的划分叉树。
80.根据权利要求79所述的设备,其特征在于,所述划分方式包括所述第一节点下前i层采用特定叉树划分,所述特定叉树是八叉树、四叉树、二叉树中的一种;所述处理器还用于:
对所述第一节点下第i+1层上的子节点,根据所述子节点的在三个方向上的边长是否达到最小边长,确定采用对应的叉树对所述子节点进行划分,以及根据所述对应的叉树对应的索引比特位数对包含点云的子节点进行解码。
81.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至40任一项所述方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/091351 WO2020248243A1 (zh) | 2019-06-14 | 2019-06-14 | 三维数据点的编解码方法和装置 |
CNPCT/CN2019/091351 | 2019-06-14 | ||
CNPCT/CN2019/123821 | 2019-12-06 | ||
PCT/CN2019/123821 WO2021109153A1 (zh) | 2019-12-06 | 2019-12-06 | 一种用于点云处理、解码的方法、设备及存储介质 |
PCT/CN2019/126090 WO2020248562A1 (zh) | 2019-06-14 | 2019-12-17 | 一种用于点云处理、解码的方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111699697A CN111699697A (zh) | 2020-09-22 |
CN111699697B true CN111699697B (zh) | 2023-07-11 |
Family
ID=72476464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980012174.0A Active CN111699697B (zh) | 2019-06-14 | 2019-12-17 | 一种用于点云处理、解码的方法、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220108494A1 (zh) |
CN (1) | CN111699697B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113632492A (zh) * | 2019-12-06 | 2021-11-09 | 深圳市大疆创新科技有限公司 | 一种用于点云处理、解码的方法、设备及存储介质 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021196029A1 (zh) * | 2020-03-31 | 2021-10-07 | 深圳市大疆创新科技有限公司 | 一种用于点云编码、解码的方法和设备 |
WO2022073156A1 (en) * | 2020-10-06 | 2022-04-14 | Beijing Xiaomi Mobile Software Co., Ltd. | Method of encoding and decoding, encoder, decoder and software |
CN112256652B (zh) * | 2020-10-19 | 2022-09-16 | 济南大学 | 一种三维点云属性压缩方法、系统及终端 |
CN112565794B (zh) * | 2020-12-03 | 2022-10-04 | 西安电子科技大学 | 一种点云孤立点编码、解码方法及装置 |
CN112565795B (zh) * | 2020-12-03 | 2022-10-04 | 西安电子科技大学 | 一种点云几何信息编码及解码方法 |
CN112583803A (zh) * | 2020-12-04 | 2021-03-30 | 上海交通大学 | 数据处理方法、装置、通信节点和存储介质 |
US11611775B2 (en) * | 2021-01-19 | 2023-03-21 | Tencent America LLC | Method and apparatus for point cloud coding |
WO2022155929A1 (zh) * | 2021-01-22 | 2022-07-28 | 深圳市大疆创新科技有限公司 | 点云几何解码方法、装置、计算机可读存储介质 |
CN115086716B (zh) * | 2021-03-12 | 2023-09-08 | 腾讯科技(深圳)有限公司 | 点云中邻居点的选择方法、装置及编解码器 |
CN116309896A (zh) * | 2021-12-20 | 2023-06-23 | 华为技术有限公司 | 数据编解码方法、装置和设备 |
CN115131449A (zh) * | 2022-06-18 | 2022-09-30 | 腾讯科技(深圳)有限公司 | 点云处理方法、装置及计算机设备、存储介质 |
US11609334B1 (en) * | 2022-08-26 | 2023-03-21 | Aeva, Inc. | Techniques for point cloud processing utilizing point indices |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106846425B (zh) * | 2017-01-11 | 2020-05-19 | 东南大学 | 一种基于八叉树的散乱点云压缩方法 |
US11113845B2 (en) * | 2017-09-18 | 2021-09-07 | Apple Inc. | Point cloud compression using non-cubic projections and masks |
CN108322742B (zh) * | 2018-02-11 | 2019-08-16 | 北京大学深圳研究生院 | 一种基于帧内预测的点云属性压缩方法 |
CN108833927B (zh) * | 2018-05-03 | 2019-08-16 | 北京大学深圳研究生院 | 一种基于删除量化矩阵中0元素的点云属性压缩方法 |
CN108632607B (zh) * | 2018-05-09 | 2019-06-21 | 北京大学深圳研究生院 | 一种基于多角度自适应帧内预测的点云属性压缩方法 |
-
2019
- 2019-12-17 CN CN201980012174.0A patent/CN111699697B/zh active Active
-
2021
- 2021-12-14 US US17/644,178 patent/US20220108494A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113632492A (zh) * | 2019-12-06 | 2021-11-09 | 深圳市大疆创新科技有限公司 | 一种用于点云处理、解码的方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20220108494A1 (en) | 2022-04-07 |
CN111699697A (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111699697B (zh) | 一种用于点云处理、解码的方法、设备及存储介质 | |
CN111615791B (zh) | 在点云压缩中使用直接编码的方法和设备 | |
CN111699683B (zh) | 一种点云编码方法、点云解码方法及相关设备 | |
CN112449754B (zh) | 一种数据编码、数据解码方法、设备及存储介质 | |
EP3991437B1 (en) | Context determination for planar mode in octree-based point cloud coding | |
EP3595180B1 (en) | Methods and devices for neighbourhood-based occupancy prediction in point cloud compression | |
CN112470469B (zh) | 一种用于点云编码、解码的方法和设备 | |
EP4307684A2 (en) | Planar mode in octree-based point cloud coding | |
CN113632492A (zh) | 一种用于点云处理、解码的方法、设备及存储介质 | |
CN112385238B (zh) | 一种数据编码、数据解码方法、设备及存储介质 | |
US20220376702A1 (en) | Methods and devices for tree switching in point cloud compression | |
EP3595179A1 (en) | Methods and devices for lossy coding of point cloud occupancy | |
CN111699690A (zh) | 点云的处理方法和装置 | |
CN112740702A (zh) | 点云的编解码方法和装置 | |
CN113678460B (zh) | 一种数据编码、数据解码方法、设备及存储介质 | |
CN115379190B (zh) | 一种点云处理方法、装置及计算机设备、存储介质 | |
WO2020248562A1 (zh) | 一种用于点云处理、解码的方法、设备及存储介质 | |
CN114402621A (zh) | 变换方法、逆变换方法、编码器、解码器及存储介质 | |
CN113906681A (zh) | 点云数据的编解码方法、系统和存储介质 | |
WO2021108970A1 (zh) | 点云处理方法、编码器、解码器及存储介质 | |
CN112384955A (zh) | 三维数据点的编解码方法和装置 | |
CN116233468A (zh) | 点云解码方法、点云编码方法、装置、设备、介质及产品 | |
CN116320352A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |