
前文1 前文2 所说的方法都是通过调整顶点坐标来实现去噪效果。从信号处理的角度来理解,显式diffusion flow可以被视作有限冲激响应(FIR)滤波器,而Desbrun提出的隐式法可以被视作无限冲激动响应(IIR)滤波器。
为什么我要生拉硬拽地把上文扯到信号处理领域呢?哈哈 ,只是为了引出网格去噪中的另一大类处理方法:滤波法。滤波方法是个非常宽广的范畴,我无法面面俱到。因此本文只会聚焦在其比较窄的一个子集中---各项异性滤波(anisotropic filtering)。
各项异性滤波法
前文提到,各项同性的扩散流无法保持特征,因而需要引入各项异性滤波法来区别对待。滤波的对象有顶点坐标,顶点法向等。本文主要想聊聊法向滤波与顶点更新的两步法。两步法是将法向滤波和顶点更新分成两个阶段来迭代处理。不同的方法主要围绕在这两个步骤的处理效率、对特征的保持程度有区别。
为什么这类先对法向滤波的方法能取得成功?我想,一个主要原因是法向能提供几何特征更方便直观的描述。试想,特征边往往是相邻法向的差异来定义的。因此直接对法向滤波会比对顶点坐标滤波带来更有效的影响。
法向滤波
此类方法将法向和顶点坐标看做定义在网格上的两个信号,首先利用不同的滤波方法处理法向,然后更新顶点坐标来逼近滤波后的法向场。其滤波基本形式为:
双边滤波法是其中最著名的一类方法,Zheng[6]提出的实现策略如下:
Lee[7] 提出了不同的策略,其不同点在于相邻点法向的差异衡量:
。
两个权重函数都是单调函数,随空间距离或信号差异的增大而单调下降。
Zhang[8] 在双边滤波的基础上提出了一个拓展框架。他指出传统的法向双边滤波过程在考虑信号权重
时直接使用带噪声的原始法向场,会带来结果的不稳定,应该换成结构更清晰的引导向量场:
注意上式中
,前者代表原始信号,后者代表引导信号。具体的引导向量场实际上通过法向的聚类划分成多个patch,并对每个patch求取面积加权平均的法向来实现。
其他还有层出不穷的滤波方法,如更改法向差异度量的范数L1、L0 Zhao[10],更改引导向量场的迭代阶数 Wang[9],混合使用静态/动态更新的引导向量场 Zhang[11]等等,不计其数。
顶点更新
当得到了更新后的法向后,该如何更新顶点坐标呢?Taubin[2] 提出利用面法向
正交于三条边向量的性质:
上述等式无法同时在所有面片上成立(因为该向量场未必可积),因而只能取最小二乘意义上的最小值:
注意上式是齐次形式,我们真正想要的是非平凡解(non-trivial)。因而将前式改写成矩阵形式后,该问题可被视作寻找最小特征值对应的特征向量,即等价于优化如下能量:
Taubin[2] 等人提出可以通过梯度下降法来迭代求解:
同样的
取值也很关键,步长小耗时长,步长大则不稳定。Sun[1] 提出了一个计算简洁,效果不错的迭代策略:
这个方法本质上是明确了
的选取策略,
是顶点的邻接面片个数。对于规则三角网格,可以简单取为6,也就是在Taubin方法中取
。
结果
这个框架下的方法数不胜数,没有哪一个方法是包打天下,没有最好,只有最适合,运用之妙,存乎一心。还是先欣赏几个结果吧。
参考
- Fast and Effective Feature-Preserving Mesh Denoising
- Linear Anisotropic Mesh Filtering
- Efficient Linear System Solvers for Mesh Processing
- Fuzzy Vector Median-Based Surface Smoothing
- Mesh Smoothing by Adaptive and Anisotropic Gaussian Filter Applied to Mesh Normals
- Bilateral Normal Filtering for Mesh Denoising
- Feature-Preserving Mesh Denoising via Bilateral Normal Filtering
- Guided Mesh Normal Filtering
- Rolling Guidance Normal Filter for Geometric Processing
- Robust and effective mesh denoising using L0 sparse regularization
- Static/Dynamic Filtering for Mesh Geometry