基于机器视觉的零件图像采集及识别的研究
扫描二维码
随时随地手机看文章
0引言
机器视觉是通过光学的装置和非接触的传感器自动地接受和处理一个真实物体的图像,以获得所需信息或用于控制机器动作的装置。机器视觉借助于计算机软件对图像进行定量的分析,其处理的速度与被处理图像的复杂程度有关。它具有快速、可靠、一致性高的优点,对于大批量的生产有很好的经济效益。本课题采用先进的图像采集系统对零件的轮廓进行采集,通过VC++。NET作为开发平台,结合图像处理相关的算法,对零件的轮廓边缘特征进行识别提取。
本文首先通过WAT-902黑白CCD(电荷耦合器件)和T2314FICS-3工业自动化镜头对平台正下方方形零件拍摄,由MV-20图像采集卡将模拟信号转化为数字信号,将其送入计算机进行图像二值化处理、区域分割、边缘检测及跟踪、简单背景下的物体目标与背景的分离以及特征提取等处理,最后融合特征数据建立判别函数,实现了对零件图像的自动识别,本文主要介绍灰度变换,二值化处理和边缘检测的算法及其应用。
1灰度变换
灰度变换是图像增强的重要手段,它可使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。
本课题采用灰度线性变换方法中的分段变换法进行可灰度的拉伸试验、分段线性变换[1]就是将图像的灰度区间分成两段乃至多段分别进行线性变换,它的优点是可以根据用户的需要,拉伸特征物体的灰度细节,相对抑制不敢兴趣的灰度级。
分段线性变换遵循以下原则:
<center>如果|a‘-c‘|>|a-c|,|c‘-d‘|<|c-d|,|d‘-b‘|=|d-b|,则是扩展第1区间[a,c],压缩第2区间[c,d],维持第3区间[d,b],得到低灰度级被增强的图像。如果|d‘-b‘|<|d-b|,则可得高灰度级被增强的图像。
图1是基于VC开发出的用于分段线性变换设置方法,图中利用点(50,30)和点(200,220)将灰度空间分成3段,通过调整这两点的坐标位置进行灰度变换。
2图像的二值化
为了进行图像识别,需要将经过拍摄到的图像二值化,因为CCD摄取的图像f(x,y)为灰阶图像,图像上的任一像素(x,y)处的灰度级l范围为0≤1≤L。当l=0,像素颜色为黑色;当l=1,像素颜色为白色;当0≤1≤L,像素颜色为白色,像素显示黑与白之间的中间色。所谓图像的二值化,就是使灰度级l只能取0或L,则图中像素的颜色或者为白,或者为黑,此时图像被称为二值图像(黑白图像),为了使矩阵运算较为简单,通常取L=1(规格化)。
图像二值化的目的是为了从原始图像中检测出对象物,即将图像分成对象物和背景两个区域,通常的办法是设定一个阈值θ,取原始图像中灰度级大于θ的像素群为对象物,小于θ的像素群为背景区域,例如设原始图像为f(x,y),二值化后图像为g(x,y),则
二值化的关键和难点是阈值选择。在数字图像中,无用的背景数据以及各种噪声的数据和对象物常常混在一起,阈值的选择方法很多,这里采用最大方差阈值法[2,3]对零件的图像进行处理。
最大方差阈值法是把待处理图像的直方图在某一阈值处分割成两组,当被分割成两组间方差为最大时,决定阈值。
设灰度图像f(x,y)的灰度级为0-L,灰度级i的像素数为ni,则图1中,总像素数为:将灰度级分为两组:C0=0~k,C1=k+1~L,则C0产生的概率为:
图2为二值化前后的直方图。
3边缘检测
在对图像进行特征提取之前,一般都需要进行边缘检测,然后进行二值化处理,边缘检测将突出图像的边缘,边缘以外的图像区域通常被削弱甚至被完全去掉。处理后边界的亮度与原图中边缘周围的亮度变化率成正比。边缘一般分为阶跃性边缘和屋顶状边缘。
在本课题中,零件图像和背景图像的灰度值有着显著的不同,属于阶跃性边缘,这种边缘的检测通常借助空域微分算子进行,通过将其模板与图像卷积来完成,其实质是采用某种算法提取出图像与背景间的交界线,用图像灰度分布的梯度来反映,因此可以用局部图像微分技术来获得边缘检测算子。以下是对几种经典的边缘检测算子进行理论分析,并对各自的性能特点做出了比较和评价。
以这些理论为依据,这里采用了几种常用的边缘检测方法:Roberts边缘检测算子、Sobel边缘检测算子、Prewitt边缘检测算子、Laplace边缘检测算子。
3。1Roberts边缘检测算子[4,5]
Roberts边缘检测算子是一种利用局部差分方法寻找边缘的算子,它根据任意一对互相垂直方向的差分可用来计算梯度的原理,才能采用对角线方向相邻两像素之差,即
适当选取门限TH并做如下判断:属于R(i,j)>TH,则(i,j)为阶跃状边缘点,{R(i,j)}为边缘图像。如图3所示。
3。2Sobel边缘检测算子[4,5]
Sobel边缘检测算子采用两个卷积核:
图像中每个点都要这两个核进行卷积,前一个核对水平边缘响应最大,后一个核对垂直边缘响应最大,两个模板各司其职。最后把两个卷积结果的最大值作为该点的输出值。对数字图像{f(i,j)}的每个像素,考察它上下左右邻点灰度的加权差,与其接近的邻点的值大。
算子如下:
s(i,j)=|Δxf|+|Δyf|=|(f(i-1,j-1)+2f(i-1,j)+f(i-1,j+1))-(f(i+1,j-1)+2f(i+1,j)+f(i+1,j+1))1+|(f(i-1,j-1)+2f(i,j-1)+f(i+1,j-1))-(f(i-1,j+1)+2f(i,j+1)+f(i+1,j+1))|
Sobel算子检测到的边缘如图4所示。
对比两种算子得到的图像可以简单地得出以下结论:Roberts算子检测水平和垂直的效果好于斜向边缘,定位精度高,但对噪声敏感;Sobel边缘检测算子则对灰度渐变和噪声较多的图像处理得较好。
4结束语
在该项目的研究过程中,本文所论述的灰度变换中的分段线性变换法、图像二值化中的最大方差阈值法及边缘检测中的Roberts边缘检测算子、Sobel边缘检测算子、Prewitt边缘检测算子、Laplace边缘检测算子都在VC++。NET中实现,并已经运用于整个采集识别过程,实验表明,灰度变换和二值化能很大地提高对灰度图像的识别精度,噪声较低的环境下,利用Roberts算子检测边缘定位精度较高,识别出的图像精度能达到0。05mm。在此基础上已开发出一套完整的零件位姿图像采集识别系统。