首先,什么是结构光?通俗地讲,结构光就是一组由投影仪和摄像机组成的系统结构,用投影仪投影特定的光信息到物体表面后,由摄像机进行采集,根据采集到的信息计算出深度,进而生成3D图像。多步相移是摄像机收集信息的一个关键步骤,可以将实际的深度信息转化为可接收的相位信息。
那如何得到深度对应的相位信息?这得通过一个光强公式计算:
任何一个光强都可以转换成这个形式,其中是干涉图的背景光强,
是调制度,
是待测物的波面初始相位信息,
是移相量,
是干涉图中像素点的坐标信息。
我们需要求出式中的,而
和
可以看作已知,为了求出
,我们可以通过多个
,然后拍摄得到对应的多个光强
,以此来建立方程组,即可求出
。比如我们用四步相移
可以得到以下方程组(让投影仪投的每张条纹图都移动π
/2个相位,即让
)
然后可以联立这个方程组求得到。
(式①)
但是我们注意到的周期是
,所以按理来说
的周期也是
,但实际上
的周期应该是
(因为
的周期是
),这里我们注意到①式右边的分子和分母同时为正数或者负数时
的值是一样的,但是对应于实际情况中,这是完全不同的两种情况。所以根据分子分母的正负性可以分为四种情况:
1、当分子分母都为正数时,处于第一象限,为
2、当分子分母都为负数时,处于第三象限,为
3、当分子为负数,分母为正数时,处于第四象限,为
4、当分子为正数,分母为负数时,处于第二象限,为
的真实相位,
(k为整数),(
是
内),由于我们无法确定k的值,所以我们根据四步相移的求出的结果只能是范围在
的包裹相位
。要求出k值,我们还得根据相位解包裹进行求解。
四步相移matlab代码:(155条消息) 简单四步相移matlab代码编写-其它文档类资源-CSDN文库