2 针孔相机模型

常见的相机标定中,使用的相机多为针孔相机(Pinhole camera),也就是大家熟知的小孔成像理论。将其中涉及的坐标系之间的相互转换抽离出来,即为针孔相机模型的核心。

上图所示的模型即为针孔相机模型,当然现在有很多资料对其进行阐述,我这里挑选另一种便于理解的表达方法。这里为了方便阐述,将像平面和物方点置于光学中心的一侧(实际中光学中心位于像平面和物方点之间)。首先,让我们看一下其中的符号:

符号 含义
C 相机的光学中心(optical center)或者称为摄影中心
o 像主点(principal point),是指相机主光轴与像平面之间的交点,位于相片中心附近位置,用像素坐标表示为[u0,v0]T,用毫米单位表示时为[x0,y0]T
f 相机主距(focal length),或称相片主距
M 物方点,即被观测的三维点
m 物方点M在像平面上的像点,是光学中心C与物方点M连线与像平面的交点
o−uv 像平面坐标系,二维笛卡尔坐标系
C−xyz 像空间坐标系,三维笛卡尔坐标系,坐标轴x,y分别与像平面坐标系的u,v平行且具有相同的正方向,右手系
O−XYZ 物方空间坐标系,三维笛卡尔坐标系,定义具有随意性,右手系
(xi,yi,f) 像点m在像空间坐标系C−xyz中的坐标
(xs,ys,zs) 物方点M在像空间坐标系C−xyz中的坐标
(Xs,Ys,Zs) 物方点M在物方空间坐标系O−XYZ中的坐标

从上述符号的含义中,可以看出光学中心C,像点m和物方点M是在一条直线上,具有共线性(collinear),由此引出摄影测量中,赫赫有名的共线方程( Collinearity equation),横贯整个摄影测量学与平差理论:

x−x0=−f R11(X−X0)+R21(Y−Y0)+R31(Z−Z0)R13(X−X0)+R23(Y−Y0)+R33(Z−Z0)y−y0=−f R12(X−X0)+R22(Y−Y0)+R32(Z−Z0)R13(X−X0)+R23(Y−Y0)+R33(Z−Z0)(1)

其矩阵形式为:

⎡⎣⎢X−X0Y−Y0Z−Z0⎤⎦⎥=λR⎡⎣⎢xy−f⎤⎦⎥(2)

其中λ为尺度系数,同一单位制,且两个坐标系之间不存在缩放的时,λ=1.0。

计算机视觉中,使用增广向量的方式表示点,即m~=[u,v,1]T同样表示点m,M~=[X,Y,Z,1]同样表示点M。(至于为什么增加的一维用1,可参见Richard Hartley et all. Multiple View Geometry in Computer Vision,当增加的一维为0时,通常认为是无穷远处平面Π∞,在像平面上的成像)物方三维点M和相片上投影点m之间的关系被描述为:

sm~=A[R  t]M~≡PM~(3)

A=⎡⎣⎢α00γβ0u0v01⎤⎦⎥(4)

P=A[R  t](5)

其中,s是任意的尺度系数,(R,t)被称为外参(Extrinsic parameters)分别表示由物方坐标系经过旋转和平移变换到像空间坐标系中。A被称为相机内参矩阵( Intrinsic matrix),矩阵中(u0,v0)表示像主点坐标,α,β分别表示像平面中沿u,v轴方向像素的比例,也就是像素宽高比。γ参数描述的是像平面坐标轴的偏斜程度,假设图像坐标轴之间的夹角为θ,则γ=αcotθ,如果θ=90°,则γ=0。P是一个3×4的矩阵,被称为为投影矩阵,混合了内参和外参而成。

由上陈述就显而易见,整个相机标定的任务就是要获得物方三维物体与对应的二维图像之间的转换模型参数,转换参数也被分为两类:

  • 外参(Extrinsic 或 external parameters):包括相机的定向(orientation或称旋转(rotation))和定位(location或称平移(translation))信息,也就是上文提及的(R,t),其中R是3×3的矩阵,由3个不相关的角元素组成(关于角元素的定义,并不唯一,主要有分别以x,y,z为主轴的转角系统,角元素的表示方法也不唯一,常用的有欧拉角,旋转向量等),t是3×1的向量,含有3个参数。

  • 内参(Intrinsic 或 internal parameters):也就是描述相机特性的参数,(α,β,γ,u0,v0)。

综上,所有的相机标定方法,本质都是在求取内参和外参中所含的11个参数。

Camera Calibration 相机标定:原理简介(二)的更多相关文章

  1. Camera Calibration 相机标定

    Camera Calibration 相机标定 一.相机标定方法 在opencv中提供了一组函数用于实现相机的标定,标定返回的值包括:相机内参矩阵(fx fy xc yc).相机外参矩阵(R t)以及 ...

  2. Camera Calibration 相机标定:原理简介(五)

    5 基于2D标定物的标定方法 基于2D标定物的标定方法,原理与基于3D标定物相同,只是通过相机对一个平面进行成像,就可得到相机的标定参数,由于标定物为平面,本身所具有的约束条机,相对后者标定更为简单. ...

  3. Camera Calibration 相机标定:原理简介(四)

    4 基于3D标定物的标定方法 使用基于3D标定物进行相机标定,是一种传统且常见的相机标定法.3D标定物在不同应用场景下不尽相同,摄影测量学中,使用的3D标定物种类最为繁杂,如图-1的室内控制场,由多条 ...

  4. Camera Calibration 相机标定:原理简介(一)

    1 相机标定常见方法 广义来说,相机标定不单包括成像过程的几何关系标定,还包括辐射关系的标定,本文只探讨几何关系.相机标定是3D计算机视觉(Computer Vision)里从2D图像中提取量测信息的 ...

  5. Camera Calibration 相机标定:原理简介(三)

    3 绝对圆锥曲线 在进一步了解相机标定前,有必要了解绝对圆锥曲线(Absolute Conic)这一概念. 对于一个3D空间的点x,其投影空间的坐标为:x~=[x1,x2,x3,x4]T.我们定义无穷 ...

  6. Camera Calibration 相机标定:Opencv应用方法

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49427383 Opencv中Camer ...

  7. 【视频开发】【计算机视觉】相机标定(Camera calibration)原理、步骤

    相机标定(Camera calibration)原理.步骤 author@jason_ql(lql0716)  http://blog.csdn.net/lql0716 在图像测量过程以及机器视觉应用 ...

  8. 相机标定:PNP基于单应面解决多点透视问题

              利用二维视野内的图像,求出三维图像在场景中的位姿,这是一个三维透视投影的反向求解问题.常用方法是PNP方法,需要已知三维点集的原始模型. 本文做了大量修改,如有不适,请移步原文:  ...

  9. 【视频开发】【计算机视觉】相机标定(Camera calibration)《二》

    简介 摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵 P 的过程,下面相关的部分主要参考UIUC的计算机视觉的课件(网址Sprin ...

随机推荐

  1. 前端JS 异常处理实践

    前端异常处理,常见的场景是在“异步请求”的操作过程当中,所谓“异常”---就是“不正常”,程序的运行不符合我们的预期. 程序“正常”的处理,是我们在开发过程当中的“重中之重”,是必要的“硬性指标”. ...

  2. BZOJ 4016 [FJOI2014]最短路径树问题 (贪心+点分治)

    题目大意:略 传送门 硬是把两个题拼到了一起= = $dijkstra$搜出单源最短路,然后$dfs$建树,如果$dis_{v}=dis_{u}+e.val$,说明这条边在最短路图内,然后像$NOIP ...

  3. linux下如何查看cpu信息

    linux的cpu信息可以从文件中cpuinfo读取. 执行命令: # cat  /proc/cpuinfo   我们一般看到的processor是逻辑核. 它的计数是从0开始的,例如这里看到的是31 ...

  4. java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap

    最近在使用java PiO导入导出Excle在windos本机上运行没有问题: 但是!!问题来了!放到Linux服务器上部署后出现异常 java.lang.NoClassDefFoundError: ...

  5. 前后端分离开发,跨域访问的apche设置

    1,如何让Apache支持跨域访问呢? 步骤: 修改httpd.conf,windows中对应的目录是:C:\wamp\bin\apache\Apache2.4.4\conf\httpd.conf 把 ...

  6. ES学习——分析器和自定义分析器

    简介 es在对文档进行倒排索引的需要用分析器(Analyzer)对文档进行分析.建立索引.从文档中提取词元(Token)的算法称为分词器(Tokenizer),在分词前预处理的算法称为字符过滤器(Ch ...

  7. 轻松学习JavaScript十七:JavaScript的BOM学习(二)

    JavaScript计时事件 通过使用JavaScript中的BOM对象中的window对象的两个方法就是setTimeout()方法和claerTimeout()方法,我们 有能力作到在一个设定的时 ...

  8. ThinkPHP5.0框架开发--第2章 TP5.0架构

    ThinkPHP5.0框架开发--第2章 TP5.0架构 第2章 TP5.0架构 ================================================== 上次复习 1.如 ...

  9. nyoj--55--懒省事的小明(STL优先队列)

    懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述       小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分 ...

  10. 26.boost文件库

    #define _CRT_SECURE_NO_WARNINGS #include <boost/filesystem/operations.hpp> #include <boost/ ...