一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

划分方法、编码器、解码器及计算机存储介质与流程

2022-10-13 07:37:22 来源:中国专利 TAG:

划分方法、编码器、解码器及计算机存储介质
1.本技术是申请日为2020年01月06日,申请号为2020800805926,发明名称为“划分方法、编码器、解码器及计算机存储介质”的申请的分案申请。
技术领域
2.本技术实施例涉及视频编解码技术领域中细节层次(level of detail,lod)的划分技术,尤其涉及一种划分方法、编码器、解码器及计算机存储介质。


背景技术:

3.在基于几何的点云压缩(geometry-based point cloud compression,g-pcc)编码器框架中,点云的几何信息和每个点云所对应的属性信息是分开进行编码的。几何编码完成后,会对几何信息进行重建,而属性信息的编码将依赖于重建的几何信息。其中,属性信息编码主要针对颜色信息的编码,而在颜色信息编码中,主要有两种变换方法,一是基于距离进行lod划分的提升变换,另一是直接进行的区域自适应分层变换(region adaptive hierarchal transform,raht),这两种方法都会将颜色信息从空间域转换到频域,通过变换得到高频系数和低频系数,最后对系数进行量化并编码,生成二进制码流。
4.目前,针对点云基于距离进行lod划分时,一方面计算复杂度较高,另一方面由于考虑因素不全面而使得搜索得到的邻居节点不够精确,导致预测残差较大,增加了编码的比特数,从而降低了编码效率。


技术实现要素:

5.本技术实施例提供一种划分方法、编码器、解码器及计算机存储介质,能够提高邻居节点预测属性的精确度,可以有效降低编码比特开销,从而提高编解码效率。
6.本技术实施例的技术方案可以如下实现:
7.第一方面,本技术实施例提供了一种划分方法,应用于编码器或解码器,该方法包括:
8.基于待划分点云,计算所述待划分点云中点的莫顿码;
9.确定所述待划分点云中第i个细节层次lod层对应的右移位数ni;其中,i为大于或等于0的整数,ni为大于0的整数;
10.判断i是否小于或等于m-1;其中,m表示lod划分的预设层数;
11.当i小于或等于m-1时,针对第i个lod层,对所述待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;
12.确定第i个lod层中当前节点对应的父节点的莫顿码;
13.根据所确定的父节点的莫顿码,在所述预设存储区内搜索所述父节点对应的邻居节点;
14.将所述当前节点划分到第i个lod层,将所述邻居节点划分到第i 1个lod层;
15.根据i 1对i进行更新,返回判断i是否小于或等于m-1;
16.当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层。
17.第二方面,本技术实施例提供了一种编码器,该编码器包括第一计算单元、第一确定单元、第一判断单元、第一右移单元、第一搜索单元和第一划分单元,其中,
18.第一计算单元,配置为基于待划分点云,计算所述待划分点云中点的莫顿码;
19.第一确定单元,配置为确定所述待划分点云中第i个细节层次lod层对应的右移位数ni;其中,i为大于或等于0的整数,ni为大于0的整数;
20.第一判断单元,配置为判断i是否小于或等于m-1;其中,m表示lod划分的预设层数;
21.第一右移单元,配置为当i小于或等于m-1时,针对第i个lod层,对所述待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;
22.第一确定单元,还配置为确定第i个lod层中当前节点对应的父节点的莫顿码;
23.第一搜索单元,配置为根据所确定的父节点的莫顿码,在所述预设存储区内搜索所述父节点对应的邻居节点;
24.第一划分单元,配置为将所述当前节点划分到第i个lod层,将所述邻居节点划分到第i 1个lod层;
25.第一判断单元,还配置为根据i 1对i进行更新,返回判断i是否小于或等于m-1;
26.第一确定单元,还配置为当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层。
27.第三方面,本技术实施例提供了一种编码器,该编码器包括第一存储器和第一处理器,其中,
28.第一存储器,用于存储能够在第一处理器上运行的计算机程序;
29.第一处理器,用于在运行计算机程序时,执行如第一方面所述的方法。
30.第四方面,本技术实施例提供了一种解码器,该解码器包括第二计算单元、第二确定单元、第二判断单元、第二右移单元、第二搜索单元和第二划分单元,其中,
31.第二计算单元,配置为基于待划分点云,计算所述待划分点云中点的莫顿码;
32.第二确定单元,配置为确定所述待划分点云中第i个细节层次lod层对应的右移位数ni;其中,i为大于或等于0的整数,ni为大于0的整数;
33.第二判断单元,配置为判断i是否小于或等于m-1;其中,m表示lod划分的预设层数;
34.第二右移单元,配置为当i小于或等于m-1时,针对第i个lod层,对所述待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;
35.第二确定单元,还配置为确定第i个lod层中当前节点对应的父节点的莫顿码;
36.第二搜索单元,配置为根据所确定的父节点的莫顿码,在所述预设存储区内搜索所述父节点对应的邻居节点;
37.第二划分单元,配置为将所述当前节点划分到第i个lod层,将所述邻居节点划分到第i 1个lod层;
38.第二判断单元,还配置为根据i 1对i进行更新,返回判断i是否小于或等于m-1;
39.第二确定单元,还配置为当i大于m-1时,将第0个lod层至第m-1个lod层确定为所
述待划分点云对应划分的lod层。
40.第五方面,本技术实施例提供了一种解码器,该解码器包括第二存储器和第二处理器,其中,
41.第二存储器,用于存储能够在第二处理器上运行的计算机程序;
42.第二处理器,用于在运行计算机程序时,执行如第一方面所述的方法。
43.第六方面,本技术实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,计算机程序被第一处理器执行时实现如第一方面所述的方法、或者被第二处理器执行时实现如第一方面所述的方法。
44.本技术实施例提供了一种划分方法、编码器、解码器及计算机存储介质,通过基于待划分点云,计算待划分点云中点的莫顿码;确定待划分点云中第i个细节层次lod层对应的右移位数ni,i为大于或等于0的整数,ni为大于0的整数;判断i是否小于或等于m-1,m表示lod划分的预设层数;当i小于或等于m-1时,针对第i个lod层,对待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;确定第i个lod层中当前节点对应的父节点的莫顿码;根据所确定的父节点的莫顿码,在预设存储区内搜索父节点对应的邻居节点;将当前节点划分到第i个lod层,将邻居节点划分到第i 1个lod层;根据i 1对i进行更新,返回判断i是否小于或等于m-1;当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层;这样,本技术的技术方案不再计算当前节点与邻居节点之间的空间距离,而是每次划分lod层时,利用莫顿码进行搜索当前节点对应父节点的邻居节点,并且将当前节点作为采样点来预测邻居节点,从而不仅降低了计算复杂度,而且由于考虑了点云的空间分布特性,还提升了邻居节点预测属性的精确度,提高了属性部分的重建质量,可以有效降低编码比特开销,进而提高了编解码效率。
附图说明
45.图1为相关技术方案提供的一种g-pcc编码的流程框图;
46.图2为相关技术方案提供的一种g-pcc解码的流程框图;
47.图3a为相关技术方案提供的一种lod生成过程的结构示意图;
48.图3b为相关技术方案提供的另一种lod生成过程的结构示意图;
49.图4为本技术实施例提供的一种划分方法的流程示意图;
50.图5为本技术实施例提供的一种确定初始右移位数的流程示意图;
51.图6为本技术实施例提供的一种当前节点与邻居节点的空间关系示意图;
52.图7为本技术实施例提供的一种划分方法的详细流程示意图;
53.图8为本技术实施例提供的一种编码器的组成结构示意图;
54.图9为本技术实施例提供的一种编码器的具体硬件结构示意图;
55.图10为本技术实施例提供的一种解码器的组成结构示意图;
56.图11为本技术实施例提供的一种解码器的具体硬件结构示意图。
具体实施方式
57.为了能够更加详尽地了解本技术实施例的特点与技术内容,下面结合附图对本技术实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本技术实施例。
58.在点云g-pcc编码器框架中,将输入三维图像模型的点云进行slice划分后,对每一个slice进行独立编码。
59.参见图1,其示出了相关技术方案提供的一种g-pcc编码的流程框图。如图1所示的g-pcc编码的流程框图中,应用于点云编码器(encoder),针对待编码的点云数据,首先通过slice划分,将点云数据划分为多个slice。在每一个slice中,点云的几何信息和每个点云所对应的属性信息是分开进行编码的。在几何编码过程中,首先对几何信息进行坐标转换,使点云全都包含在一个bounding box(包围盒)中,然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点云的几何信息相同,于是在基于参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。接着对bounding box进行八叉树划分。在基于八叉树的几何信息编码流程中,将包围盒八等分为8个子立方体,对非空的(包含点云中的点)的子立方体继续进行八等分,直到划分得到的叶子结点为1
×1×
1的单位立方体时停止划分,对叶子结点中的点进行算术编码,生成二进制的几何比特流,即几何码流。在基于三角面片集(triangle soup,trisoup)的几何信息编码过程中,同样也要先进行八叉树划分,但区别于基于八叉树的几何信息编码,该trisoup不需要将点云逐级划分到边长为1
×1×
1的单位立方体,而是划分到block(子块)边长为w时停止划分,基于每个block中点云的分布所形成的表面,得到该表面与block的十二条边所产生的至多十二个vertex(交点),对vertex进行算术编码(基于交点进行表面拟合),生成二进制的几何比特流,即几何码流。vertex还用于在几何重建的过程的实现,而重建的集合信息在对点云的属性编码时使用。
60.几何编码完成后,对几何信息进行重建。目前,属性编码主要针对颜色信息进行。在属性编码过程中,首先将颜色信息(即属性信息)从rgb颜色空间转换到yuv颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。在颜色信息编码过程中,主要有两种变换方法,一是依赖于细节层次(level of detail,lod)划分的基于距离的提升变换,目前划分lod主要分为基于距离进行划分lod(主要针对category1序列)和基于固定采样率进行划分lod(主要针对category3序列)等两种方式;二是直接进行区域自适应分层变换(region adaptive hierarchal transform,raht)的变换。其中,这两种方法都会将颜色信息从空间域转换到频域,通过变换得到高频系数和低频系数,最后对系数进行量化(即量化系数),最后,将经过八叉树划分及表面拟合的几何编码数据与量化系数处理属性编码数据进行slice合成后,依次编码每个block的vertex坐标(即算数编码),生成二进制的属性比特流,即属性码流。
61.参见图2,其示出了相关技术方案提供的一种g-pcc解码的流程框图。如图2所示的g-pcc解码的流程框图中,应用于点云解码器(decoder),针对所获取的二进制码流,首先对二进制码流中的几何比特流和属性比特流分别进行独立解码。在对几何比特流的解码时,通过算术解码-八叉树合成-表面拟合-重建几何-逆坐标转换,得到点云的几何信息;在对属性比特流的解码时,通过算术解码-反量化-基于lod的提升逆变换或者基于raht的逆变换-逆颜色转换,得到点云的属性信息,基于几何信息和属性信息还原待编码的点云数据的三维图像模型。
62.图1所示的g-pcc编码的流程框图中,lod划分主要用于点云属性变换中predicting(预测)和lifting(提升)两种方式。下面将对基于距离进行lod划分进行详细介
绍。
63.具体来讲,lod划分是通过一组距离阈值(用d
l
表示,l=0,1,...,n-1),将输入的点云划分为不同的细化级别(用r
l
表示,l=0,1,...,n-1),即将点云中的点划分到不同的集合r
l
中。其中,该距离阈值可以是自定义的值。距离阈值d
l
需要满足两个条件:d
l
<d
l-1
以及d
l-1
=0。
64.lod划分的过程是在点云几何重建之后,这时候点云的几何坐标信息是可以直接获取的。划分lod的过程可以同时应用在点云编码器和点云解码器,具体过程如下:
65.(1)、将点云中所有的点置于“未访问过”的点集,并且初始化“访问过”的点集(用v表示)为空集;
66.(2)、通过不断迭代来划分lod层,第l次迭代所对应的细化级别r
l
生成过程如下所示:
67.a、通过迭代遍历点云中所有的点;
68.b、如果当前的点已经遍历过,则忽略该点;
69.c、否则,分别计算该点到集合v中每个点的距离,记录其中最近的距离为d;
70.d、如果距离d大于或等于阈值d
l
,则将该点添加到细化级别r
l
和集合v中;
71.e、重复a至d的过程,直至点云中所有的点全部被遍历过;
72.(3)、针对第l个lod集合,即lodl是通过将细化级别r0、r1、

、r
l
中的点进行合并得到;
73.(4)、通过重复(1)至(3)的过程进行不断地迭代,直至所有的lod层生成或者所有的点都被遍历过。
74.参见图3a,其示出了相关技术方案提供的一种lod生成过程的结构示意图。在图3a中,点云中包括有p0、p1、p2、p3、p4、p5、p6、p7、p8、p910个点,基于距离阈值进行lod划分,如此,lod0集合中顺序包括有p0、p5、p4、p2,lod1集合中顺序包括有p0、p5、p4、p2、p1、p6、p3,lod2集合中顺序包括有p0、p5、p4、p2、p1、p6、p3、p9、p8、p7。
75.在相关技术方案中,提出了基于莫顿码进行lod划分的方案。与原始遍历搜索全部的点进行lod划分的方案相比,基于莫顿码进行lod划分的方案可以降低计算复杂度。
76.具体来说,莫顿编码也叫z-order code,因为其编码顺序按照空间z序。首先以变量pi表示输入点云中的点,变量mi为与pi相关的莫顿码,其中,i=1,2,...,n。计算莫顿码的具体过程描述如下所示,对于每一个分量用d比特二进制数表示的三维坐标,其三个坐标分量的表示通过以下实现:
[0077][0078]
其中,x
l
,y
l
,z
l
∈{0,1}分别是x,y,z的最高位(l=1)到最低位(l=d)对应的二进制数值。莫顿码m是对x,y,z从最高位开始,依次交叉排列x
l
,y
l
,z
l
到最低位,m的计算公式如下所示:
[0079][0080]
其中,m
l'
∈{0,1}分别是m的最高位(l'=1)到最低位(l'=3d)的值。在得到点云中
每个点的莫顿码m后,将点云中的点按照莫顿码由小到大的顺序进行排列。
[0081]
进一步地,d0(初始距离的阈值)和ρ(相邻lod层划分时的距离阈值比)分别为用户自定义的初始参数,并且ρ》1。假定i表示所有点的索引,在第k次迭代时,lodk中的点会从lod0到第lodk-1层中查找最近邻居,即距离最近的点;k=1,2,...,n-1。这里,n为lod划分的总层数;而且当k=0时,第0次迭代时,lod0中的点会直接在lod0中查找最近邻居。具体过程如下:
[0082]
(1)、初始化划分距离阈值为d=d0;
[0083]
(2)、在第k次迭代时,集合l(k)保存属于第k层lod中的点,集合o(k)保存比lodk层更高细化级别的点集。其中,l(k)和o(k)的计算过程如下:
[0084]
首先,o(k)和l(k)均被初始化为空集;
[0085]
其次,每一次迭代按照集合i中所保存点的索引顺序进行遍历。具体地,每一次遍历都会计算当前点到集合o(k)中一定范围内所有点的几何距离,而且基于i中当前点所对应的莫顿码,在集合o(k)中进行查找第一个大于当前点所对应莫顿码点的索引,然后在该索引的一个搜索范围sr1内进行查找(这里,sr1表示基于莫顿码的搜索范围,一般取值为8,16,64);如果在该范围内查找到与当前点的距离小于阈值d
l
的点,就将当前点加入到集合l(k)中,否则,则将当前点加入到集合o(k)中;
[0086]
(3)、在每一次迭代的过程中,集合l(k)和o(k)分别进行计算,并且o(k)中的点会被用来预测集合l(k)中点。假定集合r(k)=l(k)\l(k-1),即r(k)表示lod(k-1)与lod(k)集合相差部分的点集。针对位于集合r(k)中的点会在集合o(k)中进行查找最近的h个预测邻居(一般来说,h可以设置为3)。查找最近邻居的具体过程如下:
[0087]
a、对于集合r(k)中的点pi,该点所对应的莫顿码为mi;
[0088]
b、在集合o(k)查找第一个大于当前点pi所对应的莫顿码mi的点的索引j;
[0089]
c、基于索引j在集合o(k)中的一个搜索范围[j-sr2,j sr2]内查找当前点pi的最近邻居(这里,sr2表示一个搜索范围,一般取值为8、16、32、64);
[0090]
(4)、通过重复(1)至(3)的过程不断地迭代,直至集合i中所有的点全部被遍历。
[0091]
参见图3b,其示出了相关技术方案提供的另一种lod生成过程的结构示意图。在图3b中,点云中包括有p0、p1、p2、p3、p4、p5、p6、p7、p8、p910个点,基于莫顿码进行lod划分,首先按照莫顿码的升序进行排列,这10个点的顺序为p4、p1、p9、p5、p0、p6、p8、p2、p7、p3;然后进行最近邻居的查找,如此,lod0集合中仍然顺序包括有p0、p5、p4、p2,lod1集合中仍然顺序包括有p0、p5、p4、p2、p1、p6、p3,lod2集合中仍然顺序包括有p0、p5、p4、p2、p1、p6、p3、p9、p8、p7。
[0092]
然而,目前的解决方案在点云属性变换predicting和lifting之前,首先会基于不同的距离阈值进行lod划分。具体地,现有的lod的划分每次都会计算所有点之间的距离,当该点与所有点之间的距离均小于距离阈值时,可以将该点加入到当前的lod层,否则,将该点放到下一层进行lod划分,依照不同的阈值范围进行不断地迭代,直至所有的点都被遍历过或者所有的lod层被划分完成,导致计算复杂度较高。另外,由于不同点云具有不同的空间分布,使得不同点云的物体密度不同,在进行基于距离阈值进行lod划分时,没有考虑点云的空间分布特性而使得搜索得到的邻居节点不够精确,最终导致基于邻居节点预测得到的预测残差较大,使得属性信息仍然存在较大冗余,增加了编码的比特数,从而不能保证达
到最佳编解码效率。
[0093]
本技术实施例提供了一种划分方法,该方法可以应用于编码器(也可以称为点云编码器)或者解码器(也可以称为点云解码器)。其中,基于待划分点云,计算待划分点云中点的莫顿码;确定待划分点云中第i个细节层次lod层对应的右移位数ni,i为大于或等于0的整数,ni为大于0的整数;判断i是否小于或等于m-1,m表示lod划分的预设层数;当i小于或等于m-1时,针对第i个lod层,对待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;确定第i个lod层中当前节点对应的父节点的莫顿码;根据所确定的父节点的莫顿码,在预设存储区内搜索父节点对应的邻居节点;将当前节点划分到第i个lod层,将邻居节点划分到第i 1个lod层;根据i 1对i进行更新,返回判断i是否小于或等于m-1;当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层;这样,本技术的技术方案不再计算当前节点与邻居节点之间的空间距离,而是每次划分lod层时,利用莫顿码进行搜索当前节点对应父节点的邻居节点,并且将当前节点作为采样点来预测邻居节点,从而不仅降低了计算复杂度,而且由于考虑了点云的空间分布特性,还提升了邻居节点预测属性的精确度,提高了属性部分的重建质量,可以有效降低编码比特开销,进而提高了编解码效率。
[0094]
下面将结合附图对本技术各实施例进行详细说明。
[0095]
参见图4,其示出了本技术实施例提供的一种划分方法的流程示意图。如图4所示,应用于编码器或者解码器,该方法可以包括:
[0096]
s401:基于待划分点云,计算所述待划分点云中点的莫顿码;
[0097]
需要说明的是,在点云中,点可以是点云中的所有点,也可以是点云中的部分点,这些点在空间上相对集中。
[0098]
还需要说明的是,本技术实施例提供的划分方法是针对lifting和predicting属性变换中lod的生成过程进行改进;也就是说,在进行lifting或者predicting变换之前,需要先使用该划分方法进行lod层的划分。具体地,该划分方法可以应用于图1所示的g-pcc编码的流程框图中生成lod部分,也可以应用于图2所示的g-pcc解码的流程框图中生成lod部分,还可以同时应用于图1所示的g-pcc编码的流程框图中生成lod部分和图2所示的g-pcc解码的流程框图中生成lod部分,本技术实施例不作具体限定。
[0099]
这样,在获取到待划分点云之后,先计算待划分点云中点的莫顿码,便于在后续的迭代运算中,可以利用莫顿码可以搜索当前节点对应父节点的邻居节点,如此有利于在进行lod层划分时利用当前节点作为采样点对邻居节点的预测。
[0100]
s402:确定所述待划分点云中第i个lod层对应的右移位数ni;
[0101]
需要说明的是,i为大于或等于0的整数,ni为大于0的整数。为了将待划分点云划分成多个lod层,这里,采用了迭代方法进行划分。其中,可以预先设置待划分点云进行lod划分的层数,通常而言,lod划分的预设层数可以用m表示,m为大于0的整数。
[0102]
这样,在确定出待划分点云中点的莫顿码之后,还可以对待划分点云中点的莫顿码进行排序,用以确定出每一个lod层对应的右移位数。因此,在一些实施例中,该方法还可以包括:
[0103]
按照预设排序策略对所述待划分点云中点的莫顿码进行排序,将排序后的莫顿码确定为所述待划分点云中点的莫顿码。
[0104]
需要说明的是,预设排序策略可以为从小到大的升序策略,也可以为从大到小的降序策略,还可以为其他排序策略(比如随机排序策略等);优选地,预设排序策略为升序策略。也就是说,对待划分点云中点的莫顿码按照从小到大的升序进行排序,并且将排序后的莫顿码确定为待划分点云中点的莫顿码。
[0105]
这样,在将莫顿码进行排序之后,可以根据排序后的莫顿码来确定待划分点云中点的莫顿码的初始右移位数;其中,初始右移位数表示待划分点云中点的莫顿码在第0个lod层对应的右移位数(可以用n0表示)。具体地,在一些实施例中,当i等于0时,对于s402来说,所述确定所述待划分点云中第i个lod层对应的右移位数ni,可以包括:
[0106]
对排序后的莫顿码进行采样,得到k个采样点的莫顿码;其中,k为大于0的整数;
[0107]
对所述k个采样点的莫顿码进行右移处理,得到莫顿码右移后对应的k个采样点;
[0108]
判断所述莫顿码右移后对应的k个采样点是否具备平均每个采样点对应至少一个邻居节点;
[0109]
若所述莫顿码右移后对应的k个采样点不具备平均每个采样点对应至少一个邻居节点,则继续执行所述对所述k个采样点的莫顿码进行右移处理的步骤;
[0110]
若所述莫顿码右移后对应的k个采样点具备平均每个采样点对应至少一个邻居节点,则获得所述k个采样点的右移位数,将所述右移位数确定为所述待划分点云中点的莫顿码的初始右移位数;其中,所述初始右移位数表示所述待划分点云中点的莫顿码在第0个lod层对应的右移位数n0。
[0111]
也就是说,在初始划分lod层,即划分第0个lod层时,首先通过对排序后的莫顿码进行采样,以得到k个采样点的莫顿码;然后针对这k个采样点的莫顿码进行不断地右移处理,直至使得莫顿码右移后对应的k个采样点具备平均每个采样点对应至少一个邻居节点,最后将所得到的右移位数作为初始右移位数n0。具体地,针对该初始右移位数n0的获取过程,如图5所示,可以包括:
[0112]
s501:对排序后的莫顿码进行采样,得到k个采样点的莫顿码;
[0113]
s502:n=0;
[0114]
s503:n=n 3;
[0115]
s504:对k个采样点的莫顿码进行右移n位处理;
[0116]
s505:判断平均每个采样点对应的邻居节点数量是否大于1;
[0117]
s506:n0=n。
[0118]
需要说明的是,n为预设变量,n的初始值设置为0,然后每次利用n 3来更新n的值,以便后续执行步骤s504,即对k个采样点的莫顿码进行右移n位处理。
[0119]
另外,对于步骤s505来说,如果判断结果为是,那么执行步骤s506,即可以获得初始右移位数n0;如果判断结果为否,那么需要返回执行步骤s503,直至步骤s505的判断结果为是,以最终获得初始右移位数n0。
[0120]
还需要说明的是,k为大于0的整数,比如k的取值可以设置为100,但是本技术实施例不作具体限定。也就是说,在确定初始右移位数n0的过程中,k的取值一般是随机设置的;但是k的取值方式,还可以包括:对待划分点云进行特性分析,确定k的取值。
[0121]
这里,k的取值通常与待划分点云的特性信息有关,比如待划分点云中点的数量、空间密度等;如此,可以将待划分点云进行特性分析,以确定出k的取值,进而确定出初始右
移位数n0。由于k的取值是结合整个待划分点云的特性得到的,从而能够提升编解码效率。
[0122]
可以理解地,在将莫顿码进行排序之后,还可以根据最大莫顿码和最小莫顿码之间的差值进行不断地右移处理来确定初始右移位数n0。具体地,在一些实施例中,当i等于0时,对于s402来说,所述确定所述待划分点云中第i个lod层对应的右移位数ni,可以包括:
[0123]
基于排序后的莫顿码,确定最大莫顿码和最小莫顿码;
[0124]
计算所述最大莫顿码和所述最小莫顿码之间的差值;
[0125]
对所述差值进行右移处理,当右移后的差值满足预设范围时,获得所述差值的右移位数;
[0126]
将所述右移位数确定为所述待划分点云的初始右移位数。
[0127]
需要说明的是,由于莫顿码是按照从小到大的升序进行排序的,根据排序后的莫顿码,可以确定出最大莫顿码和最小莫顿码,进而计算得到最大莫顿码和最小莫顿码之间的差值(可以用delta表示)。
[0128]
通过对delta比特进行右移,当delta比特右移n位之后,得到移位后的delta,可以使得移位后的delta满足预设范围,这时候可以将n确定为初始右移位数n0。其中,delta比特右移n位,可以看作是最大莫顿码比特右移n位,最小莫顿码比特右移n位,然后两者进行差值计算,所得到的差值即delta比特右移n位。
[0129]
还需要说明的是,预设范围表示平均每个采样点对应的邻居节点数量是否大于1。这样,当右移n位后的差值满足预设范围时,可以将这时候的右移位数n确定为初始右移位数n0,从而能够提升编解码效率。
[0130]
进一步地,在确定出初始右移位数n0,即确定出待划分点云中第0个lod层对应的右移位数之后,还可以根据初始右移位数n0,确定出待划分点云中第i个lod层对应的右移位数ni,这里,i不等于0。具体地,在一些实施例中,当i等于0时,对于s402来说,所述确定所述待划分点云中第i个lod层对应的右移位数ni,可以包括:
[0131]
利用第一预设计算模型确定所述待划分点云中第i个lod层对应的右移位数ni。
[0132]
进一步地,在一些实施例中,所述利用第一预设计算模型确定所述待划分点云中第i个lod层对应的右移位数ni,可以包括:
[0133]
获取第i-1个lod层对应的右移位数n
i-1

[0134]
将第i-1个lod层对应的右移位数n
i-1
与预设值进行叠加,得到叠加值;
[0135]
将所述叠加值确定为第i个lod层对应的右移位数ni。
[0136]
也就是说,后续划分lod层时,第i个lod层对应的右移位数是根据上一个lod层(即第i-1个lod层)对应的右移位数来确定的。其中,第一预设计算模型如下所示,
[0137]
ni=n
i-1
m
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0138]
这里,ni表示当前lod层的右移位数,即第i个lod层对应的右移位数;n
i-1
表示上一个lod层的右移位数,即第i-1个lod层对应的右移位数;m为预设值。
[0139]
需要说明的是,预设值可以根据实际的点云空间情况进行具体设定;优选地,预设值可以等于3,但是本技术实施例不作限定。
[0140]
进一步地,在一些实施例中,该方法还可以包括:
[0141]
对所述待划分点云进行特性分析,确定所述预设值。
[0142]
这里,预设值通常与待划分点云的特性信息有关,比如待划分点云中点的数量、空
间密度等;如此,可以将待划分点云进行特性分析,以确定出预设值。其中,每一个lod层对应的预设值可以是相同的,每一个lod层对应的预设值也可以是不同的;比如,可以基于待划分点云的特性进行自适应调整不同的lod层在计算右移位数时所对应的预设值,从而能够更准确地查找不同区域对应的相邻区域,可以进一步提升预测性能。
[0143]
这样,在确定出每一个lod层对应的右移位数之后,可以根据每一个lod层对应的右移位数进行右移处理,以执行每一个lod层的划分。
[0144]
s403:判断i是否小于或等于m-1;
[0145]
需要说明的是,m表示lod划分的预设层数,这里,m为大于0的整数。当i小于或等于m-1时,这时候需要对每一个lod层进行划分,即执行步骤s404-s408;当i大于m-1时,这时候已经完成对每一个lod的划分,即执行步骤s409。
[0146]
s404:当i小于或等于m-1时,针对第i个lod层,对所述待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;
[0147]
s405:确定第i个lod层中当前节点对应的父节点的莫顿码;
[0148]
s406:根据所确定的父节点的莫顿码,在所述预设存储区内搜索所述父节点对应的邻居节点;
[0149]
s407:将所述当前节点划分到第i个lod层,将所述邻居节点划分到第i 1个lod层;
[0150]
需要说明的是,预设存储区可以用inputmorton表示。主要是在每一个lod层划分之前,对待划分点云中点的莫顿码进行右移处理后,将其存储到inputmorton中,以方便后续通过莫顿码查询对应的邻居节点。
[0151]
还需要说明的是,在通过莫顿码查询对应的邻居节点之前,还需要首先确定第i个lod层中当前节点对应的父节点的莫顿码。具体地,在一些实施例中,对于s405来说,所述确定第i个lod层中当前节点对应的父节点的莫顿码,可以包括:
[0152]
基于第i个lod层对应的右移位数ni,对所述第i个lod层中当前节点的莫顿码进行右移处理;
[0153]
将右移后的莫顿码确定为所述第i个lod层中当前节点对应的父节点的莫顿码。
[0154]
这里,当前节点的莫顿码用childrenmorton表示,父节点的莫顿码用parentmorton表示,那么两者之间的对应关系如下所示,
[0155]
parentmorton=childrenmorton》》niꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0156]
也就是说,基于第i个lod层对应的右移位数ni,可以对第i个lod层中当前节点的莫顿码(用childrenmorton表示)进行右移ni位处理,然后将右移后的莫顿码确定为第i个lod层中当前节点对应的父节点的莫顿码(用parentmorton表示)。
[0157]
进一步地,在确定出当前节点对应的父节点的莫顿码之后,还可以根据父节点的莫顿码来搜索父节点对应的邻居节点。具体地,在一些实施例中,对于s406来说,所述根据所确定的父节点的莫顿码,在所述预设存储区内搜索所述父节点对应的邻居节点,可以包括:
[0158]
根据所确定的父节点的莫顿码,确定所述父节点对应的邻居节点的莫顿码;
[0159]
根据所述邻居节点的莫顿码,在所述预设存储区内搜索所述邻居节点的莫顿码对应的邻居节点。
[0160]
进一步地,所述根据所确定的父节点的莫顿码,确定所述父节点对应的邻居节点
的莫顿码,可以包括:
[0161]
根据所确定的父节点的莫顿码,计算与所述父节点共面、共线以及共点的所有邻居节点的莫顿码,获得第一数量个邻居节点的莫顿码;
[0162]
将所述第一数量个邻居节点的莫顿码分别与当前节点的莫顿码进行比较;
[0163]
当邻居节点的莫顿码小于当前节点的莫顿码时,丢弃所述邻居节点的莫顿码;
[0164]
当邻居节点的莫顿码大于或等于当前节点的莫顿码时,保留所述邻居节点的莫顿码,以得到第二数量个邻居节点的莫顿码;其中,所述第二数量小于或等于所述第一数量;
[0165]
将所述第二数量个邻居节点的莫顿码确定为所述父节点对应的邻居节点的莫顿码。
[0166]
需要说明的是,在确定出父节点的莫顿码之后,可以计算与父节点共面(共6个邻居节点)、共线(共12个邻居节点)以及共点(共8个邻居节点)的莫顿码,再加上父节点自身的莫顿码,总共可以得到第一数量(比如27)个邻居节点的莫顿码。由于是按照莫顿码升序进行lod层划分的,这时候可以将27个邻居节点缩小到第二数量(比如20)个邻居节点;具体地,将27个邻居节点的莫顿码分别与当前节点的莫顿码进行比较,如果邻居节点的莫顿码小于当前节点的莫顿码,那么可以将该邻居节点的莫顿码进行丢弃,比如假设有7个邻居节点的莫顿码小于当前节点的莫顿码,那么将这7个邻居节点的莫顿码去掉,而剩余20个邻居节点的莫顿码大于或等于当前节点的莫顿码,也就只保留这剩余20个邻居节点的莫顿码;这里,剩余的20个邻居节点可以包括有:当前节点对应的父节点、共面的邻居节点(3个邻居节点)、共线的邻居节点(9个邻居节点)以及共点的邻居节点(7个邻居节点)。
[0167]
示例性地,参见图6,其示出了本技术实施例提供的一种当前节点与邻居节点的空间关系示意图。在图6中,加粗标记的空间块为当前节点;从图6可以看出,与该空间块共面存在有6个邻居节点,与该空间块共线存在有12个邻居节点,与该空间块共点存在有8个邻居节点。如此,根据所确定的父节点的莫顿码,可以确定出父节点对应的邻居节点的莫顿码;可以利用邻居节点的莫顿码在预设存储区(inputmorton)内搜索对应的邻居节点。
[0168]
这样,针对第i个lod层,在搜索得到邻居节点之后,可以将当前节点划分到第i个lod层,即放入集合o(k)中,而将邻居节点划分到第i 1个lod层,即放入集合l(k)中;这里,k为大于或等于0的整数;从而可以实现对第i个lod层的划分。
[0169]
进一步地,为了提升邻居节点预测属性的效果,还可以通过计算相邻区域的质心,然后将距离质心最近的点作为目标节点来预测邻居节点。因此,在一些实施例中,在获得第一数量个邻居节点的莫顿码之后,该方法还可以包括:
[0170]
基于所述待划分点云,确定所述第i个lod层中当前节点对应的相邻区域;
[0171]
计算所述相邻区域的质心,从所述当前节点以及所述第一数量个邻居节点中选择距离所述质心最近的节点作为目标节点;
[0172]
将所述目标节点划分到第i个lod层,将剩余节点划分到第i 1个lod层。
[0173]
需要说明的是,剩余节点表示当前节点以及第一数量个邻居节点中除了目标节点之外的节点。这样,根据当前节点对应父节点的邻居节点,可以确定出第i个lod层中当前节点对应的相邻区域;然后计算该相邻区域的质心,再从当前节点以及第一数量个邻居节点中选择距离该质心最近的节点作为目标节点;如此,将目标节点划分到第i个lod层,将剩余节点划分到第i 1个lod层,也可以实现对第i个lod层的划分。
[0174]
还需要说明的是,根据当前节点对应父节点的邻居节点,在确定出第i个lod层中当前节点对应的相邻区域之后,还可以将相邻区域划分成不同空间区域,然后将从不同空间区域中选取对应的点作为目标节点;如此,将目标节点划分到第i个lod层,将剩余节点划分到第i 1个lod层,也可以实现对第i个lod层的划分;同时由于将相邻区域作了进一步空间划分,还可以进一步提升预测性能。
[0175]
s408:根据i 1对i进行更新,返回判断i是否小于或等于m-1;
[0176]
s409:当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层。
[0177]
需要说明的是,针对第i个lod层的划分之后,可以利用i=i 1来对i的值进行更新,然后返回执行步骤s403,即判断i是否小于或等于m-1;直至针对第m-1个lod层的划分完成,即当i等于m时,表明了待划分点云的lod层的划分已经完成,这时候可以将第0个lod层至第m-1个lod层确定为待划分点云对应划分的lod层。
[0178]
还需要说明的是,在通过对待划分点云中点的莫顿码进行右移处理后,可以得到不同的集合,即针对待划分点云中的点进行聚类,将空间中相邻区域(即空间相对集中)的点划分到同一个集合;然后针对每一个集合进行lod层的划分。具体地,在一些实施例中,该方法还可以包括:
[0179]
对所述待划分点云中点的莫顿码进行右移处理,获得多个集合;其中,每一个集合包括所述待划分点云中的部分待划分点云;
[0180]
针对所述多个集合中每一个集合,分别执行对每一个集合所包括的部分待划分点云进行lod层划分的步骤。
[0181]
也就是说,可以通过调整待划分点云中点的莫顿码的右移位数,以使得将待划分点云划分为多个集合,而每一个集合包括有待划分点云中的部分待划分点云,即部分的点;针对每一个集合,同样利用本技术实施例的划分方法,基于莫顿码来搜索当前节点对应父节点的邻居节点,并且这种划分方式可以将空间中相邻区域的点云划分到同一个集合中,从而能够进一步提升预测性能。
[0182]
在本技术实施例中,可以采用基于莫顿码查找邻居节点的方式进行lod层的划分。具体地,不论是通过利用当前节点的莫顿码搜索当前节点对应父节点的邻居节点,即根据当前节点作为采样点来预测邻居节点的方式,还是通过利用当前节点的莫顿码来将点云空间中的相邻区域进行划分,即为了将点云空间中空间相近的部分进行划分以得到不同的集合(或者聚类),均可以提升基于邻居节点进行属性预测的效果,从而能够提升编码效率。
[0183]
也就是说,通过基于莫顿码进行搜索当前节点对应父节点的邻居节点,并且将当前节点作为采样点来预测邻居节点;如此,可以将点云的空间分布特性和点云中的点之间的空间距离进行综合考虑,能够提升基于邻居节点进行属性预测的效果。也就是说,在基本不影响性能的前提下,可以提高属性部分的重建质量,并且还可以降低预测属性的编解码时间和计算复杂度,从而提升编码效率。其中,峰值信噪比(peak signal to noise ratio,psnr)可以作为一种图像评价的客观标准,而且psnr越大,那么图像的质量越好;而bd-rate也可以作为一种用于衡量性能好坏的参数,bd-rate为负时,表示相同psnr条件下,码率减小,性能提高;在此基础上,如果bd-rate的绝对值越大,那么性能的增益越大。如表1所示,在基本不影响性能的前提下,能够降低属性部分的颜色通道(用u和v表示)的比特率,使得
重建点云的bd-rate具有较为明显的提升。
[0184]
表1
[0185][0186]
本技术实施例提供了一种划分方法,通过基于待划分点云,计算待划分点云中点的莫顿码;确定待划分点云中第i个细节层次lod层对应的右移位数ni,i为大于或等于0的整数,ni为大于0的整数;判断i是否小于或等于m-1,m表示lod划分的预设层数;当i小于或等于m-1时,针对第i个lod层,对待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;确定第i个lod层中当前节点对应的父节点的莫顿码;根据所确定的父节点的莫顿码,在预设存储区内搜索父节点对应的邻居节点;将当前节点划分到第i个lod层,将邻居节点划分到第i 1个lod层;根据i 1对i进行更新,返回判断i是否小于或等于m-1;当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层;这样,本技术的技术方案不再计算当前节点与邻居节点之间的空间距离,而是每次划分lod层时,利用莫顿码进行搜索当前节点对应父节点的邻居节点,并且将当前节点作为采样点来预测邻居节点,从而不仅降低了计算复杂度,而且由于考虑了点云的空间分布特性,还提升了邻居节点预测属性的精确度,提高了属性部分的重建质量,可以有效降低编码比特开销,进而提高了编解码效率。
[0187]
基于前述实施例相同的发明构思,参见图7,其示出了本技术实施例提供的一种划分方法的详细流程示意图。如图7所示,应用于编码器或解码器,该详细流程可以包括:
[0188]
s701:基于待划分点云,计算待划分点云中点的莫顿码;
[0189]
s702:对待划分点云中点的莫顿码进行升序排序;
[0190]
需要说明的是,针对待划分点云,假定该待划分点云中包含n个点,每个点表示为pi,每个点pi所对应的莫顿码为mi,i=0,1,2,

,n-1。也就是说,可以首先计算待划分点云中点对应的莫顿码(可以用packvoxel表示);然后针对待划分点云中点的莫顿码按照从小到大的升序排序,并将排序后的莫顿码确定为待划分点云中点的莫顿码。
[0191]
s703:判断是否lodindex《lodcount;
[0192]
需要说明的是,lodindex表示当前划分处理的第几个lod层,比如第lodindex个lod层;lodcount表示预先设置的待划分点云的总划分层数;这里,lodcount为大于0的整数,lodindex为大于或等于0且小于或等于lodcount-1的整数。
[0193]
还需要说明的是,当lodindex《lodcount时,即判断结果为是,这时候可以执行步骤s704;当lodindex≥lodcount时,即判断结果为否,这时候可以结束流程。
[0194]
s704:若判断结果为是,则判断是否lodindex==0;
[0195]
s705:若判断结果为是,则计算待划分点云中点的莫顿码的初始右移位数n;
[0196]
s706:若判断结果为否,则n
curlod
=n
lastlod
3,将n
curlod
确定为n;
[0197]
需要说明的是,n
curlod
表示当前处理的lod层对应的右移位数,n
lastlod
表示上一个处理的lod层对应的右移位数;比如第0个lod层对应的初始右移位数为4,那么第1个lod层
对应的右移位数为7,第2个lod层对应的右移位数为10,第3个lod层对应的右移位数为13等等,依次类推,可以得到每一个lod层对应右移位数。
[0198]
这样,当lodindex《lodcount时,还需要进一步判断lodindex是否等于0;如果lodindex等于0,即判断结果为是,这时候可以执行步骤s705,即计算待划分点云中点的莫顿码的初始右移位数n;如果lodindex不等于0,即判断结果为否,这时候可以执行步骤s706,即n
curlod
=n
lastlod
3,然后将n
curlod
确定为n,以便后续执行步骤s707。
[0199]
s707:将待划分点云中点的莫顿码右移n位,并将右移后的莫顿码存储在inputmorton;
[0200]
s708:判断是否pointindex《inputmorton.size;
[0201]
需要说明的是,pointindex表示当前节点在inputmorton内的索引号,inputmorton.size表示inputmorton的长度。这样,当pointindex《inputmorton.size时,即判断结果为是,表明了当前节点还在第lodindex个lod层中,这时候需要执行步骤s709;而当pointindex≥inputmorton.size时,即判断结果为否,表明了当前节点已经不在第lodindex个lod层中,这时候需执行步骤s710。
[0202]
s709:若判断结果为是,则将当前节点加入到集合o(lodindex)中,将当前节点对应的邻居节点加入到集合l(lodindex)中;
[0203]
s710:pointindex=pointindex 1,且返回执行步骤s708;
[0204]
s711:若判断结果为否,则lodindex=lodindex 1,且返回执行步骤s703。
[0205]
需要说明的是,当pointindex《inputmorton.size时,这时候将当前节点加入到集合o(lodindex)中,即将当前节点划分到第lodindex个lod层;同时将当前节点对应的邻居节点加入到集合l(lodindex)中,即将当前节点对应的邻居节点划分到第lodindex 1个lod层;然后将pointindex=pointindex 1,并且返回执行步骤s708,直至到pointindex=inputmorton.size-1,也就实现了对第lodindex个lod层的划分。进一步地,当pointindex≥inputmorton.size时,表明了对第lodindex个lod层的划分完成,这时候需要lodindex=lodindex 1,并且返回执行步骤s703,直至到lodindex=lodcount-1,以实现对第lodcount-1个lod层的划分;从而也就实现了对待划分点云的lod划分;这里,将第0个lod层至第lodcount-1个lod层确定为所述待划分点云对应划分的lod层。
[0206]
具体来讲,可以通过对待划分点云排序后的莫顿码进行采样得到k个采样点的莫顿码,并且通过对这k个采样点的莫顿码进行右移处理,可以得到待划分点云对应的初始右移位数n,进一步确定出每一个lod层对应的右移位数。然后针对每一个lod层进行划分时,对输入的待划分点云中点的莫顿码进行右移n位处理,并将右移后的莫顿码存储在inputmorton中。这时候可以计算当前节点对应父节点的莫顿码,并通过父节点来计算得到其邻居节点的莫顿码,最后可以在inputmorton中查找邻居节点的莫顿码所对应的邻居节点,从而将当前节点划分到o(lodindex)中,同时将查找到的这些邻居节点划分到l(lodindex)中。
[0207]
在本技术实施例中,不需要计算当前点与邻居点之间的空间距离,通常而言,可以认为空间中与当前节点处于同一个父节点、且与当前节点共面或者共线以及共点的邻居节点与当前节点的空间距离均非常近,可以看作同属于一个相邻区域,这时候可以基于莫顿码进行查询当前节点对应父节点的邻居节点,相比于现有的基于不同距离阈值来查询邻居
节点的方案,本技术实施例的划分方法不需要设置不同的阈值参数,还不需要每次计算点与点之间的空间距离,从而能够很大程度上降低计算复杂度。
[0208]
进一步地,在本技术实施例中,每次划分lod层时,由于只需要判断当前节点对应父节点的邻居节点,并且将当前节点加入到集合o(k)中,将当前节点对应的邻居节点加入到集合l(k)中,从而不再是仅仅考虑点与点之间的空间几何距离,而是在空间分布的基础上,将点云的空间分布特性也考虑进去,也即通过综合考虑空间中点的空间几何距离以及空间中点云的空间分布特性,能够提升预测性能,还可以得到较好的编解码性能。特别需要注意的是,本技术实施例的划分方法仅仅是基于原始点云的莫顿码查找当前节点的邻居节点进行采样,相比原始每次通过莫顿码的索引在一定范围内进行查找最近邻居的划分方式,很大程度上降低了计算复杂度。
[0209]
本实施例提供了一种划分方法,该划分方法应用于编码器或解码器。通过上述实施例对前述实施例的具体实现进行详细阐述,从中可以看出,本技术的技术方案不再计算当前节点与邻居节点之间的空间距离,而是每次划分lod层时,利用莫顿码进行搜索当前节点对应父节点的邻居节点,并且将当前节点作为采样点来预测邻居节点,从而不仅降低了计算复杂度,而且由于考虑了点云的空间分布特性,还提升了邻居节点预测属性的精确度,提高了属性部分的重建质量,可以有效降低编码比特开销,进而提高了编解码效率。
[0210]
基于前述实施例相同的发明构思,参见图8,其示出了本技术实施例提供的一种编码器80的组成结构示意图。如图8所示,该编码器80可以包括第一计算单元801、第一确定单元802、第一判断单元803、第一右移单元804、第一搜索单元805和第一划分单元806,其中,
[0211]
第一计算单元801,配置为基于待划分点云,计算所述待划分点云中点的莫顿码;
[0212]
第一确定单元802,配置为确定所述待划分点云中第i个细节层次lod层对应的右移位数ni;其中,i为大于或等于0的整数,ni为大于0的整数;
[0213]
第一判断单元803,配置为判断i是否小于或等于m-1;其中,m表示lod划分的预设层数;
[0214]
第一右移单元804,配置为当i小于或等于m-1时,针对第i个lod层,对所述待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;
[0215]
第一确定单元802,还配置为确定第i个lod层中当前节点对应的父节点的莫顿码;
[0216]
第一搜索单元805,配置为根据所确定的父节点的莫顿码,在所述预设存储区内搜索所述父节点对应的邻居节点;
[0217]
第一划分单元806,配置为将所述当前节点划分到第i个lod层,将所述邻居节点划分到第i 1个lod层;
[0218]
第一判断单元803,还配置为根据i 1对i进行更新,返回判断i是否小于或等于m-1;
[0219]
第一确定单元802,还配置为当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层。
[0220]
在上述方案中,参见图8,编码器80还可以包括第一排序单元807,配置为按照预设排序策略对所述待划分点云中点的莫顿码进行排序,将排序后的莫顿码确定为所述待划分点云中点的莫顿码。
[0221]
在上述方案中,参见图8,编码器80还可以包括第一采样单元808,配置为对排序后
的莫顿码进行采样,得到k个采样点的莫顿码;其中,k为大于0的整数;
[0222]
第一右移单元804,还配置为对所述k个采样点的莫顿码进行右移处理,得到莫顿码右移后对应的k个采样点;
[0223]
第一判断单元803,还配置为判断所述莫顿码右移后对应的k个采样点是否具备平均每个采样点对应至少一个邻居节点;以及若所述莫顿码右移后对应的k个采样点不具备平均每个采样点对应至少一个邻居节点,则继续执行所述对所述k个采样点的莫顿码进行右移处理的步骤;以及若所述莫顿码右移后对应的k个采样点具备平均每个采样点对应至少一个邻居节点,则获得所述k个采样点的右移位数,将所述右移位数确定为所述待划分点云中点的莫顿码的初始右移位数;其中,所述初始右移位数表示所述待划分点云中点的莫顿码在第0个lod层对应的右移位数n0。
[0224]
在上述方案中,参见图8,编码器80还可以包括第一分析单元809,配置为对所述待划分点云进行特性分析,确定k的取值。
[0225]
在上述方案中,第一确定单元802,还配置为基于排序后的莫顿码,确定最大莫顿码和最小莫顿码;
[0226]
第一计算单元801,还配置为计算所述最大莫顿码和所述最小莫顿码之间的差值;
[0227]
第一右移单元804,还配置为对所述差值进行右移处理,当右移后的差值满足预设范围时,获得所述差值的右移位数;
[0228]
第一确定单元802,还配置为将所述右移位数确定为所述待划分点云的初始右移位数。
[0229]
在上述方案中,第一确定单元802,还配置为当i不等于0时,利用第一预设计算模型确定所述待划分点云中第i个lod层对应的右移位数ni。
[0230]
在上述方案中,第一确定单元802,具体配置为获取第i-1个lod层对应的右移位数n
i-1
;以及将第i-1个lod层对应的右移位数n
i-1
与预设值进行叠加,得到叠加值;以及将所述叠加值确定为第i个lod层对应的右移位数ni。
[0231]
在上述方案中,第一分析单元809,还配置为对所述待划分点云进行特性分析,确定所述预设值。
[0232]
在上述方案中,所述预设值等于3。
[0233]
在上述方案中,第一右移单元804,还配置为基于第i个lod层对应的右移位数ni,对所述第i个lod层中当前节点的莫顿码进行右移处理;
[0234]
第一确定单元802,还配置为将右移后的莫顿码确定为所述第i个lod层中当前节点对应的父节点的莫顿码。
[0235]
在上述方案中,第一确定单元802,还配置为根据所确定的父节点的莫顿码,确定所述父节点对应的邻居节点的莫顿码;
[0236]
第一搜索单元805,具体配置为根据所述邻居节点的莫顿码,在所述预设存储区内搜索所述邻居节点的莫顿码对应的邻居节点。
[0237]
在上述方案中,第一计算单元801,还配置为根据所确定的父节点的莫顿码,计算与所述父节点共面、共线以及共点的所有邻居节点的莫顿码,获得第一数量个邻居节点的莫顿码;
[0238]
第一确定单元802,具体配置为将所述第一数量个邻居节点的莫顿码分别与当前
节点的莫顿码进行比较;以及当邻居节点的莫顿码小于当前节点的莫顿码时,丢弃所述邻居节点的莫顿码;以及当邻居节点的莫顿码大于或等于当前节点的莫顿码时,保留所述邻居节点的莫顿码,以得到第二数量个邻居节点的莫顿码;其中,所述第二数量小于或等于所述第一数量;以及将所述第二数量个邻居节点的莫顿码确定为所述父节点对应的邻居节点的莫顿码。
[0239]
在上述方案中,第一确定单元802,还配置为基于所述待划分点云,确定所述第i个lod层中当前节点对应的相邻区域;
[0240]
第一计算单元801,还配置为计算所述相邻区域的质心,从所述当前节点以及所述第一数量个邻居节点中选择距离所述质心最近的节点作为目标节点;
[0241]
第一划分单元806,还配置为将所述目标节点划分到第i个lod层,将剩余节点划分到第i 1个lod层;其中,所述剩余节点表示所述当前节点以及所述第一数量个邻居节点中除了所述目标节点之外的节点。
[0242]
在上述方案中,第一右移单元804,还配置为对所述待划分点云中点的莫顿码进行右移处理,获得多个集合;其中,每一个集合包括所述待划分点云中的部分待划分点云;
[0243]
第一划分单元806,还配置为针对所述多个集合中每一个集合,分别执行对每一个集合所包括的部分待划分点云进行lod层划分的步骤。
[0244]
可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0245]
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0246]
因此,本实施例提供了一种计算机存储介质,应用于编码器80,该计算机存储介质存储有划分程序,所述划分程序被第一处理器执行时实现前述实施例中任一项所述的方法。
[0247]
基于上述编码器80的组成以及计算机存储介质,参见图9,其示出了本技术实施例提供的编码器80的具体硬件结构,可以包括:第一通信接口901、第一存储器902和第一处理器903;各个组件通过第一总线系统904耦合在一起。可理解,第一总线系统904用于实现这些组件之间的连接通信。第一总线系统904除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图9中将各种总线都标为第一总线系统904。其中,
[0248]
第一通信接口901,用于在与其他外部网元之间进行收发信息过程中,信号的接收
和发送;
[0249]
第一存储器902,用于存储能够在第一处理器903上运行的计算机程序;
[0250]
第一处理器903,用于在运行所述计算机程序时,执行:
[0251]
基于待划分点云,计算所述待划分点云中点的莫顿码;
[0252]
确定所述待划分点云中第i个细节层次lod层对应的右移位数ni;其中,i为大于或等于0的整数,ni为大于0的整数;
[0253]
判断i是否小于或等于m-1;其中,m表示lod划分的预设层数;
[0254]
当i小于或等于m-1时,针对第i个lod层,对所述待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;
[0255]
确定第i个lod层中当前节点对应的父节点的莫顿码;
[0256]
根据所确定的父节点的莫顿码,在所述预设存储区内搜索所述父节点对应的邻居节点;
[0257]
将所述当前节点划分到第i个lod层,将所述邻居节点划分到第i 1个lod层;
[0258]
根据i 1对i进行更新,返回判断i是否小于或等于m-1;
[0259]
当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层。
[0260]
可以理解,本技术实施例中的第一存储器902可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。本技术描述的系统和方法的第一存储器902旨在包括但不限于这些和任意其它适合类型的存储器。
[0261]
而第一处理器903可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过第一处理器903中的硬件的集成逻辑电路或者软件形式的指令完成。上述的第一处理器903可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于第一存储器902,第一处理器903读取第一存储器902中的信息,
结合其硬件完成上述方法的步骤。
[0262]
可以理解的是,本技术描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(application specific integrated circuits,asic)、数字信号处理器(digital signal processing,dsp)、数字信号处理设备(dsp device,dspd)、可编程逻辑设备(programmable logic device,pld)、现场可编程门阵列(field-programmable gate array,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本技术所述功能的其它电子单元或其组合中。对于软件实现,可通过执行本技术所述功能的模块(例如过程、函数等)来实现本技术所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
[0263]
可选地,作为另一个实施例,第一处理器903还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。
[0264]
本实施例提供了一种编码器,该编码器可以包括第一计算单元、第一确定单元、第一判断单元、第一右移单元、第一搜索单元和第一划分单元;其中,第一计算单元,配置为基于待划分点云,计算所述待划分点云中点的莫顿码;第一确定单元,配置为确定所述待划分点云中第i个细节层次lod层对应的右移位数ni;其中,i为大于或等于0的整数,ni为大于0的整数;第一判断单元,配置为判断i是否小于或等于m-1;其中,m表示lod划分的预设层数;第一右移单元,配置为当i小于或等于m-1时,针对第i个lod层,对所述待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;第一确定单元,还配置为确定第i个lod层中当前节点对应的父节点的莫顿码;第一搜索单元,配置为根据所确定的父节点的莫顿码,在所述预设存储区内搜索所述父节点对应的邻居节点;第一划分单元,配置为将所述当前节点划分到第i个lod层,将所述邻居节点划分到第i 1个lod层;第一判断单元,还配置为根据i 1对i进行更新,返回判断i是否小于或等于m-1;第一确定单元,还配置为当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层。这样,本技术的技术方案不再计算当前节点与邻居节点之间的空间距离,而是每次划分lod层时,利用莫顿码进行搜索当前节点对应父节点的邻居节点,并且将当前节点作为采样点来预测邻居节点,从而不仅降低了计算复杂度,而且由于考虑了点云的空间分布特性,还提升了邻居节点预测属性的精确度,提高了属性部分的重建质量,可以有效降低编码比特开销,进而提高了编解码效率。
[0265]
基于前述实施例相同的发明构思,参见图10,其示出了本技术实施例提供的一种解码器100的组成结构示意图。如图10所示,该解码器100可以包括第二计算单元1001、第二确定单元1002、第二判断单元1003、第二右移单元1004、第二搜索单元1005和第二划分单元1006,其中,
[0266]
第二计算单元1001,配置为基于待划分点云,计算所述待划分点云中点的莫顿码;
[0267]
第二确定单元1002,配置为确定所述待划分点云中第i个细节层次lod层对应的右移位数ni;其中,i为大于或等于0的整数,ni为大于0的整数;
[0268]
第二判断单元1003,配置为判断i是否小于或等于m-1;其中,m表示lod划分的预设层数;
[0269]
第二右移单元1004,配置为当i小于或等于m-1时,针对第i个lod层,对所述待划分
点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;
[0270]
第二确定单元1002,还配置为确定第i个lod层中当前节点对应的父节点的莫顿码;
[0271]
第二搜索单元1005,配置为根据所确定的父节点的莫顿码,在所述预设存储区内搜索所述父节点对应的邻居节点;
[0272]
第二划分单元1006,配置为将所述当前节点划分到第i个lod层,将所述邻居节点划分到第i 1个lod层;
[0273]
第二判断单元1003,还配置为根据i 1对i进行更新,返回判断i是否小于或等于m-1;
[0274]
第二确定单元1002,还配置为当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层。
[0275]
在上述方案中,参见图10,解码器100还可以包括第二排序单元1007,配置为按照预设排序策略对所述待划分点云中点的莫顿码进行排序,将排序后的莫顿码确定为所述待划分点云中点的莫顿码。
[0276]
在上述方案中,参见图10,解码器100还可以包括第二采样单元1008,配置为对排序后的莫顿码进行采样,得到k个采样点的莫顿码;其中,k为大于0的整数;
[0277]
第二右移单元1004,还配置为对所述k个采样点的莫顿码进行右移处理,得到莫顿码右移后对应的k个采样点;
[0278]
第二判断单元1003,还配置为判断所述莫顿码右移后对应的k个采样点是否具备平均每个采样点对应至少一个邻居节点;以及若所述莫顿码右移后对应的k个采样点不具备平均每个采样点对应至少一个邻居节点,则继续执行所述对所述k个采样点的莫顿码进行右移处理的步骤;以及若所述莫顿码右移后对应的k个采样点具备平均每个采样点对应至少一个邻居节点,则获得所述k个采样点的右移位数,将所述右移位数确定为所述待划分点云中点的莫顿码的初始右移位数;其中,所述初始右移位数表示所述待划分点云中点的莫顿码在第0个lod层对应的右移位数n0。
[0279]
在上述方案中,参见图10,解码器100还可以包括第二分析单元1009,配置为对所述待划分点云进行特性分析,确定k的取值。
[0280]
在上述方案中,第二确定单元1002,还配置为基于排序后的莫顿码,确定最大莫顿码和最小莫顿码;
[0281]
第二计算单元1001,还配置为计算所述最大莫顿码和所述最小莫顿码之间的差值;
[0282]
第二右移单元1004,还配置为对所述差值进行右移处理,当右移后的差值满足预设范围时,获得所述差值的右移位数;
[0283]
第二确定单元1002,还配置为将所述右移位数确定为所述待划分点云的初始右移位数。
[0284]
在上述方案中,第二确定单元1002,还配置为当i不等于0时,利用第一预设计算模型确定所述待划分点云中第i个lod层对应的右移位数ni。
[0285]
在上述方案中,第二确定单元1002,具体配置为获取第i-1个lod层对应的右移位数n
i-1
;以及将第i-1个lod层对应的右移位数n
i-1
与预设值进行叠加,得到叠加值;以及将所
述叠加值确定为第i个lod层对应的右移位数ni。
[0286]
在上述方案中,第二分析单元1009,还配置为对所述待划分点云进行特性分析,确定所述预设值。
[0287]
在上述方案中,所述预设值等于3。
[0288]
在上述方案中,第二右移单元1004,还配置为基于第i个lod层对应的右移位数ni,对所述第i个lod层中当前节点的莫顿码进行右移处理;
[0289]
第二确定单元1002,还配置为将右移后的莫顿码确定为所述第i个lod层中当前节点对应的父节点的莫顿码。
[0290]
在上述方案中,第二确定单元1002,还配置为根据所确定的父节点的莫顿码,确定所述父节点对应的邻居节点的莫顿码;
[0291]
第二搜索单元1005,具体配置为根据所述邻居节点的莫顿码,在所述预设存储区内搜索所述邻居节点的莫顿码对应的邻居节点。
[0292]
在上述方案中,第二计算单元1001,还配置为根据所确定的父节点的莫顿码,计算与所述父节点共面、共线以及共点的所有邻居节点的莫顿码,获得第一数量个邻居节点的莫顿码;
[0293]
第二确定单元1002,具体配置为将所述第一数量个邻居节点的莫顿码分别与当前节点的莫顿码进行比较;以及当邻居节点的莫顿码小于当前节点的莫顿码时,丢弃所述邻居节点的莫顿码;以及当邻居节点的莫顿码大于或等于当前节点的莫顿码时,保留所述邻居节点的莫顿码,以得到第二数量个邻居节点的莫顿码;其中,所述第二数量小于或等于所述第一数量;以及将所述第二数量个邻居节点的莫顿码确定为所述父节点对应的邻居节点的莫顿码。
[0294]
在上述方案中,第二确定单元1002,还配置为基于所述待划分点云,确定所述第i个lod层中当前节点对应的相邻区域;
[0295]
第二计算单元1001,还配置为计算所述相邻区域的质心,从所述当前节点以及所述第一数量个邻居节点中选择距离所述质心最近的节点作为目标节点;
[0296]
第二划分单元1006,还配置为将所述目标节点划分到第i个lod层,将剩余节点划分到第i 1个lod层;其中,所述剩余节点表示所述当前节点以及所述第一数量个邻居节点中除了所述目标节点之外的节点。
[0297]
在上述方案中,第二右移单元1004,还配置为对所述待划分点云中点的莫顿码进行右移处理,获得多个集合;其中,每一个集合包括所述待划分点云中的部分待划分点云;
[0298]
第二划分单元1006,还配置为针对所述多个集合中每一个集合,分别执行对每一个集合所包括的部分待划分点云进行lod层划分的步骤。
[0299]
可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0300]
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本实施例提供了一
种计算机存储介质,应用于解码器100,该计算机存储介质存储有划分程序,所述划分程序被第二处理器执行时实现前述实施例中任一项所述的方法。
[0301]
基于上述解码器100的组成以及计算机存储介质,参见图11,其示出了本技术实施例提供的解码器100的具体硬件结构,可以包括:第二通信接口1101、第二存储器1102和第二处理器1103;各个组件通过第二总线系统1104耦合在一起。可理解,第二总线系统1104用于实现这些组件之间的连接通信。第二总线系统1104除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图11中将各种总线都标为第二总线系统1104。其中,
[0302]
第二通信接口1101,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
[0303]
第二存储器1102,用于存储能够在第二处理器1103上运行的计算机程序;
[0304]
第二处理器1103,用于在运行所述计算机程序时,执行:
[0305]
基于待划分点云,计算所述待划分点云中点的莫顿码;
[0306]
确定所述待划分点云中第i个细节层次lod层对应的右移位数ni;其中,i为大于或等于0的整数,ni为大于0的整数;
[0307]
判断i是否小于或等于m-1;其中,m表示lod划分的预设层数;
[0308]
当i小于或等于m-1时,针对第i个lod层,对所述待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;
[0309]
确定第i个lod层中当前节点对应的父节点的莫顿码;
[0310]
根据所确定的父节点的莫顿码,在所述预设存储区内搜索所述父节点对应的邻居节点;
[0311]
将所述当前节点划分到第i个lod层,将所述邻居节点划分到第i 1个lod层;
[0312]
根据i 1对i进行更新,返回判断i是否小于或等于m-1;
[0313]
当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层。
[0314]
可选地,作为另一个实施例,第二处理器1103还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。
[0315]
可以理解,第二存储器1102与第一存储器902的硬件功能类似,第二处理器1103与第一处理器903的硬件功能类似;这里不再详述。
[0316]
本实施例提供了一种解码器,该解码器可以包括第二计算单元、第二确定单元、第二判断单元、第二右移单元、第二搜索单元和第二划分单元;其中,第二计算单元,配置为基于待划分点云,计算所述待划分点云中点的莫顿码;第二确定单元,配置为确定所述待划分点云中第i个细节层次lod层对应的右移位数ni;其中,i为大于或等于0的整数,ni为大于0的整数;第二判断单元,配置为判断i是否小于或等于m-1;其中,m表示lod划分的预设层数;第二右移单元,配置为当i小于或等于m-1时,针对第i个lod层,对所述待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;第二确定单元,还配置为确定第i个lod层中当前节点对应的父节点的莫顿码;第二搜索单元,配置为根据所确定的父节点的莫顿码,在所述预设存储区内搜索所述父节点对应的邻居节点;第二划分单元,配置为将所述当前节点划分到第i个lod层,将所述邻居节点划分到第i 1个lod层;第二判断单元,还配置
为根据i 1对i进行更新,返回判断i是否小于或等于m-1;第二确定单元,还配置为当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层。这样,本技术的技术方案不再计算当前节点与邻居节点之间的空间距离,而是每次划分lod层时,利用莫顿码进行搜索当前节点对应父节点的邻居节点,并且将当前节点作为采样点来预测邻居节点,从而不仅降低了计算复杂度,而且由于考虑了点云的空间分布特性,还提升了邻居节点预测属性的精确度,提高了属性部分的重建质量,可以有效降低编码比特开销,进而提高了编解码效率。
[0317]
需要说明的是,在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0318]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0319]
本技术所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
[0320]
本技术所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
[0321]
本技术所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
[0322]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
[0323]
工业实用性
[0324]
本技术实施例中,该方法应用于编码器,通过基于待划分点云,计算待划分点云中点的莫顿码;确定待划分点云中第i个细节层次lod层对应的右移位数ni,i为大于或等于0的整数,ni为大于0的整数;判断i是否小于或等于m-1,m表示lod划分的预设层数;当i小于或等于m-1时,针对第i个lod层,对待划分点云中点的莫顿码右移ni位,并将右移后的莫顿码存储在预设存储区;确定第i个lod层中当前节点对应的父节点的莫顿码;根据所确定的父节点的莫顿码,在预设存储区内搜索父节点对应的邻居节点;将当前节点划分到第i个lod层,将邻居节点划分到第i 1个lod层;根据i 1对i进行更新,返回判断i是否小于或等于m-1;当i大于m-1时,将第0个lod层至第m-1个lod层确定为所述待划分点云对应划分的lod层;这样,本技术的技术方案不再计算当前节点与邻居节点之间的空间距离,而是每次划分lod层时,利用莫顿码进行搜索当前节点对应父节点的邻居节点,并且将当前节点作为采样点来预测邻居节点,从而不仅降低了计算复杂度,而且由于考虑了点云的空间分布特性,还提升了邻居节点预测属性的精确度,提高了属性部分的重建质量,可以有效降低编码比特开销,进而提高了编解码效率。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献