对于一幅二值图像,假定白色为前景色,黑色为背景色,将前景色的像素的值转化为该点到达最近的背景点的距离,判断该距离是否存在异常,即可得到缺陷的相应位置。
由图9.15得到,求解距离值可以采用2种不同的算法,欧式距离和曼哈顿距离。蓝色、红色、绿色为曼哈顿距离,黄色是欧式距离。由A点到B点的距离用曼哈顿距离计算为12,欧式距离则取平方根,为8.48。本书采用的是欧式距离和8连通域搜寻结合,依次计算目标点到背景点8领域范围的距离值,并保存最小的一个,作为该点得的距离值。以此类推,可以将整幅图的距离值计算出来。
在骨架提取的过程中,已将骨架上的每点坐标值保存在数组中,通过对比骨架上的坐标和整幅图的坐标,即可得到骨架上每个像素点的距离值。为每幅图设定一个距离阈值,若检测到某点距离值发生异常或者突变,则将其记录,有可能为缺陷所在处。通过测试,缺陷找寻的准确性与阈值的设定有很大的关系,故本书将骨架阈值设定为每条线段距离值的平均值上下浮动8.13,测试效果较为理想。
图9.15 欧式距离
凸起和凹陷是PCB板的两种重大缺陷,共同特点缺陷处在距离值会发生突变,故采用该种算法进行识别和检测。(www.xing528.com)
由图9.16可知,红色代表凸起、绿色代表凹陷。提取骨架后,计算出每条骨架的平均距离值,再通过搜寻骨架上每个像素点的距离值是否与平均值存在异常,来判别缺陷所在位置,并进行分类。
通过搜寻距离异常值,可将板子的凸起和凹陷两种缺陷完全检测出,不会有漏检现象。不过还会有些许的误检,例如上图中骨架端点处。因为采用距离变换,在端点处距离值偏大,会被误判成缺陷。鉴于电路板的线路复杂,形状不一,没有唯一的算法可将漏检误检完全杜绝,但该现象并不会影响检测结果,只要保证不存在漏检即可。
通过提取骨架,搜寻骨架上每个像素点的距离值,找到异常即为缺陷所在,可以保证其精确性,但处理效率不是很理想,主要是由于此算法利用8连通区域遍历整幅图的距离值,会导致计算量加倍。故本书在后期改进了算法,只需搜寻每个连通区域的边缘像素坐标,依次计算骨架像素点到边缘坐标点的距离,同理,若出现异常值,则说明该点存在缺陷。改进算法的思想没变,都是基于提取骨架和搜寻距离值异常的思路,但在效率方面,大致提高了30倍左右。
图9.16 基于距离变换的缺陷检测
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。