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. 你应该更新的 Java 知识

    作者:dreamhead 出处:<你应该更新的Java知识>系列 你应该更新的 Java 知识 Tag:你应该更新的Java知识 Java Guava 集合 版权声明:转载时请以超链接形式 ...

  2. UVALive-8078 Bracket Sequence 简单dp

    题目链接:https://cn.vjudge.net/problem/UVALive-8078 题意 括号序列T是这样定义的: T是个空的 T是(T), {T}, 或者 [T] T是两个T组成的,比如 ...

  3. 大道至简第一章读后感 Java伪代码形式

    观看了大道至简的第一章之后,从愚公移山的故事中我们可以抽象出一个项目, 下面用Java 伪代码的形式来进行编写: import java(愚公移山的故事) //愚公移山 public class yu ...

  4. STM32使用HAL库实现ADC单通道转换

    STM32的ADC转换还是很强大的,它具有多个通道选择,这里我就不细说,不了解的可以自行百度,这里只是选取单通道,实现ADC转换.在文章开始之前,我说一下数据左对齐跟右对齐的差别,以前一直糊里糊涂的, ...

  5. invalid application of `sizeof' to incomplete type `char[] '

    在写代码时,我想用extern来关联一个数组,然后利用sizeof计算数组的大小,代码如下: ... extern char a[]; #define b size=(sizeof(a)/sizeof ...

  6. SpringBoot2.0中使用自定义properties文件

    一.在resources目录下添加自定义的test.properties文件 test.properties内容如下: host=127.0.0.1 port=8080 二.编写一个读取配置文件内容的 ...

  7. HH实习(hpu1287)(斐波那契运用)

    HH实习 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 44  Solved: 29 [Submit][id=1287">Status ...

  8. Detours改动段属性漏洞

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  9. POJ 2041 Unreliable Message

    简单模拟.依照题意处理一下字符串就可以. 应该是写题号写错了,本来我在VirtualJudge是加入的POJ 并查集与生成树的题. #include<cstdio> #include< ...

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

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