当前位置:首页 >> 信息与通信 >>

基于OpenCV的摄像机标定算法的设计与实现


2010 年第 4 期 (总第 70 期)

漳州师范学院学报(自然科学版) Journal of Zhangzhou Normal University(Nat. Sci.)

No. 4. 2010 年 General No. 70

文章编号:1008-7826(2010)04-0045-05

基于OpenCV 的摄像机标定算法的设计与实现  
许华荣 1 ,粟圆圆 2 ,王晓栋 1
(1. 厦门理工学院 计算机科学与技术系, 福建 厦门 361024;2. 湖南工学院 摘 机械工程系, 湖南 衡阳 421008)

要:本文针对基于视觉导航的无人驾驶汽车导航系统,提出一种基于 OpenCV 的传统摄像机标定方法

实现摄像机标定算法. 最后,通过测量标定板的顶点坐标来验证导航系统标定算法的精确度. 实验结果表明,采 用该标定算法测量系统的定位精度高,而且具有实用、简便、快速等优点. 关键词:无人驾驶汽车 ;摄像机标定 ;线性模型 ;OpenCV 中图分类号: TP393 文献标识码: A

Design and Realization of Camera Calibration Algorithm Based on OpenCV
XU Hua-rong 1 , SHU Yuan-yuan 2 , WANG Xiao-dong 1
(1.Department of Computer Science and Technology, Xiamen University of Technology, Xiamen, Fujian 361024, China; 2.Department of Mechanical Engineering, Hu’nan Institute of Technology, Hengyang, Hu’nan 421008, China) Abstract: Considering the Navigation system of driverless vehicle based on computer vision, this paper presents a tradition camera calibration based on OpenCV. Finally, this paper measures the corners coordinates of the calibration board to verify the precision of the camera calibration algorithm. The experimental results show that the camera calibration algorithm is not only high accuracy, but also practicality, simplicity and fast. Key words: Driverless vehicle ; camera calibration ; linear camera model ; OpenCV

1

引言
无人驾驶汽车也称智能车,是室外轮式移动机器人在交通领域的重要应用. 它使用车载传感器,例如

视觉、激光雷达、超声传感器、GPS、里程计等,获取道路、车辆位置和障碍物信息,通过智能控制算法 控制车辆的转向和速度,实现自主行使
[1]

. 无人驾驶汽车的关键技术主要有定位技术及行车控制技术[2,3].
[4]

定位技术是无人驾驶汽车的关键,而基于视觉的定位技术具有价格便宜、安装方便、受电磁干扰少、获得 信息量丰富等优点,被认为是最有前景的定位技术为 . 摄像机标定是视觉导航的基础,常用的摄像机标定方法有传统标定方法、自标定方法和基于主动视觉 的标定方法[5]. 传统标定方法是用一个结构已知、加工精度很高的标定物作为空间参照物的摄像机内参数 标定方法,这类方法的典型代表有 DLT、Tsai、Weng 的迭代方法、及基于平面模板的标定方法等. 其特点 是可以应用于各种摄像机模型,标定精度高;缺点是标定过程复杂,需要高精度标定物的结构信息. 基于单目视觉的无人驾驶汽车技术如图 1 所示,通过摄像头获取道路图像,提取车道线,利用摄像机 标定所得到的参数,可以计算出汽车的位置和它与车道线的横向距离. 为了简化计算,通常假设汽车行驶 的路面是平坦的. 本文针对上述的假设,利用OpenCV的库函数,提出一种新的摄像机标定算法. 该算法具有易于实现、 速度较快、精度较高等特点,是一种简便实用的方法.
收稿日期:2010-09-09 作者简介:许华荣(1970-),男,福建省莆田市人,副教授.

46

漳州师范学院学报(自然科学版)

2010 年

2

单目视觉摄像机标定
如图 1 所示,摄像机以一定的俯仰角安装在无人驾驶汽车上,光轴与地面保持相交. 2.1 参考坐标系 设 ( x w , y w , z w ) 表示空间点P的三维世界坐标, ( x c , y c , z c ) 是该点P在摄像机坐标系中的坐标. 摄像

机坐标系定义为:中心在 o c 点(摄象机光学中心), z c 轴与光轴重合,x c 轴平行于X轴, y c 轴垂直于 z c 、x c 构 成的平面. 定义OoUV平面为图像平面, 假设空间点与图像平面间构成理想的透视对应. 2.2 摄像机成像的线性模型 摄像机光学成像理论模型通常可以用针孔模型来表示[7,8] . 由三维世界坐标系向摄像机坐标转换过 程,可用齐次坐标与矩阵表示:

?x w ? ? xc ? ?y ? R T ?y ? ?? w ? ? c? =? ? 0 1?? z ? ? zc ? ? ? w ? ? ? ? ?1? ?1?

(1)

其中, x w , yw , zw )为P点在世界坐标系中的坐标, xc , yc , zc )为P点在摄像机坐标系中的坐 ( ( 标,R和T分别为从世界坐标系到摄像机坐标系的旋转和平移矩阵. R是一个3×3的正交矩阵.T是一个3×1 的平移向量.

?cosα cos β cosα sin β sin γ ? sin α cos γ cosα sin β cosδ ? sin α sin γ ? ? ? R= sin α cos β sin α sin β sin γ + cosα cos γ sin α sin β cosδ + cosα sin γ ? ? ? ? sin β ? cos β sin γ cos β cos γ ? ?
T=

(2)

[T

x

Ty

Tz

]

(3)

其中 α , β , γ , T x , T y , T z 为摄像机的外部参数. 令摄像机的外部参数矩阵为M1: M1= ?

?R T ? ? ?0 1?

(4)

摄像机坐标系向象素坐标系转换关系为:

? u ? ?1 / d x s?v ? = ? 0 ? ? ? ?1 ? ? 0 ? ? ?

0 1/ d 0

y

u0 ?? f v0 ?? 0 ?? ?? 1 ?? 0

0 f 0

0 0 1

?x ? 0?? c ? y 0?? c ? ??z ? ? 0?? c ? ? 1 ?

(5)

令摄像机的内部参数矩阵为M2:

? f / dx ? 0 M2= ? ? 0 ?

0 f / dy 0

u0 ? vo ? ? 1? ?

(6)

其中f为摄像机焦距,( u 0 , v 0 )是图象坐标系原点在象素坐标系中坐标; ( d x , d y ) 分别是象素坐标系在

第4期

许华荣 , 粟圆圆 , 王晓栋: 基于 OpenCV 的摄像机标定算法的设计与实现

47

x方向和y方向相邻象素间的距离;S为未知尺度因子. 即摄像机成像模型表示为:

? xw ? ?u ? ? ? ?v ? = M M ? y w ? = M s? ? 2 1 ? zw ? ?1 ? ? ? ? ? ?1?

? xw ? ?y ? ? w? ? zw ? ? ? ?1?

(7)

M为 3 × 4 的透视投影矩阵. 它包含了摄像机的内外参数. 该矩阵的求解过程就是摄像机的标定. 因 为,假设道路是平坦的,所以道路上的点到图像点形成点对点的影射关系. 无人驾驶汽车的导航系统,首先是利用摄像头获取路面信息;接着提取图像中的车道线;然后车道线 转换到世界坐标中的车道;最后,根据汽车和车道的位置关系决定控制汽车的行使方向. 无人驾驶汽车导航系统的关键是摄像机标定. 本文通过测量标定板的顶点坐标来验证导航系统标定方 法的精确度.

3

基于 OpenCV 的摄像机标定算法
OpenCV是Intel微处理器研究实验室视觉交互组开发的一种用于数字图象处理和计算机视觉的函数库.

不仅具有强大的图像和矩阵运算能力,而且用户还可以使用其提供的c++或者c的数学库、图形库进行编程. 摄像机标定模块还为用户为用户提供了良好的接口. 标定算法设计如下: (1)系统读取指定数量的图像,设置初始数据; (2)取标定板的四个顶点为定标点,记录它们的图像坐标. (3)把所测得的四个定标点的世界坐标和其相应的图像坐标存入OpenCv的库函数 cvWarpPerspectiveQMatrix ()中得到世界坐标与图像坐标对应的关系矩阵M. (4)通过标定所得到的关系矩阵M及定点的图像坐标,计算出定点世界坐标,然后输出. 由于本文中, 摄像机是以一定的俯角安装在汽车上,实现图象坐标系与汽车坐标系的转换,还需借助过渡坐标系,即摄 像机视点坐标系. 具体步骤如下: 1) 三个坐标系定义:图像坐标系,记为O1. y轴与摄像机光轴平行的坐标系(视点坐标系) ,记为O2. 目标坐标系即车身坐标系(世界坐标系) ,以车头中心为原点,车的正前方为y轴,记为O3. 2) 利用步骤(3)得到01坐标与02坐标的对应矩阵,并输出定点在02坐标系中的坐标值. 3)最后把02坐标系转换到03坐标系,经过平移后,O2坐标系与O3坐标的关系如图3所示,其中(x3, y3)是O3坐标系的分量, (x2,y2)是O2坐标系的分量: 从图 2 可以看出,点从 O2 坐标系到 O3 坐标系的变换,只需要做一个旋转 . 设点 M 在 02 坐标系中, 与 X2 的夹角为 B,模为 r. 在 03 中为 A,不难看 A=B-C,所以为了得到 A 的值,再测量 C 测量,C 即为 坐标系的旋转角度. 可通过线段的测量获得. 即 M 在 03 坐标系中的点坐标: x = r * cos(A) + x 偏移; y = r* sin(A) + y 偏移; 3.1 单目视觉位置测量 在摄像头系统标定完成的基础上,本节利用 Harris 角点检测算法检测出所有相关的角点,实现单目视

48

漳州师范学院学报(自然科学版)

2010 年

觉位置测量. 本文采取 OpenCV 中的 Harris 角点提取算法[9]对无人驾驶汽车周围的环境进行角点检测,获取其对应 的像素坐标. 角点是像素点在其领域内的各个方向上灰度变换值足够高的点. Harris 角点检测算法的基本思 想是:通过移动一个小窗口观察窗口内象素灰度变化来识别角点. 这种窗口对于平坦区域,在任意方向都 没有灰度变化;对于边界点,沿边界方向也没有灰度变化;而对于角点,则在任意方向移动窗口均会发生 较大的灰度改变.

图1 摄像头模型示意图

图2 坐标系平面转换关系

通过对图像进行预处理,利用Harris角点检测算法检测所有相关的角点,并且将角点按一定的顺序排 列. 图3(a)中是无人驾驶汽车周围环境的角点检测图. 图3(b)是通过设置ROI(感兴趣区域)及调节相关参 数,而获得的角点. 利用Harris检测这些角点,再利用cvFind-ChessBoardCornerGuesses()函数读入相应点的 图像数据,最后利用已标定好的系统,得到角点在世界坐标中的参数,从而检测标定精度.

图 3 (a) Harris 角 点 检 测 后 的 图 像

图 3 (b) Harris 检 测 后 所 选 部 分 角 点 图

4

实验结果
为了验证算法的有效性,我们进行了一系列实验. 使用的是 MV-3000UC 工业数字摄像机,利用长方

形木板作为标定模板,放置在车体的左前方. 图像最高分辨率为 2048*1536,图象大小为 640*480. 并选取 长方形木板的四个顶点为标定点,实际测得四个顶点的视觉坐标为 A(0,0),B(44.5,0),C(44.5,47.5), D(0,47.5),x 偏移为 106.2,y 偏移为 94,A 所在直角三角形的斜边为 20,邻边为 19.5,单位 cm. 基于图 2 所得到的关系矩阵为:

? 1.51035e ? 01 ? 212.489? ? 0.659903 ? ? 0.233246 1.29951 29.6222 ? 定义测量平均绝对误差 δ 来表征测量精度: ? ? ?0.000969624 ? 0.00497996 ? 1 ? ?

第4期
n

许华荣 , 粟圆圆 , 王晓栋: 基于 OpenCV 的摄像机标定算法的设计与实现

49

δ = ∑ (x z ?xi ) 2 + ( yz ? yi ) 2 + (z z ? zi ) 2 / n 其中 ( xi , y i , z i ) 是平面标定模板上用于测试的角点的实际
i =1

坐标值,( x z , y z , z z ) 是用测距系统求出的空间点坐标值,用于测试的数据如表 1 所示,计算可得测量平均 绝对误差 E 为 0.2812,由图像数据的测试结果表明,系统测量精度能满足此领域应用需求,且该方法实用 性强,容易实现.
表 1 实验结果 实际测得角点坐标 (247.5,135.5) (106.2,68.2) (148.0,57.0) (169.5,58.0) (212.0,96.5) (165.0,101.5) (176.0,134.0) (103.0,128.0) (285.0,103.5) 系统求得相应的角点坐标 (247.477,135.339) (105.9978,68.0775) (148.2254,57.3745) (169.5789,58.1145) (212.1132,96.7453) (164.8542,101.471) (175.8125,133.915) (103.2583,128.117) (285.5851,103.665) 测量绝对误差 0.482 0.236 0.437 0.139 0.270 0.148 0.205 0.283 0.608

5

结论
本文提出了一种基于传统的摄像机标定的无人驾驶汽车导航系统的标定方法. 利用标定板对摄像机进

行线性标定,获取透视变换矩阵. 然后结合 Harris 角点检测算法获取角点的图像坐标计算出相应的世界坐 标. 实验证明该标定方法的标定精度高,并对实验系统要求较低,较容易及快速实现. 能够满足无人驾驶 汽车导航系统的要求,为无人驾驶汽车的视觉导航奠定了基础.

参考文献:
[1] 杨 明. 无人自动驾驶车辆研究综述与展望[J]. 哈尔滨工业大学学报, 2006, (38)增刊: 1259-1262. [2] Maurer,Behringer,Thomanek F,et a1.A Compact Vision System for Road Vehicle Guidance[J]. In Proceedings of the 13th International Conference on Pattern Recognition, Vienna, Austria, 1996, 3: 313-317. [3] Tao Zhang1,2, Xin Liu. A Novel Platform for Simulation and Evaluation of Intelligent Behavior of Driverless Vehicle.[J]. In IEEE, 2008, 237-240. [4] He Y,Wang H, Zhang B. Color Based Road Detection in Urban Traffic Scenes[J]. IEEE Transactions on Intelligent Transportation Systems 2004, 5(4). [5] Yihua.Xu. Geometry Calibration of Perspective Cameras: A Review. Technical Report Microsoft Research, Asia [J]. 2003, 1-24. [6] S.B. Kang. Catadioptric self-calibration [J]. 2000 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'00) - Volume 1, Hilton Head Island, 2000, 1201-1215. [7] 马颂德,张正友. 计算机视觉一计算理论与算法基础[M]. 北京: 科学出版社, 1998. [8] Dechao Wang, Yaqing Tu and Tienan Zhang. Research on the Application of PSO Algorithm in Non-linear Camera Calibration.[J]. IEEE, 2009, 4495-4499. [9] C. Harris and M. Stephens. A combined corner and edge detector[J]. In Proceedings of the Fourth Alvey Vision Conference, 1988, 147-152. [责任编辑: 林宝德]


相关文章:
摄像机定标opencv程序
/* 计算新的投影点和旧的投影点之间的误差*/ err = cvNorm(image_points.get...一种基于OpenCV的摄像机... 4页 免费 基于OpenCV的摄像机标定 6页 1下载券 ...
更多相关标签: