目标:圆形物体缺陷检测,即判断是不是足够圆,见下图,其中右图相对左图明显缺了一块:
打光采用的白色背光(环光的效果也可以)。
开发环境:python3.4 + opencv3.3
最开始的思路是选用一张标准的二值化后的产品图片作为模板,之后对拍摄的每一张产品图片二值化后与标准模板进行减法操作,理想情况下,这样就可以提取出缺陷区域,再根据判定条件判断是否OK就行了。
但是写程序的时候发现产品本身精度就不是很高,因此放弃了这种做法。
第二种做法是采用坐标转换,由笛卡尔坐标系转为极坐标系,也就是我目前使用的方法。先上结果图:
第二列是提取的圆环图,第一列是圆环经过极坐标转换后的图像,可以在(1,1)中看到有很明显的缺陷,只需要把这块提取出来即可,因此对第一列图像进行均值滤波得到第四列图像然后再进行图像减法(见第三列图像)即可,剩下提轮廓、判断就完事了。