最近在网上看到了很多关于坐标系转换的帖子,但是其内容很多都是相互转载(甚至还有一部分是错误的),同时大部分的文章内容都是告诉你四种坐标系间的相互转化的数学公式,看完之后很多时候还是不知所云,本文意在深入浅出的围绕这四种坐标系的坐标系的建立、为什么要涉及这种坐标系、四种坐标系间的转换关系来展开,我们会在讲解的过程中通过问题的方式以及引入概念的方式来辅助读者更好的理解这四种坐标系的意义。

引入概念1:相机成像模型

引入这个概念有助于后面我们更好的理解四种坐标系的建立以及其存在的意义,各位读者应该对此部分内容有所理解:

引入概念二:参考坐标系的关系

这里,我们终于迎来了我们需要说明的四个坐标系的定义,分别是:

1、图像像素坐标系:表示场景中三维点在图像平面上的投影,其坐标原点在CCD图像平面的左上角,u轴平行于CCD平面水平向右,v轴垂直于u轴向下,坐标使用(u,v)来表示。注:这里的(u,v)表示的是该像素在数组中的列数和行数

2、图像物理坐标系:其坐标原点在CCD图像平面的中心,x,y轴分别平行于图像像素坐标系的坐标轴,坐标用(x,y)表示。

3、相机坐标系:以相机的光心为坐标系原点,X,Y轴平行于图像坐标系的X,Y轴,相机的光轴为Z轴,坐标系满足右手法则。注:这里所指的相机的光心可以简单的理解为相机透镜的几何中心

4、世界坐标系:也称为绝对坐标系,用于表示场景点的绝对坐标

问题1:图像像素坐标系和图像物理坐标系区别是什么?有什么意义?

很多读者看能看完这两个坐标系会觉得两者很相似,两个轴方向相同,处于同一平面,貌似只有原点不同。但实际上,两者的主要区别在于两者所代表的含义:

1、图像像素坐标系是以像素为单位来描述一个点的位置的,单位只是一个计数单位(好比某同学是在班级里在第二排、第三列)

2、图像物理坐标系是以物理单位(mm)来描述一个点的位置的,是具有实际物理含义的点(同样的例子,以班级几何中心为原点定义一个X,Y轴,告诉你某同学位于这个坐标轴的(4米,-5米)处,你也可以唯一的找到这个同学)

3、上述两个坐标系具有转换关系,下面的内容会写到

坐标转换1:图像像素坐标系和图像物理坐标系的转换

这里我们需要先放一张像平面的正视图来更好的说明这个转换关系:

由两个坐标系间的关系我们可以得到如下的转换关系:其中dx和dy表示每一个像素在u轴和v轴方向上的物理尺寸:

通常,我们更倾向于将上面的式子表示为矩阵形式:

转换2:相机坐标系和世界坐标系的转换

引入概念三:刚体变换

刚体变换只改变物体的空间位置(平移)和朝向(旋转),而不改变其形状的变换(一种记忆方法,硬的东西:比如石头,你不能改变他的形状,只能把它旋转或者平移),可用两个变量来描述:正交单位旋转矩阵R,三维平移矢量T

根据刚体变换,我们依旧可以用矩阵的形式来表示两个坐标系的转换:

扩展阅读1:旋转矩阵和平移矢量

有了上部分的内容,其实很多读者还想知道那旋转矩阵和平移矢量究竟是如何求得的呢?其实平移矢量我们很好理解,就是我们沿着各轴方向的平移量。而旋转矩阵却不是很好理解,在这里我们做一个具体的说明:

旋转一共有三个自由度,即绕x,y,z旋转,根据旋转角度我们可以在各个方向上将旋转写成矩阵的形式,分别为r1,r2,r3,如下图所示,而旋转矩阵即为三个自由度的旋转矩阵的乘积,即:R=r1×r2×r3

转换3:相机坐标系和图像物理坐标系间的转换

这个转换呢,其实我们非常好理解,就是一个透视的关系,而实际运算过程中呢也就是利用三角形的相似性来进行计算的,首先我们看一下两个坐标系间的透视关系示意图:

在这里,我们可以轻松的由三角形的相似原理可以得到如下的公式:

同样,可以用矩阵的形式来表示:

拓展阅读2:投影矩阵,扭转因子,内参矩阵,外参矩阵

有了上面的式子我们把各个式子进行替换和组合就得到了一个长等式:

其中:

1、P为3×4矩阵,称为投影矩阵

2、s称为扭转因子

3、ku=f/dx,kv=f/dy

4、K完全由ku,kv,s,u0,v0决定,只与相机内参有关,称为相机的内参矩阵

5、[R T]由相机相对于世界坐标系的方位决定,称为相机的外参矩阵

拓展阅读3:坐标系间转换图示

参考文献:

1、计算机双目立体视觉/高宏伟著

2、https://blog.csdn.net/waeceo/article/details/50580607

3、https://blog.csdn.net/xueluowutong/article/details/80950915?utm_source=blogxgwz5

4、https://blog.csdn.net/lyhbkz/article/details/82841511

浅析相机相关坐标系的相互转换(世界坐标系、相机坐标系、图像坐标系、像素坐标系、内参矩阵、外参矩阵、扭转因子)【相机标定计算机视觉】相关推荐

  1. 计算机视觉(相机标定;内参;外参;畸变系数)

    目录 一.预备知识 1.坐标系变换过程(相机成像过程) (1)相机坐标系转换为图像坐标系(透视投影变换遵循的是针孔成像原理) (2)齐次坐标的引入原因:(为什么引入齐次坐标???) 2.内参与外参矩阵 ...

  2. 相机内参、外参、畸变系数简介

    文章目录 一.相机模型 1.简介 2.针孔相机模型 二.相机内参 1.相机坐标-图像坐标 2.图像坐标-像素坐标 3.相机坐标-像素坐标 三.外参矩阵 1.世界坐标-相机坐标 2.世界坐标-像素坐标 ...

  3. 【图像处理】像素坐标系、像平面坐标系、相机坐标系、世界坐标系、内参矩阵、外参矩阵

    [图像处理]像素坐标系.像平面坐标系.相机坐标系.世界坐标系.内参矩阵.外参矩阵 像素坐标系 像平面坐标系 相机坐标系 世界坐标系 像素坐标系<=>像平面坐标系 像素坐标系<=> ...

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

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangdashi888/article/details/51356385 1. 相机参数是三种不同的 ...

  5. 相机标定 >> 坐标系转换@内参、外参

    相机标定 >> 坐标系转换@内参.外参 1. 坐标系介绍 1.1 像素坐标系 1.2 图像坐标系 1.3 相机坐标系 1.4 世界坐标系 2. 相机标定 2.1 内参 2.1.1 内参的意 ...

  6. 相机校正与相机内参、外参

    简 介: 对于相机进行校正,是为之后视觉测量奠定基础.本文在总结了相机校正中的基本概念.使用cv2的函数说明校正的过程. 关键词: 相机校正,内参,外参 #mermaid-svg-0bogxxocrI ...

  7. 三维计算机视觉——相机内参和外参及坐标变换公式

    1.定义 相机内参数是与相机自身特性相关的参数,比如相机的焦距.像素大小等: 相机外参数是在世界坐标系中的参数,比如相机的位置.旋转方向等. 定义四个坐标系的意义,世界坐标系(参考坐标系).摄像机坐标 ...

  8. 相机标定(1)内\外参矩阵和畸变矩阵

    相机标定可以说是计算机视觉/机器视觉的基础.分为以下内容: 相机标定的目的和意义 相机成像过程的简化与建模 针孔相机模型的数学描述 标定针孔相机模型的参数 相机标定的目的和意义 我们所处的世界是三维的 ...

  9. opencv已知相机投影及内参求外参_一步步用c++实现相机标定(张氏标定法)

    enazoe/camera_calibration_cpp​github.com 前言 最近在做相机标定方面的工作,虽然以前多次进行相机标定,但是多数时候是调用opencv的函数,过程相对简单.虽然对 ...

最新文章

  1. 添加lombok插件
  2. 解决了一个小问题 好像把逻辑有点复杂
  3. Android Volley完全解析2:使用Volley加载网络图片
  4. 根目录_Linux Shell从入门到删除根目录跑路指南
  5. 6.2 基本操作与存储
  6. 姓名抽签器c语言,在线抽签器
  7. python 线性回归 约束_PyTorch线性回归和逻辑回归实战示例
  8. Spark成为大数据高手进阶步骤
  9. 【matlab】直方图均衡化
  10. Android Retrofit 2.0 使用-补充篇
  11. 334个地级市名单_2016年最新中国地级市名单
  12. C#语言与Java语言程序的比较[转自chinaitlab]
  13. 当下主流的数据库及其特点
  14. mapper [pos] of different type, current_type [geo_point], merged_type [ObjectMapper]
  15. 我花了一夜用数据结构给女朋友写个H5走迷宫游戏
  16. vcs+verdi/Debussy
  17. mac蓝牙鼠标总是自己断开_解决 mac 蓝牙鼠标、键盘经常总是 断开连接的问题
  18. Netkeeper安装/卸载后wifi消失问题解决方法
  19. 入大数据行业,主要应该要学习什么?
  20. 微信小程序开发之路⑩

热门文章

  1. 为什么那些美事没有实现---生活中小事有感
  2. 测试工程师需要具备的能力
  3. VB完全控制IE浏览器,操作ie对象,响应ie事件
  4. vb.net 简单取摄像头图片_【图片】大车监控如何安装?_大车监控吧
  5. keil MDK AC6设置noinit的用法
  6. php htmlpurifier,htmlpurifierPHP过滤库
  7. 最佳实践|如何写出简单高效的 Flink SQL?
  8. linux远程判断目录是否存在,用shell判断远程主机上是否存在某个文件
  9. python获取word页数_用程序获取word页码方法汇总
  10. 台式电脑怎么添加计算机硬盘,台式机怎么加硬盘 台式机加硬盘教程介绍【图文详解】...