問題
判定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的視角選擇比直接平均曲率視角選擇要更好。