利用条纹投影的结构光3D成像技术中,有着一种非常常用的方法,就是双波合成。顾名思义,它是用两个不同波长的条纹,合成一个波长更大的条纹。选用适当两差距较小的波,往往能构建一个很大的条纹,从而可以直接得到一个连续的相位图(相当于略去解包裹,直接获取真实相位),避免了解包裹过程中误差的引入。实验表明,对于结构复杂,或表面梯度很大的物体,双波合成依然能得到精确的相位分布。但从我们大创来说,实际使用这种方法后得到的图像效果并不好。分析原因主要是由投影仪存在的伽马畸变以及点扩散未消除造成的。若大家对于投影仪的伽马畸变和点扩散有兴趣的,后期我们或许会出一篇关于这种现象的讲解~(我们认为双波合成在使用激光器的系统中的使用会更好,使用投影仪投射条纹图并不能很好发挥它的作用)
原理:
取激光波长λ,相对光程h,通过数值再现后得到的相位分布为:
使用两个波长的激光,波长分别为 、
。将它们的相位相减:
所以:、
,从而达到了波长变大的效果。
通过,我们可以看出只要我们选择适当的两个波长,我们就可以模拟出另外一个波长。
初学者或许会有疑问,就是投影仪并没有波长的说法呀?确实,但是也可以使用这种方法,因为原理是一样的。虽然投影仪没有波长,但它投影出来的条纹变化是余弦变化,与使用激光生成的条纹变化是一样的。对于不同波长,我们只需要在投影仪上投影不同宽度的两组条纹图就行。
运算的流程是:
1、首先获得两张经过四步相移后的未接包相位图(使用两组条纹宽度不同的条纹图进行投影)
2、将他们的对映像素点的相位进行相减(i,j表示像素点坐标)
3、判断若大于
,则让
并保存;若
小于
,则让
并保存;若
在
内,则保存
。(
表示某像素点所生成的新相位图的对应点相位)
通过这一方法,我们就可以成功得双波合成的相位图。
实验图像:
老实说,效果不太好,原因是投影仪存在的伽马畸变对成像的质量影响太大。
双波合成代码: