视觉第09章 明暗分析

更新时间:2024-02-26 14:32:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第九章 明暗分析

本章将介绍光在物体表面的反射物理特性以及利用反射特性估计表面形状的方法,即光度立体法(Photometric Stereo).在讨论光度立体法及从明暗恢复形状(Shape from Shading)之前,我们将首先介绍成象物理学,即场景中各点的光强度在图象平面上的映射过程(通常将这一过程称为成像).本章将按照[Horn 1986]所做的开创性工作对有关的理论和算法展开讨论.

9.1 图象辐照度

我们知道,通过投影原理可以确定场景中的点在图象平面中的位置,但并不能确定该点的图象强度.图象强度可用本节将要介绍的成象物理学来确定,其中用于描述图象强度的一个术语是图象辐照度(Irradiance).由于强度、亮度或灰度等术语使用的十分普遍,因此本书通篇将这些术语视为图象辐照度的同义词.

图象平面中一点的图象辐照度是指图象平面点单位面积接收的辐射(radiance)功率。辐射为输出能量,辐照为输入能量.对图像来说,图像的辐照源对应景物对光源的反射,即场景的辐射。也就是说,图象平面上一点的辐照度E(x?,y?)对应于图象点到场景点方向的场景辐射能量L(x,y,z):

E(x?,y?)?L(x,y,z) (9.1) 场景点(x,y,z)位于从投影中心到图象点(x?,y?)的射线上.为了找到图象的辐照源,我们必须沿这条射线返回到发射射线的表面片上,并且弄清楚场景照明光是如何被表面片反射的.

决定场景表面片辐射的因素有两个:一个是投在场景表面片上的照明,另一个是表面片反射的入射照明部分.

投在某一特定表面片上的照明量取决于该表面片在场景中相对于光源的分布位置.在某一特定方向上被表面片反射的入射照明部分取决于表面材料的光学特性.

图9.1在一个无限小的表面片上建立极坐标系,用来描述表面片

可视半球方向的照明和辐射方向

考虑场景中一个无穷小的表面片被一个单独的点光源照明.在表面片上建立一个坐标系,如图9.1所示.此坐标系表示能量可以到达或离开该表面所有可能的方向半球.设(?i,?i)表示在极坐标中相对于表面片的场景照明点光源的方向,设(?e,?e)表示能量从表面片中发射的方向.从某一方向到达该表面片的能量为E(?i,?i),从表面片向某一方向辐射的能量为

1

从表面片往某一方向辐射的能量与表面片从某一方向接收的能量的比值定义为双L(?e,?e).

向反射分布函数(Bidirectional Reflectance Distribution Function,BRDF),用f(?i,?i,?e,?e)表示.双向反射分布函数取决于表面材料的光学特性.辐射量与辐照量的关系式为:

L(?e,?e)?f(?i,?i,?e,?e)E(?i,?i) (9.2)

这可能是一个一般的公式,可能是一个很复杂的式子,但在计算机视觉的大多数感兴趣的场合中,可能相当地简单.对大多数材料来说,BRDF只取决于入射和发射角之差:

f(?i,?i,?e,?e)?f(?i??e,?i??e) (9.3)

图9.2 半球上某一表面片和其对应的角增量??i和??i组成的立体角示意图.

9.1.1照明

给定表面材料的BRDF和光源的分布,就可以计算一个表面片发出的光量.下面介绍两种类型的照明:点光源和均匀光源

首先介绍计算一般分布光源射到一个表面片的总辐照公式.坐标系就是在图9.1中描绘的可能方向半球极坐标,如图9.2所示.表面片上的全部辐照就是从半球中所有方向上照到表面片上的辐照总和.将通过单位半球(半径为1)上每一个小片面积上的辐照累加起来,直到计算完半球的全部面积.由半球上某一表面片和其对应的角增量??i和??i组成的锥形空间??,称为立体角:

???sin?i??i??i (9.4)

式中的sin?i是考虑到越接近半球顶部,半球面积??i??i越小.半径r的球面积为4?r2,

单位半径的半球面积为2?.半球的面积S可以由组成半球的立体角加起来得到:

S?d??0?2???sin?002??/2d?d? (9.5)

?2?sin?d??2?0??/2在方程9.4中如果没有因子sin?,半球面的各个无穷小单元加起来就得不到正确的总面积.穿过球面的总的辐射量是对无穷小表面片加权穿过每一个表面片对应的单位立体角辐射量的积分.让I(?i,?i)表示从(?i,?i)方向上穿过半球单位立体角上的辐射量,则表面片接收的总辐照量为:

I0??2?0??/20I(?i,?i)sin?icos?id?id?i (9.6)

式中多了一个附加项cos?i,这是因为透视缩比效应(foreshortening)造成表面片在照明方向上变小.从表面片反射出的辐射量为

2

L(?e,?e)???02??/20f(?i,?i,?e,?e)I(?i,?i)sin?icos?id?id?i (9.7)

基于场景辐射等于图象辐照假设,在图象平面中,位置(x?,y?)处的图象辐照与场景中相对应的表面片上的辐射量相等:

E(x?,y?)?L(x,y,z)?L(?e,?e) (9.8) 式中场景辐照的发射角度由场景表面的几何性质决定.注意:对每一个图象位置(x?,y?),都可以在相对于表面法线或表面片的极坐标中,计算出对应的场景位置(x,y,z)、表面片的

?以及从表面片到图象平面点(x,y)的连线的角度(?e,?e). 表面法线n为了从场景中的表面几何和光源的分布确定整幅图象的辐照量,必须知道场景表面的BRDF.这正是下一节讨论的主题.

9.1.2反射

下面将介绍三种不同类型的反射: Lambertian反射(也叫散光反射)、镜面反射、 Lambertian反射和镜面反射组合。 (1) Lambertian反射

Lambertian 表面是指在一个固定的照明分布下从所有的视场方向上观测都具有相同亮度的表面,Lambertian 表面不吸收任何入射光.Lambertian反射也叫散光反射,不管照明分布如何,Lambertian 表面在所有的表面方向上接收并发散所有的入射照明,结果是每一个方向上都能看到相同数量的能量.许多无光泽表面都大致属于Lambertian型的,除了下面将提到的情况以外,许多表面在性质上都属于Lambertian 型. Lambertian 表面的BRDF是一个常数:

f(?i,?i,?e,?e)?1? (9.9)

辐射独立于发射方向,辐射可通过累加来自所有可能方向半球的入射光线上的BRDF效应得到:

L????2?02????/20f(?i,?i,?e,?e)I(?i,?i)sin?icos?id?id?i1?/200?I(?i,?i)sin?icos?id?id?i?1 (9.10)

?I0其中I0是在表面片上的总入射光.

下面讨论在一个远距离点光源的照明下,一个Lambertian 表面的可感觉亮度。在相对于表面片法线的一个方向(?s,?s)上,一个点表面照明描述如下:

?(?i??s)?(?i??s)I(?i,?i)?I0 (9.11)

sin?i?-函数仅限于照明到达表面片的方向与方向(?s,?s)之间.式中I0指的是总照明.本质上,方

程9.11分母中有一个正弦项,将其引入方程9.6时,就得到总照明I0.

将方程9.11中的照明函数和方程9.9中的BRDF函数引入表面片辐射方程9.7,得

到了感觉亮度方程:

L(?e,?e)??

2?0?0?/20f(?i,?i,?e,?e)I(?i,?i)sin?icos?id?id?iI0????0??/2I??(?i??s)?(?i??s)sin?icos?id?id?i (9.12)

sin?iI0?cos?s这就是Lambert余弦定律,即指由点光源照明的表面片的感觉亮度随着单元表面法线的入射角度变化而变化.随入射角变化是由于因为相对于照明方向表面片的透视缩比效应.换句话说,一块给定面积的表面片,当它的法线指向照明光线方向时,可以获取最多的光照.当表

3

面法线偏离照明方向时,从照明方向看过去的表面片面积变小了,因此表面片的亮度也降低了.如果你想亲自看一看这个效应的演示,请拿一个球状物体,比如一个白球,关掉房间里的所有灯,只打开一个灯泡,你将会看到球体上最亮的部分是表面法线指向照明方向的部分,并且这与你相对于球所处的位置无关,球体上的亮度从对应于光源最亮的一点出发,向四周所有方向以相同速率递减.

假定照明不是一个点光源,而是在所有方向都是均匀的,其发光总强度为I0.那么亮度可由下式给出:

L(?e,?e)????2?0?0?/20f(?i,?i,?e,?e)I(?i,?i)sin?icos?id?id?i (9.13)

?0??/2I0?sin?icos?id?id?i?I0 现在,Lambertian 表面的被感觉的亮度在所有方向上都相同,这是因为不管表面片朝向何方,它都能接收到同样数量的照明.

(2) 镜面反射

镜面在某一方向上反射所有的入射光,反射方向角相对于镜面法线来说与入射角相等,但在法线的另一侧.换句话说,从方向(?i,?i)来的光线的反射方向(?e,?e)?(?i,?i??).镜面的BRDF为:

?(?e??i)?(?e??i??)f(?i,?i,?e,?e)? (9.14)

sin?icos?iBRDF中需要sin?i和cos?i因子,以消去方程9.7中由透视缩比和立体角产生的相应因子.将式9.14代入式9.7,得到

L(?e,?e)?I(?i,?i??) (9.15)

该方程表明入射光线被表面片反射出去,如同理想的镜子一样. (3) Lambertian反射和镜面反射组合

在计算机图形学中,通常用镜面反射和散光反射一起来构成物体反射特性模型:

?(?e??i)?(?e??i??)?f(?i,?i,?e,?e)??(1??) (9.16)

?sin?icos?i式中常量?控制着两个反射函数的混合度.镜面反射和散光反射的相对比例随着物体表面材料的不同而变化.光滑的物体,或者说闪亮的物体,其镜面反射的成分要高于无光泽的物体.

9.2表面方向

上一节讨论了照明与被感觉亮度关系,该关系表示在一个设在假想表面片上的坐标系中.为了将这一结果应用到计算机视觉中,必须在如图9.3中的图象平面坐标系中重新讨论表面反射和场景照明.表面方向必须在摄象机坐标系中表示.

考虑一个与光轴对准的球,如图9.4所示.想象球上的一个点,并假定一个平面在该点与球相切.该平面的法线也是球上对应点的表面法线.

图9.3场景中一点图象平面上的投影

4

图9.4示意表面方向和图象坐标关系的高斯球

假定这一点到图象平面的距离是z:

z?z(x,y) (9.17) 对物体上任意一点(x,y,z),它的图像坐标为(x?,y?),在光度立体视觉中,为了简化问

题,一般假定物体表面各点z值的变化远小于物体到摄象机的距离,即z1和z0是物体表面上的两个点,|z1?z0|z0?0。因此常常认为物体上的所有点z?z0,根据透视投影公式1.5,并设??f/z0,有如下等式:

x???x y???y (9.18)

考虑物体表面一点(x,y,z)的邻近点(x??x,y??y,z??z),其中点的深度为z??z。为了建立点的深度变化?z与图象平面坐标变换?x和?y之间的联系,即而得到?z和?x?和?y?的关系,考虑一下函数z(x,y)在点(x,y)的Taylor级数的展开就可得到答案:

?z?z?z??x??y (9.18)

?x?yz对x和y的偏微分与场景表面上点(x,y,z)处的正切平面倾斜角有关. 在点(x,y,z)处的表面梯度是一个矢量记为(p,q):

?z?z (9.19) p? q??y?x深度值z和比例系数?皆为未知数,为了减少未知参数,可令:z?z?,于是上式为:

?z?z?p ?q (9.20) ?x??y?由于z和z只差一个比例因子?,因此,如果能够根据上式求出z,就能求出关于一个常数因子?的物体形状。这样问题就归结为求取表面梯度矢量(p,q)。 表面片的法线与梯度的关系如下:

n?(p,q,1) (9.21)

该式子简单地表明对应于深度z的单位变化,在x和y的相应位移量分别为p和q.单位表面法线可以通过表面法线除以它的长度得到:

(p,q,1)n??? (9.22) n22n1?p?q9.3 反射图

将场景照明、表面反射和(在以观察者为中心的坐标系中)表面方向表示的组合称为反

5

射图.它确定了在给定照明分布和表面材料的情况下,一个表面片在特定方向上的亮度.在本节中,假设使用平行投影,所以图象平面坐标将由(x,y)表示,略去了上标撇.

考虑场景中的一个表面片,它对应于图象平面坐标轴x和y的表面方向是p和q.假设该表面片具有Lambertian反射特性,并且由一个点光源照明.在9.1.2节中,已计算出表面片的辐射为

IL(?e,?e)?0cos?s (9.23)

?式中,?s是表面片的法线与光源方向矢量间的夹角.下面讨论在以观察者为中心的坐标系中对应的表示方法。在9.2节中讲述的以观察者为中心的坐标系中,表面法线仅是(?p,?q,1),光源的方向为(?ps,?qs,1).两个矢量间夹角的余弦是两矢量的点积除以每个矢量的长度,所以表面法线和光源方向之间的夹角的余弦是:

(?p,?q,1)(?ps,?qs,1)co?ss?221?p2?q21?ps?qs (9.24)

1?pps?qqs?221?p2?q21?ps?qs 对于一个给定的光源分布和一个给定的表面材料,所有表面方向p和q的反射都能从表中查到或是计算出来,由此得到反射图R(p,q).图象辐照度的精确值取决于各种因素,比如光源强度、光学系统的集光性能以及很多其它不影响反射的因素.因此,反射图可以归一化,其最大值为1.利用这个归一化图,再假设场景的辐射与图象的辐照相等,就得出图象辐照方程:

E(x,y)?R(p,q) (9.25)

该式表明在图象平面中的点(x,y)处的辐照(亮度)等于场景表面对应点的表面方向p和q的反射图值.对于Lambertian反射面和点光源,反射图R(p,q)由方程9.24 给出,如图9.5所示[Jain 1995].

图9.5 Lambertian表面是由点光源照明的一个典型反射图R(p,q),

其中ps?0.2,.qs?0.4,左:灰度图象;右:轮廓图线.

9.4 从图象明暗恢复形状

在一个象素点处的图象强度是对应于场景点的表面方向的函数,该强度值可在反射图中获取.这样,对于一个固定照明和成象条件,以及对于一个已知反射特性的表面,表面方向的变化可转换成图象强度的相应变化.反过来,由图象强度的变化可以恢复表面形状的问题,

6

即所谓从明暗恢复形状的问题.现在我们简单介绍一下利用表面光滑度约束来求解此问题的步骤.

从前一节已知,图象辐照E(x,y)与表面上对应点方向(p,q)的关系是:

E(x,y)?R(p,q) (9.26)

式中R(p,q)是表面的反射图.我们的目的是通过计算图象中每一点(x,y)处的表面方向(p,q)来恢复表面形状.注意我们只有一个方程,但是有两个未知数p和q.因此,必须附加额外的限制条件才有可能求解方程.一个常用的附加约束是表面光滑性.我们假定物体是由逐段光滑的表面组成,只在边缘处才不受光滑约束的限制.

一个光滑表面是以其梯度p和q缓慢变化为特征的.因此,如果px,py,qx和qy表示p和q在x和y方向上的偏微分,我们规定光滑性约束是这些偏微分平方和的积分最小:

es???222((px?p2y)?(qx?qy))dxdy (9.27)

严格地说,我们必须在方程9.26给定的约束下求这个积分的最小极值.但是,考虑到噪声

使所求的值偏离了理想值,问题就变为求解总偏差e的极小值:

e?es??ei (9.28) 式中,?是一个光滑度约束误差的加权参数,ei是图象辐照方程误差:

ei???(E(x,y)?R(p,q))2dxdy (9.29)

这是一个变积分问题.在第(n?1)次迭代中,更新(p,q)值的迭代结果由下式给出:

n?1?n?n?npij?pij??[Eij?R(pij,qij)]n?1?nqij?qij?R?p (9.30) ?R?n?n??[Eij?R(pij,qij)]?q式中*表示在2?2邻域中计算出的均值.注意,虽然对一个给定迭代的计算是局部的,通过多次迭代中的约束传播可以得到全局的一致.

上面所述的基本步骤已经通过许多途径得到了证明.具体的内容可在本章末所附的参考书中找到.虽然从明暗恢复形状的基本原理很简单,但是却有很多实践上的困难,特别是表面的反射特性并不总是知道得很精确,也不容易控制场景中的照明,这些都限制了其应用.

9.5 光度立体

我们知道,图像辐照方程包含有两个未知数,表面方向p和q。在由图象明暗恢复形状方法中,为了能求解这两个参数,增加了一个光滑连续约束。本节将介绍另一种方法,称为光度立体视觉。其基本思想是通过不同的光源产生不同的图像辐射方程来增加方程数目,以求解表面方向p和q。

假定获取两幅采用不同照明图像,如图9.6所示。这样,对于图像中的每一点,将产生两个图像辐照方程:

E1(x,y)?R1(p,q) E2(x,y)?R2(p,q)

7

图9.6 在两个不同光源照射下,同一物体表面将产生不同的亮度

图9.7 在两个不同光源照射下的两个反射图迭加示意图

如果这些方程是线性的,而且是线性无关,则p和q具有唯一解。如果方程是非线性的,则方程无解或无唯一解,如图9.7所示。例如,两个图像辐射方程为:

R1(p,q)?R2(p,q)?1?p1p?q1q1?p2?q21?p12?q121?p2p?q2q221?p2?q21?p2?q2

可以验证,当R1和R2分别取不同值时,上述方程将会有一个解、两个解、或无解,当

(p1,q1)?(p2,q2),将有无穷解。

实际上,当假定场景中所有表面都具有Lambertian反射时,对于一个特定方向的点光

源,可用二阶多项式来描述恒值反射(见方程9.24).图象中每一点(x,y)都有一个亮度函数E(x,y),所有可能的表面方向(p,q)将被限制在由二阶多项式定义的反射图中的一条曲线上.因为约束方程是二次多项式,如上所述,含有两个未知数的两个二次方程是没有唯一

8

解的,因此必须使用三个方程,即三种不同的照明.如图9.8 所示.

图9.8立体光度原理示意图.图象辐照测量值被归一化成单位间隔

到目前为止,我们的讨论都略去了辐射度效应,即所有的入射光线都不是从一个表面发射的.这种效应可以很容易地通过一个Albedo因子加入到图象辐照方程:

E(x,y)??R(p.q) (9.31)

其中albedo因子的取值范围是0???1.术语albedo来源于拉丁语,意思是白色.

对于一个albedo变化的Lambertian表面,表面方向和albedo可同时得到恢复.设表面法线的表示式如下:

(p,q,?1)??n (9.32)

221?p?q假设有三个照明点光源.点光源i的方向由单位矢量表示:

(pi,qi,?1)?i? (9.33) s221?pi?qi从前面已知,由一个点光源照明的散射表面的亮度取决于表面法线和照明方向间的夹角的余弦值,因此,亮度就与这两个矢量的点积有关.对每一个照明的点光源,因为有不同的反射图,所以就有不同的图象辐照方程.对点光源i,图象辐照方程是:

?i?n? (9.34) Ei??s由点光源的方向矢量形成一个3×3矩阵:

???ss1,ys1,z??s??1??1,x?S??s2???s2,xs2,ys2,z? (9.35)

??s??s?ss33,x3,y3,z????在图象中的每一点得到三个图象辐照测值的一个矢量:

?E1???E??E2? (9.36)

?E??3?图象中每一点的图象辐照方程组可重新表示为:

? (9.37) E??Sn?取决于图象平面中的位置,但S不取决于图象平面中的位置,对于一个注意:E,?和n给定排列位置的光源组,S是一个常值.对于图象中的每个点,求解表示albedo和表面方

9

向的矢量:

??S?1E (9.38) ?nalbedo?(x,y)是矢量的幅值.表面方向的单位法线可通过除以albedo得到.

对于一个给定分布的光源组,S矩阵的逆可以通过使用上下三角形矩阵分解(LU分解)求得,不必对图象中每个点重新计算来求得逆矩阵.实际上,对每一个应用,只计算一次S矩阵的逆,并存贮起来以便在后续的表面方向计算中重复使用.使用向后置换法[197,

?值.使用一个查找表可以迅速求解图象辐照方程组,pp.39-45],从图象辐照矢量E计算?n查找表图象辐照三元组(E1,E2,E3)映射到albedo和表面方向(?,p,q).

练习

9.1

考虑一个Lambertian表面反射图。设表面方向为(?p,?q,1),光源的方向为

(?ps,?qs,1),

a. 推导该Lambertian表面反射图,

R(p,q)?1?pps?qqs1?p?q221?p?q2s2s

b. 在梯度空间中求最亮的点,

c. 在梯度空间中求R?0的轮廓线,

d. 证明:对于球面物体,当光源位于观察者所在方向时,R的等亮度线轮廓为同心圆。 9.2 方程9.7将一个特定方向放射的能量与入射的能量相联系.证明这种关系是线性系

统.线性系统有同一性和叠加性的性质.假定入射照明和BRDF是任意的.

a. 证明:如果对一个常数?,入射光线是I??I1,那么辐射就是?I1,式中L1是对

应于照明I1时的辐射.这种性质就是同一性.

b.证明:如果照明是I?I1?I2,那么辐射就是L1?L2.式中L1和L2分别是照明I1和I2时的辐射.这些性质表明对任意线性组合的光源产生的辐射是每个单独光源产生辐射的线性组合.

计算机作业

9.1假设有一个摄象机,图象平面的初始位置是(0, 1, 0),透镜中心位于(0, 0, 4).假定远处有一个Lambertian物体,其中心位于正z轴上.图象平面在x,y轴方向上仅限于(-1, -1),而一个位于(p0,q0,r0)点光源照明物体.

a.写一个程序,从键盘上获取p0,q0,r0的值,计算出反射图,并作图显示.将R(p,q)的值标准化,使其最大值相当于255(显示为白色).让R(0,0)位于显示器的中心.注意p,q都是无限的.但图图象是256×256.为从背景中分辨出物体,将背景图象素设置为强度值64.

b.假设物体是一个球,其半径为3,中心位于(0, 0, 20).计算并显示由摄像机获取的物体图象.归一化强度值使得图象强度值分布在0和255之间.为了将物体同背景分开,将所有背景象素值设置成64.

10

本文来源:https://www.bwwdw.com/article/3kna.html

Top