
光度立体法(Photometric Stereo)是一种基于计算机视觉的三维重建技术,通过分析物体在不同光照条件下的图像亮度变化,推算出物体的三维形状。
除三维重建外,光度立体视觉的另一大优势是通过对物体反射特性的分析,在获取场景几何结构的同时获取场景的光度信息,为计算机图形学提供了更多的信息。自1980年Robert J. Woodham教授首次提出该方法以来,光度立体法在计算机视觉、三维重建、缺陷检测等领域得到了广泛应用。
光度立体法的核心原理是利用物体表面在不同光照条件下的亮度变化来推断其三维形状。
具体而言,该方法基于以下假设:
光线在垂直入射时,物体表面的亮度最高。
光线偏离垂直方向时,物体表面的亮度会降低。
物体表面具有朗伯反射特性,即以漫反射的方式反射入射光。

如图1所示,在实际操作中,光度立体法需要至少三张不同光照方向下的图像。通过计算每个像素点在不同光照条件下的亮度值,可以得到该像素点的表面法向量。最终,通过整合所有像素点的法向量信息,重建出物体的三维形状。
光源标定是光度立体法三维重建的第一步,其目的是准确确定光源的方向和强度,以确保后续重建的精度。
常见的光源标定方法包括以下几种:
基于金属球反射的标定:
在场景中放置一个光滑的金属球,并在不同光照条件下成像。金属球表面的高亮点反映了光源的方向。
通过几何关系计算光源方向。假设反射方向R是固定的(指向观察者),则有:

其中,N是金属球表面的法向量,可以通过高亮点的坐标和球心的坐标计算得到。
基于“SFM”思想的标定:
利用结构从运动(Structure from Motion, SFM)的思想,通过多个视角的图像特征点对应关系,恢复光源的位置和方向。该方法适用于复杂场景,能够有效处理光源位置的标定问题。
基于立体视觉的标定:
结合双目立体视觉技术,通过多台摄像机构造立体视觉系统,利用最小二乘法解算光源相对摄像机的位置。该方法精度较高,适应性强,适用于多种场景。
光度立体法的基本公式基于图像辐照方程。假设物体表面的反射率是朗伯反射,其图像辐照方程可以表示为:

其中:I(x,y)是图像在点 (x,y) 的亮度;ρ(x,y) 是物体表面在点 (x,y) 的反照率;L是光源方向向量;N是物体表面在点 (x,y) 的法向量。通过获取多张不同光照方向下的图像,可以建立多个方程来求解N和 ρ。例如,对于三幅图像,可以得到三个方程:

通过求解这些方程,可以得到每个像素点的法向量和反照率。算出物体表面的法向量后,可以通过法向与高度之间的对应关系实现高度场的重建。
具体方法包括:
傅里叶基函数投影:Frankot和Chellappa提出了一种基于傅里叶基函数的方法,通过将不可积的梯度场投影到可积空间,实现高度场的重建。
核方法:Ng等人利用核方法,将原始精度投影到可积分的核函数空间,从而实现高度场的重建。
泊松方程:Simchony等人首次将梯度积分问题转化为泊松方程的求解问题。通过将原始数据进行变换,积分后的曲面形式可以通过求解泊松方程直接得到。
线性解码:Cheng和Shen提出了一种基于线性解码的梯度场重建方法,即使在存在强稀疏噪声的情况下,也能稳定地实现表面重建。
优点包括:
高效的三维重建:光度立体法通过拍摄多张不同光照条件下的图像,利用物体表面反射光线的性质,高效地重建物体的三维形状。
增强的对比度:该方法能够产生具有增强对比度和减小表面噪声的图像,对于检测物体表面的微小变化非常有效。
对光源要求不高:光度立体法对光源的要求并不特殊,关键在于光源需从不同角度均匀照射物体。
对复杂表面的适应性:光度立体法对于高反射性、复杂表面以及凹陷表面等场景展现出独特的检测优势。
局限性包括:
对非朗伯表面的处理能力有限:光度立体法传统上假设物体表面为朗伯反射体,但对于非朗伯表面(如镜面反射或半透明表面),其效果会大打折扣。
对全局光照效应的敏感性:在存在全局光照效应(如阴影、环境光反射)的场景中,光度立体法的重建精度会受到影响。
光源方向和数量的限制:为了准确重建,光度立体法通常需要已知且均匀分布的光源方向。如果光源方向未知或分布不均匀,可能需要额外的标定步骤。
计算复杂度和效率问题:某些基于深度学习的光度立体法虽然提高了精度,但计算成本较高,尤其是在测试阶段。
对材质和光照条件的依赖:某些方法对材质的均匀性有较高要求,且在光照条件变化较大时,可能需要重新训练模型。
光度立体法在多个领域具有广泛的应用,包括但不限于以下方面:
三维重建:通过拍摄多张不同光照条件下的图像,光度立体法可以准确地重建出物体的三维形状。
深度估计:光度立体法可以用于估计图像中每个像素的深度信息,从而实现对图像的深度感知和测量。
缺陷检测:光度立体法能够检测物体表面的微小变化,如划痕、破损等,广泛应用于工业检测。
虚拟现实和增强现实:在虚拟现实和增强现实应用中,光度立体法可用于实时地获取用户视角下的三维深度信息,从而实现真实感的渲染和交互。
自动驾驶和机器人导航:利用光度立体法可以获取机器人周围环境的深度信息,从而帮助机器人进行导航和避障。
