一种改进分水岭算法在高速高精度帧片机视觉检测中的应用
一种改进分水岭算法在高速高精度帧片机视觉检测中的应用摘要:针对高速高精度帧片机视觉检测中的元件图像分割问题,提出了一种改进分水岭算法。该算法结合传统的边缘检测和阈值分割,并采用一定的集水盆区域合并准则,有效地抑制了过分割现象。现场运行结果表明该算法效果很好,满足了帧片机视觉检测的要求。
关键词:分水岭算法 贴片机 图像分割
随着表面贴装技术的迅速发展,贴片机在我国电子组装行业中的应用越来越广泛。它是机-电-光以及微型计算机控制技术的综合体,通过吸取-位移-定位-放置等功能,实现了将表面贴装元件快速而准确地贴装到PCB板指定的焊盘位置。其中贴片机视觉检测的任务是完成帖装元件的中心定位、质量检测以及贴装校正等。而实现正确的视觉定位与检测的前提是保证图像的正确分割,即将贴装元件准确地从图像的背景中分割出来。
图像分割作为由图像处理到图像分析的关键步骤,至今已有许多相关算法被提出,大致分为三类:一是基于阈值的方法;二是基于区域的方法;三是基于边缘的方法。尽管这些方法已被广泛应用于医学图像分割、遥感影像特征提取以及红外目标检测等诸多领域中,但对于贴片机这种高速运动环境下的高速高精度图像分割算法国内目前尚处于研究应用的起步阶段。
分水岭(Watershed)算法是一种新近发展起来的数学形态学图像分割方法。这种方法之所以引起人们的重视,一是其计算速度较快,二是物体轮廓线的封闭性,三是定位的精确性。但分水岭算法对微弱边缘也具有良好的响应,因此采用分水岭算法进行图像分割时,通常会产生过度分割的现象。
本文针对项目组在国内率先研制和产业化的八头全自动高速高精度贴片机中涉及的微型计算机视觉检测问题,提出了一种以分水岭算法为基础,并结合传统的边缘检测和阈值分割算法的改进分水岭算法,避免了分水岭变换过度分割的缺陷,实现了贴装元件与背景的精确分割。
1 传统阈值分割算法及其缺陷
简单说来,灰度图像的阈值分割就是先确定一个处于图像灰度取值范围之中的灰度阈值,然后将图像中各像素的灰度值与这个阈值相比较。像素灰度值大于阈值的为一类,像素灰度值小于阈值的为另一类,灰度值等于阈值的像素可归入上述两类之一。这两类像素一般分属图像中的两类区域,所以对像素根据阈值分类就达到了将目标从背景中分割出来的目的。
如果要把图像中各种灰度的像素分成多个不同的类,那么需要选择一系列阈值以将每个像素分到合适的类别中去。如果只用一个阈值分割称为单阈值分割方法,如果用多个阈值分割称为多阈值分割方法。
一幅原始图像f(x,y)取单阈值T分割后的图像可定义为:
在一般的多阈值分割情况下,取阈值分割后的图像可表示为:
F(x,y)=k 如Tk-1<f(x,y)≤Tk k=0,1,2,…,K (2)
其中T0,T1,…,Tk是一系列分割阈值,k表示赋予分割后图像各区域的不同标号。
由此可见,阈值分割算法主要有两个步骤:
(1)确定需要的阈值;
(2)将分割阈值与像素值比较以划分像素。
以上步骤中,确定阈值是分割的关键,如果能确定一个合适的阈值就可以方便地将图像分割开来。但由于图像的复杂多变性,确定一个准确的阈值并非易事。近年来许多阈值分割算法还借用了神经网络、模糊数学、遗传算法、小波变换等工具,但由于所处理的图像不同,每种方法的适用性都受到一定的局限。特别是对于贴片机,照明情况复杂多变,光照条件和变化对贴装元件图像的灰度分布以及元件与背景的对对度影响很大,因此很难确定一个准确的阈值来对图像进行分割,传统的阈值分割算法受到了很大限制。特别当元件与背景的对比度差或元件旁边有干扰点时,即使阈值已被确定,也有可能导致误分割。
2 传统分水岭算法及其缺陷
分水岭算法是一种基于数学形态学的分割方法,基本原理是把灰度图像看作是测地学上的地形表面,图像中每个像素的灰度值代表该点的海拔高度,图像中每一个局部极小值及其影响区域被称为集水分别,而集水分盆的边界则形成分水岭。分水岭的计算方法很多,图1描述了分水岭算法的经曲体形:浸没模拟。在图像的每一个局部极小值处刺穿一个小孔,然后将其逐渐深入一个湖中,图像的局部极小值点先进水,水逐渐浸入整个集水盆地。当水位达到盆地的边缘高度就将溢出,这时在水溢出处建立堤坝。如此直到整个图像沉入水中,所建立的堤坝就成为分开盆地的分水岭。
g(x,y)=W{f(x,y)} (3)
基于上述浸没模拟,人们提出了许多分水岭计算方法,比较经典的是Vincent L提出的。在该算法中,分水岭计算分为两个步骤,一个是排序,另一个是淹没。首先按像素灰度值的升存排列像素,然后升序实现淹没过程,并利用一个先进先出的数据结构,即循环队列来扩展标记过的聚水分别地。通过一定的规则,分配分水岭标记,最终得到准确的结果。
3 改进分水岭算法
图像分割的目的是将图像分割成不同的特体,即提取出物体的边缘。由于特体边缘的灰度变化比较强烈,而梯度图像正好描述了该图的灰度变化情况,因此,可使用梯度图像的分水岭变化换来进行图像分割。梯度图像可将原始图像通过梯度算子边缘检测得到,这里采用索贝尔(Sobel)算子,其两价个3×3梯度变换卷积模板如图3。
原始输入图像f(x,y)经过边缘检测索贝尔算法S{·}得到梯度图像f‘(x,y)的算法可以简单表示为:
f‘(x,y)=S{f(x,y)} (4)
分水岭变换得到输入图像的集水分别图像,而集水盆之间相邻的像素点,即为分水岭。显然,分水岭表示图像极大值点。但是这些极大值点中并非所有都是期望的,有些是由于物体的细小结构和噪声引起。如果每一个极大值点都确定一个集水盆,那么输出图像将产生过分割。由于背景之间、物体之间的像素灰度值分别具有相似性,而背景与物体之间的像素灰度值则差别较大,分水岭变换输出图像的各极大值点之间也反映了这种相似性和差别。因此,设定一分割阈值,定义为两相邻极大值点之间的灰度差。其某一极大值点与它最邻近的另一极大值点之间的灰度差小于该阈值时,由这两个极大值点确定的集水盆将合并;否则两集水盆操保持不变。该算法描述为:设分水岭变换后的输出图像为g(x,y),任意两相邻极大值点的灰度值分别为p1、p2,对应的集水分盆分别为C1、C2,若用(C1+C2)表示两集水盆合并,(C1、C2)表示两集水分别保持不变,分割阈值为T1,则该算法的输出图像G(x,y)可表示为:
经过区域合并后的图像G(x,y)为一灰度图像,而且特体仍有可能被分割成灰度值各不相同的几个区域。考虑到元件位于图像中心位置一定范围内,基于这种先验知识,对G(x,y)再作一阈值分割,取阈值T2为图像左上角位置像素灰度值,G(x,y)中灰度值等于T2的像素变换为最小值(0),其余像素变换为最大值(255),经过变换后的目标图像F(x,y)可表示为:
这样得到的目标图像为二值化图像,元件为全白,背景为全黑,实现了元件的正确分割。
综上所述,改变分水岭算法的具体实现步骤如下:
(1)原始输入图像f(x,y)进行分水岭变换输出包含所有集水盆的灰度图像g(x,y);
(2)梯度图像f‘(x,y)进行分水岭变换输出包含所有集水盆的灰度图像g(x,y);
(3)针对g(x,y)中所有相邻的集水分别,在分割阈值T1下进行区域合并,输出灰度图像G(x,y)。其中T1取值为g(x,y)中特体与背景所处极大值点之间的最小灰度差,算法描述见式(5);
(4)G(x,y)在阈值T2下进行分割,算法描述见式(6),最终得到目标图像F(x,y)。
至此实现了物体与背景的分割。
4 试验结果及分析
将改进分水岭算法应用于贴片机视觉检测中的贴装元件图像分割。为了便于比较,本文也给出了采用传统阈值分割后的分割结果,如图3。
第一列为三种类型元件及其吸嘴的原始灰度图,分别为Chip、Sot和Soic。可见不同类型的元件,其图像灰度分布各不相同。
第二列为传统阈值分割后的二值化图,分割阈值分别为90、75和50。可见各类元件的分割阈值差别较大,不能统一。如果阈值太低,则吸嘴上部分较亮的区域也被分割出来;反之,则元件某些管脚的连接部分就不能合并到管脚中,导致这些管脚被分割成两部分。这些都不利于后续图像分析。
第三列为采用改进分水岭算法分割一的二值化图,分割阈值均为50。可见,吸嘴完全被分割到背景中,而元件所有管脚及其连接部分都合并到一个区域中,不存在过分割现象。而且由于该算法采用的阈值实际为一相对值(相邻极值点的灰度差),不同于传统阈值分割中阈值T1为一绝对值。试验证明,当T1在一个比较大的范围内变化时,均能实现元件的正确分割,该算法具有较好的稳定性。
图像的正确分割是进行图像分析的前景,本文提出的将分水岭变换与边缘检测、阈值分割相结合以及集水盆合并处理的改进算法,可以比较好地处理物体的分割和背景的抑制与消除问题。该算法在贴片机现场生产过程中的应用表明,其性能稳定可靠,实现了贴装元件图像的正确分割,满足了贴片机视觉检测的要求,为后续图像分析打下了良好的基础。 谢谢分享!:D
页:
[1]