基本思想
目的是计算3D指示函数(indicator function),是一个泛函,将曲面外的点映射为,将曲面内的点映射为。
解决问题的关键依据是:模型曲面的有向采样点与模型指示函数之间存在积分的关系。
使用,找到合适的函数使得其梯度最贴近由采样点定义的向量场。在此基础上应用散度,将这个变分问题转换为一个标准泊松问题:
泊松重建方法是一个全局求解的方法,一次性考虑所有的点。
系统概览
输入: 曲面采样集合,其中每一个元素都包含坐标和向内法线;并假设这些点都在模型的曲面上,或者离曲面很近。
输出:模型对应的指示函数,并提取等值面(isosurface)作为曲面。
挑战:从采样点精确计算
具体思路
由于指示函数成片的都是常数(在模型外全是0,在模型内全是1),梯度场的计算可能导致在曲面边界处存在没有边界的值(unbounded value)。为了拒绝这种情况发生,将指示函数与平滑滤波器卷积并考虑卷积后函数的梯度场。
引理:给定带边界的立体模型,令表示的指示函数,为处的向内曲面法线,为平滑滤波器,并且将它转移到点处。平滑后指示函数的梯度等于由平滑曲面法线场获得的向量:
(原文中有证明)
由于不知道曲面几何,因此不能计算曲面积分;但是输出的有向点集提供了足够的信息去使用离散求和估计积分。
使用点集将划分为独立的块(patch),在独立的块上使用采样点坐标估计在块上的积分,通过块的面积尺度化(每个块的求和权重):
虽然任意的平滑滤波器理论上都可行,但是实际上需要慎重选择,最好能满足以下两个条件:
- 足够窄,不至于过平滑(over-smooth)
- 足够宽,可以很好的通过由块面积尺度化的在处的值估计上的积分
因此选择高斯滤波器,其方差与分辨率相关。
求解 ,然而一般是不可积的,所以解析解一般不存在。为了更好的估计最小二乘解,在这个等式上应用散度算子得到一个泊松方程
实现
定义了空间函数在曲面附近有高分辨率,远离曲面有低分辨率(八叉树);向量场由空间中一些函数的线性和表示;设置并求解泊松方程;提取指数函数等值面。
离散化
必须选择函数空间去离散化这个问题。使用均匀分辨率的结果开销太大,因此使用八叉树(octree)。
使用采样点的位置定义八叉树并且将函数与树的每个节点关联,选择的树和函数需要满足以下条件:
- 向量场可以用的线性和精准有效地表示
- 由项表示的泊松方程矩阵形式可以被有效求解
- 指示函数作为和的形式可以在模型曲面附近被精准有效地估计
定义函数空间
给定采样点集和最大树深度,定义八叉树为满足每个采样点都落到深度的叶节点上的最小八叉树。
定义一个函数空间,由一个固定的、单位积分的(unit-intergral)基函数的平移和缩放张成。对于每个节点,设为以为中心且由的尺寸拉伸的单位积分“节点函数”:
其中和分别是节点的中心和宽。
函数空间有多分辨率结构,类似于传统的小波表示。越好的节点对应越高频的函数,离曲面越近函数表示越精确。
选择基函数
在选择基函数中,目的是选择一个函数,使得向量场可以由节点函数的线性和精确有效地表示。
如果将每个采样点的坐标替换为包含它的叶节点中心,向量场可以由的线性和有效地表示:
这样每一个采样点都贡献了一项(法向量)到对应它的叶子的节点函数的系数。
由于最大树深度对应的采样宽度,平滑滤波器应该近似为方差在阶上的高斯。因此一个近似为单位方差的高斯。
为了效率我们通过一个简洁的支持函数近似一个单位方差的高斯,因此有:
- 得到的散度和拉普拉斯算子是稀疏的
- 估计在点处表示为线性和的函数,仅仅需要将在比较近的节点上求和。
设置为盒滤波器(box filter)与自己的第次卷积,得到的基函数:
当增长的时候,更接近高斯并且支持范围更大;在该文的实际实现中使用。
向量场定义
为了获得亚节点精度,该方法拒绝将采样点的坐标放在包含它的叶节点中心,而是在8个最邻近节点间使用三线性内插。因此,将指示函数的梯度场近似定义为:
其中是与最近的8个深度D的节点,是三线性内插权重。
这里先假设采样是均匀的(后面有对不均匀采样的说明),假设块的面积是常数并且是在一个数乘差别下对平滑指示函数的梯度很好的近似。
泊松求解
在定义了向量场之后,就可以开始求解函数使得的梯度更接近,即泊松方程。
求解的一个挑战是虽然函数和的坐标函数在空间中,但是函数和却不是必须的。
求解函数使得在空间上的投影和的投影最近。由于函数在一般情况下不是有正交基构造的,之间求解这个问题会变得特别没有效率。将这个问题简化为求解函数最小化:
给定第个坐标为的维向量,目标是求解函数使得的拉普拉斯在每一个上的投影都尽可能接近。
为了写成矩阵形式,令,因此是在求解向量。然后定义矩阵使得返回拉普拉斯和每个的点积。对于所有的,中元素为:
求解等价于
矩阵是稀疏且对称的。(稀疏是因为是局部的,对称是因为)
等值面提取
为了获得重建的曲面,必须首先选取等值面对应的值并且从计算得到的指示函数中提取对应的等值面。
选择这个值使得提取的曲面近似输入采样点的位置。通过估计采样点处的并计算平均值用以提取等值面:
这个选择有一个好处是的尺度缩放不会改变等值面。(向量场定义有提到一个数乘的差别)
非均匀采样
前面的推导是在均匀采样假设下的。
估计局部采样密度
给定深度设置深度估计器为在深度处节点函数的和:
计算向量场
每一个采样点的贡献和它在曲面上对应的面积是相关的。面积跟采样密度逆相关:
只适应采样点贡献大小在稀疏采样区域会导致很差的噪声平滑。因此针对局部采样密度增加适应平滑滤波器的宽度。
由于深度更小的节点函数对应更宽的平滑滤波器,定义
在这个定义中,表示采样点希望的深度。被定义为在所有采样点上计算平均采样密度
平滑滤波器的宽度和相关的曲面块的半径相关。
选取提取等值面的值
在采样点处的加权平均值: