基于最大化泊松圆盘采样的重新网格化方法

文档序号:6625408阅读:662来源:国知局
基于最大化泊松圆盘采样的重新网格化方法
【专利摘要】本发明公开了一种基于最大化泊松圆盘采样的重新网格化方法,该方法包括以下步骤:对输入的三角网格进行细分处理,得到细分网格S;利用局部冲突检测方法在细分网格S上进行初始泊松采样;对于细分网格S进行迭代检测并填充其中的空隙区域,得到最大化的泊松圆盘采样点集;利用最大化的泊松采样点集,对于细分网格S中的三角形进行离散聚类,提取得到新的三角网格;对于得到的新的三角网格进行角度和顶点度数优化。本发明为最大化的泊松圆盘采样提供了一种快速解决方案,而且可以获得具有蓝噪声性质的网格,非常适用于物理模拟、光照渲染以及几何建模等。
【专利说明】基于最大化泊松圆盘采样的重新网格化方法

【技术领域】
[0001] 本发明属于图形处理【技术领域】,具体涉及图形处理领域中的蓝噪声采样技术和重 新网格化方法,特别涉及一种利用细分网格进行快速泊松圆盘采样,并利用采样点生成三 角网格的方法。

【背景技术】
[0002] 采样是信息处理领域中的基本问题,广泛应用于生物,物理,化学以及医学等诸 多领域,与人类的日常生活密不可分。在多媒体处理与计算机图形学领域,采样技术尤为 重要。在众多采样方法中,蓝噪声采样具有低频能量低、能量径向对称等重要的频谱特征, 这些性质在图像处理与图形学中有着广泛的应用。泊松圆盘采样是最经典的蓝噪声采样 方法之一。一个理想的泊松圆盘采样点集需要满足三个条件:无偏差采样性质(采样区 域的每个没有覆盖的点都有相同的概率接受一个新的采样点)、最小距离性质(任意两个 采样点之间的距离大于给定的采样半径),最大化性质(采样区域被所有的采样圆盘完全 覆盖)。满足这三个条件的采样方法称为最大化泊松圆盘采样(Maximal Poisson-disk Sampling-MPS)〇
[0003] 另一方面,网格是三维几何表示的基本形式,网格生成技术是连接计算机图形学 和工业界的重要桥梁。通常的网格生成是通过激光扫描仪扫描得到的粗糙网格数据,但是 这些模型存在数据量大、三角形网格质量差等缺点,不能直接用于有限元模拟,计算机动画 等高级应用。除此之外,曲面网格生成方法研究如何从一个已有曲面出发,通过计算得到高 质量的输出网格用来近似表示输入曲面。如果输入曲面已经是三角形网格表示,那么称之 为曲面的重新网格化(remeshing),重新网格化是获得高质量网格模型的重要手段。
[0004] 泊松圆盘采样以及重新网格化分别都有几十年的研究历史,但是很少有工作将两 者结合起来同时研究。近年,Yan 和 Wonka (Yan,D.-M. and Wonka,P. (2013) .Gap processing for adaptive maximal Poisson-disk sampling. ACM Trans.on Graphics,32(5): 148:1-148:15.)首次提出网格曲面上的最大化泊松圆盘米样(Maximal Poisson-disk Sampling-MPS)方法及重新网格化方法,推动了蓝噪声网格生成的发展。该方法利用曲面上 的局部限制Voronoi (沃罗诺伊)图给出了空隙区域存在的理论分析,并建立一个三维均匀 网格来辅助冲突检测和泊松采样,但是该方法采样速度慢,而且内存消耗大,不利于进行快 速的泊松采样。另外,由于该方法在一个全局的网格结构内使用欧式距离进行冲突检测,所 以其在相近区域和自相交区域处很容易出现问题。


【发明内容】

[0005] 本发明的目的是针对现有技术的缺陷,提供一种基于最大化泊松圆盘采样的重新 网格化方法。
[0006] 为实现上述目的,本发明提供一种基于最大化泊松圆盘采样的重新网格化方法, 该方法包括以下步骤:
[0007] 步骤S1、对输入的三角网格进行细分处理,得到细分网格S ;
[0008] 步骤S2、利用局部冲突检测方法在细分网格S上进行初始泊松采样;
[0009] 步骤S3、对于细分网格S进行迭代检测并填充其中的空隙区域,得到最大化的泊 松圆盘采样点集;
[0010] 步骤S4、利用最大化的泊松采样点集,对于细分网格S中的三角形进行离散聚类, 提取得到新的三角网格;
[0011] 步骤S5、对于得到的新的三角网格进行角度和顶点度数优化。
[0012] 本发明采用计算机图形处理的技术,利用原始输入网格的细分网格进行快速的最 大化泊松圆盘采样,进而提取生成蓝噪声网格,并通过一种优化的手段使得网格的质量满 足用户的需求,因而非常适用于物理模拟、光照渲染以及几何建模等。

【专利附图】

【附图说明】
[0013] 图1是本发明基于最大化泊松圆盘采样的重新网格化方法的流程图;
[0014] 图2是根据本发明一实施例输入三角形的细分过程;
[0015] 图3A和图3B是根据本发明一实施例的输入三角网格和细分之后的网格;
[0016] 图4A?图4C是根据本发明一实施例重新网格化的示意图,其中图4A是一个最大 化的泊松采样点集,图4B初始提取的三角网格,图4C是优化后的三角网格;
[0017] 图5A和图5B分别是本发明的方法与前人方法在运行时间和内存使用方面的对比 图;
[0018] 图6A和图6B是本发明的方法与前人方法在模型相近区域重新网格化的结果对比 图;
[0019] 图7A和图7B是本发明的方法与前人方法在模型自相交的区域重新网格化的结果 对比图。

【具体实施方式】
[0020] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照 附图,对本发明进一步详细说明。
[0021] 图1是本发明基于最大化泊松圆盘采样的重新网格化方法的流程图,如图1所示, 所述方法包括以下步骤:
[0022] 步骤S1、对输入的三角网格进行细分处理,得到细分网格S ;
[0023] 步骤S2、利用局部冲突检测方法在细分网格S上进行初始泊松采样;
[0024] 步骤S3、对于细分网格S进行迭代检测并填充其中的空隙区域,得到最大化的泊 松圆盘采样点集;
[0025] 步骤S4、利用最大化的泊松采样点集,对于细分网格S中的三角形进行离散聚类, 提取得到新的三角网格;
[0026] 步骤S5、对于得到的新的三角网格进行优化,使得优化网格中每个三角形的角度 和每个顶点的度数均满足用户指定的要求。
[0027] 下面对上述每个步骤进行更加详细的说明。
[0028] 步骤S1、对输入的三角网格进行细分处理,得到细分网格S ;
[0029] 本发明的输入是一个三角网格,首先由用户指定最小采样半径rmin,然后对输入的 三角网格进行不断的细分,使得细分后的网格中每条边的长度不大于最小采样半径,这样 就可以保证细分后的网格S中的每个三角形至多只包含一个采样点。
[0030] 具体的细分过程为:
[0031] 首先,构建一个优先队列,将输入三角网格的所有边放入到优先队列中,长度越长 的边优先级越高,每次从优先队列中弹出一条边,如果该边的长度大于最小采样半径,则在 该边的中点处添加一个新的顶点V,并分别连接V与该条边相对的两个输入顶点,从而形成 两条新的边,并将他们加入到优先队列中。该过程不断进行下去直到所有边的长度均小于 等于最小采样半径,得到细分网格S。
[0032] 图2是一个输入三角形ABC细分过程的示意图,本发明首先检测到边AB大于rmin, 那么在AB的中点添加点D并连接⑶,从而将三角形ABC细分为两个三角形ADC和DBC。接下 来依次处理边BC、AC和⑶,最终将ABC细分为四个更小的三角形。最后,细分网格记为S = {V,M},其中,V是顶点集合V = Cv/)y=i - r是顶点的个数,M是三角形集合M = tk代表一个细分三角形,m是细分三角形的个数,每个细分三角形都使用一个数组来存储完 全覆盖该三角形或者与该三角形相交的采样点。图3A是根据本发明一实施例输入的三角 网格,图3B是对图3A所示的输入三角网格进行细分之后得到的网格。
[0033] 然后,对于细分网格S上的每一个点Pi,定义该点处采样球的球心为Pi,半径为 ri =kp (Pi),其中k是一个常数,P (X)为定义在该细分网格上的密度函数。当P (X)是常 数时,得到的采样为均匀采样,当P (X)是一个变化的量时(如在本发明一实施例中,采用 每个点处的曲率作为密度函数),得到的采样称为非均匀采样。
[0034] 步骤S2、利用局部冲突检测方法,在细分网格S上进行初始泊松采样;
[0035] 该步骤使用投镖法在细分网格S上进行初始采样,具体地,所述步骤S2进一步包 括以下步骤:
[0036] 步骤S21,在细分网格S上随机产生一个采样点p ;
[0037] 所述步骤S21具体为:首先,在细分网格S上随机选择一个三角形&,使得选择该 三角形h的概率与该三角形的加权面积(p(cti)|til,其中,Cq是三角形&的重心点,Iti 是三角形的面积)成正比;
[0038] 然后,在选择的三角形内部随机产生一个采样点p。
[0039] 步骤S22,利用局部冲突检测方法检测该采样点p是否被接受;
[0040] 该步骤中,如果采样点P对应的采样球不包含其他任何采样点,同时采样点P不被 其他任何采样点对应的采样球包含,那么采样点P就被接受并将其加入到采样点集中;否 则采样点P被拒绝,此次采样失败;
[0041] 步骤S23,重复进行步骤S21-S22的采样过程,直到连续采样失败的次数大于某一 阈值λ :或者总的米样次数大于另一阈值λ 2,在本发明一实施例中,λ i = 300,λ 2 = 3m, 其中,m为细分网格S中细分三角形的数目。此时初始采样的结果为非最大化的泊松圆盘 采样。
[0042] 其中,所述局部冲突检测方法的具体过程为:首先,检查采样点p所在的三角形t 是否已被其他采样点完全覆盖,若是,则说明检测到冲突,该采样点被拒绝,否则将三角形 ti放入到一个优先队列中;然后从优先队列中弹出首元素三角形ti,按照上文所描述的冲 突检测方法检查所有与三角形ti相交的采样球是否与采样点P冲突,如果没有冲突,则检 查三角形ti的相邻三角形tj是否与采样点P对应的采样球相交,若相交则将三角形tj加 入到优先队列中;这个过程不断进行下去直到优先队列为空。
[0043] 步骤S3、对于细分网格S进行迭代检测并填充其中的空隙区域,得到最大化的泊 松圆盘采样点集;
[0044] 初始采样之后,该步骤迭代地检测并填充细分网格S上的空隙区域,得到最大化 的泊松圆盘采样点集。在每一次迭代中,首先检测当前细分网格中所有未被采样球完全覆 盖的三角形,并将它们加入到一个数组中;然后遍历数组中的每个三角形,将该三角形细分 为多个,比如4个更小的三角形,并检测这些更小的三角形是否被已有的采样球完全覆盖; 最后按照步骤S2的方式,在未被完全覆盖的更小三角形内进行泊松采样。在最坏的情况 下,可能会出现一种情况,使得在对某一空隙区域里的任意一点进行采样时,虽然该点不被 其他已有采样点对应的采样球覆盖,但是该点处的采样球总会覆盖其他已有的采样点这种 情况会造成无法对该空隙区域进行采样,从而不能得到最大化的采样结果。为了解决这个 问题,本发明重新计算该采样点的半径,将其半径设置为该点与最近的采样点的距离,从而 可以在该点进行采样。当所有的三角形都被完全覆盖时,迭代终止,此时可以得到最大化的 泊松采样点集。图4A是根据本发明一实施例得到的最大化泊松圆盘采样的结果。
[0045] 步骤S4、利用最大化的泊松圆盘采样点集,对于细分网格S中的三角形进行离散 聚类,提取得到新的三角网格;
[0046] 该步骤的目的是利用已经得到的最大化的泊松圆盘采样点集,对于细分网格S进 行重新网格化,从而得到具有蓝噪声性质的三角网格。该步骤进一步包括以下步骤:
[0047] 步骤S41、根据最大化泊松圆盘采样点集,对于细分网格S中的三角形进行离散聚 类;
[0048] 该步骤中,首先,遍历细分网格S中的每个三角形如果该三角形包含所述最大 化泊松圆盘采样点集中的某一采样点Pj,则建立一个三元组(ti,Pj,Cl ij),其中,Clij是三角形 心的中心点与采样点]^之间的欧式距离;
[0049] 然后,将得到的每个三元组加入到一个优先队列Q中,并将Clij作为相应三元组的 优先级,扎越小的三元组其优先级越高;
[0050] 然后,每次从优先队列Q中弹出优先级最高的三元组(tp Pj,(Iij),检查三角形心 是否已分配给所述最大化泊松圆盘采样点集中的某个采样点,如果是则丢弃该三元组并弹 出下一个三元组;如果没有,则将三角形t分配给该采样点;然后检查该三角形的所有相 邻三角形t k,并建立新的三元组(tk,Pj, dkj)加入到优先队列Q中;重复执行本步骤直到优 先队列Q为空;
[0051] 最后,将得到的细分网格S的三角形分为多个不同的patch(面片),使每个面片对 应一个采样点,且每个面片都是单连通的。
[0052] 步骤S42、从离散聚类结果中提取得到新的三角网格;
[0053] 遍历细分网格S的每一个顶点,按逆时针的顺序检查围绕该顶点一圈的三角形, 并对这些三角形所属的面片进行计数,如果不同面片的数目大于等于3,则可以利用对应的 采样点建立一个三角形扇。处理完所有的顶点后,所有得到的三角形就组成了一个重新网 格化的三角网格。由于前面聚类的结果,已使得每个面片都是单连通且任何两个面片不重 叠,因此重新网格化的结果中,任意两个三角形都是不交叉的。
[0054] 步骤S43、采用Edge flipping(边翻转)方法将提取得到的新的三角网格转变为 Delaunay三角网格(均匀采样情况)或者正则三角网格(非均匀采样的情况)。
[0055] 上述步骤中重新网格化的结果不一定是Delaunay三角网格(均匀采样情况)或 者正则三角网格(非均匀采样的情况),在本步骤中,首先遍历重新网格化结果中的每条 边,如果与该边相邻的两个三角形,不满足空圆性质(均匀采样情况)或者正则性质(非均 匀采样情况),则将该边翻转。当处理完所有的边时,就可以得到一个纯粹的Delaunay三角 网格或者正则三角网格。
[0056] 步骤S5、对于得到的新的三角网格进行优化,使得优化网格中每个三角形的角度 和每个顶点的度数均满足用户指定的要求。
[0057] 曲面的重新网格化往往希望获得高质量的三角网格模型。本发明提出了一种网 格优化的方法,使得输出网格中每个三角形的角度和每个顶点的度数均满足用户指定的要 求。在三角形角度优化中,首先由用户指定角度的上限和下限,然后将不满足角度要求的三 角形对应的顶点删掉,然后重新检测和填充细分网格上的空隙区域。在顶点度数优化中, 首先将度数小于5或者大于7的顶点删掉,然后重新检测和填充空隙区域。这两个优化步 骤交替重复进行,直到所有的角度都满足要求并且每个顶点的度数为5、6或7。图4B是根 据本发明一实施例得到的重新网格化的结果,其中黑色的三角形为角度不满足要求的三角 形,黑色的顶点是度数不满足要求的点,图4C是优化后的三角网格。
[0058] 综上,本发明提出一种基于最大化泊松圆盘采样的重新网格化方法,该方法得到 的采样点集具有很好的蓝噪声性质,并利用采样点集提取得到高质量的三角网格。图5A和 图5B分别是本发明方法与Yan2013的方法在运行时间和内存使用情况的对比图,从对比图 中可以看出,针对均匀采样和非均匀采样的情况,本发明方法比Yan2013的方法在时间效 率上提高4到5倍,在内存使用上本发明方法比Yan2013的方法节约5到7倍,原因在于 Yan2013的方法需要构建一个3D的全局均匀网格来辅助采样,这种结构虽然简单,但是需 要存储很多额外的信息做冲突检测,而且每次做冲突检测时,该方法都要遍历 rViin/ V 3 个邻域格子,其中,是当前测试点的采样半径。同时,Yan2013也需要不断构建3维正则 三角化和Power图来检测空隙区域,这不仅进一步降低了采样速度,也增加了额外的内存 开销。而本发明方法只需要保持细分的网格,采用局部的方式做冲突检测,采样速度快而且 节约内存。
[0059] 图6和图7分别是本发明方法与Yan2013的方法在模型相近区域和自相交的区域 重新网格化的结果对比图。图6A是利用Yan2013的方法在模型相近区域重新网格化的结 果示意图,图6B是利用本发明方法在模型相近区域重新网格化的结果示意图,从图6A和图 6B中可以看出,在几何相近的区域,Yan2013的方法容易产生拓扑错误,不该连接的地方会 出现错误(如黑色加粗边所示),而本发明方法由于采用一种局部离散聚类的方式,生成的 网格总是正确的。图7A是利用Yan2013的方法在自相交的区域重新网格化的结果示意图, 图7B是利用本发明方法在自相交的区域重新网格化的结果示意图,从图7A和图7B中可以 看出,Yan2013的方法在模型自相交的区域也会产生拓扑错误(如黑色加粗边所示),相比 之下,本发明的方法可以得到正确的结果。
[0060] 本发明的方法的特色和创新在于,对原始的输入网格进行细分,并利用细分的网 格进行快速的最大化泊松圆盘采样,而且大大减小了对内存的需求;最后利用采样点提取 生成蓝噪声网格,并通过一种优化的手段使得网格的质量满足用户的需求。本发明方法,可 以用于物理模拟、数字媒体处理及科学可视化等应用领域,具有较高的实际应用价值。
[0061] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详 细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡 在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保 护范围之内。
【权利要求】
1. 一种基于最大化泊松圆盘采样的重新网格化方法,其特征在于,该方法包括以下步 骤: 步骤S1、对输入的三角网格进行细分处理,得到细分网格S; 步骤S2、利用局部冲突检测方法在细分网格S上进行初始泊松采样; 步骤S3、对于细分网格S进行迭代检测并填充其中的空隙区域,得到最大化的泊松圆 盘采样点集; 步骤S4、利用最大化的泊松采样点集,对于细分网格S中的三角形进行离散聚类,提取 得到新的三角网格; 步骤S5、对于得到的新的三角网格进行角度和顶点度数优化。
2. 根据权利要求1所述的方法,其特征在于,所述步骤Sl中,首先指定最小采样半径 rmin,然后对输入的三角网格进行不断的细分,使得细分后的网格中每条边的长度不大于最 小采样半径,得到细分网格S;然后对于细分网格S上的每一个点Pi,定义该点处采样球的 球心为Pi,半径为A = kp (Pi),其中,k是一个常数,P (X)为定义在该细分网格上的密度 函数。
3. 根据权利要求1所述的方法,其特征在于,所述步骤S2进一步包括以下步骤: 步骤S21,在细分网格S上随机产生一个采样点p; 步骤S22,利用局部冲突检测方法检测该采样点p是否被接受; 步骤S23,重复进行步骤S21-S22的采样过程,直到连续采样失败的次数大于某一阈值X1或者总的采样次数大于另一阈值λ2。
4. 根据权利要求3所述的方法,其特征在于,所述步骤S21包括: 首先,在细分网格S上随机选择一个三角形&,使得选择该三角形&的概率与该三角 形心的加权面积成正比,其中,三角形&的加权面积表示为:P(Cti)ItiNCti是三角形ti的 重心点,P(X)为定义在该细分网格上的密度函数,ItiI是三角形的面积; 然后,在选择的三角形内部随机产生一个采样点P。
5. 根据权利要求3所述的方法,其特征在于,所述步骤S22中,如果采样点p对应的采 样球不包含其他任何采样点,同时采样点P不被其他任何采样点对应的采样球包含,那么 采样点P就被接受并将其加入到采样点集中;否则采样点P被拒绝。
6. 根据权利要求3所述的方法,其特征在于,所述局部冲突检测方法包括: 首先,检查采样点P所在的三角形是否已被其他采样点完全覆盖,若是,则说明检测到 冲突,该采样点被拒绝,否则将该三角形放入到一个优先队列中; 然后,从优先队列中弹出首元素三角形,检查所有与该三角形相交的采样球是否与采 样点P冲突,如果没有冲突,则检查该三角形的相邻三角形是否与采样点P对应的采样球相 交,若相交则将相邻三角形加入到优先队列中,重复进行判断直到优先队列为空。
7. 根据权利要求1所述的方法,其特征在于,在所述步骤S3的每一次迭代中,首先检测 当前细分网格中所有未被采样球完全覆盖的三角形,并将它们加入到一个数组中;然后遍 历数组中的每个三角形,将该三角形细分为多个更小的三角形,并检测这些更小的三角形 是否被已有的采样球完全覆盖;最后按照所述步骤S2的方式,在未被完全覆盖的更小三角 形内进行采样;迭代进行检测直至所有的三角形都被完全覆盖,得到最大化的泊松采样点 集。
8. 根据权利要求1所述的方法,其特征在于,所述步骤S4进一步包括以下步骤: 步骤S41、根据最大化泊松圆盘采样点集,对于细分网格S中的三角形进行离散聚类; 步骤S42、从离散聚类结果中提取得到新的三角网格; 步骤S43、采用边翻转方法将提取得到的新的三角网格转变为均匀采样三角网格或非 均匀采样三角网格。
9. 根据权利要求8所述的方法,其特征在于,所述步骤S41包括: 首先,遍历细分网格S中的每个三角形&,如果该三角形包含所述最大化泊松圆盘采样 点集中的某个采样点Ρ」,则建立一个三元组(tpP」,(Iij),其中,Clij是三角形&的中心点与 采样点h之间的欧式距离; 然后,将得到的每个三元组加入到一个优先队列Q中,并将Clij作为相应三元组的优先 级,Clij越小的三元组其优先级越高; 然后,每次从优先队列Q中弹出优先级最高的三元组(tpPj, (Iij),检查三角形&是否 已分配给所述最大化泊松圆盘采样点集中的某个采样点,如果是则丢弃该三元组并弹出下 一个三元组;如果没有,则将三角形t分配给该采样点;然后检查该三角形的所有相邻三 角形tk,并建立新的三元组(tk,Pj,dkj)加入到优先队列Q中;重复执行本步骤直到优先队 列Q为空; 最后,将得到的细分网格S的三角形分为多个不同的面片,使每个面片对应一个采样 点,且每个面片都是单连通的。
10. 根据权利要求1所述的方法,其特征在于,所述步骤S5中,对于三角形角度优化,首 先指定角度的上限和下限,然后将不满足角度要求的三角形对应的顶点删掉,然后重新检 测和填充细分网格上的空隙区域;对于顶点度数优化,首先将度数小于5或者大于7的顶点 删掉,然后重新检测和填充空隙区域;所述三角形角度优化和顶点度数优化交替重复进行, 直到所有的角度都满足要求并且每个顶点的度数为5、6或7。
【文档编号】G06T17/30GK104240299SQ201410437581
【公开日】2014年12月24日 申请日期:2014年8月29日 优先权日:2014年8月29日
【发明者】严冬明, 郭建伟, 张晓鹏 申请人:中国科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1