1 相机标定常见方法

广义来说,相机标定不单包括成像过程的几何关系标定,还包括辐射关系的标定,本文只探讨几何关系。相机标定是3D计算机视觉(Computer Vision)里从2D图像中提取量测信息的必要步骤。最初发展于摄影测量学(Photogrammetry),后逐渐被大量应用于计算机视觉中。

相机标定一般来说需要参照物或标定物,按照标定物的维数,来分可以分为:

  • 基于三维参照物标定法(3D reference object based calibration):通过相机观测具有较高精度的已知三维信息进行标定解算的方法。标定物一般由两个或者三个正交的平面组成,该方法需要较为昂贵的标定设备和精心设计的标定步骤。在摄影测量学里,最经典的就是利用已知控制点通过共线方程(Collinearity Equation),使用后方交会法(Resection Method)或光束法(Bundle Method )求解。计算机视觉中最流行的标定方法是Roger Y. Tsai(1987). A versatile camera calibration technique for high-accuracy 3D machine vision metrology using off-the-shelf tv cameras and lenses.

  • 基于二维平面标定法(2D plane based calibration):这该类方法中,使用相机对具有某种图案的平面(planar pattern)在不同的方位进行观测。(以张正友标定法(2000)为经典,参见论文:A Flexible New Technique for Camera Calibration

  • 基于一维线标定法(1D line based calibration):使用一组共线的点进行标定解算,通常的使用相机观测绕某一固定点移动的直线,例如悬挂在天花板上的一行小球等。(参见论文:Z. Zhang(2002). Camera calibration with one-dimensional objects

  • 自检校法(Self-calibration):顾名思义,不使用任何标定物,仅仅利用像点间的对应关系进行标定解算,因此也可称之为:基于0维标定物的方法。通常做法是移动相机,对一静态的场景进行成像,通过核线变换后,满足两个代数约束条件,继而可以进行相机标定。虽然不需要标定物,但是却需要大量的参数需要估算,由此也导致较多很难的数学问题。(参见论文:O. D. Faugeras at all(1992). Camera self-calibration: Theory and experiments

  • 除了上述的方法,还有利用灭点( Vanishing points)解算正交方向的方法和只存在旋转情形的标定方法等。

除了上述分类方法外,还有将标定算法分为:传统相机标定法、主动视觉相机标定方法、相机自标定法,感兴趣的话可以进行相关了解。必须要指出的是,上述的方法,不能一概而论地认为某一种方法优于其他方法,具体选择哪种标定方法,完全取决具体的情形,如下简单对比一下几种主要的标定方法:

  • 有标定物法 vs. 自检校法:无论何时,如果我们能够事先进行相机标定,就应该利用标定设备进行相机标定。一般来说,自检校方法很难达到这种事先标定所取得的精度,因为前文已经介绍过,自检校需要对很多参数进行估算,涉及很复杂的数学问题。但是在事先标定不可能实现的情况下,例如用旧电影进行场景重建,这个时候就只能利用自检校的方法。

  • 部分(Partial) vs. 全(full)自检校:部分自检校指的是,针对相机的一部分内参( Intrinsic parameters)进行标定。往往在只能选自检校方法时,情况允许的时候,人们更倾向于使用部分自检校的方法,原因很简单,需要估算的参数会更少,算法相对全参自检校要简单。以使用变焦镜头的相机进行三维重建( 3D reconstruction)为例,合理的做法是解算出部分参数如像素宽高比和像素偏斜度。

  • 3D vs. 2D 标定物:3D标定物通常可以获得很高的精度,因此如果对于标定的精度要求很高而且又负担得起(标定设备相对昂贵得多),就可以选择3D标定物。从全世界计算机视觉的研究者和开发者们的反馈来看,使用2D标定物往往是最佳的选择,使用方便,造价便宜,而且也能获得不错的精度。

  • 1D标定物:通常应用于标定多摄像机之间的相对几何关系以及各个摄像机的内参,做法上是让不同安装位置的多个摄像机对同一组点同时成像观测,通常来讲3D或者2D的标定物很难实现这一点。

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 相机标定:原理简介(二)

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

  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. 相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)

    相机标定 一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标 ...

随机推荐

  1. linux--rbtree 解惑 insert

    rbtree.txt 中insert 操作,为何用2级指针?? 2级指针用的还是不熟.心虚. Inserting data in the tree involves first searching f ...

  2. "随笔"列表 - 按时间先后顺序排列

    这是一个测试 linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器 美化博客园 virtual box虚拟机在linux下设置共享文件夹 纯净版linux (debian)挂载Virtua ...

  3. Numpy的使用规则

    之前安装的python版本是3.7 各种库都是自己一个一个下载安装的 很操心 各种缺功能 后来发现了anaconda 啊 真是一个好东西 简单来说 它就是一个涵盖大部分常用库的python包 一次安装 ...

  4. Java线程:CountDownLatch 与Thread 的 join()

    需求: 主程序中需要等待所有子线程完成后 再继续任务 两种实现方式: 一种使用join() 方法:当在当前线程中调用某个线程 thread 的 join() 方法时,当前线程就会阻塞,直到thread ...

  5. 2015 Multi-University Training Contest 4 hdu 5338 ZZX and Permutations

    ZZX and Permutations Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/O ...

  6. ArcEngine 一些实现代码

    转自原文 ArcEngine 一些实现代码     ●·● 目录: A1 …………实现:鼠标滑过显示要素 tip A2 …………实现:通过鼠标选择要素并高亮显示(ISelectionEnvironme ...

  7. glove入门实战

    前两天怒刷微博,突然发现了刘知远老师分享的微博,顿时眼前一惊.原Po例如以下: http://weibo.com/1464484735/BhbLD70wa 因为我眼下的研究方向是word2vec.暗自 ...

  8. hdu1290

    由二维的切割问题可知,平面切割与线之间的交点有关,即交点决定射线和线段的条数,从而决定新增的区域数. 当有n-1个平面时,切割的空间数为f(n-1).要有最多的空间数.则第n个平面需与前n-1个平面相 ...

  9. mariadb克隆

    oracle有克隆安装,事实上mysql/mariadb相似.仅仅需简单几步就能够直接在异机直接启动. 环境: node01安装完毕的mariadb; node02一个新机器 如今将node01克隆到 ...

  10. nyoj--138--找球号(二)(hash+邻接表)

    找球号(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=1 ...