用于三维数据点集处理的方法和设备与流程

专利2022-06-29  98


本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。

本申请涉及信息处理领域,并且更具体地,涉及一种用于三维数据点集处理的方法和设备。



背景技术:

三维数据点集是三维物体或场景的一种表现形式,是由空间中一组无规则分布、表达三维物体或场景的空间结构和表面属性的离散点所构成,一个三维数据集点的数据可以包括描述坐标信息的三维坐标,以及进一步包括该位置坐标的属性。为了准确反映空间中的信息,所需离散点的数目是巨大的。

为了减少三维数据点集数据存储和传输时所占用的带宽,需要对三维数据点集进行编码压缩处理。

如何提高对三维数据点集进行编码的编码性能是一项亟待解决的问题。



技术实现要素:

本申请实施例提供一种用于三维数据点集处理的方法和设备,可以提高对三维数据点集进行编码的灵活性,从而可以提高编码性能。

第一方面,提供了一种用于三维数据点集处理的方法,所述三维数据点集采用多叉树的方式进行划分,所述方法包括:

对所述多叉树的第n层采用广度优先的方式进行编码或解码;

在所述第n层的第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,n和m为大于或等于1的整数。

第二方面,提供了一种用于三维数据点集处理的设备,所述三维数据点集采用多叉树的方式进行划分,所述设备包括:

第一编码或解码单元,用于对所述多叉树的第n层采用广度优先的方式进行编码或解码;

第二编码或解码单元,用于在所述第n层的第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,n和m为大于或等于1的整数。

第三方面,提供了一种计算机系统,包括:存储器,用于存储计算机可执行指令;处理器,用于访问该存储器,并执行该计算机可执行指令,以进行上述第一方面的方法中的操作。

第四方面,提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码可以用于指示执行上述第一方面的方法。

第五方面,提供了一种计算机程序产品,该程序产品包括程序代码,该程序代码可以用于指示执行上述第一方面的方法。

在本申请实施例中,采用广度优先的方式对多叉树的第n层进行编码或解码,并在第n层的其中一个节点的全部点云点落入到之下的层中的同一节点内的情况下,采用深度优先的方式对该节点进行编码或解码,实现了对节点的灵活编码,从而提高了编码性能。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1根据本申请实施例的一种对三维数据点集进行编码的方法的示意性框图。

图2根据本申请实施例的一种对三维数据点集进行解码的方法的示意性框图。

图3是根据本申请实施例的立方体八叉树划分的示意性图。

图4是根据本申请实施例的一种八叉树编码方案的示意性图。

图5是根据本申请实施例的一种用于三维数据点集处理的方法的示意性流程图。

图6是根据本申请实施例的一种节点索引的示意性图。

图7是根据本申请实施例的另一种节点索引的示意性图

图8是根据本申请实施例的另一种八叉树编码方案的示意性图。

图9是根据本申请实施例的另一种八叉树编码方案的示意性图。

图10根据本申请实施例的另一种对三维数据点集进行编码的方法的示意性框图。

图11根据本申请实施例的另一种对三维数据点集进行解码的方法的示意性框图。

图12是层次编码方案(levelofdetail,lod)分层结构示意性图。

图13根据本申请实施例的另一种对三维数据点集进行编码的方法的示意性框图。

图14根据本申请实施例的另一种对三维数据点集进行解码的方法的示意性框图。

图15根据本申请实施例的另一种对三维数据点集进行解码的方法的示意性框图。

图16根据本申请实施例的另一种对三维数据点集进行解码的方法的示意性框图。

图17是根据本申请实施例的一种测距装置的示意性图。

图18是根据本申请实施例的一种测距装置的示意性图。

图19是根据本申请实施例的一种扫描图案的示意性图。

图20是根据本申请实施例的一种用于三维数据点集处理的设备的示意性框图。

图21是根据本申请实施例的一种计算机系统的示意性框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

除非另有说明,本申请实施例所使用的所有技术和科学术语与本申请的技术领域的技术人员通常理解的含义相同。本申请中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本申请的范围。

三维数据点集可以由离散的三维数据点构成,每个三维数据点的数据可以包括描述该三维数据点的位置坐标的信息,以及进一步可以包括属性的信息。其中,三维数据点的位置坐标可以为三维位置坐标(x,y,z)。三维数据点的属性可以包括三维数据点的反射率和/或颜色等。

本申请实施例提到的三维数据点集可以为点云,相应地,三维数据点可以为点云点。本申请实施例提到的三维数据点集可以用于高精3d地图。

本申请实施例中的三维数据点集可以是光探测装置对待探测物体进行光探测(例如激光探测)所得到。该光探测装置诸如可以为光电雷达、或激光雷达等。本申请实施例中的编码器可以集成于光探测装置中。

为了准确反映空间的信息,三维数据点集包括的三维数据点的数量通常是较大的。为了减少三维数据点集数据存储和传输时所占用的带宽,需要对三维数据点集数据进行编码压缩处理。以下将结合图1至图2描述如何对三维数据点集进行编码和解码处理。

如图1所示的编码方法,在110中,向编码器中输入三维数据点集的数据;在120中,对三维数据点集的数据中的位置坐标进行量化,例如,可以根据位置坐标在三个轴的最大值、最小值之间的差值,以及根据输入参数确定的量化精度,对每个三维数据点的位置坐标进行量化,将输入的三维数据点的位置坐标转换为大于等于零的整数坐标;在130中,对量化后的位置坐标进行位置坐标编码;在140中,按照位置坐标编码后的位置坐标的顺序,对三维数据点集的数据中的属性进行属性编码;在150中,对位置坐标编码后得到的码流以及属性编码后得到的码流进行熵编码;在160中,输出编码后的三维数据点集的数据,例如,可以输出到存储器中进行存储,或者,可以传送到解码端。

以及,如图2所示的解码方法,在210中,获取三维数据点集的待解码码流,例如,可以从存储器中获取该码流,或者获取编码端传送的该码流;在220中,对该码流进行熵解码,可以得到位置坐标对应的码流和属性对应的码流;在230中,对位置坐标对应的码流进行位置坐标解码;在240中,对解码后的位置坐标进行逆量化;在250中,可以按照解码后的位置坐标的顺序,对属性进行解码;260,根据解码后的属性以及位置坐标,得到解码后的三维数据点集的数据。

应理解,以上提到了三维数据点的数据可以包括属性的信息,但应理解,本申请实施例中,三维数据点的数据也可以不包括属性的信息,仅包括位置坐标的信息。

在对三维数据点的位置坐标进行编码或解码时,可以采用多叉树的方式进行编码或解码。其中,本申请实施例提到的多叉树可以是八叉树、四叉树、二叉树或是其中两种叉树的两两混合,或是三种叉树的混合。

其中,在进行多叉树编码时,可以在各层,对相应的节点进行多叉树的划分,并利用比特体现该节点的多叉树的划分情况,具体可以是节点划分得到各个子节点中的数据存在情况。

相应地,在进行多叉树解码时,在各层,可以获取对应的比特,根据获取的比特对相应的节点进行多叉树的划分。

对于编码端而言,进行多叉树划分时,每层多叉树的划分可以利用当前节点的中心点的坐标进行子节点的划分,通过中心点将当前节点划分为多个子节点,然后可以判断每个子节点内是否存在三维数据点,对存在三维数据点的子节点会再进一步进行划分,直至子节点划分至预设大小,例如,可以划分到边长为1的子节点时停止划分。

例如,以八叉树划分为例,如图3所示,是一个节点划分为8个子节点的划分方式,如图4所示的为节点逐层划分的示意性图。

在进行多叉树编码或解码时,可以采用广度优先的方式进行编码。

例如,在对三维数据点的位置坐标进行压缩编码时,可以按照八叉树的广度优先遍历顺序,逐层进行编码,逐层逐个编码每个八叉树的划分情况。以及,对每个节点进行八叉树划分后得到的八个子节点可以判断是否含有三维数据点,如果含有三维数据点则会进一步进行划分,直至子节点划分至预设大小。

以下以八叉树编码为例,结合图4描述如何采用广度优先的方式进行编码。

以图4为例,图中黑色方块表示当前子节点内含有三维数据点,白色方块表示当前子块内不含有三维数据点。在对根节点进行八叉树划分时,依次判断每个子节点内是否含有三维数据点,以图4中的第一层为例,第一次划分的八叉树中第三个节点含有三维数据点,剩余七个节点不含有三维数据点,则这样的划分可以用8比特来表示,具体为00100000。接着可以对含有数据点的子节点接着进行划分,即图4中的第二层划分,在第二层中,第三个节点与第八个节点内含有三维数据点,则这次八叉树划分可以用00100001来表示。接着,可以依次对这两个有三维数据点的子节点进行划分。其中,可以按照广度优先的顺序进行进一步划分。在第三层首先划分左边的子节点,划分结果如图4中第三层左半部分所示,第一个子节点和第四个子节点内含有三维数据点,则这次八叉树划分可以用10010000进行表示。接着对第二层的第二个有三维数据点的子节点进行划分,划分结果如图4中第三层右半部分所示,第二个子节点和第八个子节点内含有三维数据点,则这次八叉树划分可以用01000001所表示。后面层的划分与前面描述相似,按照广度优先遍历的顺序逐层进行划分。

图4中的划分结果对应的二进制码流为00100000001000011001000001000001……。当划分到最后一层,即子块的边长为1的时候,此时已经到达八叉树划分的最深位置,即到达了当前八叉树的叶子节点,不需要再进一步划分,接着需要编码当前叶子节点内含有的三维数据点的数目。当当前叶子节点内含有一个三维数据点时,直接编码一个0进行表示。当当前叶子节点内含有不止一个三维数据点时,可以设当前叶子节点内含有n个三维数据点,此时会先编码一个1,接着编码数值(n-1)。

其中,可以依次将前面编码表示八叉树划分的二进制比特流逐比特送入算术编码引擎中进行算术编码,接着将表示叶子节点内含有三维数据点数目的二进制比特流送入算术编码引擎中进行算术编码。根据上述流程即可以实现对点云数据中的位置坐标的编码。

随着编码技术的发展,对三维数据点集的编码性能的要求越来越高。如何提高多叉树编码的性能是一项亟待解决的问题。

图5是根据本申请实施例对三维数据点集处理的示意性图。其中,该三维数据点集可以采用多叉树的方式进行编码或解码。该方法可以由编码端实现,也可以由解码端实现。该方法可以包括以下内容中的至少部分内容。

在310中,对多叉树的第n层采用广度优先的方式进行编码或解码。

在320中,在所述第n层的第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,n可以大于或等于0,m为大于或等于1的整数。其中,第m层与第n层中的n和m的计数起始点(均是从根节点进行计数)是相同的,也即是以相同的层进行计数的。此时,可以意味着m的取值大于n。一些示例中,八叉树的划分深度可以等于m或者大于m。一些示例中,第m层可以是叶子节点。

或者,一些示例中,上述第m层也可以理解为从第n层作为计数起点0进行计数的。例如,第n层是第2层,则第m层可以是第一节点之下的第一层,也即,八叉树的第三层。一些示例中,八叉树的深度可以等于n m(第m层可以是叶子节点),也可以大于n m。

可选地,本申请实施例中根节点可以是八叉树的第0层。

应理解,在本申请实施例中,“在所述第n层的第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码”的表述中的“在所述第n层的第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内的情况下”可以是指第一节点中的全部三维数据点是落入到第m层的同一节点内的,而该方法的执行主体可以具有判断“所述第n层的第一节点中的全部三维数据点是否落入到所述第一节点下的第m层的同一个节点内”的动作,也可以不具有判断“所述第n层的第一节点中的全部三维数据点落是否入到所述第一节点下的第m层的同一个节点内”的动作。

例如,对于编码端而言,可以具有判断“所述第n层的第一节点中的全部三维数据点是否落入到所述第一节点下的第m层的同一个节点内”的动作;而对于解码端而言,可以不具有判断“所述第n层的第一节点中的全部三维数据点是否落入到所述第一节点下的第m层的同一个节点内”的动作。

应理解,上述提到在第n层采用广度优先的方式进行编码或解码,但本申请实施例并不限于此,在对三维数据点集的编码或解码过程中,也可以在第一层即采用深度优先的方式进行编码。例如,在第一层,所有的三维数据点均落入到划分后的节点中的一个节点内,则此时,可以采用深度优先的方式对三维数据点进行编码。

可选地,在本申请实施例中,上述“采用深度优先的方式对所述第一节点进行编码或解码”可以理解为采用将广度优先的方式切换为深度优先的方式对第一节点进行编码或解码,如果在第一层即采用深度优先的方式进行编码或解码,则“采用将广度优先的方式切换为深度优先的方式对第一节点进行编码解码”可以理解为系统默认的是初始要采用广度优先的方式进行编码或解码的,只是由于满足了一定条件,才转为深度优先的方式进行编码或解码的。

还应理解,在本申请实施例中,在满足某一条件时,执行某某动作并不代表着只要满足该某一条件,就必须要执行该某某动作,只是代表着执行该某某动作之前需要满足该某一条件,也有可能需要判断其他的条件需要得到满足。

可选地,本申请实施例中的节点可以称为块,子节点可以称为子块。本申请实施例中的节点(或块)和子节点(或子块)是相对的概念。例如,对于第n层而言,该层的一个节点可以是上一层(或上多层)的子节点,以及可以是下一层的父节点。

可选地,在本申请实施例中,在某个层进行广度优先的方式进行编码或解码可以是指在编码或解码完该层的指定范围内的多个节点的情况下,再编码下一层的节点,其中,该指定范围内的多个节点可以是指多叉树编码过程中一个层的全部节点,也可以是上一个或多个层的节点中的子节点,也可以是除以下节点之外的节点:被采用深度优先的方式编码或解码的节点和/或其子节点。

可选地,在本申请实施例中,对节点进行深度优先的方式进行编码或解码可以是指该节点在当前层以及当前层之下层的编码比特(可以是反映多叉树划分情况的比特,以及可以进一步包括描述叶子节点中包括的点云点的数量的比特)中未穿插有其他节点的比特,也就是该节点及其子节点的比特是连续的,聚集在一起的。

应理解,本申请实施例中提到的广度优先或深度优先也可以具有其他的名称,例如,广度或深度等。

可选地,在本申请实施例中,某一层的节点可以理解为在该层中还未被进行多叉树划分的节点,对该层进行多叉树划分,可以理解为对该层的具有三维数据点的节点进行多个子节点的划分。

可选地,在本申请实施例中,上述第m层可以与第n层相差一层,也可以相差多层,也就是说,所述第n层的第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点,可以理解为在判断当前层的某一节点的三维数据点在该n层之下的多层中的每一层均落入了一个节点中。

可选地,在本申请实施例中,由于一个节点的三维数据点可以落入到其下某一层的同一个子节点内,所以在针对该节点在该层进行编码时,可以只需编码该一个子节点的索引值。其中,索引值的取值可以从0开始,按照1依次累加。例如,八叉树的各个节点的索引值可以为000、001、010、011、100、101、110、111。

具体地,所述第一节点的三维数据点在第k层对应的比特取值包括:所述第一节点的三维数据点在所述k层中所属的节点的索引值,其中,所述第k层为所述第一节点下的其中一层,且在所述第k层,所述第一节点中的全部三维数据点落入到一个节点内。

以八叉树编码为例,一个节点的三维数据点落入到某一层的八个节点中的第一个子节点,则此时针对该层的编码比特可以为000,也就是说,描述该节点的八叉树划分情况的比特可以为000。

应理解,在本申请实施例中,上述k的取值可以大于或等于上述m。也就是说,对于编码端而言,可以在确定某一节点其下的两层中的每一层,该节点的三维数据点均落入到同一个节点内时,则可以对该第一节点进行深度优先编码。而有可能存在这样一种情况,在该节点其下的三层中的每一层,该节点的三维数据点均落入到同一个节点内时,对该三层的每一层进行编码时,均可以编码三维数据点所属的节点的索引值。

可选地,在本申请实施例中,所述第k层中各个节点的索引值是预设的。

具体而言,所述第k层中各个节点的索引值是基于各个节点所处的位置预设的。也就是各个节点的索引值是固定的

例如,如图6所示,不管是哪一层的八叉树划分,同一位置的块的索引值是固定的。例如,左上后的块的索引值是0(转成二进制为000),右下后的块的索引值是7(转成二进制为111)。

应理解,图6所示的节点的索引值仅仅是本申请实施例的一种具体实现方式,不应对本申请实施例造成特别限定,本申请实施例还可以具有其他的实现方式。例如,对八个块中的任何一个都可以编码0至7中的任何一个数,但是在一次编码方案中0至7中的索引值只能被一个位置的块使用,不可重复使用。

或者,在本申请实施例中,所述第k层中多个节点对应的多个索引值的起始索引值是基于以下确定的:所述至少一个三维数据点在所述第k层的上一层所属的节点

具体而言,所述上一层所属的节点所处的位置在所述第k层中对应位置处的节点的索引值为起始索引值。

例如,在对块分配索引值时,对第一层进行深度优先的八叉树划分子块采用固定分配的方案,分配方案可以参考前面图6所述的方案,对后面的层进行八叉树划分子块时,以前面一层划分存在三维数据点的子块在八叉树的位置作为新的一次八叉树换分子块中的索引0的位置,例如,如图7所示,上一层中,是右下前的块是上一个块中存在三维数据点的块,则对该块进一步划分得到图7右侧的立方体,则可以以右下前的块的索引值为0确定各个块的索引值。

可选地,在本申请实施例中,有可能第一节点只有在之下的部分层内,存在该第一节点中的三维数据点落入到一个子节点中,而在其他更下的层,则会存在该第一节点中的三维数据点落入到多个子节点的情况,在该其他更下的层,则没法无法编码索引值,因为如果编码索引值,将会造成解码端无法解码的情况下。在本申请实施例中,可以在该其他更下的层,可以对该第一节点的子节点采用广度优先的方式进行编码或解码。

具体地,在所述第一节点的全部三维数据点落入到所述第一节点在第q层的多个子节点时,在所述第q层,采用广度优先的方式,对所述第一节点的所述的多个子节点进行编码,q为大于或等于1的整数,且所述第q层为所述第m层之下的层。

可选地,在本申请实施例中,在所述第q层对应的编码比特之前设置有第一标识符,所述第一标识符指示在所述第q层采用广度优先的方式,对所述第一节点的子节点进行编码。

具体地说,由于第一节点从第n层开始是采用深度优先的方式进行编码或解码的,但是在之后的至少一些层中,由于第一节点的三维数据点落入到多个子节点中,无法再采用索引值的方式进行编码,此时可以在该至少一些层的第一个层或全部层对应的比特(该比特是第一节点的子节点的比特)之前加上第一标识符,指示在当前层(进一步可以包括之后的层)采用广度优先的方式,对所述第一节点的子节点进行编码或解码。由此,可以在解码端在获取该第一标识符时,可以在当前层(进一步可以包括之后的层)采用广度优先的方式,对所述第一节点的子节点进行解码。

可选地,在本申请实施例中,在所述第q层为所述第n层以下的层中,首个对所述第一节点的子节点采用广度优先的方式进行编码的层时,在所述第q层对应的编码比特(具体可以为描述第一节点在第q层八叉树划分情况的比特)之前设置有所述第一标识符。

也就是说,在第n层之外,如果存在多个层对该第一节点的子节点采用广度优先的方式进行编码或解码,则只有在第一个对所述第一节点的子节点采用广度优先的方式进行编码的层对应的编码比特之前设置有第一标识符。

可选地,在本申请实施例中,第一标识符的比特数量可以等于各个节点的索引值的比特数量。例如,对于八叉树而言,节点的索引值可以具有4个比特位,第一标识符也可以具有4个比特位,该第一标识符的比特取值可以不等于任一索引值的比特取值,且各个节点的索引值的比特取值各不相同。

或者,在本申请实施例中,所述第一标识符的比特取值等于各个节点中一个节点的索引值的比特取值;所述第一标识符之后存在第一标识位,所述第一标识位用于指示在前的比特取值表示所述第一标识符;所述一个节点的索引值之后存在第二标识位,所述第二标识位用于指示在前的比特取值表示所述一个节点的索引值;所述第一标识位的比特数量等于所述第二标识位的比特数量,但是比特取值不同。

例如,对于八叉树编码而言,节点的索引值可以是从000到111,第一标识符的比特取值可以是111,为了区分111是索引值还是第一标识符,可以在111之后加上一个标识位,该标识位取值为1,则代表111为索引值,该标识位取值为0,则代表111为第一标识符。

以上描述了将第一标识符后的第一标识位不属于第一标识符以及一个节点的索引值后的第二标识位不属于该索引值为例进行描述。本申请实施例还可以具有其他的理解。

例如,所述第一标识符包括前缀和后缀,一个节点的索引值包括前缀和后缀;所述第一标识符的前缀的比特取值等于所述一个节点的索引值的前缀的比特取值;所述第一标识符的后缀的比特数量等于所述一个节点的索引值的后缀的比特数量,所述第一标识符的后缀的比特取值不等于所述一个节点的索引值的后缀的比特取值;所述一个节点的索引值的前缀的比特数量等于其他节点的索引值的比特数量,且所述一个节点的索引值的前缀的比特取值不同于其他节点的索引值。

例如,对于八叉树编码而言,节点的索引值可以包括从000到110的索引值以及1111,第一标识符的比特取值可以是1110,其中,索引值1111中的前三个1是前缀,后个1是后缀,第一标识符1110中的前三个1是前缀,后个0是后缀。

从而解码端在解码到该前缀时,可以根据后缀判断解码出的是索引值还是第一标识符。

一些示例中,第一节点中只有一个三维数据点。可选地,在本申请实施例中,在第一节点内含有一个三维数据点的情况下,第一节点之下的全部层不转换为广度优先的方式对所述第一节点的子节点进行编码或解码。

一个示例中,当第n层的第一节点中只有一个三维数据点时,采用深度优先的方式对该第一节点进行编码或解码。而且,在对第一节点采用深度优先的方式进行编码或解码时,不需要再从深度优先的方式转回广度优先的方式进行编码或解码。一个示例中,当第n层的第一节点中只有一个三维数据点时,而且该第一节点的边长大于阈值时,采用深度优先的方式对该第一节点进行编码或解码。

可选地,在本申请实施例中,所述第一节点的三维数据点在第k层对应的比特取值包括索引值,所述索引值为预设的固定值。

可选地,所述索引值为111。

可选地,在本申请实施例中,在第一节点内含有一个三维数据点的情况下,各个节点的索引值的比特位数量相同,也就是说,各个节点中不再存在一个节点的索引值包括前缀和后缀,或者,也可以理解为:不存在一个节点的索引值后需要加上标识位。这是由于在第一节点内含有一个三维数据点的情况下,无需进行深度优先向广度优先的方式进行切换,比特流中不需加入上述第一标识符。

可选地,在本申请实施例中,在采用深度优先的方式对第一节点进行编码或解码时,在用于描述该第一节点进行子节点划分情况的比特之前,可以具有第二标识符,指示从广度优先切换到深度优先的方式对该第一节点进行编码或解码。

具体而言,对于编码端而言,可以在用于描述该第一节点进行子节点划分情况的比特之前设置第二标识符,所述第二标识符指示采用广度优先切换到深度优先的方式对所述第一节点进行编码或解码,从而编码端在获取到第二标识符时,可以判断采用深度优先的方式对第一节点进行解码。

可选地,在本申请实施例中,第二标识符可以表征第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内,则解码端可以获取到该第二标识符时,利用深度优先的方式对第一节点进行解码。

也就是说,解码端无需判断第一节点中的全部三维数据点是否落入到所述第一节点下的第m层的同一个节点内,只需获取到第二标识符,即可采用深度优先的方式对第一节点编码或解码。

可选地,在本申请实施例中,该第二标识符的比特数量可以与多叉树进行划分时得到节点的数量相同,具体可以为多个0,0代表对应的节点没有三维数据点。

例如,对于八叉树而言,可以是00000000,在解码端进行解码时,在获取到该00000000之后,由于不会存在000000标识八叉树划分的结果,则可以认为该00000000是上述第二标识符。

应理解,第二标识符可以由多个1组成,在该种情况下,1代表对应的节点没有三维数据点。

其中,如果第n层存在多个上述第一节点,则可以在每个第一节点对应的编码比特之前均设置上述第二标识符。

以上已经描述了第一节点如何进行编码或解码的过程,在进行八叉树编码时,在第n层可以存在这样的一种节点,其子节点未落入到第m层的一个子节点内,则此时可以在第n层及其以下的层,可以采用广度优先的方式,对该节点及其子节点进行编码。

可选地,在本申请实施例中,可以在每个层均判断该层的各个节点是否满足上述提到的条件(320中的条件),如果不满足,则针对相应的节点,在当前层采用广度优先的方式进行编码,否则采用深度优先的方式进行编码。

或者,在本申请实施例中,也可以仅在部分层进行上述条件(320中的条件)的判断。例如,可以八叉树划分的第五层开始进行上述条件的判断。

可选地,在本申请实施例中,在所述第n层及以下的至少一层,采用广度优先的方式,对第二节点进行编码,其中,所述第二节点包括所述第n层及以下层的节点中除所述第一节点及其子节点之外的至少一个节点。

其中,在采用广度优先的方式,对所述第二节点的子节点进行编码时,可以跳过所述第一节点的子节点,也就是说,可以不在进行广度优先编码的比特流中设置该第一节点的子节点的比特。

本申请实施例提到的第一节点可以是满足320中提到的条件的节点,第二节点可以是不满足320中提到的条件的节点。320中提到的条件也即是节点中的全部三维数据点落入该节点之下的至少一层的同一个节点内。

为了更加清楚地理解本申请,以下将以八叉树为例,描述编码比特流中比特的位置关系。

假设在第1层八叉树划分后,存在第2个子节点a、第3个子节点b和第8个子节点c中存在三维数据点,则第一层的编码比特流可以如下:01100001。

在进行第二层的八叉树划分后,发现上述第3个子节点b是上述第一节点(也就是满足320所提到的条件的节点),上述第2个子节点a和第8个节点c可以是除第一节点之外的节点,上述第2个子节点a被划分后,第1个子节点d和2个子节点e中存在点云点数据,上述第3个子节点b被划分后,第7个子节点f存在点云数据,而上述第8个节点c被划分后,是第3个子节点g和第4个子节点h中存在点云点数据,则01100001之后的编码比特可以是11000000(代表上述第2个子节点a八叉树划分情况) 00000000(第二标识符) 针对上述第3个子节点b的深度优先编码比特(110 上述第3个子节点b之下的层的编码比特) 00110000(代表上述第8个子节点c八叉树划分情况)。

其中,上述第3个子节点b之下的层的编码比特可以包括从第三层开始一直到最底层的描述八叉树划分情况的比特和描述最底层中各个叶子节点中的三维数据点的数量的比特。下面介绍上述第3个子节点b的深度优先编码比特,该深度优先编码比特可以包括110,然后包括上述第3个子节点b之下的层的编码比特,由于上述第2个子节点b在第二层的子节点是第7个子节点f存在三维数据点,如果该第7个子节点f在第三层被划分是是在第1个子节点i和第5个子节点k中存在点云点,则针对上述第2个子节点c的深度优先编码比特,110之后的编码比特可以为1111(上述第一标识符 指示111为第一标识符的标识位) 10001000…。

可以继续进行第三层的广度优先编码,其中编码过程中,可以跳过作为第一节点的上述第3个子节点b的子节点,也就是说,比特流(11000000(代表上述第2个子节点a八叉树划分情况) 00000000(第二标识符) 针对上述第3个子节点b的深度优先编码比特(110 上述第3个子节点b之下的层的编码比特) 00110000(代表上述第8个子节点c八叉树划分情况))之后的编码比特不再包含作为第一节点的上述第3个子节点b的子节点的比特。

可选地,在所述第n层存在多个所述第一节点时,任一个所述第一节点及其子节点的编码或解码处理与其他所述第一节点及其子节点的编码或解码处理是并行的。

具体地,由于各个第一节点的编码或解码处理是相互的独立的,则任一个所述第一节点及其子节点的编码或解码处理与其他所述第一节点及其子节点的编码或解码处理可以是并行的,从而可以提高编码或解码效率。

或者,也可以是任一个所述第一节点的子节点的编码或解码处理与其他所述第一节点的子节点的编码或解码处理是并行的。

可选地,在本申请实施例中,所述第一节点及其子节点的编码或解码处理是与以下处理并行的:

所述第n层中除所述第一节点之外的节点(第二节点)及其子节点的编码或解码处理。

具体地,由于第一节点的编码或解码处理与其他节点的编码或解码处理是相互独立的,则所述第一节点及其子节点的编码或解码处理可以与所述第n层中除所述第一节点之外的节点及其子节点的编码或解码处理是并行的,从而可以提高编码或解码效率。

或者,也可以是所述第一节点的子节点的编码或解码处理是与以下处理并行的:

所述第n层中除所述第一节点之外的节点的子节点的编码或解码处理。

为了更加清楚地理解本申请,以下将以图8为例对本申请实施例进行描述。其中,图8所示的为在块内仅还有一个三维数据点时,对该块以深度优先的方式进行编码,这是由于如果块内仅含有一个三维数据点,则在其后续的层,该一个三维数据点均仅落入一子块内,从而可以深度的方式进行编码。

如图8所示,在第m-1层八叉树划分编码时,采用广度优先的顺序进行编码,在一层内按照顺序进行八叉树子块划分并利用8比特二进制数表示当前块的划分情况,每个子块依次对应比特二进制数的1比特。如果子块内有三维数据点则子块对应的1比特用1进行表示,如果子块内没有三维数据点则子块对应的1比特用0进行表示。按照这样的编码方案,遍历第m-1层内有三维数据点的子块,对这些子块进行八叉树划分,并按照相同的方法编码子块划分后的数据分布情况。编码了第m-1层的所有八叉树划分后接着编码第m层的八叉树划分。当编码到f块时,假设f块内仅含有一个三维数据点时,此时对f块的划分转换为优先的顺序进行编码。这时可选地,可以先在码流中编码一个从广度优先切换到深度优先的标识符(该标识符优选的可以为8比特的00000000)。接着对f的子块进行八叉树划分编码,对f子块的子块进行八叉树划分编码……一直编码至块的边长为1时即到达八叉树的叶子节点时,不需要再进一步划分,此时块内如果仅含有1个三维数据点,则此时不编码块内三维数据点数目。接着继续按照广度优先的顺序编码第m层的接下来的子块。当遇到下一个块内仅含有一个三维数据点的子块时,再度切换至深度优先的顺序进行编码。当编码结束m层会继续编码m 1层。需要注意的是,当编码至选择深度优先的块的子块时,比如编码到f的子块时,由于在前面已经编码过这些子块,子块的子块等的八叉树划分情况,在这里会直接跳过,不重复进行编码。当在m 1层或之后的层遇到某个块仅还有一个三维数据点,又会切换至深度优先的顺序进行编码,编码规则与前面描述的编码f块的规则相同。当按照广度优先顺序八叉树划分编码至子块边长为1时即到达八叉树的叶子节点时,不需要再进一步划分,接着直接编码当前子块即叶子节点内含有的三维数据点集数据点的数目。按照这样的方案即可实现对位置坐标的基于广度优先深度优先混合的八叉树编码。

对于解码端而言,对输入的待解码的码流,可以先进行算术解码,解码位置信息相关码流,在进行八叉树解码时,依次对位置坐标的码流进行解码,当码流为广度优先时即按照广度优先顺序进行解码,当码流为深度优先时即按照深度优先的顺序进行解码。通过八叉树解码,逆量化,得到重建的位置坐标。相应地,按照位置解码后的位置坐标顺序,根据算术解码得到的属性信息相关码流,进行属性解码,即可得到重建的属性信息。按照上述的流程即可实现对三维数据点集的码流的解码。

其中,在进行八叉树解码时,对位置坐标的码流进行解码,可以默认以广度优先的顺序进行解码,当解码到广度优先切换到深度优先的标识符(例如,解码到8比特的0即00000000)时,转换为深度优先进行解码重建,按照这样的顺序进行解码,即可实现对位置坐标的八叉树解码。

除了以上的实施例外,本申请实施例还存在其他的实现方式。例如,判断某个节点是否是采用深度优先的方式进行编码,则可以通过判断该节点内的点云点的数量,基于节点内的点云点的数量,确定是否采用深度优先的方式进行编码。例如,该节点内的点云点的数量小于或等于一定阈值,则采用深度优先的方式进行编码,否则采用广度优先的方式进行编码。

以下以图9为例对本申请实施例的其他方式进行描述。

在第m-1层八叉树划分编码时,采用广度优先的顺序进行编码,在一层内按照顺序进行八叉树子块划分并利用8比特二进制数表示当前块的划分情况,每个子块依次对应8比特二进制数的1比特。如果子块内有三维数据点则子块对应的1比特用1进行表示,如果子块内没有三维数据点则子块对应的1比特用0进行表示。按照这样的编码方案,遍历第m-1层内的有三维数据点的子块,对这些子块进行八叉树划分,并按照相同的方法编码子块划分后的数据分布情况。编码了第m-1层的所有八叉树划分后接着编码第m层的八叉树划分。当编码到图9的b块时,这个时候可以转为深度优先遍历的顺序,这样就会先编码b块的八叉树划分情况,接着编码b块的第m 1层中有三维数据点的子块的八叉树划分情况,接着再编码b块的第m 2层……一直编码至块的边长为1时即到达八叉树的叶子节点时,不需要再进一步划分,接着需要编码当前叶子节点块内含有的三维数据点的数目。当当前叶子节点块内含有一个三维数据点时,可以直接编码一个0进行表示。当当前叶子节点块内含有不止一个三维数据点时,设当前叶子节点块内含有n个三维数据点,此时会先编码一个1,接着编码数值(n-1)。接着会返回至第m层,接着对f块进行八叉树子块划分,并编码f块的八叉树划分情况,如果子块内有三维数据点则子块对应的1比特用1进行表示,如果子块内没有三维数据点则子块对应的1比特用0进行表示。这个时候,b块及b块的子块描述八叉树划分情况的二进制比特流会存储在描述b块八叉树划分情况的比特流与描述f块八叉树划分情况的二进制码流之间的存储空间中。按照这样的编码方式,编码b块及b块的子块的划分情况时,码流信息是连续存储的,不需要依赖当前层其他的兄弟块的编码信息。而对于f块的子块,可以选择进行深度优先的八叉树位置坐标编码方案,也可以接着采用广度优先的八叉树位置坐标编码方案。对f块采用深度优先的八叉树位置坐标编码方案时,其编码过程与前面描述的b块的深度优先的八叉树位置坐标编码方案相类似。对f块采用广度优先的八叉树位置编码方案时,其编码过程与之前的编码过程类似,会先编码第m层f块的八叉树划分情况,接着编码第m层后续的含有三维数据点的块的八叉树划分情况。当第m层的块编码结束后接着编码第m 1层的块。需要注意的是,当编码至选择深度优先的块的子块时,比如编码到b的子块时,由于在前面已经编码过这些块以及其子块,子块的子块等的八叉树划分情况,在这里会直接跳过,不重复进行编码,直接编码f块的子块在第m 1层的八叉树划分情况。后续块的八叉树划分情况编码与前面描述相似。

对于解码端而言,对输入的待解码的码流,先进行算术解码,解码位置信息相关码流,在进行八叉树解码时,依次对位置坐标的码流进行解码,当码流为广度优先时即按照广度优先顺序进行解码,当码流为深度优先时即按照深度优先的顺序进行解码。通过八叉树解码,逆量化,得到重建的位置坐标。相应地,按照位置解码后的位置坐标顺序,根据算术解码得到的属性信息相关码流,进行属性解码,即可得到重建的属性信息。按照上述的流程即可实现对三维数据点集的解码。

同样地,在上述图9所示的实施例中,在广度优先切换为深度优先时,可以添加标识符,例如0000000,以及在深度优先切换为广度优先时,也可以添加标识符,例如1111。

对前面介绍的八叉树编码的实施例还可以采用一种并行实现的方案,下面来具体介绍。以图9为例对这种广度优先、深度优先混合的并行的八叉树编码方案进行说明。在第m-1层八叉树划分编码时,采用广度优先的顺序进行编码,在一层内按照顺序进行八叉树子块划分并利用8bit二进制数表示当前块的划分情况,每个子块依次对应8比特二进制数的1比特。如果子块内有点云数据点则子块对应的1比特用1进行表示,如果子块内没有点云数据点则子块对应的1比特用0进行表示。按照这样的编码方案,遍历第m-1层内的有点云数据点的子块,对这些子块进行八叉树划分,并按照相同的方法编码子块划分后的数据分布情况。编码了第m-1层的所有八叉树划分后接着编码第m层的八叉树划分。当编码到图9的b块时,这个时候可以转为深度优先遍历的顺序,这样就会先编码b块的八叉树划分情况,接着编码b块的第m 1层中有点云数据的子块的八叉树划分情况,接着再编码b块的第m 2层……一直编码至块的边长为1时即到达八叉树的叶子节点时,不需要再进一步划分,接着需要编码当前叶子节点块内含有的点云数据点的数目。当当前叶子节点块内含有一个点云数据点时,直接编码一个0进行表示。当当前叶子节点块内含有不止一个点云数据点时,设当前叶子节点块内含有n个点云数据点,此时会先编码一个1,接着编码数值(n-1)。接着会返回至第m层,接着对f块进行八叉树子块划分,并编码f块的八叉树划分情况,如果子块内有点云数据点则子块对应的1比特用1进行表示,如果子块内没有点云数据点则子块对应的1比特用0进行表示。这个时候,b块及b块的子块描述八叉树划分情况的二进制比特流会存储在描述b块八叉树划分情况的比特流与描述f块八叉树划分情况的二进制码流之间的存储空间中。按照这样的编码方式,编码b块及b块的子块的划分情况时,码流信息是连续存储的,不需要依赖当前层其他的兄弟块的编码信息。而对于f块的子块,可以选择进行深度优先的八叉树位置坐标编码方案,也可以接着采用广度优先的八叉树位置坐标编码方案。对f块采用深度优先的八叉树位置坐标编码方案时,其编码过程与前面描述的b块的深度优先的八叉树位置坐标编码方案相类似。对f块采用广度优先的八叉树位置编码方案时,其编码过程与之前的编码过程类似,会先编码第m层f块的八叉树划分情况,接着编码第m层后续的含有点云数据点的块的八叉树划分情况。当第m层的块编码结束后接着编码第m 1层的块。需要注意的是,当编码至选择深度优先的块的子块时,比如编码到b的子块时,由于在前面已经编码过这些块以及其子块,子块的子块等的八叉树划分情况,在这里会直接跳过,不重复进行编码,直接编码f块的子块在第m 1层的八叉树划分情况。后续块的八叉树划分情况编码与前面描述相似。而前面描述的编码b块以及b块子块的编码结果与后面编码块f之间并没有依赖关系,故在这里对将广度优先顺序转换为深度优先的子块可以单独利用一个线程进行八叉树编码,待该子块编码完成后,将编码后的码流添加进对应位置即可。

相应的,对于解码端而言,对输入的待解码的码流,先进行算术解码,解码位置信息相关码流,在进行八叉树解码时,依次对位置坐标的码流进行解码,当码流为广度优先时即按照广度优先顺序进行解码,当码流为深度优先时即按照深度优先的顺序进行解码。通过八叉树解码,逆量化,得到重建的位置坐标。相应地,按照位置解码后的位置坐标顺序,根据算术解码得到的属性信息相关码流,进行属性解码,即可得到重建的属性信息。按照上述的流程即可实现三维数据点集的码流的解码。

在本申请实施例中,针对点云位置坐标的八叉树编码过程,采用了广度优先深度优先混合的八叉树编码方案,提高了八叉树编码过程的灵活性以及并行程度,减小了八叉树编码过程中的颗粒度。并且当八叉树划分至子块内仅含有一个点云数据点时,直接按照深度优先的顺序进行编码,并且直接利用3比特来编码有数据的那一个块的索引值,这个方案在一定程度上也提高了位置编码的压缩率。在这种广度优先深度优先混合的结构中为了表示优先的类别,本发明可以在码流中使用8比特的0即00000000来进行切换广度优先模式至深度优先模式时的标识。

以上介绍了如何对三维数据点集进行多叉树编码,多叉树编码的可以是三维数据点的位置坐标。在三维数据点的数据还包括属性信息时,可以进一步对属性信息进行编码。对属性编码可以采用层次编码方式或二值化编码方式进行编码。

以下将结合图10和11对层次编码方案进行介绍。其中,图10和图11的标记中与图1和图2的相同的标记在下不再阐述,具体可以参考针对图1和图2的描述。

其中,如图10所示,在140中,对属性的编码操作可以包括142、144和146;在142中,基于位置坐标编码后的位置坐标,生成层次编码方案(levelofdetail,lod);在144中,基于层次编码方案,进行预测编码;在146中,对预测编码的结果进行量化。

如图11所示,在250中,对属性的解码操作可以包括252、254和256;在252中,对解码得到的属性码流进行逆量化;在254中,基于位置坐标解码后的位置坐标,生成层次解码方案;在256中,基于层次编码方案,进行预测解码。

在实际编码过程中,可以根据lod配置的参数来进行lod分层,其中,后面的层会包含有前面层的点。例如,如图12所示,在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层。并且在这个过程中,会将计算得到的距离排序,选择出最小的若干个,这个数目是由预测时相邻点的数量(numberofneighborsinprediction)n确定。其中,一个三维数据点被划入一个lod层后,后续可以不需要再接着判断其是否还属于下一个lod层,因为下一层是包含上一层的所以其一定属于下一个lod层;以及在lod0层的前面几个点,由于在lod内的点数比较少所以选择出的参考点数目有可能小于该数量n。

在划分结束lod层之后,可以利用前面选择的最临近的点来分配预测时的权重。具体的,对每个三维数据点,在前面已经得到了按照距离排序的最邻近的n个点之后,接下来可以按照1个参考点,2个参考点一直到n个参考点来分别求出权重分配方案。权重分配方案共有n种,其中,1个参考点时就是距离最小的1个点作为参考点,这时它的权重即为1;2个参考点时就是选择距离最小的2个点作为参考点,这时会根据这两个参考点和待预测点之间的距离来分配权重,具体权重为距离反比,距离越远权重越小,并保证权重和为1;直到n个参考点时,就是选择n个参考点,权重分配方法与前面相同。

在分配完权重后,可以选择参考点数,在这里需要注意的是,对一个预测点可以选择的临近参考点的数目是小于等于n。具体会遍历限定参考点最大为1个时,这时预测值(权重乘以对应位置的属性值)与实际属性值的残差经过量化后的值得和,这个和即为参考点数目最大为1时的代价,接着会遍历限定参考点数目最大为2个时的代价,直至限定参考点数目最大为n时的代价,最终选择一个代价最小的最大参考点数的方案。并进一步编码这个方案下量化后的残差值。

在编码后的码流中关于属性的头信息可以描述关于分层编码属性即lod的相关信息,具体包括在每个层进行预测时,选择临近参考点(用于计算残差的位置坐标)的点数(numberofneighborsinprediction),lod的层数(levelofdetailcount),划分lod每一层所依据的距离阈值(dist2),lod每一层量化的步长(quantizationsteps),lod每一层的死区大小(quantizationdeadzonesizes)(也即将残差量化为0的残差区间),其中,后面三个属性可以分别对lod每层均设定,每层的属性均可以写入码流头信息中。

可选地,在本申请实施例中,例如如图13所示,在142中,对属性的编码还可以采用二值化编码的方式进行编码,相应地,如图14所示,在252中,对属性的解码还可以采用二值化解码的方式进行解码。其中,图12和图13的标记中与图1和图2的相同的标记在下不再阐述,具体可以参考针对图1和图2的描述。

其中,采用二值化编码的方式进行编码可以简化编码方法并降低编解码的时间开销,以及无需在码流中加入较多的编码信息,从而可以提高压缩率。

本申请实施例中的二值化编码的编码方式可以为定长码编码方式、截断莱斯编码方式或k阶指数哥伦布编码方式。相应地,二值化解码的解码方式可以为定长码解码方式、截断莱斯解码方式或k阶指数哥伦布解码方式。

可选地,在本申请实施例中,编码器在对位置坐标进行量化之后,至少两个位置坐标量化后的位置坐标可能是相同的,而这至少两个位置坐标则对应至少两个属性值,此时,在对量化后的位置坐标进行位置坐标编码之前,可以去除重复坐标(例如,如图15和16所示的步骤125),也即将该至少两个位置坐标量化后的位置坐标为一个(例如,称为第一位置坐标),相应地,可以对属性的至少两个值进行合并(例如,如图15和16所示的步骤135)以得到一个取值,例如,可以进行加权合并。解码端在解码时针对该至少两个位置坐标,将会解码出一个位置坐标以及一个属性值。

当然,在本申请实施例中,即使至少两个位置坐标量化后的位置坐标是相同的,也可以不去除重复坐标以及不对至少两个属性值进行合并,则此时一个量化后的位置坐标对应至少两个属性值,解码端进行解码时,可以针对该量化后的位置坐标解码出至少两个属性值,从而可以得到至少两个三维数据点。

其中,由于量化后的不同位置坐标可能会对应不同数量的属性值,则可以在码流中针对各个量化后的位置坐标写入其对应的属性值的数量,则解码端可以根据码流中携带的信息,确定各个位置坐标对应的属性的数量。并且属性的码流是连续的,依次解码每个属性,按照顺序与三维数据点顺序对应上即可实现位置坐标与属性的对应。

当然,也可以只针对特殊的量化后的位置坐标(例如,对应的属性值的数量不是一个而是多个)进行标注。

可选地,在本申请实施例中,编码器是否去除重复坐标和进行属性合并可以是预设在编码器上的,例如,有些编码器预设为去除重复坐标和进行属性合并,有些编码器预设为不去除重复坐标和不进行属性合并。

或者,编码器是否去除重复坐标和进行属性合并也可以是由编码器进行选择的,其中,编码器可以根据当前的编码条件确定是否去除重复坐标和属性合并。例如,如图16所示,在120量化后,可以选择直接进行130中的位置坐标编码,以及不进行135中的属性合并,而直接进行140中的属性编码。或者,编码器可以选择在120量化后,先进行125中的重复坐标的去除,再进行130中的位置坐标编码,以及先进行135中的属性合并,再进行140中的属性编码。

具体地,如果当前对编码的损失希望尽量低或者对压缩率要求不高,则不进行重复坐标的去除和属性合并,否则,则进行重复坐标的去除和属性合并。

在本申请实施例中,采用广度优先的方式对多叉树的第n层进行编码或解码,并在第n层的其中一个节点的全部点云点落入到之下的层中的同一节点内的情况下,采用深度优先的方式对该节点进行编码或解码,实现了对节点的灵活编码,从而提高了编码性能。

一些示例中,上文中的三维数据点可以是测距装置所获取到的点云数据中的任意一个点云点。其中,该测距装置可以是激光雷达、激光测距设备等电子设备。在一种实施方式中,测距装置用于感测外部环境信息,例如,环境目标的距离信息、方位信息、反射强度信息、速度信息等。一个点云点可以包括测距装置所测到的外部环境信息中的至少一种。一些示例中,测距装置每获取到一定数量的三维数据点时,根据该一定数量的三维数据点生成数据包。本发明中提供的三维数据点集的编/解码方法可以应用于对一个数据包内的三维数据点进行编/解码。

一种实现方式中,测距装置可以通过测量测距装置和探测物之间光传播的时间,即光飞行时间(time-of-flight,tof),来探测探测物到测距装置的距离。或者,测距装置也可以通过其他技术来探测探测物到测距装置的距离,例如基于相位移动(phaseshift)测量的测距方法,或者基于频率移动(frequencyshift)测量的测距方法,在此不做限制。

一些示例中,测距装置的扫描轨迹随着时间改变,这样,随着扫描时间的积累,测距装置在视场内扫描得到的三维数据点在视场内的分布越来越密。

为了便于理解,以下将结合图17所示的测距装置1100对产生本文中提到的三维数据点的测距装置举例描述。

如图17所示,测距装置1100可以包括发射电路1110、接收电路1120、采样电路1130和运算电路1140。

发射电路1110可以发射光脉冲序列(例如激光脉冲序列)。接收电路1120可以接收经过被探测物反射的光脉冲序列,并对该光脉冲序列进行光电转换,以得到电信号,再对电信号进行处理之后可以输出给采样电路1130。采样电路1130可以对电信号进行采样,以获取采样结果。运算电路1140可以基于采样电路1130的采样结果,以确定测距装置1100与被探测物之间的距离。

可选地,该测距装置1100还可以包括控制电路1150,该控制电路150可以实现对其他电路的控制,例如,可以控制各个电路的工作时间和/或对各个电路进行参数设置等。

应理解,虽然图17示出的测距装置中包括一个发射电路、一个接收电路、一个采样电路和一个运算电路,用于出射一路光束进行探测,但是本申请实施例并不限于此,发射电路、接收电路、采样电路、运算电路中的任一种电路的数量也可以是至少两个,用于沿相同方向或分别沿不同方向出射至少两路光束;其中,该至少两束光路可以是同时出射,也可以是分别在不同时刻出射。一个示例中,该至少两个发射电路中的发光芯片封装在同一个模块中。例如,每个发射电路包括一个激光发射芯片,该至少两个发射电路中的激光发射芯片中的die封装到一起,容置在同一个封装空间中。

一些实现方式中,除了图17所示的电路,测距装置1100还可以包括扫描模块1160,用于将发射电路出射的至少一路激光脉冲序列改变传播方向出射。

其中,可以将包括发射电路1110、接收电路1120、采样电路1130和运算电路1140的模块,或者,包括发射电路1110、接收电路1120、采样电路1130、运算电路1140和控制电路1150的模块称为测距模块,该测距模块1150可以独立于其他模块,例如,扫描模块1160。

测距装置中可以采用同轴光路,也即测距装置出射的光束和经反射回来的光束在测距装置内共用至少部分光路。例如,发射电路出射的至少一路激光脉冲序列经扫描模块改变传播方向出射后,经探测物反射回来的激光脉冲序列经过扫描模块后入射至接收电路。或者,测距装置也可以采用异轴光路,也即测距装置出射的光束和经反射回来的光束在测距装置内分别沿不同的光路传输。图18示出了本发明的测距装置采用同轴光路的一种实施例的示意图。

测距装置1200包括测距模块1201,测距模块1210包括发射器1203(可以包括上述的发射电路)、准直元件1204、探测器1205(可以包括上述的接收电路、采样电路和运算电路)和光路改变元件1206。测距模块1210用于发射光束,且接收回光,将回光转换为电信号。其中,发射器1203可以用于发射光脉冲序列。在一个实施例中,发射器1203可以发射激光脉冲序列。可选的,发射器1203发射出的激光束为波长在可见光范围之外的窄带宽光束。准直元件1204设置于发射器的出射光路上,用于准直从发射器1203发出的光束,将发射器1203发出的光束准直为平行光出射至扫描模块。准直元件还用于会聚经探测物反射的回光的至少一部分。该准直元件204可以是准直透镜或者是其他能够准直光束的元件。

在图18所示实施例中,通过光路改变元件1206来将测距装置内的发射光路和接收光路在准直元件1204之前合并,使得发射光路和接收光路可以共用同一个准直元件,使得光路更加紧凑。在其他的一些实现方式中,也可以是发射器1203和探测器1205分别使用各自的准直元件,将光路改变元件1206设置在准直元件之后的光路上。

在图18所示实施例中,由于发射器1203出射的光束的光束孔径较小,测距装置所接收到的回光的光束孔径较大,所以光路改变元件可以采用小面积的反射镜来将发射光路和接收光路合并。在其他的一些实现方式中,光路改变元件也可以采用带通孔的反射镜,其中该通孔用于透射发射器1203的出射光,反射镜用于将回光反射至探测器1205。这样可以减小采用小反射镜的情况中小反射镜的支架会对回光的遮挡。

在图18所示实施例中,光路改变元件偏离了准直元件1204的光轴。在其他的一些实现方式中,光路改变元件也可以位于准直元件204的光轴上。

测距装置200还包括扫描模块1202。扫描模块1202放置于测距模块1201的出射光路上,扫描模块1202用于改变经准直元件1204出射的准直光束1219的传输方向并投射至外界环境,并将回光投射至准直元件1204。回光经准直元件1204汇聚到探测器1205上。

在一个实施例中,扫描模块1202可以包括至少一个光学元件,用于改变光束的传播路径,其中,该光学元件可以通过对光束进行反射、折射、衍射等等方式来改变光束传播路径。例如,扫描模块202包括透镜、反射镜、棱镜、振镜、光栅、液晶、光学相控阵(opticalphasedarray)或上述光学元件的任意组合。一个示例中,至少部分光学元件是运动的,例如通过驱动模块来驱动该至少部分光学元件进行运动,该运动的光学元件可以在不同时刻将光束反射、折射或衍射至不同的方向。在一些实施例中,扫描模块1202的多个光学元件可以绕共同的轴1209旋转或振动,每个旋转或振动的光学元件用于不断改变入射光束的传播方向。在一个实施例中,扫描模块1202的多个光学元件可以以不同的转速旋转,或以不同的速度振动。在另一个实施例中,扫描模块1202的至少部分光学元件可以以基本相同的转速旋转。在一些实施例中,扫描模块的多个光学元件也可以是绕不同的轴旋转。在一些实施例中,扫描模块的多个光学元件也可以是以相同的方向旋转,或以不同的方向旋转;或者沿相同的方向振动,或者沿不同的方向振动,在此不作限制。

在一个实施例中,扫描模块1202包括第一光学元件1214和与第一光学元件1214连接的驱动器1216,驱动器1216用于驱动第一光学元件1214绕转动轴1209转动,使第一光学元件1214改变准直光束1219的方向。第一光学元件1214将准直光束1219投射至不同的方向。在一个实施例中,准直光束1219经第一光学元件改变后的方向与转动轴109的夹角随着第一光学元件1214的转动而变化。在一个实施例中,第一光学元件1214包括相对的非平行的一对表面,准直光束1219穿过该对表面。在一个实施例中,第一光学元件1214包括厚度沿至少一个径向变化的棱镜。在一个实施例中,第一光学元件1214包括楔角棱镜,对准直光束1219进行折射。

在一个实施例中,扫描模块1202还包括第二光学元件1215,第二光学元件1215绕转动轴1209转动,第二光学元件1215的转动速度与第一光学元件1214的转动速度不同。第二光学元件1215用于改变第一光学元件1214投射的光束的方向。在一个实施例中,第二光学元件1215与另一驱动器1217连接,驱动器1217驱动第二光学元件1215转动。第一光学元件1214和第二光学元件1215可以由相同或不同的驱动器驱动,使第一光学元件1214和第二光学元件1215的转速和/或转向不同,从而将准直光束1219投射至外界空间不同的方向,可以扫描较大的空间范围。在一个实施例中,控制器1218控制驱动器1216和1217,分别驱动第一光学元件1214和第二光学元件1215。第一光学元件1214和第二光学元件1215的转速可以根据实际应用中预期扫描的区域和样式确定。驱动器1216和1217可以包括电机或其他驱动器。

在一个实施例中,第二光学元件1215包括相对的非平行的一对表面,光束穿过该对表面。在一个实施例中,第二光学元件1215包括厚度沿至少一个径向变化的棱镜。在一个实施例中,第二光学元件1215包括楔角棱镜。

一个实施例中,扫描模块1202还包括第三光学元件(图未示)和用于驱动第三光学元件运动的驱动器。可选地,该第三光学元件包括相对的非平行的一对表面,光束穿过该对表面。在一个实施例中,第三光学元件包括厚度沿至少一个径向变化的棱镜。在一个实施例中,第三光学元件包括楔角棱镜。第一、第二和第三光学元件中的至少两个光学元件以不同的转速和/或转向转动。

扫描模块1202中的各光学元件旋转可以将光投射至不同的方向,例如方向1211和1213,如此对测距装置1200周围的空间进行扫描。如图19所示,图19为测距装置1200的一种扫描图案的示意图。可以理解的是,扫描模块内的光学元件的速度变化时,扫描图案也会随之变化。

当扫描模块1202投射出的光1211打到探测物1201时,一部分光被探测物1201沿与投射的光1211相反的方向反射至测距装置1200。探测物1201反射的回光1212经过扫描模块1202后入射至准直元件1204。

探测器1205与发射器1203放置于准直元件1204的同一侧,探测器1205用于将穿过准直元件1204的至少部分回光转换为电信号。

一个实施例中,各光学元件上镀有增透膜。可选的,增透膜的厚度与发射器1203发射出的光束的波长相等或接近,能够增加透射光束的强度。

一个实施例中,测距装置中位于光束传播路径上的一个元件表面上镀有滤光层,或者在光束传播路径上设置有滤光器,用于至少透射发射器所出射的光束所在波段,反射其他波段,以减少环境光给接收器带来的噪音。

在一些实施例中,发射器1203可以包括激光二极管,通过激光二极管发射纳秒级别的激光脉冲。进一步地,可以确定激光脉冲接收时间,例如,通过探测电信号脉冲的上升沿时间和/或下降沿时间确定激光脉冲接收时间。如此,测距装置1200可以利用脉冲接收时间信息和脉冲发出时间信息计算tof,从而确定探测物1201到测距装置1200的距离。

测距装置1200探测到的距离和方位可以用于遥感、避障、测绘、建模、导航等。在一种实施方式中,本发明实施方式的测距装置可应用于移动平台,测距装置可安装在移动平台的平台本体。具有测距装置的移动平台可对外部环境进行测量,例如,测量移动平台与障碍物的距离用于避障等用途,和对外部环境进行二维或三维的测绘。在某些实施方式中,移动平台包括无人飞行器、汽车、遥控车、机器人、相机中的至少一种。当测距装置应用于无人飞行器时,平台本体为无人飞行器的机身。当测距装置应用于汽车时,平台本体为汽车的车身。该汽车可以是自动驾驶汽车或者半自动驾驶汽车,在此不做限制。当测距装置应用于遥控车时,平台本体为遥控车的车身。当测距装置应用于机器人时,平台本体为机器人。当测距装置应用于相机时,平台本体为相机本身。

图20是根据本申请实施例的一种用于三维数据点集处理的设备400的示意性框图。所述三维数据点集采用多叉树的方式进行划分,所述设备400包括:

第一编码或解码单元410,用于对所述多叉树的第n层采用广度优先的方式进行编码或解码;

第二编码或解码单元420,用于在所述第n层的第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;n为大于或等于0的整数,m为大于或等于1的整数。

可选地,在本申请实施例中,所述第一节点的三维数据点在第k层对应的比特取值包括:

所述第一节点的三维数据点在所述k层中所属的节点的索引值,其中,所述第k层为所述第一节点下的其中一层,且在所述第k层,所述第一节点中的全部三维数据点落入到同一个节点内。

可选地,在本申请实施例中,所述第k层中各个节点的索引值是预设的;或,

所述第k层中多个节点对应的多个索引值的起始索引值是基于以下确定的:所述至少一个三维数据点在所述第k层的上一层所属的节点。

可选地,在本申请实施例中,所述第k层中各个节点的索引值是基于各个节点所处的位置预设的;

所述上一层所属的节点所处的位置在所述第k层中对应位置处的节点的索引值为起始索引值。

可选地,在本申请实施例中,所述第二编码或解码单元420具体用于:

在所述第一节点的全部三维数据点落入到所述第一节点在第q层的多个子节点时,在所述第q层,采用广度优先的方式,对所述第一节点的子节点进行编码或解码,q为大于或等于1的整数,且所述第q层为所述第m层之下的层。

可选地,在本申请实施例中,所述设备用于编码端,所述第二编码或解码单元420进一步用于:

在所述第q层对应的比特之前设置第一标识符,所述第一标识符指示在所述第q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。

可选地,在本申请实施例中,所述设备用于解码端,所述第二编码或解码单元420进一步用于:

在所述第q层对应的比特之前获取第一标识符的情况下,在所述第q层,采用广度优先的方式,对所述第一节点的子节点进行解码,所述第一标识符指示在所述第q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。

可选地,在本申请实施例中,在所述第q层为所述第n层以下的层中,首个对所述第一节点的子节点采用广度优先的方式进行编码或解码的层时,在所述第q层对应的比特之前设置有所述第一标识符。

可选地,在本申请实施例中,所述第一标识符包括前缀和后缀,一个节点的索引值包括前缀和后缀;

所述第一标识符的前缀的比特取值等于所述一个节点的索引值的前缀的比特取值;

所述第一标识符的后缀的比特数量等于所述一个节点的索引值的后缀的比特数量,所述第一标识符的后缀的比特取值不等于所述一个节点的索引值的后缀的比特取值;

所述一个节点的索引值的前缀的比特数量等于其他节点的索引值的比特数量,且所述一个节点的索引值的前缀的比特取值不同于其他节点的索引值。

可选地,在本申请实施例中,所述设备用于编码端,所述第二编码或解码单元420进一步用于:

在描述所述第一节点进行子节点划分情况的比特之前,设置第二标识符,所述第二标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。

可选地,在本申请实施例中,所述设备用于解码端,所述第二编码或解码单元420用于:

在描述所述第一节点进行子节点划分情况的比特之前获取第二标识符的情况下,采用深度优先的方式对所述第一节点进行解码;其中,所述第二标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。

可选地,在本申请实施例中,在描述所述第一节点进行子节点划分情况的比特之前获取第二标识符表征第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内。

可选地,在本申请实施例中,所述第二标识符为多个零或一,零或一的数量等于所述第n层的节点的数量。

可选地,在本申请实施例中,所述第一编码或解码单元410进一步用于:

在所述第n层之下的层,采用广度优先的方式,对第二节点的子节点进行编码或解码,其中,所述第二节点包括所述第n层的节点中除所述第一节点之外的任一节点。

可选地,在本申请实施例中,所述第一编码或解码单元410进一步用于:

在采用广度优先的方式,对所述第二节点的子节点进行编码或解码时,跳过所述第一节点的子节点。

可选地,在本申请实施例中,在所述第n层存在多个所述第一节点时,任一个所述第一节点及其子节点的编码处理与其他所述第一节点及其子节点的编码或解码处理是并行的。

可选地,在本申请实施例中,所述第一节点及其子节点的编码或解码处理是与以下处理并行的:

所述第n层中除所述第一节点之外的节点及其子节点的编码或解码处理。

可选地,在本申请实施例中,八叉树编码或解码的是所述三维数据点集的位置坐标。

可选地,在本申请实施例中,设备400还包括第三编码或解码单元430,用于:

利用二值化编码或解码的方式,或层次编码方案,对所述三维数据点集中的三维数据点的属性进行编码或解码。

可选地,在本申请实施例中,所述多叉树为八叉树。

应理解,该设备800可以用于实现上述方法中由解码端实现的相应操作,为了简洁,在此不再赘述。

图21示出了本申请实施例的计算机系统500的示意性框图。

如图21所示,该计算机系统500可以包括处理器510,进一步地可以包括存储器520。

应理解,该计算机系统500还可以包括其他计算机系统中通常所包括的部件,例如,输入输出设备、通信接口等,本申请实施例对此并不限定。

存储器520用于存储计算机可执行指令。

存储器520可以是各种种类的存储器,例如可以包括高速随机存取存储器(randomaccessmemory,ram),还可以包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器,本申请实施例对此并不限定。

处理器510用于访问该存储器520,并执行该计算机可执行指令,以进行上述本申请实施例的用于三维数据点集处理的方法中的操作。

处理器510可以包括微处理器,现场可编程门阵列(field-programmablegatearray,fpga),中央处理器(centralprocessingunit,cpu),图形处理器(graphicsprocessingunit,gpu)等,本申请实施例对此并不限定。

本申请实施例的用于三维数据点集处理的设备和计算机系统可对应于本申请实施例的用于三维数据点集处理的方法的执行主体,并且用于三维数据点集处理的设备和计算机系统中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。

本申请实施例还提供了一种电子设备,该电子设备可以包括上述本申请各种实施例的用于三维数据点集处理的设备或者计算机系统。

本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码可以用于指示执行上述本申请实施例的用于三维数据点集处理的方法。

应理解,在本申请实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。


技术特征:

1.一种用于三维数据点集处理的方法,其特征在于,所述三维数据点集采用多叉树的方式进行划分,所述方法包括:

对所述多叉树的第n层采用广度优先的方式进行编码或解码;

在所述第n层的第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,n和m为大于或等于1的整数。

2.根据权利要求1所述的方法,其特征在于,所述第一节点的三维数据点在第k层对应的比特取值包括:

所述第一节点的三维数据点在所述k层中所属的节点的索引值,其中,所述第k层为所述第一节点下的其中一层,且在所述第k层,所述第一节点中的全部三维数据点落入到同一个节点内。

3.根据权利要求2所述的方法,其特征在于,所述第k层中各个节点的索引值是预设的;或,

所述第k层中多个节点对应的多个索引值的起始索引值是基于以下确定的:所述至少一个三维数据点在所述第k层的上一层所属的节点。

4.根据权利要求3所述的方法,其特征在于,所述第k层中各个节点的索引值是基于各个节点所处的位置预设的;

所述上一层所属的节点所处的位置在所述第k层中对应位置处的节点的索引值为起始索引值。

5.根据权利要求1至4中任一项所述的方法,其特征在于,所述采用深度优先的方式对所述第一节点进行编码或解码,包括:

在所述第一节点的全部三维数据点落入到所述第一节点在第q层的多个子节点时,在所述第q层,采用广度优先的方式,对所述第一节点的子节点进行编码或解码,q为大于或等于1的整数,且所述第q层为所述第m层之下的层。

6.根据权利要求5所述的方法,其特征在于,所述方法用于编码端,所述方法还包括:

在所述第q层对应的比特之前设置第一标识符,所述第一标识符指示在所述第q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。

7.根据权利要求5所述的方法,其特征在于,所述方法用于解码端,所述在所述第q层,采用广度优先的方式,对所述第一节点的子节点进行编码或解码,包括:

在所述第q层对应的比特之前获取第一标识符的情况下,在所述第q层,采用广度优先的方式,对所述第一节点的子节点进行解码,所述第一标识符指示在所述第q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。

8.根据权利要求6或7所述的方法,其特征在于,在所述第q层为所述第n层以下的层中,首个对所述第一节点的子节点采用广度优先的方式进行编码或解码的层时,在所述第q层对应的比特之前设置有所述第一标识符。

9.根据权利要求6至8中任一项所述的方法,其特征在于,所述第一标识符包括前缀和后缀,一个节点的索引值包括前缀和后缀;

所述第一标识符的前缀的比特取值等于所述一个节点的索引值的前缀的比特取值;

所述第一标识符的后缀的比特数量等于所述一个节点的索引值的后缀的比特数量,所述第一标识符的后缀的比特取值不等于所述一个节点的索引值的后缀的比特取值;

所述一个节点的索引值的前缀的比特数量等于其他节点的索引值的比特数量,且所述一个节点的索引值的前缀的比特取值不同于其他节点的索引值。

10.根据权利要求1至9中任一项所述的方法,其特征在于,所述方法用于编码端,所述方法还包括:

在描述所述第一节点进行子节点划分情况的比特之前,设置第二标识符,所述第二标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。

11.根据权利要求1至9中任一项所述的方法,其特征在于,所述方法用于解码端,所述采用深度优先的方式对所述第一节点进行编码或解码,包括:

在描述所述第一节点进行子节点划分情况的比特之前获取第二标识符的情况下,采用深度优先的方式对所述第一节点进行解码;其中,所述第二标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。

12.根据权利要求11所述的方法,其特征在于,在描述所述第一节点进行子节点划分情况的比特之前获取第二标识符表征第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内。

13.根据权利要求10至12中任一项所述的方法,其特征在于,所述第二标识符为多个零或一,零或一的数量等于所述第n层的节点的数量。

14.根据权利要求1至13中任一项所述的方法,其特征在于,所述方法还包括:

在所述第n层之下的层,采用广度优先的方式,对第二节点的子节点进行编码或解码,其中,所述第二节点包括所述第n层的节点中除所述第一节点之外的任一节点。

15.根据权利要求14所述的方法,其特征在于,所述方法还包括:

在采用广度优先的方式,对所述第二节点的子节点进行编码或解码时,跳过所述第一节点的子节点。

16.根据权利要求1至15中任一项所述的方法,其特征在于,在所述第n层存在多个所述第一节点时,任一个所述第一节点及其子节点的编码处理与其他所述第一节点及其子节点的编码或解码处理是并行的。

17.根据权利要求1至16中任一项所述的方法,其特征在于,所述第一节点及其子节点的编码或解码处理是与以下处理并行的:

所述第n层中除所述第一节点之外的节点及其子节点的编码或解码处理。

18.根据权利要求1至17中任一项所述的方法,其特征在于,八叉树编码或解码的是所述三维数据点集的位置坐标。

19.根据权利要求18所述的方法,其特征在于,所述方法还包括:

利用二值化编码或解码的方式,或层次编码方案,对所述三维数据点集中的三维数据点的属性进行编码或解码。

20.根据权利要求1至19中任一项所述的方法,其特征在于,所述多叉树为八叉树。

21.一种用于三维数据点集处理的设备,其特征在于,所述三维数据点集采用多叉树的方式进行划分,所述设备包括:

第一编码或解码单元,用于对所述多叉树的第n层采用广度优先的方式进行编码或解码;

第二编码或解码单元,用于在所述第n层的第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,n和m为大于或等于1的整数。

22.根据权利要求21所述的设备,其特征在于,所述第一节点的三维数据点在第k层对应的比特取值包括:

所述第一节点的三维数据点在所述k层中所属的节点的索引值,其中,所述第k层为所述第一节点下的其中一层,且在所述第k层,所述第一节点中的全部三维数据点落入到同一个节点内。

23.根据权利要求22所述的设备,其特征在于,所述第k层中各个节点的索引值是预设的;或,

所述第k层中多个节点对应的多个索引值的起始索引值是基于以下确定的:所述至少一个三维数据点在所述第k层的上一层所属的节点。

24.根据权利要求23所述的设备,其特征在于,所述第k层中各个节点的索引值是基于各个节点所处的位置预设的;

所述上一层所属的节点所处的位置在所述第k层中对应位置处的节点的索引值为起始索引值。

25.根据权利要求21至24中任一项所述的设备,其特征在于,所述第二编码或解码单元具体用于:

在所述第一节点的全部三维数据点落入到所述第一节点在第q层的多个子节点时,在所述第q层,采用广度优先的方式,对所述第一节点的子节点进行编码或解码,q为大于或等于1的整数,且所述第q层为所述第m层之下的层。

26.根据权利要求25所述的设备,其特征在于,所述设备用于编码端,所述第二编码或解码单元进一步用于:

在所述第q层对应的比特之前设置第一标识符,所述第一标识符指示在所述第q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。

27.根据权利要求25所述的设备,其特征在于,所述设备用于解码端,所述第二编码或解码单元进一步用于:

在所述第q层对应的比特之前获取第一标识符的情况下,在所述第q层,采用广度优先的方式,对所述第一节点的子节点进行解码,所述第一标识符指示在所述第q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。

28.根据权利要求26或27所述的设备,其特征在于,在所述第q层为所述第n层以下的层中,首个对所述第一节点的子节点采用广度优先的方式进行编码或解码的层时,在所述第q层对应的比特之前设置有所述第一标识符。

29.根据权利要求26至28中任一项所述的设备,其特征在于,所述第一标识符包括前缀和后缀,一个节点的索引值包括前缀和后缀;

所述第一标识符的前缀的比特取值等于所述一个节点的索引值的前缀的比特取值;

所述第一标识符的后缀的比特数量等于所述一个节点的索引值的后缀的比特数量,所述第一标识符的后缀的比特取值不等于所述一个节点的索引值的后缀的比特取值;

所述一个节点的索引值的前缀的比特数量等于其他节点的索引值的比特数量,且所述一个节点的索引值的前缀的比特取值不同于其他节点的索引值。

30.根据权利要求21至29中任一项所述的设备,其特征在于,所述设备用于编码端,所述第二编码或解码单元进一步用于:

在描述所述第一节点进行子节点划分情况的比特之前,设置第二标识符,所述第二标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。

31.根据权利要求21至29中任一项所述的设备,其特征在于,所述设备用于解码端,所述第二编码或解码单元用于:

在描述所述第一节点进行子节点划分情况的比特之前获取第二标识符的情况下,采用深度优先的方式对所述第一节点进行解码;其中,所述第二标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。

32.根据权利要求31所述的设备,其特征在于,在描述所述第一节点进行子节点划分情况的比特之前获取第二标识符表征第一节点中的全部三维数据点落入到所述第一节点下的第m层的同一个节点内。

33.根据权利要求30至32中任一项所述的设备,其特征在于,所述第二标识符为多个零或一,零或一的数量等于所述第n层的节点的数量。

34.根据权利要求21至33中任一项所述的设备,其特征在于,所述第一编码或解码单元进一步用于:

在所述第n层之下的层,采用广度优先的方式,对第二节点的子节点进行编码或解码,其中,所述第二节点包括所述第n层的节点中除所述第一节点之外的任一节点。

35.根据权利要求34所述的设备,其特征在于,所述第一编码或解码单元进一步用于:

在采用广度优先的方式,对所述第二节点的子节点进行编码或解码时,跳过所述第一节点的子节点。

36.根据权利要求21至35中任一项所述的设备,其特征在于,在所述第n层存在多个所述第一节点时,任一个所述第一节点及其子节点的编码处理与其他所述第一节点及其子节点的编码或解码处理是并行的。

37.根据权利要求21至36中任一项所述的设备,其特征在于,所述第一节点及其子节点的编码或解码处理是与以下处理并行的:

所述第n层中除所述第一节点之外的节点及其子节点的编码或解码处理。

38.根据权利要求21至37中任一项所述的设备,其特征在于,八叉树编码或解码的是所述三维数据点集的位置坐标。

39.根据权利要求38所述的设备,其特征在于,还包括第三编码或解码单元,用于:

利用二值化编码或解码的方式,或层次编码方案,对所述三维数据点集中的三维数据点的属性进行编码或解码。

40.根据权利要求21至39中任一项所述的设备,其特征在于,所述多叉树为八叉树。

41.根据权利要求21所述的设备,其特征在于,所述第二编码或解码单元,具体用于在所述第n层的第一节点含有一个三维数据点的情况下,采用深度优先的方式对所述第一节点进行编码或解码。

42.根据权利要求21所述的设备,其特征在于,所述第二编码或解码单元,具体用于在所述第n层的第一节点含有一个三维数据点,且所述第一节点的边长大于阈值的情况下,采用深度优先的方式对所述第一节点进行编码或解码。

43.根据权利要求41或42所述的设备,其特征在于,所述第一节点的三维数据点在第k层对应的比特取值包括索引值,所述索引值为预设的固定值。

44.根据权利要求43所述的设备,其特征在于,所述索引值固定为111。

45.根据权利要求1所述的方法,其特征在于,所述方法包括:

在所述第n层的第一节点含有一个三维数据点的情况下,采用深度优先的方式对所述第一节点进行编码或解码。

46.根据权利要求1所述的方法,其特征在于,所述方法包括:

在所述第n层的第一节点含有一个三维数据点,且所述第一节点的边长大于阈值的情况下,采用深度优先的方式对所述第一节点进行编码或解码。

47.根据权利要求45或46所述的方法,其特征在于,所述第一节点的三维数据点在第k层对应的比特取值包括索引值,所述索引值为预设的固定值。

48.根据权利要求47所述的方法,其特征在于,所述索引值固定为111。

49.一种用于三维数据点集处理的设备,其特征在于,包括处理器,所述处理器用于处理根据权利要求1至20、45-48中任一项所述的方法。

50.一种计算机可读存储介质,其特征在于,用于存储代码,所述代码用于使得处理器执行根据权利要求1至20、45-48中任一项所述的方法。

技术总结
一种用于三维数据点集处理的方法和设备,可以提高对三维数据点集进行编码的灵活性,从而可以提高编码性能。所述方法包括:对所述多叉树的第N层采用广度优先的方式进行编码或解码(310);在所述第N层的第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,N和M为大于或等于1的整数(320)。

技术研发人员:李璞;郑萧桢;张富
受保护的技术使用者:深圳市大疆创新科技有限公司
技术研发日:2019.01.10
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-46384.html

最新回复(0)