三维重建技术(3)Shape from shading(SFS)的原理
转自:
Shape from shading(SFS)的原理和我的实现结果, RyuZhihao123
Shape from shading是由Horn于1980年提出的一种单幅图像恢复三维信息的一种方法(Single Image-based Reconstruction)。对于Lambert表面具有较好的效果。下面简要的介绍一下其基本步骤和原理:
1. 得到灰度图像I。
可以利用如下关系式计算:gray = 0.3r + 0.59g + 0.11b;
2. 求出变换到光源坐标系的变换矩阵R
已知光源的两个偏角φs 和θs,并通过下面的关系式计算变换矩阵R:
3. 将矩阵R与原灰度图像I相乘,调整相机沿光源方向看去,得到新灰度图像E。
这一步实现了,从成像坐标系转换到光源坐标系。
4. 计算新灰度图像E沿x和y方向的梯度(Ex和Ey),其实就是求偏导。
5. 计算物体表面某点的倾角φ。
下图表示了什么是倾角φ:
关于倾角φ的计算,便是利用lambert表面的性质:
lambert余弦定理(Lambert Cosin Law)
我们利用Lambert Cosin Law 便可以很轻松的利用下面的关系式估计出某点的倾角:
任意亮度对应的倾角φi:Ei=Emax*cos φi
则,物体表面任意点的倾角φi即为:φi=arccos(Ei/Emax)
6. 下图表示了什么是偏角φ:
关于偏角θ,可以通过前面第4步求出的两个方向的梯度计算出来:θi = arctan( Ey / Ex);
7. 计算在光源坐标系下,物体表面任意点的法向量(nx,ny,nz)
此时把物体表面任意面源仍看做是一个球体,此时在光源坐标系下,物体表面某点的法向量为:n' = (nx,ny,nz);
其中:nx = sinφ*cosθ; ny = sinφ*sinθ; nz = cosφ
8. 计算在光源坐标系下,原图像某点对应的高度值:
height' = nz* 反射率。 (反射率可以根据材质选取)
9. 将结果从光源坐标系恢复到原成像坐标系:
只需将结果与如下的逆变换矩阵相乘即可