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. [JZOJ]100047. 【NOIP2017提高A组模拟7.14】基因变异

    21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的变异息息相关,考察基因变 ...

  2. H5知识点

    一.总体变化 1.H5文档结构 <!DOCTYPE html> <html> <head> <title>  这是标题  </title> ...

  3. java类的属性

    类的嵌套!!!!!!!!!! 首先我们创建一个学生卡卡号的一个类,这个类有两个属性,校园卡号和银行卡号 package cuteSnow; public class StudentCard { pub ...

  4. http响应的封装

    响应的封装: 资源的初始化 分析请求响应信息,根据状态响应码,发送不同的状态码 浏览器根据状态信息,做出不同的执行 构建正文,也就是根据浏览器客服端的请求发送响应信息: 发送响应:code 是状态码, ...

  5. nginx 查看每秒有多少访问量

    nginx访问量统计 1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l 2.统计访问URL统计PV awk '{print ...

  6. 一步一步跟我学习hadoop(7)----hadoop连接mysql数据库运行数据读写数据库操作

        为了方便 MapReduce 直接訪问关系型数据库(Mysql,Oracle).Hadoop提供了DBInputFormat和DBOutputFormat两个类.通过DBInputFormat ...

  7. ACdream 1127(Base Station-树状数组-2个约束条件)

    Base Station Time Limit: 20000/10000MS (Java/Others)Memory Limit: 512000/256000KB (Java/Others) Subm ...

  8. C++模板中的静态

    #include <iostream> #include <stdlib.h> using namespace std; template<class T> cla ...

  9. 【大话QT之十】实现FTP断点续传

    应用需求: 网盘开发工作逐步进入各部分的整合阶段,当用户在client改动或新添加一个文件时.该文件要同步上传到server端相应的用户文件夹下,因此针对传输数据(即:上传.下载)这一块如今既定了三种 ...

  10. 区间不相交&区间覆盖

    //code by virtualtan 2018 寒7 区间不相交 #include <cstdio> #include <algorithm> #define MAXN 1 ...