在机器视觉检测过程中,通常需要通过夹具来对每一个检测的零件进行定位,以保证光源照射到零件而让相机能拍摄到被照射的零件,从而使位置传感器能够在同一位置进行触发,防止零件发生晃动或旋转。每一个所要检测的零件到达检测区域时,视觉系统都要对它进行检测。但是在很多情况下,即使夹具特别精确,也不能保证零件位置不发生变化。因为零件不可能总是准确的定位在期望的位置,即零件不能重复地关于摄像机定位。
在很多情况下,这种未对准可以使用相关测量方法进行补偿。例如,在Sherlock软件中可以得到零件的长度,方法是使用线peek找到所要测量的端点,然后使用距离公式计算两个端点之间的距离。这样,测量值就将保持恒定。只要它的一个端点没有移出相应的线区域即可。
然而,一些情况下则需要绝对对准。此时如果使用理想模板,或者测量的是一个小零件,若还不考虑零件位置的正常变化,那么过度扩大感兴趣区域就不太可能保证鲁棒性。在这些情况下,利用机器视觉软件sherlock的landmark就很容易解决零件不能对准的问题。
1 零件对准工作过程
当检测的零件不在最初训练的位置时,Sherlock的零件对准功能依靠Landmarks可自动找到所要检测的位置。所有点的读数都可以在读数编辑对话框中标记为Landmark。通过指令返回Landmarks标记点的位置后,便可根据landmarks的位置对所要处理的peek进行自动定位。
1.1 零件只发生移动时的对准
当所检测的零件只发生X方向或Y方向的移动时,只需要一个landmark点进行定位就可以实现自动对准。其操作过程如下:
(1)首先在所拍摄的合格零件图像上选定一个点作为定位点(landmark),如利用矩形peek的Smart-Search分析算法对零件的某一特征部分进行训练,并将该特征的best point作为定位点(landmark)。
(2)将矩形peek的范围拉大,使所检测的零件中与所训练的特征相应的特征部分总在该peek范围内。
(3)对需要检测的区域进行训练,并添加相应的程序。
(4)运行检测程序,当零件位置发生移动时,所要检测部位的peek就会根据landmark点自动精确的找到所要检测的部位,并进行检测。
图1中,将十字架作为训练模板,十字架的中心作为landmark,需要检测的位置为梳状齿。当零件发生移动时,peek B可以自动找到所要检测的位置。
1.2 零件既发生移动又有旋转时的对准
当检测的零件相对于训练模板在位置上既有X、Y方向移动,又发生了旋转时,用一个landmark就不能找到所要检测的位置。此时可在sherlock中使用两个landmarks来实现自动对准。其中一个land-mark计算移动的信息,另一个计算旋转的信息。其操作过程如下:
(1) 在所拍摄的合格零件图像上选定两个可以被可靠定位的特征点作为定位点(landmarks)进行训练。
(2) 训练完成后分别将两个特征点的peek拉大,以使每一个特征点都在自己的peek范围内。
(3) 对需要检测的区域进行训练,并添加相应的程序。
(4) 运行检测程序,当零件位置既发生移动,又发生旋转时,所要检测部位的peek就会根据land-mark点自动精确的找到所要检测的部位并进行检测。
零件位置发生旋转时,也可以使用三个land-marks实现对准,假定第一点相对于零件来说是一个固定点,随后的两点只被用来计算旋转信息。那么,记录下点之间的原始角度,再找出运行时的新角度,然后通过新角度和原始角度之间的比较计算出旋转距离,就可以实现零件对准。
1.3 使用Smart Search360的结果来实现零件对准
sherlock软件中的分析算法Smart Search360是一个模式识别的分析算法,该算法不但可以识别旋转的物体,也可以实现零、部件对准。Smart Search360的返回结果中有一个最佳点和一个最佳角度。使用点的转换函数Formula—Align把该点和该角度转换成两个landmarks,就可以实现零件对准。 |