基于机器视觉的分拣系统开发

时间:2022-03-22 07:07:39

基于机器视觉的分拣系统开发

摘要:研究了基于机器视觉的分拣系统开发的基本原理、系统组成及检测算法,介绍了开发过程中所用到的主要的图像处理算法。该系统利用Visual C ++编程软件建立图像处理的算法库,实现对规则几何工件的识别和定位,从而对符合要求的工件进行分拣归类。仿真结果表明,该系统能有效实现对规则几何工件的识别和分拣目的。

关键词:机器视觉;图像处理;分拣;目标识别

引言

机器视觉技术是指用摄像机和计算机来模拟人的视觉功能。近年来随着自动化程度要求的不断提高,机器视觉作为一种新型的科学技术手段开始广泛应用于电子电器、航天、汽车及汽车零部件制造业、制药、工业和电子等领域。工件分拣是工业生产环节的重要组成部分。传统的传感器分拣技术需要将工件有序依次通过传感器的检测范围,灵活性差,检测速度慢,检测工件种类有限,有时需对工件进行接触造成工件损伤等,而利用机器视觉的分拣技术具有检测速度快、可靠性好、实时性高等特点,可以实现无接触、无损检测。本文提出了一种基于机器视觉的工件分拣系统,该系统把机器视觉技术应用到工件分拣问题中,建立摄像机标定的人机交互界面。同时研究了相关图像处理算法,利用阈值分割方法和边缘检测方法解决了工件识别问题以及定位工件中心,有效解决工件的分拣问题。

1视觉分拣系统的构成

本文以三轴运动控制平台为基础,构建了机器视觉分拣系统硬件平台,如图1所示。该工件分拣系统主要有三大模块组成:视觉模块、工件平台模块和分拣系统模块。

图1 机器视觉分拣系统实体图

视觉模块包括工业CCD、图像采集卡等,工件平台模块包括伺服电机、驱动器、丝杠、位置传感器、气动夹爪等,分拣系统模块包括运动控制卡、上位机等。工业CCD与上位PC机相连,用于采集图像数据并传送图像数据。上位机用于编写和运行人机界面和图像处理程序,处理完成的数据通过以太网发送至运动控制卡,运动控制卡根据上位机的数据控制三轴运动平台运动,最终实现工件分拣。

其工作示意图以及工作流程图如图2、图3所示。

图2 视觉分拣系统工作示意图

图3 视觉分拣系统的工作流程图

本文摄像机采用高灵敏度高分辨率CCD 摄像机,运动控制卡采用的是GALIL公司的DMC2143经济型四轴独立控制器,上位机采用PC或IPC,三轴运动平台是采用伺服电机驱动高精度丝杠螺母。

2 算法实现

2.1 相机的标定

在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。

本文以正方体工件为标定模板,在工件正上方的位置拍摄一幅图像。如图4所示,获得正上方位置的目标图像,并根据图像点之间的对应关系即标定出相机内参数和外参数。该方法的目的是将空间坐标系变换到图像坐标系。

图4 目标工件原图

2.2 相机模型

本文中相机模型解决的是三维场景中的点与图像平面上的点的对应问题。针孔模型为线性模型,如图5 所示。空间点P(XW,YW,ZW)在图像平面上的像点为p(u,v),点是空间点P 与光心的连线和图像平面的交点。坐标的转换过程,如图6所示。

转换关系:

M3 为世界坐标到相机坐标的变换矩阵,可表述为旋转加平移变换,R 为3×3 旋转矩阵,为一正交矩阵,虽然有9 个元素,但只有3 个独立变量(φ θ 准)。T 为平移矩阵T=[Tx Ty Tz]T。M2 为相机坐标到图像坐标的转换矩阵,f 为焦距。M1 为图像坐标到像素坐标的转换矩阵,其中dx、dy 分别表示一个像素在x 与y 方向的物理距离,u0、v0 分别表示相机光心在像素坐标系中的位置。

若已知矩阵M1,M2,M3,就可建立起世界坐标和像素坐标的对应关系。相机的标定的任务就是求出每个变换矩阵中的参数,其中矩阵M3 中的(φ,θ,Tx Ty Tz)为相机的外部参数,矩阵M1,M2 中的(f,dx,dy,u0,v0)为相机的内部参数。

2.3 图像分割

在计算机视觉领域,图像分割(Segmentation)指的是将数字图像细分为多个图像子区域(像素的集合)(也被称作超像素)的过程。图像分割的目的是简化或改变图像的表示形式,使得图像更容易理解和分析。图像分割通常用于定位图像中的物体和边界(线,曲线等)。图像分割的方法有很多种,主要可以分为:阈值分割方法、边缘检测方法、区域提取方法、集合特定理论分割方法,在图像分割方面,本文综合运用了阈值分割方法和边缘检测方法。

2.3.1 边缘检测

边缘(edge)是指图像局部强度变化最显著的部分.边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征和形状特征等图像分析的重要基础.图像分析和理解的第一步常常是边缘检测(edge detection)。

图像中的边缘通常与图像强度或图像强度的一阶导数的不连续性有关.图像强度的不连续可分为:(1) 阶跃不连续,即图像强度在不连续处的两边的像素灰度值有着显著的差异;(2) 线条不连续,即图像强度突然从一个值变化到另一个值,保持一个较小的行程后又返回到原来的值.在实际中,阶跃和线条边缘图像是很少见的,由于大多数传感元件具有低频特性,使得阶跃边缘变成斜坡型边缘,线条边缘变成屋顶形边缘,其中的强度变化不是瞬间的,而是跨越一定的距离。

图像先采用高斯函数进行平滑,然后再用拉普拉斯算子进行边缘检测,即Laplace-Gauss算法。它使用一个墨西哥草帽函数

作为滤波器。通常使用的LOG算子是一个 的模板如下:

将Sobel算子与LOG算子结合形成修正LO算法。具体地说,将取较小阈值的Sobel算子作为边缘检测的前提条件,然后进行LOG 的边缘检测,可得到较好的结果。

2.3.2 最佳阈值分割迭代算法

对单个图像目标的处理,采用了以颜色为优势特征的提取算法。算法针对目标与背景颜色的明显差异,将图像转化为灰度图像,利用从RGB 到HSV的转换公式:

(其中 或 )

对调整后的灰度图像分别计算其R、G、B 分量值和H、S、V 分量值,将目标特征突显化。通过对各分量图像的对比,选取目标突显最为明显的R、G 和V 分量灰度图像。采用迭代法求出最佳阈值,再求出图像的全局阈值。得到全局阈值分割图像,利用该阈值对各图像分别进行阈值分割,并运用二值形态学方法对图像进行膨胀和腐蚀处理,以完全分离工件目标。工件进行灰度处理和阈值变换后的图像如下图7和图8所示。

图7 灰度处理 图8 阈值变换

(1)计算图像的最大和最小灰度值 和 ,令阈值T的初始值为

(2)根据阈值 将图像分割成目标和背景两部分,计算两部分的平均灰度值 。

式中,p(i,j)是图像在(i,j)处的灰度值;w(i,j)是灰度值p(i,j)的权重系数,一般取w(ij)=1.0。

(3)计算新阈值

(4)若 ,程序结束,得到最后的 即为最佳阈值T,否则,

返回步骤(2)。

2.4 图像特征与分析

2.4.1 边界提取

根据边界的定义,二值图像边界提取的算法非常简单,就是掏空内部点。所谓内部点就是其8-邻域的全部点都属于这个区域的点。所以,如果原图中有一点为黑,且它的8-邻域点全部为黑色时,则判定该点为内部点,从而将该点修改为白色背景点。【5】工件进行边界检测后的图像如图9所示。

图9 目标工件及工件边缘检测结果

2.4.2 轮廓跟踪

轮廓跟踪算法步骤如下:

1)按自下而上从左到右的顺序搜索,找到第一个值为1的点。它就是最左下方的边界点,记为A。

2)序号k=0.以A为起点,检查A的Director[k]方向的下一个像素点的值,如果其值为1,则它为边界点,将此点存入边界点组,并设置k=(k-2)mod8,以此点为起点在方向Director[k]继续搜索边界点,否则,k=(k+1)mod8,搜索Director[k]方向的点。

3)若搜索到的点等于起点A,则程序结束。

2.4.3 区域形心位置

物体的重心坐标 可用下式计算

对于二值图像,灰度只有0和1,

重心就是形心。如下图10所示。

图10 目标原件及形心结果示意图

如下是定位形心的部分编写程序:

// 循环变量

int i, j;

m00 = 0; m10 = 0; m01 = 0;

//计算0-1阶矩

for (j = 0; j < ih; j++)

{

for (i = 0; i < iw; i++)

{

if (bw[i, j] == 0) continue;

//计算0阶矩

m00 += bw[i, j];

//计算1阶矩

m10 += i * bw[i, j];

m01 += j * bw[i, j];

}

}

//计算形心坐标

centerxy[0] = (int)(m10 / m00);

centerxy[1] = (int)(m01 / m00);

//用红色小方块标注形心

for (i = -2; i < 3; i++)

for (j = -2; j < 3; j++)

bm.SetPixel(centerxy[0] + i, centerxy[1] + j, Color.FromArgb(255, 0, 0));

return bm;

}

3 工件分拣运动的实现

由图像处理算法生成的工件形心位置,为机械手抓取提供了坐标点。上位机将处理得到的坐标点作为运动控制参数发送给运动控制卡,运动控制卡内事先编写好的底层控制程序中含有接收位置参数的变量,当变量接收到参数后会发出驱动脉冲来控制伺服电机,使Z轴精确定位于工件上方,随后控制Z轴下降并由气动夹爪抓取工件,从而实现了目标抓取功能。

4 结语

本文详细阐述了机器视觉技术在工业分拣问题中所使用的分拣算法,采用阈值分割方法和边缘分割方法来定位图像中的物体和边界(线,曲线等),从而简化或改变图像的表示形式,使得图像更容易理解和分析。同时通过边缘检测和轮廓跟踪,从而确定工件形心位置。视觉系统最终根据图像坐标系与物体坐标系的关系,通过目标的相对位置和方向进行分拣。■

参考文献

[1]庄开岚,王吉忠,周洁.机器视觉技术在角度检测方面的应用研究[J].装备制造技术,2011(4):9-10.

[2]李金义,杨成,王京.基于视觉定位的机器人搬运系统[J].制造业自动化,2011,33(2):40-42.

[3]刘凌云.基于3D标靶的摄像机标定方法的改进[J].湖北汽车工业学院报到,2008,22(1):33-36.

[4]朱虹.数字图形处理基础[M].北京:科学出版社,2005.

[5]何新英,王佳忠.基于数学形态和Canny算子的边缘提取方法[J].计算机应用,2008(2):477-479.

上一篇:我国中小企业内部控制问题的原因及其改进 下一篇:做一名善于思考的教师