@TOC
Motivation
传统方法迭代次数过多,且适用场景受限。所以希望提出一种收敛较快,且适应范围广的算法。
Basic Method
Shape from Shading方法
Related Works
在Oliensis和Dupuis之前,
传统的SFS算法通常需要加一些正则化的条件来保证算法的物理层面上的合法性;并且似乎迭代几千次才能保证不错的近似结果。
线性方法,在傅里叶区域进行求解,不需要满足上述规则,但应用场景有限;特别是它们不能处理垂直于表面的入射光。
Oliensis和Dupuis的方法:
给定一些图像的奇异点(图像中的最亮点)作为初始值,遵循最小下坡原则可以得到稳定的解而不需要任何正则项。但是该算法及推导过程很复杂。
- 奇异点在该算法中起一个关键作用,但是奇异点的引入会带来三重歧义:局部凸面,局部凹面 或者局部鞍面
- 最小下坡原则会消除三重歧义,得到一个稳定的连续表面解。其中下山就是沿着远离光源的像素传递图像信息;最下下山是指选择一条最近的路径下坡
而我们的算法就是基于此进行开发的,并使用斜率和高度来描述上述三个原则,得到一个简单有效的算法
Contibutions of this paper
提出一种简单的SFS算法,该算法就是基于Oliensis和Dupuis的方法进行开发的,并使用斜率和高度来描述上述三个原则,得到一个简单有效的算法简化了Oliensis 和Dupuis 的算法,迭代次数更少。该算法基于最小下坡原则,保证了表面的连续性以及结果的稳定性。该算法的适用范围很广。
Method details
Notation
场景辐射对表面方向的依赖性可以表示为高斯球面:
R
⃗
(
n
⃗
)
=
(
n
⃗
1
,
n
⃗
2
,
n
⃗
3
)
\vec R(\vec n)=(\vec n_1,\vec n_2, \vec n_3)
R(n)=(n1,n2,n3)的函数,表明亮度可以表示为表面方向
n
⃗
\vec n
n的函数
表面法向是一个可能解,如果它和亮度公式具有一致性:
R
(
n
⃗
)
=
E
(
x
,
y
)
(
1
)
R(\vec n)=E(x,y) \quad\quad\quad\quad\quad(1)
R(n)=E(x,y)(1)
除了最亮的点,无穷多个法线构成了Eqn1的解,描述了高斯球面上恒定亮度的闭合曲线。
一个平的表面块遵循以下表面公式:
x
n
1
+
y
n
2
+
(
z
−
z
0
)
n
3
=
0
⇔
z
=
z
0
−
x
n
1
+
y
n
2
n
3
(
2
)
xn_1+yn_2+(z-z_0)n_3=0\Leftrightarrow z=z_0 - \frac{xn_1+yn_2}{n_3} \quad(2)
xn1+yn2+(z−z0)n3=0⇔z=z0−n3xn1+yn2(2)
where
z
0
z_0
z0is an arbitrary offset of the patch
采取小的步长
(
d
x
,
d
y
)
(dx,dy)
(dx,dy),并且将其用极坐标表示为
(
d
x
=
c
o
s
(
ψ
)
d
s
,
d
y
=
s
i
n
(
ψ
)
d
s
)
(dx=cos(\psi)ds,dy=sin(\psi)ds)
(dx=cos(ψ)ds,dy=sin(ψ)ds),因此相应的斜率可以表示为
σ
(
ψ
,
n
⃗
)
:
=
d
z
d
s
(
ψ
,
n
⃗
)
在
(
c
o
s
(
ψ
)
,
s
i
n
(
ψ
)
)
方
向
上
的
方
程
:
\sigma(\psi,\vec n):=\frac{dz}{ds}(\psi,\vec n)在(cos(\psi),sin(\psi))方向上的方程:
σ(ψ,n):=dsdz(ψ,n)在(cos(ψ),sin(ψ))方向上的方程:
σ
(
ψ
,
n
⃗
)
=
−
c
o
s
(
ψ
)
n
1
+
s
i
n
(
ψ
)
n
2
n
3
(
3
)
\sigma(\psi,\vec n)=-\frac{cos(\psi)n_1+sin(\psi)n_2}{n_3}\qquad\qquad\qquad(3)
σ(ψ,n)=−n3cos(ψ)n1+sin(ψ)n2(3)
高斯球面上的表示以及反射图之间的关系
n
−
T
=
(
−
p
p
2
+
q
2
+
1
,
−
q
p
2
+
q
2
+
1
,
1
p
2
+
q
2
+
1
)
(
4
)
n^{-T}=(\frac{-p}{\sqrt{p^2+q^2+1}},\frac{-q}{\sqrt{p^2+q^2+1}},\frac{1}{\sqrt{p^2+q^2+1}})\quad\quad\quad\quad(4)
n−T=(p2+q2+1−p,p2+q2+1−q,p2+q2+11)(4)
特征样条法,从一个已知法向的微表面块出发,采用最速梯度下降进行移动求解周围的表面高度。但该方法容易产生不稳定解:从一个平滑微表面出发的特征样条分离,最终得到起伏变化的表面。
采用minimum downhill principle确定表面高度
为了解决特征样条
为更新(x,y)点处的高度,让我们扫描(x,y)周围无穷小圆邻域内的点,尝试从邻域中的点向(x,y)传递高度信息。
选择最陡下降方向对应的斜率
σ
(
ψ
)
\sigma(\psi)
σ(ψ).保证了最终生成的表面满足亮度公式
最陡下降的公式满足:
0
=
d
d
α
(
c
o
s
(
ψ
)
p
(
α
)
+
s
i
n
(
ψ
)
q
(
α
)
)
(
5
)
0=\frac{d}{d\alpha}(cos(\psi)p(\alpha)+sin(\psi)q(\alpha))\quad\quad\quad\quad(5)
0=dαd(cos(ψ)p(α)+sin(ψ)q(α))(5)
where (Y is an arbitrary parameter along the curve of constant brightness in the brightness map for which the brightness equation is fulfilled.
根据对称性,通常会有两个解。所以选择远离光源的哪个点,给出下面的约束
(
c
o
s
(
ψ
)
,
s
i
n
(
ψ
)
,
σ
(
ψ
)
)
⋅
l
⃗
⩾
0
(
6
)
(cos(\psi),sin(\psi),\sigma(\psi))\cdot \vec l \geqslant 0\quad\quad\quad(6)
(cos(ψ),sin(ψ),σ(ψ))⋅l⩾0(6)
其中
l
⃗
\vec l
l是入射光方向;
This downhill principle will guarantee that solutions can only propagate from a neighbouring point $(x_0, y_0) to (x, y) $if this neighbouring point is closer to the light sourcelie. if
(
x
,
y
,
z
(
x
,
y
)
)
⋅
l
⃗
⩽
(
x
0
,
y
o
,
z
(
x
0
,
y
o
)
)
⋅
l
⃗
,
(x, y, z(x, y)) \cdot \vec l \leqslant(x_0, y_o, z(x_0, y_o))\cdot \vec l,
(x,y,z(x,y))⋅l⩽(x0,yo,z(x0,yo))⋅l, so that infinite spirals are avoided’.