介绍
保证条纹结构光系统的线性度对获得高准度的测量结果至关重要。当投影仪亮度与设定图像灰度存在非线性关系,或者相机对光子的响应存在非线性,测量结果将存在高次谐波导致的周期摆动式测量误差,称为谐波误差,导致测量准度下降。本文介绍笔者对条纹结构光系统的线性度进行测试和校正的过程。
相机非线性
一般而言,工业相机的光响应有很好的线性度。不过,为了排除错误的软件设置导致的非线性,需要对工业相机的光响应进行检验。理想情况,标定相机光响应非线性,需要一个能够调节光功率的横流驱动的光源,固定相机曝光时间,设定不同光功率,采集多帧数据进行平均,查看光功率与相机灰度的关系曲线。但是,这种方式对实验设备的要求太高。笔者用的方式比较简单,适合在条件受限的情况下使用。用显示器作为光源,显示白色图像。显示器有很好的光稳定性。调整相机镜头,使相机拍摄虚焦的显示器。调节相机曝光时间,以改变相机接收的光子数量。最后,绘制曝光时间与相机的灰度的关系曲线。下图是笔者的测试结果,最大的非线性误差仅约0.22%,线性度较高,所以未对相机进行非线性校正。

投影仪非线性
消费级的投影仪通常有明显的亮度非线性,主要是为了对sRGB色彩空间的gamma编码进行补偿。但实际由代码生成的灰度图像基本都默认是在线性空间,所以这种补偿反而对条纹结构光测量带来的不利的影响。同时由于不同厂家的施加gamma方式是一个黑箱,所以必须实测。笔者购买的工业投影仪虽然声称没有gamma,但是在实测系统效果的时候发现,平面仍然存在周期性起伏,后来对投影仪进行线性度测试才发现,所购的工业投影仪也存在非线性问题。
投影仪线性度测试过程如下。相机固定曝光时间,拍摄均匀白板。控制投影仪投射0:5:255变化的均匀灰度图像,相机采集多帧进行平均。取相机中心200x200的区域,计算平均灰度,绘制出投影仪灰度和相机图像灰度的关系曲线,如下图所示。

投影仪在投射125以下和130以上灰度时,有明显的分段线性现象。笔者推测可能是某个固件bug导致的问题。这种非线性问题不像gamma导致的非线性,不能用光滑曲线拟合。笔者直接用这条曲线的反向曲线建立查找表,如下图所示,对想要投射的条纹进行预失真处理,以保证实际投射的条纹的线性度。
