微分坐标

课程链接:GAMES102几何建模与处理
课程讲师:刘利刚
公众号:AlbertLiDesign
Github实现(C#):https://github.com/AlbertLiDesign/ALDGP

回顾:网格曲面,二维流形曲面的离散

之前我们提到,网格实际上就是二维流形曲面的离散表达,一个观点是网格是从二维到三维的映射,另一个观点是平面图在三维空间中的嵌入。因此网格也是参数型的曲面,只不过是分片线性的。

图1. 认识网格的两种观点

网格的数据结构种类非常多,没有普适的网格数据结构,要根据具体问题具体分析。要注意,在编程中空间和时间永远互相矛盾,存储越多的信息,访问就会越快,存储的信息越少,节省了内存,但是访问速度就会大大增加,因此要对不同的问题选择不同的存储方式,来高效地解决问题。

局部结构

局部特征度量

图2. 顶点的1-邻域

在网格中,一个点的信息例如点的弯曲程度,由它周围的点来决定,因此我们使用1-邻域(1-ring neighborhood)信息来考虑,1-邻域指直接与点相连的集合(如图2)。

图3. 顶点的2-邻域

如果是2-邻域,则考虑的范围更大,每个位于1-邻域中的点的1-邻域将会被考虑进来,如图3所示。邻域越大,考虑的几何信息就会越多,但通常我们就用1-邻域来近似顶点的无穷小邻域。

图4. 红色点的1-邻域

如图4,在红色顶点的1-邻域中(蓝色顶点),我们可以对红色点的加全平均得到橙色点。如果是使用均匀权重,那么橙色点就位于蓝色点的重心,我们也可以使用Cotangent权,与它们的几何属性相关联。这样我们可以看到,橙色点和红色点之间有一个向量,这个向量越长,红色点越尖锐,因此该向量可以用来度量红色点的属性,像一个伞柄,于是人们就定义这个向量叫做拉普拉斯算子(Laplace operator)。极小曲面的局部迭代法就是不断地让红色点向橙色点位置移动。

拉普拉斯算子

拉普拉斯算子是n维欧几里得空间的二阶微分算子(椭圆型算子),对于二元实函数f(x,y),它表示为
\Delta f = \frac{\partial ^2 f}{\partial x^2} + \frac{\partial ^2 f}{\partial y^2}
在笛卡尔坐标系中,为所有非混合二阶偏导数,即分别对各分量取二阶偏导然后求和
\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
在一维的差分中很好理解,在坐标系中取x_{i-1}, x_i, x_{i+1}三点,求x_i处的导数,可以表示成
f'(x) = \frac{y_{i+1} - y_i}{x_{i+1} - x_i}
即用(x_{i+1}, y_{i+1})(x_i, y_i)的斜率来近似导数,这种用后面的点减去前面的点的方法叫做向后差分,当然我们也可以使用向前差分,表示成
f'(x) = \frac{y_i - y_{i-1}}{x_i - x_{i-1}}

对于二维问题,度数为4的顶点,二阶偏导有
\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
在另一个方向上也是一样的,将两个方向上的二阶偏导加起来会发现,我们最后会得到(x_i, y_i)的拉普拉斯算子等于它周围的四个点(两个方向)的和再减去它自身的4倍。因此我们用顶点1-邻域的平均减去自身的度数倍来作为拉普拉斯算子的近似,拉普拉斯算子也叫做拉普拉斯坐标,或微分坐标

图5. 微分坐标

平均曲率流定理

图6. 平均曲率流

平均曲率流定理是说,如果要求图6中红点邻域的性质,可以在点周围取一个非常小的封闭区域,这个区域的边界记作\gamma\gamma上任意一点v与红点v_i形成了一个向量,如果沿着\gamma弧作线积分,将这个值除以\gamma的弧长。在这个问题中\gamma可以任意取一个包含v的区域,当\gamma的弧长趋向于0时,会得到一个向量,这个向量的方向是该点处的法向n_i,长度是该点的平均曲率H(v_i)。在离散情况下就是我们上面推导的拉普拉斯算子(为方便理解,这里使用的均匀权重)。
图7. 平均曲率流

因此我们说,拉普拉斯坐标刻画了一个点的平均曲率性质。加权方案有很多,最常用的权是余切权。

局部拉普拉斯光滑

上文解释了拉普拉斯坐标能够刻画一个点的平均曲率性质,点到拉普拉斯坐标的向量越短,曲面越光滑,向量越长,曲面越尖锐,它也可以作为几何细节的度量

图8. 拉普拉斯光滑

之前我们在局部迭代求解极小曲面中,运用了图8中的方法,这种将顶点沿着拉普拉斯算子移动的方法就称为拉普拉斯光滑(Laplacian Smoothing)。在求解极小曲面的过程中,我们迭代了很多次得到了近似极小曲面,即边界固定的情况下,无穷多次的拉普拉斯光滑即可得到极小曲面。

图9. 拉普拉斯光滑

从信号的角度,拉普拉斯光滑可以看作是一种对这个点处的几何信号不断处理的过程。这一方法可以用于网格去噪,真正的数学上的意义是它是一种滤波(Filter)。滤波就是用一个值的周围的值来平均,也就是卷积。

图10. 拉普拉斯光滑的效果
图11. 网格过度去噪

如图10,执行了拉普拉斯光滑后,模型就变得光滑,但同时模型上的细节也消失了。但是如果过渡去噪,使得模型细节过度缺失就会over-smoothing,如图11所示。因此我们要控制\lambda和迭代次数。

图12. 平均曲率流与拉普拉斯算子
图13. 离散网格顶点的平均曲率公式

前面我们提到了平均曲率流,如图7,我们写出了平均曲率的离散形式,即拉普拉斯算子就等于平均曲率与法向相乘,我们可以依此来进行网格光滑,如图12。当然我们也可以求出一个网格顶点的曲率,如图13。

全局拉普拉斯光滑

根据极小曲面的定义我们知道,如果每个点的平均曲率都为0,就能得到极小曲面,我们前面的迭代方法是让每个点都不断地迭代,使每个点的平均曲率趋向于0,在迭代的时候我们发现,迭代过程中会出现局部光滑得过快,或者出现自交的情况。那么有没有好的方法来解决这个问题呢?

我们的目标是希望每个点都满足下面这个关系
L(v_i) = v_i - \sum_{j\in N(i)} \omega_{ij}v_j = 0,\quad \omega_{ij} = cot\alpha_{ij} + cot\beta_{ij}
这个关系是关于v_i的方程,如果我们把所有顶点的方程联立,就能得到网格曲面的整体Laplacian方程:
Ax=0
这里的矩阵A是一个n × n的矩阵,但是它非常稀疏,因为每一行的数目是顶点数,非零数却只有度数个。我们把拉普拉斯算子\delta放在等号右边就能得到图14形式,本质上是如图15分别求三个分量

图14. 拉普拉斯矩阵
图15. 拉普拉斯矩阵

同样,对于一个图,我们求出了每个点的\delta,我们通过求解Lv=\delta就能求出更新后的顶点位置。如果每个\delta都缩短到它的10%就相当于我们前面的迭代方法。这就是拉普拉斯光滑的全局方法。

图16. 拉普拉斯矩阵

拉普拉斯矩阵的秩是n-1,多个分离mesh的话就是n-c,因此它是一个非满秩矩阵,这就需要加条件约束,例如约束边界点。这样我们就得到了生成极小曲面的全局方法,如图17。

图17. 极小曲面的全局方法
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容