认知机器人:相机校准

本文章收录在黑鲸智能系统知识库-黑鲸智能系统知识库成立于2021年,致力于建立一个完整的智能系统知识库体系。我们的工作:收集和整理世界范围内的学习资源,系统地建立一个内容全面、结构合理的知识库。

作者博客:途中的树

在机器人的感知系统中,有时我们需要摄像机来构建三维世界的投影图像,这篇文章来聊一聊

摄像机模型

  • 描述了一个三维世界点在摄像机图像中的投影。
  • 假设
    • 有一个无限小的小孔的盒子
  • 摄像机中心是射线的交汇点(针孔)。
  • 后墙是图像平面image plane
  • 摄像机中心和图像平面之间的距离是摄像机常数Camera constant

欧几里德几何学中描述这种变换是比较困难的,不过在射影几何中就简单许多,射影几何的变换可以在齐次坐标系下表示

  • 射影几何 Projective geometry是几何变换的一个可替代方法
  • 齐次坐标系homogenous coordinates 在机器人学中广泛应用
  • 优势:在射影几何中仿射变换和投影变换可以用一个矩阵的乘法来传达

相机校准

  • 相机可以将三维世界的点投射到二维图像平面上
  • 校准的影响因素
    • 图片中心
    • 焦距
    • 镜头畸变参数
  • 为什么需要校准
    • 便宜的镜头,相机的制作过程中都会产生误差
    • 精确的校准是非常必要的
      • 图像3D信息解释
      • 重建地图模型
      • 机器人与环境的互动(手眼协调)

Pinhole相机的三个假设

  1. 来自物体的所有射线相交于一个点
  2. 所有图像点都被投射在一个平面上
  3. 从物体点到图像的射线点是一条直线
  • 当然这些假设往往不成立,导致图像不完美

镜头和针孔的区别

  • 镜头只是针孔相机模型的一个近似值
  • 物体上和图像中的相应点,以及镜头的中心通常不在一条线上
  • 光束通过透镜中心的距离越远,误差就越大

坐标系框架

  • 环境坐标系 World coordinate frame S o S_o So
    • 表示为 [ X , Y , Z ] T [X,Y,Z]^T [X,Y,Z]T
  • 相机坐标系 Camera coordinate frame S k S_k Sk
    • 表示为 [ k X , k Y , k Z ] T [^kX,^kY,^kZ]^T [kX,kY,kZ]T
  • 图像坐标系 image coordinate frame S c S_c Sc
    • 表示为 [ c x , c y ] T [^cx,^cy]^T [cx,cy]T
  • 传感器坐标系 Sensor coordinate S s S_s Ss
    • 表示为 [ s x , s y ] T [^sx,^sy]^T [sx,sy]T

坐标系转换 Transformation

  • 我们想要从传感器坐标系转换到环境坐标系

  • 其中环境坐标系 S o S_o So 到相机坐标系 S k S_k Sk属于外在转换
    • 外在参数描述摄像机在环境中的姿态
  • 其他的转换属于内在转换
    • 内在参数描述了相机前的场景与最终图像(传感器)中的像素的映射关系

假设一个点 P \mathcal{P} P

外在参数

  • 摄像机相对于世界的姿态
  • 可逆变换 Invertible transformation
  • How many parameters are needed?
    • 6个:3个位置参数+3个方向参数
  • 在环境坐标系中点 P \mathcal{P} P的坐标为 X P = [ X P , Y P , Z P ] T \mathrm{X}_P=[X_P,Y_P,Z_P]^T XP=[XP,YP,ZP]T
  • 在相机坐标系中圆点的坐标(在环境坐标系中的坐标)为 X O = [ X O , Y O , Z O ] T \mathrm{X}_O=[X_O,Y_O,Z_O]^T XO=[XO,YO,ZO]T
  • 在下文中,我们将看到为什么与欧几里得坐标相比,H.C.是描述变换的更好选择

环境坐标系转换到相机坐标系 S o → S k S_o \rightarrow S_k SoSk

直觉上讲,知道了环境坐标系中的坐标,也知道的相机坐标系的坐标,想将点坐标从环境坐标系转换到相机坐标系,可以先做一个平移和旋转 k X P = R ( X P − X O ) ^kX_P=R(X_P-X_O) kXP=R(XPXO),当然这是在欧式坐标系中的表示

如果放到H.C.齐次坐标系中,则为

  • [ k X p 1 ] = [ R 0 0 T 1 ] [ I 3 − X O 0 T 1 ] [ X P 1 ] = [ R − R X O 0 T 1 ] [ X P 1 ] \begin{bmatrix} ^kX_p \\ 1 \end{bmatrix} = \begin{bmatrix} R & 0 \\ 0^\mathrm{T} & 1 \end{bmatrix}\begin{bmatrix} I_3 & -X_O \\ 0^\mathrm{T} & 1 \end{bmatrix}\begin{bmatrix} X_{P} \\ 1 \end{bmatrix}= \begin{bmatrix} R & -RX_O \\ 0^\mathrm{T} & 1 \end{bmatrix}\begin{bmatrix} X_P \\ 1 \end{bmatrix} [kXp1]=[R0T01][I30TXO1][XP1]=[R0TRXO1][XP1]
  • 或者写为 k X P = k H X P ^k\mathrm{X}_P=^k\mathrm{HX}_P kXP=kHXP k H = [ R − R X O 0 T 1 ] ^k\mathrm{H}= \begin{bmatrix} R & -RX_O \\ 0^\mathrm{T} & 1 \end{bmatrix}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值