相机的成像结果可以抽象为一个小孔和一个平面,用小孔成像模型描述。

三维世界的光线经过小孔即光心到达成像平面,形成二维投影。以相机的光心O为原点,XcX_cXc​ 、YcY_cYc​ 、ZcZ_cZc​ 为坐标轴组成相机坐标系;以成像平面的中心 O′O'O′为原点,x′x'x′ 、y′y'y′ 为坐标轴组成图像坐标系。成像过程即为相机坐标系下的三维点变换为图像坐标系下的二维点的过程。

假设P为三维空间中一点。在相机坐标系下,其坐标为 P=[X,Y,Z]TP = [ X,Y,Z]^TP=[X,Y,Z]T;在图像坐标系下为点 ppp,其坐标为p=[x,y]Tp = [x,y]^Tp=[x,y]T。

连接O 、O 与光轴重合,且与成像平面垂直,则p在相机坐标系下p=[x,y,z]Tp = [x,y,z]^Tp=[x,y,z]T,其中 z=fz = fz=f,fff表示相机的焦距。仅考虑水平和光轴方向,模型抽象为一组相似三角形。

由几何关系:
Zf=Xx=Yy\frac{Z}{f} = \frac{X}{x} = \frac{Y}{y} fZ​=xX​=yY​
整理得:
x=f⋅XZy=f⋅YZz=f(1)x = f \cdot \frac{X}{Z}\\ y = f \cdot \frac{Y}{Z}\\ z = f \\ \tag1 x=f⋅ZX​y=f⋅ZY​z=f(1)
扩展坐标的维度,将ZZZ线性化:
[x^y^z^]=[f0000f000010][XYZ1]\left[ \begin{matrix} \hat{x} \\ \hat{y} \\ \hat{z} \end{matrix} \right] = \left[ \begin{matrix} f&0&0&0 \\ 0&f&0&0 \\ 0&0&1&0 \end{matrix} \right] \left[ \begin{matrix} X \\ Y \\ Z \\ 1 \end{matrix} \right] ⎣⎡​x^y^​z^​⎦⎤​=⎣⎡​f00​0f0​001​000​⎦⎤​⎣⎢⎢⎡​XYZ1​⎦⎥⎥⎤​
则坐标(x^,y^,z^)(\hat{x} ,\hat{y} ,\hat{z})(x^,y^​,z^) 就是 p=(x,y)p = (x,y)p=(x,y)的齐次坐标。

相机的像素信息的计算机中占据一段连续的磁盘或内存空间,为了从存储信息的首地址开始读写,以成像平面的左上角为原点,水平向右作为uuu轴正向,竖直向下作为vvv轴正向,建立像素坐标系,其基本单位为像素。
两个坐标系的对应关系如下:

由此可知,图像坐标系和像素坐标系虽然在同一平面,但是相差了一个缩放和一个原点的平移。由于像素块是一个矩形,设其水平长度为α\alphaα,竖直长度为β\betaβ。将图像坐标系下的点(x,y)(x,y)(x,y)在水平方向上缩放 α\alphaα倍、平移cxc_{x}cx​,竖直方向上缩放β\betaβ倍、平移cyc_{y}cy​,得到像素坐标系下坐标(u,v)(u,v)(u,v)
u=α⋅x+cxv=β⋅y+cyu = \alpha \cdot x + c_{x} \\ v = \beta \cdot y + c_{y} u=α⋅x+cx​v=β⋅y+cy​
式(1)带入:
fx=α⋅ffy=β⋅ff_{x} = \alpha \cdot f \\ f_{y} = \beta \cdot f fx​=α⋅ffy​=β⋅f
写成齐次坐标的形式:
[uv1]=1Z[fx0cx0fycy001]\left[ \begin{matrix} u \\ v \\ 1 \end{matrix} \right] = \frac{1}{Z} \left[ \begin{matrix} f_{x}&0&c_{x} \\ 0&f_{y}&c_{y} \\ 0&0&1 \end{matrix} \right] ⎣⎡​uv1​⎦⎤​=Z1​⎣⎡​fx​00​0fy​0​cx​cy​1​⎦⎤​
得相机得内参数矩阵:
K=[fx0cx0fycy001]K = \left[ \begin{matrix} f_{x}&0&c_{x} \\ 0&f_{y}&c_{y} \\ 0&0&1 \end{matrix} \right] K=⎣⎡​fx​00​0fy​0​cx​cy​1​⎦⎤​
其中KKK称为相机的内参数矩阵,有四个未知数,这与相机的构造有关。根据以上推导可知,fxf_{x}fx​ 、fyf_{y}fy​ 与相机的焦距、像素的长宽有关; cxc_xcx​、cyc_ycy​ 与相机的成像平面大小有关。
综上所述,相机的成像过程为:
p=K⋅Pp = K \cdot Pp=K⋅P
当相机移动时,相机坐标系的原点和坐标轴的方向也会随之变化,所以需要将其变换到系统的绝对坐标系下,即世界坐标系。

相机的运动可以用一个旋转和一个平移描述。设某一点在相机坐标系下坐标为PcP_cPc​,在世界坐标系下坐标为 PwP_wPw​,旋转矩阵为RRR,平移向量为ttt,则其转换关系为:Pc=R⋅Pw+tP_c = R \cdot P_w +tPc​=R⋅Pw​+t
写成齐次坐标形式为
[XcYcZc1]=[R11R12R13t1R21R22R23t2R31R32R33t30001][XwYwZw1]\left[ \begin{matrix} X_c \\ Y_c \\ Z_c \\ 1 \end{matrix} \right] = \left[ \begin{matrix} R_{11} & R_{12} &R_{13}&t_1 \\ R_{21}&R_{22}&R_{23}&t_2 \\ R_{31}&R_{32}&R_{33}&t_3 \\ 0&0&0&1 \end{matrix} \right] \left[ \begin{matrix} X_w \\ Y_w \\ Z_w \\ 1 \end{matrix} \right] ⎣⎢⎢⎡​Xc​Yc​Zc​1​⎦⎥⎥⎤​=⎣⎢⎢⎡​R11​R21​R31​0​R12​R22​R32​0​R13​R23​R33​0​t1​t2​t3​1​⎦⎥⎥⎤​⎣⎢⎢⎡​Xw​Yw​Zw​1​⎦⎥⎥⎤​

[XcYcZc1]=[Rt01][XwYwZw1]\left[ \begin{matrix} X_c \\ Y_c \\ Z_c \\ 1 \end{matrix} \right] = \left[ \begin{matrix} R & t \\ 0&1 \end{matrix} \right] \left[ \begin{matrix} X_w \\ Y_w \\ Z_w \\ 1 \end{matrix} \right] ⎣⎢⎢⎡​Xc​Yc​Zc​1​⎦⎥⎥⎤​=[R0​t1​]⎣⎢⎢⎡​Xw​Yw​Zw​1​⎦⎥⎥⎤​
得到相机的外参数矩阵
T=[Rt01]T = \left[ \begin{matrix} R & t \\ 0&1 \end{matrix} \right] T=[R0​t1​]
综上所述,就得到了一个相机的矩阵:
[uv1]=[1dx0cx01dycy001][f0000f000010][Rt01][XwYwZw1]\left[ \begin{matrix} u \\ v \\ 1 \end{matrix} \right] = \left[ \begin{matrix} \frac{1}{dx} & 0 & c_x \\ 0& \frac{1}{dy} & c_y \\ 0 & 0 &1 \end{matrix} \right] \left[ \begin{matrix} f&0&0&0 \\ 0&f&0&0 \\ 0&0&1&0 \end{matrix} \right] \left[ \begin{matrix} R & t \\ 0&1 \end{matrix} \right] \left[ \begin{matrix} X_w \\ Y_w \\ Z_w \\ 1 \end{matrix} \right] ⎣⎡​uv1​⎦⎤​=⎣⎡​dx1​00​0dy1​0​cx​cy​1​⎦⎤​⎣⎡​f00​0f0​001​000​⎦⎤​[R0​t1​]⎣⎢⎢⎡​Xw​Yw​Zw​1​⎦⎥⎥⎤​
其中:

  • (u,v,1)(u,v,1)(u,v,1)表示像素坐标系下点的齐次坐标形式;
  • dx,dydx,dydx,dy表示相机像素的长和宽,承前,α=1dx,β=1dy\alpha = \frac{1}{dx},\beta = \frac{1}{dy}α=dx1​,β=dy1​;
  • cx,cyc_x , c_ycx​,cy​表示图像坐标系原点和像素坐标系原点的偏移值;
  • fff表示相机的焦距;
  • RRR表示相机的旋转矩阵
  • ttt表示相机的平移矩阵
  • (Xw,Yw,Zw,1)(X_w , Y_w , Z_w , 1)(Xw​,Yw​,Zw​,1)表示点在世界坐标系下坐标的的齐次坐标形式

这就推得了相机矩阵。相机矩阵的参数由内参数和外参数组成。相机在制造的过程中,难免会出现偏差,仅仅使用出厂参数是不够的,另外还要考虑镜头畸变引起的误差。相机标定是一个获取相机内参数和外参数以及矫正镜头畸变的过程。相机标定的结果的精度将直接影响相机工作时所得结果的准确度。

标定方法使用张定友教授提出的张氏标定法。

参考:高翔《视觉SLAM十四讲》

相机成像原理与数学模型相关推荐

  1. 【camera】2.相机成像原理和数学模型

    相机模型中的坐标系: Ow-xyx:世界坐标系,物体位置,单位:m Oc-xyz:相机坐标系,光心为原点,单位:m Oi-xy:图像坐标系,光心为图像中心,单位:mm Op-xy:像素坐标系,原点为图 ...

  2. 【自动驾驶】16.计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换

    本篇博客为转载,我对其中的细节添加了一些说明. 原文链接:https://blog.csdn.net/chentravelling/article/details/53558096 0.前言 最近整理 ...

  3. 计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换(转载)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chentravelling/article/details/53558096 0.前言 最近整理了& ...

  4. 【图像处理】相机成像原理

    这里对于相机成像原理做一个简单的介绍. 如下图所示,在最左端的顶点为相机,它的镜头正对着地面上的点O,横向视场角为a,纵向视场角为θ,它所看到的区域就是就是如下所示的四边形,存在一定的投影变换. 而地 ...

  5. ORB-SLAM2从理论到代码实现(四):相机成像原理、基本矩阵、本质矩阵、单应矩阵、三角测量详解

    由于ORBmatcher.cc中有三角化和重投影等内容,所有我先写相机成像等多视图几何内容. 1. 相机的成像原理 假设空间中有一点P,它在世界坐标系中的坐标为,在相机坐标系中的坐标为,在图片中的像素 ...

  6. 相机成像原理_【亲子科学小实验】相机原理和小孔成像的秘密

    大家出去旅游的时候,都会带着照相机,拍下美景的同时,也给我们留下了永恒的回忆.但是,大家知不知道记录美好瞬间的照相机是如何工作成像的呢?下面就和小编一起来探究成像原理吧. 相机原理和小孔成像 材料 放 ...

  7. 相机成像原理_数码相机的工作原理

    数码相机也被称为数字相机.数码相机可以说是更广义的电子影像处理技术中的一类,其光学成像系统和常规的照相机并无差别,然而影像记录的方式却完全不同.常规相机使用的是化学光感材料,而数码相机使用的是一组光电 ...

  8. 相机成像原理_【科研进展】动态虚拟相机:探索三维视觉成像新方法

    由于微信公众号试行乱序推送,您可能没办法准时收到"爱光学"的文章.为了让您第一时间看到"爱光学"的新鲜推送, 请您: 1. 将"爱光学"点亮 ...

  9. 相机成像原理_照相机、摄影机的成像原理

    电影让不同时空下的你我相遇 写在开头 后面将要学习的焦距.景深以及镜头的运动相比影像中的画框.构图.景别.角度这几个概念理解起来更有难度,为了更好地理解它们的含义,也为了"知其然,知其所以然 ...

  10. 相机成像原理之物像之间的大小关系换算

    同一物体用相同的相机进行拍摄,物体在像中的大小与拍摄距离及拍摄角度相关,以下分别画图说明拍摄距离及拍摄角度变化,物象大小关系的换算 相机拍摄物象大小关系图如下 其中根据图中关系可以计算像的大小为其中f ...

最新文章

  1. 7 papers | NeurIPS 2019获奖论文;OpenAI刀塔2论文公布
  2. SAP PM入门系列27 - IW29 Display Notifications
  3. Tensorflow【实战Google深度学习框架】—TensorBoard
  4. 【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 )
  5. oracle 11gdata guard,Oracle 11g Data Guard配置
  6. 2dpca的matlab代码,2DPCA人脸识别的matlab代码
  7. python simple example
  8. NGUI_Atlas
  9. java请求url拼接xml_java访问一个URL,会返回给你一个XML格式的数据,该怎么实现?...
  10. 码怪之程序员的日常语录
  11. 冰冻三尺,非一日之寒。数据解析——xpath(2)
  12. eeepc linux 窗口管理器,EeePC安装Windows 7全教程 全机型适用
  13. nCode:DesignLife案例教程六
  14. 选修课计算机应用基础学什么,网络选修课-计算机应用基础 -期末考.docx
  15. 链路聚合 Eth-Trunk
  16. java swing 多行文本,Java Swing JTextArea
  17. 【webapp】开发手机版WEBAPP MOBILE APP
  18. BUUCTF-MRCTF2020
  19. kube-scheduler源码分析(五)之 PrioritizeNodes
  20. 数据中台推不动?手把手教你落地搭建!

热门文章

  1. 【已解决】解锁小米6的时候,卡在当前未连接手机怎么办?
  2. js常用分割取字符串的方法
  3. 根服务器修改密钥,更改 SQL Server 实例的服务主密钥
  4. 关于openstack,cloudstack,Eucalyptus对比分析
  5. Eucalyptus使用注意事项
  6. STM32 IIC协议详解
  7. GD32系列总结 - 前言
  8. 用人话说说希尔伯特空间??
  9. 软件测试知识点 | APP蓝牙连接测试
  10. 车牌拍照系统上传服务器,服务器端车牌拍照识别