CN113906681B - 点云数据的编解码方法、系统和存储介质 - Google Patents
点云数据的编解码方法、系统和存储介质 Download PDFInfo
- Publication number
- CN113906681B CN113906681B CN201980096972.6A CN201980096972A CN113906681B CN 113906681 B CN113906681 B CN 113906681B CN 201980096972 A CN201980096972 A CN 201980096972A CN 113906681 B CN113906681 B CN 113906681B
- Authority
- CN
- China
- Prior art keywords
- point cloud
- cloud data
- decoding
- encoding
- attribute
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种点云数据的编解码方法、系统和存储介质。所述编码方法包括:对输入的点云数据进行位置坐标与属性的混合编码(S110);以及对混合编码的结果进行算术编码得到点云数据的码流(S120);其中,混合编码包括:对点云数据所在的空间进行多叉树划分得到多个叶子节点,并对叶子节点中的点云数据进行位置编码和属性编码,其中,一个叶子节点的属性数据在所述码流中位于所述一个叶子节点的位置数据与另一个叶子节点的位置数据之间。该点云数据的编解码方法、系统和存储介质采用位置坐标编码与属性编码相混合的编码方案,使得在需要使用部分点云数据时,无需解码全部点云数据的位置坐标后再进行属性值解码,从而提高解码效率。
Description
技术领域
本发明总地涉及点云编码技术领域,更具体地涉及一种点云数据的编解码方法、系统和存储介质。
背景技术
点云是三维物体或场景的一种表现形式,是由空间中一组无规则分布、表达三维物体或场景空间结构和表面属性的离散点集所构成。为了准确反映空间中的信息,所需离散点的数目是巨大的。为了减少点云数据存储和传输时所占用的带宽,需要对点云数据进行编码压缩处理。
在点云数据编解码过程中,包括对点云数据点的位置坐标的编解码和属性值的编解码,且对位置坐标的编解码和对属性值的编解码是分开进行的。具体地,现有的点云数据编码方法是:先编码位置坐标,在对位置坐标编码结束后再进行属性值的编码;现有的点云数据解码方法是:先解码位置坐标的码流,在解码了全部的位置坐标码流之后再解码属性值的码流。
然而,这样的编解码方法存在问题:当点云数据点的数据量较大时,这种编码解码方案下在解码过程中存在一定的时延,解码器需要在解码出全部位置坐标之后才可以解码属性值。当需要使用部分的点云数据点时,也需要在解码全部位置坐标之后再逐个解码每个位置坐标对应的属性值,然后才能可以获得完整可用的点云数据点。这样显然增加了许多不必要的计算量,使得效率低下。
发明内容
为了解决上述问题而提出了本发明。本发明提供一种点云数据的编解码方案,其结合位置坐标编码的特点以及属性编码的特点,采用位置坐标编码与属性编码相混合的编码方案,使得在需要使用部分点云数据时,无需解码全部点云数据的位置坐标后再进行属性值解码,从而提高解码效率。下面简要描述本发明提出的点云数据的编解码方案,更多细节将在后续结合附图在具体实施方式中加以描述。
根据本发明一方面,提供了一种点云数据的编码方法,所述编码方法包括:对输入的点云数据进行位置坐标与属性的混合编码;以及对所述混合编码的结果进行算术编码得到所述点云数据的码流;其中,所述混合编码包括:对所述点云数据所在的空间进行多叉树划分得到多个叶子节点,并对叶子节点中的点云数据进行位置编码和属性编码;其中,一个叶子节点的属性数据在所述码流中位于所述一个叶子节点的位置数据与另一个叶子节点的位置数据之间。
在本发明的一个实施例中,所述编码方法还包括:在对所述输入的点云数据进行位置坐标与属性的混合编码之前,对所述输入的点云数据的位置坐标进行量化,并基于经量化的位置坐标进行所述混合编码。
在本发明的一个实施例中,所述编码方法还包括:在对所述输入的点云数据的位置坐标进行量化之后,对经量化得到相同位置坐标的点云数据的属性值进行合并;并且对任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的唯一属性值进行编码。
在本发明的一个实施例中,所述编码方法还包括:在对所述输入的点云数据的位置坐标进行量化之后,对经量化得到相同位置坐标的点云数据的属性值不进行合并;并且对任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行编码。
在本发明的一个实施例中,所述编码方法还包括:当任一叶子节点中包括不止一个点云数据时,将所述任一叶子节点中的点云数据的属性值进行合并;并且对所述任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的合并属性值进行编码。
在本发明的一个实施例中,所述编码方法还包括:当任一叶子节点中包括不止一个点云数据时,不将所述任一叶子节点中的点云数据的属性值进行合并;并且对所述任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行编码。
在本发明的一个实施例中,所述码流中包括属性合并标志位,所述属性合并标志位的取值表示在编码过程中是否对点云数据的属性值进行了合并。
在本发明的一个实施例中,对所述点云数据的属性值进行编码,包括:对所述点云数据的属性值进行二值化编码。
在本发明的一个实施例中,所述对所述点云数据的属性值进行二值化编码,包括:对所述点云数据的属性值进行定长编码、截断莱斯编码或者指数哥伦布编码。
根据本发明另一方面,提供了一种点云数据的解码方法,所述解码方法包括:对点云数据的码流进行算术解码得到算术解码结果;以及对所述算术解码结果进行位置坐标与属性的混合解码,以得到所述点云数据各自的位置坐标和属性值;其中,所述混合解码包括:基于多叉树划分进行位置坐标解码得到多个叶子节点,其中,一个叶子节点的属性数据在所述码流中位于所述一个叶子节点的位置数据与另一个叶子节点的位置数据之间;对所述叶子节点中所含的点云数据进行位置解码和属性解码。
在本发明的一个实施例中,所述解码方法还包括:基于所述码流确定在所述点云数据的编码过程中是否对所述点云数据的位置坐标进行了量化,如果是进行了量化,则对所述混合解码得到的位置坐标进行逆量化。
在本发明的一个实施例中,所述解码方法还包括:在确定所述点云数据的编码过程中对所述点云数据的位置坐标进行了量化之后,确定所述点云数据的编码过程中是否对经量化得到相同位置坐标的点云数据的属性值进行了合并;如果确定进行了合并,则对任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的唯一属性值进行解码;如果确定未进行合并,则对任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行解码。
在本发明的一个实施例中,所述解码方法还包括:基于所述码流确定在所述点云数据的编码过程中是否对包括不止一个点云数据的任一叶子节点中的点云数据的属性值进行了合并;如果确定进行了合并,则对所述任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的合并属性值进行解码;如果确定未进行合并,则对所述任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行解码。
在本发明的一个实施例中,所述解码方法还包括:基于所述码流中的属性合并标志位确定在编码过程中是否对点云数据的属性值进行了合并,并基于所述确定的结果对所述叶子节点进行位置解码和属性解码。
在本发明的一个实施例中,对所述点云数据的属性值进行解码,包括:对所述点云数据的属性值进行二值化解码。
在本发明的一个实施例中,所述对所述点云数据的属性值进行二值化解码,包括:对所述点云数据的属性值进行定长解码、截断莱斯解码或者指数哥伦布解码。
根据本发明又一方面,提供了一种点云数据的编码系统,所述编码系统包括存储装置和处理器,所述存储装置上存储有由所述处理器运行的计算机程序,所述计算机程序在被所述处理器运行时执行上述任一项所述的点云数据的编码方法。
根据本发明又一方面,提供了一种点云数据的解码系统,所述编码系统包括存储装置和处理器,所述存储装置上存储有由所述处理器运行的计算机程序,所述计算机程序在被所述处理器运行时执行上述任一项所述的点云数据的解码方法。
根据本发明再一方面,提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序在运行时执行上述任一项所述的点云数据的编码方法。
根据本发明再一方面,提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序在运行时执行上述任一项所述的点云数据的解码方法。
根据本发明实施例的点云数据的编解码方法、系统和存储介质结合位置坐标编码的特点以及属性编码的特点,采用位置坐标编码与属性编码相混合的编码方案,使得在需要使用部分点云数据时,无需解码全部点云数据的位置坐标后再进行属性值解码,从而提高解码效率。
附图说明
图1示出根据本发明实施例的点云数据的编码方法的示意性流程图;
图2示出根据本发明实施例的八叉树划分示意图;
图3示出根据本发明实施例的八叉树递归划分示意图;
图4示出根据本发明实施例的点云数据的编码系统的示意性框图;
图5示出根据本发明实施例的点云数据的解码方法的示意性流程图;
图6示出根据本发明实施例的点云数据的解码系统的示意性框图。
具体实施方式
为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。
应当理解的是,本发明能够以不同形式实施,而不应当解释为局限于这里提出的实施例。相反地,提供这些实施例将使公开彻底和完全,并且将本发明的范围完全地传递给本领域技术人员。
在此使用的术语的目的仅在于描述具体实施例并且不作为本发明的限制。在此使用时,单数形式的“一”、“一个”和“所述/该”也意图包括复数形式,除非上下文清楚指出另外的方式。还应明白术语“组成”和/或“包括”,当在该说明书中使用时,确定所述特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或更多其它的特征、整数、步骤、操作、元件、部件和/或组的存在或添加。在此使用时,术语“和/或”包括相关所列项目的任何及所有组合。
为了彻底理解本发明,将在下列的描述中提出详细的步骤以及详细的结构,以便阐释本发明提出的技术方案。本发明的较佳实施例详细描述如下,然而除了这些详细描述外,本发明还可以具有其他实施方式。
如前所述,目前的点云数据的编码方法在对点云数据的全部位置坐标进行编码后才对点云数据的属性值进行编码,使得解码时需要解码出全部位置坐标才可以解码属性值,当仅需要使用部分点云数据点时,编解码效率低下。基于此,本发明提供一种点云数据的编解码方案,下面结合附图来描述根据本发明实施例的点云数据的编解码方案。
图1示出根据本发明实施例的点云数据的编码方法100的示意性流程图。如图1所示,点云数据的编码方法100可以包括如下步骤:
在步骤S110,对输入的点云数据进行位置坐标与属性的混合编码,所述混合编码包括:对所述点云数据所在的空间进行多叉树划分得到多个叶子节点,并对叶子节点中的点云数据进行位置编码和属性编码。
在本发明的实施例中,可以采用激光扫描仪、激光雷达等测距装置来针对某物体或某场景采集点云数据。一般地,经采集的点云数据包括三维方向的位置坐标以及该位置的属性信息。例如,每个点云数据的位置坐标可以表示为(x,y,z),每个点云数据的属性信息可以包括诸如颜色(R,G,B)或者反射率等属性的值。
在本发明的实施例中,将点云数据进行位置坐标与属性的混合编码,即位置坐标编码(也可以简称为位置编码)与属性编码相混合的编码。其中,对位置坐标的编码可以采用多叉树划分编码(例如八叉树划分编码),对属性的编码在位置坐标编码的过程中进行。具体地,对点云数据所在的空间进行多叉树划分得到多个叶子节点(即多叉树划分得到的最后一层的节点),该叶子节点可以是边长小于等于所设定的最小边长的块。并对叶子节点中的点云数据进行位置编码和属性编码,一个叶子节点的属性编码结果位于所述一个叶子节点的位置编码结果与另一个叶子节点的位置编码结果之间。下面以八叉树划分编码为例来详细本发明提出的上述对点云数据进行位置坐标与属性的混合编码。
八叉树划分编码是用八叉树划分压缩坐标位置的方法。每层八叉树的划分均利用当前块的中心点的坐标进行子块划分,通过中心点将当前块划分为八个小的子块。对一个编码块进行一次八叉树划分的示意图如图2所示。八叉树划分可以按照下面的过程来实现:首先,根据点云数据的位置坐标(以下简称为位置坐标)在三个方向中每个方向上的最大值,并求出这三个最大值之中的最大值,根据该选定值来确定用于初始化八叉树划分的初始化块的边长。通常,初始化块的边长可以为2的整数次幂且为大于等于并最接近该选定值。应理解,可以将该选定值写入到码流文件的头信息中供解码端使用。基于对初始化块的边长的确定,可以开始进行八叉树划分编码。每层八叉树的划分均利用当前块的中心点的坐标进行子块划分,通过中心点将当前块划分为八个小的子块。得到子块划分后,会判断每个子块内是否存在点云数据,对存在点云数据的子块会再进一步进行划分,直至子块划分至最小时,例如子块边长达到预设最小边长(通常将预设最小边长为设置为1)即得到叶子节点时停止划分。
八叉树递归划分的示意图如图3所示。在对点云数据的位置坐标进行压缩编码时,按照八叉树的广度优先遍历顺序,逐层进行编码,逐层逐个编码每个八叉树的划分情况。并且,对每个块进行八叉树划分后得到的八个子块会判断是否含有点云数据点。如果含有点云数据点则会进一步进行划分。以图3为例,图中黑色方块表示当前子块内含有点云数据点,白色方块表示当前子块内不含有点云数据点。在对根节点进行八叉树划分时,依次判断每个小块内是否含有点云数据点,以图3中的第一层为例,第一次划分的八叉树中第三个块含有点云数据点,剩余七个块不含有点云数据点,则这样的划分可以用8bit来表示,具体为0010 0000。接着对含有数据点的块接着进行划分,即图3中的第二层划分,结果此次得到第三个块与第八个块内含有点云数据点,则这次八叉树划分可以用0010 0001来表示。接着依次对这两个有点云数据点的子块进行划分。按照广度优先的顺序进行进一步划分。在第三层首先划分左边的子块,划分结果如图3中第三层左半部分所示,第一个子块和第四个子块内含有点云数据点,则这次八叉树划分可以用1001 0000进行表示。接着对第二层的第二个有点云数据点的子块进行划分,划分结果如图3中第三层右半部分所示,第二个子块和第八个子块内含有点云数据点,则这次八叉树划分可以用0100 0001所表示。后面层的划分与前面描述相似,按照广度优先遍历的顺序逐层进行划分。图3中的划分结果对应的二进制码流为0010 0000 0010 0001 1001 0000 0100 0001……。当划分到最后一层,即子块的边长达到预设最小边长时,此时已经到达八叉树划分的最深位置,即到达了当前八叉树的叶子节点块,不需要再进一步划分,根据本发明的实施例,此时可以接着编码当前叶子节点块内含有的点云数据点的数目以及这一个或多个点云数据点各自的属性值。
在本发明的实施例中,当叶子节点块内含有一个点云数据点时,可以直接编码一个0进行表示,接着会编码这个位置坐标对应的属性值;当叶子节点块内含有不止一个点云数据点时,设当前叶子节点块内含有n个点云数据点,此时会先编码一个1,接着编码数值(n-1),接着会连续编码这n个点云数据点对应的属性值。依次编码每个叶子节点块内含有的点云点的数目以及对应属性值,即得到对点云数据进行的位置坐标与属性的混合编码的结果。
在本发明的实施例中,对点云数据的属性值的编码可以为二值化编码。示例性地,对点云数据的属性值的编码可以为定长编码、截断莱斯编码或者指数哥伦布编码。当然,这仅是示例性的,还可以采用任何其他合适的方法来对点云数据的属性值进行编码。下面详细描述上述三种属性编码方法。
在本发明的一个实施例中,可以对点云数据的属性值采用定长码的方案进行二值化。在一个示例中,可以根据所有点云数据的属性值中的最大取值确定属性值的定长码方案的比特深度。在另一个示例中,也可以由点云数据的采集装置来确定属性值的定长码方案的比特深度,即根据采集得到的属性值的比特深度来确定属性值的定长码方案的比特深度。在对任一叶子节点块的任一点云数据的属性值进行编码时,可以将该点云数据的属性值转化为位宽等于上述确定的比特深度的二进制数,实现该点云数据的属性值的二值化。
在本发明的另一个实施例中,可以对点云数据的属性值采用截断莱斯的方案进行二值化。在一个示例中,可以设门限值为cMax,莱斯参数为R,属性值为Ref。截断莱斯码由前缀码和后缀码串联而成。其中,前缀码依据前缀值P而生成,前缀值P的计算方法为P=Ref>>R。通过计算,若前缀值P小于值(cMax>>R),则前缀码由P个1和一个0组成,长度为P+1;若前缀值P大于等于值(cMax>>R),则前缀码由(cMax>>R)个1组成,长度为(cMax>>R)。后缀码依据后缀值S而生成:当属性值Ref小于cMax时,后缀值S的计算方法为S=Ref-(P<<R),后缀码为S的二元化串,长度为R;当属性值Ref大于等于cMax时,无后缀码。据此即可实现对任一叶子节点块的任一点云数据的属性值的二值化。
在本发明的又一个实施例中,可以对点云数据的属性值采用k阶指数哥伦布码的方案进行二值化。k阶指数哥伦布码由前缀和后缀两部分组成,前缀和后缀都依赖于指数哥伦布码的阶数k。用来表示非负整数属性值Ref的k阶指数哥伦布码可用如下步骤生成:(1)将属性值Ref以二进制形式写出,去掉最低的k个比特位,之后加1;(2)计算留下的比特位数,将此数减1,即是需要增加的前缀零的个数;(3)将步骤(1)中去掉的最低k个比特位补回比特串尾部。下面以属性值Ref=4、一阶指数哥伦布码(即k=1)为例来描述:(1)4的二进制表示为100,去掉最低1个比特位0变为10,加1后变为11;(2)11的比特数为2,因此前缀中0的个数为1;(3)在比特串最低比特位补上步骤(1)中去掉的0,最终码字为0110。对于k阶指数哥伦布码,前缀由m个连续的0和一个1构成,后缀由m+k构成,是Ref-2k(2m-1)的二进制表示。据此即可实现对任一叶子节点块的任一点云数据的属性值的二值化。
如前所述,对叶子节点中的点云数据进行位置编码和属性编码,一个叶子节点的属性编码结果位于所述一个叶子节点的位置编码结果与另一个叶子节点的位置编码结果之间,即得到对点云数据进行的位置坐标与属性的混合编码的结果。
以上示例性地描述了根据本发明实施例的点云数据的编码方法100的步骤110的过程,下面继续参考图1,描述编码方法100的后续步骤。
在步骤120,对所述混合编码的结果进行算术编码得到点云数据的码流,其中,一个叶子节点的属性数据在所述码流中位于所述一个叶子节点的位置数据与另一个叶子节点的位置数据之间。
在本发明的实施例中,可将步骤S120得到的混合编码结果(二进制码流)送入算术编码引擎中进行算术编码,即可得到点云数据的位置坐标与属性的码流,实现对点云数据的位置坐标编码和属性编码。
在本发明进一步的实施例中,编码方法100还可以包括(未在图1中示出):在对所述输入的点云数据进行位置坐标与属性的混合编码之前,对所述输入的点云数据的位置坐标进行量化,并基于经量化的位置坐标进行所述混合编码。
示例性地,可以根据输入的点云数据的位置坐标在三个方向(即x轴方向、y轴方向和z轴方向)中每个方向上的最大值与最小值之间的差值、以及根据输入的量化精度参数,对输入的每个点云数据的位置坐标进行量化,以简化对点云数据的位置坐标的编码操作。示例性地,可以通过量化将输入的点云数据的位置坐标转换为大于等于零的整数坐标。
进一步地,在将所有点云数据的位置坐标进行量化后,可能会出现重复的坐标值,此时,同一个位置坐标对应于多个点云数据,即同一个位置坐标可能对应于多个属性值。基于此,在一个示例中,在对所述输入的点云数据的位置坐标进行量化之后,可以对经量化得到相同位置坐标的点云数据的属性值进行合并。其中,属性值的合并例如可以为将多个属性值进行加权求和、求平均值或其他合适的操作等,总之是将多个属性值变为一个属性值。在该示例中,由于将量化后相同位置坐标的点云数据的属性值进行了合并,因此在多叉树划分后得到的每个叶子节点中,均可视为仅包括一个点云数据点,属性值也为一个。因为虽然叶子节点中有可能包括多个点云数据点,但其位置坐标相同所以位置上视为一个点(位置编码是基于包括一个点云数据点进行位置编码,即如前所述的,叶子节点包括一个点云数据点时编码0),且其属性值进行了合并,因此属性编码是对该唯一属性值进行编码即可。进一步地,经过上面的分析,在该示例中叶子节点总是包括一个点云数据点和一个属性值,因此编码时也可以不对点云数据点的个数进行编码(因为每个叶子节点中的点云数据的个数都是1),而仅对每个叶子节点中的点云数据点的唯一属性值进行编码即可,这样可进一步减少码流位数,节省编码开销。此外,为了使解码端明了解码叶子节点时仅需解码属性值而无需解码点云数据点的个数,可以在编码码流中设置属性合并标志位,并通过该标志位标识编码过程中对点云数据的属性值进行了合并。当然,也可以默认编码过程对点云数据的属性值进行了合并而无需设置该属性合并标志位。
在另一个示例中,在对所述输入的点云数据的位置坐标进行量化之后,可以对经量化得到相同位置坐标的点云数据的属性值不进行合并。在该示例中,由于量化后相同位置坐标的点云数据的属性值未进行合并,因此在多叉树划分后得到的叶子节点中,可能包括叶子节点中存在多个点云数据点的情况,且每个点云数据点均具有其各自的属性值。在该情况下,对叶子节点中的点云数据的编码可以包括对该叶子节点中点云数据的个数进行编码以及对各点云数据的属性值分别进行编码。类似地,为了使解码端明了解码叶子节点时点云数据点的个数和属性值均需解码,可以在编码码流中设置属性合并标志位,并通过该标志位标识编码过程中对点云数据的属性值未进行合并。当然,也可以默认编码过程不对点云数据的属性值进行合并而无需设置该属性合并标志位。
在本发明进一步的实施例中,编码方法100还可以包括(未在图1中示出):当任一叶子节点中包括不止一个点云数据时,将所述任一叶子节点中的点云数据的属性值进行合并;并且对所述任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的合并属性值进行编码。在该实施例中,对任一包括不止一个点云数据的叶子节点中各点云数据的属性值进行合并,这样默认每个叶子节点均包括一个点云数据及一个属性值,因此对叶子节点编码时可以仅对该叶子节点的唯一属性值(例如合并后的属性值,简称合并属性值)进行编码即可,而无需编码叶子节点中点云数据的个数,从而减少码流位数,节省编码开销。此外,为了使解码端明了解码叶子节点时仅需解码属性值而无需解码点云数据点的个数,可以在编码码流中设置属性合并标志位,并通过该标志位标识编码过程中对点云数据的属性值进行了合并。当然,也可以默认编码过程对点云数据的属性值进行了合并而无需设置该属性合并标志位。
在本发明的另一个实施例中,编码方法100还可以包括(未在图1中示出):当任一叶子节点中包括不止一个点云数据时,不将所述任一叶子节点中的点云数据的属性值进行合并;并且对所述任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行编码。在该实施例中,对任一包括不止一个点云数据的叶子节点中各点云数据的属性值不进行合并,这样对叶子节点编码时还是需要编码叶子节点中点云数据的个数和点云数据的属性值。类似地,为了使解码端明了解码叶子节点时点云数据点的个数和属性值均需解码,可以在编码码流中设置属性合并标志位,并通过该标志位标识编码过程中对点云数据的属性值未进行合并。当然,也可以默认编码过程不对点云数据的属性值进行合并而无需设置该属性合并标志位。
以上示例性地描述了根据本发明实施例的点云数据的编码方法。基于上面的描述,根据本发明实施例的点云数据的编码方法结合位置坐标编码的特点以及属性编码的特点,采用位置坐标编码与属性编码相混合的编码方案,使得在需要使用部分点云数据时,无需解码全部点云数据的位置坐标后再进行属性值解码,从而提高解码效率。示例性地,根据本发明实施例的点云数据的编码方法可以在具有存储器和处理器的设备、装置或者系统中实现。
下面结合图4描述根据本发明实施例的点云数据的编码系统。图4示出了根据本发明实施例的点云数据的编码系统400的示意性框图。点云数据的编码系统400包括存储装置410以及处理器420。
其中,存储装置410存储用于实现根据本发明实施例的点云数据的编码方法中的相应步骤的程序。处理器420用于运行存储装置410中存储的程序,以执行根据本发明实施例的点云数据的编码方法的相应步骤。
在一个实施例中,在所述程序被处理器420运行时使得点云数据的编码系统400执行以下步骤:对输入的点云数据进行位置坐标与属性的混合编码;以及对所述混合编码的结果进行算术编码得到所述点云数据的码流;其中,所述混合编码包括:对所述点云数据所在的空间进行多叉树划分得到多个叶子节点,并对叶子节点中的点云数据进行位置编码和属性编码;其中,一个叶子节点的属性数据在所述码流中位于所述一个叶子节点的位置数据与另一个叶子节点的位置数据之间。
在本发明的一个实施例中,在所述程序被处理器420运行时还使得点云数据的编码系统400执行以下步骤:在对所述输入的点云数据进行位置坐标与属性的混合编码之前,对所述输入的点云数据的位置坐标进行量化,并基于经量化的位置坐标进行所述混合编码。
在本发明的一个实施例中,在所述程序被处理器420运行时还使得点云数据的编码系统400执行以下步骤:在对所述输入的点云数据的位置坐标进行量化之后,对经量化得到相同位置坐标的点云数据的属性值进行合并;并且对任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的唯一属性值进行编码。
在本发明的一个实施例中,在所述程序被处理器420运行时还使得点云数据的编码系统400执行以下步骤:在对所述输入的点云数据的位置坐标进行量化之后,对经量化得到相同位置坐标的点云数据的属性值不进行合并;并且对任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行编码。
在本发明的一个实施例中,在所述程序被处理器420运行时还使得点云数据的编码系统400执行以下步骤:当任一叶子节点中包括不止一个点云数据时,将所述任一叶子节点中的点云数据的属性值进行合并;并且对所述任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的合并属性值进行编码。
在本发明的一个实施例中,在所述程序被处理器420运行时还使得点云数据的编码系统400执行以下步骤:当任一叶子节点中包括不止一个点云数据时,不将所述任一叶子节点中的点云数据的属性值进行合并;并且对所述任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行编码。
在本发明的一个实施例中,所述码流中包括属性合并标志位,所述属性合并标志位的取值表示在编码过程中是否对点云数据的属性值进行了合并。
在本发明的一个实施例中,在所述程序被处理器420运行时还使得点云数据的编码系统400执行的对所述点云数据的属性值进行编码,包括:对所述点云数据的属性值进行二值化编码。
在本发明的一个实施例中,在所述程序被处理器420运行时还使得点云数据的编码系统400执行的所述对所述点云数据的属性值进行二值化编码,包括:对所述点云数据的属性值进行定长编码、截断莱斯编码或者指数哥伦布编码。
此外,根据本发明实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的点云数据的编码方法的相应步骤。所述存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。
在一个实施例中,所述计算机程序指令在被计算机运行时可以执行根据本发明实施例的点云数据的编码方法。
在一个实施例中,所述计算机程序指令在被计算机或处理器运行时使计算机或处理器执行以下步骤:对输入的点云数据进行位置坐标与属性的混合编码;以及对所述混合编码的结果进行算术编码得到所述点云数据的码流;其中,所述混合编码包括:对所述点云数据所在的空间进行多叉树划分得到多个叶子节点,并对叶子节点中的点云数据进行位置编码和属性编码,其中,一个叶子节点的属性数据在所述码流中位于所述一个叶子节点的位置数据与另一个叶子节点的位置数据之间。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行以下步骤:在对所述输入的点云数据进行位置坐标与属性的混合编码之前,对所述输入的点云数据的位置坐标进行量化,并基于经量化的位置坐标进行所述混合编码。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行以下步骤:在对所述输入的点云数据的位置坐标进行量化之后,对经量化得到相同位置坐标的点云数据的属性值进行合并;并且对任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的唯一属性值进行编码。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行以下步骤:在对所述输入的点云数据的位置坐标进行量化之后,对经量化得到相同位置坐标的点云数据的属性值不进行合并;并且对任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行编码。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行以下步骤:当任一叶子节点中包括不止一个点云数据时,将所述任一叶子节点中的点云数据的属性值进行合并;并且对所述任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的合并属性值进行编码。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行以下步骤:当任一叶子节点中包括不止一个点云数据时,不将所述任一叶子节点中的点云数据的属性值进行合并;并且对所述任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行编码。
在本发明的一个实施例中,所述码流中包括属性合并标志位,所述属性合并标志位的取值表示在编码过程中是否对点云数据的属性值进行了合并。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时使计算机或处理器执行的对所述点云数据的属性值进行编码,包括:对所述点云数据的属性值进行二值化编码。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时使计算机或处理器执行的所述对所述点云数据的属性值进行二值化编码,包括:对所述点云数据的属性值进行定长编码、截断莱斯编码或者指数哥伦布编码。
根据本发明的另一方面,还提供了一种点云数据的解码方法。由于根据本发明实施例的点云数据的解码方法是与根据本发明实施例的点云数据的编码方法是相对应的,为了简洁,解码过程中的一些与编码过程相似或相同的过程不再详细赘述。
图5示出根据本发明实施例的点云数据的解码方法500的示意性流程图。如图5所示,点云数据的解码方法500可以包括如下步骤:
在步骤S510,对点云数据的码流进行算术解码得到算术解码结果。
在本发明的实施例中,步骤S510是与根据实施例的点云数据的编码方法100的步骤S120相对应的,在该步骤对点云数据的码流进行算术编码的逆过程,即算术解码,得到算术解码结果。
在步骤S520,对所述算术解码结果进行位置坐标与属性的混合解码,以得到所述点云数据各自的位置坐标和属性值;其中,所述混合解码包括:基于多叉树划分进行位置坐标解码得到多个叶子节点,其中,一个叶子节点的属性数据在所述码流中位于所述一个叶子节点的位置数据与另一个叶子节点的位置数据之间;对所述叶子节点中所含的点云数据进行位置解码和属性解码。
在本发明的实施例中,步骤S520是与根据实施例的点云数据的编码方法100的步骤S110相对应的,在该步骤,对步骤S520得到的算术解码结果进行位置坐标与属性的混合解码。首先可以对码流的头信息进行解码,得到点云数据的位置坐标在三个方向中每个方向的最大值中的最大值,然后基于该值确定用于多叉树划分的初始化块的边长。基于对初始化块的边长的确定,可以开始进行多叉树划分解码(例如八叉树划分解码)。下面以八叉树划分解码为例详细本发明提出的上述对算术解码结果进行的位置坐标与属性的混合解码。
依次解码8bit确定一个块的八叉树划分情况,每一位bit表示一个子块内是否含有点云数据点,如果为1表示含有点云数据点,如果为0表示不含有点云数据点。对含有点云数据点的块继续进行八叉树划分解码。当八叉树划分解码过程进行到块的边长达到预设最小边长(预设最小边长通常设置为1)时,即表明划分已经结束。接下来解码每个叶子节点内含有的点云点的数目。当解码到一个0时,表明当前叶子节点块内含有一个点云数据点,接着解码该点云数据点的位置坐标对应的属性值。当解码到一个1时,表明当前叶子节点块内含有的点云点数目不止一个,接着解码得到数值(n-1),即说明当前叶子节点块内含有n个点云数据点。接着会连续解码n个属性值即为该叶子节点块内的点云点的位置坐标对应的属性值。其中,解码数值型的方案应当是与编码过程中采用的对属性值的编码方案相对应的方案。
如前所述,在本发明的实施例中,对点云数据的属性值的编码可以为二值化编码。示例性地,对点云数据的属性值的编码可以为定长编码、截断莱斯编码或者指数哥伦布编码。因此,对应地,在本发明的实施例中,对点云数据的属性值的解码可以为二值化解码。示例性地,对点云数据的属性值的解码可以为定长解码、截断莱斯解码或者指数哥伦布解码。应理解,这仅是示例性的,对点云数据的属性值的解码还可以为其他任何合适的方法,这取决于对属性值采用的编码方法。下面详细描述上述三种属性解码方法。
在本发明的一个实施例中,对点云数据的属性值采用定长码的方案进行二值化。在一个示例中,可以对码流中的头信息进行解码得到定长码二值化方案所采用的比特深度,解码该比特深度所表示的位宽的二进制码流,得到相应的属性值。
在本发明的另一个实施例中,对点云数据的属性值采用截断莱斯的方案进行二值化。在一个示例中,可以对码流中的头信息进行解码得到门限值cMax和莱斯参数R,然后对前缀码和后缀码进行解码。首先解码前缀码,逐比特进行解码,若解码到一比特的0,或者解码比特数大于等于(cMax>>R)则停止解码前缀码。若前缀码比特数大于等于(cMax>>R),则属性值为cMax。否则,可设前缀码为P个1和一个0,接着解码R比特,属性值Ref的计算用公式表示可以为:Ref=S+(P=R),据此即可实现对截断莱斯码的解码。
在本发明的又一个实施例中,对点云数据的属性值采用k阶指数哥伦布码的方案进行二值化。在一个示例中,解码k阶指数哥伦布码时,首先从比特流的当前位置开始寻找第一个非零比特,并将找到的零比特个数记为m,第一个非零比特之后m+k位二进制比特串的十进制值为value,计算出的解码值Ref用公式表示可以为:Ref=2m+k-2k+Value,即可实现对这个位置坐标对应的属性值解码。
依次解码每个叶子节点块内含有的点云点的数目以及对应属性值,即得到对算术解码结果进行位置坐标与属性的混合解码的结果。
在本发明进一步的实施例中,解码方法500还可以包括(未在图5中示出):基于所述码流确定在所述点云数据的编码过程中是否对所述点云数据的位置坐标进行了量化,如果是进行了量化,则对所述混合解码得到的位置坐标进行逆量化。在该实施例中,通过码流(例如码流中的量化标志位)确定点云数据编码过程中是否进行了量化,如果进行了量化,则还需对步骤S520得到的混合解码结果中的位置解码结果进行逆量化,以得到点云数据的位置坐标。
进一步地,解码方法500还可以包括(未在图5中示出):在确定所述点云数据的编码过程中对所述点云数据的位置坐标进行了量化之后,确定所述点云数据的编码过程中是否对经量化得到相同位置坐标的点云数据的属性值进行了合并;如果确定进行了合并,则对任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的唯一属性值进行解码;如果确定未进行合并,则对任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行解码。
在该实施例中,已确定编码过程中对点云数据的位置坐标进行了量化,由于在将所有点云数据的位置坐标进行量化后,可能会出现重复的坐标值,此时,同一个位置坐标对应于多个点云数据,即同一个位置坐标可能对应于多个属性值。因此,可进一步确定经量化得到相同位置坐标的点云数据的属性值是否进行了合并(例如通过属性合并标志位来确定,当然也可以是默认进行了合并或未合并而无需该标志位和该确定步骤)。如果确定经量化得到相同位置坐标的点云数据的属性值进行了合并,意味着每个叶子节点中均可视为仅包括一个点云数据点,属性值也为一个,因此解码时可直接对每个叶子节点中点云数据的唯一属性值进行解码,而无需解码点云数据的个数,因为每个叶子节点中的点云数据的个数均为一个,在编码时无需浪费编码位对其进行编码。反之,如果确定经量化得到相同位置坐标的点云数据的属性值未进行合并,则意味着解码叶子节点时需要解码点云数据的个数和各点云数据的属性值。
在本发明的另一个实施例中,方法500还可以包括(未在图5中示出):基于所述码流确定在所述点云数据的编码过程中是否对包括不止一个点云数据的任一叶子节点中的点云数据的属性值进行了合并;如果确定进行了合并,则对所述任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的合并属性值进行解码;如果确定未进行合并,则对所述任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行解码。
在该实施例中,可以基于码流确定编码过程中是否对包括不止一个点云数据的叶子节点中的点云数据的属性值进行了合并(例如通过码流中的属性合并标志位来确定,当然也可以是默认进行了合并或未合并而无需该标志位和该确定步骤),如果确定对包括不止一个点云数据的叶子节点中的点云数据的属性值进行了合并,则表示解码时对这样的叶子节点均只需要解码唯一的属性值即可。反之,如果确定对包括不止一个点云数据的叶子节点中的点云数据的属性值未进行合并,则表示解码时需要对这样的叶子节点解码点云数据的个数和各点云数据的属性值。
以上示例性地描述了根据本发明实施例的点云数据的解码方法。基于上面的描述,根据本发明实施例的点云数据的解码方法采用位置坐标解码与属性解码相混合的解码方案,使得在需要使用部分点云数据时,无需解码全部点云数据的位置坐标后再进行属性值解码,从而提高解码效率。示例性地,根据本发明实施例的点云数据的解码方法可以在具有存储器和处理器的设备、装置或者系统中实现。
下面结合图6描述根据本发明实施例的点云数据的解码系统。图6示出了根据本发明实施例的点云数据的解码系统600的示意性框图。点云数据的解码系统600包括存储装置610以及处理器620。
其中,存储装置610存储用于实现根据本发明实施例的点云数据的解码方法中的相应步骤的程序。处理器620用于运行存储装置610中存储的程序,以执行根据本发明实施例的点云数据的解码方法的相应步骤。
在一个实施例中,在所述程序被处理器620运行时使得点云数据的解码系统600执行以下步骤:对点云数据的码流进行算术解码得到算术解码结果;以及对所述算术解码结果进行位置坐标与属性的混合解码,以得到所述点云数据各自的位置坐标和属性值;其中,所述混合解码包括:基于多叉树划分进行位置坐标解码得到多个叶子节点,其中,一个叶子节点的属性数据在所述码流中位于所述一个叶子节点的位置数据与另一个叶子节点的位置数据之间;对所述叶子节点中所含的点云数据进行位置解码和属性解码。
在本发明的一个实施例中,在所述程序被处理器620运行时还使得点云数据的解码系统600执行以下步骤:基于所述码流确定在所述点云数据的编码过程中是否对所述点云数据的位置坐标进行了量化,如果是进行了量化,则对所述混合解码得到的位置坐标进行逆量化。
在本发明的一个实施例中,在所述程序被处理器620运行时还使得点云数据的解码系统600执行以下步骤:在确定所述点云数据的编码过程中对所述点云数据的位置坐标进行了量化之后,确定所述点云数据的编码过程中是否对经量化得到相同位置坐标的点云数据的属性值进行了合并;如果确定进行了合并,则对任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的唯一属性值进行解码;如果确定未进行合并,则对任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行解码。
在本发明的一个实施例中,在所述程序被处理器620运行时还使得点云数据的解码系统600执行以下步骤:基于所述码流确定在所述点云数据的编码过程中是否对包括不止一个点云数据的任一叶子节点中的点云数据的属性值进行了合并;如果确定进行了合并,则对所述任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的合并属性值进行解码;如果确定未进行合并,则对所述任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行解码。
在本发明的一个实施例中,在所述程序被处理器620运行时还使得点云数据的解码系统600执行以下步骤:基于所述码流中的属性合并标志位确定在编码过程中是否对点云数据的属性值进行了合并,并基于所述确定的结果对所述叶子节点进行位置解码和属性解码。
在本发明的一个实施例中,在所述程序被处理器620运行时使得点云数据的解码系统600执行的对所述点云数据的属性值进行解码,包括:对所述点云数据的属性值进行二值化解码。
在本发明的一个实施例中,在所述程序被处理器620运行时使得点云数据的解码系统600执行的所述对所述点云数据的属性值进行二值化解码,包括:对所述点云数据的属性值进行定长解码、截断莱斯解码或者指数哥伦布解码。
此外,根据本发明实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的点云数据的解码方法的相应步骤。所述存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。
在一个实施例中,所述计算机程序指令在被计算机运行时可以执行根据本发明实施例的点云数据的解码方法。
在一个实施例中,所述计算机程序指令在被计算机或处理器运行时使计算机或处理器执行以下步骤:对点云数据的码流进行算术解码得到算术解码结果;以及对所述算术解码结果进行位置坐标与属性的混合解码,以得到所述点云数据各自的位置坐标和属性值;其中,所述混合解码包括:基于多叉树划分进行位置坐标解码得到多个叶子节点,其中,一个叶子节点的属性数据在所述码流中位于所述一个叶子节点的位置数据与另一个叶子节点的位置数据之间;对所述叶子节点中所含的点云数据进行位置解码和属性解码。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行以下步骤:基于所述码流确定在所述点云数据的编码过程中是否对所述点云数据的位置坐标进行了量化,如果是进行了量化,则对所述混合解码得到的位置坐标进行逆量化。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行以下步骤:在确定所述点云数据的编码过程中对所述点云数据的位置坐标进行了量化之后,确定所述点云数据的编码过程中是否对经量化得到相同位置坐标的点云数据的属性值进行了合并;如果确定进行了合并,则对任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的唯一属性值进行解码;如果确定未进行合并,则对任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行解码。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行以下步骤:基于所述码流确定在所述点云数据的编码过程中是否对包括不止一个点云数据的任一叶子节点中的点云数据的属性值进行了合并;如果确定进行了合并,则对所述任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的合并属性值进行解码;如果确定未进行合并,则对所述任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行解码。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行以下步骤:基于所述码流中的属性合并标志位确定在编码过程中是否对点云数据的属性值进行了合并,并基于所述确定的结果对所述叶子节点进行位置解码和属性解码。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时使计算机或处理器执行的对所述点云数据的属性值进行解码,包括:对所述点云数据的属性值进行二值化解码。
在本发明的一个实施例中,所述计算机程序指令在被计算机或处理器运行时使计算机或处理器执行的所述对所述点云数据的属性值进行二值化解码,包括:对所述点云数据的属性值进行定长解码、截断莱斯解码或者指数哥伦布解码。
以上示例性地描述了根据本发明实施例的点云数据的编解码方法、系统以及存储介质采集点云数据的采集设备。基于上面的描述,根据本发明实施例的点云数据的编解码方法、系统和存储介质结合位置坐标编码的特点以及属性编码的特点,采用位置坐标编码与属性编码相混合的编码方案,使得在需要使用部分点云数据时,无需解码全部点云数据的位置坐标后再进行属性值解码,从而提高解码效率。
尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本发明的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一些模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。
Claims (20)
1.一种点云数据的编码方法,其特征在于,所述编码方法包括:
对输入的点云数据进行位置坐标与属性的混合编码;以及
对所述混合编码的结果进行算术编码得到所述点云数据的码流;
其中,所述混合编码包括:对所述点云数据所在的空间进行多叉树划分得到多个叶子节点,并对叶子节点中的点云数据进行位置编码和属性编码;其中,一个叶子节点的属性数据在所述码流中位于所述一个叶子节点的位置数据与另一个叶子节点的位置数据之间。
2.根据权利要求1所述的编码方法,其特征在于,所述编码方法还包括:
在对所述输入的点云数据进行位置坐标与属性的混合编码之前,对所述输入的点云数据的位置坐标进行量化,并基于经量化的位置坐标进行所述混合编码。
3.根据权利要求2所述的编码方法,其特征在于,所述编码方法还包括:
在对所述输入的点云数据的位置坐标进行量化之后,对经量化得到相同位置坐标的点云数据的属性值进行合并;并且
对任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的唯一属性值进行编码。
4.根据权利要求2所述的编码方法,其特征在于,所述编码方法还包括:
在对所述输入的点云数据的位置坐标进行量化之后,对经量化得到相同位置坐标的点云数据的属性值不进行合并;并且
对任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行编码。
5.根据权利要求1所述的编码方法,其特征在于,所述编码方法还包括:
当任一叶子节点中包括不止一个点云数据时,将所述任一叶子节点中的点云数据的属性值进行合并;并且
对所述任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的合并属性值进行编码。
6.根据权利要求1所述的编码方法,其特征在于,所述编码方法还包括:
当任一叶子节点中包括不止一个点云数据时,不将所述任一叶子节点中的点云数据的属性值进行合并;并且
对所述任一叶子节点的点云数据进行位置编码和属性编码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行编码。
7.根据权利要求3-6中的任一项所述的编码方法,其特征在于,所述码流中包括属性合并标志位,所述属性合并标志位的取值表示在编码过程中是否对点云数据的属性值进行了合并。
8.根据权利要求1-7中的任一项所述的编码方法,其特征在于,对所述点云数据的属性值进行编码,包括:
对所述点云数据的属性值进行二值化编码。
9.根据权利要求8所述的编码方法,其特征在于,所述对所述点云数据的属性值进行二值化编码,包括:
对所述点云数据的属性值进行定长编码、截断莱斯编码或者指数哥伦布编码。
10.一种点云数据的解码方法,其特征在于,所述解码方法包括:
对点云数据的码流进行算术解码得到算术解码结果;以及
对所述算术解码结果进行位置坐标与属性的混合解码,以得到所述点云数据各自的位置坐标和属性值;
其中,所述混合解码包括:基于多叉树划分进行位置坐标解码得到多个叶子节点,其中,一个叶子节点的属性数据在所述码流中位于所述一个叶子节点的位置数据与另一个叶子节点的位置数据之间;对所述叶子节点中所含的点云数据进行位置解码和属性解码。
11.根据权利要求10所述的解码方法,其特征在于,所述解码方法还包括:
基于所述码流确定在所述点云数据的编码过程中是否对所述点云数据的位置坐标进行了量化,如果是进行了量化,则对所述混合解码得到的位置坐标进行逆量化。
12.根据权利要求11所述的解码方法,其特征在于,所述解码方法还包括:
在确定所述点云数据的编码过程中对所述点云数据的位置坐标进行了量化之后,确定所述点云数据的编码过程中是否对经量化得到相同位置坐标的点云数据的属性值进行了合并;
如果确定进行了合并,则对任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的唯一属性值进行解码;
如果确定未进行合并,则对任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行解码。
13.根据权利要求10所述的解码方法,其特征在于,所述解码方法还包括:
基于所述码流确定在所述点云数据的编码过程中是否对包括不止一个点云数据的任一叶子节点中的点云数据的属性值进行了合并;
如果确定进行了合并,则对所述任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的合并属性值进行解码;
如果确定未进行合并,则对所述任一叶子节点的点云数据进行位置解码和属性解码包括:对所述任一叶子节点中的点云数据的个数和属性值分别进行解码。
14.根据权利要求10至13任一项所述的解码方法,其特征在于,所述解码方法还包括:
基于所述码流中的属性合并标志位确定在编码过程中是否对点云数据的属性值进行了合并,并基于所述确定的结果对所述叶子节点进行位置解码和属性解码。
15.根据权利要求10-14中的任一项所述的解码方法,其特征在于,对所述点云数据的属性值进行解码,包括:
对所述点云数据的属性值进行二值化解码。
16.根据权利要求15所述的解码方法,其特征在于,所述对所述点云数据的属性值进行二值化解码,包括:
对所述点云数据的属性值进行定长解码、截断莱斯解码或者指数哥伦布解码。
17.一种点云数据的编码系统,其特征在于,所述编码系统包括存储装置和处理器,所述存储装置上存储有由所述处理器运行的计算机程序,所述计算机程序在被所述处理器运行时执行如权利要求1-9中的任一项所述的点云数据的编码方法。
18.一种点云数据的解码系统,其特征在于,所述解码系统包括存储装置和处理器,所述存储装置上存储有由所述处理器运行的计算机程序,所述计算机程序在被所述处理器运行时执行如权利要求10-16中的任一项所述的点云数据的解码方法。
19.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序在运行时执行如权利要求1-9中的任一项所述的点云数据的编码方法。
20.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序在运行时执行如权利要求10-16中的任一项所述的点云数据的解码方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/105764 WO2021046817A1 (zh) | 2019-09-12 | 2019-09-12 | 点云数据的编解码方法、系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113906681A CN113906681A (zh) | 2022-01-07 |
CN113906681B true CN113906681B (zh) | 2022-10-18 |
Family
ID=74866941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980096972.6A Active CN113906681B (zh) | 2019-09-12 | 2019-09-12 | 点云数据的编解码方法、系统和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113906681B (zh) |
WO (1) | WO2021046817A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220210480A1 (en) * | 2020-12-29 | 2022-06-30 | Qualcomm Incorporated | Hybrid-tree coding for inter and intra prediction for geometry coding |
WO2023061420A1 (en) * | 2021-10-13 | 2023-04-20 | Beijing Bytedance Network Technology Co., Ltd. | Method, apparatus, and medium for point cloud coding |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750854A (zh) * | 2015-04-16 | 2015-07-01 | 武汉海达数云技术有限公司 | 一种海量三维激光点云压缩存储及快速加载显示方法 |
CN108009979A (zh) * | 2017-12-15 | 2018-05-08 | 湖北大学 | 基于时空数据融合的三维点云压缩存储方法及系统 |
WO2018103452A1 (zh) * | 2016-12-06 | 2018-06-14 | 腾讯科技(深圳)有限公司 | 信息位图的编码、解码方法、装置及存储介质 |
CN108804714A (zh) * | 2018-06-30 | 2018-11-13 | 浙江同创空间技术有限公司 | 点云数据存储方法及装置 |
WO2019111004A1 (en) * | 2017-12-06 | 2019-06-13 | V-Nova International Ltd | Methods and apparatuses for encoding and decoding a bytestream |
WO2019147816A1 (en) * | 2018-01-26 | 2019-08-01 | Sony Corporation | Hybrid projection-based point cloud texture coding |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776111B2 (en) * | 2017-07-12 | 2020-09-15 | Topcon Positioning Systems, Inc. | Point cloud data method and apparatus |
US10861196B2 (en) * | 2017-09-14 | 2020-12-08 | Apple Inc. | Point cloud compression |
US10692249B2 (en) * | 2017-10-12 | 2020-06-23 | Sony Corporation | Octree traversal for anchor point cloud compression |
-
2019
- 2019-09-12 WO PCT/CN2019/105764 patent/WO2021046817A1/zh active Application Filing
- 2019-09-12 CN CN201980096972.6A patent/CN113906681B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750854A (zh) * | 2015-04-16 | 2015-07-01 | 武汉海达数云技术有限公司 | 一种海量三维激光点云压缩存储及快速加载显示方法 |
WO2018103452A1 (zh) * | 2016-12-06 | 2018-06-14 | 腾讯科技(深圳)有限公司 | 信息位图的编码、解码方法、装置及存储介质 |
WO2019111004A1 (en) * | 2017-12-06 | 2019-06-13 | V-Nova International Ltd | Methods and apparatuses for encoding and decoding a bytestream |
CN108009979A (zh) * | 2017-12-15 | 2018-05-08 | 湖北大学 | 基于时空数据融合的三维点云压缩存储方法及系统 |
WO2019147816A1 (en) * | 2018-01-26 | 2019-08-01 | Sony Corporation | Hybrid projection-based point cloud texture coding |
CN108804714A (zh) * | 2018-06-30 | 2018-11-13 | 浙江同创空间技术有限公司 | 点云数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113906681A (zh) | 2022-01-07 |
WO2021046817A1 (zh) | 2021-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111699683B (zh) | 一种点云编码方法、点云解码方法及相关设备 | |
CN111699697B (zh) | 一种用于点云处理、解码的方法、设备及存储介质 | |
CN112565794B (zh) | 一种点云孤立点编码、解码方法及装置 | |
KR101048368B1 (ko) | 연결정보 분석을 통한 3차원 메쉬 모델의 부호화 장치 및 방법 | |
CN114363634A (zh) | 变换方法、逆变换方法、编码器、解码器及存储介质 | |
CN113906681B (zh) | 点云数据的编解码方法、系统和存储介质 | |
WO2021196029A1 (zh) | 一种用于点云编码、解码的方法和设备 | |
CN112449754A (zh) | 一种数据编码、数据解码方法、设备及存储介质 | |
JP2011528452A (ja) | 共有頂点情報を用いた低複雑度3次元メッシュ圧縮装置及び方法 | |
CN113632492A (zh) | 一种用于点云处理、解码的方法、设备及存储介质 | |
US7965206B2 (en) | Apparatus and method of lossless coding and decoding | |
CN112384950A (zh) | 点云的编解码方法及装置 | |
CN112514397A (zh) | 点云的编解码方法和装置 | |
CN113678460B (zh) | 一种数据编码、数据解码方法、设备及存储介质 | |
CN112740707A (zh) | 点云的编解码方法和装置 | |
CN116261856A (zh) | 一种点云分层方法及解码器、编码器、存储介质 | |
CN115190300A (zh) | 属性信息的预测方法、编码器、解码器、及存储介质 | |
CN115102934A (zh) | 点云数据的解码方法、编码方法、装置、设备及存储介质 | |
KR20090110776A (ko) | 저복잡도 3차원 메쉬 압축 장치 및 방법 | |
CN114730474A (zh) | 点云处理方法、编码器、解码器及存储介质 | |
WO2020248562A1 (zh) | 一种用于点云处理、解码的方法、设备及存储介质 | |
WO2020248144A1 (zh) | 三维数据点的编解码方法和装置 | |
CN115299057A (zh) | 点云编码方法和解码方法、编码器、解码器、及存储介质 | |
WO2024074123A1 (en) | Method, apparatus, and medium for point cloud coding | |
CN114868153A (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 |