相机成像

设世界坐标为(Xw,Yw,Zw)(X_w,Y_w,Z_w)(Xw​,Yw​,Zw​),相机坐标为(Xc,Yc,Zc)(X_c,Y_c,Z_c)(Xc​,Yc​,Zc​),则世界坐标系和相机坐标系需要一个矩阵变换R以及一个位移矩阵T,公式如下:
[XcYcZc1]=[RT01][XwYwZw1]\begin{bmatrix} X_c\\Y_c\\Z_c\\1 \end{bmatrix} = \begin{bmatrix} R & T\\0 & 1 \end{bmatrix} \begin{bmatrix} X_w\\Y_w\\Z_w\\1 \end{bmatrix} ⎣⎢⎢⎡​Xc​Yc​Zc​1​⎦⎥⎥⎤​=[R0​T1​]⎣⎢⎢⎡​Xw​Yw​Zw​1​⎦⎥⎥⎤​

相机坐标和平面坐标系根据三角形相似原理:

Zc[xy1]=[f000f0001][XcYcZc]Z_c \begin{bmatrix} x\\ y \\ 1 \end{bmatrix} = \begin{bmatrix} f & 0 & 0\\ 0 & f & 0 \\0 & 0 & 1 \end{bmatrix} \begin{bmatrix} X_c\\Y_c\\Z_c\\ \end{bmatrix} Zc​⎣⎡​xy1​⎦⎤​=⎣⎡​f00​0f0​001​⎦⎤​⎣⎡​Xc​Yc​Zc​​⎦⎤​

从平面坐标系到图像坐标系:

设(u,v)代表图像坐标系坐标,设每一个像素的物理尺寸为dx、dy,则有:
u=x/dx+u0v=y/dy+v0u0和v0图像长宽的一半u= x/dx + u_0 \\ v= y/dy + v_0 \\ u_0和v_0 图像长宽的一半 u=x/dx+u0​v=y/dy+v0​u0​和v0​图像长宽的一半
所有等式综合起来得到图像上点坐标(u,v)与世界坐标系的关系
[uv1]=1ZcAR[XwYwZw]\begin{bmatrix} u\\v \\1 \end{bmatrix} = \frac{1}{Z_c}AR \begin{bmatrix} X_w\\Y_w\\Z_w \end{bmatrix} ⎣⎡​uv1​⎦⎤​=Zc​1​AR⎣⎡​Xw​Yw​Zw​​⎦⎤​
将前面三个数表示为一个9x9矩阵,然后化简:
u=m0,0Xw+m0,1Yw+m0,2Zwm2,0Xw+m2,1Yw+m2,2Zwv=m1,0Xw+m1,1Yw+m1,2Zwm2,0Xw+m2,1Yw+m2,2Zwu = \frac{m_{0,0}X_w + m_{0,1}Y_w + m_{0,2}Z_w}{m_{2,0}X_w + m_{2,1}Y_w + m_{2,2}Z_w} \\ v = \frac{m_{1,0}X_w + m_{1,1}Y_w + m_{1,2}Z_w}{m_{2,0}X_w + m_{2,1}Y_w + m_{2,2}Z_w} \\ u=m2,0​Xw​+m2,1​Yw​+m2,2​Zw​m0,0​Xw​+m0,1​Yw​+m0,2​Zw​​v=m2,0​Xw​+m2,1​Yw​+m2,2​Zw​m1,0​Xw​+m1,1​Yw​+m1,2​Zw​​

对于世界坐标系下平行的两条直线,设方向为D{dx,dy,dy}D\{d_{x},d_{y},d_{y}\}D{dx​,dy​,dy​}则给定直线上一点A(ax,ay,az)A(a_x,a_y,a_z)A(ax​,ay​,az​),该直线上任意一点表示为X(λ)=A+λDX(\lambda)= A + \lambda DX(λ)=A+λD,带入上式得:
u=m0,0(ax+λdx)+m0,1(ay+λdy)+m0,2(az+λdz)m2,0(ax+λdx)+m2,1(ay+λdy)+m2,2(az+λdz)v=m1,0(ax+λdx)+m1,1(ay+λdy)+m1,2(az+λdz)m2,0(ax+λdx)+m2,1(ay+λdy)+m2,2(az+λdz)u = \frac{m_{0,0}(a_x+\lambda d_x) + m_{0,1}(a_y+\lambda d_y) + m_{0,2}(a_z+\lambda d_z)}{m_{2,0}(a_x+\lambda d_x) + m_{2,1}(a_y+\lambda d_y) + m_{2,2}(a_z+\lambda d_z)} \\ v = \frac{m_{1,0}(a_x+\lambda d_x) + m_{1,1}(a_y+\lambda d_y) + m_{1,2}(a_z+\lambda d_z)}{m_{2,0}(a_x+\lambda d_x) + m_{2,1}(a_y+\lambda d_y) + m_{2,2}(a_z+\lambda d_z)}\\ u=m2,0​(ax​+λdx​)+m2,1​(ay​+λdy​)+m2,2​(az​+λdz​)m0,0​(ax​+λdx​)+m0,1​(ay​+λdy​)+m0,2​(az​+λdz​)​v=m2,0​(ax​+λdx​)+m2,1​(ay​+λdy​)+m2,2​(az​+λdz​)m1,0​(ax​+λdx​)+m1,1​(ay​+λdy​)+m1,2​(az​+λdz​)​
当世界坐标系下X(λ)中λX(\lambda)中\lambdaX(λ)中λ趋于无穷大时,可以得到极限:
u=m0,0dx+m0,1dy+m0,2dzm2,0dx+m2,1dy+m2,2dzv=m1,0dx+m1,1dy+m1,2dzm2,0dx+m2,1dy+m2,2dzu = \frac{m_{0,0}d_x + m_{0,1}d_y + m_{0,2}d_z}{m_{2,0}d_x + m_{2,1}d_y + m_{2,2} d_z} \\ v = \frac{m_{1,0}d_x + m_{1,1}d_y + m_{1,2}d_z}{m_{2,0}d_x + m_{2,1}d_y + m_{2,2} d_z}\\ u=m2,0​dx​+m2,1​dy​+m2,2​dz​m0,0​dx​+m0,1​dy​+m0,2​dz​​v=m2,0​dx​+m2,1​dy​+m2,2​dz​m1,0​dx​+m1,1​dy​+m1,2​dz​​
所以对于三维世界平行线上无穷远的点来说,通过相机映射后,两条平行线最终会相交于一点,该点为图像的灭点。

参考博客

透视变换原理、相机成像、灭点相关推荐

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

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chentravelling/article/details/53558096 0.前言 最近整理了& ...

  2. ORB-SLAM2从理论到代码实现(四):相机成像原理、基本矩阵、本质矩阵、单应矩阵、三角测量详解

    由于ORBmatcher.cc中有三角化和重投影等内容,所有我先写相机成像等多视图几何内容. 1. 相机的成像原理 假设空间中有一点P,它在世界坐标系中的坐标为,在相机坐标系中的坐标为,在图片中的像素 ...

  3. 相机成像与校正原理:将外部世界进行降维

    简 介: 本文根据 相机标定(三)-相机成像模型 中的内容整理而成,初步介绍了相机的成像模型.最后介绍了利用OpenCV中的 calibrateCamera函数进行相机参数校正的过程. 关键词: 相机 ...

  4. 【自动驾驶】16.计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换

    本篇博客为转载,我对其中的细节添加了一些说明. 原文链接:https://blog.csdn.net/chentravelling/article/details/53558096 0.前言 最近整理 ...

  5. 相机成像原理_【科研进展】动态虚拟相机:探索三维视觉成像新方法

    由于微信公众号试行乱序推送,您可能没办法准时收到"爱光学"的文章.为了让您第一时间看到"爱光学"的新鲜推送, 请您: 1. 将"爱光学"点亮 ...

  6. 【图像处理】相机成像原理

    这里对于相机成像原理做一个简单的介绍. 如下图所示,在最左端的顶点为相机,它的镜头正对着地面上的点O,横向视场角为a,纵向视场角为θ,它所看到的区域就是就是如下所示的四边形,存在一定的投影变换. 而地 ...

  7. 相机成像原理_照相机、摄影机的成像原理

    电影让不同时空下的你我相遇 写在开头 后面将要学习的焦距.景深以及镜头的运动相比影像中的画框.构图.景别.角度这几个概念理解起来更有难度,为了更好地理解它们的含义,也为了"知其然,知其所以然 ...

  8. 【自动驾驶】23.相机成像究竟是成在像平面还是成在焦平面

    建议观看这个视频之后,你就全明白了:针孔相机和透镜. 光心是透镜主轴与透镜平面的交点,相机镜头的主轴很明显,就是沿镜头中每个镜片中心穿过的直线. 而透镜平面就很难确定了,相机镜头是通过复杂的镜片组来模 ...

  9. 相机成像模型、相机内参、外参、以及相机标定

    看了一圈各个平台讲解相机模型.相机标定的文章,很多只是简单罗列几个公式,其中的细节都没说明,本着学习的出发点写下这篇文章,希望能给初学者解惑.本文主要讲解相机模型,一步步推导从世界坐标系到图像坐标系的 ...

最新文章

  1. 15万人调查发现:做博后越久,一辈子挣的钱越少
  2. linux下的apache、mysql自启动
  3. 完美脱壳组装PE的一般步骤(Obsidium1.3.6.4 DEMO 主程序)
  4. Entity Framework 4.1(转)
  5. vue.js的一些小语法v-bind,v-if,v-show,v-else
  6. android 7.0 禁止 imei,Android一些适配
  7. Spring Boot 学习笔记(三)Spring boot 中的SSM
  8. .idea文件夹是做什么的_33 个 IDEA 最牛配置,写代码太爽了!
  9. PiFlow大数据流水线系统v0.9源码
  10. 在ASP.NET中防止注入攻击
  11. ActiveMq工作笔记002---Centos7.3安装ActiveMq
  12. 第27章 正则表达式
  13. 阿里云windows 2012服务器部署java web程序教程
  14. java代码计算两个时间相差的天数:
  15. uniapp 小程序支付功能
  16. 打造自己的游戏修改器和内存补丁
  17. 过程计算机系统 pcs,过程控制系统(PCS)
  18. Python基础——继承、多态
  19. 我是漂移王-说明介绍
  20. CF633C Spy Syndrome 2(字典树+dp)

热门文章

  1. 《MobileNetV2: Inverted Residuals and Linear Bottlenecks》
  2. cadence电阻在哪个库_cadence元件库介绍
  3. Hive的学习心得-个人理解什么是hive
  4. 维基百科著名程序员列表大全
  5. python中abs和fabs的区别_Python - abs vs fabs
  6. iOS 查看Realm数据库表
  7. ajax hapi上传文件,在hapi框架里使用ajax提交表单数据,但是服务端接收到的数据是空对象。怎么办啊?...
  8. NodeJS-框架express-Koa-Hapi的区别
  9. IDEA 中如何完成 Git 版本回退?
  10. Hexo | NexT打造一个炫酷博客