印刷电路板PCB(Printed Circuit Board)是电子零件彼此连接沟通的支撑物,其质量的好坏直接影响电子产品能否正常工作,所以PCB的检测是非常必要的。近年来,利用光学手段获取PCB表面图像,并通过图像处理的方法进行检验、分析和判断的光学检测PCB技术已成为研究的热点[1-4]。图像分割则是进行光学检测的首要步骤,其成功与否直接影响到后续的检测识别工作。目前见诸报道的PCB图像分割算法有: (1)将PCB图像分割转化为阈值最优问题,进而利用改进遗传算法求解图像最优问题的算法[5];参考文献[6]提出了基于改进分水岭的PCB图像分割算法;(2)参考文献[7] 对PCB图像利用模糊集和Otsu理论进行分割。上述算法虽能成功地对PCB图像进行分割,但都只针对灰度图像,丢失了原始图像的色彩信息,PCB彩色图像的分割算法却未见报道。鉴于此,本文提出一种结合K-均值聚类算法的分水岭算法,用于PCB彩色图像分割。
1 K-均值聚类算法
聚类是对数据空间中的数据对象进行分类。位于同一类中的数据对象之间的相似度较大,而位于不同类之间的数据对象差异度较大。聚类是一种无监督学习,能自动对数据集进行划分。常见的聚类算法有:K-means、DBSCAN及CURE等算法。K-means即K-均值聚类,该算法确定的K个划分到达平方误差最小,当聚类密集且类与类之间区别明显时,K-均值聚类效果较好。对于处理大数据集,该算法是相对可伸缩和高效的,计算的复杂度为O(NKt),其中N是数据对象的数目,t是迭代的次数,具体步骤为:
(1)选K个初始聚类中心,z1(1),z2(1),…,zK(1),其中括号内的序号为寻找聚类中心的迭代运算的次序号。聚类中心的向量值可任意设定,例如可选开始的K个模式样本的向量值作为初始聚类中心。
(2)逐个将需分类的模式样本{x}按最小距离准则分配给K个聚类中心的某一个zj(1)。假设i=j时,则zi(k)=zj(k),其中k为迭代运算的次序号,第一次迭代k=1,sj表示第j个聚类,其聚类中心为zj。
2.2 结合K-均值聚类的分水岭算法
2.2.1 颜色空间选择
选择合适的颜色空间是成功进行彩色图像分割的首要环节,计算机处理分析系统接收到的PCB彩色图像是在RGB颜色空间中表示的。由于彩色显示器采用红、绿、蓝生成目标颜色,所以RGB颜色空间是计算机图形学最通常的选择,这样可以简化系统的构架与设计。RGB颜色空间用三维的笛卡尔坐标系统来表示,如图1所示,其中每个顶点的三色叠加值如表1所示。
可见RGB颜色空间的色彩比较丰富,同时也是显示器硬件系统的默认颜色空间,作图像处理时的速度比其他颜色空间快,所以本文选择RGB颜色空间。
2.2.2 图像分割算法
将PCB彩色图像在RGB颜色空间中分别提取R、G、B 3幅灰度图像。将每幅灰度图像的像素值考虑成一组二维数学矩阵,在其中随即选取2个像素值x(i,j)和y(i,j)作为初始聚类中心,根据下列公式对剩余的像素值进行聚类:
设置阈值T,并对T进行取值,满足式(4)则素味着完成3幅灰度图像的聚类。对每幅聚类后的灰度图像进行分水岭分割,即对已经聚类好的灰度图像利用式(1)寻找相同高度的像素值,对分水岭变换后的3幅灰度图像进行单通道图像整合,合成RGB空间的彩色图像,即完成PCB彩色图像的分割。算法流程如图2所示。
3 实验与分析
利用本文提出的算法,在Matlab7.1环境下,对用CCD摄像机获取的PCB彩色图像进行仿真,如图3所示。可以看到,本文提出的算法可以很好地分割PCB彩色图像,分割清晰,PCB的结构保持完整,同时由于所采取的方法均为无监督算法,所以整体程序所消耗的时间较短,仅为7.254 s,证明了本文算法的高效性。
本文成功地分割了PCB彩色图像,并提出了结合聚类算法的分水岭算法。通过实验仿真可以看到,所提出的算法可以清晰地分割PCB彩色图像,为今后的PCB检测工作奠定了基础。