微分坐標(biāo)

課程鏈接:GAMES102幾何建模與處理
課程講師:劉利剛
公眾號:AlbertLiDesign
Github實現(xiàn)(C#):https://github.com/AlbertLiDesign/ALDGP

回顧:網(wǎng)格曲面,二維流形曲面的離散

之前我們提到,網(wǎng)格實際上就是二維流形曲面的離散表達,一個觀點是網(wǎng)格是從二維到三維的映射,另一個觀點是平面圖在三維空間中的嵌入。因此網(wǎng)格也是參數(shù)型的曲面,只不過是分片線性的。

圖1. 認識網(wǎng)格的兩種觀點

網(wǎng)格的數(shù)據(jù)結(jié)構(gòu)種類非常多,沒有普適的網(wǎng)格數(shù)據(jù)結(jié)構(gòu),要根據(jù)具體問題具體分析。要注意,在編程中空間和時間永遠互相矛盾,存儲越多的信息,訪問就會越快,存儲的信息越少,節(jié)省了內(nèi)存,但是訪問速度就會大大增加,因此要對不同的問題選擇不同的存儲方式,來高效地解決問題。

局部結(jié)構(gòu)

局部特征度量

圖2. 頂點的1-鄰域

在網(wǎng)格中,一個點的信息例如點的彎曲程度,由它周圍的點來決定,因此我們使用1-鄰域(1-ring neighborhood)信息來考慮,1-鄰域指直接與點相連的集合(如圖2)。

圖3. 頂點的2-鄰域

如果是2-鄰域,則考慮的范圍更大,每個位于1-鄰域中的點的1-鄰域?qū)豢紤]進來,如圖3所示。鄰域越大,考慮的幾何信息就會越多,但通常我們就用1-鄰域來近似頂點的無窮小鄰域。

圖4. 紅色點的1-鄰域

如圖4,在紅色頂點的1-鄰域中(藍色頂點),我們可以對紅色點的加全平均得到橙色點。如果是使用均勻權(quán)重,那么橙色點就位于藍色點的重心,我們也可以使用Cotangent權(quán),與它們的幾何屬性相關(guān)聯(lián)。這樣我們可以看到,橙色點和紅色點之間有一個向量,這個向量越長,紅色點越尖銳,因此該向量可以用來度量紅色點的屬性,像一個傘柄,于是人們就定義這個向量叫做拉普拉斯算子(Laplace operator)。極小曲面的局部迭代法就是不斷地讓紅色點向橙色點位置移動。

拉普拉斯算子

拉普拉斯算子是n維歐幾里得空間的二階微分算子(橢圓型算子),對于二元實函數(shù)f(x,y),它表示為
\Delta f = \frac{\partial ^2 f}{\partial x^2} + \frac{\partial ^2 f}{\partial y^2}
在笛卡爾坐標(biāo)系中,為所有非混合二階偏導(dǎo)數(shù),即分別對各分量取二階偏導(dǎo)然后求和
\Delta f = \sum ^ n _{i=1} \frac{\partial ^2 f}{\partial x_i^2}
從幾何的角度來看,拉普拉斯算子是梯度\nabla f的散度\nabla · f,梯度是一個向量,散度是向量的三個分量的和。
\Delta f = \nabla · \nabla = \nabla ^2 f

離散幾何中的拉普拉斯算子:

在離散幾何中,拉普拉斯算子(也叫Umbrella Operator,傘型算子)表示為:
\delta _i = v_i - \sum_{j\in N(i)} w_j v_j
在一維的差分中很好理解,在坐標(biāo)系中取x_{i-1}, x_i, x_{i+1}三點,求x_i處的導(dǎo)數(shù),可以表示成
f'(x) = \frac{y_{i+1} - y_i}{x_{i+1} - x_i}
即用(x_{i+1}, y_{i+1})(x_i, y_i)的斜率來近似導(dǎo)數(shù),這種用后面的點減去前面的點的方法叫做向后差分,當(dāng)然我們也可以使用向前差分,表示成
f'(x) = \frac{y_i - y_{i-1}}{x_i - x_{i-1}}

對于二維問題,度數(shù)為4的頂點,二階偏導(dǎo)有
\frac{\partial ^2 f}{\partial x_i^2} = \frac{ \frac{\partial f}{\partial x}|_{x_{i+1}} -\frac{\partial}{\partial x}|_{x_{i}} }{x_i - x_{i-1}}
這里令x_i - x_{i-1} = 1,則有
\frac{\partial ^2 f}{\partial x_i^2} = \frac{ \frac{\partial f}{\partial x}|_{x_{i+1}} -\frac{\partial}{\partial x}|_{x_{i}} }{x_i - x_{i-1}} = z_{i+1} - z_i - z_i + z_{i-1} = z_{i+1} - 2z_i + z_i
在另一個方向上也是一樣的,將兩個方向上的二階偏導(dǎo)加起來會發(fā)現(xiàn),我們最后會得到(x_i, y_i)的拉普拉斯算子等于它周圍的四個點(兩個方向)的和再減去它自身的4倍。因此我們用頂點1-鄰域的平均減去自身的度數(shù)倍來作為拉普拉斯算子的近似,拉普拉斯算子也叫做拉普拉斯坐標(biāo),或微分坐標(biāo)。

圖5. 微分坐標(biāo)

平均曲率流定理

圖6. 平均曲率流

平均曲率流定理是說,如果要求圖6中紅點鄰域的性質(zhì),可以在點周圍取一個非常小的封閉區(qū)域,這個區(qū)域的邊界記作\gamma\gamma上任意一點v與紅點v_i形成了一個向量,如果沿著\gamma弧作線積分,將這個值除以\gamma的弧長。在這個問題中\gamma可以任意取一個包含v的區(qū)域,當(dāng)\gamma的弧長趨向于0時,會得到一個向量,這個向量的方向是該點處的法向n_i,長度是該點的平均曲率H(v_i)。在離散情況下就是我們上面推導(dǎo)的拉普拉斯算子(為方便理解,這里使用的均勻權(quán)重)。
圖7. 平均曲率流

因此我們說,拉普拉斯坐標(biāo)刻畫了一個點的平均曲率性質(zhì)。加權(quán)方案有很多,最常用的權(quán)是余切權(quán)。

局部拉普拉斯光滑

上文解釋了拉普拉斯坐標(biāo)能夠刻畫一個點的平均曲率性質(zhì),點到拉普拉斯坐標(biāo)的向量越短,曲面越光滑,向量越長,曲面越尖銳,它也可以作為幾何細節(jié)的度量。

圖8. 拉普拉斯光滑

之前我們在局部迭代求解極小曲面中,運用了圖8中的方法,這種將頂點沿著拉普拉斯算子移動的方法就稱為拉普拉斯光滑(Laplacian Smoothing)。在求解極小曲面的過程中,我們迭代了很多次得到了近似極小曲面,即邊界固定的情況下,無窮多次的拉普拉斯光滑即可得到極小曲面。

圖9. 拉普拉斯光滑

從信號的角度,拉普拉斯光滑可以看作是一種對這個點處的幾何信號不斷處理的過程。這一方法可以用于網(wǎng)格去噪,真正的數(shù)學(xué)上的意義是它是一種濾波(Filter)。濾波就是用一個值的周圍的值來平均,也就是卷積。

圖10. 拉普拉斯光滑的效果
圖11. 網(wǎng)格過度去噪

如圖10,執(zhí)行了拉普拉斯光滑后,模型就變得光滑,但同時模型上的細節(jié)也消失了。但是如果過渡去噪,使得模型細節(jié)過度缺失就會over-smoothing,如圖11所示。因此我們要控制\lambda和迭代次數(shù)。

圖12. 平均曲率流與拉普拉斯算子
圖13. 離散網(wǎng)格頂點的平均曲率公式

前面我們提到了平均曲率流,如圖7,我們寫出了平均曲率的離散形式,即拉普拉斯算子就等于平均曲率與法向相乘,我們可以依此來進行網(wǎng)格光滑,如圖12。當(dāng)然我們也可以求出一個網(wǎng)格頂點的曲率,如圖13。

全局拉普拉斯光滑

根據(jù)極小曲面的定義我們知道,如果每個點的平均曲率都為0,就能得到極小曲面,我們前面的迭代方法是讓每個點都不斷地迭代,使每個點的平均曲率趨向于0,在迭代的時候我們發(fā)現(xiàn),迭代過程中會出現(xiàn)局部光滑得過快,或者出現(xiàn)自交的情況。那么有沒有好的方法來解決這個問題呢?

我們的目標(biāo)是希望每個點都滿足下面這個關(guān)系
L(v_i) = v_i - \sum_{j\in N(i)} \omega_{ij}v_j = 0,\quad \omega_{ij} = cot\alpha_{ij} + cot\beta_{ij}
這個關(guān)系是關(guān)于v_i的方程,如果我們把所有頂點的方程聯(lián)立,就能得到網(wǎng)格曲面的整體Laplacian方程:
Ax=0
這里的矩陣A是一個n × n的矩陣,但是它非常稀疏,因為每一行的數(shù)目是頂點數(shù),非零數(shù)卻只有度數(shù)個。我們把拉普拉斯算子\delta放在等號右邊就能得到圖14形式,本質(zhì)上是如圖15分別求三個分量

圖14. 拉普拉斯矩陣
圖15. 拉普拉斯矩陣

同樣,對于一個圖,我們求出了每個點的\delta,我們通過求解Lv=\delta就能求出更新后的頂點位置。如果每個\delta都縮短到它的10%就相當(dāng)于我們前面的迭代方法。這就是拉普拉斯光滑的全局方法。

圖16. 拉普拉斯矩陣

拉普拉斯矩陣的秩是n-1,多個分離mesh的話就是n-c,因此它是一個非滿秩矩陣,這就需要加條件約束,例如約束邊界點。這樣我們就得到了生成極小曲面的全局方法,如圖17。

圖17. 極小曲面的全局方法
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容