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

用于预测点云属性编码的方法和设备与流程

2021-11-20 05:16:00 来源:中国专利 TAG:


1.本技术总体上涉及数据压缩,并且在一个具体示例中,涉及用于点云编码的方法和设备。本技术描述了用于使用预测编码来编码点云属性的方法和设备。


背景技术:

2.数据压缩在通信和计算机联网中被用于高效地存储、传输和再现信息。物理空间的三维表示经常被存储为点云,其中点云由各自具有给定空间中的几何位置的多个点构成。点云有一系列的应用。在一个示例中,它们可以用于虚拟现实(vr)和增强现实(ar)应用。在另一示例中,点云可以用于计算机视觉应用,诸如自动车辆。
3.点云数据可以非常大,尤其是当其是时变的时。例如,lidar扫描可以产生大量的稀疏点云数据,对于实时车辆控制应用而言,该点云数据必须非常快地被处理、被分析或被传输。作为另一示例,精细的vr应用可能涉及到具有快速实时用户移动的密集点云数据。因此,点云数据的高效压缩成为挑战。
4.针对用于高效编码点云的几何结构的机制已经进行了许多工作。这通常涉及到将几何空间递归拆分为越来越小的子单元,直至每个被占用的子单元仅包含一个点。已经开发出了用于高效编码该定位或几何数据的基于八叉树的编码过程。
5.除了编码几何结构之外,关于点的一个或多个属性也可以被编码。例如,在vr的情况下,可以针对每个像素来编码颜色或强度(亮度)信息。在lidar扫描的情况下,可以针对每个像素来编码反射率信息。像素可以具有备选或附加的属性。
6.提供高效且有效地压缩点云的属性数据的方法和设备会是有利的。
附图说明
7.现在将以示例的形式参考示出了本技术的示例实施例的附图,并且其中:
8.图1示出了基于八叉树的点云几何的示例;
9.图2示出了2点变换针对示例的孩子子体积的应用;
10.图3图示了区域自适应分层变换针对示例孩子节点在三个方向的递归应用;
11.图4示出了编码点云的属性数据的一个示例方法的流程图;
12.图5示出了解码点云的经压缩属性数据的示例方法的流程图;
13.图6以图解方式图示了使用自上而下编码和层间预测的针对点云属性的示例编码过程;
14.图7以图解方式图示了图6的过程中的残差ac系数的确定;
15.图8以图解方式图示了示例解码过程;
16.图9以框图形式示出了示例编码器;
17.图10以框图形式示出了示例解码器;
18.图11以二维图解形式示出了示例的上采样过程;
19.图12图示了反映五个节点或点的示例图;
20.图13示出了针对一种实现在编码密集点云的yuv属性中的压缩性能的示例图表;
21.图14示出了针对一种实现在编码稀疏点云的反射率中的另一示例图表;
22.图15示出了编码器的示例实施例的简化框图;以及
23.图16示出了解码器的示例实施例的简化框图。
24.相似的附图标记在不同示图中可以被用来表示相似的组成部分。
具体实施方式
25.本技术描述了用于编码点云的属性的方法和设备。该编码可以是自上而下编码。该方法和设备可以涉及基于对来自编码树中的双亲(parent)深度的属性数据的上采样的预测运算。该方法和设备可以采用符合dc系数性质的变换,从而用于变换孩子(child)子体积的属性几何加权和(geometry

weighted sum of attributes)的集合dc系数是双亲体积的属性几何加权和。
26.在一个方面,本技术描述了编码点云以生成经压缩的点云数据的比特流的方法,该点云位于被递归拆分并且包含该点云的点的空间内,每个点具有相应属性。该方法可以包括:在关于被递归拆分的空间的自上而下编码过程中,针对包含了包含多个点的子体积的体积,基于预测运算来确定该体积的每个被占用子体积的预测的属性几何加权和,该预测运算至少基于该体积的属性几何加权和。该方法还可以包括:对预测的属性几何加权和应用变换以产生预测的系数,并且对被占用子体积的对应原始属性几何加权和来应用该变换以产生原始系数;从原始系数和预测的系数之间的差异确定多个ac系数,其中残差系数包括一个dc系数以及该多个ac系数;并且对该多个ac系数进行编码以输出经压缩的点云数据的比特流。
27.在另一方面,本技术描述了解码经编码的点云属性的比特流的方法,该点云位于被递归拆分并且包括该点云中的点的空间内,每个点具有相应属性。该方法可以包括,在关于被递归拆分的空间的自上而下编码过程中,针对包含了包含多个点的子体积的体积,基于预测运算来确定该体积的每个被占用子体积的预测的属性几何加权和,所述预测运算至少基于该体积的属性几何加权和。该方法还可以包括:对预测的属性几何加权和应用变换以产生预测的ac系数;解码比特流以重构残差ac系数;将dc系数设置为该体积的属性几何加权和;将该残差ac系数和该dc系数加到该预测的ac系数以产生重构的系数;并且对该重构的系数进行逆变换以产生被占用子体积的重构的属性几何加权和。在最大深度处,被占用子体积的重构的属性几何加权和是重构的属性。
28.在进一步的方面,本技术描述了被配置为实现这样的编码和解码方法的编码器和解码器。
29.在再进一步的方面,本技术描述了存储计算机可执行程序指令的非瞬态计算机可读介质,该计算机可执行程序指令在被执行时使一个或多个处理器执行所描述的编码和/或解码方法。
30.在又一个方面,本技术描述了包含程序指令的计算机可读信号,该程序指令在被计算机执行时使该计算机执行所描述的编码和/或解码方法。
31.本技术还描述了计算机实现的应用,包括地形应用、地图应用、汽车工业应用、自主驾驶应用、虚拟现实应用和文化遗产应用,等等。这些计算机实现的应用包括以下过程:
接收数据流或数据文件,将该数据流或数据文件拆包以获取经压缩的点云数据的比特流,并且如上述方面及其实现中所描述的来解码该比特流。从而,这些计算机实现的应用利用了根据贯穿本技术所描述的方面及其实现的点云压缩技术。
32.本技术还描述了编码和解码点云的方法,以及用于编码和解码点云的编码器和解码器。在一些实现中,接收单元接收复用的数据,该复用数据通过将经编码的点云数据与其它经编码的数据类型(诸如元数据、图像、视频、音频和/或图形)进行复用而被获取。该接收单元包括解复用单元和至少一个解码单元(或解码器),解复用单元用于将复用的数据分离成经编码的点数据和其它经编码的数据,至少一个解码单元(或解码器)用于解码经编码的点云数据。在一些其它实现中,发射单元发射复用的数据,所述复用数据通过将经编码的点云数据与其它经编码的数据类型(诸如元数据、图像、视频、音频和/或图形的)进行复用而被获取。该发射单元包括至少一个编码单元(或编码器)和复用单元,至少一个编码单元(或编码器)用于编码点云数据,复用单元用于将经编码点云数据与其它经编码的数据组合成复用的数据。
33.通过结合附图回顾对示例的以下描述,本领域普通技术人员将理解本技术的其它方面和特征。
34.关于本发明的一个方面或实施例所描述的任何特征都可以关于一个或多个其它方面/实施例而被使用。本发明的这些和其它方面将参考本文所描述的实施例而被阐述并且变得明显。
35.在进行以下描述时,术语“节点”、“体积”和“子体积”可以互换使用。将理解,节点与体积或子体积相关联。节点是树上特定的点,其可以是内部节点或叶节点。体积或子体积是该节点所表示的有界物理空间。在一些情况下,术语“体积”可以被用来指代被定义来包含点云的最大有界空间。出于构建互连节点的树结构用于编码点云结构的目的,体积可以递归地被划分成子体积。
36.在本技术中,术语“和/或”旨在覆盖所列元素的所有可能组合和子组合,包括所列元素中单独的任何元素,任何子组合,或者所有元素,而并不一定排除附加元素。
37.在本技术中,短语
“…


中的至少一个”旨在覆盖所列元素中的任何一个或多个元素,包括所列元素中单独的任何元素,任何子组合,或者这些元素中的所有元素,而并不一定排除附加元素,并且并不一定要求这些元素中的所有元素。
38.下文中的许多示例将提及点云数据的压缩。点云提供了用于说明本技术的优势的适当示例,因为点云中的数据是庞大的并且可以使用预测运算来改进压缩。然而,将理解,点云作为示例并且本技术提供了可以出于其它目的而被应用于压缩其它类型的数据的方法和设备。
39.点云是三维坐标系中的点的集合。这些点经常旨在表示一个或多个对象的表面。每个点具有该三维坐标系中的位置(定位)。该定位可以由三个坐标(x,y,z)所表示,其可以是笛卡尔坐标系或任何其它坐标系。术语“定位”、“位置”或“几何”在本文可以被互换使用以指代空间中的点的位置。
40.点可以具有其它相关联的属性,诸如颜色,其在一些情况下也可以是诸如r、g、b或y、cb、cr的三分量值。取决于针对点云数据所期望的应用,其它相关联的属性可以包括透明度、反射率、法向量、时间戳等。
41.点云可以是静态的或动态的。例如,对象或地形的详细扫描或地图绘制可以是静态点云数据。出于机器视觉目的对环境的基于lidar的扫描则可以是动态的,因为点云(至少潜在地)随时间而变化,例如随着对体积的每次连续扫描而变化。动态点云因此是点云按时间排序的序列。
42.点云数据可以在许多应用中被使用,举几个例子,包括保护(conservation)(历史或文化对象的扫描)、地图绘制、机器视觉(诸如自主或半自主汽车)和虚拟现实系统。用于例如机器视觉的应用的动态点云数据与例如用于保护目的的静态点云数据可能十分不同。例如,汽车视觉通常涉及通过具有高捕获频率的lidar(或类似)传感器所获取的相对小分辨率、非彩色、高度动态的点云。这样的点云的目标并非供人类消费或观看,而是用于决策过程中的机器对象检测/分类。属性也可以从检测/分类算法得到,该检测/分类算法将点云分割成经检测/经分类的对象;在这样的情况下,属性值通常是点所属对象的标签。作为示例,典型的lidar帧包含数万量级的点,而高质量虚拟现实应用则要求数百万个点。可以预期,随着计算速度的提高以及新应用的发现,将随时间而出现对于更高分辨率数据的需求。
43.虽然点云数据是有用的,但是缺乏有效且高效的压缩(即编码和解码过程)可能妨碍了其接纳和部署。
44.一种更为常见的用于编码点云数据的机制是通过使用基于树的结构。在基于树的结构中,点云的有界三维体积被递归地划分成子体积。树的节点对应于子体积。是否对进一步划分子体积的决策可以基于树的分辨率和/或该子体积中是否包含任何的点。叶节点可以具有占用标志,该占用标志指示其相关联的子体积是否包含点。拆分标志可以指示节点是否具有孩子节点(即,当前体积是否已经被进一步划分成子体积)。这些标志在一些情况下可以是熵编码的,并且在一些情况下预测编码可以被使用。
45.一种常用的树结构是八叉树。在该结构中,体积/子体积全部都是立方体,并且子体积的每次拆分都产生八个进一步的子体积/子立方体。另一种常用的树结构是kd树,其中一个体积(立方体或矩形长方体)递归地被正交于轴线中的一条轴线的平面一分为二。八叉树是kd树的特殊情况,其中体积被三个平面划分,其中每个平面垂直于三条轴线中的一条轴线。这两个示例都涉及立方体或矩形长方体;然而,本技术并不被局限于这样的树结构,并且体积和子体积在一些应用中可以具有其它形状。体积的分区并不一定是分成两个子体积(kd树)或八个子体积(八叉树),而是可以涉及到其它分区,包括划分成非矩形形状或者涉及非相邻的子体积。
46.为了便于解释,本技术可以参考八叉树,并且这也是因为它们是针对汽车应用的流行候选树结构,但是将理解,本文所描述的方法和设备可以使用其它树结构来实现。
47.在本文的描述中,可能涉及点云或者其树表示的“级别”或“深度”。在子体积基于树的递归拆分中,将理解,每次连续拆分向树添加一个进一步的级别或深度,这可以深入到每个被占用的子体积包含该点云的一个点的深度或级别。子体积也可以被称作“节点”。按照惯例,在本技术中,根或者顶端节点或级别是包含点云的至少一部分的最大定义体积。例如,在一些情况下,包含点云的体积可以被分区成最大编码单元(lcu),并且每个lcu可以独立地被编码。在一些情况下,lcu可以是包含整个点云的体积。同样按照惯例,在本技术中,处于深度d(或级别)的子体积可以被子划分为处于“更大”深度d 1的子体积,使得深度d随着树的分辨率增加而增加。就此意义而言,“更大”的深度或级别是指树的自上而下的构造
中的更小子体积的更高分辨率级别,取决于针对深度索引d所选择的惯例,该树具有处于d=0或d=1的顶端的根节点。
48.本技术还可能涉及属性数据的“上采样”,其中来自级别d的属性数据被用来构建对级别d 1的属性数据的预测,即,数据被上采样以预测处于更大深度/更高分辨率的数据。这些术语或标签的惯例在一些实现中可以被修改,而并不影响本文所描述的方法和设备的实质性操作。
49.树的几何经常被无损编码。定义树结构的标志或其它比特在一些情况下可以被序列化。可以使用二进制编码器或非二进制编码器。在一些实现中可以使用预测运算来尝试进一步压缩数据。熵编码也可以改进压缩。在解码器处,经压缩的数据被无损解码以重构树的几何,使得解码器能够确定点云中的每个点的位置。
50.在一些情况下,可以使用有损压缩来编码几何。在该情况下,经编码的八叉树表示原始点云的近似,这相对于表示原始点云的八叉树的无损编码通常要求更少的比特,但却是以经编码的几何与原始几何之间的失真为代价的。在有损压缩中,在编码过程期间,可以使用根据与被有损编码、并且被重构的点云的重构点最接近的原始点的属性的插值,来找到与该重构点相关联的属性。
51.运动图像专家组(mpeg)和国际标准化组织(iso)正在持续进行有关点云压缩(pcc)的标准的讨论。例如,当前工作在有关基于几何的点云压缩的mpeg

i第9部分中有所反映。本领域普通技术人员对于针对几何点云数据的压缩的选项将是熟悉的。
52.点云可以包括的不只是点的几何位置。在一些情况下,点具有属性,如颜色、反射率、透明度、时间戳,或者能够以某个种类的值或参数来体现的其它特性。例如,颜色可以是三分量的颜色值,诸如在视频和图像中常用的rgb或yuv。
53.有两种竞争的属性编码方法正在考虑之中:细节级别(lod)和区域自适应分层变换(raht)。lod例如在“g

pcc codec description”(iso/iec jtc1/sc29/wg11,中国澳门,输出文档w18015,2018年12月)中被描述。raht例如在“compression of 3dpoint cloud using a region

adaptive hierarchical transform”(r.l.de queiroz,p.a.chou,ieee transactions on image processing,vol 25(8),2016年8月)中被描述。
54.通常,lod涉及以1至l的若干细节级别对点云(pc)进行采样以获取点的增加的集合属性分层地被编码,首先针对e1中的点,然后针对e2中(不在e1中)的点,等等。e
l
‑1中已编码的属性被用作e
l
中的属性的预测因子(predictor);例如,通过计算相邻的已编码属性的加权平均值,将此平均值减去原始属性以获取残差,并且将该残差编码。这种方法与可缩放的视频编码具有相似性。
55.lod找到了在密集点云的情况下的高效应用,作为示例,诸如在vr应用中可能遇到的。由于缺乏位置相关性,例如,其在诸如由lidar所产生的那些稀疏点云的情况下不一定表现良好。lod还是相对计算需求高的,因为它是在针对相邻的已编码属性的点的非结构化几何上工作,即,在稀疏点云中可能尤其需要相邻点的搜索,因为相邻点并不一定属于八叉树中的相邻节点,这使得使用八叉树来找到相邻点是低效的。
56.raht是可应用于2
×2×
2立方体的3d变换的形式,并且通过在x、y和z方向上连续执行2点变换而被应用以生成ac系数的集合,并且最终通过该连续变换将该立方体缩减为一个dc系数。raht是正交的并且在计算复杂度方面相对易于实现。raht找到了在稀疏点云
的情况下的高效应用,但是在密集点云的情况下不一定表现良好。下文提供有关raht变换的进一步细节。
57.根据本技术的一个方面,描述了用于编码点云属性的方法和设备,无论点云是密集的还是稀疏的,该方法和设备与lod和raht二者相比都表现良好。该方法和设备可以涉及使用每节点的变换,而不是像raht中的每方向的变换,虽然在一些实施例中该变换可能是特定于方向的变换,raht是其中的可能示例。在一些情况下,该方法和设备可以包括属性的预测,尤其是属性的深度间预测。在一些情况下,处于一个深度级别的双亲节点的属性之和至少部分被用来预测与处于下一个深度级别的其孩子子体积相关联的属性值之和。在一些这样的情况下,在预测孩子子体积的属性值之和时,可以使用来自双亲节点的一个或多个邻居的属性数据。所使用的属性之和在一些情况下可以是属性的几何加权和或均值和。在至少一个示例中,该预测运算向来自相邻节点的相邻属性应用权重,该权重反映该相邻节点到要预测其属性值的孩子子体积的几何距离(的倒数)。
58.如在图像和视频编码中所看到的,通过将像素或体素域数据映射至谱域,变换提供了压缩增益的可能性。所产生的变换域数据包括dc分量以及多个ac分量。通过将数据集中在dc分量以及几个较低频率的ac分量中,整体压缩可以被改进。在一些情况下,这进一步与有损编码方案中的系数量化组合,以相对于原始数据向经编码的数据引入失真为代价进一步改进数据压缩。
59.与视频或图像压缩相比,点云压缩的困难在于,可能并不是分区体积中的每个定位中都有点存在。朝向编码树的叶节点,一些子体积可能包含点,并且一些子体积则可能不包含点。
60.图1示出了如在深度d和更大深度d 1所反映的基于八叉树的点云几何的一个示例。在深度d,被占用的子体积由阴影来指示。当前子体积102由更暗的阴影指示。在深度d 1,当前子体积102的孩子子体积104由阴影示出。在最高分辨率的深度,被占用的孩子子体积104各自包含点云的相应点,并且在该示例中,每个点具有相应的(多个)属性值。
61.raht在最深级别(即,最高分辨率)开始,在该级别每个被占用子体积都包含单个点。为了使用raht进行属性数据压缩,首先在一个方向上(x、y或z)应用两点变换。图2以图形方式图示了在沿方向200应用时,2点变换针对示例孩子子体积104的应用201。如果在变换的方向上对齐的两个孩子子体积被占用,即具有相应的属性值,则raht将它们转换成dc分量和ac分量。如果属性分别由c1和c2所给出,则raht可以被表达为:
[0062][0063]
例如,如图2上所描绘的,两个相应的孩子子体积210和211的属性c1和c2被两点raht变换所变换成与合并的子体积212相关联的dc系数以及ac系数213。相同的过程被应用于子体积220和221的属性,子体积220和221的属性被变换成与合并的子体积222相关联的dc系数以及ac系数223。体积230并不沿方向200与另一个子体积对齐,其并不被变换(或者使用作为恒等变换的一点变换被等效变换以获取dc系数),并且其(未)变换的系数(即dc系数)与合并的子体积232相关联。
[0064]
初等变换raht(w1,w2)可以被定义为:
[0065][0066]
其中w1是第一孩子子体积所含有的点的数目,并且w2是第二孩子子体积所含有的点的数目。在最深级别的情况下,数目w
i
是1。在初等变换之后,ac系数被编码,并且dc系数被保持为与两个子节点的合并的相关联的新信息。合并的子体积具有由和w1 w2给出的相关联的点的数目。
[0067]
通过构造,该合并的子体积形成了属于垂直于变换方向的2d结构的体积集合。例如,合并的子体积212、222和232属于垂直于方向200的平面。该方法然后可以沿垂直于第一方向200的第二方向250递归地被应用。
[0068]
图3图示了raht沿示例孩子节点104的三个连续正交方向200、250和300的递归应用201、301和302。raht沿第二方向250针对合并的子体积212、222和232的第二应用301提供了与进一步合并的子体积312和322相关联的两个dc系数以及一个ac系数323。这两个进一步合并的子体积312和322属于与两个方向200和250垂直的1d结构,即这些子体积沿垂直于前两个方向200和250的方向300对齐。然后,raht沿第三方向300针对进一步合并的子体积312和322的第三应用302提供了唯一的dc系数332和ac系数333。
[0069]
结果,raht在孩子节点104上的递归应用提供了唯一的dc系数332以及ac系数的集合343(图3的示例中的213、223、323和333)。应理解,无论孩子节点104中的被占用子体积的配置如何,该性质都保持不变。
[0070]
从raht针对三个方向的应用所获取的ac系数343被编码在在比特流中。所获取的唯一dc系数332在递归编码的下一轮中成为双亲节点的“属性数据”,在该下一轮中,该双亲节点及其在八叉树中的七个同胞使用相同的raht过程被编码。该过程以自下而上的方式递归地继续进行,直至到达根节点。在根节点处,ac系数和最终的dc系数被编码在该比特流中。
[0071]
自上而下的属性编码
[0072]
在本技术的一个方面,代替于使用如raht那样的自下而上的递归变换,编码过程是自上而下的,即从根节点开始并且朝向包含个体点的子体积的级别向下推进。而且,如上文所提到的,在一些实现中,“整个节点”的变换被应用以找到子体积的dc系数和相关联的ac系数。
[0073]
在本技术的另一个方面,该变换被应用于节点内的子节点的属性几何加权和的集合;每子体积的被解码的属性几何加权和对应于向下一个级别的变换的相应dc系数。
[0074]
在本技术再进一步的方面,可以并入深度间预测。深度间预测可以被用来预测孩子节点的属性值。更具体地,该预测可以是孩子节点中的属性值的几何加权和的预测。属性几何加权和的该预测从属性的实际或原始几何加权和中被减去以获取属性的残差几何加权和。注意,可以在减法之前或减法之后应用变换。在残差的变换(或者在找到预测和原始值的差异之前对它们的变换)之后,产生残差ac系数的集合。该ac系数被编码。注意,dc系数不需要被编码,因为它是从在前(双亲)级别的系数的逆变换所得知的。
[0075]
在编码器处,几何是已知的,从而每子体积的点的数目是已知的。在解码器处,根据对经压缩的点云几何的解码,点在空间内的位置也是已知的。因此,编码器和解码器二者
都具有结构信息以得知子体积是否包含点,并且可以在八叉树中使用简单的自下而上过程找到每个节点所含有的点的数目w。
[0076]
任何给定子体积中的点的数目可以被指定为w,其中w是处于深度d的子体积中的点的数目。针对每个点p,属性值可以被指定为attribute(p)。给定节点(node)中的属性值之和可以由下式给出:
[0077][0078]
节点中的属性的均值因此为:
[0079]
a
node
=a
node
/w
node
[0080]
则属性值的几何加权和可以被定义为
[0081]
属性信息的变换在域中发生。使用该域是因为正交变换的构造隐含了“dc系数性质”,也就是dc系数
[0082]
针对从根节点向下至叶节点的每个子体积所确定的量是属性的几何加权和:在变换其孩子节点集合的属性几何加权和时,这对应于该节点的dc系数。这将允许自上而下的编码过程,其中每个层从双亲节点级别的逆变换而继承其dc值,即双亲节点的属性几何加权值。
[0083]
在编码一个节点内的孩子节点的集合时,编码器确定每个孩子节点的属性几何加权和如果有k个孩子节点并且变换被指定为t,则编码器对该k个孩子节点的集合应用该变换以产生变换域系数:
[0084][0085]
dc系数已经被得知为来自双亲节点的量因此,编码器将ac系数编码,并且然后继续在孩子节点中的每个孩子节点内执行相同的过程。
[0086]
解码器在根节点处开始并且解码根dc系数和ac系数,并且然后将它们逆变换以获取根节点的孩子节点的经解码的量针对这些孩子节点中的每个孩子节点,解码器然后使用第i个孩子的经解码的量作为该孩子节点的(经解码的)dc系数,将ac系数解码,并且应用逆变换以获取该孩子节点内的孙子节点中的每个孙子节点的经解码的属性几何加权和该过程重复进行直至解码到达叶节点并且获取最终的经解码属性值为止。
[0087]
将理解,在一些实现中,可以对变换域系数应用量化以引入有损编码。
[0088]
现在将参考图4,其示出了编码点云的属性数据的一个示例方法400的流程图。方
法400假定点云数据位于其内的三维空间已经使用基于树的递归分区(诸如八叉树)而被适当分区。从该分区以及几何的编码,编码器得知哪些叶节点包含点,并且因此得知了该树内部的每个子体积(节点)中的点的数目w。同样,编码器从原始点云数据得知与该点云中的每个点相关联的属性值。如上文所提到的,该属性可以是颜色、反射率,或者任何其它特性。
[0089]
方法400以操作402开始,利用确定该当前(双亲)节点内处于深度d 1的每个孩子节点的属性几何加权值操作402用于将处于深度d的当前(双亲)节点编码。在操作404中,孩子节点的属性几何加权值的集合被变换以产生变换域系数的集合。在操作404中所使用的变换t符合dc系数性质,从而dc系数
[0090]
在操作406中,如果当前节点是根节点,则dc系数被编码。该编码可以是熵编码。如果当前节点不是根节点,则dc系数不被编码,因为解码器将从已经将处于上方深度的系数解码而已经得知了该dc系数。
[0091]
在操作408中,ac系数被编码。该编码可以是熵编码。
[0092]
如果该过程是有损的,例如该变换包括量化步骤以将变换域系数量化,则在操作410中,就像解码器将会做的那样,编码器通过将经量化的变换域系数去量化和逆变换而重构孩子节点的(经解码的)属性几何加权和然后其将每个孩子节点的dc系数设置为其重构的属性几何加权和。
[0093]
在操作412中,编码器评估当前深度d是否还有另外的节点要编码。如果是,则如操作414所指示的,其移动到深度d的下一个子体积,并且返回到操作402。如果否,则其在操作416中确定其是否处于最大深度。如果是,则其结束,并且如果否,则其在操作418中移动到下一个更低深度d

d 1,并且返回到操作402以在下一个级别继续编码。将理解,该示例是一种宽度优先的编码示例。
[0094]
现在将参考图5,其示出了解码点云的经压缩属性数据的示例方法500的流程图。方法500假定解码器已经解码了点云的几何,因此点在经分区的三维空间中的位置已被确定。因此,解码器知晓经编码的点云的基于树的结构中每个子体积中的点的数目w。
[0095]
方法500以操作502开始。如果当前节点是根节点,则解码器解码dc系数。在操作504中,解码器从该比特流解码当前节点的ac系数。其然后将该dc系数与所解码的ac系数组合并且对该系数进行逆变换(并且在适用的情况下进行去量化)以产生经解码的属性几何加权和的集合。这些是与当前节点的孩子节点相关联的经解码的属性几何加权和。此外,在将下一个级别的节点编码时,节点的每个经解码的属性几何加权和充当该节点的(经解码的)dc系数。因此,在操作508中,解码器可以将每个孩子节点的(经解码的)dc系数设置为其对应的重构的属性几何加权和。
[0096]
在操作510中,解码器评估在当前深度d是否还有另外的节点。如果是,则返回到操作504以继续解码。如果否,则在操作512中,解码器确定其是否已经处于最大深度(例如,叶节点),并且如果是,则其结束。如果并非处于最大深度,则移动到下一个更低深度d

d 1,并且返回到操作504。
[0097]
具有深度间预测的自上而下编码
[0098]
如上文所提到的,可以应用深度间预测以改进压缩性能。深度间预测过程使用来
自双亲深度的信息,诸如来自与双亲节点相邻的节点的属性信息,以预测孩子节点的属性信息。该预测然后从孩子节点级别的实际属性信息中被减去并且残差数据被编码。使用诸如来自相邻节点的双亲级别属性信息来预测孩子深度的属性信息可以被称作“上采样”。
[0099]
在一些示例中,“相邻节点”可以包括在子体积内作为双亲节点的同胞的节点,例如八叉树结构中的七个同胞。在一些示例中,“相邻节点”可以包括与双亲节点共享面的节点。在一些示例中,“相邻节点”可以包括与双亲节点共享边的节点。在一些示例中,“相邻节点”可以包括与双亲节点共享顶点的节点。
[0100]
由于这些示例中被编码的数据是属性几何加权和所以预测运算旨在预测属性几何加权和。然而,的量级取决于点的数目w,这意味着在w大时是随渐进式地增长。因此,在一些实现中,为了在有界域中执行深度间预测,上采样过程在例如a=a/w的均值属性域中被执行,该均值属性域自然地以属性值范围为界。节点的属性几何加权值可以通过除以而被转换至均值属性域。也就是说,属性a的均值和被获取为
[0101]
该均值属性域的有界性质是有利的,原因在于其与更加物理的含义(均值属性是一个物理量,例如均值颜色,但是属性几何加权和一般则不是)和上采样过程的数值稳定性相关,因此导致了更加高效的预测。而且,拥有有界的域简化了固定点实现。
[0102]
处于深度d的属性值的均值和然后可以在上采样过程中被用来预测处于深度d 1的经上采样的属性值均值和。属性值的均值和可以是来自双亲节点和/或一个或多个相邻节点的属性值均值和。多种可能的上采样运算中的任何一种上采样运算可以被使用,下文将进一步描述其中一些示例。例如,针对孩子节点,预测的经上采样的属性值均值和a
up
然后可以在深度d 1被转换为预测的经上采样的属性几何加权和因此,该上采样针对孩子节点的集合产生了预测的属性几何加权和。该编码器将预测的属性几何加权和从实际(原始)属性几何加权和中减去以获取残差值。这些然后被变换以找到用于编码的ac系数。
[0103]
在一些情况下,变换被应用于预测的属性几何加权和以获取预测的系数,并且该变换被应用于原始属性几何加权和以获取原始系数。该预测的系数然后从该原始系数中被减去以获取用于编码的ac系数。
[0104]
现在参考图6,其以图解方式图示了使用自上而下编码和层间预测的针对点云属性的示例编码过程600。过程600被应用以编码双亲子体积602内的节点的属性信息。双亲子体积602在深度d被分区成孩子子体积的集合604。
[0105]
在深度d

1,双亲子体积602具有相邻的被占用子体积606。在该示例中,相邻子体积606的集合可以包括处于深度d

1的与双亲子体积602共享顶点的任何被占用子体积。编码器针对双亲节点以及相邻节点中的每个相邻节点来确定属性几何加权和这些属性几何加权和可以是从解码它们相应子体积的经编码系数数据、并且对该系数进行逆变换以重构几何加权和而得到的“重构的”(经解码的)属性几何加权和,尤其是在编码由于在变换过程中使用了量化而是有损的情况下。以该方式,编码器确保了其利用解码器所能够
使用的相同数据来工作。
[0106]
该编码器然后应用“归一化”,以通过除以相应的值而将处于深度d

1的双亲子体积602和相邻子体积606中的每个相邻子体积的属性几何加权和变换至均值属性域。这些值对于编码器和解码器二者都是已知的,这是因为点云的几何对于二者是已知的。作为结果,针对双亲节点中的每个双亲节点以及其被占用的相邻节点中的每个被占用的相邻节点,编码器确定属性均值和a
i
/w
i
。使用这些值,编码器应用上采样运算以针对双亲子体积602的每个被占用孩子子体积604来生成预测的属性均值和a
i,up
/w
i

[0107]
该编码器随然后将预测的属性均值和逆归一化以获取每个被占用孩子子体积604的预测的属性几何加权和a
i,up
/w
i

[0108]
在该示例中,该编码器然后将预测的属性几何加权和进行变换以获取预测的变换域系数。每个孩子子体积604的原始属性几何加权和由编码器确定,并且被变换以生成原始变换域系数。预测的ac系数被从原始ac系数中被减去以实现残差ac系数,编码器随后对该残差ac系数进行熵编码以输出双亲节点602的经编码数据的比特流。
[0109]
图7以图解方式图示了通过从原始系数减去预测的系数而对残差ac系数的确定。
[0110]
图8以图解方式图示了解码过程800的示例。解码器采用相同的预测过程来生成预测的属性几何加权和其还通过熵解码和逆量化来重构残差ac系数。注意,dc系数并不直接从比特流被获取,而是通过处于双亲深度(depth)d

1的已经被重构并且被逆变换的系数而对解码器是已知的。(经解码的)dc分量由双亲节点的重构的属性几何加权和给出,
[0111]
预测的ac系数然后被加到重构的残差ac系数以产生重构的ac系数。这些在本文备选地可以被称作经解码的系数。从双亲深度获取的dc系数以及该重构的ac系数然后经受逆变换以获取深度d=1的孩子子体积604的重构的属性几何加权和
[0112]
现在参考图9,其以框图形式示出了用于编码点云的属性数据的示例编码器900。编码器900可以使用硬件和软件的组合来实现,诸如一个或多个处理单元、存储器和处理器可读指令。为了清楚且便于解释,编码器900的与点云几何的编码相关的部分或者辅助元件(诸如输入、输出、用户接口设备)或者其它这样的部件并未被图示。
[0113]
编码器900具有原始点云属性信息902和点云几何904。编码器900包括dc系数性质兼容的变换运算器906,以将属性几何加权和形式的原始点云属性变换成变换域系数。
[0114]
相同的变换运算器908被应用于从预测/上采样运算器910所获取的预测的属性几何加权和,该预测/上采样运算器910使用来自双亲节点及其邻居中一个或多个邻居(即在上方深度)的属性几何加权和作为其输入。变换运算器908的输出是预测的ac系数的集合,该预测的ac系数的集合然后从来自变换运算器906的原始ac系数中被减去以产生残差ac系数。这些残差ac系数被量化器和编码器920量化并且编码,以产生经压缩点云属性数据的输出比特流。
[0115]
对预测/上采样运算器910的输入经由解码反馈回路912而被提供,经量化的残差
ac系数在该解码反馈回路912中在逆量化器922中被逆量化,并且然后被加到预测的ac系数以产生重构的ac系数。连同dc系数一起,该系数的集合然后由逆变换运算器914进行逆变换,以产生针对当前节点的孩子节点的重构的属性几何加权和,其随后将充当对向下的下一个级别的预测运算的输入。
[0116]
图10中以框图形式图示了对应的解码器1000的示例。从之前已经解码的点云位置数据,解码器1000具有其可用的点云几何。为了便于解释,与解码相关的元件并不一定被图示。
[0117]
解码器1000包括解码器和逆量化器1002,以将比特流中被编码的残差ac系数解码和逆量化。解码器1002包括预测/上采样运算器1010,其反映来自编码器900(图9)的相同部件910(图9)。预测/上采样运算器1010采取来自上方深度(例如双亲节点以及一个或多个相邻节点)的属性数据的经解码/经重构的几何加权和,并且产生预测的属性几何加权和。那些预测的属性几何加权和经受变换1004以产生预测的ac系数。那些预测的ac系数被加到来自解码器和逆量化器1002的重构的残差ac系数以产生重构的ac系数。逆变换1006被应用以获取当前节点的重构的属性几何加权和。由于解码器1000是以自上而下的重构来处理数据,所以一旦其到达叶节点,该经解码经逆变换的属性数据就产生了每个点的重构的属性信息。
[0118]
上采样运算
[0119]
如上文所提到的,预测运算采用来自深度d

1的属性信息的上采样以针对处于d的节点产生预测的属性几何加权值。在这些示例中,上采样在属性均值和a/w的域中被执行,以确保对所要上采样的值的界限以及数值稳定性,但是将理解,在一些实现中可以使用域中的预测运算。
[0120]
现在将参考图11,其以二维图解形式示出了上采样过程1100。在深度d

1存在双亲节点1102以及相邻节点1104a、1104b和1104c(统称为1104)。为了清楚以及便于解释,该示例是以二维被图示,但是鉴于本文的描述将理解针对三维的扩展。
[0121]
双亲节点1102具有要被预测属性信息的孩子节点1106。双亲节点1102以及相邻节点1104中的每个相邻节点的dc系数是已知的。由于已经通过对点云几何构造编码/解码而得知了树的几何,所以任何节点中的点的数目w对于编码器和解码器二者都是已知的。因此,通过除以相应节点的相应值,等同于双亲节点1102以及相邻节点1104的属性几何加权和的dc系数可以被转换为属性均值和a/w。
[0122]
上采样运算然后被应用以生成针对孩子节点1106的预测的属性值均值和a
up
。该上采样运算采用双亲节点1102及其被占用的相邻节点1104的属性均值和作为输入。在该示例实现中,该上采样运算还考虑将孩子节点1106与相应双亲节点1102和相邻节点1104关联的距离度量。该距离度量可以反映出对应于孩子节点1106的子体积的中心点与对应于相应双亲节点1102或相邻节点1104的子体积的中心点之间的距离。该距离的倒数可以反映出来自处于深度d

1的节点和处于深度d的节点的属性信息之间的相关性的相对权重。在上采样运算的其它实现中可以使用其它的加权因子或者附加的加权因子。在一个示例中,孩子节点1102的预测的属性均值和可以由以下加权和给出:
[0123][0124]
在一些实现中,可以使用fir(有限脉冲响应)滤波器来实现上采样。
[0125]
全节点变换
[0126]
如上文所提到的,可以在x、y和z方向上连续应用两点raht变换,以找到针对基于八叉树的子体积的dc变换域系数和ac系数。回顾由以下所给出的raht变换的公式:
[0127][0128]
在实际的实现中,该变换以三个级联的步骤来执行,例如通过将其在x方向上、然后在y方向上、然后在z方向上应用。然而,在数学上可能将两个初等raht变换组合以获取单个正交的三点变换。针对更多点的概括通过归纳法来得出。令为与各自含有w
i
个点的三个节点相关联的属性信息。第一初等raht变换被应用于前两个节点以获取第一dc系数dc
2p
、第一ac系数ac1和未改变的第三节点信息
[0129][0130]
然后第二初级raht变换被应用于第一dc系数和第三节点信息。作为结果,得到将该三个点组合的第二dc系数以及两个ac系数。
[0131][0132]
然后将两个初等两点raht变换组合的三点正交变换的正交矩阵raht(w1,w2,w3)为积:
[0133][0134]
记住我们接下来可能考虑图变换。图变换是在点的任何集合上构造变换的通用框架。该数学构造在下文详细描述。
[0135]
现在将参考图12,其图示了反映五个节点或点的示例图。该点的集合可以被指定为e。对于e中的两个不同的点p
i
≠p
j
,这两个点之间的相关性因子d
ij
可以被确定。在许多示例实现中,该相关性因子是和两个点之间的距离的减函数。例如,可以采取欧几里得距离的
倒数(按照惯例带有负号):
[0136]
d
ij


1/||p
j

p
i
||2[0137]
可以通过如下逐行对项求和而获取对角线项:
[0138]
d
ii



j≠i
d
ij
[0139]
通过构造,该矩阵是对称且对角占优的。因此,其在正交基中是可对角化的:
[0140]
d=vav

,其中v
t
=v
‑1[0141]
可以定义laplace双线性算子,以通过以下来对与点的集合e相关联的属性的配对(a,b)进行运算:
[0142]
lap(a,b):=a
t
db
[0143]
可以推导出范数和距离:
[0144]
||a||
lap
:=lap(a,a)=a
t
da
[0145]
d
lap
(a,b):=||b

d||
lap
[0146]
例如,该距离可以测量原始属性attribute及其经编码版本attribute
code
之间的失真δ(在以下表达式中,符号α替代attribute使用):
[0147]
δ=d
lap
(α,α
code
)=(α

α
code
)
t
d(α

α
code
)
[0148]
使用矩阵d的正交分解,可能获取:
[0149][0150]
其中v
i
是v的第i列。因此,针对点的集合e的图变换gt自然为:
[0151]
gt(e):=v
t
[0152]
通过构造,该变换是正交的,并且非常适于通过首先对经变换的属性系数应用恒定步长量化器并且随后对量化的系数进行熵编码而进行的属性压缩。当被应用于点的大型集合时,图变换在压缩效率方面是有力的,但是却不如raht实用,原因在于针对n个点必须以典型复杂度o(n2)来执行矩阵的对角线分解。
[0153]
仍然考虑图12的图,认为其具有n个节点,其中每个节点含有相应数目w
i
个点。图γ从与节点相关联的立方体的中心被构造。从图表γ和权重w
i
可以构造出“加权图变换”wgt(w
i
,γ)。这样的变换会将与节点相关联的属性信息c
i
变换成dc系数和n

1个ac系数。
[0154][0155]
在一些实施例中,为了与针对点云的属性编码相兼容,该变换要反映出此关系(使用之前的符号记法并且w为w
i
的和):
[0156][0157]
其在上文被称作“dc系数性质”。因此,矩阵d利用元素d
ij
被定义为针对图表γ所获取的图变换的laplace矩阵。随后,矩阵d
w
(即加权laplace矩阵)可以被定义为:
[0158]
[0159][0160]
由于该矩阵是实数且对称的,所以其可以如下被分解:
[0161]
d
w
=vλv
t
,其中v
t
=v
‑1[0162]
并且类似于非加权的图变换,加权图变换被定义为:
[0163]
wgt(w
i
,y):=v
t
[0164]
可以示出矩阵d
w
的核是非零的,
[0165][0166]
并且正交分解中相关联的列矢量v为:
[0167][0168]
这指示加权图变换wgt(w
i
,γ)满足上文陈述的dc系数性质。如果所有权重w
i
都具有相同的值w,加权图变换与公知的非加权图变换是相同的。这在被应用于被占用叶节点时是特别确定的,其中系统地w=1。有趣的是,该两点加权图变换与两点初等raht变换是相同的:
[0169][0170]
这意味着raht是wgt的特殊情况。
[0171]
本编码和解码过程可以采用符合dc系数性质的任何变换。这包括上文所描述的wgt,包括但不限于raht。
[0172]
针对其它树结构的应用
[0173]
上文所描述的示例是基于八叉树几何,其中每个节点具有八个孩子,该八个孩子将与该节点相关联的体积划分成八个子体积。最为常见的八叉树具有与节点相关联的立方体(或长方体)并且相同深度的所有立方体(或长方体)具有共同的大小。
[0174]
点云表示的另一种流行的树结构是kd树。它们基本上将一个体积拆分为两个子体积,例如通过沿平行于一个面的平面拆分初始长方体而将该长方体拆分成两个子长方体。这两个子长方体并不一定具有相同的大小,即分区可以是不均等的。拆分的方向(在三个方向之中)以及拆分的非均等性(如果有)是表示kd树所需要的信息。
[0175]
通过直接将初等raht变换直接应用于两个子体积以获取变换t
node
,本文所描述的编码和解码过程可以在kd树的中被应用。该上采样过程自然地在垂直于拆分平面的方向上被执行。
[0176]
更一般地,该编码和解码过程可以被应用于任何树结构,因为使用加权和的上采样过程可以被应用于体积和子体积的任何配置。例如,距当前节点固定阈值距离内的所有
相邻节点都可以被作为当前节点的被占用孩子节点的预测因子而被用于均值属性的上采样。只要dc系数性质保持不变,上文所描述的原理就可应用于其它的结构、属性、变换等。广义的加权图变换可以被应用于任何树并且确保dc系数的性质,因此提供了涉及任何树结构的另一个实施例。
[0177]
对压缩性能的影响
[0178]
所描述的技术对于密集点云和稀疏点云二者都可以表现良好。它们可以与基于raht的过程和基于lod的过程相比较。
[0179]
图13示出了针对一种实现在编码密集点云的yuv属性中的压缩性能的示例图表1300。图表1300在x轴上指示每点比特(bits

per

point)并且在y轴上指示峰值信噪比(psnr)。该图表包括本过程、raht和lod。将要注意的是,在组合yuv度量上,本过程的实施例的表现至少像lod一样好或者比lod好,并且显著比raht好。
[0180]
图14示出了针对一种实现在编码稀疏点云的反射率中的另一示例图表1400。图形1400再次是在x轴上示出每点比特以及在y轴上示出psnr。将要注意的是,本过程的实施例的表现大致上和raht一样好并且远好于lod。
[0181]
所提议的组合变换和上采样的方法的复杂度优势
[0182]
所提出方法的复杂度是变换过程和上采样过程的复杂度的相加。在一些实施例中,由于两点raht变换的简易性及其递归性质,关于变换过程可以维持非常低的复杂度。上采样过程在空间上是非常局部的,考虑到相邻节点,节点通常与要针对其属性进行上采样的双亲节点共享面、边或顶点。
[0183]
相比之下,lod方法计算需求要高的多,特别是针对稀疏点云,因为它必须寻找长程(long

range)属性相关性以允许高效的属性预测。这意味着计算密集的长程相邻点搜索。
[0184]
在目前所描述的方法中,变换和上采样的组合自动从长程相关性获益,因为远离的两个点在足够低的深度(即,接近于根节点)必需属于两个邻接的节点。在该足够低的深度,变换和上采样确保了两个点之间的相关性被使用。
[0185]
现在参考图15,其示出了编码器1500的示例实施例的简化框图。解码器1500包括处理器1502、存储器1504和编码应用1506。编码应用1506可以包括被存储在存储器1504中并且包含指令的计算机程序或应用,该指令在被执行时使处理器1502执行诸如本文所描述的那些操作。例如,编码应用1506可以编码并且输出根据本文所描述的过程所编码的比特流。将理解,编码应用1506可以被存储在非瞬态计算机可读介质上,诸如压缩光盘、闪存存储器设备、随机存取存储器、硬盘等。当该指令被执行时,处理器1502执行该指令中指定的操作和功能,从而作为实现所描述的(多个)过程的专用处理器而操作。这样的处理器在一些示例中可以被称作“处理器电路”或“处理器电路装置”。
[0186]
现在还参考图16,其示出了解码器1600的示例实施例的简化框图。解码器1600包括处理器1602、存储器1604和解码应用1606。解码应用1606可以包括被存储在存储器1604中并且包含指令的计算机程序或应用,该指令在被执行时使处理器1602执行诸如本文所描述的那些操作。将理解,解码应用1606可以被存储在计算机可读介质上,诸如压缩光盘、闪存存储器设备、随机存取存储器、硬盘等。当该指令被执行时,处理器1602执行该指令中指定的操作和功能,从而作为实现所描述的(多个)过程的专用处理器而操作。这样的处理器
在一些示例中可以被称作“处理器电路”或“处理器电路装置”。
[0187]
将理解,根据本技术的解码器和/或编码器可以在多种计算设备中被实现,包括但不限于服务器、适当被编程的通用计算机、机器视觉系统和移动设备。该解码器或编码器可以以软件方式被实现,该软件包含用于配置一个或多个处理器以执行本文所描述的功能的指令。该软件指令可以被存储在任何适当的非瞬态计算机可读存储器上,包括cd、ram、rom、闪存等。
[0188]
将理解,本文所描述的解码器和/或编码器以及实现所描述的用于配置编码器或解码器的方法/过程的模块、例程、过程、线程或其它软件组件可以使用标准计算机编程技术和语言来实现。本技术并不限于特定的处理器、计算机语言、计算机编程环境、数据结构、其它这样的实现细节。本领域技术人员将认识到,所描述的过程可以被实现为被存储在易失性或非易失性存储器中的计算机可执行代码的一部分,被实现为专用集成电路(asic)的一部分,等等。
[0189]
本技术还提供了一种对通过应用依据本技术的编码过程所产生的数据进行编码的计算机可读信号。
[0190]
可以作出所描述实施例的某些适配和修改。因此,上文所讨论的实施例被认为是说明性而非限制性。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献