本发明涉及点云数据编码,尤其是一种基于局部特征匹配的动态点云编码方法。
背景技术:
1、近年来,点云由于其高精度和高分辨率的特点,在机器人和自动驾驶汽车中得到了快速的发展,可用于捕捉场景的三维几何形状。然而,点云数据庞大而复杂,如何实现高效的点云压缩和传输成为了一个关键的问题。并且由于点云具有无序性和稀疏性,难以将图像和视频压缩方法直接应用到点云压缩上。
2、目前,对点云进行压缩的方法主要分为无损压缩和有损压缩两类。无损压缩方法主要采用基于哈夫曼编码或基于算术编码的策略。这些方法确保了压缩后的点云数据与原始数据完全一致,但由于较低的压缩率,无法满足实际应用的需求。
3、因此,有损压缩方法逐渐成为处理点云数据的主要手段。点云有损压缩方法主要包括结构化的编码和非结构化的编码,其中结构化数据格式直观地呈现点云数据,适合于卷积运算。这些方法主要分为基于深度图的方法和基于体素的方法。基于深度图的方法,将点云数据投影到深度图上,然后通过对深度图进行压缩来实现对点云数据的压缩。这种方法的优势在于其压缩速度较快,但是在处理非平面点云数据时,可能会导致信息的丢失。基于体素的方法将点云数据转换为网格数据,并通过对网格数据进行压缩来实现对点云数据的压缩。体素表示的优势在于它采用了空间一致性的数据存储和索引方式,用户可以根据需要选择适当的体素分辨率,以在不同的应用场景中灵活地处理不同规模的点云数据。然而,在处理稀疏的点云数据时,这种方法可能导致大量的空体素,占用存储空间而没有实际数据。
4、非结构化点云编码方法通常采用分层的形式表示对点云进行编码,具有较高的编码效率。这些方法主要基于树的结构,如kd树、预测树、四叉树和八叉树。其中基于八叉树的方法相较于其他方法,具有压缩率高、压缩速度快、稀疏数据的空间适应性好等优点,因此被广泛应用于点云数据的压缩。但是,基于八叉树的方法面临的挑战在于如何高效地利用节点上下文信息进行熵编码。在这种方法中,八叉树需要对点云数据进行遍历、分割,以及节点的生成和连接。当八叉树的深度足够深时,可以提供许多细粒度的信息,但这可能导致较大的时间开销;而当八叉树深度较浅时,容易丢失较多细粒度的信息。此外,在八叉树编码中,空间上下文信息,尤其是兄弟节点之间的邻域几何关系,需要被深度提取。与祖先节点不同,兄弟节点的邻域几何关系提供了较低级别的局部几何特征,这些特征很难通过直接遍历八叉树来获得。
5、因此,在时间成本有限的情况下,如何在充分挖掘几何特征的同时,有效地丰富八叉树结构的节点细粒度仍然是一个待解决的技术问题。
技术实现思路
1、针对现有技术的不足,本发明提供一种基于局部特征匹配的动态点云编码方法,本发明采用局部聚合采样编码,将通过多次自适应采样与点簇关联度计算选取参考帧中与当前八叉树序列关联度最高的点,点簇的整体匹配确保了引入节点的有效性与稳定性。
2、本发明的技术方案为:一种基于局部特征匹配的动态点云编码方法,包括如下步骤:
3、s1)、利用点云数据构建八叉树结构;
4、s2)、构建基于时空注意力的熵编码模型;
5、s3)、使用交叉注意力模块聚集动态节点特征,并计算节点相似性;
6、s4)、基于关联度的参考帧点簇聚合编码提取动态八叉树相关性;
7、s5)、基于时空注意力模块融合动态八叉树的特征;
8、s6)、基于时空注意力的熵编码模型预测八叉树节点占位符号概率;
9、s7)、基于算术编码将八叉树节点的占位符号序列压缩为二进制浮点数序列;
10、s8)、将二进制浮点数序列转化为比特流;
11、s9)、解码压缩后的比特流数据并还原为编码的点云数据。
12、作为优选的,步骤s1)中,在构建八叉树过程中,使用立方体中心的坐标来表示每个节点包含的点集;且立方体中心的坐标值与点云p中对应的点pi之间存在量化误差e表示为:
13、
14、式中,l是初始包围盒的长度,h表示八叉树结构中的最大深度;pi表示原始点云坐标。
15、作为优选的,步骤s2)中,构建的所述的基于时空注意力的熵编码模型包括交叉注意力模块、聚合嵌入模块、时空注意力模块以及多个全连接层;其中,所述的时空注意力模块包括空间注意力模块和时间注意力模块,以及多个全连接层,所述的空间注意力模块用于感知上下文窗口中各空间位置的节点之间的依赖,所述的时间注意模块则用于学习参考上下文与当前上下文的动态依赖关系。
16、作为优选的,步骤s3)中,使用交叉注意力模块聚集动态节点特征,并计算节点相似性,具体包括如下步骤:
17、s31)、通过嵌入层将序列中每个节点fi的特征维数从6增加到1024;
18、s32)、从已编码的前一帧八叉树中提取同一深度下的所有非空节点作为参考上下文,然后对参考上下文中的节点进行随机打乱;并将其分割为多个长度为t的子参考上下文;
19、s33)、通过全连接层提取子参考上下文cj=[f′j,f′j+1,…,f′j+t-1]和当前上下文ci=[fi,fi+1,…,fi+e-1]的隐藏特征μj=δ(cj;ρ)和μi=δ(ci;ρ);其中,δ(.;ρ)表示可学习参数为ρ的全连接层;
20、s34)、将子参考上下文cj的隐藏特征μj和当前上下文ci的隐藏特征μi通过交叉乘操作获得各组子参考上下文与当前上下文的相关性分数矩阵s;
21、
22、式中,sij表示当前上下文ci和子参考上下文cj的相关性分数。
23、作为优选的,步骤s4)中,采用聚合嵌入模块自适应地将具有相似特征的动态节点进行聚类,具体包括如下步骤:
24、s41)、所述的聚合嵌入模块根据按相关性分数高低排序后的索引对相关度矩阵s的每一行使用topk算法;从子参考上下文中选出与每个预测节点相对应的k个高相关性节点,并将其特征拼接到当前上下文窗口。
25、作为优选的,步骤s5)中,基于时空注意力模块融合动态八叉树的特征;具体为:
26、s51)、在空间注意力模块中,首先通过一维通道卷积对聚合的上下文窗口特征进行组织,改变特征维度并增强局部点特征之间的依赖关系表示;在通过查询向量q和关键向量k相乘获得注意力分数后,空间注意力使用两个全连接层来映射节点特征并对关键节点进行强化表征;随后再与值向量v进行叉乘得到特征序列cout;
27、其中,空间注意力sa(ca)定义如下:
28、q,k,v=conv(ca)
29、attn=mlp(swish(mlp(q×k)))
30、cout=attn×v
31、式中,q,k,v是注意力机制中的查询、键和值向量;conv表示一维通道卷积操作;ca表示聚合序列特征,mlp和swish分别表示全连接层和swish激活函数,cout表示输出特征序列。
32、s52)、所述的时间注意力模块首先通过时域切分操作从聚合特征ca中分离出参考节点上下文和当前节点上下文;
33、然后所述的时间注意力模块利用平均池化操作分别从参考特征和当前序列特征中生成键向量k和查询向量q,使用全连接层从当前序列特征中生成值向量v;以发现时间点特征的相互依赖关系;然后将查询向量q和键向量k进行叉乘后经过softmax激活函数处理;最后将softmax激活函数的输出与值向量v叉乘得到输出的特征序列。
34、其中,所述的时间注意力模块ta(ca)定义如下:
35、ct,cr=dv(ca);
36、q=avgpool(ct);
37、k=avgpool(cr);
38、v=mlp(ct);
39、attn=softmax(q×k);
40、cout=attn×v;
41、式中,dv和avgpool表示时域切分和平均池化操作;ct、cr分别为当前节点上下文和参考节点上下文。
42、随后拼接融合时间注意力模块与空间注意力模块输出的特征序列,并经过两个连续的全连接层进行通道数的映射。
43、作为优选的,步骤s6)中,所述的编码熵模型通过一个256维的全连接层将时空注意力发掘的节点特征映射为不同的占用情况类别的概率,从而实现对节点占位符号的预测;通过所述的基于时空注意力的熵编码模型对每个节点符号的占位符号概率进行预测,即:
44、
45、式中;na是编码节点的占用情况;fa和f′a表示嵌入的当前特征和参考特征;ω表示上下文窗口长度,w表示熵编码模型的权重;表示节点的占用情况na对应的估计分布;所述的基于时空注意力的熵编码模型利用当前序列和选定的参考序列的所有特征来预测分布,其中,t是时间步长。
46、作为优选的,步骤s7)中,基于算术编码将八叉树节点的占位符号序列压缩为二进制浮点数序列;具体包括如下步骤:
47、s71)、建立频率表;具体包括如下步骤:
48、s711)、收集并统计每个节点占位符号xi的出现频率,由于在八叉树节点的符号可能有256种,统计每种符号的出现次数;
49、s712)、将每种符号的出现次数除以总符号数,得到每个符号的概率p(sk),表示符号sk在节点符号集中出现的相对频率;
50、s713)、按照符号的出现顺序,从概率最低到最高排序,逐一计算每个符号的累积概率c(sk);累积概率表示符号sk在频率表中的位置,形成一个从0到1的区间,其计算公式为:
51、
52、s714)、基于频率表,将区间大小与符号出现概率相关联。
53、s72)、以φk(xi)=(b,v)形式创建一系列嵌套区间,其中,φk(xi)表示数轴映射区间;b表示嵌套区间起点,v表示嵌套区间长度,xi表示节点i的占位符号;最初的区间φ0(xi)是[0,1),在每一步中,区间被进一步划分;
54、φ0(xi)=(b0,v0)=(0,1);
55、φk(xi)=(bk,vk)=(bk-1+c(sk)lk-1,p(sk)lk-1);l=1,2,…,256;
56、式中,sk表示节点i的占位符号xi的第k种格式,p(sk)表示格式sk的概率;c(sk)表示累计概率;bk-1是前一个区间的起点,lk-1是前一个区间的长度;
57、s73)、将节点i的占位符号xi映射到实数区间[0,1)上的某一值y,并将y的二进制展开作为压缩编码结果;在要编码的节点占位符号v对应的数轴映射区间φk(xi)内,选择一个浮点数来表示节点i的占位符号xi。遍历所有符号后,最终得到的目标区间范围更大,浮点数就具有更低的精度,码长更短。
58、作为优选的,步骤s8)中,将二进制浮点数序列转化为比特流,具体包括如下步骤:
59、s81)、选择在指定范围内使用有限浮点数来表示节点的占位符号,并将每个浮点数转换为二进制形式,再转换为字节流;
60、s82)、根据区间间隔长度vk,动态选择二进制位数最少的浮点数来表示每个节点;
61、s83)、将每个节点的动态浮点数二进制位进行存储并转换为比特流;
62、s84)、使用广度优先搜索将所有八叉树内节点的比特流并连接成一个具有一定长度的比特流;
63、s85)、通过算术解码建立节点占位符号的预测概率频率表,并将其映射到实数区间[0,1)上,映射到对于区间的序号被转换为二进制形式,从而得到解码后的节点占位符号。
64、作为优选的,步骤s9)中,解码压缩后的比特流数据并还原为编码的点云数据;具体包括如下步骤:
65、s91)、获取解码复建八叉树所需的信息,包括比特流数据和根节点的坐标以及边长;
66、s92)、构建八叉树的根节点,并将根节点特征输入基于时空注意力的熵编码模型中,以获取符号概率分布后作为算术解码的频率表;
67、s93)、从比特流中截取根节点所在层的部分并利用频率表解析为浮点数,
68、得到8位占位符号,其表示根节点的子节点分布情况;
69、s94)、根据步骤s93)得到的根节点的子节点分布情况重构下一层节点,具体表现为对当前根节点,为每个占用符号为1的子节点创建八叉树节点,生成节点特征;并将其输入到熵编码模型中,获取新一层的占位符号的概率分布生成多个算术解码的频率表;
70、s95)、从比特流中截取新一层的部分,并利用新的解码的频率表解析为新一层的符号序列,然后继续重构八叉树的下一层,重复上述过程直至完成八叉树的重构;
71、s96)、通过遍历重构的八叉树结构,提取所有子叶节点的中心点,完成八叉树编码的点云数据还原。
72、本发明的有益效果为:
73、1、本发明采用局部聚合采样编码,将通过多次自适应采样与点簇关联度计算选取参考帧中与当前八叉树序列关联度最高的点,点簇的整体匹配确保了引入节点的有效性与稳定性;本发明使用更关注局部依赖与感知全局变化的结构来捕获窗口内节点在空间和时间维度上的特征,从而提高了特征提取能力;本发明设计了对称全连接,减少冗余的上下文信息,增强了关键节点的表达能力;
74、2、本发明的熵编码模型由聚合嵌入和注意力模块之间的交替连接组成,聚合嵌入模块通过进行动态点引入,将已编码的高相关节点与待编码的节点簇进行匹配,避免了动态点云编解码任务中无法利用前序信息的情况;时空注意力摸块通过动态特征提取,避免了在进行八叉树节点占用预测时进行卷积等计算密集型操作;
75、3、本发明采用聚合嵌入模块以引入更多的动态特征空间,可以有效地增强当前帧和参考帧的特征,从而实现对动态点云更好的压缩性能;
76、4、本发明通过交叉和时空注意力模块来共享上下文依赖关系,学习感受域的长距离相关性和全局依赖性,从而实现更好的比特率节省。
1.一种基于局部特征匹配的动态点云编码方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种基于局部特征匹配的动态点云编码方法,其特征在于:步骤s2)中,构建的所述的基于时空注意力的熵编码模型包括交叉注意力模块、聚合嵌入模块、时空注意力模块以及多个全连接层。
3.根据权利要求2所述的一种基于局部特征匹配的动态点云编码方法,其特征在于:步骤s2)中,所述的时空注意力模块包括空间注意力模块和时间注意力模块,以及多个全连接层,所述的空间注意力模块用于感知上下文窗口中各空间位置的节点之间的依赖,所述的时间注意模块则用于学习参考上下文与当前上下文的动态依赖关系。
4.根据权利要求1所述的一种基于局部特征匹配的动态点云编码方法,其特征在于:步骤s3)中,使用交叉注意力模块聚集动态节点特征,并计算节点相似性,具体包括如下步骤:
5.根据权利要求4所述的一种基于局部特征匹配的动态点云编码方法,其特征在于:步骤s32)中,在将参考上下文分割为多个长度为t的子参考上下文前,对参考上下文中的节点进行随机打乱。
6.根据权利要求1所述的一种基于局部特征匹配的动态点云编码方法,其特征在于:步骤s4)中,采用聚合嵌入模块自适应地将具有相似特征的动态节点进行聚类,具体包括如下步骤:
7.根据权利要求3所述的一种基于局部特征匹配的动态点云编码方法,其特征在于:步骤s5)中,在空间注意力模块中,首先通过一维通道卷积对聚合的上下文窗口特征进行组织,改变特征维度并增强局部点特征之间的依赖关系表示;在通过查询向量q和关键向量k相乘获得注意力分数后,空间注意力使用两个全连接层来映射节点特征并对关键节点进行强化表征;随后再与值向量v进行叉乘得到特征序列cout。
8.根据权利要求7所述的一种基于局部特征匹配的动态点云编码方法,其特征在于:步骤s5)中,所述的空间注意力模块sa(ca)定义如下:
9.根据权利要求8所述的一种基于局部特征匹配的动态点云编码方法,其特征在于:步骤s5)中,所述的时间注意力模块首先通过时域切分操作从聚合特征ca中分离出参考节点上下文和当前节点上下文;然后所述的时间注意力模块利用平均池化操作分别从参考特征和当前序列特征中生成键向量k和查询向量q,使用全连接层从当前序列特征中生成值向量v;以发现时间点特征的相互依赖关系;然后将查询向量q和键向量k进行叉乘后经过softmax激活函数处理;最后将softmax激活函数的输出与值向量v叉乘得到输出的特征序列。
10.根据权利要求9所述的一种基于局部特征匹配的动态点云编码方法,其特征在于:
