在机器视觉实际工程实践中,有时使用NI Vision定义的默认坐标系进行测量控制并不是很直接。例如,检测目标并不总在固定的位置出现,而是在ROI区域内平移或旋转,甚至有些时候必须通过平移、旋转工作面上的检测目标或通过移动相机,对部件上的几个不同部位分别进行检测才能完成任务。
这样进行图像识别、处理是非常麻烦的,此时就需要对图像进行坐标校准。
使用机器视觉系统进行测控时,各种计算结果都需要基于坐标系来表示。平面坐标系可以使用坐标原点(Original)、横轴的角度(Angle)以及纵轴的方向(Axis Direction)来表示。
当使用NI Vision提供的VI对所建立的机器视觉系统进行校准后,所得到的像素和世界坐标之间的映射关系是建立在默认校准坐标系基础之上的。默认情况下NI Vision的系统校准VI按照以下原则定义校准坐标系:
1、坐标原点。若手工输入一系列校准点,则坐标原点被置于用户定义的坐标原点,通常是两个方向上坐标值均为最小的点中心。若使用校准点阵,则以左上角点中心为坐标原点;
2、横轴的角度为0。亦即横轴由点阵首行各点确定的矢量而定;
3、纵轴的方向为间接方向(Indirect)。纵轴方向与笛卡儿直角坐标系的纵轴方向(Direct)相反。
下图给出了NI Vision确定默认坐标系的示意图,其中左图为校准点阵的世界坐标系,右图为某种可能的图像像素坐标系:
举个例子,下图中的3个工件在视场中分别位于不同的位置并且有旋转。为了能准确测量小孔的位置和大小,可以对每个工件自动检测其左边缘和上边缘,并以它们的交点为坐标原点,以上边缘为x轴,定义间接类型的坐标系。这样一来,虽然每个工件在视场中的位置不同,但合格工件中的小孔相对于每个自动定义的坐标系位置具有一致性。如果机器视觉算法相对于每个自定义的坐标系放置检测小孔的ROI,无论工件如何在视场中变化,都能实现自动检测,直接返回测量结果。
为检测过程自动定义参考坐标系
机器视觉系统实现坐标校准有3种方法:
1、角度法
角度法适合没有畸变且新坐标原点仍位于图像中的机器视觉系统,它通过设定新坐标系的坐标原点、横轴与原坐标系横轴之间的旋转角以及新坐标系纵轴的方向来设置新坐标,如下图所示:
2、双点法
双点法适合有畸变且可以直接从图像中确定新坐标原点位置的机器视觉系统。它通过指定新坐标原点和一个位于坐标系横轴正方向上的点以及坐标系的类型(直接或间接)来设定新坐标系。坐标原点和横坐标上的点所构成的直线与图像水平方向的夹角指明了新坐标系的旋转角。
例如,下图中A、B两点确定了坐标系的横轴,且A点为坐标原点。由于坐标系为间接类型,因此,Y'轴与X'轴夹角为270°。由于在畸变的系统中,当被测目标沿着水平或垂直方向移动时,仍能相对准确地确定其上的边缘,而基于两个边缘点就可以确定稳定的坐标系,所以这种方法比角度法对畸变系统有更强的适应性。
3、三点法
有时候机器视觉系统不仅有畸变,而且被测目标还会在图像中平移、旋转。这种情况下可以使用多点法来设置新坐标系。多点法先使用两个点确定一条坐标轴及其方向,但并不将这两点中的一点作为坐标原点,而是用第三点与前两点所成直线的垂直交点来确定坐标原点。获得坐标原点后,再基于坐标系的类型,就可确定另一坐标轴,如下图所示:
举个例子,下图中(左图)的坐标系以标尺1cm处的点为原点,7cm处的两点作为横轴正方向上的一点来确定坐标系横轴。由于指定坐标系的纵轴为间接方向,因此坐标系位置可以被唯一确定。在右图中很难直接找到合适的坐标原点,因此先检测左侧和顶端的目标边缘,随后用顶端边缘线段的起止点AB确定横轴,而左侧边缘中的C点或D点与横轴的垂直交点O为原点,最后根据纵轴的方向就可以唯一确定坐标系。
双点法和三点法确定坐标系
Nl Vision使用IMAQ Set Calibration Axis Info 2函数为图像重新设置坐标系。该函数位于LabVIEW的视觉与运动→Vision Utilities→Calibration函数选板中,如下图所示:
函数说明及使用可参见帮助手册:
NI Vision使用位于视觉与运动→Machine Vision→Analytic Geometry函数选板中的IMAQ Build CoordSys(Points)封装了双点法和三点法,开发时可直接根据目标上的特征点,调用该VI来确定参考或测量坐标系,如下图所示:
具体使用可参见帮助手册。
除此之外,还需要安装:OpenG Libraries驱动,OpenG库是由OpenG社区创建并根据BSD-3-Clause许可证(获得Open Source Initiative批准)共享的数百个开源VI的集合。
可直接在VI Package Manage中进行安装,如下所示:
接下来根据过孔和PCB边角实现下图PCB电路板坐标定位,达到无论在任何角度,均可定位PCB的效果。
程序设计思路如下:
程序实现如下所示:
下面显示了对几个目标图像进行检测时的图像显示情况,以及某一目标图像中测量得到的小孔像素位置坐标和其在校准坐标系中的世界坐标。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删