基于光度立体的三维重建方法综述
2021-09-23邓学良何扬波周建丰
邓学良,何扬波,周建丰
(广东工业大学机电工程学院,广州510000)
0 引言
三维重建可分为接触式测量和非接触式测量,经典的接触式测量工具如三坐标测量机[1]是利用工具探头等获取物体的表面三维结构。这种测量精度高成本高,而且容易划伤物体表面,会对物体表面造成破坏,导致非刚性物体变形,甚至会对物体表面造成破坏。对于一些比较重要物体,例如文物等,这样的方式是不可以接受的。于是非接触式测量应运而生。非接触测量顾名思义是要在不接触物体的前提下测量物体的三维空间结构。非接触测量依据测量信号源不同可以分为主动式和被动式,主动式有激光测距法,结构光法等,被动式主要是基于图像的三维重建方法,如单目视觉法、立体视觉法、光度立体法等,其中光度立体是利用图像光度信息获取物体法向信息,成本较低,效果相对精确。
图像的三维信息可以从轮廓[2]、亮度[3]、运动[4]、明暗[5]等信息中进行恢复,这些方法通称Shade From X,且对光源要求不高,操作简单。光度立体法则来源于阴影恢复法,Horn[6]在1970年提出该方法,在物体表面反射系数已知的情况下,把单张图像各点对应的亮度值代入预先设计的色度模型中,结合表面可微分性、曲率约束和光滑度约束等,求解各点深度信息。其优势主要在于利用单幅图像即可恢复表面模型,缺点是单纯的阴影恢复是病态问题,无唯一解,需要引入其他约束条件,例如表面可微分性等约束,而且纯依赖数学运算,效果不佳。
针对阴影恢复法的不足,Woodham[7]首次提出了光度立体法进行改进,在相机视场不动的情况下,引入不同方向光源的照射,增加了光源的约束条件,从而使得上述问题有唯一解。光度立体法基于以下三个条件:①入射光线为平行光或者无线远处点光源,②假设物体表面反射模型为朗伯体反射模型,入射光均匀散射到各个方向,观察者从任何一个角度观察都是一样。③相机模型为正交投影模型。假设图像亮度为I,物体表面法向量为n,表面反射率(漫反射系数)的ρ,s为光源的法向方向,根据朗伯体反射模型可以得到以下公式[7]:
反射率ρ是一个常数,因此把ρn看成一个整体N,N=ρn,上式就变成:
由于n是单位向量,所以其范数为1,故:
得:
求得法向量之后可以进一步得到梯度信息。光度立体三维重建的一般步骤是:①光源标定;②图像矫正或者去除高光阴影等;③利用经典方法求解反射率、法向量和梯度图信息;④利用梯度信息等进行获得深度信息,从而进行三维重建。
图1 光度立体流程示意图
传统光度立体已经取得较好的效果,大多数是在近似理想假设条件下取得的,如果采用真实模型进行计算仍然面临计算量大,计算过程复杂等问题,例如确定针对具体材料的具体反射模型函数,反射过程复杂,影响因素多,计算复杂。同时,物体距离光源过近导致的近光源影响和相机透视投影问题、变动相机视角[8]、室外场景重建[9]等仍然值得深入研究,为了提高精度,有人将主动式的方法和光度立立体方法结合取得更高的精度,近年来也有人开始探索将深度学习应用到光度立领域。
1 光源标定问题
光源的标定是指放置标定物等辅助物体估计光源的信息,包括光源的方向和强度等,光源信息的准确性极大影响重建的效果。光度立体的前提假设入射光为平行光,现实往往难以制造大面积平行光,所以通常的做法是点光源与物体的距离十倍于物体最大宽度时所发出的光可近似看成平行光。Pentland[10]最早提出计算光源方向,指出光源标定的线索更多地包含在图像的亮度梯度而不是图像的绝对亮度中。传统的标定中一般利用高光黑球来做标定物,通过点光源在黑球反射的高光信息与黑球的几何关系,求解光源方向。如图2,光源方向是L,N是球体的表面法向量,视角方向为V[0,0,1],则其关系为L=2(N∙V)N-V,V已知,只要知道N即可求出L,N则可以通过高光黑球的已知半径R和光源照射在其表面的几何关系确定,r可以通过图像处理的方法求得,z可通过r和R求得。
图2 光源标定示意图
光源标定的目的是为了确定光源方向或强度,一般利用物体表面的明暗信息[11]、阴影信息或者反射特性三类信息中的其中一种即可,也可以将三种信息结合。采用不同标定物,是利用不同标定物的反射特性获取更加精确的光源信息,2001年,Wallace等人[12]以正方体为标定物,通过对比实际光源得到图像和估计光源得到的图像的误差来标定光源的方向。2009年,Takai等人[13]则利用差分球获取了光源信息。2012年,Aoto等人[14]使用中空透明玻璃球作为标定物,利用玻璃球透明特性以及内反射和外反射的三角关系确定光源位置。2013年,程岳[15]使用镜面作为标定靶,通过镜面反射原理的方法来估计光源参数,得到光源方向最大角度误差0.6度,平均误差0.23度。总结如图3。
图3 光源标定方法分类
将漫反射信息和高光信息结合起来[16]也是一种常见的做法。特定的复杂标定物和反射特性,操作过程复杂,不容易应用,在满足精度要求的条件下,实际应用中一般利用的高光黑球或者平面镜作为标定物为主。
1.1 近场光源
光源分为近场光源和无穷点光源两类,无线点光源照射在物体表面可以近似为平行光。近场光源由于光源过近,例如医学的内窥镜[17],难以将光线看成平行光,如果依旧按照平行光处理,会导致重建效果不准确。图4位光源的分类。
图4 光源分类
谢利民等人[18]研究了不同光照条件下的三维重建算法指出,在光源距离物体表面较近时,近点光源下的重建结果比无限远点光源更接近实际物体真实形状,远光源对于点光源的设定是基于理想光源的,理想点光源发射的光线在每一个方向上光强一样,近场光源则应该假设真实光源,即每条光线方向光强都不同,需要新的光源模型或者光源强度进行校正。
图5 平行光和近场光源模型
近场光源会导致光照分布不均,可以利用带有朗伯反射特性的白纸作为标定物来补偿[19]不同光源的强度分布,假设在标定物中心区域内,各点亮度值与该区域内的最大亮度值比值对任意目标物而言保持不变,进而利用该比值对目标物体表面图像亮度的进行了校正,并将校正后的图像作为光度立体重建算法的输入。或者利用算法进行校正,Jian等人[20]则基于光源强度逆平方定理提出了一个快速自适应算法,实现光照的均匀性。对于光源位置确定,2013年,谢利民等人[21]将LED点光源的发光特性引入标定过程,利用新的光源模型结合物体表面信息,利用算法优化得到特定点光源的位置。
湘西苗族创造了 3种苗文〔1〕,“板塘苗文”“老寨苗文”和“古丈苗文”〔2〕。方块苗文是一种借源文字,与汉字的结构和造字法上基本一致,造字法主要有形声和会意,双音符的不多,象形成分极少,大量地借用汉字标音。方块苗文用来记录和创作苗歌,苗歌主要是表达苗族人们在生产、生活、农耕、风俗传统等各方面的情怀,留存下来的苗歌手稿有十几万字,为我们研究苗族的民族历史、民族风俗和民族文学提供了宝贵的文字资料。
近场光源需要校正光源的光强和平行光模型,需要考虑实际光源的发光模型,增加了标定复杂性,可将不同标定物放在一起利用信息互补进行优化。近场光源问题和未标定光度立体领域有一定的交叉,由于近场光源不好标定,可直接采用未标定光度立体进行重建。
1.2 未标定光源问题
光源的标定通常需要单独的标定实验的,给光度立体的应用增加难度,限制了光度立体的应用。如何简化或者省略这一步骤变成光源自标定[22]是一个十分有价值的问题,奇异值分解是其中一个应用方向。图像的奇异值分解(Singular Value Decomposition,SVD)可以提取主成分,去除噪声并降维,将其应用在光度立体法中,得到法向量值和实际值差一个线性变换,再引入物体表面可积约束,两者误差则缩小到一个通用浅浮雕(Generalized Bas-Relief,GBR)矩阵变换。1999年,Belhumeur等人[23]讨论了在未知光源条件下,不同的形状轮廓也有可能有相同的亮度信息,此时光度立体算法得到的深度信息具有浅浮雕模糊性。提取主成分之后的奇异值分解:
其中S'和L'与真实的S和L自相差一个矩阵变换,S'和L'具有符号模糊性,因此,GBR参数的确定是未标定光度立体问题的一般解决方向,通过引入Freeman的视点约束条件[24]或者通过四个镜面反射点和一致的视点约束条件与可积约束条件结合[25]进行求解。在未知光源条件下,使用正交投影会产生GBR问题,在透视投影假设下却不存在[26],因此透视投影模型也可以解决GBR模糊性问题,但是这样的模型也比原先远光的正交投影模型复杂,计算复杂。2018年,Z Mo等人[27]研究自然光照下的未标定光度立体,提出对缓慢变化的法线组成的小曲面使用等效光照模型,解决每个小曲面的任意旋转模糊,将产生的小曲面连接起来,通过在整个表面上定义的角距离传播将局部模糊统一到全局旋转,应用可积性约束后,最终得到只包含一个二元模糊问题。2018年,Sengupta等人[28]提出了一种新的低秩约束优化方法,通过交替方向乘子法(Alternate Direction Method of Multipliers,AD⁃MM)优化秩约束和可积约束结合的问题,相比于SVD方法,使用了更少图像。2019年,Haefner等人[29]提出基于变分法的无标定光度立体,用球面谐波的展开来近似朗伯反射模型,将光度立体问题转化为单一变分问题,取得良好的法向重建效果。
自标定光度立体算法大大提高光度立体的可操作性。2018年,陈思远[30]研究基于智能终端的光度立体算法,利用单光源单摄像头和为未标定光度立体技术将光度立体搬上移动端。2020年,Ali ABzal[31]另辟蹊径地利用浅浮雕自动画图。
2 非朗伯体光度立体
朗伯体模型理想散射模型,入射光线在各个方向均匀散射,与其相对的是镜面反射模型。除此之外,其他较为常见的光照模型包括Phong模型[32]、Tor⁃rance-sparrow模型[33]、Ward模型[34]、Cook-Torrance模型[35],以及Bi-polynomial模型[36]等。
图6 从左到右分别是镜面反射、漫反射、Torrance-Sparrow反射模型
Phong模型简单将光照分为以下几个光分量:漫反射、镜面反射、和环境光,不同材质物体表面各个分量的比重不同。Blinn则在Phong模型的基础上进行改进,在高光分量上采用半角向量和法向量数量积替代原来观察向量和反射向量的积,提出著名的Blinn-Phong模型[37]。Torrance-Sparrow模型是从辐射度学和微表面理论推导出粗糙表面的高光反射模型。Cook-Torrance模型综合考虑了Torrance-sparrow模型和Blinn模型,用于渲染高光和金属质感,目前计算机图形学多使用Cook-Torrance模型。Ward模型[38]是带有高斯分布的快速各项异性的模型,Bi-polynomial模型利用双多项式对低频各向同性BRDF进行建模。
这些模型在描述特定的物体表面拟合情况会比较好,而对于一些更广泛更普遍的表面则有一些不足,为此有学者提出了无模型的光度立体算法,即仅利用双向反射分布函数BRDF的特性得到物体表面梯度信息。以上模型针对的是刚性物体,而针对玻璃、塑料等透明或者衣物、液态物体等非刚性物体[39]研究较少。
2.1 高光阴影处理
非朗伯体模型影响之一就是会产生高光和阴影信息,高光在光源标定时是有用信息,在重建时则是噪声,这些信息会影响重建效果甚至导致重建错误。1981年,Ikeuchi[40]较早针对纯高光表面提出了解决办法。理论上只要三张不同方向光源的图像,即可有唯一解,实际上现实中常用4个或者更多个光源,数据的冗余可以一定程度上解决高光问题或者阴影问题,思路为将高光阴影视为异常点进行剔除,采用多个光源照射作为初始输入像素,去掉被假定为高光和阴影的最亮和最暗的像素,剩下的三个最为最终输入像素[41]。2003年,Barsky等人[42]基于双色反射模型,假定物体放射率由漫反射分量和高光分量组成,利用四光源彩色光度立体技术,在存在高光和阴影的情况下,检出物体高光的同时计算出物体表面的法向。2007年,Chandraker等人[43]基于图割(Graph Cuts)的方法发展出了阴影割(Shadow Cuts),通过阴影的能量函数,用图割法快速算出图像阴影区域,区分光度区域和阴影区域,分离出阴影区域同时求解物体表面的法向。2008年,Verbiest等人[44]利用最大似然估计算法将将阴影等剔除。2010年,Yu等人[45]基于朗伯反射模型假设,使用pixel wise优化方法从输入中获得满足朗伯体约束的最大子集进行全局优化,而非依赖概率估计的方法求解法向。2017年,Shen等人[46]通过leave one out交叉验证法自动确定最佳核参数,实验表明这类优化方法可以很好地剔除图像中的由于阴影产生的异常值。2020年,许丽[47]使用了聚类算法去除高光。
高光和阴影是干扰图像质量的异常值,利用算法对其进行剔除处理获得高质量输入图像,以减少噪声对重建效果的影响。此外,消除高光的影响还可以用图像包含的额外信息例如有效利用重影现象[48]等。
2.2 互反射与自然光
在实验室环境中为了避免环境光的干扰,一般在暗房或者在封闭环境进行实验。在封闭的环境中,容易产生互反射问题,为了解决该问题,2011年,Liao等人[49]提出分离m次反射光和消除相互反射的方法,通过投影仪向场景投射不同颜色的光,部分地解决了互反射问题,通过改变物体表面的反射系数,从而实现了m次反射的分离。在现实环境中环境光的影响是避免不了的,可通过关闭光源得到环境光的亮度,然后在后续的光度图像中减去环境光分量。暗室限制了光度立体的发展,如何将光度立体重暗室搬到自然光下进行室外场景重建是未来的一个挑战。
3 彩色光度立体
经典光度立体图像输入的对象是灰度图,如果使用彩色相机获得图像,需要将其转为灰度图,这个过程会损失一些信息,如果使用彩色图像作为输入对象,称为彩色光度立体,也称为多光谱光度立体。1994,Kontsevich等人[50]首先阐述了多光谱光度立体法。由于彩色空间的信息比灰度空间的丰富,在高光或者异常点处理方面会有意想不到的效果。2005年,Mallick等人[51]将其应用到高光分离,通过RGB空间旋转独立于镜面反射率的光度重建,但是其对曲面的要求比较严格。2006年,Zickler等人[52]则对非朗伯表面利用颜色信息从RGB空间中分离出子空间,有效去除高光和阴影等异常点,再依据子空间信息求解物体表面法向。彩色光度立体另一种形式是利用捕捉到的彩色图像的三个通道来代替原始的三个灰度图像,进而通过一张彩色图像即可实现表面重建,避免了由于分时所带来的位置变动的影响[53],以实现快速甚至实时重建。与利用LED作为光源,控制光源与相机高速同步,使其响应速度远快于物体的运动速度[54]的方式相比,分通道彩色光度立体成本更低、更便捷、更适合实时动态三维重建[39]。
4 重建方法
光度立体的重建方法最直接的方式是直接积分的形式,此法要求梯度场数据的旋度为零或者梯度可积,但是由于噪声的因素实际表面并不可积,需要加入限制条件使得梯度强制可积。Horn[55]用数学方程表示表面高度和梯度的强制可积。路径积分法简单,但是依赖于积分路径,面对复杂的表面会有比较大的形变。而采用最小二乘法思想拟合物体表面可以让在整体形变程度降到最低,但是会丢失局部信息。1988年,Frankot和Chellappa[56]使用基于傅里叶基函数的方法将不可积梯度场投影到可积的傅立叶基函数上来实现可积,从而重建物体表面。1990年,Sim⁃chony等人[57]提出经典的泊松方程的方法,首次把梯度积分的问题转化成泊松方程,原始数据进行离散余弦变换或者离散正弦变换,用直接分析法来求解矩形域上的泊松方程,得到积分后的曲面形式。将求最小函数的问题转换为求解泊松方程,求解泊松方程求解有很多种解法,可以直接用偏微分直接求解泊松方程,雅克比迭代法或者高斯-赛德尔迭代求解。变分法则是利用迭代的方法求解泊松方程,会有误差的累积[58]。针对局部误差累积,金字塔法[59]通过基于高度空间的全局优化迭代,通过多尺度金字塔逼近,拼接子表面最后得到完整表面。代数法重点在优化梯度可积的方面上,确保梯度可积最后通过泊松方程泊松重建。奇异值分解法[23]多应用于未标定的光度立。表1总结了常用的重建方法有点和缺点和原理。
表1 常用重建方法比较
2006年Agrawal[61]对当前基于可积函数的投影方法做出对比分析,总结出一般的框架,并提出了基于空间各向异性的梯度场投影策略及仿射变换方法。2010年,Wu和Tang[62]利用最大期望方法对原始梯度场进行优化,改善梯度的可积性,进而能够重建突变的表面。2012年,Cheng和Shen[63]在传统泊松方程的基础上加入核函数方法,提出了核化的泊松方程,提高了重建的鲁棒性。2013年谢武媛等人[64]提出利用离散集合处理算法来解决重建问题,在保持表面的尖锐特征方面得到了显著提升。2018年,李健[65]基于通过原始彩色图像的光度构建的偏微分方程进行重建。2020年,许丽[47]基于生成对抗网络的估计法向量信息。李敏[66]使用l-1范数优化函函数,将原优化问题转化为凸优化问题。
5 研究热点
光度立体算法在朝着约束条件更少,适用的对象更宽泛的方向发展。相比于光源已知的朗伯体反射模型,近场光源、非朗伯体表面、自标定光度立体一直是往年研究的重难点,针对非刚性物体、透明半透明物体和透视投影模型的研究比较少,在光照模型方面则致力于寻找适合所有材质的通用的BRDF模型。在未来,研究透明物体、消除互反射和投影阴影现象、自标定光度立体、自然光条件下室外场景重建以及和其他三维重建结合是值得深入研究的方向。当前,将光度立体和其他主动式方法结合、深度学习和光度立体结合是最为热门的两个方向,尤其是深度学习最新研究方向。
5.1 和其他主动式方法结合
光度立体可以获得比较连续的表面,而主动式的方式可以得到离散但是比较精确的表面,利用两种方法的优势互补,提高精度。比较经典的是Nehab等人[67]提出的利用立体视觉获取低频信息,光度立体算法获取高频信息,通过法向优化初始几何信息同时又反过来使用几何信息优化法向信息的优化方法,最终获取的深度信息。2008年,Aliaga[68]将结构光和自标定光度立体算法相结合。2011年,Sabzevari等人[69]将运动恢复结构法和未标定光度立体结合,获得可靠的特征点信息,从而消除了光度立体未标定问题的浅浮雕模糊性。McGunnigle[70]将光度立算法和激光切片相结合。2012年,Zhang等人[71]提出主动立体和光度立体结合,利用Kinect相机提供的深度信息建模不连续和阴影部分,有效的融合深度与法向信息从而提高重建质量;2014年,Haque等人[72]首次使用深度相机中的红外相机直接求出高分辨率光度信息,不用另外使用RGB相机,简化了设备规模。2012年,Okatani等人[73]则证明在反射率和光源信息不精确的情况下,深度信息与法向信息也可有效融合。
图7 融合算法框架[73]
上述方法只在低频信息与高频法向信息的分辨率接近时可以取得较好的重建结果,故无法大幅度提高重建结果的精度。为此,2013年Lu[74]首次提出通过融合不同数量级分辨率的低频几何信息与高频法向信息而进行超高分辨率三维重建的方法,重建精度高但是对异常值很敏感。为了消除这种情况下的三维坐标异常点,2020年李敏[74]提出了一种基于凸优化的高精度三维重建框架,将非线性优化方程被映射到高维空间,将问题转换为可求解全局最优解的凸优化问题,得到更稠密重建结果。
图8 深度光度立体网络(DPSN)[81]
5.2 深度学习
随着深度学习技术的高速发展,已经有学者尝试使用深度学习的方法应用到光度立体领域,其网络称之为深度光度立体网络(Deep Photometric Stereo Net⁃work,DPSN)。深度学习方法具有自主学习的性质,可以摆脱光度立体对光源模型和反射模型的苛刻假设,2018年,Chen等人[75]全卷积网络应用到非朗伯体表面,不要求训练数据和测试数据的光源信息一致,灵活性高。后来他又在此基础上引入了一种新的卷积网络LCNet对PS-FCN模型进行改进[76],将其应用到未标定光度立体问题。Ikehataf[77]针对非凸表面使用卷积神经网络学习物体光度图像与法向之间的关系。Lu等人[78]使用卷积神经网络与多光谱光度立体结合。2019年,Chen等人[79]将深度学习网络应用到光源标定,提出分两阶段的基于深度学习的自标定光度立体网络模型。2020年,Yu Chanki[80]针对未标定光度立体进行多尺度融合的方法进行表面方向估计。Santo等人[81]提出深度光度立体网络,在己知光源方向的前提下学习反射率和法向之间的映射关系。Wang[82]则基于非朗伯体利用有监督的深度学习技术来增强阴影抑制能力和反射率模型的灵活性,达到一个比较好的精度。
理论上深度学习可以应用到光度立体每一个流程中,学习原始图像估计表面法向和光源信息,也可以学习法向量和重建高度的关系,目前这是最新的研究热点,采用何种网络结构应用到光度立体能够达到最好效果是探索的难点。
6 结语
光度立体利用光度信息即可无接触测量重建三维模型,本文从光度立体的原理、光源标定、非朗伯体的高光和阴影去除、彩色光度立体、重建方法、目前研究热点等进行了详细的介绍,总结了光源的种类和光源标定方法的分类,以及常用的几种重建方法。近场光源和非朗伯体是以往的研究重点,在此基础上展望未来,自标定光度立体大大提高光度立体的可操作性,非刚性物体和透明物体是由于考虑折射和散射和互反射问题是研究的难点。为了摆脱严苛的光照条件,能在自然光下转换为不同光照方向下的图像,自然光下室外重建是研究的趋势,目前和其他三维重建方法结合仍是热点,最新的热点是与深度学习结合形成深度光度立体网络,利用新的方式提高重建的精度和鲁棒性。