離散ラプラシアンメッシュスムージング


離散ラプラシアン微分座標とは、簡単に、己の頂点位置と、己の1隣接頂点の重心位置との、差分ベクトルである。よって、グラフの任意の頂点について、離散ラプラシアン微分座標を計算することができる。この演算操作を「離散ラプラシアン演算子」と呼び、計算結果である微分座標そのものを指す場合もある。(以下、「離散」は省き、単に「ラプラシアン」と記述するが、以下の話はあくまで「離散ラプラシアン」の話である


グラフ中の全頂点数をNとすると、全ての頂点(x0, x1, ..xN-1)についての、ラプラシアン演算子を求める操作は、(x0, x1, ..xN-1)T に、NxNのラプラシアン行列Kをかける操作として、簡潔に表現される。ラプラシアン演算子行列をK、もとの頂点座標群(x0, x1, .., xN-1)Tをx、対応する微分座標群(Δx0, Δx1, .., ΔxN-1)TをΔx、とすると、

Δx = Kx
と書くことができる。


ところでこのラプラシアン演算子行列は、N個の固有値と、N個の固有ベクトルを、持つことが知られている。固有ベクトルはグラフの natural-vibration-modes を表し、任意の形状xは、これら固有ベクトルの線形和として表現される。また、対応する固有値は、それに付随する natural-frequencies である。固有値は、0と2の間の、閉区間内におさまる実数値である。

今、i番目の固有ベクトルの一つをとって考えてみる。固有ベクトルとは言っても、それは即ち、N個からなる頂点座標のセットであり、一つの視覚的に描画可能な「形(モード)」である。固有ベクトルがいくつもあるということは即ちこの場合、このような「形」がいくつもあるということだ。これを、(xi0, xi1, .., xiN-1)T と書いてもよいのだが、敢えてこの形が固有ベクトルであることを考え、ei{即ち( ei0, ei1, .., eiN-1 )T}という具合に、文字xをeに置き換えて考えることにする。
この固有ベクトルeiがどういう形状をしているかを考えてみるとつまりそれは、それがそのまま己の微分座標空間における形状となるような、そんな形状であることが想像される。(もちろん、固有値によってスケーリングはされているはずだが)

各頂点について、その微分座標の何倍か(λ倍としよう)したものを変位としてもとの座標に加味する操作を、ラプラシアンスムージングという。従ってλ=1とすれば、ラプラシアンスムージングは、各頂点を、その1隣接位置重心に移動させる操作となる。

ところで、先ほど考えた、任意の固有ベクトルに限って考えてみると、ラプラシアンスムージングの操作は、
ei(1) = (1-λki)ei
となる。ここで、kiは、固有ベクトルに対応する固有値であり、左辺のei(k) は、ラプラシアンスムージングをk回行ったものを指す。文字通り、形状eiは、(1-λki)倍だけスケーリングされるだけである。これについてもう一回ラプラシアンスムージングを行ったものは、
ei(2) = (1-λki)^2 ei
となり、n回ラプラシアンスムージングを行った結果は、
ei(n) = (1-λki)^n ei
となろう。
ei の形状自体はそのままに、(1-λki)^n倍だけどんどんスケーリングされていく様を思い浮かべて頂きたい。

ここで、この(1-λki)^nというスケーリング値そのものは、nやk の値に応じて、どのように変化するだろうか?その様子を、そのグラフ 、即ちkの関数としての
y(k)=(1-λki)^n(0<=k<=2)
のグラフを、考えて頂きたい。nの値、によらず、k=1/λとなる時点で、完全に0となってしまうことがわかる。また、nが回数を重ねるほどに、より大きなk の領域が、選択的に、縮小する。nが十分大きくなると、それは、k=0付近以外の全てのkについて、0に縮小してしまうことがわかる。そしてkの値によっても、その縮小具合は異なってくることもわかる。

このことから、通常のラプラシアンスムージングフィルタでは、あまりにも多くの、形状の周波数成分が、0に縮退してしまうということがわかる。この、周波数全域に渡る縮退を、とくに高周波(kが大)領域のみに抑えようとしたのが、Taubin95の、λμアルゴリズムである。
が、この続きは次回の日記に記すこととしよう。

Polygon Mesh Processing

Polygon Mesh Processing