2007年11月24日星期六

Quadric Error Metric (QEM), Preserving Boundaries -网格简化

Garland97的论文中提到为了保护边界在简化的过程当中能尽量幸免,在计算每一个顶点的quadric的时候,是将边界面F沿其边界边e生成一个垂直面,这个垂直面的quadric也加入到e的两个端点的quadric中。详细请看原文的第六节。
下图是我对一个平面过简化效果图:





左图是1089个顶点的原图, 中间是没有加入preserving boundaries控制的100个点的简化图,第三图加入控制后的100个点的简化图,第四图是加入控制后简化为4个顶点的图。
其实加入垂直面的意义是使得边界点更趋向于往尽量成一条直线上的边界点做收缩。也就是说这将要被收缩的两个边界点所在的各自直线(这两直线当然是相连的)尽量不要成90度。因为90度的时候,点到垂直面的距离最大,收缩代价最大(这就是quadric的意义)。
> 2007.12.01
从上面的简化图中,可以看出有些三角形是发生了overlapping,后来加入的防止方法是检测一邻域里面的面的normal的方向的变化,如果变化例如大于90度就当作翻转。

2007年11月12日星期一

"Mean Saliency", siggraph2005的论文


下面左边是mesh saliency化, 右边是的mean curvature颜色化

"Mean Saliency", siggraph2005的论文。

概述
将Image中找寻关键部位的概念引入了3D的mesh。所谓关键部位,是指容易吸引人注意力的地方,也许更准确的说是特征部位。在image中,那些部位是shape和lighting的function, 而在mesh中,暂时只考虑geometry/shape。
那么怎么表示mesh中哪些顶点是特征的是关键的呢?它是给每一个顶点一个标量值,也就是saliency(vi)。值大的表示这个点“突出”,值小的表示这个点“一般”。举个例子,一个球形的mesh,其surface上的所有顶点的saliency值都是一样的。

怎么求顶点的saliency值
论文中给出的算法是:首先假设是在scale 1下,这时,参数sigma_1 = 2 * epsilon, epsilon = 0.3% * 模型的bounding box的对角线长度。
1.求出每一个顶点的mean curvature,这些标量值是不变的了。2. 求出每一个顶点在sigma_1下的gaussion-weighted average mean curvature,G(vi, sigma_1)。这个公式详细请看论文。其中有个注意的地方是,使用都了当前顶点两倍sigma_1距离之内的邻居顶点。然后再求出G(vi, 2*sigma_1)。3。 求出每一个顶点的saliency值,saliency(vi) = abs(G(vi, sigma_1) - G(vi, 2*sigma_1)).
将上面的过程重复5次,也就是scale 1, scale 2, scale 3, scale 4 , scale 5这论文中所谓的multi-scales。其中,scale 2时,sigma_2 = 3 * epsion; scale 3: sigma_3 = 4 * epsilon; scale 4: sigma_4 = 5 * epsilon.
最后一步是将每一个顶带你在5个scales下的saliency值做非线性的求和。具体公式也请看论文。
应用
其中一个应用就是改进Quadric error metric (QEM)简化算法。在每一个顶点的quadrc上乘以自己的saliency值,当然了这个saliency值已经过放大的。这其中体现了:saliency值大的顶点,更能表现重要性,应该在更后面被收缩。这和quadric(vi)值大的顶点推后被收缩是一致的。

2007年11月9日星期五

Laplacian Operators

一般遇到的laplacian operators有两个:
(1).[Taubin 95] "A Signal Processing Approach to Fair Surfac Design"中提出的Uniform Laplacian, also known as Tuttle Laplacian.使用的就是uniform weighted,将邻域顶点的坐标加和再平均。这是最简单的拉普拉斯算子。
(2) [Desbrun 99] "implicit fairing of irregular meshes using diffusion and curvature flow"中提出的Cotangent Laplacian. 使用的正是常说的Cotangent weight.

Laplacian Coordinate将一个laplacian operator应用到一个vertex就获得这个vertex的laplacian coordiante(这是一个向量),而这个laplacian operator的系数, 也就是the so-called laplacian coefficients.我的感觉是:某个vertex上的laplacian值反映了这个顶点于其邻域(neighborhood vertices)的关系。PS. 所谓的邻域,常见的为一个顶点的one-ring neigborhood.

我所come across的应用:
(1)利用Cotangent weight求Discrete Mean Curvature Normal of a vertex(这也是一个向量值)。H(vi) = (1/Area(vi) * [laplacian coordinate(vi)];其的大小(标量值)就是某个顶点的mean curvature.这好像是反应了mesh model的固有特征。通过求解model中的顶点mean curvature值,可以直观的看到这个model的光顺性(这是我以为的,现不知对否)。在许多论文中,提到Laplacian operator的时候都常提到Mean Curvature.
(2)Laplacian smoothing常说的平滑smoothing可能包括了denoise and fairing两种。我暂时取狭义的denoise为smoothing。Laplacian smoothing:the classical Laplacian smoothing, where every new vertex of the meshis moved to the barycenter of its neighbors.vertex_new_position(vi) = vertex_old_position(vi) + laplacian_normal(vi);
(3)laplacian surface editting[O.Sorkine 2004].其实我正是看此paper的时候才开始认真查阅laplacian的信息的。当中拟合surface editting前后的laplacian coordiante of vertices来达到目的。可惜自己理解不够。