本文成立于2021年,致力于建立一个完整的智能系统知识库系统。我们的工作:收集和整理世界各地的学习资源,系统地建立一个内容全面、结构合理的知识库。
作者博客:路上的树
在机器人的感知系统中,有时我们需要摄像机来构建三维世界的投影图像。本文将讨论它
摄像机模型
- 描述了摄像机图像中三维世界点的投影。
- 假设
- 盒子限小孔的盒子
- 相机中心是射线的交汇点(针孔)。
- 后墙是图像平面image plane
- 摄像机中心与图像平面之间的距离是摄像机常数Camera constant
在欧几里德几何中很难描述这种变化,但在射影几何中要简单得多。在齐次坐标系下可以表示射影几何的变化
- 射影几何 Projective geometry可替代的几何变换方法
- 齐次坐标系homogenous coordinates 广泛应用于机器人学中
- 优点:仿射转换和投影转换可以通过矩阵的乘法传达
相机校准
- 相机可以将三维世界的点投射到二维图像平面上
- 校准的影响因素
- 图片中心
- 焦距
- 镜头变形参数
- 为什么需要校准?
- 便宜的镜头在制作相机时会产生误差
- 精确的校准是非常必要的
- 图像3D信息解释
- 重建地图模型
- 机器人与环境的互动(手眼协调)
Pinhole相机的三个假设
- 物体的所有射线相交于一个点
- 所有图像点都投射在平面上
- 从物体到图像的射线点是一条直线
- 当然,这些假设往往不成立,导致图像不完美
镜头和针孔的区别
- 镜头只是针孔相机模型的近似值
- 对象和图像中的对应点以及镜头的中心通常不在一条线上
- 光束通过透镜中心的距离越远,误差就越大
坐标系框架
- 环境坐标系 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属于外在转换
- 外在参数描述摄像机在环境中的姿态
- 其他的转换属于内在转换
- 内在参数描述了相机前的场景与最终图像(传感器)中的像素的映射关系
外在参数
- 摄像机相对于世界的姿态
- 可逆变换 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 So→Sk
直觉上讲,知道了环境坐标系中的坐标,也知道的相机坐标系的坐标,想将点坐标从环境坐标系转换到相机坐标系,可以先做一个平移和旋转 k X P = R ( X P − X O ) ^kX_P=R(X_P-X_O) kXP=R(XP−XO),当然这是在欧式坐标系中的表示
如果放到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][I30T−XO1][XP1]=[R0T−RXO1][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} kH=[R0T−RXO1]
内在参数
- 将点从相机框架投射到传感器框架的过程
- 可逆变换
- 图像平面到传感器框架
- 模型偏差
- 不能直接倒置:投影
- 理想状态下的投影可以分为三步
- 将透视投影投射到图像平面上
- 转换到传感器坐标系框架(像素)
- 前面两个映射步骤是理想化的,需要进行校正,或者说补偿compensation
相机坐标系到图像坐标系
- 在图像坐标系统中:
- 我们定义一个相机常数 c c c 用来表示投影中心(小孔位置) O O O到图像平面中心 H \mathcal{H} H的距离
- 该值是作为相机校准的一部分计算出来的
- c < 0 c<0 c<0情况如下图
如果上图的透视投影是没误差的,根据截断定理几何关系我们可以得到点 P \mathcal{P} P (3D)在图像平面上的投影点 P ‾ \overline{\mathcal{P}} P(3D)的坐标 [ c x P ‾ , c y P ‾ ] [^cx_{\overline{\mathcal{P}}},^cy_{\overline{\mathcal{P}}}] [cxP,cyP],
c x P ‾ : = k X P ‾ = c k X P k Z P ^cx_{\overline{\mathcal{P}}}:=^kX_{\overline{\mathcal{P}}}=c\frac{^kX_{\mathcal{P}}}{^kZ_{\mathcal{P}}} cxP:=kXP=ckZP 标签: zp12r传感器