5 基于2D标定物的标定方法

基于2D标定物的标定方法,原理与基于3D标定物相同,只是通过相机对一个平面进行成像,就可得到相机的标定参数,由于标定物为平面,本身所具有的约束条机,相对后者标定更为简单。经典算法为Z. Zhang(PAMI, 2000) A Flexible New Technique for Camera Calibration。其算法已经被收入Opencv(2004),最常用的标定图案是棋盘格图案,如下图:

5.1 单应性矩阵

对于2D标定平面,抑或称为标定板,不妨假设,平面上点的增广齐次向量[X,Y,Z,1]满足Z=0,同时对于旋转矩阵R的每一列表示为一个列向量记为ri,则根据相机的投影方程:

s⎡⎣⎢uv1⎤⎦⎥=A[r1  r2  r3  t]⎡⎣⎢⎢⎢XY01⎤⎦⎥⎥⎥=A[r1  r2  t]⎡⎣⎢XY1⎤⎦⎥(1)

因为点[X,Y]T仍表示的是三维空间点坐标,只是由于标定使用平面的特殊性,将Z=0省略,因此我们仍然使用统一的M符号表示,与其对应M~=[X,Y,1]T表示该点的其次向量,则公式(1)可简记为:

sm~=HM~  with H=A[r1  r2  t](2)

H被称为单应性矩阵(Homography matrix)。

5.2 内参约束条件

对于单应性矩阵H,我们也将其按照列向量的方式表示:H=[h1  h2  h3], 则有:

[h1  h2  h3]=λA[r1  r2  t](3)

其中,λ是一个任意的系数,因为r1,r2是正交向量,因此有:

rT1r2=hT1A−TA−1h2=0(4)

rT1r1=hT1A−TA−1h1=rT2r2=hT2A−TA−1h2(5)

对于一个单应性矩阵,公式(4,5)是两个内参的基本约束。单应性矩阵有9个元素,但可以由8个独立不相关的元素表示,也就是说投影变换有8个自由度,而我们只有6个外参元素(3个旋转元素和3个平移元素),因此两个内参约束条件的意义就在于此。在原理简介(三)中,我们已经了解到A−TA−1描述的就是IAC(Image of the absolute conic),后文将对此进行解释。

5.3 几何解释

现在让我们来分析公式(4,5)与绝对圆锥曲线的关系。在像空间坐标系中,存在下面的等式:

[r3rT3t]T⎡⎣⎢⎢⎢xyzw⎤⎦⎥⎥⎥=0(6)

当w=0时就是我们前面解释的改点位于无穷远处。我们想象标定板所在平面与该无穷远处平面相交于一点,则点[r10]和[r20]是相交直线上的两个特殊点,线上的其他点都可以用这两个点线性表示:

x∞=a[r10]+b[r20]=[ar1+br20](7)

现在让我们看一下上述的交线和绝对圆锥曲线的交点,原理简介(三)已经介绍点x∞满足:xT∞x∞=0,也即(ar1+br2)T(ar1+br2)=0  ⇒  a2+b2=0(r1与r2正交)。因此b=±ai,  其中i2=−1,公式(7)可写为:

x∞=a[r1±ir20](8)

其在图像中的投影点为:

m∞=A(r1±ir2)=h1±ih2(9)

因为点m∞位于IAC上,有:

(h1±ih2)TA−TA−1(h1±ih2)=0(10)

因此等式(10)左边的实部与虚部都为0,也就是公式(4,5)这两条约束条件。

5.4 闭合解

现在开始讲解如何高效求解本方法的相机标定问题。做法是,首先获得分析解,然后初始估计值基于最大似然准则进行非线性优化,这些都将逐步进行讲解。

令:

B=A−TA−1=⎡⎣⎢B11B12B13B12B22B23B13B23B33⎤⎦⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢1α2−γα2βv0γ−u0βα2β−γα2βγ2α2β2+1β2−γ(v0γ−u0β)α2β2−v0β2v0γ−u0βα2β−γ(v0γ−u0β)α2β2−v0β2(v0γ−u0β)2α2β2+v20β2+1⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥(11)

因此可以看出,B是一个对称矩阵,由六个元素组成:

b=[B11,B12,B13,B22,B23,B33]T(12)

对于H=[h1,h2,h3]的第i列记为:hi=[hi1,hi2,hi3]T,则有:

hTiBhj=vTijb(13)

其中,vij=[hi1hj1,hi1hj2+hi2hj1,hi2hj2,hi3hj1+hi1hj3,hi3hj2+hi2hj3,hi3hj3]T。因此,对于公式(4,5)可以表达为齐次方程:

[vT12(v11−v22)T]b=0(14)

如果采集了n张图像,可以列出方程组:

Vb=0(15)

其中,V是一个2n×6的矩阵。如果n⩾3,一般就能获得b的唯一解;如果n=2,我们可以利用偏斜度γ=0的约束条件,将[0,1,0,0,0,0]b=0添加到方程组(15)中;如果n=1那么就只能获得相机的内参。

一旦b确认后,就可以获得相机内参。将公式(11)中的矩阵B添加一个任意系数:B=λA−TA,可得到:

v0=(B12B13−B11B23)/(B11B22−B212)(16)

λ=B33−[B213+v0(B12B13−B11B23)]/B11(17)

α=λ/B11−−−−−√(18)

β=λB11/(B11B12−B212)−−−−−−−−−−−−−−−−−√(19)

γ=−B12α2β/λ(20)

u0=γv0/α−B13α2/λ(21)

内参矩阵获得后,根据公式(2)外参也就很快就可以得到:

r1=λ′A−1h1,  r2=λ′A−1h2,  r3=r1×r2,  t=λ′A−1h3(22)

其中,λ′=1/∥A−1h1∥=1/∥A−1h2∥。

由于噪声的存在,这样求解的矩阵R一般并不具备旋转矩阵的特性,更好的求解方法是通过奇异值分解的方法,可以参考Z. Zhang的论文。

5.5 最大似然优化

与基于3D标定物的优化方法类似,这里仍然使用最大似然法进行优化,也就是基于噪声是不相关且独立分布的的假设,对于n张图像,其中包含m个点,优化方程为:

∑i=0n∑j=0m∥mij−m^(A,Ri,ti,Mj)∥2(23)

其中,m^(A,Ri,ti,Mj)是三维点Mj在图像i中的投影点。非线性优化过程是,首先需要获得内参矩阵A的估算值,然后利用上面的描述的求解方法,获得{Ri,ti|i=1,…,n},利用LM迭代优化方法,使得公式(23)的求和最小化。

5.6 镜头畸变

原理简介(四)4.6中已经对镜头畸变模型进行了讲解,这里与之原理一样。以径向畸变为例,为了获得较为理想准确的像点坐标值,则有方程:

[(u−u0)(x2+y2)(v−v0)(x2+y2)(u−u0)(x2+y2)2(v−v0)(x2+y2)2)][k1k2]=[u^−uv^−v](24)

同样当m个点在n张图像中时,可以组成方程组Dk=d,其中k=[k1k2],其线性最小二乘解为:

k=(DTD)−1DTd(25)

当获得(k1,k2)后,我们就可以将公式(23)的非线性优化调整为:

∑i=0n∑j=0m∥mij−m^(A,k1,k2,Ri,ti,Mj)∥(26)

  • 结束语:

    基于2D标定物的标定方法流程为:

1 打印出一张标定图并贴到一个平面上;

2 通过移动相机或者标定平面采集不同位置、不同方向的标定板图像;

3 特征点检测;

4 估算内参(公式(16−21)),然后通过闭合解得到外参(公式(22));

5 通过最小二乘线性估算畸变系数;

6 使公式(26)的代数和最小,优化所有参数。

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

  1. Camera Calibration 相机标定

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

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

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

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

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

  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. python 递归算阶乘 (转载)

    Python 递归函数 递归函数在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 ...

  2. Win10和子系统Ubuntu简单共享

    Win10和子系统Ubuntu简单共享 C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp ...

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

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

  4. jquery访问ashx文件示例

    转自原文jquery访问ashx文件示例 .ashx 文件用于写web handler的..ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件 ...

  5. IntelliJ IDEA 初始化项目时No Java SDK Found

    IntelliJ IDEA 初始化项目时No Java SDK Found 自己在Project SDK后面的New按钮进行JDK的添加:

  6. [SCSS] Pure CSS for multiline truncation with ellipsis

    1. Pure CSS 2. Responsive 3. No need to recalculate on resize or font’s load event 4. Cross browser

  7. Android TextView 横向滚动(跑马灯效果)

    Android TextView 中当文字比較多时希望它横向滚动显示,以下是一种亲測可行的方法. 效果图: 1.自己定义TextView,重写isFocused()方法返回true,让自己定义Text ...

  8. linux下通过命令启动多个终端运行对应的命令和程序

        作者:张昌昌 在一些情况下,往往须要同一时候启动多个终端并让终端运行自己主动运行对应的命令,进而达到提高操作效率的目的.在linux下gnome-terminal启动终端命令, gnome-t ...

  9. java结合jQuery.ajax实现左右菜单联动刷新列表内容

    http://域名/一级菜单ID-二级菜单ID/ 用这种URL请求页面,出现如图所看到的内容: 该页面包括四部分,顶部文件夹+左側菜单+右側菜单+右下側数据列表. 左側菜单包括一级菜单和二级菜单,点击 ...

  10. JUnit4.8.2源码分析-4 RunNotifier与RunListener

    JUnit4运行过程中,org.junit.runner.notification. RunListener和RunNotifier运用了观察者模式. 1.观察者 观察者Observer/Listen ...