基于八叉树分解的三维模型的高效压缩的制作方法

xiaoxiao2020-9-10  3

基于八叉树分解的三维模型的高效压缩的制作方法
【专利摘要】为了降低八叉树的占用码的熵,以及提高压缩效率,本原理提供了按照3D模型的几何性质遍历一个单元中的分单元的方法和装置。也就是说,为每个分单元计算表面平滑性度量,并按表面平滑性度量的预定次序遍历分单元。为了计算表面平滑性度量,将分单元与其父单元的相邻单元连接以形成三角形和角度。随后,将三角形面积和角度度量用于计算表面平滑性度量。当在3D模型数据中没有连接性信息可用时,本原理还提供了估计连接性的方法和装置。
【专利说明】基于八叉树分解的三维模型的高效压缩

【技术领域】
[0001] 本发明涉及生成代表3D模型的位流的方法和装置,以及解码代表3D模型的位流 的方法和装置。

【背景技术】
[0002] 3D图形数据广泛用在像视频游戏、虚拟现实、和科学可视化那样的多媒体应用中。 随着数字获取技术的迅速进步,具有数百万个点的3D模型越来越常见。
[0003] 3D对象的传统网格表示需要指定几何和布局两者。相反,在基于点的3D模型表示 中,没有连接性约束地进行处理和呈现,并且可以更容易地表示复杂布局的对象。因此,基 于点的3D模型表示对于具有数百万个点的3D模型来说可能是理想选择。对于这样的大量 数据,高效压缩3D模型变得非常重要。


【发明内容】

[0004] 本原理提供了一种生成或解码代表3D模型的位流的方法,其包含如下步骤:针对 一个八叉树中的一个单元的多个分单元的每一个确定表面平滑性度量,该八叉树代表3D 模型;以及如下所述响应于该分单元的表面平滑性度量确定该单元的分单元的遍历次序。 本原理也提供了一种执行这些步骤的装置。
[0005] 本原理还提供了一种生成或解码代表3D模型的位流的方法,其包含如下步骤:针 对一个八叉树中的一个单元的多个分单元的每一个确定表面平滑性度量,该八叉树代表3D 模型;以及将该单元的分单元的遍历次序确定为该分单元的表面平滑性度量的升序或降 序,其中确定表面平滑性度量的步骤包含,针对该单元的特定分单元:响应于该特定分单元 和该单元的相邻单元形成三角形,其中每个三角形通过代表该特定分单元的点和代表该相 邻单元中的两个单元的两个点来定义;确定该三角形中的每一个的面积;以及如下所述将 该特定分单元的表面平滑性度量确定为多个三角形的面积的总和。本原理也提供了一种执 行这些步骤的装置。
[0006] 本原理还提供了一种上面存储着按照上述的方法生成或解码位流的指令的计算 机可读存储介质。
[0007] 本原理还提供了一种上面存储着按照上述的方法生成的位流的计算机可读存储 介质。

【专利附图】

【附图说明】
[0008] 图1A和1B是描绘在不同细节层次(L0D)上重构的基于点的3D模型的图示示例, 其中图1B中的点多于图1A中的点;
[0009] 图2A是描绘子单元遍历次序确定的图示示例,以及图2B是描绘位重新排序之前 和之后的占用码的直方图的图示示例;
[0010] 图3是描绘依照本原理的实施例编码3D模型的示例的流程图;
[0011] 图4是描绘依照本原理的实施例识别和排序相邻单元以便估计连接性的示例的 流程图;
[0012] 图5是描绘依照本原理的实施例、用于确定当前单元1?及其相邻单元111,11 2,113和 n4的投影方向的坐标轴和矢量的图示示例;
[0013] 图6是描绘依照本原理的实施例、单元1?的分单元Pl,p2, p3和p4、和单元nQ的 1-环邻居的图示示例;
[0014] 图7是描绘依照本原理的实施例计算一个单元中的分单元的表面平滑性度量的 示例的流程图;
[0015] 图8是描绘依照本原理的实施例解码3D模型的示例的流程图;
[0016] 图9是描绘依照本原理的实施例如何计算一个八叉树中的下一个层次中非空单 元的数量的示例的图示示例;
[0017] 图10是描绘依照本原理的实施例的示例性编码器的框图;
[0018] 图11是描绘依照本原理的实施例的示例性解码器的框图;
[0019] 图12是描绘可以用在本原理的一种或多种实现中的数据处理系统的一个示例的 框图;以及
[0020] 图13是描绘可以用在本原理的一种或多种实现中的数据处理系统的另一个示例 的框图。

【具体实施方式】
[0021] 3D模型压缩可以根据对象空间的基于八叉树的划分来进行。在基于八叉树的做法 中,最初围绕3D模型的所有点构建边界框。一开始就把所有3D点的边界框当作单个单元。 为了构建八叉树,递归地将一个单元细分成八个子单元(也表示为分单元),直到每个非空 单元小到足以只包含一个顶点或使顶点位置能够得到足够精确重构。只有非空子单元将得 到进一步细分。
[0022] 在基于八叉树的做法中,每个单元的位置用该单元的几何中心表示。八叉树结构 中的每个层次上的非空单元给出原始3D模型的L0D(细节层次)。由于可以在不同L0D上 恢复3D模型,所以基于八叉树的表示可以实现3D模型的渐进压缩。例如,图1A和1B例示 了在不同L0D上重构的基于点的3D模型,其中图1B中的点多于图1A中的点。
[0023] 在八叉树表示中,可以使用1-位标志来指示子单元是否是非空的,例如,用"1" 指示非空而用"〇"指示空。对于每次八叉树单元细分,如果按照遍历次序遍历子单元,则 可以获得表示成占用码的8-位位串。例如,在描述在图9中的示例性八叉树的第一层次 上占用码是"11111111"(910)。当1-位标志是"1"时,可以将相应子单元进一步划分 成8个子单元,并且该细分可以用另一个占用码,例如,图9中的八叉树的第二层次上的 "11000000"(920)来表示。注意,该占用码依赖于遍历次序。
[0024] 为了降低占用码的熵,以及因此提高压缩效率,可以重新排序每个占用码中的位。 在图2A中例示了基于估计的相对概率确定子单元遍历次序以及将"1"-位推向末端的一种 现有方法,其中和C 3是子单元,以及C2和C3是非空的。近似切面p由父代表〇上 的法线η决定,咖是与p的距离是dji = 1,2,3)的相邻代表。子单元遍历的最终次序用 箭头示出。在图2B中描述了位重新排序之前和之后的占用码的直方图。如图2B所示,在 位重新排序之后在几个数值上出现了高峰,导致熵降低。
[0025] 本原理提供了高效压缩通过八叉树数据结构表示的3D模型的方法和装置。我们 观察到3D模型中的表面通常是非常平滑的。例如,两个相邻顶点的法线之间的角度通常是 小的。基于观察到的几何性质,本原理提出了表面平滑性度量,并基于它们的表面平滑性度 量重新排序占用码中的位。
[0026] 图3例示了编码3D模型的示例性方法300。方法300从步骤305开始。在步骤 310中,输入3D模型数据并进行初始化。例如,初始化步骤可以将3D对象划分成八个分单 元并设置固定遍历次序。将相同的固定遍历次序用于解码第一层次。
[0027] 方法300可以逐个层次地进行。在步骤320中,进一步划分3D对象以形成八叉树 的新层次。对于当前层次上的每个非空单元,需要生成占用码。
[0028] 从步骤325开始循环(1),以便遍及当前层次上的每个非空单元地循环。对于当前 层次上的特定非空单元,在步骤330中识别和排序它的相邻单元以便估计连接性。当有连 接性信息可用时,例如,当提供了 3D网格模型时,可以跳过这个步骤。对于特定单元,从步 骤335开始循环(2),以便遍及它的所有分单元地循环。对于特定单元中的每个分单元,可 以在步骤340中计算表面平滑性度量。在步骤350中结束循环(2)。可以在步骤360中将 遍历次序确定为预定次序,例如,分单元的表面平滑性度量的升序或降序。
[0029] 在步骤365中,基于遍历次序为当前单元生成占用码。在步骤370中结束循环(1)。 在步骤380中,检验是否需要进一步划分3D对象。如果需要的话,则使控制返回到步骤320。 否则,在步骤390中,例如,使用熵编码器编码为3D模型生成的占用码。在步骤399中结束 方法300。
[0030] 在八叉树的较低层次(例如,层次0到6)上,3D表示较粗略,因为只有较少的点可 用。可以在处理了每个较低层次之后(370)执行平滑步骤。可以将现有方法用于平滑,例 如,所有点被定义成它们在一个平面上的投影的平滑形式取代。
[0031] 在处理当前层次中的所有非空单元的循环(1)中,可以按八叉树的广度优先遍历 处理当前层次中的单元。为了进一步提高压缩性能,可以较早地处理带入最大误差的那些 单元。这不仅可以在解码期间导致信噪比(SNR)的较快提高,而且可以提高总压缩性能。在 现有方法中,为了估计哪些单元带入最大误差,使用与当前单元连接的相邻单元的数量。尤 其,相邻单元的数量越大,就越早处理该单元。注意,在编码器和解码器上应该使用相同次 序来处理一个层次上的单元。
[0032] 在下文中,将进一步详细描述识别和排序相邻单元的步骤(330)以及计算表面平 滑性度量的步骤(340)。
[0033] 识别和棑序相邻单元
[0034] 在3D网格模型中,边指示两个顶点之间的相邻关系。在基于点的3D模型中,没有 边,需要基于几何性质估计"相邻"关系。图4例示了识别和排序相邻单元以便估计当前单 元的连接性的示例性方法400。方法400可以用于执行方法300中的步骤330。
[0035] 在八叉树的每个层次上,可以为当前层次上的所有点构建k-维树。对于单元rv 可以在步骤410中识别它的K个邻居。例如,可以将与1?最接近的单元或与1?的距离小于 阈值的单元识别为相邻单元。K的值可以随应用而变。在一个示例性实施例中,K = 4或5。
[0036] 为了识别连接性信息,可以将Κ个邻居投影到2D平面上。在步骤420中,选择投 影方向dir,以及在步骤430中,按照投影方向dir将单元nQ和K个相邻单元投影到2D平 面。
[0037] 为了选择投影方向,如图5所示,将坐标轴(S卩,X轴,Υ轴或Ζ轴)表示成矢量 iy,和,以及将连接单元nQ和相邻单元nji = 1,......,K)的直线表示成 首先,计算轴与之间的点积的绝对值。对于每个轴,可以找出点积的最大值,并且对于 X轴表示成Vx,对于Y轴表示成Vy,或对于Z轴表示成Vz。在数学上,可以将该计算公式化 成:
[0038] ¥x =mM|{vr5ve)|, Vz = i = ⑴
[0039] 然后,将与Vx,VdPVz中的最小值相对应的轴选为投影方向dir。这样的投影方向 保证了这些点在投影平面上更扩散,并且确保了数值健壮性。注意,由于投影方向是针对一 个单元局部地确定的,所以它可能随单元而变。
[0040] 在获得投影方向之后,可以将当前单元%及其相邻单元nji = 1,......,K)投 影到2D平面。然后可以在步骤440中围绕单元%按顺时针或逆时针次序排序投影的相邻 单元。随后,在步骤450中生成当前单元nQ的1-环邻居,以及在步骤460中识别连接性。
[0041] 邻居识别和排序是本原理的特征。为了提高性能,随着在一个层次上继续单元的 细分,可以通过更精细表示来更新相邻单元。在一个实施例中,当已经细分相同层次上的相 邻单元时,可以将新生成的子单元用于更新相邻关系。在另一个实施例中,当还没有细分相 邻单元时,可以使用现有方法来估计哪些分单元可能是非空的,并且可以将估计的非空分 单元用于更新相邻关系。
[0042] 图6例示了估计连接性的示例。在这个示例中,使用顺时针次序将相邻单元排序 成和rv随后,加入边来指示如下单元对之间的连接性mm,n 2n3,n3n4,n4n5, rW响,n2n0, n3n0, n4n0, n5n0。也就是说,将当前单元与每个所识另ij相邻单元连接,并且连 接在排定次序中彼此相邻的两个相邻单元。因此,在排序了相邻单元以及加入边之后,形成 当前单元%的1-环邻居并识别出连接性。也就是说,为当前单元及其相邻单元生成局部 网格。
[0043] 与已存在于输入3D网格模型之中的连接性信息不同,需要从输入的3D基于点的 模型中估计连接性,例如,使用上述的方法。由于在输入3D模型中不存在,所以可以将这样 基于点的模型中的估计的连接性信息称为"虚拟"连接性。
[0044] 计筧表面平滑件度量
[0045] 在本原理中,将连接性信息用于生成表面平滑性度量,该表面平滑性度量可以用 于确定一个单元中的分单元的遍历次序。
[0046] 在一个实施例中,可以将表面平滑性度量定义成三角形面积的总和,其中该三角 形通过分单元和相邻单元来定义。假设将当前单元的分单元表示成Pj,j = 1,......,8, 则可以将分单元h的表面平滑性度量定义成:
[0047] measurearea,』=S ( Δ PjnA) +S ( Δ ρ』η2η3) +· · · +S ( Δ pPh%) +S ( Δ ρρκη) , (2)
[0048] 其中S(Apjnxny) (χ, y = 1, . . . , Κ)代表三角形Apjnxny的面积。也就是说,使用 分单元h和两个相邻单元形成,其中两个相邻单元是连接或"虚拟"连接的(即, 按排定次序彼此相邻)。
[0049] 在另一个实施例中,可以将表面平滑性度量定义成角度度量的总和,其中该角度 通过分单元和相邻单元来定义。对于分单元IV j = 1,......,8,可以将表面平滑性度量 定义成:
[0050] measuremgle,』=2 π - [ Θ ( Z r^PjnJ + θ ( Ζ η2ρ』η3) +· · · + θ ( Ζ ΠηΡ』%) + θ ( Ζ ηκρ』 rO]· (3)
[0051] 也就是说,使用分单元Pj和两个相连相邻单元形成角度Z nxPjny(x, y = 1,..., K),以及将它的角度度量θ ( Z nxPjny)(弧度)用于计算表面平滑性度量。
[0052] 当将图6用作3D点的2D表示的一个示例时,可以按如下计算使用三角形面积的 表面平滑性度量:
[0053] measurearea,」=S ( Δ PjnA) +S ( Δ ρ』η2η3) +S ( Δ ρ』η3η4) +S ( Δ ρ』η4η5) +S ( Δ Pjn;^),j =1,··· ,4,
[0054] 以及可以按如下计算使用角度度量的表面平滑性度量:
[0055] measureangle,』=2 π - [ Θ ( Z 11^?) + θ ( Ζ η2ρ』η3) + θ ( Ζ η3ρ』η4) + θ ( Ζ η4ρ』η5) + Θ ( Z rigp^i)].
[0056] measuremea,j和measuremgle,j两者都度量3D对象的表面的局部平滑性,以及可以 用在步骤340中。当measure aMa,」或measuremgle;,」越小时,表面就表现得越平坦和越平滑。 基于观察,3D对象的表面通常是平滑的,measure aMa,」或measureanglf;,」越小,相应分单元越 有可能是非空的。
[0057] 图7例示了计算表面平滑性度量、也可以用在步骤340中的另一种示例性方法 700。在方法700中,在measuremea,j与measureangle,j之间自适应地选择表面平滑性度量。 一般说来,表面平滑性度量越大,数值性能就越健壮。在步骤710中,将分单元与相邻单元 连接以形成三角形和角度。然后为每个分单元计算measure^,」和measure mgleU。在步骤 73〇 中检验 Σρι jmeasure^^C (Σρι ,8(2Ji-measureangle,J)是否成立,其中 α 是 缩放因子。在一个示例中,α =10。如果步骤730中的不等式成立,则在步骤740中选择 measurearea,j。否贝U,在步骤 750 中选择 measureangle,j。
[0058] 在数学上,可以将该选择表达成如下:
[0059]

【权利要求】
1. 一种生成或解码代表3D模型的位流的方法,其包含如下步骤: 针对一个八叉树中的一个单元的多个分单元的每一个确定(340)表面平滑性度量,该 八叉树代表3D模型;以及 响应于该分单元的表面平滑性度量确定(360)该单元的分单元的遍历次序。
2. 如权利要求1所述的方法,其中该遍历次序对应于表面平滑性度量的升序或降序。
3. 如权利要求1所述的方法,其中针对该单元的特定分单元,该确定表面平滑性度量 的步骤包含: 响应于该特定分单元和该单元的相邻单元形成(710)多个三角形,其中每个三角形通 过代表该特定分单元的点和代表该相邻单元中的两个单元的两个点来定义; 确定(720)该三角形中的每一个的面积;以及 响应于该多个三角形的面积确定(740)该特定分单元的表面平滑性度量。
4. 如权利要求3所述的方法,其中将该表面平滑性度量确定为该面积的总和。
5. 如权利要求1所述的方法,其中针对该单元的特定分单元,该确定表面平滑性度量 的步骤包含: 响应于该特定分单元和该单元的相邻单元形成(710)多个角度,其中每个角度通过代 表该特定分单元的点和代表该相邻单元中的两个单元的两个点来定义,该代表该特定分单 元的点对应于每个角度的顶点; 确定(720)该角度中的每一个的角度度量;以及 响应于该多个角度的角度度量确定(750)该特定分单元的表面平滑性度量。
6. 如权利要求5所述的方法,其中将该表面平滑性度量确定为该角度度量的总和。
7. 如权利要求1所述的方法,其中响应于该表面平滑性度量的幅度,根据如权利要求3 和5所述的方法之一选择该确定表面平滑性度量的步骤(730)。
8. 如权利要求3或5所述的方法,其中该相邻单元中的两个单元是相连的。
9. 如权利要求3或5所述的方法,进一步包含如下步骤: 将多个单元确定(410)为相邻单元; 确定(440)相邻单元的排定次序,其中该相邻单元中的两个单元按排定次序彼此相 邻;以及 连接(460)该相邻单元中的两个单元。
10. 如权利要求9所述的方法,其中该确定排定次序的步骤包含如下步骤: 响应于该单元和该相邻单元确定(420)投影方向; 将该单元和该相邻单元投影(430)投影到2D平面;以及 在2D平面中围绕该单元按顺时针或逆时针次序排序(440)该相邻单元。
11. 如权利要求10所述的方法,其中该确定投影方向的步骤包含如下步骤: 形成多个矢量,该多个矢量的每一个通过该单元和该相邻单元中的一个单元来定义; 为三个坐标轴的每个轴确定一组绝对内积,其中该组绝对内积中的每个绝对内积在相 应坐标轴与该多个矢量的对应一个之间形成; 为该组绝对内积确定最小绝对内积;以及 将一个坐标轴确定为投影方向,其中该坐标轴对应于三组绝对内积的三个最小绝对内 积的最大者。
12. 如权利要求1所述的方法,进一步包含: 为每个分单元确定一个位,其中该位指示相应分单元是否是空的; 响应于该遍历次序,使用分单元的所确定位形成(365)位串;以及 将该位串熵编码(390)成位流。
13. 如权利要求1所述的方法,进一步包含: 从该位流中解码(820)位串;以及 响应于该遍历次序,为相应分单元确定(870) -个位,其中该位指示相应分单元是否 是空的。
14. 一种生成或解码代表3D模型的位流的装置(1000,1100),包含: 针对一个八叉树中的一个单元的多个分单元的每一个确定表面平滑性度量的部件,该 八叉树代表3D模型;以及 响应于该分单元的表面平滑性度量确定该单元的分单元的遍历次序的部件。
15. 如权利要求14所述的装置,其中该遍历次序对应于表面平滑性度量的升序或降 序。
16. 如权利要求14所述的装置,其中针对该单元的特定分单元,该确定表面平滑性度 量的部件包含: 响应于该特定分单元和该单元的相邻单元形成多个三角形的部件,其中每个三角形通 过代表该特定分单元的点和代表该相邻单元中的两个单元的两个点来定义; 确定该三角形中的每一个的面积的部件;以及 响应于该多个三角形的面积确定该特定分单元的表面平滑性度量的部件。
17. 如权利要求16所述的装置,其中将该表面平滑性度量确定为该面积的总和。
18. 如权利要求14所述的装置,其中针对该单元的特定分单元,该确定表面平滑性度 量的部件包含: 响应于该特定分单元和该单元的相邻单元形成多个角度的部件,其中每个角度通过代 表该特定分单元的点和代表该相邻单元中的两个单元的两个点来定义,该代表该特定分单 元的点对应于每个角度的顶点; 确定该角度中的每一个的角度度量的部件;以及 响应于该多个角度的角度度量确定该特定分单元的表面平滑性度量的部件。
19. 如权利要求18所述的装置,其中将该表面平滑性度量确定为该角度度量的总和。
20. 如权利要求14所述的装置,其中响应于该表面平滑性度量的幅度,根据如权利要 求16和18所述的装置之一选择该确定表面平滑性度量的部件。
21. 如权利要求16或18所述的装置,其中该相邻单元中的两个单元是相连的。
22. 如权利要求16或18所述的装置,进一步包含: 将多个单元确定为相邻单元的部件; 确定相邻单元的排定次序的部件,其中该相邻单元中的两个单元按排定次序彼此相 邻;以及 连接该相邻单元中的两个单元的部件。
23. 如权利要求22所述的装置,其中该确定排定次序的部件包含: 响应于该单元和该相邻单元确定投影方向的部件; 将该单元和该相邻单元投影投影到2D平面的部件;以及 在2D平面中围绕该单元按顺时针或逆时针次序排序该相邻单元的部件。
24. 如权利要求23所述的装置,其中该确定投影方向的部件包含: 形成多个矢量的部件,该多个矢量的每一个通过该单元和该相邻单元中的一个单元来 定义; 为三个坐标轴的每个轴确定一组绝对内积的部件,其中该组绝对内积中的每个绝对内 积在相应坐标轴与该多个矢量的对应一个之间形成; 为该组绝对内积确定最小绝对内积的部件;以及 将一个坐标轴确定为投影方向的部件,其中该坐标轴对应于三组绝对内积的三个最小 绝对内积的最大者。
25. 如权利要求14所述的装置,进一步包含: 为每个分单元确定一个位的部件,其中该位指示相应分单元是否是空的; 响应于该遍历次序,使用分单元的所确定位形成位串的部件;以及 将该位串编码成位流的部件(1020)。
26. 如权利要求14所述的装置,进一步包含: 从该位流中解码位串的部件(1110);以及 响应于该遍历次序,为相应分单元确定一个位的部件,其中该位指示相应分单元是否 是空的。
27. -种上面存储着按照权利要求1-13生成或解码位流的指令的计算机可读存储介 质。
28. -种上面存储着按照权利要求1-12生成的位流的计算机可读存储介质。
【文档编号】H04N19/129GK104115496SQ201280069319
【公开日】2014年10月22日 申请日期:2012年2月9日 优先权日:2012年2月9日
【发明者】田疆, 江文斐, 蔡康颖 申请人:汤姆逊许可公司

最新回复(0)