相机标定(一)-原理及内参、外参

相机标定(一)-原理及内参、外参在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。…

大家好,又见面了,我是你们的朋友全栈君。

>>>文章索引<<<

相机标定(一)-原理及内参、外参
相机标定(二)-畸变校正,张正友标定法
相机标定(三)-相机成像模型


在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。

1 坐标系基础

理解四个坐标系是进行相机标定的基础,它们是:

  • 图像像素坐标系
  • 图像物理坐标系
  • 相机坐标系
  • 世界坐标系

1.1 图像像素坐标系、图像物理坐标系

在这里插入图片描述

  • 图像像素坐标系:是一个二维直角坐标系,反映了相机CCD芯片中像素的排列情况。其原点 O O O位于图像的左上角, u u u v v v坐标轴分别余图像的两条边重合。像素坐标为离散值(0,1,2,…),以像素(pixel)为单位。
  • 图像物理坐标系:为了将图像与物理空间相关联,需要将图像转换到物理坐标系下。原点 O O O位于图像中心(理想状态下),是相机光轴与像平面的交点(称为主点)。 X X X Y Y Y坐标轴分别与 u u u v v v轴平行。两坐标系实为平移关系,平移量为 ( u 0 , v 0 ) (u_0,v_0) (u0,v0)

假设相机感光器件中单个像素的物理尺寸为 d X × d Y dX \times dY dX×dY,有:

{ u = x d X + u 0 v = y d Y + v 0 (1) \begin{cases} u=\frac{x}{dX}+u_0 \\ v=\frac{y}{dY}+v_0 \end{cases} \tag{1} {
u=dXx+u0v=dYy+v0
(1)

把上式写成齐次形式,有:

[ u v 1 ] = [ 1 d X 0 u 0 0 1 d Y v 0 0 0 1 ] [ x y 1 ] (2) \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} \frac{1}{dX} & 0 & u_0 \\ 0 & \frac{1}{dY} & v_0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} \tag{2} uv1=dX1000dY10u0v01xy1(2)

公式(2)完成了图像物理坐标系图像像素坐标系的转换。

1.2 相机坐标系

相机坐标系(camera coordinate) ( X c , Y c , Z c ) (X_c,Y_c,Z_c) (Xc,Yc,Zc),也是一个三维直角坐标系,原点位于镜头光心处, X c X_c Xc Y c Y_c Yc轴分别与像面的两边平行,z轴为镜头光轴,与像平面垂直。

在这里插入图片描述

P ( X c , Y c , Z c ) P(X_c,Y_c,Zc) P(Xc,Yc,Zc)为空间中任意一点,其通过投影中心的光线投影到图像平面上,在图像物理空间的投影点为 p ( x , y ) p(x,y) p(x,y),扩展到相机坐标系下其坐标为 ( x , y , f ) (x,y,f) (x,y,f)。根据相似三角形原理,有:

Z c f = X c x = Y c y ⇒ { x = f X c Z c y = f Y c Z c (3) \frac{Z_c}{f}=\frac{X_c}{x}=\frac{Y_c}{y} \Rightarrow \begin{cases} x=f\frac{X_c}{Z_c} \\ y=f\frac{Y_c}{Z_c} \end{cases} \tag{3} fZc=xXc=yYc{
x=fZcXcy=fZcYc
(3)

转为齐次形式为:

Z c [ x y 1 ] = [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X c Y c Z c 1 ] (4) Z_c \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}= \begin{bmatrix} f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} X_c \\ Y_c \\ Z_c \\ 1 \end{bmatrix} \tag{4} Zcxy1=f000f0001000XcYcZc1(4)

公式(4)完成了相机坐标系图像物理坐标系的转换。

1.3 世界坐标系

世界坐标系(world coordinate) ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw,Yw,Zw),也称为测量坐标系、参考坐标系,是一个三维直角坐标系,以其为基准可以描述相机和待测物体的空间位置。世界坐标系的位置可以根据实际情况自由确定。

在这里插入图片描述

世界坐标系到相机坐标系的变换,实际上就是一个刚体变换,可以由旋转矩阵 R R R和平移矢量 t t t来表示。设 ( X w , Y w , Z w ) T (X_w,Y_w,Z_w)^T (Xw,Yw,Zw)T表示世界坐标系中的点, ( X c , Y c , Z c ) T (X_c,Y_c,Z_c)^T (Xc,Yc,Zc)T表示相机坐标系中的点,则它们之间的转换可由下式表示:

[ X c Y c Z c ] = R [ X w Y w Z w ] + t (5) \begin{bmatrix} X_c \\ Y_c \\ Z_c \end{bmatrix}= R \begin{bmatrix} X_w \\ Y_w \\ Z_w \end{bmatrix} +t \tag{5} XcYcZc=RXwYwZw+t(5)

即:

[ X c Y c Z c 1 ] = [ R 3 × 3 t 3 × 1 0 1 × 3 1 1 × 1 ] [ X w Y w Z w 1 ] (6) \begin{bmatrix} X_c \\ Y_c \\ Z_c \\ 1 \end{bmatrix}= \begin{bmatrix} R_{3\times3} & t_{3\times1}\\ 0_{1\times3} & 1_{1\times1} \end{bmatrix} \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} \tag{6} XcYcZc1=[R3×301×3t3×111×1]XwYwZw1(6)

公式(6)完成了世界坐标系相机坐标系的转换。

1.4 世界坐标系到像素坐标系

联立上面的(2)、(4)、(6)式,可以得到世界坐标系与像素坐标系之间的转换关系,有:

Z c [ u v 1 ] = [ 1 d X 0 u 0 0 1 d Y v 0 0 0 1 ] [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ R t 0 T 1 ] [ X w Y w Z w 1 ] = M 1 M 2 [ X w Y w Z w 1 ] = M [ X w Y w Z w 1 ] (7) \begin{aligned} Z_c \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} &= \begin{bmatrix} \frac{1}{dX} & 0 & u_0 \\ 0 & \frac{1}{dY} & v_0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} R & t\\ 0^T & 1 \end{bmatrix} \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} \\ &=M_1M_2 \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} \\ &=M \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} \end{aligned} \tag{7} Zcuv1=dX1000dY10u0v01f000f0001000[R0Tt1]XwYwZw1=M1M2XwYwZw1=MXwYwZw1(7)

M 1 = [ 1 d X 0 u 0 0 1 d Y v 0 0 0 1 ] [ f 0 0 0 0 f 0 0 0 0 1 0 ] = [ f x 0 u 0 0 0 f y v 0 0 0 0 1 0 ] (8) M_1= \begin{bmatrix} \frac{1}{dX} & 0 & u_0 \\ 0 & \frac{1}{dY} & v_0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0 \end{bmatrix}= \begin{bmatrix} f_x & 0 & u_0 & 0 \\ 0 & f_y & v_0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \tag{8} M1=dX1000dY10u0v01f000f0001000=fx000fy0u0v01000(8)

M 2 = [ R t 0 T 1 ] (9) M_2= \begin{bmatrix} R & t\\ 0^T & 1 \end{bmatrix} \tag{9} M2=[R0Tt1](9)

其中:

  • M 1 M_1 M1称为相机的内部参数矩阵
  • M 2 M_2 M2称为相机的外部参数矩阵
  • M M M称为投影矩阵
  • f x f_x fx f y f_y fy分别为相机在x、y轴方向上的归一化焦距,单位为像素,具体解释可以参考这里
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140391.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • kfold交叉验证_SPSS交叉验证法

    kfold交叉验证_SPSS交叉验证法一、前言在机器学习建模过程中,通行的做法是将数据分为训练集和测试集。测试集是与训练独立的数据,完全不参与训练,用于最终模型的评估。在训练过程中,经常会出现过拟合的问题,就是模型可以很好的匹配训练数据,却不能很好在预测训练集外的数据。如果此时就使用测试数据来调整模型参数,就相当于在训练时已知部分测试数据的信息,会影响最终评估结果的准确性。通常的做法是在训练数据再中分出一部分做为验证(Validation)数据,用来评估模型的训练效果。验证数据取自训练数据,但不参与训练,这样可以相对客观的评估模型对于训

    2026年1月31日
    3
  • 全面解析傅立叶变换(非常详细)

    全面解析傅立叶变换(非常详细)前言第一部分、DFT第一章、傅立叶变换的由来第二章、实数形式离散傅立叶变换(RealDFT)从头到尾彻底理解傅里叶变换算法、下第三章、复数第四章、复数形式离散傅立叶变换前言:“关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让人很

    2022年10月21日
    6
  • 什么是yuv420(苹果6sp升级13怎么样)

    在YUV420中,一个像素点对应一个Y,一个2X2的小方块对应一个U和V。对于所有YUV420图像,它们的Y值排列是完全相同的,只有Y的图像就是灰度图像。YUV420sp与YUV420p的数据格式区别在于UV排列上的完全不同。420p它是先把U存放完后,再存放V,如下图。而420sp它是UV、UV这样交替存放的。有了上面的理论,我就可以准确的计算出一个YUV420在内存中存放的大小。

    2022年4月10日
    39
  • Asp中session使用方法详解[通俗易懂]

    Asp中session使用方法详解[通俗易懂]Session对象可以使用Session对象存储特定用户会话所需的信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将终止该会话。Sessio

    2022年7月15日
    23
  • Deepfakes中文版,汉化版下载,各换脸软件下载(都已整理好)

    Deepfakes目前用于深度换脸的程序基本都是用python编程语言基于tensorflow进行计算。以下列出几款常用的换脸程序优缺点浅析,用户可以根据自己的爱好和水平来选择,以下软件均需要先安装windows版本的VS2015,CUDA9.0和CuDNN7.0.5(fakeapp教程,deepfakes视频deepfakes中文站(deepfakes.com.cn))下面几个程序的对比和官网下载地址,上deepfakes中文站(deepfakes.com.cn)获得百度云地址。1.Open

    2022年4月3日
    1.2K
  • 如何完全删除sql2012_如何完全删除mysql

    如何完全删除sql2012_如何完全删除mysql更新文章:由于楼主是在2017年写的内容,当时理解问题不深,可能就是稀里糊涂地解决掉了这个问题,把一些没有与SQL相关的东西都删除了,但那时并不影响到其他程序的运行状况。现如今更新下文章,为避免误导大家进行误删一些东西而存在其他问题的隐患。—感谢一位小伙伴的提醒。—更改时间:2019年3月19日工作忙,没能及时回复大家,请谅解!!卸载方法多种,但是通常会有卸载数据库不干净的情况。虽…

    2022年10月2日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号