PCB抄板的图像分割
算法理论
文献[1]中自适应阈值分割算法:
(1)将图像分成4个子图像;
(2)计算每个字图像的均值;
(3)根据均值设置阈值,阈值只应用在对应的子图像;
(4)根据阈值,对每个子块进行分割。
此算法中,将均值作为子块的阈值。
印刷电路板的灰度分布特征,如图1所示,其具有以下特征:
(1)具有明显的背景峰值和目标峰值;
(2)两个峰值距离较远,而且其间灰度值基本相等,没有明显的波谷;
(3)背景象素点和目标象素点的灰度变化具有连续性,目标边界的灰度是渐变的,不是突变的,如下图所示。
经实践证明,文献[1]中的算法不适合印刷电路板,分割的效果也不是很好,因为平均灰度不一定是直方图的波谷,而且在PCB的直方图中有很大一部分平坦的区域,甚至为0的灰度级,寻找极小值点比较困难,为了对PCB图像进行准确的分割,需要寻找另外一种有效的方法,注意到,平均灰度值点是在两个峰值之间(即,平均灰度值在背景灰度值和目标灰度值之间),而且靠近于波谷,所以考虑在其领域内寻找极小值点。 为了分割PCB的目标图像,可以先确定出直方图的目标峰,再确定极小值点,然后可以找出背景峰,将极小值点作为分割阈值,在目标峰和背景峰附近选择一个灰度值,分别作为开路、短路增强的阈值,在PCB图像中,但有时目标比较稀疏,但有时比较密集。寻找整个直方图的最大值点比较简单,但是如何确定这个峰值是背景峰还是目标峰,成为问题的关键。
对于一般的PCB图像,其目标(铜线)表现为高灰度,背景表现为低灰度,以下讨论一种可行的阈值搜索方法,如图2所示。
(1)找出最大的一个峰值所对应的灰度值。在全灰度区间[0,255]找出f(H)的最大值,其对应值即为H;
(2)计算图像的平均灰度:
(3)确定是背景峰还是目标峰:
如果H 如果H (4)选取极小值点,在平均值点的30邻域内,寻找极小值,其对应值即为Hmin。
注:邻域的大小可以根据实际情况自行选定。
(5)确定的第二个峰值点:
如果(3)中找到只是背景峰值Hb,那么在灰度区间[Hmin,255)找出f(H)的最小值,其对应值即为目标峰值点Hf;
如果(3)中找到的是目标峰值Hf,那么在灰度区间[0,Hmin]找出f(H)的最小值,其对应值即为背景峰值点Hb;
(6)以Hmin为阈值,进行图像分割;
在背景峰值Hb右侧附近找出一个灰度级(一般为Hb+10),进行短路增强;
在目标峰值Hf左侧附近找出一个灰度级(一般为Hf-10)进行开路增强。
注:本算法特别适用于直方图的连续的图像,对于不连续的直方图,可以先进行临近插值,将直方图转换成连续图形,即可采用上述方法来确定阈值。
实验结果
当图像存在噪声时,通常采取两种做法:
(1)先滤波再做二值化处理,这样原图像将丢失大量的边缘细节信息,使得统计结果不够准确;
(2)不处理,但这样又会使图像中存在许多细小的噪声,同样统计结果也不够准确。
为了保证统计结果的准确性,既不要由于滤波的影响,而使图像的某些边缘丢失,线宽减小,又不可将那些噪声点误当成线条而统计进来,可以采用先二值化再去除噪声的方法。