其他分享
首页 > 其他分享> > Shape From Shading:A Survey

Shape From Shading:A Survey

作者:互联网

shape from shading : A survey

目录

摘要

shape from shading 技术自1970年由horn提出以来,已经涌现出许多经典sfs算法。这篇文章介绍和了六个比较著名的sfs算法;利用深度z 误差的平均值以及标准差,表面梯度(p,q)误差的平均值,以及cpu运行时间对其性能进行评估。每个算法只适用于部分图片,而对其他图片表现不是很好。总体上,最小化方法最具有鲁棒性,而其他算法速度更快。

引言

形状恢复是计算机视觉中的经典问题。其目标就是从二维图像中恢复三维形状。重建的形状可以用以下几种方式描述:深度Z(x,y),表面法向(nx,ny,nz),表面梯度(p,q),surface slant Φ, tilt θ。其中,深度可以看作是表面点相对于相机的距离,或者相对于x-y参考平面的高度。表面倾角Φ,偏角θ和表面法向的关系为:
在这里插入图片描述
其中lll为表面法向的数量级。

在计算机视觉中,恢复形状的技术可以统称为shape-from-X,其中X可以是shading,motion,texture……shape-from-shading(SFS)解决从变化的图像阴影中恢复形状的问题。

为了解决SFS问题,需要对图像形成过程足够了解。一个简单的成像过程可以看作Lambertian模型,即图像的像素点的灰度依赖于光源方向以及表面法向。SFS问题,就是给定一个灰度图像,恢复图像中每个像素对应的光源以及表面形状。然而,真正的图像不一定总是Lambertian模型。即使是Lambertian反射,并且假设光源方向已知,图像亮度可以表示为光源方向和表面形状的方程,那么问题依然不简单。原因是:如果表面形状用表面方向表示,我们得到一个带有三个未知量的线性方程;如果表面形状用表面梯度表示,我们就得到两个未知量的非线性方程。所以,仅仅知道图像亮度是不够的,还需要额外的约束。

本文中用到了两个不同光源的合成图片,三个真实图片

2.文献回顾

最近,Horn认为存在这样一些图像,这些图像无法从具有均匀反射属性和光照假设的光滑表面成像,SFS对这类图像不起作用。所以要注意鉴别这些图像。

SFS可以分为四类:最小化方法,传播方法,局部方法以及线性方法。最小化方法通过最小化能量方程求解;传播方法利用一系列表面点(如singular points)向整个图像传播形状信息;局部方法基于表面类型的假设获得形状;线性方法基于线性化的反射图求解。
在这里插入图片描述

2.1最小化方法

较早的的最小化方法,是由Ikeuchi和Horn提出的用来恢复表面梯度的方法。

在这个问题中,有两个未知量表面梯度p,q,只有一个已知量图像灰度;所以该问题是未定的,需要引入额外约束。

他们引进了两个约束:亮度约束和平滑约束。亮度约束要求重建后的形状产生的图像亮度和原始的输入图像一样;平滑约束保证了重建后的表面是光滑表面。在以上两个约束的前提下,通过最小化能量方程计算物体形状。为了保证正确的收敛,给出闭合边界处的形状作为初始值。

因为闭合边界处的梯度至少有一个无穷大的部分,立体投影用于将误差函数转换到不同的空间?

基于以上两种约束,Brooks和Horn采用了一种基于表面法向的方法来最小化能量方程。

Frankot和Chellappa强制Brooks和Horn算法中的可积性来恢复可积表面(即满足Zxy=Zyx的表面)。利用迭代方法估计表面斜率可以表示为有限组的正交Fourier基函数的线性组合?可积性的实施是通过将不可积的表面斜率估计投影到最近(以距离计)的可积表面斜率来完成的。这个映射是通过找到满足线性组合可积性的最接近的系数集来实现的。该方法在精度和效率上均优于Brooks和Horn的方法。

后来Horn本人也采用可积性约束代替了平滑约束,不过该算法还是收敛太慢了。

Szeliski使用了一种基于层级的预处理共轭梯度下降算法,加快运算速度。

基于Brooks和Horn算法的几何解释,Vega和Yang应用启发式方法,来提高Brooks和Horn算法的稳定性。

Zheng和Chlleappa没有采用平滑约束,而引入一种亮度(intensity)梯度约束,即重建后的图片强度梯度与输入的原始图像分别在x和y上的差距越小越好。

以上方法均用到了变分微积分。

Leclerc和Bobick使用离散公式和共轭梯度法直接求深度;使用亮度约束和光滑约束保证收敛,立体深度图作为初始估计值。

Lee和Kuo也提出一种利用亮度和光滑约束恢复深度的方法,他们通过三角形的拼接来逼近曲面,该方法不需要深度的初始值。

上面提到的所有方法均是处理单一光滑表面;Malik和Maydan提出一种针对分段光滑曲面的方法,将line drawing 和阴影约束合并到一个能量方程中,通过最小化能量方程来同时恢复表面法向和line labeling。

2.2传播方法propagation Approaches

Horn的characteristic strip方法本质上是一种传播方法。characteristic
strip是图像中的一条线,如果位于线的起点的这些值(什么值?)已知的话,就可以沿着这条线计算出表面深度和方向。Horn的方法使用球面近似构造了奇点(singular point 也就是最大亮度的那些点)邻域周围的初始表面曲线。假设相邻的strips没有交叉,形状信息沿characteristic strips向外同时传播。特征样条的方向作为强度梯度的方向。为了获得稠密形状图,当相邻的样条距离较远时,可以通过插值法插入新的strips。

Rouy和Tourin 提出一种基于Hamilton-Jacob-Bellman公式和粘性解(what?)理论的SFS方法,用以求得唯一解。通过动态规划给出了粘性解和最优控制理论之间的联系;此外,还给出连续解和光滑解同时存在的条件。

Oliensis观察到表面形状可以从奇点进行重建而不是闭合边界。基于此,Dupuis和Oliensis把SFS当作最优控制问题。Bichsel和Pentland 简化了前者的方法,提出一种最小下山方法,该法迭代次数少于10次即收敛。

和Horn以及Dupuis,Oliensis的方法类似,Kimmel和Bruckstein,从初始化闭合曲线得到的相等的等高线layer来重建表面。该法应用了微分几何、流体力学和数值分析中的技术,

对光滑表面有不错到重建。该算法使用奇点区域的闭合曲线来初始化。

2.3局部的方法

Pentland的局部方法从图片强度以及其一阶和二阶导数恢复形状信息。他假设每个点的表面都是局部球面。在这个球面假设下,Lee和Rosenfold使用图像强度的一阶导计算出了基于光源坐标系的表面倾角和偏角。

2.4 线性方法

Pentland 和Tsai以及Shah提出的线性化方法,通过线性化反射图来计算形状。

Pentland使用反射函数在表面梯度方面的的线性逼近,并对该线性函数进行傅里叶变换,得到各点深度的闭合解。

首先应用梯度的离散逼近,然后应用反射图的线性近似直接求深度图,该算法使用Jacobi迭代法恢复各点深度。

2.4.1互反射问题

前面所讲的方法并没有处理互反射问题-即表面之间的相互反射。Nayaret使用光度立体方法解决从互反射中恢复形状的问题。他们发现,在存在互反射的情况下,从光度立体算法恢复的错误的形状要比真实的形状浅。因此,他们提出一种迭代优化的方法。

Forsyth 和 Zisserman也讨论了相似的互反射解决方案。

2.4.2收敛性、唯一性和存在性

关于证明SFS解的唯一性或存在性的工作很少。在光源方向等于或围绕观察方向对称的条件下,可以证明SFS的唯一性。在已知初始曲线的情况下,如果曲面深度的一阶导数是连续的,则特征条法得到唯一解。一般情况下,唯一性是未知的。然而,Lee和Kuo表明,在给定参考点的深度的情况下,增加平滑度约束和连续线性化反射图(基于从上一次迭代获得的局部梯度)在大多数情况下为其方法提供了唯一的解决方案。Blake等人和Rouy及Tourin也提供了唯一性的充分条件。它们的条件要么包含奇点,要么包含闭合边界。

如果我们考虑整个图像的局部唯一性而不是全局唯一性,那么只要给定反射图,就可以很容易地确定解在奇异点和闭合边界的唯一性。这些是我们可以直接从图像亮度确定表面方向的点。任何区域的亮度模式都可能由无限多个不同的表面产生。然而,奇异点和闭合边界(occluding boundaries)的信息可以用来约束可能的解。

2.4.3文章的结构

第三部分介绍反射模型有关的背景知识;第四部分具体介绍六种SFS算法;第五部分是用到的合成和真实图像;第六部分是实验;第七部分是误差分析;第八部分是六种不同算法的运行时间;第九部分是总结;

3.反射模型

基于物理特性,表面可以分为纯朗伯体,纯镜面,二者的混合体或者更为复杂的表面;这部分主要介绍反射模型以及与SFS有关的属性。

3.1朗伯体和镜面反射模型

朗伯体表面

也就是只存在漫反射的表面,也就是表面向各个方向均反射光。郎伯表面的亮度和入射光的强度成正比。

从光源位置看,落在表面元件上的光能量与表面元件的面积成正比(foreshortened面积?)。foreshortened面积是表面方向与光源方向夹角的余弦函数。因此朗伯表面模型可以看作光源A,表面反射率ρ以及缩短的面积cosθi的乘积:
在这里插入图片描述
其中R是反射图,θi是表面法向N=(nx,ny,nz)\vec N=(n_x,n_y,n_z)N=(nx​,ny​,nz​)和光源方向 S=(sx,sy,sz)\vec S=(s_x,s_y,s_z)S=(sx​,sy​,sz​) 的夹角(参见图2);

在这里插入图片描述
让表面法向和光源方向都是单位向量。我们可以将上式重新写为:
IL=AρNS(2)I_L=A\rho\vec N\cdot \vec S \quad (2)IL​=AρN⋅S(2)
其中“.”代表点乘

镜面反射

当入射角度和反射角度一样时是为镜面反射。

It is formed by two components: the specular spike and the specular lobe.?
The specular spike is zero in all directions except for a very narrow range around the direction of specular reflection.The specular lobe spreads around the direction of specular reflection。

简化的镜面反射模型可以表示为δ函数
IS=Bδ(θs2θr)(3)I_S=B\delta (\theta _s -2\theta _r) \qquad (3)IS​=Bδ(θs​−2θr​)(3)

其中IsI_sIs​是镜面反射亮度,B是镜面组件的强度,θsθ_sθs​是光源方向和观察方向之间的夹角,θrθ_rθr​是表面法向和观察方向之间的夹角。该模型假设由镜面反射引起的高光只是一个点,但在现实生活中,这种假设是不正确的。
由Phong提出的另一个模型将反射的镜面分量表示为完全镜面反射方向和观察方向之间的角度余弦的幂。这个模型能够预测超出单个点的镜面反射;但是,参数没有物理意义。一个更精确的模型,Torrance-Sparrow模型,假设一个表面是由小的,随机定向的,类镜面的微面组成。它将镜面亮度描述为四个分量的乘积:入射光能量、菲涅耳系数、表面方向分布函数和用于调整foreshortening的几何衰减因子。

基于Torrance-Sparrow模型,Healey和Binford将高斯分布作为微表面方向函数并且考虑其他组件为不变量,得到了一个简化模型:

在这里插入图片描述

其中K是常量,α是表面法向和H之间的夹角(H为观察方向和光源方向之间的平分线),m是表面粗糙度。
在这里插入图片描述

大多数表面既非纯郎伯体,也非纯镜面,他们是二者的组合。混合表面的表达式为:

I=(1ω)IL+ωIS(5)I=(1-\omega )I_L+\omega I_S \qquad (5)I=(1−ω)IL​+ωIS​(5)

III是总亮度,ISI_SIS​和ILI_LIL​分别是镜面亮度和郎伯体亮度,ω是IsI_sIs​的权重。

Nayar提出一种包含三种成分的反射模型,这三种成分是:diffuse lobe,specular lobe,以及specular spike。Lambertian模型代表第一种成分,Torrance-Sparrow模型中的镜面组件用来代表第二种成分,Beckmann-Spizzichino中的spike成分用来表示第三种成分。

最后的混合模型是:

在这里插入图片描述

其中KdlK_{dl}Kdl​,KdsK_{ds}Kds​,KssK_{ss}Kss​分别为三种成分的权重,β是一块表面上的微表面法向和该表面块上的平均法向之间的夹角,σ是其标准差;如果表面法向在zzz方向,那么(θi,φi)(θ_i,φ_i)(θi​,φi​)是入射光在三维方向的倾角和偏角,(θr,φr)(θ_r,φ_r)(θr​,φr​)是反射光方向。

尽管郎伯模型因为简单而应用广泛,但是其对于粗糙表面的漫反射却不能很好地近似。

4.SFS算法

许多SFS算法假设光源方向已知。在光源未知的情况下,也有许多算法不需要表面形状信息来估计光源方向。

一些关于表面形状的假设,如局部球面,表面方向的一致性和等方向性,一旦获得光源方向,就可以进行三维估计。

该部分介绍了两种最小化,一个传播,一个局部,两个线性方法;

易于发现和实现是一个重要标准。此外,这种选择还受到其他几个原因的指导。首先,我们试图关注更新的算法。由于作者改进了他们自己的算法或其他人的算法,新的算法,一般来说,执行比以前的算法好。其次,一些论文涉及到与SFS相关的理论问题,但没有提供任何特定的算法。这类论文在本文中没有详细论述。第三,一些方法将阴影中的形状与立体或线条图等结合在一起。我们在复习部分提到了这些方法为了完整,但没有详细讨论过。最后,由于论文中涉及到了镜面反射考虑到特殊和更复杂的情况下的形状从阴影,他们没有得到详细的处理。

4.1 最小化方法

最小化方法通过计算整幅图像的最小化能量方程来求解。方程可以包括亮度约束,和其他约束,如(光滑约束,可积性约束,梯度约束和单位法向约束)。这部分,首先简要介绍一下这些约束,然后讨论使用这些约束的SFS方法。

亮度约束

亮度约束可以直接从图像辐照度(2)得到,它反应了重建后图像和输入图像之间的局部亮度误差

(IR)2dxdy(7)\int{\int(I-R)^2 dxdy} \qquad (7)∫∫(I−R)2dxdy(7)

光滑约束

光滑约束保证表面光滑,从而稳定收敛到唯一解:

在这里插入图片描述

其中p和q是x和y方向的表面梯度;另一个约束更少的简化版本:
在这里插入图片描述

光滑约束也可以用表面方向表示:

在这里插入图片描述

这意味者表面法向应逐渐改变(不能突变)。

可积性约束

可积性约束确保了有效的表面,即Zxy=ZyxZ_{xy}=Z_{yx}Zxy​=Zyx​,可以被表示为:

(pyqx)2dxdy(11)\int {\int (p_y-q_x)^2 dxdy}\quad (11)∫∫(py​−qx​)2dxdy(11)

或者
((Zxp)2+(Zyq)2)dxdy(12)\int{\int((Z_x-p)^2+(Z_y-q)^2)dxdy}\quad (12)∫∫((Zx​−p)2+(Zy​−q)2)dxdy(12)

亮度梯度约束

要求重建后图像的亮度梯度要和输入图像的亮度梯度足够接近:

在这里插入图片描述

单位法向约束

要求重建后的表面法向是单位向量

在这里插入图片描述

4.1.1Zheng和Chellappa的方法

这俩人应用亮度梯度约束,而不是光滑约束(Ikeuchi和Horn,Brooks和Horn均使用了光滑约束)。因此,他们的能量方程变为:

在这里插入图片描述

通过变分微积分最小化上述方程。在变分微积分中,首先计算欧拉公式,然后用离散的方法最小化能量方程。Zheng和Chellappa使用反射图的一阶泰勒展开式,并且用离散形式表示深度、梯度和他们的导数,简化了欧拉公式。然后,同时更新深度和梯度。该算法采用一种层级结构(金字塔)加速运算。对边界的初始化没有特殊要求,深度和梯度的初始值可以设为0。

Zheng和Chellappa的方法实施很简单。我们采用forward difference 近似计算偏导数。对于无法用forward 近似的边界点,我们采用backward difference近似估计一阶偏导数,把二阶偏导设为0。在所有实验中,根据作者建议,我们设μ=1。

4.1.2 Lee 和Kuo

这两位使用brightness约束和光滑约束。在他们的方法中,表面近似为多个三角表面块的组合。三角形顶点成为nodal 点,只恢复nodal的深度。而非nodal点的像素深度,通过插值方法得到。每一个三角块,其亮度是其内部所有像素亮度的平均,其表面梯度近似为三角形任意两相邻边的叉积。由此,在三角形的三个顶点处建立了三角形的亮度和深度的关系。线性化用表面梯度(p,q)表示的反射图,得到了顶点处亮度和深度的线性关系。通过优化计算表面深度(怎么优化?)。将优化问题归结为稀疏线性系统的解,并应用多重网格计算算法?。不需要初始化。

Lee和Kuo的算法,使用V-循环多重网格?求解线性系统。我们使用Gauss-Seidel松弛作为平滑算子,作为最优网格的exact solver。采用全加权约束将残差从较精细的网格转移到较粗糙的网格,采用双线性插值使残差从较粗的网格延伸到较精细的网格。对于平滑项采用相同的方案。最优网格中的nodal点作为图片像素。通过最多10次连续迭代进行连续线性化;V-cycles的数量的初始值设为10,第二次设为2,剩余的设为1。最精细网格深度的初始值和较粗糙网格的修正值均为零。该算法在光源方向(0,0,1)处不成立,我们使用(0.001,0.001,1.0)代替。

我们使用了2000的平滑算子,通过L=log(M)1L=log(M)-1L=log(M)−1计算网格等级,其中M是图像尺寸。因此,256256的图像有七个等级,128128的图像有六个等级。第一次迭代后,深度图包含更多细节,但范围较小。经过10次迭代后,细节被平滑,但深度范围更宽。这意味着更多的迭代将提供更多的低频信息,这将超过初始迭代的高频信息。

4.2传播方法。

传播方法是从一个单一的参考表面点或一组形状已知或可唯一确定形状的表面点(如奇异点)开始,沿着整个图像传播形状信息。我们在这一节讨论一种算法。

4.2.1Bichsel 和Pentland

遵循Dupuis和Oliensis的主要思想,Pentland提出一种高效的最小化downhill方法,该法直接恢复深度并且保证表面的连续性。给定奇异点(最亮点)的初始值,该算法从图像中的八个离散方向观察,并将深度信息传播到远离光源的位置,以确保过程的正确结束。由于在大多数方向(除了与照明方向形成非常窄的角度的方向外)低亮度区域中的表面点的斜率接近于零,因此图像最初被旋转以使光源方向与八个方向中的一个方向对齐,在得到的深度图上执行逆旋转,以获得原始方向。假设平行斜率的约束: 通过在旋转坐标系中取反射图相对于

q的导数,将其设置为零,然后求解p和q,来预先计算表面梯度(p,q)。p和q的解为:
在这里插入图片描述

其中(sx,sy,sz)(s_x,s_y,s_z)(sx​,sy​,sz​)是光源方向,R是之前定义的反射图。

在具体应用中,奇异点深度的初始值指定为一个固定的正值(我们设为55,这个值应该和物体最大高度有关。)其他点的深度初始值为较大的负值(-1.0e10)。该方法没有计算距离光源的距离,仅计算并最大化局部表面高度,以选择最小downhill方向。这是基于这样一个事实:当光源方向与光轴(此处为z轴)之间的角度小于90度时,到光源的距离是高度的单调递增函数。高度值用Gauss-Seidel迭代方案更新,并且在每次迭代时通过改变路径方向加速收敛。

4.3 局部方法

局部方法通过假设局部表面类型来导出形状。它们使用intensity导数信息并假设球面。在这里,我们介绍Lee和Rosenfeld的方法。

4.3.1 Lee和Rosenfeld

Lee和Rosenfeld通过球面片近似于局部表面区域。首先在光源坐标系中计算曲面的倾角和偏角,然后将其转换回观察者坐标系。他们证明表面法向的偏角可以用以下式子得到:

在这里插入图片描述

其中IxI_xIx​和IyI_yIy​是x和y方向的亮度导数,σsσ_sσs​是光源倾角,τsτ_sτs​是光源偏角。

如果表面均匀反射,并且如果反射图可以表示为:I=pNS(Lambertian)I=p\vec N\cdot \vec S(Lambertian)I=pN⋅S(Lambertian)

最亮点的表面法向指向光源,其强度与ρ的比值可以得到表面倾角的余弦值。

该方法是Pentland第一种方法的增强版,因为它只需要亮度的一阶导,而不需要其二阶导。这使其对噪声不太敏感。然而,表面的局部球面假设限制了它的应用。

Lee和Rosenfeld算法实现的主要部分是图像从观察者坐标系到光源坐标系的旋转,以及光源坐标系中亮度梯度的计算。对于这种方法,不需要确定的参数。

4.4 线性方法

线性方法通过线性化反射图将非线性问题归结为线性问题。这个想法是基于这样一个假设:反射图中的低阶分量占主导地位。因此,这些算法只有在这种假设下才能很好地工作

4.4.1 Pentland

Pentland的第二种方法使用R(p,q)反射图的线性逼近。反射方程可以表示为:

在这里插入图片描述

其中σsσ_sσs​和τsτ_sτs​分别表示光源的slant和tilt。通过采用反射函数的泰勒级数展开式p=p0q=q0(p=p_0,q=q_0)(p=p0​,q=q0​),忽略高阶项,我们得到了

在这里插入图片描述

对于Lambertian反射,上式在p0=q0=0p_0=q_0=0p0​=q0​=0时归结为
在这里插入图片描述
接下来,Pentland对方程的两边进行Fourier变换。因为右边的第一个项是DC项?,所以可以删除它。使用亮度:
在这里插入图片描述
其中FzF_zFz​是Z(x,y)Z(x,y)Z(x,y)的傅里叶变换,我们得到:
在这里插入图片描述
其中F1F_1F1​是图像I(x,y)I(x,y)I(x,y)的傅里叶变换。深度图Z(xy)Z(x,y)Z(x,y)可以通过重新排列上述方程中的项,然后取逆傅里叶变换得到。

该算法利用傅里叶变换给出了一个非迭代的闭式解。问题在于反射图的线性近似,当非线性项较大时会产生问题。Pentland指出,当反射图中的二次项占主导地位时,会出现倍频现象?,在这种情况下,恢复的形状将与光照条件不一致。

利用快速傅立叶变换和逆快速傅立叶变换实现了Pentland算法

4.4.2 Tsai和Shah

使用有限差分离散逼近p和q,对反射图Z进行线性化。郎伯表面的反射方程可以表示为:

在这里插入图片描述

对p,q进行离散逼近:p=Zi,jZi1,j,q=Zi,jZi,j1p=Z_{i,j}-Z_{i-1,j},q=Z_{i,j}-Z_{i,j-1}p=Zi,j​−Zi−1,j​,q=Zi,j​−Zi,j−1​,反射方程可以重些为:

在这里插入图片描述

对于固定点(i,j)(i,j)(i,j)以及给定图像III,(25)可以表示为关于给定深度图Z(n1)Z^(n-1)Z(n−1)的泰勒一阶展开式方程
在这里插入图片描述

对于一个M*M的图片,会有M²个这样的式子,共同组成一个线性系统。使用Jacobi迭代方案可对其求解,从而把(26)简化为

在这里插入图片描述

然后,对于Zi,j=Zi,jnZ_{i,j}=Z_{i,j}^nZi,j​=Zi,jn​ ,第n次迭代的深度图可以表示为:

在这里插入图片描述

Zi,j0Z_{i,j}^0Zi,j0​的初始化就是将所有像素都设为0;对最后得到的深度图进行高斯平滑滤波。该方法用除法计算深度,不需要计算矩阵的逆,简单高效,但要注意避免分母为零的情况。对于自己的影子的处理存在问题。

5.实验用到的图片

真实图片很难满足SFS算法的假设条件:Lambertian 反射模型,均匀反射系数,无限远点光源。当然合成的图片可以轻易满足这些条件。

5.1 合成的图片

合成图像使用真实深度图或从激光测距仪获得的距离数据生成。

使用深度Z的前向离散逼近来计算表面梯度(p=Zx,q=Zy)(p= \frac{\partial Z}{\partial x},q=\frac{\partial Z}{\partial y})(p=∂x∂Z​,q=∂y∂Z​);然后使用Lambertian反射模型生成图像。

使用合成图像有两个好处:

第一,我们可以获得同一物体的不同光源生成的图像;

第二,我们可以和真实到深度信息进行比较,计算误差。

使用合成图像的缺点:

合成图像的表现无法预测真实图像的表现

在我们的研究中,我们使用了5个合成表面(合成的花瓶,球体,莫扎特,penny和Sombrero),并分别使用了三种光源(0,0,1)(1,0,1)(5,5,7)7。

本文只讨论分别使用两个光源(0,0,1)和(1,0,1)合成的花瓶和莫扎特,更多细节参见另一篇文章。

合成花瓶: 使用Ascher和Carter提供的方程生成:

Z(x,y)=f(y)2x2,Z(x,y)=\sqrt{f(y)^2-x^2},Z(x,y)=f(y)2−x2​,

其中

在这里插入图片描述

这个产生的最大深度值大约为0.29。为了生成具有适当大小和比例的深度图,我们将x和

y映射到[0,127][0,127][0,127]的范围,并将ZZZ缩放128倍。

两个合成表面的深度图如图4所示。不同的光源(0,0,1)和(1,0,1)生成的图像如图5所示:
在这里插入图片描述

在这里插入图片描述

通过缩小或放大,使图像大小为2的幂值。

5.2 真实图像

在我们的研究中,使用了5个真实图像(花瓶,Lenna,Pepper,Mannequin和花瓶)。

本文只讨论Lenna,Pepper和花瓶,见Fig 6

在这里插入图片描述

使用Lee和Rosenfeld的方法估计花瓶的光源方向,其余的光源给定如下:

在这里插入图片描述

注意,这些算法中光源方向是一不确定的。

6. 实验结果

由于各个图像都有很大差异,所以对于各个算法很难选择一种控制参数。更难为不同算法选择相似参数。因此,我们手动为每一种算法挑选了参数,以期得到最优解,这导致了不同图片、不同算法的参数都各不相同。在调整参数事,所有算法都同等地进行训练。

这些算法的初始化情况都是一样的,来保证这些算法之间可以公平比较。因此只有奇异点(最大灰度值的那些点)被用来作为Bichsel和Pentland算法的初始值,因为奇异点可以自动被检测处来。

Fig7到Fig18展示了从合成图像到真实图像应用各个算法得到的深度图。下面我们将使用深度图的三维绘图来分析结果。

6.1 zheng和Chellapa

合成图像和真实图像对应的结果分别为Fig7和Fig13。
在这里插入图片描述
在这里插入图片描述
Lenna和Pepper重建后细节足够,Lenna的嘴和脸周围存在误差,在光源为(0,0,1)时也存在问题:即会将迭代公式中的大多数项归零。为了得到(0,0,1)光源合理的结果,我们将光源近似为(0.01,0.01,1),当然近似以后沿光源方向仍有一些误差。

6.2 Lee和 Kuo

合成图像和真实图像的结果见Fig8和Fig14。
在这里插入图片描述

在这里插入图片描述
该方法效果ok,即使光源是从侧面发出的,但是花瓶的效果不好,出现了自阴影。重建后的表面轮廓清晰,但缺少细节,甚至有过度平滑的趋势。平滑因子的轻微调整对最终的结果影响不大。

6.3 Bichsel 和Pentland

合成和真实图像结果见Fig9和Fig15。
在这里插入图片描述在这里插入图片描述所有结果都经过8次迭代。当光源为侧面光源时,得到了花瓶的最优重建结果。然而,对于本研究所考虑的真实图像,除了胡椒之外,该算法并没有给出很好的结果。原因可能是奇异点的初始值不精确。该算法很快,通常经过5次迭代就可以得到一个合适的结果。

6.4 Lee和Rosenfeld

合成和真实图像的结果见Fig10和Fig16。
在这里插入图片描述

在这里插入图片描述该方法使用局部球面假设和亮度导数来估计深度。
对于非球面并不适用,并且对噪声很敏感。真实图像的强度变化很小,导致深度估计不准确;而由于合成图像的表面比较光滑,生成的深度图也比较。可以对真实图像进行一个滤波预处理来减小噪声,从而改进最终结果。

6.5 Pentland

合成和真实图像的结果见Fig11和Fig17。
在这里插入图片描述
在这里插入图片描述Pentland的算法在大多数曲面上产生合理的结果,当反射相对于表面形状线性变化时,即使表面是自然变化的,比如一个人的脸。然而,当反射系数以非线性方式变化时,该算法存在困难。对于真实图像,该算法对除vase外的所有图像都产生合理的结果。

6.6 Tsai和Shah

合成图像的结果如图12所示,真实图像的结果如图18所示。
在这里插入图片描述
在这里插入图片描述从图12中,我们可以清楚地看到,他们的方法在光源靠近观察方向的平滑物体上效果良好。但它对噪声很敏感,如莫扎特鼻子上的黑洞图像或阴影区域。

真实图像的处理结果对花瓶来说是合理的,但对Lenna和Pepper来说是有噪声的,尤其是在Pepper的上下区域,以及Lenna的鼻子、眼睛和帽子区域。

7.误差分析

前一部分定性地进行分析;这一部分用真实的深度图对合成图像的结果进行定量分析。我们使用以下方法对误差进行分析:

深度误差的均值和标准差

(表1和表2)对于每个算法,我们把从范围图像中恢复的深度和真实的深度进行比较。每个算法的输出深度首先根据真深度进行归一化,然后与真深度进行比较,得到深度误差的均值和标准差。
在这里插入图片描述

在这里插入图片描述平均梯度误差

(表3)用来表示表面方向误差。由于没有任何物理意义,这里就不用标准差了。用前向离散近似计算恢复后的深度图的梯度。
在这里插入图片描述

对于那些计算表面梯度和深度的算法,在梯度误差表中仍然使用深度的离散近似来计算表面梯度,以便与其他算法相一致。
有几种方法可以分析错误表1、2和3。一种方法是为每种算法考虑四幅图像的误差和,并基于此对算法进行排序。根据平均误差之和,算法的排序(表4)如下:Lee和Kuo、Zheng和Chellappa、Bichsel和Pentland、Pentland、Lee和Rosenfeld、Tsai和Shah。
在这里插入图片描述
我们还尝试了基于深度误差标准差和,梯度(pq)(p-q)(p−q)误差之和对这些算法进行排序,最后,根据它们在每个图像上的表现,排序与上面的排序非常相似。

8. 运行时间

Cpu运行时间,处理器为SUN SPARC 4。仅仅考虑了计算时间,没有考虑磁盘I/O时间。所有的合成图像大小均为128128;所有真实图像均为256256。从Table 5可以看出,
在这里插入图片描述
最小化方法非常慢比其他方法。对于最小化方法,时间不仅取决于输入图像的大小,而且还因场景而异。对于其他方法,时间仅取决于输入图像的大小。算法根据CPU时间的顺序,从最慢到最快,依次为Lee and Kuo’s algorithm, then followed by Zheng and Chellappa’s, Bichsel and Pentland’s, Pentland’s, Lee and Rosenfeld’s, and Tsai and Shah.

9.结论和未来的研究

SFS技术从对象的单个视图恢复对象的三维描述。在本文中,我们讨论了几种现有的算法,并将它们分为四类:最小化技术、传播技术、局部技术和线性技术。这些分组是基于概念的。为了比较它们在精度和时间上的性能,实现了六种有代表性的算法。这一比较是在两个合成表面上进行的;每个表面都用于生成两个使用不同光源方向的合成图像。

为了分析精度,将合成图像的输出与真实表面形状进行比较。比较结果以平均深度误差、平均梯度误差和深度误差标准差进行展示。对真实图像的输出仅进行了视觉分析和比较。这个分析得出的结论如下:

1.当给定合成数据时,所有的SFS算法通常会产生较差的结果,

2.结果在真实图像上更糟,而且

3.合成数据的结果通常不能预测实际数据的结果。

未来的研究有几个可能的方向。正如我们所指出的,在SFS方法中使用的反射模型过于简单;最近,更复杂的模型被提出。这不仅包括更精确的Lambertian、specular和hybrid反射模型,还包括用透视投影代替正交投影的假设,透视投影是真实世界中更真实的相机模型。传统的照明条件简化,假设是无限点光源,也可以为假设非有限点光源,或使用一组点光源模拟照明条件。将开发采用更复杂模型的SFS方法,以提供更准确、更真实的结果。

另一个方向是阴影与其他线索的结合。你可以用立体或测距的结果改善SFS结果的数据或使用SFS结果或范围数据来改善立体效果。另一种方法是直接合并阴影和立体结果。

对于多幅图像,也可以通过移动观察者或光源来连续优化形状。由于前一帧的估计值可以用作下一帧的初始值,连续求精可以通过估计相邻图像帧和减少计算时间得到更好的结果,这可能更接近于正确的解。通过使用连续的优化,可以很容易从任何帧开始处理,在任何帧停止处理,并在新帧可用时重新启动。移动光源比移动观察者的优点是消除了图像帧之间的深度匹配(扭曲)。

SFS的一个问题是阴影区域中的形状信息无法恢复,因为阴影区域没有提供足够的亮度信息。如果我们利用从shape from shadow(shape from
darkness),并将其与SFS的结果相结合。SFS阴影边界上的深度值可以用作shape from
shadow的初始值,也可以用作shape from
shadow算法的约束。在多个图像帧的情况下,从前一帧的阴影中恢复的信息也可以用于下一帧中的SFS。

文章链接:

下载地址

标签:反射,光源,算法,Shape,Survey,图像,表面,Shading,方法
来源: https://blog.csdn.net/qq_44516871/article/details/104729492