论文部分内容阅读
【摘要】本文利用VisionPro视觉软件进行数字图像识别与定位研究。首先利用该软件实现了图像采集和摄像机标定,然后基于VisionPro运用VB编写人机交互界面,利用采集得到的图像进行了目标识别定位。同时利用视觉处理中常用的工具Opencv对采集的图像进行了相同的目标识别定位。对两种方法得到的识别效果和定位数据进行了对比,结果表明,基于VisionPro的视觉系统得到的识别效果更好,定位数据更准确。
【关键词】机器视觉;VisionPro;识别定位;VB.NET
1.引言
自20世纪80年代以来,机器视觉技术开始高速发展,已经从实验室走向了人们生产生活的各个方面。机器视觉系统的特点是提高生产的柔性和自动化程度。在一些不适合于人工作业的危险工作环境或人工视觉难以满足要求的场合,常用机器视觉来替代人工视觉;同时在大批量工业生产过程中用机器视觉检测方法可以大大提高生产效率和生产的自动化程度。而且机器视觉易于实现信息集成,是实现计算机集成制造的基础技术。现今,在机器视觉领域已经有了一些成熟的视觉开发软件,其封装了很多可靠、高效的算法和工具。本文选用美国康耐视公司的VisionPro软件,这是一套基于PC架构的视觉系统软件开发包,主要应用于各种复杂的机器视觉领域。它集成了用于定位、检测、识别和通讯等任务的工具库,可用C#、VB和VC等语言进行二次开发。本文基于VisionPro利用VB.NET语言进行视觉定位系统的软件开发[1]。
2.视觉定位系统
2.1 硬件组成
在图像处理前首先要得到清晰、有效的图像,这就需要有一套完整的硬件设备。一般主要包括照明用的光源、调节图像清晰度的镜头、将图像转换为数字信号的摄像机和进行图像处理的计算机。其中摄像机与计算机之间的接口也比很重要的,主要分为IEEE1394和采集卡,USB2.0或Gigabit Ethernet千兆网三种[2]。
本视觉系统采用的是日本FUJINON工业摄像头,德国BASLER工业像机ACA1600-20GM,GigE千兆网接口。
2.2 基于VisionPro的软件开发
本视觉定位系统利用VB.NET编写适合实验需要的界面,界面中只包含需要的操作功能和数据,使整个界面看起来更加清楚简单,操作起来更方便。
(1)图像采集
本视觉系统通过GigE千兆网作为接口控制相机进行图像采集。打开软件并连接相机,设置好参数后,就可以通过可视化工具Image Source直接获取图像。
(2)相机的标定
机器视觉的基本任务之一是从摄像机获取的图像信息出发计算三维空间中物体的几何信息,并由此重建和识别物体。空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的,这些几何模型参数就是摄像机参数。在大多数条件下,这些参数必须通过实验与计算才能得到,这个过程被称为摄像机标定[3]。
本文利用VisionPro的CalibChecker-boardTool工具进行摄像机标定。首先需要一个棋盘板,棋盘板必须满足以下条件:必须由大小相同的黑白格子交替组成;格子最好是正方形,如果达不到的话,格子长宽比也要在0.9和1.0之间。本系统采用康耐视公司提供的标准棋盘板进行标定[4,5]。图1是标定的结果。
(3)目標识别与定位
视觉定位的目的就是找出目标物的坐标位置。本文利用VisionPro的PMAlignTool工具对目标物体进行识别定位。PMAlignTool工具是基于PatMax算法,该算法采用模板定位技术(pattern-location technology),先训练模板,然后根据模板对采集图像进行模板匹配,实现定位。在训练模板和定位过程中,PatMax不是基于像素栅格(Pixel grid)分析图像,而是采用基于几何外形(Features based)的定位方法,通过图像的几何特征信息和特征之间的空间位置关系进行模板训练和匹配,使其能够保证很高的精度和抗干扰性,而且可以高速定位发生旋转、缩放、甚至拉伸形变的物体[1]。PMAlignTool工具定位的流程如图2。
通过PMAlignTool工具对目标物体识别定位后,利用VB调用该工具下的Results.Item(i).GetPose().TranslationX和Results.Item(i).GetPose().Transl-ationY。这两个值就是序号为i的目标物在图像上的X、Y坐标值,其中i为识别的各个目标物的序号。
3.实验
3.1 PatMax识别定位
在对摄像机完成标定校正后,运用自己编写的人机交互界面完成对目标物体进行识别定位,并将所需要的目标位置坐标显示在界面上。同时又将识别到的所有目标物体的坐标信息保存到了文本文档中,方便调用。主要操作如下:
(1)模型训练。实验以一元硬币为目标物,图3为训练完成的模型。
(2)目标识别定位。图4是利用VB.NET编写的界面,在图像上能够清楚的显示出所识别出的目标轮廓和形心位置,界面右方结果显示区内可以看到所识别的目标数量和所需要的目标物的坐标。
3.2 对比实验
视觉定位可以用的软件和工具包很多,其中应用最广泛的就是Opencv,它是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。为了验证PatMax算法定位的准确性,本文利用Opencv对相同的图像进行目标识别定位,对得到的效果图和坐标进行对比[6]。如图5所示,其中蓝色为轮廓曲线,绿色十字为目标形心。
【关键词】机器视觉;VisionPro;识别定位;VB.NET
1.引言
自20世纪80年代以来,机器视觉技术开始高速发展,已经从实验室走向了人们生产生活的各个方面。机器视觉系统的特点是提高生产的柔性和自动化程度。在一些不适合于人工作业的危险工作环境或人工视觉难以满足要求的场合,常用机器视觉来替代人工视觉;同时在大批量工业生产过程中用机器视觉检测方法可以大大提高生产效率和生产的自动化程度。而且机器视觉易于实现信息集成,是实现计算机集成制造的基础技术。现今,在机器视觉领域已经有了一些成熟的视觉开发软件,其封装了很多可靠、高效的算法和工具。本文选用美国康耐视公司的VisionPro软件,这是一套基于PC架构的视觉系统软件开发包,主要应用于各种复杂的机器视觉领域。它集成了用于定位、检测、识别和通讯等任务的工具库,可用C#、VB和VC等语言进行二次开发。本文基于VisionPro利用VB.NET语言进行视觉定位系统的软件开发[1]。
2.视觉定位系统
2.1 硬件组成
在图像处理前首先要得到清晰、有效的图像,这就需要有一套完整的硬件设备。一般主要包括照明用的光源、调节图像清晰度的镜头、将图像转换为数字信号的摄像机和进行图像处理的计算机。其中摄像机与计算机之间的接口也比很重要的,主要分为IEEE1394和采集卡,USB2.0或Gigabit Ethernet千兆网三种[2]。
本视觉系统采用的是日本FUJINON工业摄像头,德国BASLER工业像机ACA1600-20GM,GigE千兆网接口。
2.2 基于VisionPro的软件开发
本视觉定位系统利用VB.NET编写适合实验需要的界面,界面中只包含需要的操作功能和数据,使整个界面看起来更加清楚简单,操作起来更方便。
(1)图像采集
本视觉系统通过GigE千兆网作为接口控制相机进行图像采集。打开软件并连接相机,设置好参数后,就可以通过可视化工具Image Source直接获取图像。
(2)相机的标定
机器视觉的基本任务之一是从摄像机获取的图像信息出发计算三维空间中物体的几何信息,并由此重建和识别物体。空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的,这些几何模型参数就是摄像机参数。在大多数条件下,这些参数必须通过实验与计算才能得到,这个过程被称为摄像机标定[3]。
本文利用VisionPro的CalibChecker-boardTool工具进行摄像机标定。首先需要一个棋盘板,棋盘板必须满足以下条件:必须由大小相同的黑白格子交替组成;格子最好是正方形,如果达不到的话,格子长宽比也要在0.9和1.0之间。本系统采用康耐视公司提供的标准棋盘板进行标定[4,5]。图1是标定的结果。
(3)目標识别与定位
视觉定位的目的就是找出目标物的坐标位置。本文利用VisionPro的PMAlignTool工具对目标物体进行识别定位。PMAlignTool工具是基于PatMax算法,该算法采用模板定位技术(pattern-location technology),先训练模板,然后根据模板对采集图像进行模板匹配,实现定位。在训练模板和定位过程中,PatMax不是基于像素栅格(Pixel grid)分析图像,而是采用基于几何外形(Features based)的定位方法,通过图像的几何特征信息和特征之间的空间位置关系进行模板训练和匹配,使其能够保证很高的精度和抗干扰性,而且可以高速定位发生旋转、缩放、甚至拉伸形变的物体[1]。PMAlignTool工具定位的流程如图2。
通过PMAlignTool工具对目标物体识别定位后,利用VB调用该工具下的Results.Item(i).GetPose().TranslationX和Results.Item(i).GetPose().Transl-ationY。这两个值就是序号为i的目标物在图像上的X、Y坐标值,其中i为识别的各个目标物的序号。
3.实验
3.1 PatMax识别定位
在对摄像机完成标定校正后,运用自己编写的人机交互界面完成对目标物体进行识别定位,并将所需要的目标位置坐标显示在界面上。同时又将识别到的所有目标物体的坐标信息保存到了文本文档中,方便调用。主要操作如下:
(1)模型训练。实验以一元硬币为目标物,图3为训练完成的模型。
(2)目标识别定位。图4是利用VB.NET编写的界面,在图像上能够清楚的显示出所识别出的目标轮廓和形心位置,界面右方结果显示区内可以看到所识别的目标数量和所需要的目标物的坐标。
3.2 对比实验
视觉定位可以用的软件和工具包很多,其中应用最广泛的就是Opencv,它是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。为了验证PatMax算法定位的准确性,本文利用Opencv对相同的图像进行目标识别定位,对得到的效果图和坐标进行对比[6]。如图5所示,其中蓝色为轮廓曲线,绿色十字为目标形心。