问题
判定mesh上各点的“重要程度”,这里的重要程度,基本上是指在不同尺度(分辨率)下,几何特征的重要程度。
基本思想
在求解各点的平均曲率基础上,计算该点平均曲率在邻域内的显著性。类似于二维图像中金字塔的方法,建立三维模型的金字塔。
算法
假设我们已经计算得到了三维模型每个点上的平均曲率C(v),以高斯函数为权重(实际上就是一个带权的邻域,但通过全局计算,避免了对邻域直接求解),取σ为高斯函数方差(或半径),按照下式计算其高斯滤波后的平均曲率G(C(v),σ):
G(C(v),σ)=∑x∈N(v,2σ)e−∥x−v∥2/(2σ2)∑x∈N(v,2σ)C(x)e−∥x−v∥2/(2σ2)
通过对不同σ的选取,事实上我们建立了三维模型的高斯金字塔。对于一个给定的σ,重要程度S(v)计算方式如下:
S(v)=∣G(C(v),σ)−G(C(v),2σ)∣
显然,这和二维图像中计算特征点的方式也非常类似。
如果我们选择了多个不同的σi,那么我们也可以得到不同的Si。对于不同分辨率下的Saliency,我们通过加权求和得到最终的Saliency。加权的原则是,如果Saliency方差越大,权重越大,方差越小,权重越小。因此我们首先对Si归一化,然后选出其中最大值Mi和平均值mˉi,权重就是(Mi−mˉi)2。因此,最终的Saliency为
S=i∑(Mi−mˉi)2Si
Saliency计算非常简单,到这里就结束了,所以下面是对重要性的两个简单应用。
应用:模型简化
QSlim
首先介绍QSlim算法,然后讲Saliency如何改进QSlim算法。QSlim算法基本思想,是每次合并一组相邻的顶点,使得顶点数量越来越少。对于每一个顶点v,相邻平面组成的几何为P。遍历每一个p∈P,计算平面方程ax+by+cz+d=0,a2+b2+c2=1,将四个系数表示成p=(a b c d)T。对于任何一点x,计算它到平面的距离为xTppTx。计算它到顶点v邻近所有平面的距离之和,如果将ppT写成Qp,则距离和为∑pxTQpx=xT(∑pQp)x。将∑pQp记做Qv。
对于一对相邻的点(vi,vj),分别计算vi到以vj为中心的所有面的距离,和vj到以vi为中心的所有面的距离,并求和,得到viTQvjvi+vjTQvivj。如果我们要合并vi和vj到中间的一点vˉ,则vˉ对应的距离为vˉT(Qvj+Qvi)vˉ(称之为Quadric)。对于每一条边,我们计算这一vˉ和对应的距离和,将最小距离和的那一对边进行合并。合并后,新的Qvˉ=Qvi+Qvj,并更新所有会影响到的邻近的边的vˉ和Quadric值。
Saliency的改进
Saliency的改进是,包含模型特征的点不应该过早地被合并。因此,它给Quadric值之上,额外增加了一个权重项,这个权重项附带在每个顶点上,为
W(v)=A(S(v),α,λ)={λS(v)S(v) if S(v)>=α if S(v)<α
即如果Saliency小于某一阈值α,则权重就是Saliency值;如果大于阈值,则表示极其关键的特征,因此需尽量不被合并,因此再额外增加一个比例系数λ>1。在原文中,作者取λ=100,α为第30大的saliency值。
注意到这个权重是加在顶点上的,对于边e(vi,vj),则权重为W(vi)+W(vj)。
原文给了一个例子,见Figure 9,可以看到,在Saliency权重下,特征得到了更好地保持。

应用:视角选择
假设在视角v下,能看到的部分模型表面顶点集合为F(v)。则对于视角下的Saliency总和U(v),为
U(v)=Σx∈F(v)S(x)
显然,最佳视角应该是vm=argmaxvU(v)。在Saliency算法之前,U(v)通常是所有可见顶点的平均曲率之和。
直接计算vm会非常耗时,作者使用了梯度下降的方法,先随机选择一个视角v(θ,ϕ),其中θ和ϕ分别表示经度和纬度。然后搜索附近的视角,选择使Saliency和最大的一个,重复上述过程。多选几个随机初始点,重复过程。
结果显示(见Figure 11),Saliency的视角选择比直接平均曲率视角选择要更好。
