高成 樊易飞 佟维妍
摘 要: 在机器人视觉伺服领域,视觉标定是一个重要的研究方向,也是当前的研究热点。对软件标定原理进行说明,建立摄像机坐标系统和机器人世界坐标系统之间的关系,利用Halcon函数库中的算子,充分考虑了机械手的末端中心和镜头径向畸变的影响,提出基于Halcon的优化软件标定方法,实现摄像机内外参数的标定。实验结果证明,该方法在X,Y,Z方向的标定精度都较高,标定过程简单易行,完全适用于工业机器人的视觉系统标定。
关键词: 机器人; 视觉标定; Halcon; 摄像机参数; 径向畸变; 标定精度
中图分类号: TN876?34; TP24 文献标识码: A 文章编号: 1004?373X(2020)18?0178?04
Abstract: The visual calibration is an important research direction in the field of robot visual servo, and is also one of the current research hotspots. The principle of software calibration is described in detail. The relationship between the camera coordinate system and the robot world coordinate system is established. In consideration of the influences of the terminal center of the robot hand and the radial distortion of the camera lens, an optimized software calibration method based on Halcon is proposed by means of the operator in the function library, and the internal and external parameters of the camera are calibrated. The experimental results show that the method has high calibration accuracy in X, Y and Z axis, and the calibration process is simple and easy. It is suitable for visual system calibration of industrial robots.
Keywords: robot; vision calibration; Halcon; camera parameters; radial distortion; calibration accuracy
0 引 言
機器视觉是用计算机模仿生物视觉的科学和技术,其发展与计算机视觉的进步密切相关[1?3]。近30年,国内外学者在计算机视觉方面进行了大量研究,也取得了重要突破,提出了新的理论和方法,为机器视觉的工业化奠定了理论基础。工业化的发展对装配定位精度和自动化水平要求越来越高。基于计算机视觉的工业机器人定位精度高、成本低、自动化和智能化水平高,机器视觉在定位和装配领域有广泛的应用[4]。
因为机器视觉的软件和硬件产品的巨大需求,很多公司开发了自己的视觉函数库,方便用户编写应用程序。目前,OpenCV,Halcon和LabVIEW等函数库在工业生产应用较广。Halcon是一套完整的标准机器视觉算法软件包,广泛应用于机器视觉集成开发环境。利用Halcon算子,能明显缩短计算机视觉应用系统的开发周期、降低成本,并促进了机器视觉、医学影像和图像分析处理的快速发展。Halcon是欧州和日本工业界应用最广的机器视觉软件。机器视觉的核心是图形算法,图形算法的不断进步为机器视觉技术发展提供了可靠的理论基础,为社会生产力提供了强大动力。
当前,视觉标定方法大致分为三类:传统标定法、自标定法和基于主动视觉的标定方法[5]。
1999年,张正友提出了张氏相机标定法,其他大多标定方法都以张氏标定法为基础进行改进。Otkovic 等用神经网络方法进行相机标定[6],Kukelova在标定模型的基础矩阵表达式上,加了两个约束条件,提高了相机标定的速度[7],文献[8]利用消隐点原理对张氏标定法改进,简化了张氏标定步骤,实验证明,相机标定精度也得到了提高。文献[9]应用LabVIEW视觉开发工具包, 完成畸变校正。文献[10]利用Halcon和VC++编写程序,实现了视觉机器人抓取系统。文献[11]提出一种优化的自适应摄像机标定方法,将摄像机参数估计与镜头畸变校准分开进行,提高了镜头畸变校准的精度,减小了参数优化过程中的变量维数。文献[12]基于改进的两步法摄像机标定方法,对第一步中得到的标定参数通过非线性优化,并求解畸变系数,用单幅图像即可完成标定。文献[13] 将自适应和声搜索算法与摄像机标定过程相结合,优化了标定所得的摄像机内参和镜头径向畸变系数。
以上研究方法是针对不同的应用环境和应用要求,各有优缺点。本文提出一种适用于工业现场实际条件的机器视觉标定方法,根据功能划分不同的模块,组成结构完整的系统,包括标定模块、模板生成模块、拍照触发模块、图像采集模块、图像处理模块和数据交互模块。相机标定是利用机器视觉进行精确测量和定位的前提和基础。
1 基于Halcon的视觉标定和应用
软件标定就是要建立相机成像的数学模型,描述世界坐标系下的目标投影到相机成像平面的过程。软件标定的最终目标是准确计算包含在模型中相机的内外参数。目标位置在图像平面坐标系统中以像素表示,标定完成后,目标位置用毫米表示。
利用Halcon函数库完成相机标定,实现简单,结果可靠。整个标定过程包括制作标定板、参数设置、标记点搜索和标定计算。通过正确选择相应算子和设置参数,就可完成相机的准确标定,标定流程如图1所示。
1.1 标定板制作
Halcon的标定流程所需的对象是方形白底标定板,有m×n个圆形标记点,标定板的一角以三角形标记。原则上,标定板面积约占相机整个视野的[13]。如图2所示,标定板上标记点的尺寸应适当,太大会使邻近标记点间分界不清;太小会使标记点不易分辨。选择标定板的前提是所有标记点成像清晰,并尽可能多的在标定板上排列。标记点越密集,算法越匹配,相应的标定精度越高。
1.2 标定点搜索
标定过程中,必须在摄像机视野内不断改变标定板的位置,转动标定板的方向,在X轴和Y轴方向倾斜标定板,以检测透视畸变和镜头畸变;同时,不能破坏标定板的表面,在标定结束时计算出准确的标定参数。在分割完成的多个区域中,孔型区域的个数与标定板描述文件一致,在图像中确定出标定板区域,外围的矩形轮廓作为标定板所在区域。为了减少背景噪声或其他碎片对提取点的影响,本文采用了轮廓筛选方法,不同的是,忽略小于阈值的闭合区域。标定板区域搜索结果如图3所示。
所有的边缘将被优化到亚像素的精度。将标记点的中心坐标存储在2个数组中,所有点的行坐标存储于RCoord,所有点的列坐标存储于CCoord,2个数组维数必须对应于标记点个数,严格按照标定板描述文件中的顺序排列。
1.3 标定计算
标定计算需要进行坐标变换。笛卡尔坐标系是目前应用最广泛、最理想的位置参考系统。在任何空间,坐标系的建立只需选择原点和坐标轴。
世界坐标系是基础坐标系,其他坐标系的位姿,都以世界坐标系为参考,有时也被称为全局坐标系。为了计算简便,本文所使用的标定算法中,将目标物所在平面中心定义为世界坐标系的原点, X轴和Y轴与成像平面坐标系中Xi轴和Yi轴平行,Z轴与摄像机光轴平行,如图4所示。
图中,P(xw,yw,zw)是点P在世界坐标系W下的坐标,P(xc,yc,zc)是在摄像机坐标系C中的坐标,I是摄像机的成像平面。根据摄像机针孔成像的原理,点P在I的投影为Pi(xi,yi),由于畸变等因素影响,而实际成像于点[P′ix′i,y′i]。
1) 点P在坐标系W与C中的齐次坐标变换关系为:
式中:t是坐标系W与C的位置平移向量;R是坐标系W与C绕X,Y和Z轴的旋转向量,并且旋转角度由欧拉角[(θ,?,φ)]表示。
2) 将摄像机坐标系C下目标点P的三维坐标P(xc,yc,zc)变换为成像平面I二维坐标系中的坐标Pi(xi,yi)。
式中,f是相机焦距。
3) 世界坐标系W下P点发出的光通过透镜中心折射,在成像平面I上没有成像于点Pi(xi,yi),实际成像于[P′ix′i,y′i],这就是透镜的径向畸变。径向畸变关系可以用较简单的形式表示,如下:
式中,k是测量失真程度的参数。当k=0时,无畸变;k<0时,表示桶形畸变;k>0时,表示枕形畸变。
4) 在成像平面坐标系I中,点P以像素坐标表示,记Pi(r,c)。I中主点Oi坐标以(r0,c0)表示,Py和Px分别表示I中yi方向和xi方向单位像素(pixel)长度,变换关系为:
目标点的匹配结果为二维图像坐标,返回世界坐标也是X和Y方向的二维坐标,Z缺省值为0。因该平面是标定板在标定过程中所处的平面,世界坐标的原点被固定在摄像机拍摄图像的中心。
2 试验结果及分析
2.1 试验标定
实验中使用的全景摄像机的分辨率是1 024×768,在标定过程中,用Halcon软件提取图像中的角点。利用棋盘标定板,选择7×7标记点的棋盘[12]。每个棋盘的尺寸为30 mm×30 mm,并且从每个图像中提取6×6个标记点。在不同位置和角度选择10张图片。
在Halcon图像处理软件中,有许多角点提取算法,如Point_Foerstner,Point_Harris和Point_Lepetit算法,可以提取交叉点,但不能排除标定板边缘的某些角坐标,且坐标误差较大。图5比较了几种算法的提取结果。本文利用saddle_points_sub_pix算法提取角点,具有以下特点:
1) 采取亚像素级的数学分析,精确提取角点;
2) 利用灰度值函數的阈值,剔除图像中灰度值相对均匀的区域。
主线程和后台线程的软件标定流程如图6所示。
标定开始,首先制作标定板,读取其描述文件,按下“采集”按钮,判断是否是第一次拍摄,如果摄像机内部参数已初始化,则图像处理标记设置为“真”。如果拍摄到足够多的照片,单击“标定”按钮,当后台线程存储足够多的标记坐标时,开始校准计算,获取摄像机的内外参数并保存。
对10个图像的标定结果的平均误差进行再平均,不考虑透镜畸变,平均误差是0.35 mm。图7比较了文献[14?15]算法的标定误差与本文提出算法的标定误差,可以看出,本文提出方法的算法标定误差较小。
2.2 标定精度
在精度测试中,首先输入目标对象的模板。将目标物体放置在摄像机视场中的固定位置,通过精确的测量,在摄像机拍摄照片后,匹配数据记录下来。10幅图像实验数据如表1所示,匹配精度误差分析直方图如图8所示。根据试验结果,在X方向,视觉软件的测量误差小于0.35 mm,Y方向小于0.25 mm,Z方向小于0.3 mm,校准的匹配性符合系统的要求。