初接触到相移法的同学,很容易出现这样一个疑惑,为什么有的论文中选择三步相移,而有的论文中选择四步相移,更有甚者选择五步相移,不同的相移步长到底有什么好处,在重建时又如何根据当前的场景,选择最合适的相移步长呢?今天笔者就简单捋一捋,不同的相移步长选择究竟可能可以带来什么好处。
首先,我们需要知道,在相移公式中,我们有几个未知数,以通用公式(n步相移法)来看,在n步相移法中,第m张图片的公式表示如下:
???????? = ???? ′ + ???? ′′cos (???? + 2????????/????)
要解这个公式,我们知道????m是图片灰度,N是相移步长,m是当前图片序号,所以真正未知数是???? ′,???? ′′,????. 其中????是我们要求得真正的相位。由于我们有三个未知数,所以要得到完全解,需要三个方程,这就意味着我们的相移步长至少为三,事实上三步相移法也是最常见的相移法选择。
当相移步长增加的时候,我们会有更多的数据去求这三个未知数,从数据处理的角度说,数据越多,解出来的值对抗噪声的效果越好。然而,一般来说,如果仅仅从解数据的角度,三步相移解出来的结果就足够好了。为什么还有选择更高步长的相移呢?
事实上,这和投影仪本身自带的非线性误差有关,一般我们称这种误差是gama效应,这个影响的主要是,如果你投影一组灰度图,从亮度为0一直到亮度255,然而相机捕获到的灰度变化确不是一个线性变化的。这种灰度失真的影响,会直接影响到相移结果,从而导致结果的不准确。虽然现在有许多方法通过标定,拟合一个公式,去消除这种失真对结果的影响,我们称为伽马矫正。这种影响和我们的步长有什么关系呢?有一个简单的结论,通常情况下,相移步长越长,这种灰度失真对相移的影响越小。也就是说,选择相对高的相移步长,就可以抵消一部分这种失真带来的影响。一般来说,五步相移就可以得到一个比较好的抵消,越后面,即使图片更多,抵消的也不是那么大了。
多的相移步长不仅仅可以帮忙抵消非线性误差的影响,还可以帮助解图片中某些由于对投影光的反光造成的过曝点。不同的相移图片投影到同一点的亮度是不同的,越多的相移步长,相机上同一个点经历的投影亮度就越多,即使有一些点是饱和了(灰度直接达到255),但是也有很多没有饱和的点,所以,有以下两个思路:
思路一 当没有饱和的点大于等于3时,根据三个未知数只需要三个方程解的原则,记下没有饱和的点的相移序号,通过推没有饱和的点的公式的解来直接计算出该点的值。缺点:不同点的非饱和的序号不同,对应的公式就不同。如果相移步长太多,则穷举的情况太多,所以这种情况下通常只会使用五步或者六步相移,更多的相移步长情况太复杂。
思路二 根据论文1,当相移周期(一个相移所占的投影列数/行数)为偶数时,可以投影相移周期一半的整数倍的相移步长,比如相移周期是20时,相移步长可以是10,20,30…, 可以有效的重建出反光点的相位值。缺点:需要投影太多图片,在需要考虑重建速度的场景中不是很适用。
综上,相移步长的选择可以根据实际场景来定,如果你的场景追求高的重建速度,投影三步相移图片一般都是最佳的选择,如果你的场景对重建速度的要求不是那么高,而是希望能有更好的精度,不防考虑下四步相移或者五步相移法。如果你还想能够更好的解决下反光的问题,更高步的相移法也值得你去尝试。
论文[1], High-quality 3D shape measurement using saturated fringe patterns
本文仅做学术分享,如有侵权,请联系删文。
▲长按关注公众号