一.小孔成像基础知识:

1.1透镜成像原理

如图所示:

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

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

为了计算方便一般采用对称成像平面来进行计算. 

二.四个坐标系转换

2.1 背景

世界坐标系,相机坐标系,图像坐标系,像素坐标系如下图所示:

1:世界坐标系:根据情况而定,可以表示任何物体,此时是由于相机而引入的。单位m。

2:相机坐标系:以摄像机光心为原点(在针孔模型中也就是针孔为光心),z轴与光轴重合也就是z轴指向相机的前方(也就是与成像平面垂直),x轴与y轴的正方向与物体坐标系平行,其中上图中的f为摄像机的焦距。单位m

3:图像物理坐标系(也叫平面坐标系):用物理单位表示像素的位置,坐标原点为摄像机光轴与图像物理坐标系的交点位置。坐标系为图上o-xy。单位是mm。单位毫米的原因是此时由于相机内部的CCD传感器是很小的,比如8mm x 6mm。但是最后图像照片是也像素为单位比如640x480.这就涉及到了图像物理坐标系与像素坐标系的变换了。

4:像素坐标系:以像素为单位,坐标原点在左上角。这也是一些opencv,OpenGL等库的坐标原点选在左上角的原因。当然明显看出CCD传感器以mm单位到像素中间有转换的。举个例子,CCD传感上上面的8mm x 6mm,转换到像素大小是640x480. 假如dx表示像素坐标系中每个像素的物理大小就是1/80. 也就是说毫米与像素点的之间关系是piexl/mm.

2.2世界坐标系到相机坐标系

物体之间的坐标系变换都可以表示坐标系的旋转变换加上平移变换,则世界坐标系到相机坐标系的转换关系也是如此。绕着不同的轴旋转不同的角度得到不同的旋转矩阵。如下:

 那么从世界坐标系到相机坐标系的转换关系如下所示:

2.3相机坐标系到图像坐标系

  从相机坐标系到图像坐标系,属于透视投影关系,从3D转换到2D。

此时投影点p的单位还是mm,并不是pixel,需要进一步转换到像素坐标系。

2.4图像坐标系到像素坐标系

像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样。图像坐标系的原点为相机光轴与成像平面的交点,通常情况下是成像平面的中点或者叫principal point。图像坐标系的单位是mm,属于物理单位,而像素坐标系的单位是pixel,我们平常描述一个像素点都是几行几列。所以这二者之间的转换如下:其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel=dx mm.

那么通过上面四个坐标系的转换就可以得到一个点从世界坐标系如何转换到像素坐标系的 

通过最终的转换关系来看,一个三维中的坐标点,的确可以在图像中找到一个对应的像素点,但是反过来,通过图像中的一个点找到它在三维中对应的点就很成了一个问题,因为我们并不知道等式左边的Zc的值。

参考:

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

小孔成像中四个坐标系转换相关推荐

  1. 小孔成像模型中四个坐标系的转换:世界 相机光心 图像毫米 像素

    相机模型 数码相机图像拍摄的过程实际上是一个光学成像的过程.相机的成像过程涉及到四个坐标系:世界坐标系.相机坐标系.图像坐标系.像素坐标系以及这四个坐标系的转换. 理想透视模型--针孔成像模型 相机模 ...

  2. C++中四种 cast 转换

    四种 cast 转换 C++中四种类型转换是:static_cast, dynamic_cast, const_cast, reinterpret_cast const_cast static_cas ...

  3. C++中四种cast转换

    C++中四种类型转换是:static_cast, dynamic_cast, const_cast, reinterpret_cast 1.const_cast 用于将const变量转为非const ...

  4. 图像处理中常用的坐标系转换

    共有四种坐标系 世界坐标系-->相机坐标系 [Xc,Yc,Zc]T表示相机坐标,[Xw,Yw,Zw,1]T表示归物体所在的世界坐标.R表示旋转矩阵,T表示平移矩阵. 相机坐标系-->图像坐 ...

  5. c++工程师面试常见问题之c++中四种cast转换

    int main() { const int a = 10; // a++; int& b = const_cast<int &>(a); b++; cout <&l ...

  6. 学习笔记 | c++中四种类型cast(强制)转换

    c++中四种cast转换 C++四种强制转换方式,应用场景,细节 1.const_cast 用于将const变量转为非const. 用来修饰类型的const或volatile属性.除了去掉const或 ...

  7. 面试准备每日五题:C++(七)——左值右值、面向对象、四种cast转换、拷贝构造函数赋值、虚函数多态

    文章目录 一. 什么是右值引用,跟左值又有什么区别? 二. 面向对象的三大特征 三. c++中四种cast转换 四.拷贝构造函数和赋值运算符的认识 五. 对虚函数和多态的理解 一. 什么是右值引用,跟 ...

  8. 相机与图像--小孔成像模型与坐标系--坐标系转换

    利用图像序列进行三维重建的过程,相当于把一张张由很多像素组成的二维图像还原到三维空间中的一个过程.通过了解整个投影的过程,就可以很容易理解如何利用图像进行三维重建,以及三维重建中的关键步骤是什么.该小 ...

  9. arcgis 将地图点转换为屏幕坐标_ArcGIS中自定义坐标系转换

    ArcGIS中所有地理数据集均需要用于显示.测量和转换地理数据的坐标系. 9 10 15 20 25 30 35 c / n db 万方数据 天线 信源 模块 处理 射频 数模 中频 基带 比特流 转 ...

最新文章

  1. LSGO:团队学习模式“社群化”讨论!
  2. AI一分钟 | 马斯克证实:特斯拉私有化的幕后推手是沙特主权基金;DeepMind的AI可以检测出超过50种眼疾...
  3. 累加器配上委托也可以很吊
  4. GHOST系统封装详细图文教程
  5. 启动未初始化小应用程序_SpringBoot详细打印启动时异常堆栈信息
  6. adsl服务器客户端配置cisco_windows下,Kiwi_Syslog日志服务器的搭建
  7. keras从入门到放弃(十)手写数字识别训练
  8. Ubuntu下搭建Janus Server
  9. ui原型设计工具_UI设计师的工具包,用于专业模型,原型和产品插图
  10. kivy中文手册python_K-Meleon
  11. UE4 左右立体参数
  12. python中if嵌套语句_python_if判断_三_if的嵌套
  13. React Native Keyboard使用详解
  14. 使用备份和还原以及SMB协议将SQL数据库从Windows迁移到Linux
  15. MTK:DrvGen驱动的使用
  16. python图像转字符画_Python3:图片转字符画
  17. 完全免费软件开发论坛介绍
  18. 【matplotlib】画图怎样将中文为宋体-英文为新罗马字体
  19. 微信小程序怎么添加底部菜单按钮
  20. 一阶矩+二阶矩估计求解一个参数

热门文章

  1. 如何从挫败感到成就感,身为程序员每天都在经历这些!
  2. 南京大学声学基础(第三版)杜功焕第一章
  3. autojs海贼王之家免root脚本
  4. Python源码学习(一)
  5. MBA联考逻辑真题1
  6. “保姆级”车载LIN总线教程(三)-堪称全网“最细”系列
  7. 心理学-在对的时间遇见对的人,不负自己,不负时光。
  8. 货物监控设备开发中,关于EC600S和BG95模块开机方式差异的说明
  9. 驯服烂代码_驯服老虎,收藏框架
  10. linux 云计算 python 零基础 开机流程