这节博客介绍一下计算机视觉中的几何问题之一:相机模型和坐标转换,希望对各位读者有所帮助!

1.针孔相机模型——几何建模

数码相机,手机镜头可以简单看作是一组透镜和图像传感器构成的整个光学成像系统。透镜用于约束进入的光线,而传感器则用于对光进行感受、采样和量化。相机模型是对光学成像系统的简化,目前相机模型有线性模型和非线性模型两种。实际的成像系统是透镜成像的非线性模型。在这里,我们简要描述一下小孔成像模型,如下图所示:

由上图可以看到,小孔成像成的是倒立的图像,随着成像平面距离小孔的远近不同,像的大小也不一样,通常的相机其成像平面,一般放置在焦平面的位置。

2.世界坐标系

世界坐标系,也就是真实世界的立体空间坐标,是一个三维坐标系,点在世界坐标系中的坐标通常用 来表示,世界坐标系可以任意选取。单位:m

3.相机坐标系

设相机坐标系用来表示,如下图所示,在相机坐标系中,Z 轴指向相机前方,X 向右,Y 向下,O 为摄像机的光心,也是针孔模型中的针孔。单位:m

4.图像坐标系(物理)

设图像坐标系为,现实世界的空间点 P ,经过小孔O投影之后,落在物理成像平面上,成像点为 P ′。图像坐标系的原点落在了光心在成像平面上的投影,X指向右,Y指向下。单位:m

5.像素坐标系

像素坐标系一般用来表示,其原点在图像的左上角,u指向右边,v指向左边,像素坐标是整数。单位:pixel

6.内参:从相机坐标系到图像坐标系到像素坐标系

把世界坐标系定为相机坐标系,设空间中一点P在相机坐标系下的坐标为[X,Y,Z],在图像坐标系下的坐标为[x,y],那么这两个坐标之间满足什么样的关系呢?

如上图所示,设相机的焦距为f,根据小孔成像模型,利用三角相似性原理可以得到:

其中负号表示成的像是倒立的。为了简化模型,我们把可以成像平面对称到相机前方,和三维空间点一起放在摄像机坐标系的同一侧,如下图样子所示。

这样做可以把公式中的负号去掉,使式子更加简洁:

经过整理可得:

上式描述了点 P 和它的像之间的空间关系。不过,在相机中,我们最终获得的是一个个的像素,这需要在成像平面上对像进行采样和量化。为了描述传感器将感受到的光线转换成图像像素的过程,我们设在物理成像平面上固定着一个像素平面。我们假设在像素平面得到了的像素坐标:,像素坐标系通常的定义方式是:原点位于图像的左上角,u 轴向右与 x 轴平行,v轴向下与 y 轴平行。像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移。我们设像素坐标在 u 轴上缩放了 α 倍,在 v 上缩放了 β 倍。同时原点平移了。那么的坐标与像素坐标的关系为:

将该式与上式合并整理得到:

其中,的单位为米,的单位为像素每米,所以 的单位为像素。把该式写成矩阵形式,会更加简洁,不过左侧需要用到齐次坐标:

该式中,我们把中间的量组成的矩阵称为相机的内参数矩阵K(Camera Intrinsics)。通常认为相机的内参在出厂之后是固定的,不会在使用过程中发生变化。有的相机生产厂商会告诉你相机的内参,而有时需要你自己确定相机的内参,也就是所谓的标定。

7.外参:从世界坐标系到相机坐标系

除了内参之外,自然还有相对的外参。内参表达了从相机坐标系到像素坐标系下的坐标转换,而外参则表达了从世界坐标系到相机坐标系下的坐标转换。假设P的世界坐标记为,相机的当前位姿由它的旋转矩阵 R 和平移向量 t 来描述,那么有:

上式中P的坐标都采用了齐次坐标(注意后一个式子隐含了一次齐次坐标到非齐次坐标的转换),其中T称为外参矩阵:

8.畸变

为了获得好的成像效果,我们在相机的前方加了透镜。透镜的加入对成像过程中光线的传播会产生新的影响: 一是透镜自身的形状对光线传播的影响,二是在机械组装过程中,透镜和成像平面不可能完全平行,这也会使得光线穿过透镜投影到成像面时的位置发生变化。由透镜形状引起的畸变称之为径向畸变。在针孔模型中,一条直线投影到像素平面上还是一条直线。可是,在实际拍摄的照片中,摄像机的透镜往往使得真实环境中的一条直线在图片中变成了曲线 。越靠近图像的边缘,这种现象越明显。由于实际加工制作的透镜往往是中心对称的,这使得不规则的畸变通常径向对称。它们主要分为两大类,桶形畸变和枕形畸变,如下图所示:

桶形畸变是由于图像放大率随着离光轴的距离增加而减小,而枕形畸变却恰好相反。在这两种畸变中,穿过图像中心和光轴有交点的直线还能保持形状不变。除了透镜的形状会引入径向畸变外,在相机的组装过程中由于不能使得透镜和成像面严格平行也会引入切向畸变,如下图所示:

对于径向畸变,无论是桶形畸变还是枕形畸变,由于它们都是随着离中心的距离增加而增加。我们可以用一个多项式函数来描述畸变前后的坐标变化,这类畸变可以用和距中心距离有关的二次及高次多项式函数进行纠正:

在上式描述的纠正模型中,对于畸变较小的图像中心区域,畸变纠正主要是 k1起作用。而对于畸变较大的边缘区域主要是 k2 起作用。普通摄像头用这两个系数就能很好的纠正径向畸变。对畸变很大的摄像头,比如鱼眼镜头,可以加入 k3 畸变项对畸变进行纠正。

另一方面,对于切向畸变,可以使用另外的两个参数 p1 ,p2 来进行纠正:

故得到:

9.相机标定

前面已经说明,相机标定是获取相机内参的方法。对于针孔模型相机最为常用的相机标定方法是张正友标定法,使用Matlab的标定工具箱可以轻松实现相机标定。

参考:内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解

计算机视觉-相机内参数和外参数

What Is Camera Calibration?

Camera Calibration

相机模型与坐标转换!相关推荐

  1. halcon 旋转_HALCON高级篇:面阵相机模型及其坐标转换

    面扫相机 图1: 针孔相机的透视映射 图1展示了一个针孔相机产生的透视映射.世界点P通过镜头的光中心映射到图像面上的P',其距离光中心的距离为f(焦距).实际上,术语"焦距"不是很 ...

  2. OpenCV实现SfM(一):相机模型

    注意:本文中的代码必须使用OpenCV3.0或以上版本进行编译,因为很多函数是3.0以后才加入的. 目录: 文章目录 #SfM介绍 SfM的全称为Structure from Motion,即通过相机 ...

  3. 【鱼眼相机模型】鱼眼相机投影模型理解

    一.从普通镜头到鱼眼镜头 如图1所示,普通镜头下的光线依据针孔相机模型进行成像(该部分可参考相机投影关系).但该模型存在一个缺陷:相机视野范围越大,所需的成像平面也越大,当相机视野范围要求在180°时 ...

  4. 相机模型与去畸变方法详解

    相机与图像模型 一.针孔相机模型 1.1 成像原理 1.2 实际坐标与像素坐标的关系 1.3 如何获得实际坐标 二.畸变相机模型 2.1 两种常见畸变的介绍 2.2 去畸变方法 2.3 示例程序 相机 ...

  5. 2.3ORBSLAM3之相机模型与畸变模型

    1.简介 主要内容: 1. 对SLAM中常见的相机模型进行介绍,包括针孔相机模型和鱼眼相机模型 2. 对每种相机模型的畸变模型进行介绍 3. 对VSLAM中常见的几种去畸变方法进行介绍 4. 对常见的 ...

  6. 摄像头和相机模型和内参原理

    摄像头和相机模型和内参原理 相机的工作过程可总结为:"将三维世界中的坐标点(单位为米)投影到二维图像上(单位为像素)."我们通常用针孔相机模型来研究这里的投影过程发生了怎样的数值变 ...

  7. 相机标定:(1)相机模型

    之前在进行标定时只是简单的会使用,调用OpenCV里边的函数,完成标定即可.并没有做过多深入的理解,今天趁着course学习把标定详细的记录一下,以下完全是个人理解如果有不对的地方欢迎批评指正. 公式 ...

  8. 鱼眼相机标定_鱼眼相机模型(二)

    前言 在介绍其他相机模型之前,可以先看一下kalibr支持标定的相机模型(kalibr可以标定的相机模型),这里的相机模型一共有4种,针孔相机模型,全景相机模型,Double sphere相机模型还有 ...

  9. 基于图像的三维模型重建——相机模型与对极几何

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:梦寐mayshine https://zhuanlan.zhihu.com/p/12968108 ...

  10. VTK:VTK 的相机模型用法实战

    VTK:VTK 的相机模型用法实战 程序输出 程序完整源代码 程序输出 程序完整源代码 #include <vtkAppendFilter.h> #include <vtkCamer ...

最新文章

  1. webpack 安装使用(1)
  2. Filter的生命周期
  3. ecg 幅度_ECG信号中一些运动伪差的讨论
  4. 【必看】新手妹子一键删库,老司机机智救场
  5. 程序员修神之路--略懂数据库集群读写分离而已
  6. 手机怎么进ph_明日发布,华为鸿蒙OS2.0手机版特色功能曝光
  7. 【渝粤教育】电大中专新媒体营销实务 (10)作业 题库
  8. 腾讯云连续三年登上KVM开源贡献榜,引领KVM技术标准!
  9. [转]将微信和支付宝支付的个二维码合二为一
  10. 【Kafka】Kafka 如果 动态 不停止的情况下 修改 消费组 offset
  11. Objective-C 高性能的循环
  12. Python 资源索引[绝对适合PYTHON人]
  13. ArcGIS基础学习笔记之空间数据库管理工具ArcCatalog基础
  14. 打开计算机出现酷我音乐删不掉,删除 “我的电脑” 里的 “酷我音乐” 快捷方式...
  15. 软件测试思想者(Software Testing - Thinker) - Logo一览
  16. [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
  17. Android4.0 SDK新功能详解
  18. 中国风商业融资PPT模板
  19. 个人项目-地铁出行路线
  20. jQuery的animate()的scrollTop属性在iPad Safari上不起作用

热门文章

  1. 《深度学习》之 VGG卷积神经网络 原理 详解
  2. MySQL 日期格式化
  3. Python 2与Python 3对H5牌九棋牌搭建的区别
  4. 经济周期的定义、阶段及特点-宏观经济指标和政策
  5. 服务器损坏文件怎么办,“该文件可能已损坏或者文件所在的服务器没有响应或者该文件是只读的”怎么解决?...
  6. vue 动态引入组件
  7. javascript怎么定义类数组对象
  8. php 代码分析软件,分析和解析PHP代码的7大工具
  9. 利用python搭建socket server服务器
  10. 用易语言对DNF卡顿进行批处理