1、 - 1 - 基于特征点的数码相机标定 摘要 对于问题一,本文建立了建立针孔成像模型。首先建立 四个坐标系:世界坐标系,相 机坐标系,像平面坐标系和图像坐标系, 其次,推导各坐标系之间的坐标变换和刚体变换。 选用张正友二维平面标定法,用 Ptotoshop 处理靶标图像,并 切线法 提取特征点,确定特征点的图像坐标,然后用 MATLAB 编程,解线性 矩阵 方程组,求得投影矩阵 M 。并采取多次提取不同的样本点的方法,得出相应的投影矩阵,对投影矩阵求和取平均,降低了随机误差 ,确定最终的投影矩 阵 0.0 37 81 0.0 05 0 2.8 43 37 50.0 01 32 1 0.0 27
2、 03 3 0 1.7 20 72 5 .0 0 0 1M对于问题二,根据问题一中的模型 设计算法,运用 MATLAB 编程, 求得靶标上圆的圆心在像平面上的坐标,如下表所示: 圆心 坐标 (单位:毫 米 ) 像坐标 (单位:像素) A (12,12,0) (325,218) B (42,12,0) (421,222) C (112,12,0) (643,232) D (112,112,0) (592,519) E (12,112,0) (377,505) 对于问题三,根据标靶上圆的外切点的空间坐标,通过 模型一中的投影矩阵算出其像平面的坐标,将结果与经 Ptotoshop 中 navigat
3、or 定位 得到的像平面坐标作误差分析,结果发现误差在 0.15mm 内,说明模型是比较精确的。 由于镜像畸变、坐标测量误差、光照、 声音等因素的影响,必须考虑模型的 稳定性。为了提高稳定性,我们建立相机畸变模型,增加约束条件, 考虑 到算法 简洁,我们只考虑径向 畸变给模型稳定性带来的影响。 对于问题四,用两部相机来定位,即双目定位法。利用问题一中的模型和算法,求得两台相机在世界坐标系中的投影矩阵,然后 根据图形间的几何关系,即可得出两部相机间的相对位置。 关键词:针孔成像, 坐标变换 ,图像处理,相 机 镜头 畸变, 双目定位 。 - 2 - 一、问题重述 双目定位 是数码相机定位的一种
4、,即用两部相机来定位。对物体上一个特征点,用两部固定于不同位置的相机摄得物体的像,分别获得该点在两部相机像平面上的坐标。只要知道两部相机精确的相对位置,就可用几何的方法得到该特征点在固定一部相机的坐标系中的坐标,即确定了特征点的位置。 标定的一种做法是:在一块平板上画若干个点, 同时用这两部相机照相,分别得到这些点在它们像平面上的像点,利 用这两组像点的几何关系就可以得到这两部相机的相对位置。然而,无论在物平面或像平面上我们都无法直接得到没有几何尺寸的“点”。实际的做法是在物平面上画若干个 圆(称为靶标),它们的圆心就是几何的点了。而它们的像一般会变形, 所以必须从靶标上的这些圆的像中把圆心的
5、像精确地找到,标定就可实现。 图 1 现 设计靶标如下,取 1个边长为 100mm 的正方形,分别以四个顶点(对应为 A、 C、D、 E)为圆心, 12mm 为半径作圆。以 AC 边上距离 A 点 30mm 处的 B 为圆心, 12mm 为半径作 圆,如图 2所示。 图 2 靶标示意图 用一位置固定的数码相机摄得其像,如图 3所示。 - 3 - 图 3 靶标的像 我们要 解决以下问题: 1) 建立数学模型和算法以确定靶标上圆的圆心在该相机像平面的像坐标 , 这里坐标系原点取在该相机的光学中心 , x-y 平面平行于像平面; 2) 对由图 2、图 3分别给出的靶标及其像,计算靶标上圆的圆心在像平
6、面上的像坐标 , 该相机的像距(即光学中心 到像平面的距离)是 1577 个像素单位 (1 毫米约为 3.78 个像素单位 ),相机分辨率为 1024 768; 3) 设计一种方法检验 问题一中的 模型,并对方法的精度和稳定性进行讨论; 4) 建立用此靶标给出两部固定相机相 对位置的数学模型和方法。 二、 问题分析 1)问题一中要求完成点在不同坐标系中坐标的转换。简单说就是把空间中的一个点,通过某种合理的转换,映射到另外一个坐标平面上,确定映射后的点在该坐标平面上的位置。我们从最简单的小孔成像原理出发,建立针孔模型,考虑影响成像的内外因素,设定相应的参数,并以此确 定空间物体到像平面的转换矩阵
7、。摄像机的成像原理比小孔成像更复杂, 空间物体在像平面成像的过程中,影响成像的因素很多,这些因素导致成像的畸变。 在使模型更符合实际的同时,也考虑到算法的简洁 稳定 ,计算过程中,我们只考虑径向畸变 , 建立模型 。 2)问题二通过问题一的模型和算法求解。 把靶标和靶标的像放在相应的坐标系中,测量出世界坐标系和像平面对应点的位置。通过像平面上特征点的位置,还原物体在世界坐标系的位置。 再通过变换矩阵算 得 靶上圆心在像平面的像 坐标。 3) 在问题一的建模中 ,我们仅考虑了径向畸变,而镜头畸变还包括 切向畸变、离心畸变。 自然界的光,声会影响靶标的成像。 此外在给定的标靶坐标中,测量精度 也存
8、在误差。考虑到以上因素,我们在问题一中建立的模型,稳定性有待提高。 4) 对于问题四,用两部相机来定位,即双目定位法。利用问题一中的模型和算 法,求得两台相机在世界坐标系中的投影矩阵,然后根据图形间的几何关系,即可得出两部相机间的相对位置。 - 4 - 二、模型假设 ( 1) 计算机读取 边缘 特征点的图像坐标是 比较 精确的; ( 2) 题目中所给的图形是标准的 ,从而所给定的坐标系内的坐标是准确的 ; ( 3) 图像落在相机 CCD的中间部分时,镜头透镜的畸变较小,可以忽略。 三、符号说明 O XYZ : 世界坐标系 c c co xyz : 相机坐标系 1o xy : 像平面坐标系 0o
9、 uv : 图像坐标系 M : 投影矩阵 R : 旋转矩阵 t : 平移矩阵 四、模型准备 1、建立坐标系 世界坐标系: O XYZ 用来表示空间任意一点的坐标 , O XY 平面于靶标所在平面, X 轴是 A,B,C三个圆的外切线, Y 轴是 A,E 圆的外切线(原点在靶标外) ; 相机坐标系: c c co xyz ,坐标原点取在该相机透镜的光学中心上, cz 轴为摄像机的光轴,它与图像平面垂直, cx 与 cy 分别与下面所建图像坐标系的 x , y 轴平行 。 图 4 相机模型图 - 5 - 以物理单位表示的像平面坐标系 1o xy :用来表示像点在像平面上的坐标。其原点为 光 轴与成
10、像平面的交点。 x 、 y 轴分别平行于 cx 、 cy 。 以象素为单位的图像坐标系 0o uv :数码相机中的 CCD 通常制成矩形,定义此坐标系的原点为图像的左上角,图像的行为 u 坐标轴,图像的列为 v 坐标轴 。 图 5 像平面上的两个坐标系 2、 坐标变换和刚体变换 考虑多个坐标系,设 在 坐标系 o xyz 中 , 点 P 的坐标向量 记为 OP ,即 OP ,xi yj zk 其中 ,ijk 分别 为坐标轴 ,xyz 的基向量。 考虑两个坐标系的情况: , , ,A A A AA O i j k 和 , , ,B B B BB O i j k 。任务是如何 把B坐标系中的 P
11、点表示成 A坐标系中的 P点。 当两个坐标系之 间是纯平移关系的时候,有 POOOPO AABB 。 当两个坐标系之间是纯旋转关系 的时候 。旋转矩阵是个 33 的数组,定义 A到 B的旋转矩阵 为 R A B A B A BA B A B A BA B A B A Bi i j i k iR i j j j k ji k j k k k 则从 B到 A的旋转矩阵为 TR 一般来说,旋转矩阵可以分解为绕 ,ijk 旋转的基本旋转矩阵的乘积 。 由 在坐标系 B中, B 到 B的旋转矩阵 是单位阵可知,在坐标系 B 中满足 21P RP - 6 - 其中 2P 为 P点在坐标系 B 中的坐标,
12、1P 为 P点在坐标系 A 中的坐标。 若两个坐标系的原点和基向量都是不同的, 我们称这两个坐标系之间是 一般的刚体变换,且有 : 21P RP t 在齐次坐标的情况下,以上方程可以写成矩阵乘积的形式 2111PPT ,其中 01TRtT , 0 0,0,0 T 这样,我们就可以用一个 44 矩阵和一个四维向量表示任意的坐标系变换。 五、 模型的建立与求解 1.建立 针孔 模型 目前, 计算机视觉中使用的最简单的照相机模型是线性照相机模型,也称针孔模型,这种模型的特点是简单易于研究, 且 不失准确性 。 摄相机的成像过程是从三维空间到二维图像平面的投影。透视投影、平行投影和正透视投影是计算机视
13、觉中最常用的三种摄像机模型,其中正透视投影是透视投影的特例,而当摄像机和空间物体之间的距离比空间物体的最大尺寸大很多的情况下,可以用平行投影来简化透视投影模型。本文主要以透视投影模型为研究前提 。 针对问题一,我们不妨先采用这一模型,然后再结合实际修正模型 ,以提高模型的精确度和稳定性 。 设 o 在 (, )uv 坐标系中的坐 标为 00( , )uv ,每一个象素在 x 轴与 y 轴方向上的物理尺寸为 dx 、 dy ,两坐标轴之间的倾斜因子为 (如果两坐标轴垂直时 0 ),则图像中任意一 个 象素在两个坐标系下的坐标 有如下关系: 00xu y udxyvvdy ( 1) 为了以后计算方
14、便,我们用奇次坐标与矩阵的形式将上式表示为 00110110 0 1udxuxv v ydy ( 2) 则 x y 坐标可表示为 00101 0 0 1 1dx u dxxuy dy v dy v ( 3) 由于相机可安放在环境中的任何位置,因此有必要为相机坐标选择一个基准坐标,- 7 - 我们称其为世界坐标系。由模型准备知相 机坐标系与世界坐标系之间的关系可由旋转矩阵 R 和平移矩阵 t 来描述。 1011 1 1Tx X Xy R t Y YMz Z Z ( 4) 旋转矩阵 R 为 33 的正交矩阵,平移矩阵 t 为三维平移 向量, 1M 为 44 矩阵, 称 之为对应性矩阵。 ccccD
15、xxzDyyz( 5) 其中 D 为像距 。 用齐次坐标与矩阵表示为: 0 0 00 0 01 0 0 1 0 1ccccxxDyz y Dz ( 6) 将( 2)式和( 3)式代入( 6)式,可以得到空间点 ( , , )P X Y Z 与投影点 ( , ,1)puv 的关系为: 0000 1 210 0 010 0 0 0011 0 0 1 00 0 1 1000010 0 1 01c Txy TuXdxuDR T Yz v v DZdyXuR T Yv M M X M XZ 其中, / , /xyD dx D dy , M 为 34 矩阵,称为投影矩阵; 1M 由 00, , ,xyuv
16、 决定, 00, , , ,xyuv 均与相机内部结构有关,因此 1M 被称为相机内参数; 2M 完全由相机相对于世界坐标系的方位决定,称为相机外参数。 2.模型的 算法 设计 对于上面所建立模型的解答要给出适合的算法,本文给出的算法考虑到了算法的可行性和稳定性。 算法设计的准备: 针 问 题中图 2所示的靶标, 运用计算机软件(如 Photoshop)对靶标的图像进行处理,得到像上的相关数据:( 1) A, B, C, D, E 五 个圆 中两个或三个圆 与公切线切点的像坐标;( 2) 靶标图像的长和宽。 - 8 - 算法步骤如下所示: ( 1) 随机 输入 4个切点 像 的坐标 ; ( 2
17、) 寻找与之对应的切点坐标; ( 3) 计算对应矩阵 mM 的值 , 若对应矩阵的个数 0mm ( 0m 的大小可根据精度的要求来确定)则 由 0101 m miMMm 计算 M ,并计算 mM 的方差 2S ,若方差较小则转( 4),否则转( 1) ; ( 4) 输入一个 靶标的 圆心坐标,计算 其像的像坐标; ( 5) 若输入圆心的个数 5n , 输出像坐标, 算法结束,否则转( 4)。 上述算法的第三步是算法的关键, 因为 M 的大小对圆心像的坐标的精度以及稳定性影响比较大,特别是在对精度和稳定性要求较高的场合, 0m 要 尽可能地取大一点。 算法流程图如下( 见 图 6) 图 6 算法
18、流程图 - 9 - 3.像坐标的求解 图 7 找对应点的方法 若要求出圆心像的坐标,则得求出对应矩阵,由于靶标上的任意一点的坐标都已知,要想建立等式求解,就必须知道几组点与对应点的像 的 坐标 ,因此要先给出几组对应点,然后通过计算机软件来求像的坐标。然而,对应点是很难找的,实际处理中大多选用图像边缘上的特殊几个点。这里介绍一种简单而又有效的找对应点的方案 。 由针孔模型易知直线的像还是直线,作多个圆的公切线,得切点的坐标。这是靶标的像中也可得到与切点对应的像 (见图 7 所示) ,而这点的坐标可由计算机较 准确的得到。 在计算机上 利用 photoshoph 获得靶标像平面上 各切点的坐标
19、,以及对应点的空间物理坐标 ,如表 1所示: 表 1 特征点的像坐标 和世界坐标 特征点 像 坐标 (单位:厘米 ) 世界 坐标(单位:毫米) a ( 3.11, 1.40) ( 12, 0, 0) b ( 4.17, 1.51) ( 42, 0, 0) c ( 6.28, 1.71) ( 112, 0, 0) d ( 3.11, 2.22) ( 42, 24, 0) e ( 4.09, 3.23) ( 12, 24, 0) f ( 6.14, 2.43) ( 112, 24, 0) g ( 2.77, 4.52) ( 12, 100, 0) h ( 5.71, 4.54) ( 112, 10
20、0, 0) l ( 2.72, 5.20) ( 12, 124, 0) k ( 5.60, 5.12) ( 112, 124, 0) 根据问题一中所建立的模型,利用 MATLAB 求解矩阵方程组 ( 源 程序见附录一) ,可得矩阵 mM ,取不同点时,得到的相应 mM 如下表所示: - 10 - 表 2 对应矩阵 m Mm矩阵 1 0.0344 -0.0081 0.0000 2.8930 0.0033 0.0332 0.0000 1.3821 0.0000 0.0000 0.0000 1.0000 2 0.0291 -0.0033 0.0000 2.7691 -0.0003) 0.0262 0
21、.0000 1.9259 0.0000 0.0000 0.0000 1.0000 3 0.0298 -0.0051 0.0000 2.8959 0.0011 0.0290 0.0000 1.5574 0.0000 0.0000 0.0000 1.0000 4 0.0299 -0.0034 0.0000 2.8155 0.0012 0.0197 0.0000 2.0175 0.0000 0.0000 0.0000 1.0000 M 矩阵 0.030781 -0.005 0 2.843375 0.001321 0.027033 0 1.720725 0 0 0 1 依据四个不同的矩阵 mM ,通过
22、 0101 m miMMm 求得 M 矩阵。利用投影 矩阵 M ,可以 算的靶标上圆心的坐标,结果见 表 3: 表 3 圆点像坐标 4.模型检验 本模型的求解是通过找对应点(切点)的坐标来求解圆心的像坐标,为了 探讨 模型的 精度和稳定性,我们不妨求解切点的像坐标,然后与计算机得到的像坐标进行比较,由模型假设( 3)知,这样处理是合理的。测得的十个切点的像坐标与计算机得到的像坐标 如表 4: 表 4 误差分析 计算位点 3.21 4.14 6.29 3.09 4.02 6.17 2.71 5.79 2.59 5.67 1.74 1.78 1.87 2.39 2.43 2.52 4.44 4.5
23、7 5.09 5.22 真实位点 3.11 4.17 6.28 3.11 4.09 6.14 2.77 5.71 2.72 5.60 1.40 1.51 1.71 2.22 2.23 2.43 4.52 4.54 5.20 5.12 误差 -0.10 0.03 -0.01 0.02 0.07 -0.03 0.06 -0.08 0.13 -0.07 0.34 0.27 0.16 0.17 0.20 0.09 -0.08 0.03 -0.11 0.10 圆点 坐标 (单位:毫米 ) 像坐标 (单位:像素) A (12,12,0) (325.78,218.62) B (42,12,0) (421.19,222.82) C (112,12,0) (643.83,232.63) D (12,112,0) (592.20,519.39) E (112,112,0) (377.49,505.36)