基于OpenCV的摄像机标定的应用研究
- 格式:pdf
- 大小:668.49 KB
- 文档页数:4
一种基于OpenCV的摄像机标定算法的研究与实现作者:孙昆穆森邱桂苹赵倩来源:《电子世界》2012年第14期【摘要】摄像机标定是计算机视觉中的一个重要问题。
本文介绍了标定的基本原理,详尽阐述了使用二维模板的标定算法,重点分析了如何借助开源软件OpenCV实现该算法。
实验结果显示,使用OpenCV中的相关函数,可以方便地进行数学计算,简单有效地完成摄像机标定。
【关键词】摄像机标定;内部参数;单应性矩阵;OpenCV1.引言计算机视觉的基本任务之一是从摄像机获取的图像信息出发计算三维空间中物体的几何信息,并由此重建和识别物体。
而空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的,这些几何模型参数就是摄像机参数。
摄像机标定是确定摄像机内外参数的一个过程,其中内参数的标定是指确定摄像机固有的、与位置参数无关的内部几何与光学参数,包括图像中心坐标(也称主点坐标)、图像纵横比、相机的有效焦距和透镜的畸变失真系数等;外参数的标定是确定摄像机坐标系相对某一世界坐标系的三维位置和方向关系。
目前,摄像机标定技术主要有两种实现方法:(1)基于标定物的方法:需要尺寸已知的标定参照物,通过建立标定物上三维坐标已知点与其图像点之间的对应,利用一定的算法获得摄像机的内外参数。
标定物可以是三维的,也可以是二维共面的。
三维标定物条件下,只需一幅图像就可以求出摄像机的全部内外参数。
但三维标定物的加工和维护比较困难。
二维共面标定物加工维护简单,但一幅图像不足以标出所有的摄像机参数,因此需要简化摄像机模型,或者从不同角度获取多幅图像来同时标出所有的参数。
当应用场合要求的精度很高而且摄像机的参数不经常变化时,这种标定法应为首选。
(2)自标定法:不需要标定物,仅依靠多幅图像对应点之间的关系直接进行标定。
利用了摄像机内部参数自身的约束,而与场景和摄像机运动无关。
该方法非常灵活,但不是很成熟,由于未知参数太多,很难得到稳定的结果。
学习笔记:使⽤opencv做双⽬测距(相机标定+⽴体匹配+测距).最近在做双⽬测距,觉得有必要记录点东西,所以我的第⼀篇博客就这么诞⽣啦~双⽬测距属于⽴体视觉这⼀块,我觉得应该有很多⼈踩过这个坑了,但⽹上的资料依旧是云⾥雾⾥的,要么是理论讲⼀⼤堆,最后发现还不知道怎么做,要么就是直接代码⼀贴,让你懵逼。
所以今天我想做的,是尽量给⼤家⼀个明确的阐述,并且能够上⼿做出来。
⼀、标定⾸先我们要对摄像头做标定,具体的公式推导在learning opencv中有详细的解释,这⾥顺带提⼀句,这本书虽然确实⽼,但有些理论、算法类的东西⾥⾯还是讲的很不错的,必要的时候可以去看看。
Q1:为什么要做摄像头标定?A: 标定的⽬的是为了消除畸变以及得到内外参数矩阵,内参数矩阵可以理解为焦距相关,它是⼀个从平⾯到像素的转换,焦距不变它就不变,所以确定以后就可以重复使⽤,⽽外参数矩阵反映的是摄像机坐标系与世界坐标系的转换,⾄于畸变参数,⼀般也包含在内参数矩阵中。
从作⽤上来看,内参数矩阵是为了得到镜头的信息,并消除畸变,使得到的图像更为准确,外参数矩阵是为了得到相机相对于世界坐标的联系,是为了最终的测距。
ps1:关于畸变,⼤家可以看到⾃⼰摄像头的拍摄的画⾯,在看矩形物体的时候,边⾓处会有明显的畸变现象,⽽矫正的⽬的就是修复这个。
ps2:我们知道双⽬测距的时候两个相机需要平⾏放置,但事实上这个是很难做到的,所以就需要⽴体校正得到两个相机之间的旋转平移矩阵,也就是外参数矩阵。
Q2:如何做摄像头的标定?A:这⾥可以直接⽤opencv⾥⾯的sample,在opencv/sources/sample/cpp⾥⾯,有个calibration.cpp的⽂件,这是单⽬的标定,是可以直接编译使⽤的,这⾥要注意⼏点:1.棋盘棋盘也就是标定板是要预先打印好的,你打印的棋盘的样式决定了后⾯参数的填写,具体要求也不是很严谨,清晰能⽤就⾏。
之所⽤棋盘是因为他检测⾓点很⽅便,and..你没得选。
基于OpenCV的红外与可见光双摄像机标定方法研究任贵文【摘要】With the development of infrared thermal imaging technology , as well as the advantages of non-con-tact temperature measurement , study of infrared thermal imaging technology is also increasing , And the fusion of in-frared and visible images become the focus of current research , integration of the main difficulty is the calibration of infrared and visible light cameras , for image registration .Based on the versatile camera calibration technique , in the VS2013 environment , combined with the OpenCV open source computer vision library , we developed a set of calibration system for infrared and visible light cameras .The system overcomes the disadvantages of Infrared Image camera can not take clear checkerboard images , and achieving fast , accurate real-time infrared and visible light cameras calibration .%随着红外热成像技术的不断发展,以及其非接触性测温的优点,人们对红外热成像技术的研究也越来越多;其中,红外与可见光图像的融合成为目前研究的热点;融合的主要难点是对红外和可见光摄像机的参数标定,已达到图像配准的目的。
opencv 标定参数使用OpenCV是一个开源的计算机视觉库,广泛应用于图像处理和计算机视觉任务中。
在许多计算机视觉应用中,相机的标定是一个重要的步骤,用于确定相机内部和外部参数,以便准确地测量和分析图像中的物体。
本文将介绍使用OpenCV进行相机标定的参数设置。
相机标定是将相机的内参和外参参数进行估计的过程。
内参包括焦距、主点坐标和畸变参数等,而外参则包括相机的位置和朝向参数。
在进行相机标定之前,需要准备一组已知的三维空间点和对应的二维图像点对,这些点对即为标定板上的特征点。
在OpenCV中,相机标定的参数设置包括标定板的尺寸、标定板上特征点的尺寸、待标定相机的图像尺寸等。
首先,标定板的尺寸是指标定板上特征点的行列数,通过设置这些参数可以提供更准确的标定结果。
其次,标定板上特征点的尺寸也需要根据实际情况进行设置,通常选择较大的特征点尺寸可以提高标定的精度。
最后,待标定相机的图像尺寸也需要根据实际情况进行设置,以确保标定结果的准确性。
在进行相机标定之前,还需要设置一些与标定相关的参数,例如用于检测标定板的方法、标定板上特征点的检测阈值等。
OpenCV提供了多种方法用于检测标定板,例如使用棋盘格或圆点阵列等。
根据实际情况选择合适的检测方法可以提高标定的准确性。
此外,还可以设置标定板上特征点的检测阈值,通过调整这个参数可以提高标定的鲁棒性。
在进行相机标定时,还需要设置一些与优化相关的参数,例如优化算法的类型、最大迭代次数等。
OpenCV提供了多种优化算法,例如Levenberg-Marquardt算法、高斯牛顿算法等。
根据实际情况选择合适的优化算法可以提高标定的精度。
此外,还可以设置最大迭代次数,通过增加迭代次数可以提高标定的收敛性。
在进行相机标定时,还需要设置一些与畸变矫正相关的参数,例如是否进行畸变矫正、畸变矫正的类型等。
OpenCV提供了多种畸变矫正方法,例如简单的多项式模型和更复杂的鱼眼模型等。
opencv的相机标定方法
OpenCV提供了多种相机标定方法,其中最常用的是棋盘格标
定法。
下面是使用棋盘格标定相机的步骤:
1. 准备一副棋盘格图片,棋盘格的每个方格必须是完整的黑白交替的。
2. 使用摄像机拍摄多幅图片,确保棋盘格图片处于不同的位置和角度,同时保持棋盘格在整个图像中都可见。
3. 初始化标定板格点的三维坐标数组和图像中对应点的二维坐标数组。
4. 使用OpenCV的函数`findChessboardCorners()`在每个图像中
查找棋盘格的角点,并将其保存在图像对应的二维坐标数组中。
5. 使用OpenCV的函数`drawChessboardCorners()`在每个图像
上绘制出检测到的角点。
6. 使用OpenCV的函数`calibrateCamera()`计算相机的畸变系数和相机矩阵。
7. 使用OpenCV的函数`undistort()`去除图像的畸变。
8. 使用OpenCV的函数`imshow()`显示校正前后的图像进行对比。
9. 使用OpenCV的函数`getOptimalNewCameraMatrix()`获取校正后图像的新相机矩阵。
10. 使用OpenCV的函数`initUndistortRectifyMap()`获取校正后图像的映射矩阵。
11. 使用OpenCV的函数`remap()`将原始图像映射到校正后图像。
通过以上方法,可以完成相机的标定和校正,得到更准确的图像处理结果。
2018-01-30 相机标定的原理与意义及OpenCV、Matlab实现差异小结分类:OpenCV点滴2018-01-30 20:35 2292人阅读评论(3> 收藏举报本文是一篇关于相机标定意义和原理的个人总结,包含了OpenCV和Matlab中常用的相机标定函数的注解。
相机标定是机器视觉的基础,标定结果的好坏直接决定了机器视觉的系统精度,作用可见一斑。
在这一年半的时间里,我个人也是随着实验和程序的进一步理解,对标定的原理和意义有了更多的想法。
同样,由于博文的关系,仍有一些朋友会常常询问标定的程序问题。
本人的2018-05-17OpenCV标定程序的问题也多次被朋友询问,由于当时对标定的认识还不够系统,因此现在认为该文对标定的意义和原理有很多误解,并在此推荐一些较好的博文拱大家学习:双目测距与三维重建的OpenCV实现问题集锦<一)图像获取与单目标定;双目测距与三维重建的OpenCV实现问题集锦<二)双目标定与双目校正;双摄像头测距的OpenCV实现;分享一些OpenCV实现立体视觉的经验;下面结合本人的毕业论文及一年半来对机器视觉的学习,对相机标定的意义和原理进行叙述。
1.单目相机模型单目相机模型中的三种坐标系关系如图1所示,相机坐标系即是以光轴中心O为原点的坐标系,其z轴满足右手法则,成像原点所代表平面即为像平面坐标系<实际应用中,均以图像左上角为坐标系原点),实际物体坐标系即为世界坐标系。
图1 单目相机模型的三坐标系统关系其中,在世界坐标系的值为,是在像平面坐标系的投影点,其相机坐标系的值为。
是相机坐标系轴与像平面夹角,一般情况下轴与像平面垂直,值为。
且相机坐标系与像平面平行,为相机的焦距。
对于从相机坐标系到像平面坐标系的变换,像平面坐标系是用像素单位来表示的,而相机坐标系则是以毫M为单位来表示,因此,要完成改变换过程就需要先得到像平面的像素单位与毫M单位之间的线性关系。
基于OpenCV的摄像机标定研究摘要:根据摄像机标定原理,实现了vc 2010环境下基于opencv 的摄像机标定系统。
该系统以棋盘格标定板图像作为输入,计算出了摄像机的各内外参数及畸变系数。
通过图像矫正实验证明了系统的有效性。
关键词:摄像机标定;棋盘格;opencv;图像矫正中图分类号:tp391.41 文献标识码:a文章编号:1007-9599 (2013) 05-0000-021引言视觉测量、三维重建等是计算机视觉应用中较为重要的研究领域。
在这些研究中,都需要确定视觉图像中的点与现实世界中对应点的几何位置关系。
我们常用的图像,由摄像机拍摄得到,因此,确定这种关系,就要依靠成像系统即摄像机的几何模型。
几何模型的参数就是摄像机的参数。
但这些参数不能够直接获取,而是要利用摄像机拍摄的图像,通过实验来获取。
获取这些参数的过程我们称之为摄像机标定。
摄像机标定是计算机视觉应用中的关键技术。
摄像机标定精度直接影响视觉测量精度,也是做好立体图像匹配与三维重建工作的基础[1]。
摄像机标定方法有3类:基于标定物的方法,自标定方法和基于主动视觉的标定方法[2,3]。
其中,使用平面标定物的标定方法[4],因其标定物制作简单、标定方法灵活而广泛使用。
本文详细介绍了摄像机标定原理,及在vc++ 2010环境下,利用opencv 2.4.4实现摄像机标定的方法和步骤,并通过实验验证了其有效性。
2标定原理摄像机标定首先需要利用合适的数学工具来描述和表达空间中的点与图像中对应点之间的关系。
这个工具就是几何模型,它涉及到摄像机的光学参数如图像中心、镜头焦距和镜头畸变等,还涉及到摄像机坐标系与世界坐标系的相对位置和方位等。
常用的针孔模型是一种理想的成像模型,没有考虑摄像机透镜的厚度及畸变对成像的影响,不能很好地反映实际情况。
opencv中的标定算法,其摄像机模型以针孔模型为基础,同时考虑了透镜的径向畸变和切向畸变,引入了径向畸变和切向畸变两个参数。
opencv的相机标定方法相机标定是计算机视觉中的一个重要步骤,它的目标是通过对相机进行一系列的测量来确定相机的内部参数和外部参数,从而提高图像处理和计算机视觉任务的精确度和稳定性。
OpenCV是一个广泛使用的计算机视觉库,提供了多种相机标定方法。
1.单目相机标定方法:单目相机标定是指使用一个相机拍摄多张不同的棋盘格图像,通过提取图像中的棋盘格角点来确定相机的内部参数和外部参数。
OpenCV中提供了函数`cv::calibrateCamera(`来进行单目相机标定。
该函数需要输入一组棋盘格图像,每幅图像中的棋盘格角点坐标,以及每个角点在现实世界中的坐标。
函数根据这些数据计算相机的内部参数矩阵、畸变系数和每幅图像的旋转矩阵和平移向量。
2.双目相机标定方法:双目相机标定是指使用一对相机拍摄同一场景的图像,并通过识别这些图像中的共享特征点来计算相机的内部参数和外部参数。
OpenCV中提供了函数`cv::stereoCalibrate(`来进行双目相机标定。
该函数需要输入两个相机拍摄的图像,每幅图像中的特征点坐标,以及每个特征点在现实世界中的坐标。
函数根据这些数据计算两个相机的内部参数矩阵、畸变系数和旋转矩阵、平移向量之间的转换关系。
3.深度相机标定方法:深度相机标定是指使用深度相机(如Kinect)拍摄不同的场景,并通过识别图像中的特征点来确定深度相机的内部参数和外部参数。
OpenCV 中提供了函数`cv::rgbd::calibrate(`来进行深度相机标定。
该函数需要输入一系列深度图像和对应的RGB图像,以及特征点的坐标。
函数根据这些数据计算深度相机的内部参数矩阵和旋转矩阵、平移向量之间的转换关系。
4.灰度相机标定方法:灰度相机标定是指使用灰度相机(只能获取灰度图像)进行标定。
与单目相机标定类似,灰度相机标定也是通过拍摄多张棋盘格图像,提取角点坐标进行计算。
OpenCV中提供了函数`cv::calibrateCamera(`来进行灰度相机标定,其使用方式与单目相机标定相似。
38562009,30(16)计算机工程与设计Computer Engineering and Design0引言机器视觉的基本任务之一是从摄像机获取的图像信息出发计算三维空间中物体的几何信息,并由此重建和识别物体,而空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的,这些几何模型参数就是摄像机参数。
在大多数条件下,这些参数必须通过实验与计算才能得到,这个过程称为摄像机标定(或定标)。
标定过程就是确定摄像机的几何和光学参数,摄像机相对于世界坐标系的方位。
标定精度的大小,直接影响着机器视觉的精度。
迄今为止,对于摄像机标定问题已提出了很多方法,摄像机标定的理论问题已得到较好的解决[1-5]。
对摄像机标定的研究来说,当前的研究工作应该集中在如何针对具体的实际应用问题,采用特定的简便、实用、快速、准确的标定方法。
OpenCV是Intel公司资助的开源计算机视觉(open source computer vision)库,由一系列C函数和少量C++类构成,可实现图像处理和计算机视觉方面的很多通用算法。
OpenCV有以下特点:(1)开放C源码;(2)基于Intel处理器指令集开发的优化代码;(3)统一的结构和功能定义;(4)强大的图像和矩阵运算能力;(5)方便灵活的用户接口;(6)同时支持Windows和Linux平台。
作为一个基本的计算机视觉、图像处理和模式识别的开源项目,OpenCV可以直接应用于很多领域,是二次开发的理想工具。
目前,OpenCV的最新版本是2006年发布的OpenCV 1.0版,它加入了对GCC4.X和Visual 2005的支持。
1摄像机标定原理1.1世界、摄像机与图像坐标系摄像机标定中有3个不同层次的坐标系统:世界坐标系、摄像机坐标系和图像坐标系(图像像素坐标系和图像物理坐标系)。
如图1所示,在图像上定义直角坐标系开发与应用梅迎春,王朝立,廖勤武:基于OpenCV 的摄像机标定的应用研究2009,30(16)3857素为单位的图像坐标系坐标,(X ,Y )是以毫米为单位的图像坐标系坐标,XY 坐标系中,原点在透镜光轴与图像平面的交点。
若,每一个像素在X 轴和Y 轴方向上的物理尺寸为dX ,dY ,则图像中任意一个像素在两个坐标系下有如下关系1101(1)摄像机成像几何关系如图2所示。
轴轴为摄像机光轴,与图像平面垂直。
光轴与图像平面的交点,即为图像坐标系的原点。
由点、轴组成的直角坐标系称为世界坐标系。
1为摄像机焦距,,1),他们之间的关系如下1X w Y wZ w 1ÔÚͼÏñÖеijÉÏñλÖÿÉÒÔÓÃÕë¿×³ÉÏñÄ£ÐͽüËÆ±íʾ£¬¼´Èκε㣬Ϊ¹âÐĵãÁ¬ÏßÓëͼÏñÆ½ÃæµÄ½»µã£¬Ò²³ÆÎªÖÐÐÄÉãÓ°Óë͸ÊÓͶӰ¡£ÕâÖÖͶӰ¹ØÏµ¿ÉÓÃÆë´Î×ø±êºÍ¾ØÕó±íʾ=00010(3)式中:(X ,Y )——,——空间点——摄像机焦距,点坐标与其投影点1=M 1M 2X w =MX w (4)式中:/,/,分别是轴上的尺度因子;1由y、决定,只与摄像机内部参数有关,称为摄像机内部参数;==x、1、1、576;输出画面分辨率:64010,角点数81个。
采用Windows XP 操作系统和Visual Studio 2005软件平台,开发了基于OpenCV 的标定程序。
标定程序的流程如图3所示。
标定程序中创建的单张图片的世界坐标数据,格式为三维,一共81组,243个。
每3个数据表示一个世界坐标系中的点,其中z 轴坐标都为0。
数据分为9行9列,每行9个坐标27个数据,每列数据通过分号分隔。
标定过程中检测到的单张图片的图像角点坐标数据,一共81组,162个。
同世界坐标相图1图像坐标系YX,图2摄像机坐标系与世界坐标系XY,1Z wX wY w对应,获取的图像数据也是9行9列,每行18个数据。
由上面得到的数据,根据OpenCV 提供的标定算法,可以求出相应的摄像机内部参数以及外部参数,实际标定过程应用了10张图片,以便消除单张图片噪声过大造成的标定随机性,提高准确性。
运行程序的界面如图4所示。
以下是标定出的内部参数矩阵M 1=畸变参数数据[22]T =[003003]T平移向量257.91452023矩阵表示=[1.959625480.13746345]3视觉伺服试验3.1试验综述本实验中采用的算法的主要思路是:将摄像机获取的图像平面作为参考平面,在参考平面内设置3个圆形,圆心坐标不能共线,并将这3个圆的圆心作为目标点。
移动机器人到某一位置,读取这3个圆心的坐标并转换为图像像素坐标,并将此作为移动机器人的期望点。
然后移动机器人到任意位置(作为目标点的3个圆必须在摄像机图像平面内),启动视觉伺服反馈控制算法,算法将根据实时获得的图像数据,检测视觉平面内3个圆的坐标,并计算此位置的图像坐标,然后计算机器人的实时线速度和角速度,驱动机器人开始运动。
随着机器人坐标系原点(摄像机光心坐标)的变化,这3个参考点在其坐标系下的坐标不断变化。
如果其坐标在某个时刻与期望坐标系下的坐标相等,说明机器人镇定到期望位置。
经试验测得视觉伺服反馈控制算法测量圆心坐标的一个周期为75ms ,机器人的最大运动速度为1.5m/s ,所以一个周期内机器人最大行进距离为0.1125m ,试验速度一般确定为0.75m/s ,当接近目标时可以通过控制算法降低到0.1m/s 。
这样的测量周期和运动速度完全可以确保高度的实时性,并满足机器人运动中的避障要求。
试验过程如图5所示。
3.2试验结果试验中3个圆的圆心夹角,经实测从左下角按顺时针方向分别是55.5和54.5i*,*1=*2=*3=、70.1931。
从以上结果可以看出,根据标定得到的图像坐标的圆心夹角和实际的圆心夹角的误差为0.4%,0.3%和0.1%,这样的误差不会影响试验结果,也证明了摄像机标定的准确性,这也是后续视觉伺服试验的基础。
4结束语从实验可以看出,利用OpenCV 的API 函数可以迅速完成机器视觉系统的摄像机标定,结果准确。
(下转第3862页)图3标定程序运行流程程序运行运行标定线程准备世界坐标信息是否获取了10张获取图像查找角点是否找到81个角点保存图片及图像点信息运行标定算法保存标定结果NYYN 图4标定程序界面图5伺服系统运行时的主控制界面步计算ai的时间复杂度也是O(m),而在教务管理的实际中m<=k,所以,算法这种方法总的时间复杂度为O(k)[9]。
它明显要优于文中提到的一般算法。
对于上述算法的实现,需要注意的两点:①这些待合入班中有可能是人数少于人数下限的班。
这些班的人数有可能在本次合并后大于等于人数下限,从而得到保留。
这体现了尽量少撤班的原则。
②如果在n0,n1,n2…,n k中存在多个n i<人数下限,即有多个班待撤。
总是先撤销人数最少的班,然后再检查是否仍然存待撤班,如果存在则重复上述操作,直至没有班级可合并为止。
4相关的其它问题在教务管理实践中须注意的各专项的班级人数下限属性的设定需合理。
如果人数下限定得过高,则会导致大量班级需要合并,就越有可能造成更多学生最后的选课结果并非最初的意愿,使学生对网上选课的满意程度下降。
如果,人数下限定得过低可能造成教学资源紧张和不必要的浪费。
所以,在此操作前,相关教务管理人员必须根据实际选课情况合理设置。
合班的时候可以不考虑每个专项班的人数上限,这样可以保证合班操作一定能成功。
如果考虑人数上限,为了保证被撤班的学生一定能被其它的专项班容纳下来并且不超过人数上限,则应该在开课时留有足够的余地。
实际的教学运行证明,只要全部专项班可容纳人数的上限略微超过总选课人数,合班时不考虑人数上限所得到的合班结果是合理的。
5结束语本文就高校公共体育课选课系统中的合班操作涉及到的主要问题进行了讨论。
对原问题进行简化后,抽取出其核心问题——如何确定人数分配方案。
对于此问题我们抽象成一个数学模型,并讨论解决此问题的算法。
虽然在体育选课管理系统中,实际执行合班的操作是很少量的,但是作为一般问题研究其算法很有意义,为类似问题的解决提供启发和参考。
参考文献:[1]林立,吴燕丹,江芸.高校公共体育教学管理的发展与创新[J].泉州师范学院学报(自然科学版),2005,23(2):96-99.[2]王戌楼,孙皓.公共体育选课系统软件的开发与应用[J].石家庄学院学报,2007,9(3):125-128.[3]黄英杰,吕林,李俊.基于BPSPS结构技术的网上体育选课系统设计和实现[J].北京体育大学学报,2007,30(4):547-548. [4]潘华山.广州中医药大学体育课选课系统的设计与实现[J].山西师大体育学院学报,2006,21(2):71-73.[5]陈培友.公共体育教学网上选课系统设计与实现[J].上海体育科研,2003,24(6):62-63.[6]吴燕丹,郑永华,郡春生.新时期高校公共体育课程教学管理发展趋势研究[J].体育科学研究,2005,9(1):51-54.[7]尹继红.我校学生体育课选课规律调研究[J].北京体育大学学报,2007,30(supplement):441-442.[8]杨亚琴,于晖.基于WWW体育选修课管理系统的设计与实现[J].北京体育大学学报,2000,23(3):362-363.[9]Anany Levitin.算法设计与分析基础[M].潘彦,译.北京:清华大学出版社,2007.。