图像预处理:
上面是图像处理的基本流程,分别为待检测的图片。
预处理步骤一:
首先做灰度处理:
然后做如果是清晰的照片,那么可以自动加入噪声进行检测系统的滤波效果,如果输入的照片本身是带噪声的,那么就不用再次加入噪声了。
对于滤波后的图像进行二值化处理,最后对二值化处理后的效果进行平滑处理。
预处理步骤二:
由于图片中的照片中存在白色的遮挡的区域,这个会对图片的处理造成错误识别,所以需要对其进行处理,
得到单纯为芯片管脚的图片。
缺陷检测:
首先需要对芯片的管脚进行定位:
上图中红色的部分为芯片的照片管脚的定位,右图为二值化图的管脚的定位。
缺陷检测,对每个定位点对应的白色区域进行识别,得到缺陷检测效果:
这个错误的就会显示错误的方框,这个芯片有两个错误,这里就会显示了。
系统会自动提示芯片的缺陷。
具体的缺陷方法为:
步骤一:这里是将芯片存在的较大的阴影区域消除,
=>
这样就会避免芯片检测的时候错误。
步骤二:将芯片的临近的区域合并,提供检测的精度
具体如下的效果:
变为:
这样可以提高临近区域。
步骤三:这里是将芯片存在的较小的区域消除,进一步提高检测效果
将视觉处理过程中,一些较小的区域去掉。
步骤四:从代码的146行到216行,就是将芯片的管脚进行定位。
基本思路如下:
通过求图片中的联通区域,得到参数L和n,其中n为联通区域的个数:
这个代码为定位点的确定。
步骤五:计算每个定位点下面的面积
这里是func_detect是面积检测函数,计算面积。
这个代码为判断是否为缺陷部分,
通过参数errors进行检测。参数errors需要不断的调整。
代码注意点:
·这个代码有如下几个参数:
这里对于不同的光线效果,得修改bw_para参数。
对于不同大小的图片,AERAMAX需要调整。
对于不同款式的图片,需要修改errors参数。
·为了提高识别的精度,最好是直接对芯片的附近的区域进行检测,不要整板的检测。
·系统只使用同一环境下的同一信号的芯片的流水线检测,改进芯片,需要重新设置参数。
·为了达到最好的效果,我们这里给出了几个测试样本对应的参数设置:
图片一,errors值为1500 . bw_para值为90
图片二,errors值为700 . bw_para值为90
图片三,errors值为500. bw_para值为120
图片四,errors值为500. bw_para值为120
图片五,errors值为500. bw_para值为120
图片六,errors值为1000.bw_para值为180
图片七,errors值为70.bw_para值为150(图片比较小,所以errors值小)
图片八,errors值为2500.bw_para值为170
图片九,errors值为2500.bw_para值为200
这里给你总结了九个图片,每个图片都是不同的大小和光效,你可以根据这里的参数变换,设置合适的参数。
在实际中,对于同一个生产线上,光照一般是固定的,检测的产品也一定是同一款芯片的产品的流水线检测,所以设置好一组参数及可。