1 前沿
阈值分割是图像预处理中关键的步骤,实质是对每一个象素点确定一个阈值,根据阈值决定当前象素是前景还是背景点,目前,已有大量的阈值处理方法,比如全局阈值和局域阈值,是最简单的分割方法,而后者则是把整幅图分成许多子图像,每幅图像分别使用不同的阈值进行分割。
本文分析了文献[1]中的算法,并在此基础上提出了一种改进的自适应阈值选取方法,实践证明,这种方法简单、计算量小、速度快、统计准确,可以适时获取图像的阈值,pcb图像分割的效果非常好,图像分割以后,保证了目标图形的完好无损,图象增强之后,使的开路和短路更加清晰、突出,为以后的图像处理做好了充分的准备工作。
2 算法理论
文献[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<hawe,平均灰度在最大值点的右侧,表明h是背景峰值,记为hb;
如果h<hawe,平均灰度在最大值点的左侧,表明h是目标峰值,记为hf。
(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)进行开路增强。
注:本算法特别适用于直方图的连续的图像,对于不连续的直方图,可以先进行临近插值,将直方图转换成连续图形,即可采用上述方法来确定阈值。
3 实验结果
当图像存在噪声时,通常采取两种做法:
(1)先滤波再做二值化处理,这样原图像将丢失大量的边缘细节信息,使得统计结果不够准确;
(2)不处理,但这样又会使图像中存在许多细小的噪声,同样统计结果也不够准确。
为了保证统计结果的准确性,既不要由于滤波的影响,而使图像的某些边缘丢失,线宽减小,又不可将那些噪声点误当成线条而统计进来,可以采用先二值化再去除噪声的方法。
本实验中,从摄像机中得到的图像比较清晰,噪声很少,所以对其直接处理。
该实验比较了文献[1]中的算法,结果表明该方法是一张实用性较好的方法,而且快速、简单