原文:

http://blog.csdn.net/lsh_2013/article/details/47615309

相机模型

数码相机图像拍摄的过程实际上是一个光学成像的过程。相机的成像过程涉及到四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系以及这四个坐标系的转换。

理想透视模型——针孔成像模型

相机模型是光学成像模型的简化,目前有线性模型和非线性模型两种。实际的成像系统是透镜成像的非线性模型。最基本的透镜成像原理如图所示:

其中 u 为物距, f 为焦距,v 为相距。三者满足关系式:

相机的镜头是一组透镜,当平行于主光轴的光线穿过透镜时,会聚到一点上,这个点叫做焦点,焦点到透镜中心的距离叫做焦距 f。数码相机的镜头相当于一个凸透镜,感光元件就处在这个凸透镜的焦点附近,将焦距近似为凸透镜中心到感光元件的距离时就成为小孔成像模型。小孔成像模型如图所示。

小孔成像模型是相机成像采用最多的模型。在此模型下,物体的空间坐标和图像坐标之间是线性的关系,因而对相机参数的求解就归结到求解线性方程组上。四个坐标系的关系图如下图所示,其中 M 为三维空间点,m 为 M 在图像平面投影成的像点。

世界坐标系:是客观三维世界的绝对坐标系,也称客观坐标系。因为数码相机安放在三维空间中,我们需要世界坐标系这个基准坐标系来描述数码相机的位置,并且用它来描述安放在此三维环境中的其它任何物体的位置,用(Xw, Yw, Zw)表示其坐标值。

相机坐标系(光心坐标系):以相机的光心为坐标原点,X 轴和Y 轴分别平行于图像坐标系的 X 轴和Y 轴,相机的光轴为Z 轴,用(Xc, Yc, Zc)表示其坐标值。

图像坐标系:以CCD 图像平面的中心为坐标原点,X轴和Y 轴分别平行于图像平面的两条垂直边,用( x , y )表示其坐标值。图像坐标系是用物理单位(例如毫米)表示像素在图像中的位置。

像素坐标系:以 CCD 图像平面的左上角顶点为原点,X 轴和Y 轴分别平行于图像坐标系的 X 轴和Y 轴,用(u , v )表示其坐标值。数码相机采集的图像首先是形成标准电信号的形式,然后再通过模数转换变换为数字图像。每幅图像的存储形式是M × N的数组,M 行 N 列的图像中的每一个元素的数值代表的是图像点的灰度。这样的每个元素叫像素,像素坐标系就是以像素为单位的图像坐标系。

像素坐标系与图像坐标系的关系如图。

他们之间的转换关系为:

采用齐次坐标再用矩阵形式将上式表示为:

其中(u0, v0)是图像坐标系原点在像素坐标系中的坐标,dx 和 dy分别是每个像素在图像平面x和 y方向上的物理尺寸。

图像坐标系与相机坐标系的转换为:

其中 f 为焦距(像平面与相机坐标系原点的距离)。用齐次坐标系和矩阵表示上述关系:

相机坐标系与世界坐标系的变换为:

其中 R 为3 × 3正交旋转矩阵,t 为三维平移向量,综合起来:

ax, ay分别是图像水平轴和垂直轴的尺度因子。K的参数中只包含焦距、主点坐标等只由相机的内部结构决定,因此称 K 为内部参数矩阵,ax, ay , u0, v0叫做内部参数。M1中包含的旋转矩阵和平移向量是由相机坐标系相对于世界坐标系的位置决定的,因此称M1为相机的外部参数矩阵,R和t叫做外部参数,M 叫投影矩阵。相机标定就是确定相机的内部参数和外部参数。

实际成像模型

理想的透视模型是针孔成像模型,物和像会满足相似三角形的关系。但是实际上由于相机光学系统存在加工和装配的误差,透镜就并不能满足物和像成相似三角形的关系,所以相机图像平面上实际所成的像与理想成像之间会存在畸变。畸变属于成像的几何失真,是由于焦平面上不同区域对图像的放大率不同形成的画面扭曲变形的现象,这种变形的程度从画面中心至画面边缘依次递增,主要在画面边缘反映比较明显。为了减小畸变,拍摄图片时应尽量避免用镜头焦距的最广角端或最远端拍摄。实际的相机成像模型如下图所示。

其中 mr(xr,yr)表示实际投影点的像平面坐标系下的物理坐标,mi(xi,yi)表示理想投影点的像平面坐标系下的物理坐标。镜头的畸变模型可表示为:

σx 和σy是非线性畸变值,它包括径向畸变和偏心畸变和薄棱镜畸变等。

理论上来说镜头都存在径向和切向畸变,但是通常径向畸变较大,切向畸变较小。径向畸变的模型可由下面的模型来表示:

其中k1 k2 k3……示径向畸变系数,,通常情况下径向畸变系数只考虑到一阶或二阶就可以满足精度需求了。

偏心畸变模型是由于多个光学镜头的光轴不能完全共线产生的,这种畸变是由径向和切向畸变共同构成的,数学模型可表示如下:

其中p1, p2为切向畸变系数。薄棱镜畸变是由于镜头设计制造缺陷和加工安装所造成的,如镜头与相机成像平面有一个很小的倾角等。因为薄棱镜畸变非常小,通常不考虑,这里只考虑径向畸变和偏心畸变,畸变总的可以表示为:

实际的成像模型为:

******************

相机模型与标定(二)--相机模型相关推荐

  1. 多个相机内外参标定详解[halcon]

    本次讲述一个halcon实例,如何对多个相机参数进行标定. 相机的标定流程一般由以下几个部分: 相机参数的初始化->读取标定文件->读取标定板图像->进行标定->标定结果. 1 ...

  2. Matlab-simulink汽车二自由度模型

    目录 目录 汽车二自由度模型简介 汽车二自由度模型推导 Matlab-simulink汽车二自由度模型 参数 汽车二自由度模型简介: 常用的动力学模型有2.3.5.7等自由度,其中二自由度模型虽然最为 ...

  3. 3dmax:3dmax室内建模设计简约空间模型图文教程(二)之详细攻略

    3dmax:3dmax室内建模设计简约空间模型图文教程(二)之详细攻略 目录 3dmax室内建模设计简约空间模型图文教程(二) 调入模型 墙体与踢脚线

  4. SuperMap BIM+GIS-Revit模型处理-第三节 Revit模型优化方法及模型缓存策略

    在模型导入SuperMap平台之后,在应用过程中必然会遇到性能问题,随之而来的就是如何优化模型.本文将总结使用经验和理解,从实际出发介绍几种优化方法和缓存策略.以下操作均在SuperMap iDesk ...

  5. 照相机模型与增强现实(相机标定)

    计算机视觉:照相机模型与增强现实 针孔照相机模型 照相机标定 光学标定 自标定(SFM) 实验结果 本篇文章主要讲述如何通过通过照相机模型在映射中加入部分照相机产生图像过程的投影特性从而 处理三维图像 ...

  6. 相机模型与标定(八)--传统相机标定算法简介

    原文: http://blog.sina.com.cn/s/blog_b364631a0101iopy.html 一.相机数学模型 相机模型为以后一切标定算法的关键,只有这边有相当透彻的理解,对以后的 ...

  7. 相机模型与标定(四)--opencv单目标定例子使用说明

    原文: http://blog.csdn.net/t247555529/article/details/47836233 最近一个项目要进行相机的标定,作为一个菜鸟,瞎搞一下午才搞定,于是写篇博客记录 ...

  8. 相机模型与标定(一)--相机标定概述

    以下内容来自: http://baike.baidu.com/link?url=RAjUg33ftcbDDjE_tFKS80p_azC9REyLOzBTbqqSq5iIIXo0sp20NJk28RW- ...

  9. SLAM中常用的相机模型及标定工具

    最近一段时间准备作多传感器的SLAM研究,第一步是要解决传感器间的联合标定.所要开展实验的机器人平台配置了相机.单线雷达和IMU,自然而然地,首先是要先确定各个传感器的内参数,然后再确定传感器之间的外 ...

最新文章

  1. 王孟源:中国要崛起,基础科研需要“讲实话
  2. android ramdisk
  3. Chrome 开发者工具无法显示服务器正常返回的 HTTP 请求 - Failed to load response data
  4. vs自带iis局域网调试
  5. 利用SoapHeader验证web service调用的合法性(dwonmoon)
  6. 我还在生产玩 JDK7,JDK 15 却要来了!|新特性尝鲜
  7. Python min() 方法
  8. mysql求和语句大全_sql查询语句大全
  9. 教你使用squid搭配dante做代理
  10. 凸优化第二章凸集 2.1 仿射集合和凸集
  11. 喧嚣过后,揭秘《咪蒙教你月薪5万》背后的真相
  12. 满满的提高芝麻分实操技巧!
  13. 如何恢复Windows默认共享
  14. python 排名函数_python 中rank函数怎样理解?
  15. 宝宝的个人博客开通了
  16. Win11怎么分区硬盘?
  17. saltstack的NETAPI接口详讲
  18. 如何使用爬虫与JieBa库制作词云
  19. 有1、2、3、4四个数字,可以组成多少个互不相同且无重复的三位数?都是多少?
  20. Fantasy of a Summation(找规律,水)

热门文章

  1. Win10下Linux子系统使用串口(不是USB转串口)
  2. Ubuntu下emacs使用搜狗输入法
  3. 程序员常用的网站和博客
  4. 改变自己就是改变世界的开始
  5. linux学习笔记:yum命令的常见用法
  6. linux shell脚本判断文件或文件夹是否存在循环操作
  7. from scipy import special, optimize, from ._nnls import nnls ImportError: DLL load failed: 找不到指定的模块。
  8. python连接hive kerberos_数据库开发实战教程:使用Python连接Kerberos的Presto
  9. 内置对象session与httpSession对象是同一个东西么?
  10. python内置数据结构_Python内置数据结构(一)