相机成像过程及相机内参详解

一、定义介绍

  本节以小孔成像模型为例,详细介绍了普通单目相机的成像过程,相机内参及内参矩阵的详细含义。本节所述的成像原理与大部分相机成像原理类似,读懂此节可满足大部分与单目视觉相关的工作,也可以此类推到更复杂的内容。

二、原理解读

(一)成像过程

1.坐标系

  在相机成像过程中存在三个坐标系(也可加上世界坐标系看作四个):相机坐标系(也称为光心坐标系)、物理(成像平面)坐标系、像素坐标系

相机坐标系:如图所示,为o-x-y-z坐标系,对应相机平面。以光心O为原点,z轴指向相机正前方,y轴向下,x轴向右。我们所谓的真实世界中的物体的坐标基于世界坐标系,此处的相机坐标系是经过世界坐标系转换来的,但世界坐标系到相机坐标系是属于外参,因此,我们人为地将物体看作基于相机坐标系即可,本质上没有太大影响。

物理坐标系:如图所示,为o’-x’-y’坐标系,对应物理平面。物理坐标系是个二维坐标系(包括后面的像素坐标系)!并非相机坐标系的三维。物理(成像平面)坐标系本质上就是用来刻度感光芯片(如CMOS)的平面,一般物理坐标系原点就是感光芯片的中心点(也有可能不是,根据具体厂家生产不同决定)。物理平面就是感光芯片上的图片。

像素坐标系:如图所示,为o’’-u-v坐标系,对应像素平面。由物理平面映射而成,相当于改变物理坐标系原点、改变基于物理坐标系下的成像平面的缩放倍数,可以理解为像素坐标系和物理坐标系处于同一个平面。图像成像到像素平面其实就可以理解为平时电脑上看到的图片(PNG、JEPG等)。

f f f:焦距,相机光心到物理成像平面的距离。一般相机在生产时就固定了,由厂家给出;也存在变焦相机,指的就是 f f f是可变的。比如1~5mm变焦相机,指的就是相机的焦距 f f f可以在1~5mm内变动,一般变焦相机通过硬件微型电机前后移动镜头来实现变焦功能。

2.成像转换过程

  假设镜头前有一实际的点P,从P转到 p p p的过程即是成像转换的过程。我们以相机的光心为原点,那么基于相机坐标系,这个点P的坐标就为(X, Y ,Z)。此时我们得到了一个实际点(有一个点,实际物体看做很多很多个点就是了)在相机坐标系下的坐标,接下来要做的就是通过相机坐标系下的点,转而获得该点基于物理坐标系下的坐标;再从基于物理坐标系下获得的坐标,转而获得该点基于像素坐标系下的坐标,这样就完成了实际物体到图像的成像过程。下面分步解释几个转换:

(1)从相机坐标系到物理坐标系

  上面我们假设相机坐标系下有一点P(X,Y,Z),投影到成像平面坐标系下为P’(X’,Y’)。如图所示,根据假设,我们已知X、Y、Z和 f f f(焦距),由于是小孔成像模型,成像平面与相机平面平行,且两坐标系原点同在相机坐标系Z轴。依据相似三角形原理,我们不难求出P’(X’,Y’)的坐标,这里没有Z轴,因为物理坐标系是二维的。以下为推到公式:
因相似三角形原理,且小孔成像导致图像倒置180度
得 − X ′ f = X Z \frac{-X'}{f}=\frac{X}{Z} f−X′​=ZX​
得 X ′ = f − X Z X'=f\frac{-X}{Z} X′=fZ−X​
同理可得 Y ′ = f − Y Z Y'=f\frac{-Y}{Z} Y′=fZ−Y​

(2)从物理坐标系到像素坐标系

  得到P’(X’,Y’)后,从物理坐标系映射到像素坐标系其实是一种人为的过程,如图所示,以左上角为像素坐标系原点只是一种人为约定的习惯。将物理平面的所有点都映射到像素平面,不难理解,需要先进行缩放,然后加上点的偏移。如图,P’(X’,Y’)映射到像素平面后为 p ( u , v ) p(u,v) p(u,v)但因为小孔成像模型中(1)从相机坐标系到物理坐标系这个过程,会导致图像翻转180度,因此,一般情况下(有些相机设备可能不是这样),成像平面上右下角的点,就应该是像素平面的原点。我们假设X’轴、Y’轴缩放倍数为 α 、 β α、β α、β,点偏移为 c x 、 c y c_x、c_y cx​、cy​,那么,我们就可以得到点 p ( u , v ) p(u,v) p(u,v)的坐标。
u = α X ′ + c x = α f − X Z + c x u=αX'+c_x=αf\frac{-X}{Z}+c_x u=αX′+cx​=αfZ−X​+cx​

v = β X ′ + c y = β f − Y Z + c y v=βX'+c_y=βf\frac{-Y}{Z}+c_y v=βX′+cy​=βfZ−Y​+cy​

虽然说小孔成像导致图像倒置,但这些都是人为规定的,我们也可以将成像平面看做是在相机前面,也是变成如图所示样子(从 − f -f −f处的蜡烛变成了 f f f处红色的蜡烛)

这样一来,我们就把负号去掉了,一般情况下相机生成厂家也都是这么做的(他们就是直接去除负号)。因此,点 p ( u , v ) p(u,v) p(u,v)的坐标又可以写成
u = α X ′ + c x = α f X Z + c x u=αX'+c_x=αf\frac{X}{Z}+c_x u=αX′+cx​=αfZX​+cx​

v = β X ′ + c y = β f Y Z + c y v=βX'+c_y=βf\frac{Y}{Z}+c_y v=βX′+cy​=βfZY​+cy​

(二)相机内参矩阵

1.推导内参矩阵

我们用 f x f_x fx​替换 α f αf αf,用 f y f_y fy​替换 β f βf βf;则上式变为
u = f x X Z + c x u=f_x\frac{X}{Z}+c_x u=fx​ZX​+cx​

v = f y Y Z + c y v=f_y\frac{Y}{Z}+c_y v=fy​ZY​+cy​

然后再将上式写成矩阵的形式,就变成了
( u v 1 ) = ( f x Z 0 c x Z 0 f y Z c y Z 0 0 1 Z ) ∗ ( X Y Z ) \begin{pmatrix} u\\ v\\ 1\end{pmatrix}=\begin{pmatrix} \frac{f_x}{Z}&0&\frac{c_x}{Z}\\ 0&\frac{f_y}{Z}&\frac{c_y}{Z}\\ 0&0&\frac{1}{Z}\end{pmatrix}*\begin{pmatrix} X\\ Y\\ Z\end{pmatrix} ⎝⎛​uv1​⎠⎞​=⎝⎛​Zfx​​00​0Zfy​​0​Zcx​​Zcy​​Z1​​⎠⎞​∗⎝⎛​XYZ​⎠⎞​

提取出K,变成下式
( u v 1 ) = 1 Z ( f x 0 c x 0 f y c y 0 0 1 ) ∗ ( X Y Z ) \begin{pmatrix} u\\ v\\ 1\end{pmatrix}=\frac{1}{Z}\begin{pmatrix} f_x&0&c_x\\ 0&f_y&c_y\\ 0&0&1\end{pmatrix}*\begin{pmatrix} X\\ Y\\ Z\end{pmatrix} ⎝⎛​uv1​⎠⎞​=Z1​⎝⎛​fx​00​0fy​0​cx​cy​1​⎠⎞​∗⎝⎛​XYZ​⎠⎞​

将Z提取到前面,上式便写成
Z p = K P Zp=KP Zp=KP

此时,我们就得到了内参矩阵,K( ( f x 0 c x 0 f y c y 0 0 1 ) \begin{pmatrix} f_x&0&c_x\\ 0&f_y&c_y\\ 0&0&1\end{pmatrix} ⎝⎛​fx​00​0fy​0​cx​cy​1​⎠⎞​)就是内参矩阵

2.内参矩阵的意义

通过上面,我们得到了内参矩阵K: ( f x 0 c x 0 f y c y 0 0 1 ) \begin{pmatrix} f_x&0&c_x\\ 0&f_y&c_y\\ 0&0&1\end{pmatrix} ⎝⎛​fx​00​0fy​0​cx​cy​1​⎠⎞​
其中, f x = α f f_x=αf fx​=αf, f x f_x fx​就是 f f f(焦距)和 α α α(像素平面u轴缩放倍数)的乘积;
f y = β f f_y=βf fy​=βf, f y f_y fy​就是 f f f(焦距)和 β β β(像素平面v轴缩放倍数)的乘积;
c x c_x cx​就是物理平面与像素平面u轴的偏移
c y c_y cy​就是物理平面与像素平面v轴的偏移

来自:九七的视觉工程
作者原创文章,文章版权归本文作者所有,未经作者同意请勿以任何方式进行复制、转载等盗版操作,请勿用于商业、违法用途!违者自行承担法律责任!

九七的视觉工程 | 普通单目相机成像过程及相机内参详解相关推荐

  1. DROID-SLAM: 单目、双目、RGBD相机的深度视觉SLAM

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨泡泡机器人SLAM 标题:DROID-SLAM: Deep Visu ...

  2. 3D视觉(二):单目摄像头的标定与校正

    3D视觉(二):单目摄像头的标定与校正 文章目录 3D视觉(二):单目摄像头的标定与校正 一.相机模型 1.机器车坐标系到相机坐标系 2.相机坐标系到归一化平面坐标系 3.归一化平面坐标畸变 4.归一 ...

  3. 百度AI市场热品试用 | 迪威泰单目宽动态人脸识别相机

    由于项目的集成需要,试用了迪威泰这款单目宽动态人脸识别相机 产品包装 把塑封包装和USB2连接线从盒子中取出,发现是一款小巧的黑色摄像头,摄像头上有一个金属支架,镜头有橡胶盖镜保护着. 这是一款板机型 ...

  4. jQuery 表单验证插件,jQuery Validation Engine用法详解

    jQuery 表单验证插件,jQuery Validation Engine用法详解 功能强大的 jQuery 表单验证插件,适用于日常的 E-mail.电话号码.网址等验证及 Ajax 验证,除自身 ...

  5. 图像工程的读书笔记 图像成像过程

    图像工程的读书笔记  图像成像过程 成像是一个复杂的过程,当成像的目的是图像分析时,常需考虑下面的三个问题: 1几何关系:在图像中什么地方可发现目标,这需要了解图像的成像的变换的知识. 2放射性质:图 ...

  6. Java调用SMSLib用单口短信猫发送短信详解

    技术园地 当前位置:短信猫网站主页 > 技术园地 > [转载]Java调用SMSLib用单口短信猫发送短信详解 发布时间:2017/02/09 点击量:620 SMSLib是Apache的 ...

  7. SpringBoot+STOMP 实现聊天室(单聊+多聊)及群发消息详解

    上篇系列文章:springboot+websocket构建在线聊天室(群聊+单聊) 最近发现stomp协议来实现长连接,非常简单(springboot封装的比较好) 本系列文章: 1.springbo ...

  8. 单目、双目及深度相机比较

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 1.mono 优点: 结构简单,成本低,便于标定和识别 缺点: 在 ...

  9. 相机模型:单目、双目、深度相机模型及相机畸变

    针孔模型 坐标系 首先定义名词: 光轴:各坐标系的Z轴方向 光心:光轴的中心点 主点:光轴同图像平面的交点 焦距:光心到图像平面的距离 相机通常存在四个相关的坐标系:世界坐标系.相机坐标系.像素坐标系 ...

最新文章

  1. 【年终总结】2019年有三AI知识星球做了什么,明年又会做什么
  2. 阿联酋esma认证_阿联酋无人驾驶汽车预计2021年上路
  3. VM-ESXI 相关常用命令(Updateing)
  4. vb 通过php连接mysql数据库连接_php连接mysql数据库
  5. 中国剩余定理-模版(互质版)
  6. 需要编写支持英特尔 x86 的 Android* 游戏应用? 此处的样本可为您提供帮助!
  7. Javascript .map文件-JavaScript源地图
  8. python---windows中的文件路径书写的错误
  9. VMware Converter迁移linux系统虚拟机
  10. c语言输出所有英文字母,菜鸟求助,写一个随机输出26个英文字母的程序
  11. 编译OpenJDK8 b232版本
  12. 案例式c语言实验答案,C语言课后实验设计答案
  13. 如何破解无线网密码进行上网
  14. 汽车知识待解决作业题
  15. SkyWalking Agent数据采集和上报原理浅析
  16. html地址查询,根据地址查询经纬度.html
  17. MATLAB数据转化num,str,cell,char
  18. 5.8 使用轮廓化描边命令制作心形艺术图标 [Illustrator CC教程]
  19. 三维欧几里德空间中两个向量叉积的问题
  20. 用Lua实现基于观察者模型的游戏成就系统

热门文章

  1. python播放视频没有声音_下面这段代码播放的视频没有声音,怎样才能连声音也一起播放呢?...
  2. 2021-03-13 15:41:23.367561: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could no
  3. macOS Monterey更新下载太慢?macOS Monterey官方原版系统高速下载教程
  4. BlackBerry 10使用Google TTS做中文文本朗读,开发语言C++ Qt Cascade
  5. at91sam9260中断驱动
  6. vue-devtools插件的下载和安装
  7. 一元多项式加法——链表案例
  8. WPF 制作侧边栏菜单之MenuItem
  9. 删除超级巡警免疫文件夹(无害)..
  10. 最全阿里云服务器建设网站流程(图文教程)