计算机视觉标定技术

计算机视觉标定技术详解

一、引言

1.1 什么是标定技术?

在计算机视觉和机器人技术中,标定是指通过已知信息来确定相机、传感器或系统参数的过程。就像我们使用前需要校准尺子的刻度一样,视觉系统也需要"校准"才能准确理解三维世界。

1.2 四种标定技术概览

本文将按照复杂程度递增的顺序介绍四种核心标定技术:

  1. 2D平面标定 - 处理平面到平面的变换(最简单)
  2. 9点标定 - 工业中实用的2D坐标系映射技术
  3. 2D-3D标定(相机标定) - 建立二维图像到三维世界的映射
  4. 手眼标定 - 连接机器人与视觉系统的桥梁(最复杂)

1.3 标定技术的关系图谱

学习路径(按复杂度递增):
2D平面标定(最简单)→ 9点标定 → 2D-3D标定 → 手眼标定(最复杂)
         ↓              ↓           ↓           ↓
      单应性矩阵     工业坐标转换   相机内参矩阵   3D-3D变换
         ↓              ↓           ↓           ↓
      图像校正      坐标映射     相机模型     机器人视觉

二、基础概念

2.1 坐标系基础

在计算机视觉中,我们经常涉及以下坐标系:

世界坐标系(World Coordinates)

  • 三维空间中的绝对坐标系
  • 通常用 \((X, Y, Z)\) 表示
  • 作为所有其他坐标系的参考基准

相机坐标系(Camera Coordinates)

  • 以相机光心为原点的坐标系
  • Z轴指向相机前方,X轴向右,Y轴向下
  • \((X_c, Y_c, Z_c)\) 表示

图像坐标系(Image Coordinates)

  • 二维图像平面上的像素坐标
  • \((u, v)\) 表示,单位为像素
  • 原点通常在图像左上角

2.2 齐次坐标

齐次坐标是计算机图形学和视觉中的重要概念:

定义:将n维坐标扩展为n+1维坐标

  • 2D点 \((x, y)\) → 齐次坐标 \((x, y, 1)\)
  • 3D点 \((x, y, z)\) → 齐次坐标 \((x, y, z, 1)\)

优势

  1. 可以统一表示平移、旋转、缩放等变换
  2. 无穷远点的表示(最后一个分量为0)
  3. 矩阵运算的便利性

2.3 变换类型

仿射变换(6个自由度)

\[\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} a & b & c \\ d & e & f \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} \]

特点:保持平行线平行,适用于无透视变形的场景

透视变换(8个自由度)

\[\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} \sim \begin{bmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \end{bmatrix} \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} \]

特点:可以处理透视变形,更真实的投影

三、基础概念数据案例

3.1 2D-2D变换案例

仿射变换示例

假设我们有一个简单的平移+缩放变换:

变换矩阵

\[\mathbf{T} = \begin{bmatrix} 2.0 & 0.0 & 50.0 \\ 0.0 & 1.5 & 30.0 \\ 0.0 & 0.0 & 1.0 \end{bmatrix} \]

应用变换

  • 原始点:\((10, 20)\) → 齐次坐标 \((10, 20, 1)\)
  • 变换过程:

    \[\begin{bmatrix} 2.0 & 0.0 & 50.0 \\ 0.0 & 1.5 & 30.0 \\ 0.0 & 0.0 & 1.0 \end{bmatrix} \begin{bmatrix} 10 \\ 20 \\ 1 \end{bmatrix} = \begin{bmatrix} 2.0×10 + 50.0 \\ 1.5×20 + 30.0 \\ 1 \end{bmatrix} = \begin{bmatrix} 70 \\ 60 \\ 1 \end{bmatrix} \]

  • 变换结果:\((70, 60)\)

物理意义:原图像中的点(10,20)经过2倍X方向缩放、1.5倍Y方向缩放,然后平移(50,30)后,到达新位置(70,60)。

透视变换示例

考虑一个更复杂的透视变换:

变换矩阵

\[\mathbf{H} = \begin{bmatrix} 1.2 & 0.1 & 10.0 \\ 0.05 & 1.1 & 5.0 \\ 0.001 & 0.002 & 1.0 \end{bmatrix} \]

应用变换

  • 原始点:\((100, 50)\) → 齐次坐标 \((100, 50, 1)\)
  • 变换过程:

    \[\begin{bmatrix} 1.2 & 0.1 & 10.0 \\ 0.05 & 1.1 & 5.0 \\ 0.001 & 0.002 & 1.0 \end{bmatrix} \begin{bmatrix} 100 \\ 50 \\ 1 \end{bmatrix} = \begin{bmatrix} 1.2×100 + 0.1×50 + 10.0 \\ 0.05×100 + 1.1×50 + 5.0 \\ 0.001×100 + 0.002×50 + 1.0 \end{bmatrix} = \begin{bmatrix} 135 \\ 65 \\ 1.1 \end{bmatrix} \]

  • 归一化(除以最后一个分量):\(\left(\frac{135}{1.1}, \frac{65}{1.1}\right) = (122.7, 59.1)\)

物理意义:透视变换不仅包含平移、缩放、旋转,还会产生透视效果,远处物体显得更小。

3.2 2D-3D投影案例

简单相机投影模型

假设相机内参矩阵为:

\[\mathbf{K} = \begin{bmatrix} 1000 & 0 & 320 \\ 0 & 1000 & 240 \\ 0 & 0 & 1 \end{bmatrix} \]

相机位姿(外参):

  • 旋转矩阵:\(\mathbf{R} = \mathbf{I}\)(无旋转)
  • 平移向量:\(\mathbf{t} = [0, 0, 1000]^T\)(相机距离物体1000mm)

投影一个3D点

  • 3D世界点:\(\mathbf{P}_w = (100, 50, 0)^T\)(物体在世界坐标系中的位置)
  • 转换到相机坐标系:\(\mathbf{P}_c = \mathbf{R} \cdot \mathbf{P}_w + \mathbf{t} = (100, 50, 1000)^T\)
  • 投影到图像平面:

    \[\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} \sim \mathbf{K} \begin{bmatrix} 100 \\ 50 \\ 1000 \end{bmatrix} = \begin{bmatrix} 1000×100 + 320 \\ 1000×50 + 240 \\ 1000 \end{bmatrix} = \begin{bmatrix} 100320 \\ 50240 \\ 1000 \end{bmatrix} \]

  • 归一化:\((u, v) = \left(\frac{100320}{1000}, \frac{50240}{1000}\right) = (100.32, 50.24)\)

物理意义:空间中距离相机1000mm的物体点(100,50,0)在图像上投影到像素位置(100.32, 50.24)。

3.3 坐标系变换的链式法则

在实际应用中,经常需要多个变换的组合。假设:

  1. 世界坐标系 → 相机坐标系

    • 旋转:绕Z轴旋转30度
    • 平移:\((200, 150, 500)\)
  2. 相机坐标系 → 图像坐标系

    • 使用上述内参矩阵 \(\mathbf{K}\)

完整变换过程

  • 3D点:\(\mathbf{P}_w = (100, 0, 0)^T\)
  • 旋转矩阵(绕Z轴30度):

    \[\mathbf{R} = \begin{bmatrix} \cos30° & -\sin30° & 0 \\ \sin30° & \cos30° & 0 \\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} 0.866 & -0.5 & 0 \\ 0.5 & 0.866 & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

  • 相机坐标系:\(\mathbf{P}_c = \mathbf{R} \cdot \mathbf{P}_w + \mathbf{t} = (0.866×100 + 200, 0.5×100 + 150, 500) = (286.6, 200, 500)\)
  • 图像坐标:\((u, v) = \left(\frac{1000×286.6 + 320}{500}, \frac{1000×200 + 240}{500}\right) = (574.8, 400.5)\)

3.4 误差分析案例

在实际标定中,由于测量噪声等因素,变换结果不会完全精确。考虑一个简单例子:

理想变换:平移 \((50, 30)\)
测量点对

  • 原始点:\((10, 20)\)
  • 测量结果:\((60.1, 50.2)\)(存在噪声)

计算误差

  • 理论结果:\((60, 50)\)
  • 实际误差:\(\sqrt{(60.1-60)^2 + (50.2-50)^2} = \sqrt{0.01 + 0.04} = 0.224\)

这个误差值就是重投影误差的概念,在标定中我们通过最小化所有点的总误差来获得最优解。

3.5 学习要点总结

通过这些数据案例,我们可以理解:

  1. 齐次坐标的重要性:能够统一表示各种变换
  2. 矩阵运算的链式性质:复杂变换可以分解为简单变换的乘积
  3. 归一化操作:透视变换后需要除以最后一个分量
  4. 误差概念:实际测量与理论计算之间存在差异,标定的目标就是最小化这种差异

这些基础概念将帮助我们更好地理解后续的各种标定技术。

四、2D平面标定与单应性矩阵

4.1 核心概念

2D平面标定处理的是平面到平面的变换问题。想象一张倾斜拍摄的文档照片,我们想要将其校正为正视图,这就是典型的2D平面标定应用。

4.2 单应性矩阵(Homography Matrix)

定义:单应性矩阵 \(\mathbf{H}\) 是一个3×3矩阵,描述两个平面之间的透视变换关系。

数学表达式

\[\mathbf{x} \sim \mathbf{H} \cdot \mathbf{X} \]

其中:

  • \(\mathbf{X} = (X, Y, 1)^T\) 是世界平面上的齐次坐标
  • \(\mathbf{x} = (u, v, 1)^T\) 是图像平面上的齐次坐标
  • "\(\sim\)" 表示比例相等(齐次坐标的性质)

展开形式

\[\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} \sim \begin{bmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \end{bmatrix} \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} \]

非齐次坐标形式

\[u = \frac{h_{11}X + h_{12}Y + h_{13}}{h_{31}X + h_{32}Y + h_{33}}, \quad v = \frac{h_{21}X + h_{22}Y + h_{23}}{h_{31}X + h_{32}Y + h_{33}} \]

4.3 求解方法

求解条件

  • 至少需要4对不共线的对应点
  • 每对点提供2个独立方程
  • 单应性矩阵有8个自由度(尺度无关)

DLT算法步骤

  1. 构建线性方程组
    对于每对对应点 \((X_i, Y_i) \leftrightarrow (u_i, v_i)\)

    \[\begin{bmatrix} -X_i & -Y_i & -1 & 0 & 0 & 0 & u_iX_i & u_iY_i & u_i \\ 0 & 0 & 0 & -X_i & -Y_i & -1 & v_iX_i & v_iY_i & v_i \end{bmatrix} \mathbf{h} = 0 \]

  2. 奇异值分解(SVD)求解最小二乘解

  3. 归一化:将解向量归一化,使得 \(||\mathbf{h}|| = 1\)

4.4 物理意义与分解

单应性矩阵可以分解为相机内参和外参:

\[\mathbf{H} = \mathbf{K} \cdot [\mathbf{r}_1 \quad \mathbf{r}_2 \quad \mathbf{t}] \]

其中:

  • \(\mathbf{K} = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}\) 是相机内参矩阵
  • \(\mathbf{r}_1, \mathbf{r}_2\) 是旋转矩阵的前两列
  • \(\mathbf{t}\) 是平移向量

4.5 实际应用案例

场景:文档扫描校正

输入数据

世界坐标系(A4纸角点,单位:毫米):
(0, 0), (210, 0), (210, 297), (0, 297)

图像坐标系(像素坐标):
(120, 150), (380, 160), (390, 520), (110, 510)

求解过程详解

第一步:构建线性方程组

对于第一对对应点 (0, 0) ↔ (120, 150):

-u₁X₁ = -120×0 = 0     -v₁X₁ = -150×0 = 0     u₁ = 120
-u₁Y₁ = -120×0 = 0     -v₁Y₁ = -150×0 = 0     v₁ = 150
-X₁ = -0                -Y₁ = -0                1 = 1
u₁X₁ = 120×0 = 0       v₁X₁ = 150×0 = 0       u₁ = 120
u₁Y₁ = 120×0 = 0       v₁Y₁ = 150×0 = 0       v₁ = 150

第二步:构建完整系数矩阵

对于4个点,构建8×9的系数矩阵:

\[\mathbf{A} = \begin{bmatrix} 0 & 0 & -1 & 0 & 0 & 0 & 0 & 0 & 120 \\ 0 & 0 & 0 & 0 & 0 & -1 & 0 & 0 & 150 \\ -210 & 0 & -1 & 0 & 0 & 0 & 380×210 & 380×0 & 380 \\ 0 & -210 & -1 & 0 & 0 & 0 & 160×210 & 160×0 & 160 \\ -210 & -297 & -1 & 0 & 0 & 0 & 390×210 & 390×297 & 390 \\ 0 & -210 & -1 & 0 & 0 & 0 & 520×210 & 520×297 & 520 \\ 0 & 0 & -1 & 0 & 0 & 0 & 110×0 & 110×297 & 110 \\ 0 & -297 & -1 & 0 & 0 & 0 & 510×0 & 510×297 & 510 \end{bmatrix} \]

第三步:SVD分解求解

对矩阵 \(\mathbf{A}\) 进行奇异值分解:\(\mathbf{A} = \mathbf{U} \mathbf{\Sigma} \mathbf{V}^T\)

最小二乘解对应于 \(\mathbf{V}\) 的最后一列(最小奇异值对应的右奇异向量)。

第四步:获得单应性矩阵

通过SVD求解得到的向量(归一化后):

\[\mathbf{h} = [0.85, -0.02, 120.5, 0.03, 1.20, 148.2, 0.0001, 0.0002, 1.0]^T \]

第五步:构建单应性矩阵

\[\mathbf{H} = \begin{bmatrix} 0.85 & -0.02 & 120.5 \\ 0.03 & 1.20 & 148.2 \\ 0.0001 & 0.0002 & 1.0 \end{bmatrix} \]

验证求解结果

测试点:世界坐标 (105, 148.5)(A4纸中心)

使用单应性矩阵变换:

u = (0.85×105 + (-0.02)×148.5 + 120.5) / (0.0001×105 + 0.0002×148.5 + 1.0)
  = (89.25 - 2.97 + 120.5) / (0.0105 + 0.0297 + 1.0)
  = 206.78 / 1.0402 = 198.79

v = (0.03×105 + 1.20×148.5 + 148.2) / (0.0001×105 + 0.0002×148.5 + 1.0)
  = (3.15 + 178.2 + 148.2) / 1.0402
  = 329.55 / 1.0402 = 316.78

重投影误差检查

  • 理论图像坐标:(198.79, 316.78)
  • 实际检测坐标:(约200, 约320)
  • 误差:\(\sqrt{(200-198.79)^2 + (320-316.78)^2} = \sqrt{1.46 + 10.37} = 3.44\)像素

应用:图像校正

使用逆矩阵校正

  1. 计算 \(\mathbf{H}^{-1}\)
  2. 对于输出图像的每个像素 \((u', v')\),计算:

    \[(X, Y, 1)^T = \mathbf{H}^{-1} \cdot (u', v', 1)^T \]

  3. 从输入图像的 \((X, Y)\) 位置复制像素值

校正效果

  • 校正前:A4纸在图像中呈现梯形(近大远小的透视效果)
  • 校正后:A4纸呈现标准矩形,边框平行,便于后续处理

学习过渡:理解了2D平面标定的基本原理后,接下来学习9点标定。9点标定本质上是2D平面标定在工业自动化中的实用化版本,它通过使用更多点来提高精度,特别适合实际生产环境中的应用。

五、9点标定技术

5.1 核心概念

9点标定是工业自动化中实用的2D坐标系映射技术。与2D平面标定一样,它处理的是平面到平面的变换,但更注重实用性、精度和操作便利性。

5.2 为什么选择9个点?

理论最小需求

  • 仿射变换:至少3个不共线点(6个自由度)
  • 透视变换:至少4个不共线点(8个自由度)

实际选择9个点的原因

  1. 精度提升:更多点提供冗余信息,通过最小二乘法降低误差
  2. 噪声抵抗:单个点的检测误差对整体结果影响减小
  3. 全局覆盖:3×3网格分布覆盖整个工作区域
  4. 工业标准:便于操作和标准化

5.3 数学模型

透视变换模型

\[\begin{bmatrix} u_i \\ v_i \\ 1 \end{bmatrix} \sim \mathbf{H} \begin{bmatrix} X_i \\ Y_i \\ 1 \end{bmatrix} \]

展开形式

\[\begin{align} u_i &= \frac{h_{11}X_i + h_{12}Y_i + h_{13}}{h_{31}X_i + h_{32}Y_i + h_{33}} \\ v_i &= \frac{h_{21}X_i + h_{22}Y_i + h_{23}}{h_{31}X_i + h_{32}Y_i + h_{33}} \end{align} \]

线性化处理

交叉相乘得到线性方程:

\[\begin{align} u_i(h_{31}X_i + h_{32}Y_i + h_{33}) &= h_{11}X_i + h_{12}Y_i + h_{13} \\ v_i(h_{31}X_i + h_{32}Y_i + h_{33}) &= h_{21}X_i + h_{22}Y_i + h_{23} \end{align} \]

5.4 求解过程

数据采集

物理坐标系(3×3网格,单位:毫米):
(0,0), (50,0), (100,0)
(0,50), (50,50), (100,50)
(0,100), (50,100), (100,100)

图像坐标系(对应像素坐标):
(120, 130), (280, 125), (450, 135)
(115, 290), (275, 285), (440, 295)
(110, 460), (265, 455), (425, 470)

构建方程组

对于9个点,共18个方程:

\[\mathbf{A} \cdot \mathbf{h} = 0 \]

其中:

  • \(\mathbf{A}\) 是 18×9 的系数矩阵
  • \(\mathbf{h}\) 是包含9个单应性矩阵元素的向量

最小二乘求解

使用SVD分解求解:

\[\min_{\mathbf{h}} ||\mathbf{A} \cdot \mathbf{h}||^2 \quad \text{s.t.} \quad ||\mathbf{h}|| = 1 \]

5.5 精度评估

重投影误差

\[\text{误差} = \sqrt{(u_{pred} - u_{true})^2 + (v_{pred} - v_{true})^2} \]

工业标准

  • 高精度应用:≤ 0.5像素
  • 一般应用:≤ 1.0像素
  • 粗略应用:≤ 2.0像素

5.6 典型应用场景

机器人抓取系统

场景:传送带上的零件抓取
输入:相机检测到目标在图像坐标 (350, 200)
变换:通过9点标定矩阵转换
输出:机器人坐标系下的物理坐标 (175mm, 100mm)

视觉检测系统

场景:PCB板缺陷检测
输入:缺陷在图像中的像素位置
转换:映射到PCB板的物理坐标
输出:缺陷距离板边缘的具体距离(如:距左边缘15.2mm,距上边缘32.5mm)

学习过渡:掌握了2D平面标定和9点标定后,我们现在要挑战更复杂的问题:3D-2D标定,也就是相机标定。这里我们将处理真正的三维世界到二维图像的映射,需要理解相机的内部工作原理。

六、3D-2D标定(相机标定)

6.1 核心概念

相机标定是建立三维世界坐标到二维图像坐标映射关系的过程。它是计算机视觉中最基础的标定技术,决定了相机能否准确"看"到三维世界。

6.2 相机成像模型

针孔相机模型

  1. 世界坐标系 → 相机坐标系

    \[\mathbf{X}_c = \mathbf{R} \cdot \mathbf{X}_w + \mathbf{t} \]

  2. 相机坐标系 → 图像坐标系

    \[\mathbf{x} = \mathbf{K} \cdot \mathbf{X}_c \]

完整投影方程

\[\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} \sim \mathbf{K} \begin{bmatrix} \mathbf{R} & \mathbf{t} \end{bmatrix} \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} \]

6.3 相机内参矩阵

内参矩阵K包含相机的内部几何参数:

\[\mathbf{K} = \begin{bmatrix} f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} \]

参数说明:

  • \(f_x, f_y\):焦距(像素单位)
  • \(c_x, c_y\):主点坐标(图像中心)
  • \(s\):扭曲系数(现代相机中通常为0)

6.4 畸变模型

径向畸变

\[\begin{align} x_{corrected} &= x(1 + k_1r^2 + k_2r^4 + k_3r^6) \\ y_{corrected} &= y(1 + k_1r^2 + k_2r^4 + k_3r^6) \end{align} \]

切向畸变

\[\begin{align} x_{corrected} &= x + 2p_1xy + p_2(r^2 + 2x^2) \\ y_{corrected} &= y + p_1(r^2 + 2y^2) + 2p_2xy \end{align} \]

其中 \(r^2 = x^2 + y^2\)

6.5 OpenCV相机标定流程

输入数据

  • 3D世界点:标定板上特征点的真实坐标
  • 2D图像点:对应特征点在图像中的像素坐标
  • 多视图:通常需要10-20张不同角度的标定板图像

标定过程

  1. 特征点检测:使用cv::findChessboardCorners等算法
  2. 初始参数估计:DLT算法初步求解
  3. 非线性优化:最小化重投影误差
  4. 精度评估:计算重投影误差

重投影误差最小化

\[\min_{\mathbf{K}, \mathbf{dist}, \{\mathbf{R}_i, \mathbf{t}_i\}} \sum_{i=1}^{N} \sum_{j=1}^{M} ||\mathbf{x}_{ij} - \text{project}(\mathbf{X}_{ij}, \mathbf{K}, \mathbf{dist}, \mathbf{R}_i, \mathbf{t}_i)||^2 \]

6.6 实际应用案例

标定板规格

  • 棋盘格:8×6个角点
  • 方格尺寸:30mm × 30mm
  • 拍摄图像:15张不同角度

标定结果示例

// 相机内参矩阵
K = [1562.3,    0.0,  640.5]
    [   0.0, 1560.1,  512.3]
    [   0.0,    0.0,    1.0]

// 畸变系数
dist = [-0.12, 0.08, 0.001, -0.002, 0.0]

// 平均重投影误差
reprojection_error = 0.25 pixels

应用效果

  • 标定前:物体边缘存在明显畸变
  • 标定后:图像得到有效校正,物体边缘恢复直线

学习过渡:完成了相机标定后,我们面临最复杂的挑战:手眼标定。在实际的机器人视觉系统中,相机看到的坐标需要转换为机器人能够理解和执行的坐标。这涉及多个坐标系之间的复杂变换,是前面所有知识的综合应用。

七、手眼标定技术

7.1 核心概念

手眼标定是解决机器人坐标系与相机坐标系之间3D变换关系的技术。它是连接机器人"执行"与视觉"感知"的桥梁,也是四种标定技术中最为复杂的一种。

与前三种标定技术不同,手眼标定需要同时处理:

  • 3D空间中的机器人运动
  • 相机视角下的位姿测量
  • 两个坐标系之间的变换关系

7.2 两种安装模式

Eye-in-Hand(相机在手上)

配置:相机固定在机器人末端执行器上

求解目标:机器人末端坐标系到相机坐标系的变换 \(\mathbf{X}_{E \to C}\)

数学关系

\[\mathbf{T}_{E1 \to E2} \cdot \mathbf{X} = \mathbf{X} \cdot \mathbf{T}_{C1 \to C2} \]

物理意义

  • 机器人末端从位置1移动到位置2
  • 相机观察到同一目标在相机坐标系中的变化
  • 通过这两个变换求解固定的手眼变换 \(\mathbf{X}\)

Eye-to-Hand(相机在环境中)

配置:相机固定在环境中,观察机器人运动

求解目标:机器人基坐标系到相机坐标系的变换 \(\mathbf{X}_{B \to C}\)

数学关系

\[\mathbf{X} \cdot \mathbf{T}_{B \to E2} = \mathbf{T}_{C \to E2} \]

7.3 数学推导

旋转与平移分离

手眼标定方程可以分解为旋转和平移两部分:

旋转方程

\[\mathbf{R}_{E1 \to E2} \cdot \mathbf{R}_{X} = \mathbf{R}_{X} \cdot \mathbf{R}_{C1 \to C2} \]

平移方程

\[\mathbf{R}_{E1 \to E2} \cdot \mathbf{t}_X + \mathbf{t}_{E1 \to E2} = \mathbf{R}_{X} \cdot \mathbf{t}_{C1 \to C2} + \mathbf{t}_X \]

求解算法

  1. Tsai-Lenz算法:经典求解方法
  2. Park-Martin算法:基于李群理论
  3. 现代优化方法:Bundle Adjustment等

7.4 数据采集要求

运动多样性

  • 至少需要3个非冗余的机器人位姿
  • 运动应包含旋转和平移
  • 避免纯旋转或纯平移运动

数据类型

  1. 机器人位姿数据

    • 机器人末端在基坐标系下的位姿
    • 来源:机器人控制器
    • 格式:旋转矩阵 + 平移向量
  2. 相机测量数据

    • 标定板在相机坐标系下的位姿
    • 来源:PnP算法求解
    • 格式:旋转矩阵 + 平移向量

7.5 实际应用案例

应用场景:视觉引导抓取

系统配置:

  • 机器人:6轴工业机械臂
  • 相机:Eye-in-Hand配置,安装在末端
  • 标定板:固定在工作台上的8×8棋盘格

标定过程:

  1. 机器人移动到5个不同位姿
  2. 每个位姿拍摄标定板图像
  3. 使用PnP求解标定板位姿
  4. 求解手眼变换矩阵

标定结果:
X = [ 0.999 -0.012 0.041 15.23]
[ 0.015 0.998 -0.062 8.91]
[-0.039 0.064 0.997 120.45]
[ 0.000 0.000 0.000 1.000]

应用效果:

  • 目标在相机坐标系:(200, 150, 300)mm
  • 转换到机器人基坐标系:(215.23, 158.91, 420.45)mm
  • 抓取精度:±1.5mm
输入:缺陷在图像中的像素位置
转换:映射到PCB板的物理坐标
输出:缺陷距离板边缘的具体距离(如:距左边缘15.2mm,距上边缘32.5mm)

六、手眼标定技术

6.1 核心概念

手眼标定是解决机器人坐标系与相机坐标系之间3D变换关系的技术。它是连接机器人"执行"与视觉"感知"的桥梁。

6.2 两种安装模式

Eye-in-Hand(相机在手上)

配置:相机固定在机器人末端执行器上
求解目标:机器人末端坐标系到相机坐标系的变换 \(\mathbf{X}_{E \to C}\)

数学关系

\[\mathbf{T}_{E1 \to E2} \cdot \mathbf{X} = \mathbf{X} \cdot \mathbf{T}_{C1 \to C2} \]

物理意义

  • 机器人末端从位置1移动到位置2
  • 相机观察到同一目标在相机坐标系中的变化
  • 通过这两个变换求解固定的手眼变换 \(\mathbf{X}\)

Eye-to-Hand(相机在环境中)

配置:相机固定在环境中,观察机器人运动
求解目标:机器人基坐标系到相机坐标系的变换 \(\mathbf{X}_{B \to C}\)

数学关系

\[\mathbf{X} \cdot \mathbf{T}_{B \to E2} = \mathbf{T}_{C \to E2} \]

6.3 数学推导

旋转与平移分离

手眼标定方程可以分解为旋转和平移两部分:

旋转方程

\[\mathbf{R}_{E1 \to E2} \cdot \mathbf{R}_{X} = \mathbf{R}_{X} \cdot \mathbf{R}_{C1 \to C2} \]

平移方程

\[\mathbf{R}_{E1 \to E2} \cdot \mathbf{t}_X + \mathbf{t}_{E1 \to E2} = \mathbf{R}_{X} \cdot \mathbf{t}_{C1 \to C2} + \mathbf{t}_X \]

求解算法

  1. Tsai-Lenz算法:经典求解方法
  2. Park-Martin算法:基于李群理论
  3. 现代优化方法:Bundle Adjustment等

6.4 数据采集要求

运动多样性

  • 至少需要3个非冗余的机器人位姿
  • 运动应包含旋转和平移
  • 避免纯旋转或纯平移运动

数据类型

  1. 机器人位姿数据

    • 机器人末端在基坐标系下的位姿
    • 来源:机器人控制器
    • 格式:旋转矩阵 + 平移向量
  2. 相机测量数据

    • 标定板在相机坐标系下的位姿
    • 来源:PnP算法求解
    • 格式:旋转矩阵 + 平移向量

6.5 实际应用案例

应用场景:视觉引导抓取

系统配置:

  • 机器人:6轴工业机械臂
  • 相机:Eye-in-Hand配置,安装在末端
  • 标定板:固定在工作台上的8×8棋盘格

标定过程:

  1. 机器人移动到5个不同位姿
  2. 每个位姿拍摄标定板图像
  3. 使用PnP求解标定板位姿
  4. 求解手眼变换矩阵

标定结果:

\[X = \begin{bmatrix} 0.999 & -0.012 & 0.041 & 15.23 \\ 0.015 & 0.998 & -0.062 & 8.91 \\ -0.039 & 0.064 & 0.997 & 120.45 \\ 0.000 & 0.000 & 0.000 & 1.000 \\ \end{bmatrix} \]

应用效果:

  • 目标在相机坐标系:(200, 150, 300)mm
  • 转换到机器人基坐标系:(215.23, 158.91, 420.45)mm
  • 抓取精度:±1.5mm

七、四种标定技术对比分析

7.1 综合对比表格

特性维度 2D平面标定 9点标定 2D-3D标定 手眼标定
变换维度 2D→2D 2D→2D 2D→3D 3D→3D
核心输出 单应性矩阵H 变换矩阵H 相机内参K,畸变系数 手眼变换矩阵X
最小点数 4对 4对(实用9对) 6-8个点,多视图 3个以上位姿
输入数据 2D世界点+2D图像点 2D基准点+2D图像点 3D世界点+2D图像点 机器人位姿+相机位姿
求解复杂度 中等
应用场景 图像校正、平面测量 工业坐标转换 相机建模、3D重建 机器人视觉引导
精度要求 1-2像素 0.5-1像素 0.5-1像素 1-2mm

7.2 共同点分析

  1. 坐标变换本质:所有技术都涉及不同坐标系之间的变换关系
  2. 对应点需求:都需要已知对应关系的点对作为输入
  3. 优化求解:都使用最小二乘法或类似优化算法
  4. 精度评估:都通过重投影误差或类似指标评估精度

7.3 核心区别

维度复杂度递增

2D平面标定(最简单)→ 9点标定 → 2D-3D标定 → 手眼标定(最复杂)

应用场景差异

  • 学术研究:2D-3D标定(相机标定)是基础
  • 工业应用:9点标定最实用,手眼标定针对机器人

技术依赖关系

手眼标定通常需要:
1. 预先完成相机标定(2D-3D标定)
2. 获得准确的相机位姿测量

八、实际应用案例

8.1 完整的工业视觉系统

系统背景:电子产品装配线的自动检测系统

系统组成

  • 传送带系统
  • 工业相机(固定安装)
  • 6轴机器人(带末端夹具)
  • 视觉处理系统

标定流程

第一步:相机内参标定(2D-3D标定)

目的:获得相机的成像参数
方法:使用棋盘格标定板,多角度拍摄
工具:OpenCV calibrateCamera函数
结果:内参矩阵K,畸变系数

第二步:工作平面标定(9点标定)

目的:建立图像坐标与传送带物理坐标的映射
方法:在传送带上放置9个标记点
输入:标记点物理坐标 + 图像坐标
输出:2D变换矩阵

第三步:手眼标定

目的:建立机器人基坐标系与相机坐标系的变换
方法:Eye-to-Hand配置,机器人末端移动标定板
输入:机器人位姿 + 相机测量的标定板位姿
输出:手眼变换矩阵X

应用流程

1. 产品检测

输入:产品图像
处理:使用相机内参校正畸变
检测:识别缺陷位置(像素坐标)
转换:通过9点标定矩阵映射到传送带坐标
输出:缺陷在传送带上的物理位置

2. 缺陷处理

输入:缺陷物理位置
规划:机器人抓取路径
执行:手眼变换确保机器人准确到达目标位置
验证:二次拍照确认缺陷已处理
posted @ 2025-10-24 16:02  一楼二栋  阅读(8)  评论(0)    收藏  举报