基于Linux操作系统的结构光单目扫描焊缝跟踪器——将图像中的条纹像素坐标转换为物体表面的三维坐标
目录
线结构光三维测量是一种主动视觉技术,通过线激光器向物体表面投射一个光平面(俗称“光刀”),该平面与物体表面相交形成一条变形的激光条纹。摄像机从另一个角度拍摄条纹图像,由于物体表面的高度起伏,条纹在图像中产生偏移。利用摄像机内外参数以及激光平面的空间方程,可以从图像中条纹的亚像素位置反推出物体表面的三维世界坐标,从而实现单帧三维轮廓的快速获取。
本文基于一套完整的 C++ 实现,系统性地讲解如何整合大恒工业相机、Steger 中心线提取、相机标定与坐标转换,构建一个实时、可用的线结构光三维测量前端。
一 Steger 亚像素中心线提取
Steger 算法是线结构光中心提取的“黄金标准”。其核心思想是利用Hessian 矩阵确定条纹的法线方向,并在法线方向上对灰度进行二阶泰勒展开,求出亚像素精度的极值点。
1.1 构造高斯导数卷积核
首先计算图像的一阶偏导 Ix, Iy 和二阶偏导 Ixx, Iyy, Ixy。为避免噪声,使用高斯平滑后的导数核:
-
一阶导数核:
g′(x)=−x⋅e−x2/(2σ2) -
二阶导数核:
g′′(x)=(x2−σ2)⋅e−x2/(2σ2)
代码中 createGaussianDerivativeKernel 和 createGaussianSecondDerivativeKernel 生成一维核,再通过 filter2D 与图像卷积得到各阶导数(Ixy 由 Ix 对 y 导得)。
1.2 Hessian 矩阵与法线方向
对于每个像素 (r,c),Hessian 矩阵为:

计算其特征值 λ1,λ2(λ1≥λ2)。激光条纹在图像中表现为暗背景上的亮线(或反之),因此中心点处 Hessian 矩阵的一个特征值为负(亮线)或正(暗线),其绝对值较大。代码中通过 mode 参数选择提取亮线(max_eig < 0)或暗线。
特征向量中绝对值较大的分量对应法线方向
𝑛=(𝑛𝑥,𝑛𝑦)。
1.3 亚像素偏移
沿法线方向的一阶导数为 Ixnx+Iyny,二阶方向导数为:
Hnn=Ixxnx2+2Ixynxny+Iyyny2
则亚像素偏移量为:
t=−Ixnx+Iyny/Hnnt
最终中心点坐标为 (c+tnx, r+tny),仅当 ∣tnx∣≤0.5 且 ∣tny∣≤0.5 时保留(保证偏移不超过半个像素,即仍在当前像素邻域内)。
二、相机标定
2.1 标定参数文件格式
我们使用一个纯文本文件 camera_calibration.txt 存储标定数据,格式如下(依次为):
内参矩阵 K(9个浮点数,行优先)
畸变系数 k1 k2 p1 p2 k3
旋转向量 r1 r2 r3
平移向量 t1 t2 t3
三、光平面标定与三维重建
设激光平面在世界坐标系下的方程为:
AXw+BYw+CZw+D=0(6.3-1)
其中 (A,B,C) 为平面的法向量,D 为常数项。该平面参数可通过 激光平面标定 获得:在相机视野内放置一块已知高度的标定板(或使用多个不同姿态的平面靶标),拍摄激光条纹图像,提取条纹中心点并记录对应的世界坐标(通过标定板位姿已知),然后利用最小二乘法拟合所有点满足的平面方程,得到 A,B,C,D。若法向量已单位化,则 D 的几何意义为原点沿法向的有符号距离。
相机外参给出了世界坐标系到相机坐标系的旋转矩阵 R 和平移向量 t(列向量),使得空间点 Xw=(Xw,Yw,Zw)T 在相机坐标系下的坐标为:
Xc=RXw+t(6.3-2)
对于图像中提取的亚像素中心点 (u,v),先通过内参矩阵 K 和畸变系数 distCoeffs进行去畸变,得到归一化相机坐标 (xn,yn),即该点对应的光线在相机坐标系下的方向向量为:
𝑑𝑐𝑎𝑚=(𝑥𝑛, 𝑦𝑛, 1)𝑇(6.3-3)
将该方向向量转换到世界坐标系:
dw=RTdcam(6.3-4)
因为旋转矩阵 R 为正交阵,RT=R−1。同时,相机光心在世界坐标系中的位置可由外参推导:
Cw=−RTt(6.3-5)
于是,从光心 CwCw 出发,沿世界方向 dwdw 的光线可参数化表示为:
Xw(λ)=Cw+λdw,λ>0(6.3-6)
将该式代入平面方程 (6.3-1):
A(Cw,x+λdw,x)+B(Cw,y+λdw,y)+C(Cw,z+λdw,z)+D=0
整理后解得参数 λ:
λ=−ACw,x+BCw,y+CCw,z+D/Adw,x+Bdw,y+Cdw,z(6.3-7)
若分母绝对值小于某个极小阈值(如 ),表明光线与平面平行,此时无交点,该像素点视为无效点。将 λ 代回 (6.3-6) 即可得到该点在三维空间中的世界坐标 (Xw,Yw,Zw)。
该方法将图像中每个亚像素中心点独立地映射到三维空间,形成单帧点云。所有点均落在同一激光平面上,因此得到的 ZwZw 坐标理论上应相等(平面方程决定),实际测量中由于噪声和标定误差会略有波动,但整体反映了物体在该激光切片上的轮廓高度信息。

所有评论(0)