摘要
介绍了一种全局的shape from shading 方法
该方法基于光滑表面的拓扑性质。其中把图像上的奇异点分为最大最小值,两种鞍点,作为解决该问题的关键。该分类方法适用于全局的情况并且不需要假设奇异点邻域点的局部特征。从结果上看,该方法能够得到较其他方法更优的结果(在当时),并且计算简单,易于实现,执行速度快。
引言
之前,Horn等人提出一种特征样条扩散的一阶非线性偏微分方程的方法,但该方法具有的局部性质,导致其计算困难,结果不精确、不稳定。因此后来产生一系列带有正则化的sfs方法。最近,又有一种迭代的方法,该方法据说可以经过迭代,求得一个“正确”的收敛的解。然而,该方法是针对局部求解了,为了保证全局性,需要引入一些奇异点的性质将局部解组成一个全局解。
根据Lambertian阴影模型,二维图像上的每一个灰度像素,与三维空间中的光源方向以及物体表面方向夹角的cosine值具有对应关系。shape from shading 是该映射的逆过程。为了解决歧义问题,引入了许多方案,例如:表面光滑假设、apparent contours、grlazing light edges、self shadow edges ,以及奇异点的性质。这里所说的奇异点是图像中在法向方向上没有歧义的点。通常认为奇异点的表面法向方向和光源方向一致。这些在图像中最亮的点通常为表面的最低点、最高点或者是鞍点。Horn[5]建议使用奇异点周围的小圆环作为特征条展开方法的初始条件。
在本文中,我们的方法不需要初始条件以及边界信息,我们的方法基于简单平滑Morse方程的拓扑属性,我们利用微分拓扑理论对奇异点进行分类。我们从所有可能的解中挑选出满足局部阴影方程以及全局拓扑属性的解作为正确的解。不需要对任何奇异点进行分类,所有这些点都参与合并区域的过程,直到找到所有可能的解。
局部Shape from Shading
假设一种最简单的情况,光源和观察者在同一位置。考虑光滑表面
z
(
x
,
y
)
z(x,y)
z(x,y),根据Lambertian阴影模型。亮度图(也就是阴影图像)KaTeX parse error: Undefined control sequence: \frec at position 31: …vec i \vec N = \̲f̲r̲e̲c̲{}{},其中,i是光源方向,N是表面法向,p,q是z在x,y方向的偏导数。
从一个围绕奇点的小圆开始,可以使用等高轮廓演化来扩展解。
给定等高轮廓C(s):S1 4 lR2,它可以作为曲线演化方程=C的初始条件,C(s,O)=C(s,)。其中n’是演化曲线的平面法向。演化曲线跟踪曲面的等高轮廓,从而重新构造曲面。进化方程中的时间t代表高度。这种直接由阴影形成的形状方法最近通过level -sets传播重新制定,并由Osher-Sethian算法数值实现。
结果还表明,由局部SFS问题等价于计算加权距离变换的问题。曲线演化方程描述了等成本轮廓的传播,其中,在图像域上定义的成本函数是亮度的函数。
只有一个已知为最小m的奇点。曲面可以通过计算该奇异点的加权距离图来重建。重构曲面是最小点的加权距离变换。每一个图像点x所对应的表面高度为:
该问题可以用level-sets 传播 算法我们的全局算法的基础是关于如何将局部解组合在一起的知识。
3. 拓扑性质
我们的基本假设是我们试图重建的物体有一个简单光滑的表面,由Morse函数描述。假设这样的表面没有猴鞍那样的病理奇点,下图是猴鞍面:
Morse函数的所有奇异点都可以局部描述,只需对平面上的坐标轻微改变即可,通过d±x^2± y^2,其中d是某个常数。奇异点附近的这种局部行为产生了三种局部类型的曲面(最小曲面、鞍曲面和最大曲面)能够对奇异点进行分类有助于从阴影问题中解决全局形状问题。事实上,给定所有最小点的高度{z(m)Im is a minimum},全局解可以表示为:
从一个假定的局部最小奇异点出发,演化轮廓满足多种奇异点。我们感兴趣的奇异点只有三种。根据登山者定理,位于光滑表面的闭合等高轮廓内的极值数超过
等高线内鞍点的数目。因此,当跟踪一个以最小值为圆心的等高轮廓时,传播轮廓遇到的第一个奇点必须是鞍点。有两种方法可以使轮廓达到鞍点。第一种是当马鞍从两个相反的侧面到达时。见下图左侧
在这种情况下,传播可以在没有障碍的情况下进行。在遇到这样的鞍点后,轮廓被分割成两条独立的曲线,内部曲线在向内传播时可能遇到一个最大点,并在该点消失而不违反任何拓扑条件。我们将这种鞍称为“第一类鞍”。
在第二种情况下,参见上图中的右侧框架,鞍点仅从一侧接触。在这种情况下,需要一个基于拓扑的程序来修正轮廓传播,以使内部遵守登山者定理。将轮廓传播到该点之外将导致该点显示为高阶局部极值,看起来像肩部(拐点),这是Morse函数中不允许的病理现象。但是,请注意,传播超过该点只会在定义明确的区域中导致错误结果,该区域是由传播的等高轮廓扫掠的区域的子集。其余轮廓不受影响,仍可以在重建过程中使用。这一事实有助于我们在生成全局算法的同时保持较低的计算工作量。
从奇异点作为等距线的传播源出发,传播等距线的合并点应为第二类鞍点。应该设计一个合并轮廓的规则。在下面的部分中,我们将预先设定一条规则,该规则将从sfs算法中生成全局形状。
4.全局算法
如前所述,主要问题是奇异点分类,从最小点传播,并使用第二类鞍点作为合并点.考虑到当前的全局问题,我们必须使用全局方法和光滑条件(曲面是Morse函数)作为解决的关键。该算法分为两个主要步骤。
第一步:对于每一个奇异点
m
i
m_i
mi,其中
i
∈
{
1
,
.
.
.
,
N
}
i\in \{1,...,N\}
i∈{1,...,N}其中N是奇异点的数量。计算加权距离变换
对于已知为最小值(或最大值为对偶值)的单个奇点,此变换是正确的解。第一奇点:mk(
≠
\neq
=mi),根据D中的最小距离被识别为第二类型的鞍,其标记为Pz=mk,其对应距离为H,:H,={Di(mk)m_k是Di中的第二类型鞍}。
第二步:
对满足平滑度要求的“适当解”进行迭代搜索。如果满足以下条件,则对两个距离变换Di和Dj进行“合并”:2.1两个距离映射具有与最小距离第二类鞍相同的奇点(
P
i
=
P
j
P_i=P_j
Pi=Pj).2.2与第二种类型鞍点(Di(x)=Hi和Dj(x)=Hj)定义的高度相对应的等高轮廓仅在奇点处接触,不相互切割或接触,即
当满足上面两种情况时,两个距离映射的合并或“逻辑组合”执行如下:Dr(x)=min{Di(x),Dj(x)+Hj-Hi}。地图D和它的最小距离第二型鞍(如果遇到P,高度H,)被添加到距离地图数组中。重复合并步骤,直到得到没有第二类鞍点的映射。这张地图将是重建问题的“合法”解决方案。但是,可以继续合并过程,直到数组中的任何条目之间不再有连接(第二种类型的鞍点)。所有与数据对应的合法地图都将通过这种方式找到。
算法的第二步从阴影问题中找到给定形状的所有可能解,即在奇异点处服从Morse条件的解。算法是在像素网格上实现的。每个奇异点的加权距离图是通过网格上实现的水平集使用等高等高线演化计算的。
在算法的第一步,任何其他局部形状形状着色算法或加权距离变换可用于相同的目的。奇异点是通过考虑像素连接区域内强度最高的网格点(最亮点)来确定的,这些白色区域是通过对阴影图像进行阈值分割来隔离的。阴影图像以64 x 64灰度像素数组的形式给出。
给定一个单点的加权距离变换,应确定第二类鞍点的位置。考虑围绕每个奇异点的一条小的简单闭合曲线。沿该曲线的过零点个数,其中零点是该奇点的高度,对该点进行分类。对于第一种类型的鞍座,将出现四个零交叉点,对于最大点,没有零交叉点,而对于第二种类型的鞍座,有两个零交叉点。在网格上,通过循环链码表示每个奇异点周围的正方形边界来搜索过零点。对于每一个奇异点具有加权距离和第二种类型的第一个sad-dle,合并过程开始。过程Merge(k,I,NT)检查mapk和map 1是否可能合并。如果可以合并这两个地图,将创建一个新地图,并定位其第二种类型的鞍座。索引变量NT递增1,并作为标签分配给新映射。如果两个映射合并而未检测到第二种类型的鞍,则两个映射的合并是合法的解决方案。设N为奇异点的个数,下面的简单过程重建曲面:
4.1 实例
为了更好地理解合并算法,请考虑下面的简单示例。让原始对象由四个最小值四舍五入的最大值组成。在上图中,上一行显示原始曲面及其着色图像。原始对象的等高轮廓在着色图像上绘制。算法的结果和从原始目标中减去解得到的误差面在下一行给出。
在解决了9个奇异点(极大极小点和鞍点)的阴影问题后,合并过程如下(见上图):04和DS通过点7合并到Dlo中。07和Dg通过点8合并到Dll中,D1和03通过点2合并到D12中,并且Dll和D12通过点4合并到Dl3中,从而产生第一个法律解决方案,其中不存在第二鞍座类型的点。
可能会执行不导致任何解的合并(例如
D
4
D_4
D4和
D
8
D_8
D8生成
D
10
D_{10}
D10),但算法的最终结果始终是满足拓扑约束和辐照度方程的合法解。我们可以在获得第一个合法解决方案后继续合并过程,从而检测出所有可能的解决方案(如果有多个解决方案)。
下面的示例展示了一个包含两个最大点和它们之间的鞍座的简单曲面。下图中的上一行显示曲面及其着色图像。每个奇异点的三个加权距离映射都是中间行。如前所述,逻辑组合产生下一行中的曲面。此曲面是中间行中共享相同鞍点的左曲面和右曲面的逻辑组合。
在最后一个例子中,我们讨论了一个更复杂的曲面,它有11个所有可能类型的奇异点。左上一行显示原始曲面及其着色图像(右上一行)。最后重建的曲面和误差显示在下一行。
5. 总结
提出了一种新的基于阴影的全局形状求解方法。利用简单光滑曲面的拓扑性质,构造了一种利用加权距离变换的逻辑组合来计算奇异点的算法。
并行实现算法的第一步是可能的。计算每个单点的加权距离变换的计算量由奇异点的最大加权距离决定。将此最大距离定义为g=
s
u
p
i
∈
{
l
,
,
,
,
N
}
{
z
i
(
x
)
:
x
∈
Ω
}
sup_{i\in\{l,,,,N\}}\{zi(x):x \in \Omega\}
supi∈{l,,,,N}{zi(x):x∈Ω}。
第二步也可以并行进行。在这种情况下,计算复杂度是在获得所需结果之前应执行的合并步骤数的阶。因此,第二步的迭代次数以鞍点的数目为界,并根据登山者定理给出了这个数目
(
N
−
1
)
/
2
(N-1)/2
(N−1)/2
并行机器的总计算复杂度为
O
(
(
g
+
(
N
−
1
)
/
2
)
O((g+(N-1)/2)
O((g+(N−1)/2)级。解决方案中涉及的内存至少应为
O
(
Ω
N
)
O(\Omega N)
O(ΩN)阶,其上限由可能的合并步骤的数目确定