结构光|一文详解相移步长的选择问题

来源:公众号@3D涉及工坊

作者:书涵

链接:结构光|一文详解相移步长的选择问题


初接触到相移法的同学,很容易出现这样一个疑惑,为什么有的论文中选择三步相移,而有的论文中选择四步相移,更有甚者选择五步相移,不同的相移步长到底有什么好处,在重建时又如何根据当前的场景,选择最合适的相移步长呢?今天笔者就简单捋一捋,不同的相移步长选择究竟可能可以带来什么好处。

首先,我们需要知道,在相移公式中,我们有几个未知数,以通用公式(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本文仅做学术分享,如有侵权,请联系删文。

下载1在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。
下载2在「3D视觉工坊」公众号后台回复:3D视觉优质源码即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。
下载3在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

posted @ 2020-08-17 22:31  3D视觉工坊  阅读(1181)  评论(0编辑  收藏  举报