摘要:为了实现太阳能电池片丝印机视觉对位系统高精度标定的目标,采用线性相机模型与高精度的标定板及高精度的主动视觉平台,并采用基于平面正交运动的主动视觉标定方法以实现标定系统构建。本研究阐述了线性相机模型和相机标定方法,介绍了丝印机视觉对位系统的构成,设计了基于主动视觉标定方法的主动视觉对位平台的运动过程。标定时,令主动视觉平台按照预先设计的运动信息表动作,由相机采集每次运动后标定板上特征点的图像。根据每次平台运动采集到的特征点信息与平台运动距离之间的关系,通过采用Matlab的OPENCV 算法,线性地求解了相机的内外参数,给出了相机标定的部分程序,并分析了标定误差。结果表明,采用基于平面正交运动的主动视觉标定方法,仅需主动视觉平台做有限的几次运动就能够实现相机的线性标定,实现起来比较容易,且标定精度能够满足使用需求。
关键词:相机标定;相机模型;丝网印刷机;标定方法
0 引 言
随着图像处理、计算机和光电技术不断成熟和完善,机器视觉广泛地应用于工业控制的各行各业。机器视觉,又称计算机视觉,是将数字图像处理和数字图像分析、图像识别结合起来,试图开发出一种能与人脑的部分机能比拟,能够理解自然景物和环境的系统,在机器人领域中为机器人提供类人视觉的功能[1]。计算机视觉的基本任务之一是从相机获取的二维图像信息出发来计算三维空间中物体的几何信息,由此来重建或识别物体,并进一步指导机器认知现实世界。在上述过程中,相机标定是一个无法回避的步骤。在传统的相机标定领域内,研究者们在相关方面开展了广泛的工作,取得了丰富的理论和实践应用成果,包括相机模型的建立,相机标定物的构建,标定物的识别定位,标定物上特征点的提取,标定算法模型的构建,相机姿态判断以及基于标定技术的各种具体应用等[2]。近年来,国内外的许多学者对相机的标定方法展开了深入的研究,提出了许多适应不同场合下的相机标定方法。
本研究采用基于主动视觉的相机标定方法,探索如何运用在太阳能电池片丝印机。
1 相机标定
相机标定是机器视觉的基础,标定结果决定了机器视觉的系统精度。标定技术包含两方面的内容,一是所选用的相机模型,另一个是所选用的标定方法。
相机模型一般有线性模型和非线性模型两种。线性模型计算方便,非线性模型能够很好地模拟相机的相差,但计算复杂,鲁棒性低。
1.1 线性相机模型
相机标定就是确定相机的位置、属性参数(相机内外参数),以便于确定世界坐标系中物理点与其在图像坐标系中所成的像点之间的对应关系。精确标定相机内外参数不仅可以提高视觉检测任务的可靠性,而且还可以提高视觉检测任务的精度[3]。
图1 相机标定之3种坐标关系
Pw(Xw,Yw,Zw)—物体在世界坐标系的坐标值,Pu(Xu,Yu,Zu)—物体在图像坐标系的坐标值,f—相机的有效焦距。
相机模型中的3种坐标系关系如图1所示,相机坐标系即是以光轴中心O为原点的坐标系(三维),成像原点O1所代表平面即为图像坐标系(二维),实际物体坐标系即为世界坐标系。世界坐标系与图像坐标的关系[4-6]:
式中:a=f/dx,b=f/dy;(u,v)—以像素表示的图像坐标系下像素的行数和列数;(u0,v0)—在图像坐标的像素坐标;(dx,dy)—以毫米为单位的单位像素间的距离;M—旋转矩阵;T—平移矩阵。M1—内参数矩阵,M2—外参数矩阵,M—投影矩阵,它表征了二维图像坐标与三维世界坐标之间的基本关系。
所谓的相机标定就是要获取M的参数。
1.2 相机标定方法
一般说来,相机标定方法可以分为:传统相机标定方法、相机自标定方法和基于主动视觉的相机标定方法。
传统标定方法是指用一个结构己知、精度很高的标定块作为空间参照物,通过空间点和图像点之间的对应关系来建立相机模型参数的约束,然后通过优化算法来求取这些参数。传统标定方法的优点是可以使用任意的相机模型,标定精度高。其不足是标定过程复杂,需要高精度的标定块,而实际应用中在很多情况下无法使用标定块,所以当应用场合所要求的精度高且相机的参数不经常变化时,传统标定方法应为首选[7]。典型的传统标定方法有:直接线性转换法、Tasi基于径向约束两步法、张正友的二维平面标定法、基于交比不变标定法。
自标定方法不需要使用标定靶,仅利用图像对应点的信息,直接通过图像来完成标定。20世纪90年代,Hatley Faugeras首次提出了自标定的概念,实现不使用标定板或相机运动情况未知的情况下的标定,自标定方法灵活,但是标定鲁棒性较差,应用于标定精度要求不高的场合。
基于主动视觉的相机标定法:这种标定方法的前提是“已知相机的运动信息”。运动信息包括定性信息和定量信息。例如定性信息是相机做纯平移运动或纯旋转运动。定量信息就是相机朝某一方向做了一定量的平移运动[8]。
在主动视觉系统中,数据获取的特性是动态地受场景控制的,如果观察者是主动地并且控制其视觉传感器,许多视觉任务往往会变得比较简单。主动视觉标定方法中,相机安置在可精确控制的运动平台上,可以人为地控制运动平台做平移运动或正交运动。基于主动视觉的标定方法最早由Mar在1996年提出,通过控制相机做两组三正交平移运动,利用扩展焦点的性质线性地求解相机的内参数。之后李华等提出通过相机做5组平面正交运动标定相机的内参数,而杨广林等提出了一种矩阵标定方法,仅需场景中两个特征点,通过相机做两次平移运动和一次旋转运动,即可线性标定相机[9]。
基于三正交平移运动的标定方法,其标定的基本算法步骤为:①控制相机做至少二组相互独立的三正交运动(二组内任意4平移向量不共面);②通过图像对应,计算当物体或相机作纯平移运动时图像对应点连线的交点;③通过线性约束方程求解。该方法可以线性求解相机的内参数,但要求相机作三正交运动需要高精度的摄像平台来实现。基于平面的正交运动标定方法仅需相机做一次平移运动和两次任意运动(两次任意运动的旋转轴互不平行),就可以线性标定。该标定方法与三正交运动法相比,运动更容易实现,是目前能够线性标定相机对设备要求最低、从理论上比较完整的一种基于主动视觉的相机标定方法[10-12]。
2 丝印机相机标定
2.1 丝印机视觉对位系统的构成
丝印机视觉对位系统如图2所示,该系统由机器视觉部分与UVW对位平台共同组成。机器视觉部分包含4个相机,在丝印过程中拍摄网版MARK点与硅片的边,根据标定所得的位置关系将网版MARK点与硅片对齐,之后由工控机进行数据处理,将运动信息发送给PLC,由PLC来控制UVW平台实现精密对位。
图2 丝印机视觉对位系统
视觉部分相机采用30万工业相机,CCD尺寸为1/4寸,图像分辨率为640×480,视场大小为3.2 mm×2.4 mm,像元尺寸为5 um×5 um。
2.2 丝印机标定靶
要标定相机,一般来说需要提供场景与图像之间多个坐标对。场景上的坐标点一般就是直接从标定靶测得,图像坐标需要从影像中获取。为达到以上目的,一般都是在标定靶上制作多个特征点。
标定靶有三维、虚拟三维和二维等几种。三维标定靶的成本高,特征点的三维坐标精度要求高,其特征点在三维空间的三维坐标测量也是十分复杂的。但另一方面,为了获得所有的相机参数,许多标定方法都需要已知标定靶特征点的三维坐标,常用的方法就是由相机在不同位置获取二维标定靶的多幅图像来构建三维场景[13-14]。
由于丝印机对位精度要求高,对标定靶要求就非常高。丝印机用标定靶如图3所示,其上有4个区域,分别对应4个相机。单个相机的标定区域尺寸为118行88列共10 208个黑白相间的正方形,每个标定区域包含两个特征点。丝印机标定靶特征点如图4所示。
图3 丝印机用标定靶
图4 丝印机标定靶特征点
2.3 丝印机相机标定过程
丝印机采用基于平面的正交运动标定方法来实现相机标定。其基本过程是:
(1)UVW平台运动,包含11次控制。其中有3次平台不动,仅采集图像,其他运动包含了标定所需的全部运动,从初始位置开始,最后又回到了初始位置。运动信息如表1所示。
表1 丝印机相机标定运动信息
(2)分别计算标定靶和相机成像的图像特征点的坐标;
(3)利用特征点的两对坐标对应关系求解相机参数。
2.4 标定算法的实现
本研究利用OPEN CV来处理图像并实现相机标定。主要步骤包括:图片的加载,角点的检测,提取角点精确坐标,参数求解,利用参数对图像进行矫正。部分程序如下:
#include<studio.h>
#include “cv.h”
#include “highgui.h”
#include <stdlib.h>
//定义变量并初始化
CvMat *intri_mat=0;//内参数矩阵
CvMat *rot_vectors=0;//旋转向量
CvMat *trans_vectors=0;//平移向量
CvMat *point_counts=0;//图片角点数
CvMat *object_points=0;//世界坐标系角点坐标
CvMat *image_points=0;//检测到的角点坐标
IplImage *gray_image=0;//单通道灰度图像
IplImage *res_image=0;//校正以后的图像
//计算
intri_matrix=cvCreateMat(3,3,CV_32FC1);//内参数矩阵
rot_vectors=cvCreateMat(NImages,3,CV_32FC1);//旋转向量
trans_vectors=cvCreateMat(NImages,3,CV_32FC1);//平移向量
point_counts=cvCreateMat(NImages,1,CV_32SC1);//图片角点数
object_points=cvCreateMat(NImages*NPoints,3,CV_32FC1);//世界坐标系的角点坐标
image_points=cvCreateMat(NImages*NPoints,2,CV_32FC1);//检测到的角点坐标
tep_matrix=cvCreateMat(1,3,CV_32FC1);
rot_matrix=cvCreateMat(3,3,CV_32FC1);//旋转矩阵
trans_matrix=cvCreateMat(3,3,CV_32FC1);//旋转矩阵
gray_image=cvCreateImage(image_pixel,IPL_DEPTH_8U,1);//单通道灰度图像res_image=cvCreateImage(image_pixel,IPL_DEPTH_8U,1);//校正以后的图像
……
2.5 标定误差分析
标定过程中,误差产生的原因主要包括:①角点提取产生的误差;②图像采集卡的采集精度;③标定方法的选取和标定系统各部分结合产生的系统整体误差。误差的产生是不可避免的,只要其在要求的范围内即可满足应用。
误差分析由OPENCV函数进行计算,将校准后的坐标和原来求得的坐标进行对比,最后将结果输出到文件。由程序得到的系统标定的像元误差为0.176 1个像素。
3 结束语
为了实现太阳能电池片丝印机视觉对位系统的相机高精度标定,使用了一种基于平面正交运动的主动视觉的标定方法,该标定方法使用一个高精度的标定板,通过精确控制主动视觉平台做2次平移、2次旋转和4次正交运动,即可实现整个系统的线性标定。标定运动过程根据预先设定的运动信息表进行,可以实现标定流程的全自动化。相机参数的求解采用Matlab的OPENCV算法,根据图像特征点的坐标和主动视觉平台的运行距离之间的对应关系,线性地求解了相机的内外参数。结果表明利用此方法实现的标定误差小于0.25个像素,具有很好的精度,在工业控制领域具有很好的推广应用价值。