第 一 章 引言

1.1 为什么要相机标定

首先来看相机标定的意义,我们都知道,我们拍摄的图片是二维的,但是真实世界是三维的。一个场景是如何从三维变成二维的呢?相机起到的就是这个作用。我们可以把相机看成一个函数,输入是一个三维的场景,输出是我们获得的二维的图片,这里可以认为是灰度图。我们平时看到的 RGB 彩色图是通过 RGB 三通道来实现的,每个通道可以认为是一张灰度图。从三维世界到二维世界的这个映射关系是不可逆的,也就是说无法仅通过一张二维图来得到真实的三维世界。

相机标定就是通过输入带有标定 pattern 的标定板来计算相机参数,来用简单的数学模型来表达复杂的成像过程。求解这个数学模型,也就是求解相机的参数,包括相机的内参,外参以及畸变参数。有了这个数学模型,我们可以对相机拍摄的图片进行畸变校正,也可以用多个相机拍摄图片来进行三维重建,以及其他的计算机视觉的应用。

图 1.1: 相机标定模型

1.2 成像系统

接下来介绍成像系统的基础,从三维坐标中的某一点 P(x, y, z) 出发,推导在相机的像素坐标系中的成像点。

1.2.1 投影矩阵和小孔成像

首先介绍一下下面会用到的几个专有名词:

  • 世界坐标系(world Coords):点在真实世界中的位置,描述相机位置,单位 m。

  • 相机坐标系(Cameras Coords):以相机 sensor 中心为原点,建立相机坐标系,单位 m。

  • 图像物理坐标系(Film Coords):经过小孔成像后得到的二维坐标系,单位 mm。

  • 像素坐标系(Pixel Coords):成像点在相机 sensor 上像素的行数和列数,原点为图像左上角,不带有任何物理单位,或者说单位是 pixel主点:光轴与图像平面的交点为主点,即图1.2中的点 p。

  • 主点:光轴与图像平面的交点为主点,即图1.2中的点 p。

接下来我们建立从真实世界(世界坐标系)中的一点到像素坐标系上对应点的映射,这会涉及四个坐标系之间的三步转换。

首先,考虑世界坐标系中的一点 到相机坐标系的对应关系,他们的转换关系可以通过矩阵 R, T 来表征。R 是相机坐标系相对于世界坐标系的旋转矩阵,T 是相机坐标系相对于世界坐标系的平移矩阵,即相机的中心在世界坐标系的坐标。他们的之间的转换关系可以通过矩阵表示为下面的公式:

图 1.2: 小孔成像原理图

然后,考虑相机坐标系到图像坐标系的转换,假设点在图像坐标系中的成像点是 p′(x, y)。这里基于的是小孔成像的原理,原理如图1.2的左图所示,焦距是 f,成像面是与 XOY 平面平行且距离原点 f 的平面。图1.2的右图为 ZcY 截面。利用相似三角形可以求出:

化简可以推出:

写成矩阵的形式:

这样便得到了相机坐标系到图像坐标系的转换关系。

图 1.3: 图像坐标系与像素坐标系的转换关系

最后,考虑图像坐标系中点 p′(x, y) 到像素坐标系对应点 (u, v) 的转换关系,如图1.3所示。图像坐标系的原点在 sensor 的中央,像素坐标系的原点在 sensor 的左上角。图像坐标系的单位是 mm,像素坐标系的单位是 pixel。他们的之间的转换关系可以表示为:

转换成矩阵表示:

(u, v) 即点在像素坐标系中的坐标,即像素的列数、行数。dx, dy 为每个像素点在图像坐标系 x 轴,y 轴上的尺寸,单位是毫米/每像素,是每个 sensor 的固有参数。实际情况下,芯片的中心并不在光轴上,安装的时候总会有有些误差,所以引入两个新的参数 (u0, v0),代表主点在像素坐标系下的偏移。

不考虑世界坐标系的旋转,点从相机坐标系到像素坐标系的转换公式可以总结为

上式中,代表焦距除以单个的像素大小,所以单位是像素,在相机的标定过程中 dx, dy, f 均不能直接测量得到的,组合值 fx, fy 可以标定得到。zc 是三维点在相机坐标系中深度值。从世界坐标系到像素坐标系,写成矩阵形式,可以得到:

上式中,M1 为相机内参,包括相机的焦距,光轴与图像平面的焦点位置等内部参数,和外部因素无关,因此称为内参,表示为:

M2 为相机外参,表征世界坐标系到相机坐标系的转换关系,是相机在世界坐标系下的位置姿态矩阵,认为是摄像机的外参,一般情况下,如果世界坐标系设置为相机坐标系,即二者重合,那么这个外参就是一个单位矩阵。

用一张图来总结,如图1.4所示。

图 1.4: 相机标定整套流程

1.2.2 镜头畸变

实际使用中,得到的图像并不是完全按照小孔成像原理进行透视投影,通过透镜后物点在实际的成像平面上的像与理想成像之间存在一点畸变误差。误差主要存在径向畸变和切向畸变两种。径向畸变是由于相机的透镜形状造成的,切向畸变则是整个相机的组装过程中造成的。

1.2.2.1 径向畸变

图 1.5: 径向畸变

沿着透镜的半径方向分布的畸变称为径向畸变。光线在远离透镜中心的地方比靠近中心的地方更加弯曲。径向畸变可以分为,桶形畸变和枕形畸变。如图1.5所示,从左到右分别是,正常无畸变、桶形畸变、枕形畸变。径向畸变是因为,远离透镜中心的光线比靠近透镜中心的光线更加弯曲。廉价的透镜更加严重,高端相机中并不是那么明显。光心的处的畸变为 0,距离越远畸变越大。

一般情况下,图像的径向畸变往往被描述为一个低阶多项式模型。(x, y) 是没有畸变的像素点的位置,(xdistorted, ydistorted) 是径向畸变作用后的点的位置,则二者之间存在以下变换关系:

(x, y) 是归一化的图像坐标,即坐标原点已经移动到主点,并且像素坐标除以焦距,r2 = x2 +y2。k1, k2, k3 是径向畸变系数,也属于摄像头的内参。一般使用多项式的前两项,畸变很大的相机比如鱼眼相机会使用第三项。

1.2.2.2 切向畸变

图 1.6: 切向畸变

切向畸变主要发生在相机 sensor 和镜头不平行的情况下,因为有夹角,所以光透过镜头传到图像传感器上时,成像位置发生了变化。具体原理如图1.6所示。切向畸变可以用下列公式表示:

p1, p2 是畸变系数,其他变量和径向畸变相同。

将径向畸变和切向畸变放在一起考虑,可以得到下式:

所以对于镜头畸变一共有 5 个参数 k1, k2, k3, p1, p2 需要校准,这 5 个参数和 M1 一起,都是需要标定的相机内参。opencv 输出的即便参数顺序是 k1, k2, p1, p2, k3 因为 k3 没那么重要。

作者简介

林夕,电子科技大学硕士,主要研究方向:推荐系统、自然语言处理和金融风控。希望能将算法应用在更多的行业中。

编辑:于腾凯

校对:李敏

原创 | 《相机标定》深入理解原理与实战(一)相关推荐

  1. 【相机标定与三维重建原理及实现】学习笔记1——相机模型数学推导详解

    目录 前言 一.小孔成像模型 二.坐标系的变换 1.世界坐标系到相机坐标系的变换(刚体变换)[xw^→xc^\boldsymbol {\hat{x_{w}}}\rightarrow \boldsymb ...

  2. 相机标定与三维重建原理

    <基于序列图像的视觉检测理论与方法> 1.相机标定: 定义:检查和校准数码相机的内方位元素和光学畸变参数. 标定方法:从传统的三维空间控制场向二维平面控制场转变.计算机视觉界提出了许多利用 ...

  3. 相机标定的理解及采用opencv和matlab工具箱的标定方法

    一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标系和像平面 ...

  4. matlab相机标定工具箱进行相机标定,相机标定的理解及采用opencv和matlab工具箱的标定方法...

    一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标系和像平面 ...

  5. matlab相机标定畸变参数,相机标定的原理与意义及OpenCVMatlab实现差异小结.doc

    2011-01-30 相机标定的原理与意义及OpenCV.Matlab实现差异小结 分类:?OpenCV点滴2011-01-30 20:35?2292人阅读?评论(3)?收藏?举报 ??? 本文是一篇 ...

  6. 张正友相机标定程序实现

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/hongbin_xu/article/details/78988450 前言 在前面的博客中( 三维重 ...

  7. 相机标定:现实到虚拟世界的映射关系

    简单通俗的关于相机标定的理解:   我们从单目视觉说起.平时我们都说要做视觉识别.测量云云,然后我们就会去拍照,再对数字图像做各种处理,颜色处理.灰度化.滤波.边缘检测.霍夫变换,最后得到了希望得到的 ...

  8. python相机标定流程图_相机标定——OpenCV-Python Tutorials

    目标 我们将了解导致相机失真.扭曲的内因与外因 我们将试着找到这些畸变参数,并消除畸变 基础 如今大量廉价的摄像机导致了很多照片畸变.两个主要的畸变是径向畸变和切向畸变. 由于径向畸变,直线会变弯.距 ...

  9. OpenCV相机标定与畸变校正

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自OpenCV学堂. OpenCV单目相机标定,图像畸变校正 相机标定定义与原理 01 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点 ...

最新文章

  1. iOS应用代码注入防护
  2. Exchange2007 系列一:Exchange2007安装
  3. mysql 删除外键
  4. 数据库---聚合查询
  5. linux开机自动启动开机日志,设置linux开机自动运行脚本
  6. [讨论帖] 程序员如何赚外快?
  7. mysql 自增长改动_优化了MYSQL大量写入问题,老板奖励了1000块给我
  8. Python爬虫时中文乱码的处理
  9. Django 2.0.1 官方文档翻译: 文档目录 (Page 1)
  10. 文字在div中的垂直居中问题 div在页面中的水平垂直居中问题 vertical-align ??????
  11. 博弈:唯冠和苹果的iPad商标案之争
  12. unity3d显示c4d材质_C4D入门到精通,没那么难
  13. 京东程序员压力太大在网页植入骂人代码?网友:。。。
  14. UI框架(UGUI)
  15. 04 TCP/IP协议详解
  16. PHP Fatal error: Uncaught think\\exception\\ErrorException: error_log相关解决方法
  17. 狂风暴雨——雨过天晴篇:数据流层发布
  18. CodeForces1214C
  19. CE系列交换机堆叠配置
  20. 空气能热水器的SASO认证

热门文章

  1. 求行指针所指的字符串数组中长度最长的字符串所在的行下标
  2. 重庆商务学校有计算机专业吗,重庆对外经贸学院计算机科学与技术专业
  3. adobe怎么统计字数_本科毕业论文怎么写(正文写作要点精华)
  4. biopython有什么用_BioPython学习笔记
  5. 匹配内容主要分为三部分,负载电容的匹配,驱动功率的调试,负性阻抗的测量。...
  6. iOS开发之--解决 swap file “*.swp”already exists!问题
  7. 【java】httpclient的使用之java代码内发送http请求
  8. H5中的拖拽文件上传-----------------需修改,需测试
  9. Java基础班学习笔记(8)
  10. matlab norm 范式