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. laravel 常用单词翻译

    1.ORM:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping), 翻译为:对象关系映射. 是一种程序技术,用于实现面向对象编程语言里不同类型系统的 ...

  2. MySQL的读写分离的几种选择

    MySQL的读写分离的几种选择 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 原址如下: http://heylinux.com/archives/1004. ...

  3. Swoole WebSoctet 使用 zlib 压缩之 PHP 与 pako.js

    一些理论知识 先说一下deflate算法吧,deflate是zip压缩文件的默认算法, 其实deflate现在不光用在zip文件中, 在7z, xz等其他的压缩文件中都用, 实际上deflate只是一 ...

  4. python 面向对象 类的内置方法

    判断是不是类cls的对象 class A: pass a = A() print(isinstance(a,A)) 判断类sub是不是super的子类 class A: pass class B(A) ...

  5. Python3的URL编码解码

    前言 博主最近在用python3练习一些爬虫脚本的时候,发现一些url的编码问题,在浏览器提交请求api时,如果url中包含汉子,就会被自动编码掉.呈现的结果是 ==> %xx%xx%xx.如果 ...

  6. react中的跨域问题

    react中的跨域问题

  7. SQL SERVER-NULL

    SQL SERVER判断NULL的函数 ISNULL().NVL().IFNULL() 和 COALESCE() 函数 来自为知笔记(Wiz)

  8. ASP.NET-优化websit

    如何优化一个网站 1.如果是数据库的问题则尝试添加索引.优化SQL语句,如果是算法的问题,则优化算法. 2.如果对于一些不经常改动的页面可以使用静态页技术! 3.对于一些数据不需要及时更新的而且取数据 ...

  9. Java IO(三) 之 FileInputStream

    前言: 对于文件系统中的文件.都能够使用FileInputStream流类以二进制的形式进行读取.可是因为Java本身的定位在JVM之上,没有处理计算机底层的能力.因此一些涉及底层处理的方法都是使用n ...

  10. [jzoj 4879] [NOIP2016提高A组集训第11场11.9] 少女觉 解题报告 (贪心)

    题目链接: http://172.16.0.132/senior/#main/show/4879 题目: 在幽暗的地灵殿中,居住着一位少女,名为古明地觉.据说,从来没有人敢踏入过那座地灵殿,因为人们恐 ...