结构光视觉标定:从原理到实战,一篇讲透
先说说结构光视觉的核心优势。非接触、信息量大、测量精度高、抗干扰能力强——这几个特性让它成为工业视觉测量中的一把利器。但要想用好这把利器,传感器的参数标定是关键中的关键。
结构光视觉传感器的标定,本质上要解决两个问题:摄像机参数的标定,以及结构光平面参数的标定。说白了,就是让相机知道自己的“眼睛”怎么看,同时让激光平面知道自己的“身位”在哪儿。
测量模型:小孔成像与光平面的结合
先看测量原理。在不考虑镜头畸变的前提下,把相机成像简化为小孔成像模型。此时,特征点的图像坐标 \(P_f\) 与其在摄像机坐标系下的三维坐标 \(P\) 之间的关系,可以直接用矩阵表达:

其中 \((u,v)\) 是特征点的图像坐标,\((u_0,v_0)\) 是光轴中心的图像坐标,\((k_x, k_y)\) 是 \(X\) 轴、\(Y\) 轴方向的放大系数,\((x_c, y_c, z_c)\) 是特征点在摄像机坐标系下的坐标,\(M_c\) 就是相机的内参数矩阵。

结构光视觉的投影成像模型,可以抽象成这样一个关系图:

设结构光在摄像机坐标系中的平面方程为:

这样一来,只要拿到激光条纹特征点的图像坐标,就能解出它在摄像机坐标系下的三维坐标:

相机参数标定:张正友方法的经典实践
相机内参如何标定?最经典的做法是张正友提出的基于2D平面棋盘格的标定方法。直接使用Matlab的摄像头标定工具箱,操作起来相当便捷。


具体算法细节可以参考张正友2000年的那篇经典论文:Zhang Z. A flexible new technique for camera calibration[J]. IEEE Transactions on pattern analysis and machine intelligence, 2000, 22(11): 1330-1334.
标定完成后,得到的内参数矩阵长这样:

结构光平面参数标定:一种简洁实用的方法
相机标定结束后,接下来就是结构光平面的标定。这里介绍一种在标定相机的同时就能搞定光平面参数的方法,不需要加工高精度的三维标定靶标,也无需手工测量,实操性很强。
具体思路是这样的:首先,让激光器把结构光平面投射到平面棋盘格上,形成激光条纹,用CCD摄像机拍摄下来。接着对图像进行预处理,提取激光条纹上的两个特征点。然后,控制机器人按一定约束运动,从一个标定位置移动到另一个位置,产生另一条不共线的激光条纹。再提取这条条纹上的两个特征点。这样一来,结构光平面上就有了四个点——三个不共线的点就能确定一个平面,四个点用最小二乘法算出来的平面方程更可靠。
实验装备也很常规:一个六自由度机器人、一个CCD工业摄像机、一个激光器、一个平面棋盘格靶标。示意图如下:

这里需要明确坐标系的转换关系。摄像机坐标系位于摄像机中心,世界坐标系位于棋盘格靶标上。特征点在两个坐标系下的对应关系用下式表达:

标定过程分步拆解
第一步:图像获取。图像获取与相机标定同步完成。先把棋盘格放置在工作台上,在初始位置用摄像机采集一幅图(如图a)。保持摄像机和棋盘格的位置不变,打开激光器让条纹投射到棋盘格上,再采集一幅图像(如图b)。然后改变棋盘格和摄像机的相对位姿,保证前后两条激光条纹在空间上不共线——这样才能唯一确定一个光平面。
第二步:图像处理。处理的目标很明确:提取激光条纹上特征点的图像坐标。主要分为四个环节:ROI确定、自适应阈值分割、骨架细化、特征点计算。
ROI确定。观察图像可以发现,激光条纹大致平行于图像的 \(u\) 轴,并且条纹处的灰度值明显高于其他区域。因此,通过计算每行像素灰度值之和,就能快速锁定感兴趣区域:

阈值分割。最常用的Otsu自适应阈值分割方法,对一般图像效果不错,但用在棋盘格上的激光条纹分割时,效果并不理想。这里采用一种更贴合实际的策略:利用ROI内行像素灰度值之和来计算激光条纹的自适应阈值:

骨架细化。阈值分割后的激光条纹有一定宽度,直接处理计算量大、精度低。需要对图像进行骨架细化,得到单像素线。这里采用一种快速骨架细化方法,通过迭代提取骨架。每个迭代过程分两步:第一步去除东南边缘和西北角的点,第二步去除西北边缘和东南角的点。


其中 \(P_i\) 的分布情况如图:

第二个迭代过程要把第一个步骤中的条件c、d改为:

特征提取。选取激光条纹中心线上的两个点作为特征点。为了进一步提高提取精度,采用最小二乘法对细化后的激光条纹直线进行拟合。

特征点提取的具体过程,先要弄懂棋盘格平面内任意一点与法向量的关系:

由上图可得:

再结合特征点的图像坐标与摄像机坐标系下坐标的关系:

就可以求出棋盘格上任意一点在摄像机坐标系下的 \(z_c\) 坐标:

进而得到激光条纹特征点在摄像机坐标系下的坐标值:

至此,四个激光条纹特征点的图像坐标已经获得,根据上式算出它们在摄像机坐标系下的三维坐标。三个点确定一个平面,四个点用最小二乘法来计算结构光平面方程,结果如下:

到这里,结构光平面方程参数的标定就算完成了。整个过程环环相扣,每一步都有清晰的数学支撑和可操作的方法,无论是实际工程应用还是学术研究,都具有很高的参考价值。
