光度立体(一)- 基于先验信息的快速表面法向量求解

基于先验信息的快速表面法向量求解

  • 一.光度立体法简介
  • 二.经典光度立体法求解法向量
  • 三.基于先验信息快速求解法向量

一.光度立体法简介

光度立体法(Photometric Stereo)是一种使用多个光源方向估计表面几何形状的方法,可以根据二维纹理信息提取出三维模型。最早是由当时在MIT的人工智能实验室的Robert J. Woodham教授在1978年左右提出。近些年来,随着相关学者的研究拓展,大致可划分为经典的光度立体未标定的光度立体基于参照物的光度立体基于深度学习的光度立体基于反射模型的光度立体基于多视角的光度立体六类

二.经典光度立体法求解法向量

经典光度立体法前提假设物体表面具有lambertian(朗伯)反射特性,即它对入射光产生漫反射,在每个方向上反射的光强都是一致的。
光度立体(一)- 基于先验信息的快速表面法向量求解_第1张图片
光度立体(一)- 基于先验信息的快速表面法向量求解_第2张图片
光度立体(一)- 基于先验信息的快速表面法向量求解_第3张图片

其中:
t:是测量到的像素的强度(像素值)
l:是光源强度(辐射强度)
ρ:是郎伯表面的漫反射率
L:是3维的单位光源位置向量
N:是3维的表面法向量

像素值可根据图像已知,如果光源单位向量和光源强度也已知的话(光源单位向量和光源强度求解可关注见后续的文章),那么上述方程只有反射率ρ和法向量x分量p,y分量q共三个未知数。因此至少需要三个方程,即至少需要不共面的三个光源去照射物体才可以进行求解。结果如下:
光度立体(一)- 基于先验信息的快速表面法向量求解_第4张图片
该方法通过矩阵方程求解法向量,可以在matlab或者C++调用eigen库中来计算,但当图片像素尺寸较大时,计算的耗时将指数增加,无疑降低了实际运用的效率。

三.基于先验信息快速求解法向量

为了提高运算效率,我们可以通过合理搭建采集环境,通过利用实验参数和朗伯公式快速求解法向量。以四光源为例,采集环境如下:
光度立体(一)- 基于先验信息的快速表面法向量求解_第5张图片
相机工件为正交投影采集,四个光源等高均匀布置在0度,90度,180度,270度方位,入射光的倾角为θ,偏角为。
将该四个特殊角度值带入朗伯公式可分别求得每个光源下对应关系式为:
光度立体(一)- 基于先验信息的快速表面法向量求解_第6张图片
为求解法向量的p,q,可将上式两边累加,用0度位置与180度位置,90度位置与270位置相减除以累加量以简化计算,同样前提光强已知且同步消元。
光度立体(一)- 基于先验信息的快速表面法向量求解_第7张图片
p,q即为法向量x,y分量,z分量已知为1,该方法直接将矩阵方程求解转换为常规的加减乘除数值运算,极大的提高运算效率。


总的来说,该方法相比于经典方法,计算耗时缩短了十倍以上,但前提是光源需要合理布置在四个特殊的方位角,对采集环境要求较高。在计算得到法向量后,还可以继续深入计算表面梯度信息、高度信息,曲率信息等。
更多的相关光度立体知识可见后续文章。
代码和测试图片可访问:link

你可能感兴趣的:(数字图像处理,光度立体,c++,计算机视觉,重构)